1 /*
2 ** Copyright 2008, The Android Open Source Project
3 ** Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
4 ** Not a Contribution. Apache license notifications and license are
5 ** retained for attribution purposes only.
6 **
7 ** Licensed under the Apache License, Version 2.0 (the "License");
8 ** you may not use this file except in compliance with the License.
9 ** You may obtain a copy of the License at
10 **
11 **     http://www.apache.org/licenses/LICENSE-2.0
12 **
13 ** Unless required by applicable law or agreed to in writing, software
14 ** distributed under the License is distributed on an "AS IS" BASIS,
15 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 ** See the License for the specific language governing permissions and
17 ** limitations under the License.
18 */
19 #ifndef ANDROID_HARDWARE_QCAMERA_PARAMETERS_H
20 #define ANDROID_HARDWARE_QCAMERA_PARAMETERS_H
21 
22 #include <camera/CameraParameters.h>
23 #include <cutils/properties.h>
24 #include <hardware/camera.h>
25 #include <stdlib.h>
26 #include <utils/Errors.h>
27 #include "cam_intf.h"
28 #include "QCameraMem.h"
29 #include "QCameraThermalAdapter.h"
30 
31 extern "C" {
32 #include <mm_jpeg_interface.h>
33 }
34 
35 using namespace android;
36 
37 namespace qcamera {
38 
39 //EXIF globals
40 static const char ExifAsciiPrefix[] = { 0x41, 0x53, 0x43, 0x49, 0x49, 0x0, 0x0, 0x0 };          // "ASCII\0\0\0"
41 static const char ExifUndefinedPrefix[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };   // "\0\0\0\0\0\0\0\0"
42 
43 #define EXIF_ASCII_PREFIX_SIZE           8   //(sizeof(ExifAsciiPrefix))
44 #define FOCAL_LENGTH_DECIMAL_PRECISION   100
45 
46 class QCameraTorchInterface
47 {
48 public:
49     virtual int prepareTorchCamera() = 0;
50     virtual int releaseTorchCamera() = 0;
~QCameraTorchInterface()51     virtual ~QCameraTorchInterface() {}
52 };
53 
54 class QCameraAdjustFPS
55 {
56 public:
57     virtual int recalcFPSRange(int &minFPS, int &maxFPS,
58             int &vidMinFps, int &vidMaxFps) = 0;
~QCameraAdjustFPS()59     virtual ~QCameraAdjustFPS() {}
60 };
61 
62 class QCameraParameters;
63 class QCameraReprocScaleParam{
64 public:
65     QCameraReprocScaleParam(QCameraParameters *parent);
66     virtual ~QCameraReprocScaleParam();
67 
68     virtual void setScaleEnable(bool enabled);
69     virtual int32_t setScaleSizeTbl(uint8_t scale_cnt, cam_dimension_t *scale_tbl, uint8_t org_cnt, cam_dimension_t *org_tbl);
70     virtual int32_t setValidatePicSize(int &width, int &height);
71 
72     virtual bool isScaleEnabled();
73     virtual bool isUnderScaling();
74 
75 
76     virtual uint8_t getScaleSizeTblCnt();
77     virtual cam_dimension_t *getScaledSizeTbl();
78     virtual uint8_t getTotalSizeTblCnt();
79     virtual cam_dimension_t *getTotalSizeTbl();
80     virtual int32_t getPicSizeFromAPK(int &width, int &height);
81     virtual int32_t getPicSizeSetted(int &width, int &height);
82 
83 private:
84     bool isScalePicSize(int width, int height);
85     bool isValidatePicSize(int width, int height);
86     int32_t setSensorSupportedPicSize();
87     uint8_t checkScaleSizeTable(uint8_t scale_cnt, cam_dimension_t *scale_tbl, uint8_t org_cnt, cam_dimension_t *org_tbl);
88 
89     QCameraParameters *mParent;
90     bool mScaleEnabled;
91     bool mIsUnderScaling;   //if in scale status
92     bool mScaleDirection;   // 0: Upscaling; 1: Downscaling
93 
94     // picture size cnt that need scale operation
95     uint8_t mNeedScaleCnt;
96     cam_dimension_t mNeedScaledSizeTbl[MAX_SCALE_SIZES_CNT];
97 
98     // sensor supported size cnt and table
99     uint8_t mSensorSizeTblCnt;
100     cam_dimension_t *mSensorSizeTbl;
101 
102     // Total size cnt (sensor supported + need scale cnt)
103     uint8_t mTotalSizeTblCnt;
104     cam_dimension_t mTotalSizeTbl[MAX_SIZES_CNT];
105 
106     cam_dimension_t mPicSizeFromAPK;   // dimension that APK is expected
107     cam_dimension_t mPicSizeSetted;    // dimension that config vfe
108 };
109 
110 class QCameraParameters: public CameraParameters
111 {
112 public:
113     QCameraParameters();
114     QCameraParameters(const String8 &params);
115     ~QCameraParameters();
116 
117     // Supported PREVIEW/RECORDING SIZES IN HIGH FRAME RATE recording, sizes in pixels.
118     // Example value: "800x480,432x320". Read only.
119     static const char KEY_QC_SUPPORTED_HFR_SIZES[];
120     // The mode of preview frame rate.
121     // Example value: "frame-rate-auto, frame-rate-fixed".
122     static const char KEY_QC_PREVIEW_FRAME_RATE_MODE[];
123     static const char KEY_QC_SUPPORTED_PREVIEW_FRAME_RATE_MODES[];
124     static const char KEY_QC_PREVIEW_FRAME_RATE_AUTO_MODE[];
125     static const char KEY_QC_PREVIEW_FRAME_RATE_FIXED_MODE[];
126     static const char KEY_QC_SUPPORTED_SKIN_TONE_ENHANCEMENT_MODES[] ;
127 
128     // Supported live snapshot sizes
129     static const char KEY_QC_SUPPORTED_LIVESNAPSHOT_SIZES[];
130 
131     // Supported Raw formats
132     static const char KEY_QC_SUPPORTED_RAW_FORMATS[];
133     static const char KEY_QC_RAW_FORMAT[];
134 
135     //Touch Af/AEC settings.
136     static const char KEY_QC_TOUCH_AF_AEC[];
137     static const char KEY_QC_SUPPORTED_TOUCH_AF_AEC[];
138     //Touch Index for AEC.
139     static const char KEY_QC_TOUCH_INDEX_AEC[];
140     //Touch Index for AF.
141     static const char KEY_QC_TOUCH_INDEX_AF[];
142     // Current auto scene detection mode.
143     // Example value: "off" or "on" constants. Read/write.
144     static const char KEY_QC_SCENE_DETECT[];
145     // Supported auto scene detection settings.
146     // Example value: "off,on". Read only.
147     static const char KEY_QC_SUPPORTED_SCENE_DETECT[];
148     static const char KEY_QC_SELECTABLE_ZONE_AF[];
149 
150     static const char KEY_QC_ISO_MODE[];
151     static const char KEY_QC_SUPPORTED_ISO_MODES[];
152     static const char KEY_QC_LENSSHADE[] ;
153     static const char KEY_QC_SUPPORTED_LENSSHADE_MODES[] ;
154     static const char KEY_QC_AUTO_EXPOSURE[];
155     static const char KEY_QC_SUPPORTED_AUTO_EXPOSURE[];
156 
157     static const char KEY_QC_GPS_LATITUDE_REF[];
158     static const char KEY_QC_GPS_LONGITUDE_REF[];
159     static const char KEY_QC_GPS_ALTITUDE_REF[];
160     static const char KEY_QC_GPS_STATUS[];
161     static const char KEY_QC_MEMORY_COLOR_ENHANCEMENT[];
162     static const char KEY_QC_SUPPORTED_MEM_COLOR_ENHANCE_MODES[];
163     static const char KEY_QC_DIS[];
164     static const char KEY_QC_SUPPORTED_DIS_MODES[];
165 
166     static const char KEY_QC_ZSL[];
167     static const char KEY_QC_SUPPORTED_ZSL_MODES[];
168     static const char KEY_QC_ZSL_BURST_INTERVAL[];
169     static const char KEY_QC_ZSL_BURST_LOOKBACK[];
170     static const char KEY_QC_ZSL_QUEUE_DEPTH[];
171 
172     static const char KEY_QC_CAMERA_MODE[];
173     static const char KEY_QC_ORIENTATION[];
174 
175     static const char KEY_QC_VIDEO_HIGH_FRAME_RATE[];
176     static const char KEY_QC_VIDEO_HIGH_SPEED_RECORDING[];
177     static const char KEY_QC_SUPPORTED_VIDEO_HIGH_FRAME_RATE_MODES[];
178     static const char KEY_QC_HIGH_DYNAMIC_RANGE_IMAGING[];
179     static const char KEY_QC_SUPPORTED_HDR_IMAGING_MODES[];
180     static const char KEY_QC_AE_BRACKET_HDR[];
181     static const char KEY_QC_SUPPORTED_AE_BRACKET_MODES[];
182     static const char KEY_QC_CAPTURE_BURST_EXPOSURE[];
183     static const char KEY_QC_NUM_SNAPSHOT_PER_SHUTTER[];
184     static const char KEY_QC_NUM_RETRO_BURST_PER_SHUTTER[];
185     static const char KEY_QC_SNAPSHOT_BURST_LED_ON_PERIOD[];
186     static const char KEY_QC_SNAPSHOT_BURST_NUM[];
187     static const char KEY_QC_NO_DISPLAY_MODE[];
188     static const char KEY_QC_RAW_PICUTRE_SIZE[];
189     static const char KEY_QC_TINTLESS_ENABLE[];
190     static const char KEY_QC_SCENE_SELECTION[];
191     static const char KEY_QC_CDS_MODE[];
192 
193     static const char KEY_INTERNAL_PERVIEW_RESTART[];
194 
195     // DENOISE
196     static const char KEY_QC_DENOISE[];
197     static const char KEY_QC_SUPPORTED_DENOISE[];
198 
199     //Selectable zone AF.
200     static const char KEY_QC_FOCUS_ALGO[];
201     static const char KEY_QC_SUPPORTED_FOCUS_ALGOS[];
202 
203     //Face Detection
204     static const char KEY_QC_FACE_DETECTION[];
205     static const char KEY_QC_SUPPORTED_FACE_DETECTION[];
206 
207     //Face Recognition
208     static const char KEY_QC_FACE_RECOGNITION[];
209     static const char KEY_QC_SUPPORTED_FACE_RECOGNITION[];
210 
211     // supported camera features to be queried by Snapdragon SDK
212     //Read only
213     static const char KEY_QC_SUPPORTED_CAMERA_FEATURES[];
214 
215     //Indicates number of faces requested by the application.
216     //This value will be rejected if the requested faces
217     //greater than supported by hardware.
218     //Write only.
219     static const char KEY_QC_MAX_NUM_REQUESTED_FACES[];
220 
221     //preview flip
222     static const char KEY_QC_PREVIEW_FLIP[];
223     //video flip
224     static const char KEY_QC_VIDEO_FLIP[];
225     //snapshot picture flip
226     static const char KEY_QC_SNAPSHOT_PICTURE_FLIP[];
227 
228     static const char KEY_QC_SUPPORTED_FLIP_MODES[];
229 
230     //Face Detection, Facial processing requirement
231     static const char KEY_QC_SNAPSHOT_FD_DATA[];
232 
233     //Auto HDR enable
234     static const char KEY_QC_AUTO_HDR_ENABLE[];
235     // video rotation
236     static const char KEY_QC_VIDEO_ROTATION[];
237 
238     //Redeye Reduction
239     static const char KEY_QC_REDEYE_REDUCTION[];
240     static const char KEY_QC_SUPPORTED_REDEYE_REDUCTION[];
241     static const char EFFECT_EMBOSS[];
242     static const char EFFECT_SKETCH[];
243     static const char EFFECT_NEON[];
244 
245     //AF Bracketing
246     static const char KEY_QC_AF_BRACKET[];
247     static const char KEY_QC_SUPPORTED_AF_BRACKET_MODES[];
248 
249     //Refocus
250     static const char KEY_QC_RE_FOCUS[];
251     static const char KEY_QC_SUPPORTED_RE_FOCUS_MODES[];
252 
253     //Chroma Flash
254     static const char KEY_QC_CHROMA_FLASH[];
255     static const char KEY_QC_SUPPORTED_CHROMA_FLASH_MODES[];
256 
257     //Opti Zoom
258     static const char KEY_QC_OPTI_ZOOM[];
259     static const char KEY_QC_SUPPORTED_OPTI_ZOOM_MODES[];
260 
261     // Auto HDR supported
262     static const char KEY_QC_AUTO_HDR_SUPPORTED[];
263 
264     // Values for Touch AF/AEC
265     static const char TOUCH_AF_AEC_OFF[];
266     static const char TOUCH_AF_AEC_ON[];
267 
268     // Values for Scene mode
269     static const char SCENE_MODE_ASD[];
270     static const char SCENE_MODE_BACKLIGHT[];
271     static const char SCENE_MODE_FLOWERS[];
272     static const char SCENE_MODE_AR[];
273     static const char SCENE_MODE_HDR[];
274     static const char PIXEL_FORMAT_YUV420SP_ADRENO[]; // ADRENO
275     static const char PIXEL_FORMAT_YV12[]; // NV12
276     static const char PIXEL_FORMAT_NV12[]; //NV12
277     static const char QC_PIXEL_FORMAT_NV12_VENUS[]; //NV12 VENUS
278 
279     // Values for raw picture format
280     static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_YUYV[];
281     static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_YVYU[];
282     static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_UYVY[];
283     static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_VYUY[];
284     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8GBRG[];
285     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8GRBG[];
286     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8RGGB[];
287     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8BGGR[];
288     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10GBRG[];
289     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10GRBG[];
290     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10RGGB[];
291     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10BGGR[];
292     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12GBRG[];
293     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12GRBG[];
294     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12RGGB[];
295     static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12BGGR[];
296     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8GBRG[];
297     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8GRBG[];
298     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8RGGB[];
299     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8BGGR[];
300     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10GBRG[];
301     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10GRBG[];
302     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10RGGB[];
303     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10BGGR[];
304     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12GBRG[];
305     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12GRBG[];
306     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12RGGB[];
307     static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12BGGR[];
308     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8GBRG[];
309     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8GRBG[];
310     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8RGGB[];
311     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8BGGR[];
312     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10GBRG[];
313     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10GRBG[];
314     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10RGGB[];
315     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10BGGR[];
316     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12GBRG[];
317     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12GRBG[];
318     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12RGGB[];
319     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12BGGR[];
320     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8GBRG[];
321     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8GRBG[];
322     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8RGGB[];
323     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8BGGR[];
324     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10GBRG[];
325     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10GRBG[];
326     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10RGGB[];
327     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10BGGR[];
328     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12GBRG[];
329     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12GRBG[];
330     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12RGGB[];
331     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12BGGR[];
332     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8GBRG[];
333     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8GRBG[];
334     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8RGGB[];
335     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8BGGR[];
336     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8GBRG[];
337     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8GRBG[];
338     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8RGGB[];
339     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8BGGR[];
340     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10GBRG[];
341     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10GRBG[];
342     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10RGGB[];
343     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10BGGR[];
344     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12GBRG[];
345     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12GRBG[];
346     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12RGGB[];
347     static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12BGGR[];
348 
349     // ISO values
350     static const char ISO_AUTO[];
351     static const char ISO_HJR[];
352     static const char ISO_100[];
353     static const char ISO_200[];
354     static const char ISO_400[];
355     static const char ISO_800[];
356     static const char ISO_1600[];
357 
358     // Values for auto exposure settings.
359     static const char AUTO_EXPOSURE_FRAME_AVG[];
360     static const char AUTO_EXPOSURE_CENTER_WEIGHTED[];
361     static const char AUTO_EXPOSURE_SPOT_METERING[];
362     static const char AUTO_EXPOSURE_SMART_METERING[];
363     static const char AUTO_EXPOSURE_USER_METERING[];
364     static const char AUTO_EXPOSURE_SPOT_METERING_ADV[];
365     static const char AUTO_EXPOSURE_CENTER_WEIGHTED_ADV[];
366 
367     static const char KEY_QC_SHARPNESS[];
368     static const char KEY_QC_MIN_SHARPNESS[];
369     static const char KEY_QC_MAX_SHARPNESS[];
370     static const char KEY_QC_SHARPNESS_STEP[];
371     static const char KEY_QC_CONTRAST[];
372     static const char KEY_QC_MIN_CONTRAST[];
373     static const char KEY_QC_MAX_CONTRAST[];
374     static const char KEY_QC_CONTRAST_STEP[];
375     static const char KEY_QC_SATURATION[];
376     static const char KEY_QC_MIN_SATURATION[];
377     static const char KEY_QC_MAX_SATURATION[];
378     static const char KEY_QC_SATURATION_STEP[];
379     static const char KEY_QC_BRIGHTNESS[];
380     static const char KEY_QC_MIN_BRIGHTNESS[];
381     static const char KEY_QC_MAX_BRIGHTNESS[];
382     static const char KEY_QC_BRIGHTNESS_STEP[];
383     static const char KEY_QC_SCE_FACTOR[];
384     static const char KEY_QC_MIN_SCE_FACTOR[];
385     static const char KEY_QC_MAX_SCE_FACTOR[];
386     static const char KEY_QC_SCE_FACTOR_STEP[];
387 
388     static const char KEY_QC_HISTOGRAM[] ;
389     static const char KEY_QC_SUPPORTED_HISTOGRAM_MODES[] ;
390     static const char KEY_QC_HDR_NEED_1X[];
391     static const char KEY_QC_VIDEO_HDR[];
392     static const char KEY_QC_VT_ENABLE[];
393     static const char KEY_QC_SUPPORTED_VIDEO_HDR_MODES[];
394     static const char KEY_QC_SENSOR_HDR[];
395     static const char KEY_QC_SUPPORTED_SENSOR_HDR_MODES[];
396     static const char KEY_QC_RDI_MODE[];
397     static const char KEY_QC_SUPPORTED_RDI_MODES[];
398     static const char KEY_QC_SECURE_MODE[];
399     static const char KEY_QC_SUPPORTED_SECURE_MODES[];
400 
401     // Values for SKIN TONE ENHANCEMENT
402     static const char SKIN_TONE_ENHANCEMENT_ENABLE[] ;
403     static const char SKIN_TONE_ENHANCEMENT_DISABLE[] ;
404 
405     // Values for Denoise
406     static const char DENOISE_OFF[] ;
407     static const char DENOISE_ON[] ;
408 
409     // Values for auto exposure settings.
410     static const char FOCUS_ALGO_AUTO[];
411     static const char FOCUS_ALGO_SPOT_METERING[];
412     static const char FOCUS_ALGO_CENTER_WEIGHTED[];
413     static const char FOCUS_ALGO_FRAME_AVERAGE[];
414 
415     // Values for AE Bracketing settings.
416     static const char AE_BRACKET_OFF[];
417     static const char AE_BRACKET[];
418 
419     // Values for AF Bracketing settings.
420     static const char AF_BRACKET_OFF[];
421     static const char AF_BRACKET_ON[];
422 
423     // Values for Refocus settings.
424     static const char RE_FOCUS_OFF[];
425     static const char RE_FOCUS_ON[];
426 
427     // Values for Chroma Flash settings.
428     static const char CHROMA_FLASH_OFF[];
429     static const char CHROMA_FLASH_ON[];
430 
431     // Values for Opti Zoom settings.
432     static const char OPTI_ZOOM_OFF[];
433     static const char OPTI_ZOOM_ON[];
434 
435     // Values for HFR settings.
436     static const char VIDEO_HFR_OFF[];
437     static const char VIDEO_HFR_2X[];
438     static const char VIDEO_HFR_3X[];
439     static const char VIDEO_HFR_4X[];
440     static const char VIDEO_HFR_5X[];
441 
442     // Values for feature on/off settings.
443     static const char VALUE_OFF[];
444     static const char VALUE_ON[];
445 
446     // Values for feature enable/disable settings.
447     static const char VALUE_ENABLE[];
448     static const char VALUE_DISABLE[];
449 
450     // Values for feature true/false settings.
451     static const char VALUE_FALSE[];
452     static const char VALUE_TRUE[];
453 
454     //Values for flip settings
455     static const char FLIP_MODE_OFF[];
456     static const char FLIP_MODE_V[];
457     static const char FLIP_MODE_H[];
458     static const char FLIP_MODE_VH[];
459 
460     //Values for CDS Mode
461     static const char CDS_MODE_OFF[];
462     static const char CDS_MODE_ON[];
463     static const char CDS_MODE_AUTO[];
464 
465     static const char KEY_SELECTED_AUTO_SCENE[];
466 
467     enum {
468         CAMERA_ORIENTATION_UNKNOWN = 0,
469         CAMERA_ORIENTATION_PORTRAIT = 1,
470         CAMERA_ORIENTATION_LANDSCAPE = 2,
471     };
472     typedef struct {
473         const char *const desc;
474         int val;
475     } QCameraMap;
476 
477     friend class QCameraReprocScaleParam;
478     QCameraReprocScaleParam m_reprocScaleParam;
479     static const QCameraMap EFFECT_MODES_MAP[];
480 
481     void getSupportedHfrSizes(Vector<Size> &sizes);
482     void setPreviewFrameRateMode(const char *mode);
483     const char *getPreviewFrameRateMode() const;
484     void setTouchIndexAec(int x, int y);
485     void getTouchIndexAec(int *x, int *y);
486     void setTouchIndexAf(int x, int y);
487     void getTouchIndexAf(int *x, int *y);
488 
489     int32_t init(cam_capability_t *,
490                  mm_camera_vtbl_t *,
491                  QCameraAdjustFPS *,
492                  QCameraTorchInterface *);
493     void deinit();
494     int32_t assign(QCameraParameters& params);
495     int32_t initDefaultParameters();
496     int32_t updateParameters(QCameraParameters&, bool &needRestart);
497     int32_t commitParameters();
498     int getPreviewHalPixelFormat() const;
499     int32_t getStreamRotation(cam_stream_type_t streamType,
500                                cam_pp_feature_config_t &featureConfig,
501                                cam_dimension_t &dim);
502     int32_t getStreamFormat(cam_stream_type_t streamType,
503                              cam_format_t &format);
504     int32_t getStreamDimension(cam_stream_type_t streamType,
505                                 cam_dimension_t &dim);
506     void getThumbnailSize(int *width, int *height) const;
507 
508     int getZSLBurstInterval();
509     int getZSLQueueDepth();
510     int getZSLBackLookCount();
511     int getMaxUnmatchedFramesInQueue();
isZSLMode()512     bool isZSLMode() {return m_bZslMode;};
isRdiMode()513     bool isRdiMode() {return m_bRdiMode;};
isSecureMode()514     bool isSecureMode() {return m_bSecureMode;};
isNoDisplayMode()515     bool isNoDisplayMode() {return m_bNoDisplayMode;};
isWNREnabled()516     bool isWNREnabled() {return m_bWNROn;};
isHfrMode()517     bool isHfrMode() {return m_bHfrMode;};
getHfrFps(cam_fps_range_t & pFpsRange)518     void getHfrFps(cam_fps_range_t &pFpsRange) { pFpsRange = m_hfrFpsRange;};
519     uint8_t getNumOfSnapshots();
520     uint8_t getNumOfRetroSnapshots();
521     uint8_t getNumOfExtraHDRInBufsIfNeeded();
522     uint8_t getNumOfExtraHDROutBufsIfNeeded();
523     int getBurstNum();
524     int getBurstLEDOnPeriod();
525     int getRetroActiveBurstNum();
getRecordingHintValue()526     bool getRecordingHintValue() {return m_bRecordingHint;}; // return local copy of video hint
527     int setRecordingHintValue(int32_t value); // set local copy of video hint and send to server
528                                               // no change in parameters value
529     int getJpegQuality();
530     int getJpegRotation();
531 
532     int32_t getExifDateTime(char *dateTime, uint32_t &count);
533     int32_t getExifFocalLength(rat_t *focalLenght);
534     uint16_t getExifIsoSpeed();
535     int32_t getExifGpsProcessingMethod(char *gpsProcessingMethod, uint32_t &count);
536     int32_t getExifLatitude(rat_t *latitude, char *latRef);
537     int32_t getExifLongitude(rat_t *longitude, char *lonRef);
538     int32_t getExifAltitude(rat_t *altitude, char *altRef);
539     int32_t getExifGpsDateTimeStamp(char *gpsDateStamp, uint32_t bufLen, rat_t *gpsTimeStamp);
540     int32_t updateFocusDistances(cam_focus_distances_info_t *focusDistances);
541 
542     bool isAEBracketEnabled();
543     int32_t setAEBracketing();
isFpsDebugEnabled()544     bool isFpsDebugEnabled() {return m_bDebugFps;};
isHistogramEnabled()545     bool isHistogramEnabled() {return m_bHistogramEnabled;};
isSceneSelectionEnabled()546     bool isSceneSelectionEnabled() {return m_bSceneSelection;};
547     int32_t setSelectedScene(cam_scene_mode_type scene);
548     cam_scene_mode_type getSelectedScene();
isFaceDetectionEnabled()549     bool isFaceDetectionEnabled() {return ((m_nFaceProcMask & CAM_FACE_PROCESS_MASK_DETECTION) != 0);};
getFaceDetectionOption()550     bool getFaceDetectionOption() { return  m_bFaceDetectionOn;}
551     int32_t setFaceDetectionOption(bool enabled);
552     int32_t setHistogram(bool enabled);
553     int32_t setFaceDetection(bool enabled, bool initCommit);
554     int32_t setFrameSkip(enum msm_vfe_frame_skip_pattern pattern);
getThermalMode()555     qcamera_thermal_mode getThermalMode() {return m_ThermalMode;};
556     int32_t updateRecordingHintValue(int32_t value);
557     int32_t setHDRAEBracket(cam_exp_bracketing_t hdrBracket);
558     bool isHDREnabled();
559     bool isAutoHDREnabled();
560     int32_t stopAEBracket();
561     int32_t updateFlash(bool commitSettings);
562     int32_t updateRAW(cam_dimension_t max_dim);
563     bool isAVTimerEnabled();
564     bool isDISEnabled();
565 
getFocusMode()566     cam_focus_mode_type getFocusMode() const {return mFocusMode;};
567     int32_t setNumOfSnapshot();
568     int32_t adjustPreviewFpsRange(cam_fps_range_t *fpsRange);
isJpegPictureFormat()569     bool isJpegPictureFormat() {return (mPictureFormat == CAM_FORMAT_JPEG);};
isNV16PictureFormat()570     bool isNV16PictureFormat() {return (mPictureFormat == CAM_FORMAT_YUV_422_NV16);};
isNV21PictureFormat()571     bool isNV21PictureFormat() {return (mPictureFormat == CAM_FORMAT_YUV_420_NV21);};
572     cam_denoise_process_type_t getWaveletDenoiseProcessPlate();
getLiveSnapshotSize(cam_dimension_t & dim)573     int32_t getLiveSnapshotSize(cam_dimension_t &dim) {dim = m_LiveSnapshotSize; return NO_ERROR;};
getRawSize(cam_dimension_t & dim)574     int32_t getRawSize(cam_dimension_t &dim) {dim = m_rawSize; return NO_ERROR;};
575     int32_t setRawSize(cam_dimension_t &dim);
576     int getFlipMode(cam_stream_type_t streamType);
577     bool isSnapshotFDNeeded();
578 
isHDR1xFrameEnabled()579     bool isHDR1xFrameEnabled() {return m_bHDR1xFrameEnabled;}
580     bool isYUVFrameInfoNeeded();
581     const char*getFrameFmtString(cam_format_t fmt);
isHDR1xExtraBufferNeeded()582     bool isHDR1xExtraBufferNeeded() {return m_bHDR1xExtraBufferNeeded;}
isHDROutputCropEnabled()583     bool isHDROutputCropEnabled() {return m_bHDROutputCropEnabled;}
584 
isPreviewFlipChanged()585     bool isPreviewFlipChanged() { return m_bPreviewFlipChanged; };
isVideoFlipChanged()586     bool isVideoFlipChanged() { return m_bVideoFlipChanged; };
isSnapshotFlipChanged()587     bool isSnapshotFlipChanged() { return m_bSnapshotFlipChanged; };
588     void setHDRSceneEnable(bool bflag);
589 
590     const char *getASDStateString(cam_auto_scene_t scene);
isHDRThumbnailProcessNeeded()591     bool isHDRThumbnailProcessNeeded() { return m_bHDRThumbnailProcessNeeded; };
592     int getAutoFlickerMode();
593 
594     bool setStreamConfigure(bool isCapture, bool previewAsPostview);
595     uint8_t getNumOfExtraBuffersForImageProc();
596     bool needThumbnailReprocess(uint32_t *pFeatureMask);
isUbiFocusEnabled()597     inline bool isUbiFocusEnabled() {return m_bAFBracketingOn;};
isChromaFlashEnabled()598     inline bool isChromaFlashEnabled() {return m_bChromaFlashOn;};
599     bool isOptiZoomEnabled();
600     int32_t commitAFBracket(cam_af_bracketing_t afBracket);
601     int32_t commitFlashBracket(cam_flash_bracketing_t flashBracket);
602     int32_t set3ALock(const char *lockStr);
603     int32_t setAndCommitZoom(int zoom_level);
604     uint8_t getBurstCountForAdvancedCapture();
605     int32_t setLongshotEnable(bool enable);
606     String8 dump();
isUbiRefocus()607     inline bool isUbiRefocus() {return isUbiFocusEnabled() &&
608         (m_pCapability->ubifocus_af_bracketing_need.output_count > 1);};
UfOutputCount()609     inline uint32_t UfOutputCount() {
610         return m_pCapability->ubifocus_af_bracketing_need.output_count;};
generateThumbFromMain()611     inline bool generateThumbFromMain() {return isUbiFocusEnabled() ||
612         isChromaFlashEnabled() || isOptiZoomEnabled(); }
isDisplayFrameNeeded()613     bool isDisplayFrameNeeded() { return m_bDisplayFrame; };
setDisplayFrame(bool enabled)614     int32_t setDisplayFrame(bool enabled) {m_bDisplayFrame=enabled; return 0;};
isAdvCamFeaturesEnabled()615     bool isAdvCamFeaturesEnabled() {return isUbiFocusEnabled() ||
616         isChromaFlashEnabled() || m_bOptiZoomOn || isHDREnabled();}
617     int32_t setAecLock(const char *aecStr);
618     bool is4k2kVideoResolution();
619 
620 private:
621     int32_t setPreviewSize(const QCameraParameters& );
622     int32_t setVideoSize(const QCameraParameters& );
623     int32_t setPictureSize(const QCameraParameters& );
624     int32_t setLiveSnapshotSize(const QCameraParameters& );
625     int32_t setPreviewFormat(const QCameraParameters& );
626     int32_t setPictureFormat(const QCameraParameters& );
627     int32_t setOrientation(const QCameraParameters& );
628     int32_t setJpegThumbnailSize(const QCameraParameters& );
629     int32_t setJpegQuality(const QCameraParameters& );
630     int32_t setPreviewFpsRange(const QCameraParameters& );
631     int32_t setPreviewFrameRate(const QCameraParameters& );
632     int32_t setAutoExposure(const QCameraParameters& );
633     int32_t setEffect(const QCameraParameters& );
634     int32_t setBrightness(const QCameraParameters& );
635     int32_t setFocusMode(const QCameraParameters& );
636     int32_t setSharpness(const QCameraParameters& );
637     int32_t setSaturation(const QCameraParameters& );
638     int32_t setContrast(const QCameraParameters& );
639     int32_t setSkinToneEnhancement(const QCameraParameters& );
640     int32_t setSceneDetect(const QCameraParameters& );
641     int32_t setVideoHDR(const QCameraParameters& );
642     int32_t setVtEnable(const QCameraParameters& );
643     int32_t setZoom(const QCameraParameters& );
644     int32_t setISOValue(const QCameraParameters& );
645     int32_t setRotation(const QCameraParameters& );
646     int32_t setVideoRotation(const QCameraParameters& );
647     int32_t setFlash(const QCameraParameters& );
648     int32_t setAecLock(const QCameraParameters& );
649     int32_t setAwbLock(const QCameraParameters& );
650     int32_t setMCEValue(const QCameraParameters& );
651     int32_t setDISValue(const QCameraParameters& params);
652     int32_t setHighFrameRate(const QCameraParameters& );
653     int32_t setHighSpeedRecording(const QCameraParameters& );
654     int32_t setLensShadeValue(const QCameraParameters& );
655     int32_t setExposureCompensation(const QCameraParameters& );
656     int32_t setWhiteBalance(const QCameraParameters& );
657     int32_t setAntibanding(const QCameraParameters& );
658     int32_t setFocusAreas(const QCameraParameters& );
659     int32_t setMeteringAreas(const QCameraParameters& );
660     int32_t setSceneMode(const QCameraParameters& );
661     int32_t setSelectableZoneAf(const QCameraParameters& );
662     int32_t setAEBracket(const QCameraParameters& );
663     int32_t setAFBracket(const QCameraParameters& );
664     int32_t setChromaFlash(const QCameraParameters& );
665     int32_t setOptiZoom(const QCameraParameters& );
666     int32_t setRedeyeReduction(const QCameraParameters& );
667     int32_t setGpsLocation(const QCameraParameters& );
668     int32_t setRecordingHint(const QCameraParameters& );
669     int32_t setNoDisplayMode(const QCameraParameters& );
670     int32_t setWaveletDenoise(const QCameraParameters& );
671     int32_t setZslMode(const QCameraParameters& );
672     int32_t setZslAttributes(const QCameraParameters& );
673     int32_t setAutoHDR(const QCameraParameters& params);
674     int32_t setCameraMode(const QCameraParameters& );
675     int32_t setSceneSelectionMode(const QCameraParameters& params);
676     int32_t setFaceRecognition(const QCameraParameters& );
677     int32_t setFlip(const QCameraParameters& );
678     int32_t setBurstNum(const QCameraParameters& params);
679     int32_t setRetroActiveBurstNum(const QCameraParameters& params);
680     int32_t setBurstLEDOnPeriod(const QCameraParameters& params);
681     int32_t setSnapshotFDReq(const QCameraParameters& );
682     int32_t setStatsDebugMask();
683     int32_t setPAAF();
684     int32_t setTintlessValue(const QCameraParameters& params);
685     int32_t setCDSMode(const QCameraParameters& params);
686     int32_t setMobicat(const QCameraParameters& params);
687     int32_t setRdiMode(const QCameraParameters& );
688     int32_t setSecureMode(const QCameraParameters& );
689     int32_t setAutoExposure(const char *autoExp);
690     int32_t setPreviewFpsRange(int min_fps,int max_fps,
691             int vid_min_fps,int vid_max_fps);
692     int32_t setEffect(const char *effect);
693     int32_t setBrightness(int brightness);
694     int32_t setFocusMode(const char *focusMode);
695     int32_t setSharpness(int sharpness);
696     int32_t setSaturation(int saturation);
697     int32_t setContrast(int contrast);
698     int32_t setSkinToneEnhancement(int sceFactor);
699     int32_t setSceneDetect(const char *scendDetect);
700     int32_t setVideoHDR(const char *videoHDR);
701     int32_t setSensorSnapshotHDR(const char *snapshotHDR);
702     int32_t setVtEnable(const char *vtEnable);
703     int32_t setZoom(int zoom_level);
704     int32_t setISOValue(const char *isoValue);
705     int32_t setFlash(const char *flashStr);
706     int32_t setAwbLock(const char *awbStr);
707     int32_t setMCEValue(const char *mceStr);
708     int32_t setDISValue(const char *disStr);
709     int32_t setHighFrameRate(const char *hfrStr);
710     int32_t setLensShadeValue(const char *lensShadeStr);
711     int32_t setExposureCompensation(int expComp);
712     int32_t setWhiteBalance(const char *wbStr);
713     int32_t setAntibanding(const char *antiBandingStr);
714     int32_t setFocusAreas(const char *focusAreasStr);
715     int32_t setMeteringAreas(const char *meteringAreasStr);
716     int32_t setSceneMode(const char *sceneModeStr);
717     int32_t setSelectableZoneAf(const char *selZoneAFStr);
718     int32_t setAEBracket(const char *aecBracketStr);
719     int32_t setAFBracket(const char *afBracketStr);
720     int32_t setChromaFlash(const char *chromaFlashStr);
721     int32_t setOptiZoom(const char *optiZoomStr);
722     int32_t setRedeyeReduction(const char *redeyeStr);
723     int32_t setWaveletDenoise(const char *wnrStr);
724     int32_t setFaceRecognition(const char *faceRecog, int maxFaces);
725     int32_t setTintlessValue(const char *tintStr);
726     bool UpdateHFRFrameRate(const QCameraParameters& params);
727     int32_t setRdiMode(const char *str);
728     int32_t setSecureMode(const char *str);
729 
730     int32_t parse_pair(const char *str, int *first, int *second,
731                        char delim, char **endptr);
732     void parseSizesList(const char *sizesStr, Vector<Size> &sizes);
733     int32_t parseNDimVector(const char *str, int *num, int N, char delim);
734     int32_t parseCameraAreaString(const char *str, int max_num_areas,
735                                   cam_area_t *pAreas, int& num_areas_found);
736     bool validateCameraAreas(cam_area_t *areas, int num_areas);
737     int parseGPSCoordinate(const char *coord_str, rat_t *coord);
738     int32_t getRational(rat_t *rat, int num, int denom);
739     String8 createSizesString(const cam_dimension_t *sizes, int len);
740     String8 createValuesString(const int *values, int len,
741                                const QCameraMap *map, int map_len);
742     String8 createValuesStringFromMap(const QCameraMap *map,
743                                       int map_len);
744     String8 createHfrValuesString(const cam_hfr_info_t *values, int len,
745                                   const QCameraMap *map, int map_len);
746     String8 createHfrSizesString(const cam_hfr_info_t *values, int len);
747     String8 createFpsRangeString(const cam_fps_range_t *fps,
748                                  int len,
749                                  int &default_fps_index);
750     String8 createFpsString(cam_fps_range_t &fps);
751     String8 createZoomRatioValuesString(int *zoomRatios, int length);
752     int lookupAttr(const QCameraMap arr[], int len, const char *name);
753     const char *lookupNameByValue(const QCameraMap arr[], int len, int value);
754 
755     // ops for batch set/get params with server
756     int32_t initBatchUpdate(parm_buffer_t *p_table);
757     int32_t AddSetParmEntryToBatch(parm_buffer_t *p_table,
758                                    cam_intf_parm_type_t paramType,
759                                    uint32_t paramLength,
760                                    void *paramValue);
761     int32_t commitSetBatch();
762     int32_t AddGetParmEntryToBatch(parm_buffer_t *p_table,
763                                    cam_intf_parm_type_t paramType);
764     int32_t commitGetBatch();
765 
766     // ops to tempororily update parameter entries and commit
767     int32_t updateParamEntry(const char *key, const char *value);
768     int32_t commitParamChanges();
769 
770     // Map from strings to values
771     static const cam_dimension_t THUMBNAIL_SIZES_MAP[];
772     static const QCameraMap AUTO_EXPOSURE_MAP[];
773     static const QCameraMap PREVIEW_FORMATS_MAP[];
774     static const QCameraMap PICTURE_TYPES_MAP[];
775     static const QCameraMap RAW_FORMATS_MAP[];
776     static const QCameraMap FOCUS_MODES_MAP[];
777     static const QCameraMap SCENE_MODES_MAP[];
778     static const QCameraMap FLASH_MODES_MAP[];
779     static const QCameraMap FOCUS_ALGO_MAP[];
780     static const QCameraMap WHITE_BALANCE_MODES_MAP[];
781     static const QCameraMap ANTIBANDING_MODES_MAP[];
782     static const QCameraMap ISO_MODES_MAP[];
783     static const QCameraMap HFR_MODES_MAP[];
784     static const QCameraMap BRACKETING_MODES_MAP[];
785     static const QCameraMap ON_OFF_MODES_MAP[];
786     static const QCameraMap ENABLE_DISABLE_MODES_MAP[];
787     static const QCameraMap DENOISE_ON_OFF_MODES_MAP[];
788     static const QCameraMap TRUE_FALSE_MODES_MAP[];
789     static const QCameraMap TOUCH_AF_AEC_MODES_MAP[];
790     static const QCameraMap FLIP_MODES_MAP[];
791     static const QCameraMap AF_BRACKETING_MODES_MAP[];
792     static const QCameraMap RE_FOCUS_MODES_MAP[];
793     static const QCameraMap CHROMA_FLASH_MODES_MAP[];
794     static const QCameraMap OPTI_ZOOM_MODES_MAP[];
795     static const QCameraMap RDI_MODES_MAP[];
796     static const QCameraMap CDS_MODES_MAP[];
797 
798     cam_capability_t *m_pCapability;
799     mm_camera_vtbl_t *m_pCamOpsTbl;
800     QCameraHeapMemory *m_pParamHeap;
801     parm_buffer_t     *m_pParamBuf;  // ptr to param buf in m_pParamHeap
802 
803     bool m_bZslMode;                // if ZSL is enabled
804     bool m_bZslMode_new;
805     bool m_bRecordingHint;          // local copy of recording hint
806     bool m_bRecordingHint_new;
807     bool m_bHistogramEnabled;       // if histogram is enabled
808     int  m_nFaceProcMask;           // face process mask
809     bool m_bFaceDetectionOn;        //  if face Detection turned on by user
810     bool m_bDebugFps;               // if FPS need to be logged
811     cam_focus_mode_type mFocusMode;
812     cam_format_t mPreviewFormat;
813     int32_t mPictureFormat;         // could be CAMERA_PICTURE_TYPE_JPEG or cam_format_t
814     bool m_bNeedRestart;            // if preview needs restart after parameters updated
815     bool m_bNoDisplayMode;
816     bool m_bWNROn;
817     bool m_bInited;
818     int m_nBurstNum;
819     int m_nRetroBurstNum;
820     int m_nBurstLEDOnPeriod;
821     cam_exp_bracketing_t m_AEBracketingClient;
822     bool m_bUpdateEffects;          // Cause reapplying of effects
823     bool m_bSceneTransitionAuto;    // Indicate that scene has changed to Auto
824     bool m_bPreviewFlipChanged;        // if flip setting for preview changed
825     bool m_bVideoFlipChanged;          // if flip setting for video changed
826     bool m_bSnapshotFlipChanged;       // if flip setting for snapshot changed
827     bool m_bFixedFrameRateSet;      // Indicates that a fixed frame rate is set
828     qcamera_thermal_mode m_ThermalMode; // adjust fps vs adjust frameskip
829     cam_dimension_t m_LiveSnapshotSize; // live snapshot size
830     cam_dimension_t m_rawSize; // live snapshot size
831     bool m_bHDREnabled;             // if HDR is enabled
832     bool m_bAVTimerEnabled;    //if AVTimer is enabled
833     bool m_bDISEnabled;
834 
835     QCameraAdjustFPS *m_AdjustFPS;
836     bool m_bHDR1xFrameEnabled;          // if frame with exposure compensation 0 during HDR is enabled
837     bool m_HDRSceneEnabled; // Auto HDR indication
838     bool m_bHDRThumbnailProcessNeeded;        // if thumbnail need to be processed for HDR
839     bool m_bHDR1xExtraBufferNeeded;     // if extra frame with exposure compensation 0 during HDR is needed
840     bool m_bHDROutputCropEnabled;     // if HDR output frame need to be scaled to user resolution
841     QCameraTorchInterface *m_pTorch; // Interface for enabling torch
842     bool m_bReleaseTorchCamera; // Release camera resources after torch gets disabled
843 
844     DefaultKeyedVector<String8,String8> m_tempMap; // map for temororily store parameters to be set
845     cam_fps_range_t m_default_fps_range;
846     bool m_bAFBracketingOn;
847     bool m_bChromaFlashOn;
848     bool m_bOptiZoomOn;
849     bool m_bSceneSelection;
850     Mutex m_SceneSelectLock;
851     cam_scene_mode_type m_SelectedScene;
852     cam_fps_range_t m_hfrFpsRange;
853     bool m_bHfrMode;
854     bool m_bSensorHDREnabled;             // if HDR is enabled
855     bool m_bRdiMode;                // if RDI mode
856     bool m_bUbiRefocus;
857     bool m_bDisplayFrame;
858     bool m_bSecureMode;
859     bool m_bAeBracketingEnabled;
860     int32_t mFlashValue;
861     int32_t mFlashDaemonValue;
862 
863 };
864 
865 }; // namespace qcamera
866 
867 #endif
868