• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **
3 ** Copyright 2008, The Android Open Source Project
4 ** Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
5 ** Not a Contribution. Apache license notifications and license are
6 ** retained for attribution purposes only.
7 **
8 ** Licensed under the Apache License, Version 2.0 (the "License");
9 ** you may not use this file except in compliance with the License.
10 ** You may obtain a copy of the License at
11 **
12 **     http://www.apache.org/licenses/LICENSE-2.0
13 **
14 ** Unless required by applicable law or agreed to in writing, software
15 ** distributed under the License is distributed on an "AS IS" BASIS,
16 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 ** See the License for the specific language governing permissions and
18 ** limitations under the License.
19 */
20 #ifndef ANDROID_HARDWARE_QCAMERA_PARAMETERS_H
21 #define ANDROID_HARDWARE_QCAMERA_PARAMETERS_H
22 
23 #include <camera/CameraParameters.h>
24 #include <cutils/properties.h>
25 #include <hardware/camera.h>
26 #include <stdlib.h>
27 #include <utils/Errors.h>
28 #include "cam_intf.h"
29 #include "QCameraMem.h"
30 #include "QCameraThermalAdapter.h"
31 
32 extern "C" {
33 #include <mm_jpeg_interface.h>
34 }
35 
36 using namespace android;
37 
38 namespace qcamera {
39 
40 //EXIF globals
41 static const char ExifAsciiPrefix[] = { 0x41, 0x53, 0x43, 0x49, 0x49, 0x0, 0x0, 0x0 };          // "ASCII\0\0\0"
42 static const char ExifUndefinedPrefix[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };   // "\0\0\0\0\0\0\0\0"
43 
44 #define EXIF_ASCII_PREFIX_SIZE           8   //(sizeof(ExifAsciiPrefix))
45 #define FOCAL_LENGTH_DECIMAL_PRECISION   100
46 
47 class QCameraParameters: public CameraParameters
48 {
49 public:
50     QCameraParameters();
51     QCameraParameters(const String8 &params);
52     ~QCameraParameters();
53 
54     // Supported PREVIEW/RECORDING SIZES IN HIGH FRAME RATE recording, sizes in pixels.
55     // Example value: "800x480,432x320". Read only.
56     static const char KEY_QC_SUPPORTED_HFR_SIZES[];
57     // The mode of preview frame rate.
58     // Example value: "frame-rate-auto, frame-rate-fixed".
59     static const char KEY_QC_PREVIEW_FRAME_RATE_MODE[];
60     static const char KEY_QC_SUPPORTED_PREVIEW_FRAME_RATE_MODES[];
61     static const char KEY_QC_PREVIEW_FRAME_RATE_AUTO_MODE[];
62     static const char KEY_QC_PREVIEW_FRAME_RATE_FIXED_MODE[];
63     static const char KEY_QC_SUPPORTED_SKIN_TONE_ENHANCEMENT_MODES[] ;
64 
65     // Supported live snapshot sizes
66     static const char KEY_QC_SUPPORTED_LIVESNAPSHOT_SIZES[];
67 
68     // Supported Raw formats
69     static const char KEY_QC_SUPPORTED_RAW_FORMATS[];
70     static const char KEY_QC_RAW_FORMAT[];
71 
72     //Touch Af/AEC settings.
73     static const char KEY_QC_TOUCH_AF_AEC[];
74     static const char KEY_QC_SUPPORTED_TOUCH_AF_AEC[];
75     //Touch Index for AEC.
76     static const char KEY_QC_TOUCH_INDEX_AEC[];
77     //Touch Index for AF.
78     static const char KEY_QC_TOUCH_INDEX_AF[];
79     // Current auto scene detection mode.
80     // Example value: "off" or "on" constants. Read/write.
81     static const char KEY_QC_SCENE_DETECT[];
82     // Supported auto scene detection settings.
83     // Example value: "off,on". Read only.
84     static const char KEY_QC_SUPPORTED_SCENE_DETECT[];
85     static const char KEY_QC_SELECTABLE_ZONE_AF[];
86 
87     static const char KEY_QC_ISO_MODE[];
88     static const char KEY_QC_SUPPORTED_ISO_MODES[];
89     static const char KEY_QC_LENSSHADE[] ;
90     static const char KEY_QC_SUPPORTED_LENSSHADE_MODES[] ;
91     static const char KEY_QC_AUTO_EXPOSURE[];
92     static const char KEY_QC_SUPPORTED_AUTO_EXPOSURE[];
93 
94     static const char KEY_QC_GPS_LATITUDE_REF[];
95     static const char KEY_QC_GPS_LONGITUDE_REF[];
96     static const char KEY_QC_GPS_ALTITUDE_REF[];
97     static const char KEY_QC_GPS_STATUS[];
98     static const char KEY_QC_MEMORY_COLOR_ENHANCEMENT[];
99     static const char KEY_QC_SUPPORTED_MEM_COLOR_ENHANCE_MODES[];
100     static const char KEY_QC_DIS[];
101     static const char KEY_QC_SUPPORTED_DIS_MODES[];
102 
103     static const char KEY_QC_ZSL[];
104     static const char KEY_QC_SUPPORTED_ZSL_MODES[];
105     static const char KEY_QC_ZSL_BURST_INTERVAL[];
106     static const char KEY_QC_ZSL_BURST_LOOKBACK[];
107     static const char KEY_QC_ZSL_QUEUE_DEPTH[];
108 
109     static const char KEY_QC_CAMERA_MODE[];
110     static const char KEY_QC_ORIENTATION[];
111 
112     static const char KEY_QC_VIDEO_HIGH_FRAME_RATE[];
113     static const char KEY_QC_SUPPORTED_VIDEO_HIGH_FRAME_RATE_MODES[];
114     static const char KEY_QC_HIGH_DYNAMIC_RANGE_IMAGING[];
115     static const char KEY_QC_SUPPORTED_HDR_IMAGING_MODES[];
116     static const char KEY_QC_AE_BRACKET_HDR[];
117     static const char KEY_QC_SUPPORTED_AE_BRACKET_MODES[];
118     static const char KEY_QC_CAPTURE_BURST_EXPOSURE[];
119     static const char KEY_QC_NUM_SNAPSHOT_PER_SHUTTER[];
120     static const char KEY_QC_NO_DISPLAY_MODE[];
121     static const char KEY_QC_RAW_PICUTRE_SIZE[];
122 
123     // DENOISE
124     static const char KEY_QC_DENOISE[];
125     static const char KEY_QC_SUPPORTED_DENOISE[];
126 
127     //Selectable zone AF.
128     static const char KEY_QC_FOCUS_ALGO[];
129     static const char KEY_QC_SUPPORTED_FOCUS_ALGOS[];
130 
131     //Face Detection
132     static const char KEY_QC_FACE_DETECTION[];
133     static const char KEY_QC_SUPPORTED_FACE_DETECTION[];
134 
135     //Face Recognition
136     static const char KEY_QC_FACE_RECOGNITION[];
137     static const char KEY_QC_SUPPORTED_FACE_RECOGNITION[];
138 
139     // supported camera features to be queried by Snapdragon SDK
140     //Read only
141     static const char KEY_QC_SUPPORTED_CAMERA_FEATURES[];
142 
143     //Indicates number of faces requested by the application.
144     //This value will be rejected if the requested faces
145     //greater than supported by hardware.
146     //Write only.
147     static const char KEY_QC_MAX_NUM_REQUESTED_FACES[];
148 
149     //preview flip
150     static const char KEY_QC_PREVIEW_FLIP[];
151     //video flip
152     static const char KEY_QC_VIDEO_FLIP[];
153     //snapshot picture flip
154     static const char KEY_QC_SNAPSHOT_PICTURE_FLIP[];
155 
156     static const char KEY_QC_SUPPORTED_FLIP_MODES[];
157 
158     //Redeye Reduction
159     static const char KEY_QC_REDEYE_REDUCTION[];
160     static const char KEY_QC_SUPPORTED_REDEYE_REDUCTION[];
161     static const char EFFECT_EMBOSS[];
162     static const char EFFECT_SKETCH[];
163     static const char EFFECT_NEON[];
164 
165     // Values for Touch AF/AEC
166     static const char TOUCH_AF_AEC_OFF[];
167     static const char TOUCH_AF_AEC_ON[];
168 
169     // Values for Scene mode
170     static const char SCENE_MODE_ASD[];
171     static const char SCENE_MODE_BACKLIGHT[];
172     static const char SCENE_MODE_FLOWERS[];
173     static const char SCENE_MODE_AR[];
174     static const char SCENE_MODE_HDR[];
175     static const char PIXEL_FORMAT_YUV420SP_ADRENO[]; // ADRENO
176     static const char PIXEL_FORMAT_YV12[]; // NV12
177     static const char PIXEL_FORMAT_NV12[]; //NV12
178 
179     // Values for raw picture format
180     static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_YUYV[];
181     static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_YVYU[];
182     static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_UYVY[];
183     static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_VYUY[];
184     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8GBRG[];
185     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8GRBG[];
186     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8RGGB[];
187     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8BGGR[];
188     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10GBRG[];
189     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10GRBG[];
190     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10RGGB[];
191     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10BGGR[];
192     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12GBRG[];
193     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12GRBG[];
194     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12RGGB[];
195     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12BGGR[];
196     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8GBRG[];
197     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8GRBG[];
198     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8RGGB[];
199     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8BGGR[];
200     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10GBRG[];
201     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10GRBG[];
202     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10RGGB[];
203     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10BGGR[];
204     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12GBRG[];
205     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12GRBG[];
206     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12RGGB[];
207     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12BGGR[];
208     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8GBRG[];
209     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8GRBG[];
210     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8RGGB[];
211     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8BGGR[];
212     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10GBRG[];
213     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10GRBG[];
214     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10RGGB[];
215     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10BGGR[];
216     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12GBRG[];
217     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12GRBG[];
218     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12RGGB[];
219     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12BGGR[];
220     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8GBRG[];
221     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8GRBG[];
222     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8RGGB[];
223     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8BGGR[];
224     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10GBRG[];
225     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10GRBG[];
226     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10RGGB[];
227     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10BGGR[];
228     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12GBRG[];
229     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12GRBG[];
230     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12RGGB[];
231     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12BGGR[];
232     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8GBRG[];
233     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8GRBG[];
234     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8RGGB[];
235     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8BGGR[];
236     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8GBRG[];
237     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8GRBG[];
238     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8RGGB[];
239     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8BGGR[];
240     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10GBRG[];
241     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10GRBG[];
242     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10RGGB[];
243     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10BGGR[];
244     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12GBRG[];
245     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12GRBG[];
246     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12RGGB[];
247     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12BGGR[];
248 
249     // ISO values
250     static const char ISO_AUTO[];
251     static const char ISO_HJR[];
252     static const char ISO_100[];
253     static const char ISO_200[];
254     static const char ISO_400[];
255     static const char ISO_800[];
256     static const char ISO_1600[];
257 
258     // Values for auto exposure settings.
259     static const char AUTO_EXPOSURE_FRAME_AVG[];
260     static const char AUTO_EXPOSURE_CENTER_WEIGHTED[];
261     static const char AUTO_EXPOSURE_SPOT_METERING[];
262     static const char AUTO_EXPOSURE_SMART_METERING[];
263     static const char AUTO_EXPOSURE_USER_METERING[];
264     static const char AUTO_EXPOSURE_SPOT_METERING_ADV[];
265     static const char AUTO_EXPOSURE_CENTER_WEIGHTED_ADV[];
266 
267     static const char KEY_QC_SHARPNESS[];
268     static const char KEY_QC_MIN_SHARPNESS[];
269     static const char KEY_QC_MAX_SHARPNESS[];
270     static const char KEY_QC_SHARPNESS_STEP[];
271     static const char KEY_QC_CONTRAST[];
272     static const char KEY_QC_MIN_CONTRAST[];
273     static const char KEY_QC_MAX_CONTRAST[];
274     static const char KEY_QC_CONTRAST_STEP[];
275     static const char KEY_QC_SATURATION[];
276     static const char KEY_QC_MIN_SATURATION[];
277     static const char KEY_QC_MAX_SATURATION[];
278     static const char KEY_QC_SATURATION_STEP[];
279     static const char KEY_QC_BRIGHTNESS[];
280     static const char KEY_QC_MIN_BRIGHTNESS[];
281     static const char KEY_QC_MAX_BRIGHTNESS[];
282     static const char KEY_QC_BRIGHTNESS_STEP[];
283     static const char KEY_QC_SCE_FACTOR[];
284     static const char KEY_QC_MIN_SCE_FACTOR[];
285     static const char KEY_QC_MAX_SCE_FACTOR[];
286     static const char KEY_QC_SCE_FACTOR_STEP[];
287 
288     static const char KEY_QC_HISTOGRAM[] ;
289     static const char KEY_QC_SUPPORTED_HISTOGRAM_MODES[] ;
290     static const char KEY_QC_HDR_NEED_1X[];
291     static const char KEY_QC_VIDEO_HDR[];
292     static const char KEY_QC_SUPPORTED_VIDEO_HDR_MODES[];
293 
294     // Values for SKIN TONE ENHANCEMENT
295     static const char SKIN_TONE_ENHANCEMENT_ENABLE[] ;
296     static const char SKIN_TONE_ENHANCEMENT_DISABLE[] ;
297 
298     // Values for Denoise
299     static const char DENOISE_OFF[] ;
300     static const char DENOISE_ON[] ;
301 
302     // Values for auto exposure settings.
303     static const char FOCUS_ALGO_AUTO[];
304     static const char FOCUS_ALGO_SPOT_METERING[];
305     static const char FOCUS_ALGO_CENTER_WEIGHTED[];
306     static const char FOCUS_ALGO_FRAME_AVERAGE[];
307 
308     // Values for AE Bracketing settings.
309     static const char AE_BRACKET_OFF[];
310     static const char AE_BRACKET[];
311 
312     // Values for HFR settings.
313     static const char VIDEO_HFR_OFF[];
314     static const char VIDEO_HFR_2X[];
315     static const char VIDEO_HFR_3X[];
316     static const char VIDEO_HFR_4X[];
317     static const char VIDEO_HFR_5X[];
318 
319     // Values for feature on/off settings.
320     static const char VALUE_OFF[];
321     static const char VALUE_ON[];
322 
323     // Values for feature enable/disable settings.
324     static const char VALUE_ENABLE[];
325     static const char VALUE_DISABLE[];
326 
327     // Values for feature true/false settings.
328     static const char VALUE_FALSE[];
329     static const char VALUE_TRUE[];
330 
331     //Values for flip settings
332     static const char FLIP_MODE_OFF[];
333     static const char FLIP_MODE_V[];
334     static const char FLIP_MODE_H[];
335     static const char FLIP_MODE_VH[];
336 
337     enum {
338         CAMERA_ORIENTATION_UNKNOWN = 0,
339         CAMERA_ORIENTATION_PORTRAIT = 1,
340         CAMERA_ORIENTATION_LANDSCAPE = 2,
341     };
342     typedef struct {
343         const char *const desc;
344         int val;
345     } QCameraMap;
346 
347     void getSupportedHfrSizes(Vector<Size> &sizes);
348     void setPreviewFrameRateMode(const char *mode);
349     const char *getPreviewFrameRateMode() const;
350     void setTouchIndexAec(int x, int y);
351     void getTouchIndexAec(int *x, int *y);
352     void setTouchIndexAf(int x, int y);
353     void getTouchIndexAf(int *x, int *y);
354 
355     int32_t init(cam_capability_t *, mm_camera_vtbl_t *);
356     void deinit();
357     int32_t assign(QCameraParameters& params);
358     int32_t initDefaultParameters();
359     int32_t updateParameters(QCameraParameters&, bool &needRestart);
360     int32_t commitParameters();
361     int getPreviewHalPixelFormat() const;
362     int32_t getStreamFormat(cam_stream_type_t streamType,
363                              cam_format_t &format);
364     int32_t getStreamDimension(cam_stream_type_t streamType,
365                                 cam_dimension_t &dim);
366     void getThumbnailSize(int *width, int *height) const;
367 
368     int getZSLBurstInterval();
369     int getZSLQueueDepth();
370     int getZSLBackLookCount();
371     int getMaxUnmatchedFramesInQueue();
isZSLMode()372     bool isZSLMode() {return m_bZslMode;};
isNoDisplayMode()373     bool isNoDisplayMode() {return m_bNoDisplayMode;};
isWNREnabled()374     bool isWNREnabled() {return m_bWNROn;};
375     uint8_t getNumOfSnapshots();
376     uint8_t getNumOfExtraHDRBufsIfNeeded();
377     uint8_t getNumOfHDRBufsIfNeeded();
378     int getBurstNum();
getRecordingHintValue()379     bool getRecordingHintValue() {return m_bRecordingHint;}; // return local copy of video hint
380     int setRecordingHintValue(int32_t value); // set local copy of video hint and send to server
381                                               // no change in parameters value
382     int getJpegQuality();
383     int getJpegRotation();
384 
385     int32_t getExifDateTime(char *dateTime, uint32_t &count);
386     int32_t getExifFocalLength(rat_t *focalLenght);
387     uint16_t getExifIsoSpeed();
388     int32_t getExifGpsProcessingMethod(char *gpsProcessingMethod, uint32_t &count);
389     int32_t getExifLatitude(rat_t *latitude, char *latRef);
390     int32_t getExifLongitude(rat_t *longitude, char *lonRef);
391     int32_t getExifAltitude(rat_t *altitude, char *altRef);
392     int32_t getExifGpsDateTimeStamp(char *gpsDateStamp, uint32_t bufLen, rat_t *gpsTimeStamp);
393     int32_t updateFocusDistances(cam_focus_distances_info_t *focusDistances);
394 
isFpsDebugEnabled()395     bool isFpsDebugEnabled() {return m_bDebugFps;};
isHistogramEnabled()396     bool isHistogramEnabled() {return m_bHistogramEnabled;};
isFaceDetectionEnabled()397     bool isFaceDetectionEnabled() {return ((m_nFaceProcMask & CAM_FACE_PROCESS_MASK_DETECTION) != 0);};
398     int32_t setHistogram(bool enabled);
399     int32_t setFaceDetection(bool enabled);
400     int32_t setLockCAF(bool bLock);
401     int32_t setFrameSkip(enum msm_vfe_frame_skip_pattern pattern);
getThermalMode()402     qcamera_thermal_mode getThermalMode() {return m_ThermalMode;};
403     int32_t updateRecordingHintValue(int32_t value);
404 
getFocusMode()405     cam_focus_mode_type getFocusMode() const {return mFocusMode;};
406     int32_t setNumOfSnapshot();
407     int32_t adjustPreviewFpsRange(cam_fps_range_t *fpsRange);
isJpegPictureFormat()408     bool isJpegPictureFormat() {return (mPictureFormat == CAM_FORMAT_JPEG);};
isNV16PictureFormat()409     bool isNV16PictureFormat() {return (mPictureFormat == CAM_FORMAT_YUV_422_NV16);};
410     cam_denoise_process_type_t getWaveletDenoiseProcessPlate();
getLiveSnapshotSize(cam_dimension_t & dim)411     int32_t getLiveSnapshotSize(cam_dimension_t &dim) {dim = m_LiveSnapshotSize; return NO_ERROR;};
412     int getFlipMode(cam_stream_type_t streamType);
413 
setLockCAFNeeded(bool bNeedflag)414     void setLockCAFNeeded(bool bNeedflag) {m_bNeedLockCAF = bNeedflag;};
isLockCAFNeeded()415     bool isLockCAFNeeded() {return m_bNeedLockCAF;};
isCAFLocked()416     bool isCAFLocked() {return m_bCAFLocked;};
setAFRunning(bool bflag)417     void setAFRunning(bool bflag) {m_bAFRunning = bflag;};
isAFRunning()418     bool isAFRunning() {return m_bAFRunning;};
419 
420 private:
421     int32_t setPreviewSize(const QCameraParameters& );
422     int32_t setVideoSize(const QCameraParameters& );
423     int32_t setPictureSize(const QCameraParameters& );
424     int32_t setLiveSnapshotSize(const QCameraParameters& );
425     int32_t setPreviewFormat(const QCameraParameters& );
426     int32_t setPictureFormat(const QCameraParameters& );
427     int32_t setOrientation(const QCameraParameters& );
428     int32_t setJpegThumbnailSize(const QCameraParameters& );
429     int32_t setJpegQuality(const QCameraParameters& );
430     int32_t setPreviewFpsRange(const QCameraParameters& );
431     int32_t setPreviewFrameRate(const QCameraParameters& );
432     int32_t setAutoExposure(const QCameraParameters& );
433     int32_t setEffect(const QCameraParameters& );
434     int32_t setBrightness(const QCameraParameters& );
435     int32_t setFocusMode(const QCameraParameters& );
436     int32_t setSharpness(const QCameraParameters& );
437     int32_t setSaturation(const QCameraParameters& );
438     int32_t setContrast(const QCameraParameters& );
439     int32_t setSkinToneEnhancement(const QCameraParameters& );
440     int32_t setSceneDetect(const QCameraParameters& );
441     int32_t setVideoHDR(const QCameraParameters& );
442     int32_t setZoom(const QCameraParameters& );
443     int32_t setISOValue(const QCameraParameters& );
444     int32_t setRotation(const QCameraParameters& );
445     int32_t setFlash(const QCameraParameters& );
446     int32_t setAecLock(const QCameraParameters& );
447     int32_t setAwbLock(const QCameraParameters& );
448     int32_t setMCEValue(const QCameraParameters& );
449     int32_t setDISValue(const QCameraParameters& params);
450     int32_t setHighFrameRate(const QCameraParameters& );
451     int32_t setLensShadeValue(const QCameraParameters& );
452     int32_t setExposureCompensation(const QCameraParameters& );
453     int32_t setWhiteBalance(const QCameraParameters& );
454     int32_t setAntibanding(const QCameraParameters& );
455     int32_t setFocusAreas(const QCameraParameters& );
456     int32_t setMeteringAreas(const QCameraParameters& );
457     int32_t setSceneMode(const QCameraParameters& );
458     int32_t setSelectableZoneAf(const QCameraParameters& );
459     int32_t setAEBracket(const QCameraParameters& );
460     int32_t setRedeyeReduction(const QCameraParameters& );
461     int32_t setGpsLocation(const QCameraParameters& );
462     int32_t setRecordingHint(const QCameraParameters& );
463     int32_t setNoDisplayMode(const QCameraParameters& );
464     int32_t setWaveletDenoise(const QCameraParameters& );
465     int32_t setZslMode(const QCameraParameters& );
466     int32_t setZslAttributes(const QCameraParameters& );
467     int32_t setCameraMode(const QCameraParameters& );
468     int32_t setFaceRecognition(const QCameraParameters& );
469     int32_t setFlip(const QCameraParameters& );
470 
471     int32_t setAutoExposure(const char *autoExp);
472     int32_t setPreviewFpsRange(int minFPS,int maxFPS);
473     int32_t setEffect(const char *effect);
474     int32_t setBrightness(int brightness);
475     int32_t setFocusMode(const char *focusMode);
476     int32_t setSharpness(int sharpness);
477     int32_t setSaturation(int saturation);
478     int32_t setContrast(int contrast);
479     int32_t setSkinToneEnhancement(int sceFactor);
480     int32_t setSceneDetect(const char *scendDetect);
481     int32_t setVideoHDR(const char *videoHDR);
482     int32_t setZoom(int zoom_level);
483     int32_t setISOValue(const char *isoValue);
484     int32_t setFlash(const char *flashStr);
485     int32_t setAecLock(const char *aecStr);
486     int32_t setAwbLock(const char *awbStr);
487     int32_t setMCEValue(const char *mceStr);
488     int32_t setDISValue(const char *disStr);
489     int32_t setHighFrameRate(const char *hfrStr);
490     int32_t setLensShadeValue(const char *lensShadeStr);
491     int32_t setExposureCompensation(int expComp);
492     int32_t setWhiteBalance(const char *wbStr);
493     int32_t setAntibanding(const char *antiBandingStr);
494     int32_t setFocusAreas(const char *focusAreasStr);
495     int32_t setMeteringAreas(const char *meteringAreasStr);
496     int32_t setSceneMode(const char *sceneModeStr);
497     int32_t setSelectableZoneAf(const char *selZoneAFStr);
498     int32_t setAEBracket(const char *aecBracketStr);
499     int32_t setRedeyeReduction(const char *redeyeStr);
500     int32_t setWaveletDenoise(const char *wnrStr);
501     int32_t setFaceRecognition(const char *faceRecog, int maxFaces);
502 
503     int32_t parse_pair(const char *str, int *first, int *second,
504                        char delim, char **endptr);
505     void parseSizesList(const char *sizesStr, Vector<Size> &sizes);
506     int32_t parseNDimVector(const char *str, int *num, int N, char delim);
507     int32_t parseCameraAreaString(const char *str, int max_num_areas,
508                                   cam_area_t *pAreas, int& num_areas_found);
509     bool validateCameraAreas(cam_area_t *areas, int num_areas);
510     int parseGPSCoordinate(const char *coord_str, rat_t *coord);
511     int32_t getRational(rat_t *rat, int num, int denom);
512     String8 createSizesString(const cam_dimension_t *sizes, int len);
513     String8 createValuesString(const int *values, int len,
514                                const QCameraMap *map, int map_len);
515     String8 createValuesStringFromMap(const QCameraMap *map,
516                                       int map_len);
517     String8 createHfrValuesString(const cam_hfr_info_t *values, int len,
518                                   const QCameraMap *map, int map_len);
519     String8 createHfrSizesString(const cam_hfr_info_t *values, int len);
520     String8 createFpsRangeString(const cam_fps_range_t *fps,
521                                  int len,
522                                  int &default_fps_index);
523     static int compareFPSValues(const void *p1, const void *p2);
524     String8 createFpsString(const cam_fps_range_t *fps, int len);
525     String8 createZoomRatioValuesString(int *zoomRatios, int length);
526     int lookupAttr(const QCameraMap arr[], int len, const char *name);
527     const char *lookupNameByValue(const QCameraMap arr[], int len, int value);
528 
529     // ops for batch set/get params with server
530     int32_t initBatchUpdate(parm_buffer_t *p_table);
531     int32_t AddSetParmEntryToBatch(parm_buffer_t *p_table,
532                                    cam_intf_parm_type_t paramType,
533                                    uint32_t paramLength,
534                                    void *paramValue);
535     int32_t commitSetBatch();
536     int32_t AddGetParmEntryToBatch(parm_buffer_t *p_table,
537                                    cam_intf_parm_type_t paramType);
538     int32_t commitGetBatch();
539 
540     // ops to tempororily update parameter entries and commit
541     int32_t updateParamEntry(const char *key, const char *value);
542     int32_t commitParamChanges();
543 
544     // Map from strings to values
545     static const cam_dimension_t THUMBNAIL_SIZES_MAP[];
546     static const QCameraMap AUTO_EXPOSURE_MAP[];
547     static const QCameraMap PREVIEW_FORMATS_MAP[];
548     static const QCameraMap PICTURE_TYPES_MAP[];
549     static const QCameraMap RAW_FORMATS_MAP[];
550     static const QCameraMap FOCUS_MODES_MAP[];
551     static const QCameraMap EFFECT_MODES_MAP[];
552     static const QCameraMap SCENE_MODES_MAP[];
553     static const QCameraMap FLASH_MODES_MAP[];
554     static const QCameraMap FOCUS_ALGO_MAP[];
555     static const QCameraMap WHITE_BALANCE_MODES_MAP[];
556     static const QCameraMap ANTIBANDING_MODES_MAP[];
557     static const QCameraMap ISO_MODES_MAP[];
558     static const QCameraMap HFR_MODES_MAP[];
559     static const QCameraMap BRACKETING_MODES_MAP[];
560     static const QCameraMap ON_OFF_MODES_MAP[];
561     static const QCameraMap ENABLE_DISABLE_MODES_MAP[];
562     static const QCameraMap DENOISE_ON_OFF_MODES_MAP[];
563     static const QCameraMap TRUE_FALSE_MODES_MAP[];
564     static const QCameraMap TOUCH_AF_AEC_MODES_MAP[];
565     static const QCameraMap FLIP_MODES_MAP[];
566 
567     cam_capability_t *m_pCapability;
568     mm_camera_vtbl_t *m_pCamOpsTbl;
569     QCameraHeapMemory *m_pParamHeap;
570     parm_buffer_t     *m_pParamBuf;  // ptr to param buf in m_pParamHeap
571 
572     bool m_bZslMode;                // if ZSL is enabled
573     bool m_bZslMode_new;
574     bool m_bRecordingHint;          // local copy of recording hint
575     bool m_bRecordingHint_new;
576     bool m_bHistogramEnabled;       // if histogram is enabled
577     int  m_nFaceProcMask;           // face process mask
578     bool m_bDebugFps;               // if FPS need to be logged
579     cam_focus_mode_type mFocusMode;
580     cam_format_t mPreviewFormat;
581     int32_t mPictureFormat;         // could be CAMERA_PICTURE_TYPE_JPEG or cam_format_t
582     bool m_bNeedRestart;            // if preview needs restart after parameters updated
583     bool m_bNoDisplayMode;
584     bool m_bWNROn;
585     bool m_bNeedLockCAF;
586     bool m_bCAFLocked;
587     bool m_bAFRunning;
588     qcamera_thermal_mode m_ThermalMode; // adjust fps vs adjust frameskip
589     cam_dimension_t m_LiveSnapshotSize; // live snapshot size
590 
591     DefaultKeyedVector<String8,String8> m_tempMap; // map for temororily store parameters to be set
592 };
593 
594 }; // namespace qcamera
595 
596 #endif
597