16f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/*
26f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev**
36f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** Copyright 2008, The Android Open Source Project
46f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
56f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** Not a Contribution. Apache license notifications and license are
66f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** retained for attribution purposes only.
76f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev**
86f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** Licensed under the Apache License, Version 2.0 (the "License");
96f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** you may not use this file except in compliance with the License.
106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** You may obtain a copy of the License at
116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev**
126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev**     http://www.apache.org/licenses/LICENSE-2.0
136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev**
146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** Unless required by applicable law or agreed to in writing, software
156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** distributed under the License is distributed on an "AS IS" BASIS,
166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** See the License for the specific language governing permissions and
186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** limitations under the License.
196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev*/
206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#ifndef ANDROID_HARDWARE_QCAMERA_PARAMETERS_H
216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define ANDROID_HARDWARE_QCAMERA_PARAMETERS_H
226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <camera/CameraParameters.h>
246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <cutils/properties.h>
256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <hardware/camera.h>
266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <stdlib.h>
276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <utils/Errors.h>
286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include "cam_intf.h"
296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include "QCameraMem.h"
306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include "QCameraThermalAdapter.h"
316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevextern "C" {
336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <mm_jpeg_interface.h>
346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev}
356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevusing namespace android;
376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevnamespace qcamera {
396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev//EXIF globals
416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevstatic const char ExifAsciiPrefix[] = { 0x41, 0x53, 0x43, 0x49, 0x49, 0x0, 0x0, 0x0 };          // "ASCII\0\0\0"
426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevstatic const char ExifUndefinedPrefix[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };   // "\0\0\0\0\0\0\0\0"
436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define GPS_PROCESSING_METHOD_SIZE       101
456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIF_ASCII_PREFIX_SIZE           8   //(sizeof(ExifAsciiPrefix))
466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define FOCAL_LENGTH_DECIMAL_PRECISION   100
476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevclass QCameraParameters: public CameraParameters
496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{
506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevpublic:
516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCameraParameters();
526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCameraParameters(const String8 &params);
536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    ~QCameraParameters();
546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Supported PREVIEW/RECORDING SIZES IN HIGH FRAME RATE recording, sizes in pixels.
566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Example value: "800x480,432x320". Read only.
576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_HFR_SIZES[];
586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // The mode of preview frame rate.
596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Example value: "frame-rate-auto, frame-rate-fixed".
606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_PREVIEW_FRAME_RATE_MODE[];
616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_PREVIEW_FRAME_RATE_MODES[];
626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_PREVIEW_FRAME_RATE_AUTO_MODE[];
636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_PREVIEW_FRAME_RATE_FIXED_MODE[];
646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_SKIN_TONE_ENHANCEMENT_MODES[] ;
656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Supported live snapshot sizes
676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_LIVESNAPSHOT_SIZES[];
686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Supported Raw formats
706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_RAW_FORMATS[];
716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_RAW_FORMAT[];
726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Touch Af/AEC settings.
746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_TOUCH_AF_AEC[];
756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_TOUCH_AF_AEC[];
766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Touch Index for AEC.
776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_TOUCH_INDEX_AEC[];
786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Touch Index for AF.
796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_TOUCH_INDEX_AF[];
806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Current auto scene detection mode.
816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Example value: "off" or "on" constants. Read/write.
826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SCENE_DETECT[];
836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Supported auto scene detection settings.
846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Example value: "off,on". Read only.
856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_SCENE_DETECT[];
866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SELECTABLE_ZONE_AF[];
876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_ISO_MODE[];
896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_ISO_MODES[];
906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_LENSSHADE[] ;
916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_LENSSHADE_MODES[] ;
926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_AUTO_EXPOSURE[];
936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_AUTO_EXPOSURE[];
946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_GPS_LATITUDE_REF[];
966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_GPS_LONGITUDE_REF[];
976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_GPS_ALTITUDE_REF[];
986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_GPS_STATUS[];
996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MEMORY_COLOR_ENHANCEMENT[];
1006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_MEM_COLOR_ENHANCE_MODES[];
1016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_DIS[];
1026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_DIS_MODES[];
1036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_ZSL[];
1056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_ZSL_MODES[];
1066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_ZSL_BURST_INTERVAL[];
1076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_ZSL_BURST_LOOKBACK[];
1086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_ZSL_QUEUE_DEPTH[];
1096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_CAMERA_MODE[];
1116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_ORIENTATION[];
1126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_VIDEO_HIGH_FRAME_RATE[];
1146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_VIDEO_HIGH_FRAME_RATE_MODES[];
1156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_HIGH_DYNAMIC_RANGE_IMAGING[];
1166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_HDR_IMAGING_MODES[];
1176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_AE_BRACKET_HDR[];
1186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_AE_BRACKET_MODES[];
1196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_CAPTURE_BURST_EXPOSURE[];
1206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_NUM_SNAPSHOT_PER_SHUTTER[];
1216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_NO_DISPLAY_MODE[];
1226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_RAW_PICUTRE_SIZE[];
1236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // DENOISE
1256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_DENOISE[];
1266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_DENOISE[];
1276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Selectable zone AF.
1296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_FOCUS_ALGO[];
1306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_FOCUS_ALGOS[];
1316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Face Detection
1336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_FACE_DETECTION[];
1346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_FACE_DETECTION[];
1356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Face Recognition
1376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_FACE_RECOGNITION[];
1386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_FACE_RECOGNITION[];
1396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // supported camera features to be queried by Snapdragon SDK
1416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Read only
1426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_CAMERA_FEATURES[];
1436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Indicates number of faces requested by the application.
1456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //This value will be rejected if the requested faces
1466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //greater than supported by hardware.
1476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Write only.
1486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MAX_NUM_REQUESTED_FACES[];
1496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //preview flip
1516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_PREVIEW_FLIP[];
1526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //video flip
1536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_VIDEO_FLIP[];
1546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //snapshot picture flip
1556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SNAPSHOT_PICTURE_FLIP[];
1566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_FLIP_MODES[];
1586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Redeye Reduction
1606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_REDEYE_REDUCTION[];
1616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_REDEYE_REDUCTION[];
1626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char EFFECT_EMBOSS[];
1636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char EFFECT_SKETCH[];
1646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char EFFECT_NEON[];
1656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for Touch AF/AEC
1676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char TOUCH_AF_AEC_OFF[];
1686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char TOUCH_AF_AEC_ON[];
1696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for Scene mode
1716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char SCENE_MODE_ASD[];
1726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char SCENE_MODE_BACKLIGHT[];
1736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char SCENE_MODE_FLOWERS[];
1746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char SCENE_MODE_AR[];
1756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char SCENE_MODE_HDR[];
1766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char PIXEL_FORMAT_YUV420SP_ADRENO[]; // ADRENO
1776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char PIXEL_FORMAT_YV12[]; // NV12
1786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char PIXEL_FORMAT_NV12[]; //NV12
1796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
1806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for raw picture format
1816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_YUYV[];
1826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_YVYU[];
1836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_UYVY[];
1846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_YUV_RAW_8BIT_VYUY[];
1856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8GBRG[];
1866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8GRBG[];
1876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8RGGB[];
1886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_8BGGR[];
1896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10GBRG[];
1906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10GRBG[];
1916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10RGGB[];
1926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_10BGGR[];
1936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12GBRG[];
1946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12GRBG[];
1956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12RGGB[];
1966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_QCOM_RAW_12BGGR[];
1976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8GBRG[];
1986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8GRBG[];
1996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8RGGB[];
2006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_8BGGR[];
2016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10GBRG[];
2026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10GRBG[];
2036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10RGGB[];
2046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_10BGGR[];
2056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12GBRG[];
2066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12GRBG[];
2076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12RGGB[];
2086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_MIPI_RAW_12BGGR[];
2096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8GBRG[];
2106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8GRBG[];
2116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8RGGB[];
2126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_8BGGR[];
2136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10GBRG[];
2146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10GRBG[];
2156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10RGGB[];
2166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_10BGGR[];
2176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12GBRG[];
2186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12GRBG[];
2196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12RGGB[];
2206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_QCOM_12BGGR[];
2216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8GBRG[];
2226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8GRBG[];
2236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8RGGB[];
2246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_8BGGR[];
2256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10GBRG[];
2266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10GRBG[];
2276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10RGGB[];
2286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_10BGGR[];
2296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12GBRG[];
2306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12GRBG[];
2316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12RGGB[];
2326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_MIPI_12BGGR[];
2336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8GBRG[];
2346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8GRBG[];
2356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8RGGB[];
2366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN8_8BGGR[];
2376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8GBRG[];
2386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8GRBG[];
2396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8RGGB[];
2406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_8BGGR[];
2416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10GBRG[];
2426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10GRBG[];
2436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10RGGB[];
2446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_10BGGR[];
2456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12GBRG[];
2466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12GRBG[];
2476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12RGGB[];
2486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char QC_PIXEL_FORMAT_BAYER_IDEAL_PLAIN16_12BGGR[];
2496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
2506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // ISO values
2516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char ISO_AUTO[];
2526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char ISO_HJR[];
2536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char ISO_100[];
2546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char ISO_200[];
2556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char ISO_400[];
2566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char ISO_800[];
2576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char ISO_1600[];
2586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
2596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for auto exposure settings.
2606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AUTO_EXPOSURE_FRAME_AVG[];
2616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AUTO_EXPOSURE_CENTER_WEIGHTED[];
2626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AUTO_EXPOSURE_SPOT_METERING[];
2636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AUTO_EXPOSURE_SMART_METERING[];
2646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AUTO_EXPOSURE_USER_METERING[];
2656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AUTO_EXPOSURE_SPOT_METERING_ADV[];
2666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AUTO_EXPOSURE_CENTER_WEIGHTED_ADV[];
2676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
2686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SHARPNESS[];
2696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MIN_SHARPNESS[];
2706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MAX_SHARPNESS[];
2716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SHARPNESS_STEP[];
2726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_CONTRAST[];
2736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MIN_CONTRAST[];
2746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MAX_CONTRAST[];
2756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_CONTRAST_STEP[];
2766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SATURATION[];
2776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MIN_SATURATION[];
2786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MAX_SATURATION[];
2796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SATURATION_STEP[];
2806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_BRIGHTNESS[];
2816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MIN_BRIGHTNESS[];
2826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MAX_BRIGHTNESS[];
2836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_BRIGHTNESS_STEP[];
2846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SCE_FACTOR[];
2856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MIN_SCE_FACTOR[];
2866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_MAX_SCE_FACTOR[];
2876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SCE_FACTOR_STEP[];
2886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
2896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_HISTOGRAM[] ;
2906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_SUPPORTED_HISTOGRAM_MODES[] ;
2916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char KEY_QC_HDR_NEED_1X[];
2922f073d4cfa214187fc326377a1e0eecad84eaf3dMuhua Li    static const char KEY_QC_VIDEO_HDR[];
2932f073d4cfa214187fc326377a1e0eecad84eaf3dMuhua Li    static const char KEY_QC_SUPPORTED_VIDEO_HDR_MODES[];
2946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
2956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for SKIN TONE ENHANCEMENT
2966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char SKIN_TONE_ENHANCEMENT_ENABLE[] ;
2976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char SKIN_TONE_ENHANCEMENT_DISABLE[] ;
2986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
2996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for Denoise
3006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char DENOISE_OFF[] ;
3016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char DENOISE_ON[] ;
3026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for auto exposure settings.
3046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char FOCUS_ALGO_AUTO[];
3056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char FOCUS_ALGO_SPOT_METERING[];
3066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char FOCUS_ALGO_CENTER_WEIGHTED[];
3076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char FOCUS_ALGO_FRAME_AVERAGE[];
3086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for AE Bracketing settings.
3106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AE_BRACKET_OFF[];
3116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char AE_BRACKET[];
3126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for HFR settings.
3146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VIDEO_HFR_OFF[];
3156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VIDEO_HFR_2X[];
3166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VIDEO_HFR_3X[];
3176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VIDEO_HFR_4X[];
3186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VIDEO_HFR_5X[];
3196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for feature on/off settings.
3216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VALUE_OFF[];
3226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VALUE_ON[];
3236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for feature enable/disable settings.
3256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VALUE_ENABLE[];
3266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VALUE_DISABLE[];
3276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Values for feature true/false settings.
3296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VALUE_FALSE[];
3306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char VALUE_TRUE[];
3316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    //Values for flip settings
3336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char FLIP_MODE_OFF[];
3346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char FLIP_MODE_V[];
3356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char FLIP_MODE_H[];
3366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const char FLIP_MODE_VH[];
3376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    enum {
3396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev        CAMERA_ORIENTATION_UNKNOWN = 0,
3406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev        CAMERA_ORIENTATION_PORTRAIT = 1,
3416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev        CAMERA_ORIENTATION_LANDSCAPE = 2,
3426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    };
3436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    typedef struct {
3446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev        const char *const desc;
3456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev        int val;
3466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    } QCameraMap;
3476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void getSupportedHfrSizes(Vector<Size> &sizes);
3496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void setPreviewFrameRateMode(const char *mode);
3506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    const char *getPreviewFrameRateMode() const;
3516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void setTouchIndexAec(int x, int y);
3526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void getTouchIndexAec(int *x, int *y);
3536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void setTouchIndexAf(int x, int y);
3546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void getTouchIndexAf(int *x, int *y);
3556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t init(cam_capability_t *, mm_camera_vtbl_t *);
3576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void deinit();
3586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t assign(QCameraParameters& params);
3596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t initDefaultParameters();
3606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t updateParameters(QCameraParameters&, bool &needRestart);
3616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t commitParameters();
3626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getPreviewHalPixelFormat() const;
3636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getStreamFormat(cam_stream_type_t streamType,
3646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                             cam_format_t &format);
3656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getStreamDimension(cam_stream_type_t streamType,
3666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                cam_dimension_t &dim);
3676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void getThumbnailSize(int *width, int *height) const;
3686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getZSLBurstInterval();
3706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getZSLQueueDepth();
3716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getZSLBackLookCount();
3726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getMaxUnmatchedFramesInQueue();
3736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isZSLMode() {return m_bZslMode;};
3746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isNoDisplayMode() {return m_bNoDisplayMode;};
3756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isWNREnabled() {return m_bWNROn;};
3766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    uint8_t getNumOfSnapshots();
3776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    uint8_t getNumOfExtraHDRBufsIfNeeded();
3786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    uint8_t getNumOfHDRBufsIfNeeded();
3796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getBurstNum();
3806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool getRecordingHintValue() {return m_bRecordingHint;}; // return local copy of video hint
3816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int setRecordingHintValue(int32_t value); // set local copy of video hint and send to server
3826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                              // no change in parameters value
3836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getJpegQuality();
3846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getJpegRotation();
3856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getExifDateTime(char *dateTime, uint32_t &count);
3876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getExifFocalLength(rat_t *focalLenght);
3886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    uint16_t getExifIsoSpeed();
3896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getExifGpsProcessingMethod(char *gpsProcessingMethod, uint32_t &count);
3906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getExifLatitude(rat_t *latitude, char *latRef);
3916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getExifLongitude(rat_t *longitude, char *lonRef);
3926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getExifAltitude(rat_t *altitude, char *altRef);
3936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getExifGpsDateTimeStamp(char *gpsDateStamp, uint32_t bufLen, rat_t *gpsTimeStamp);
3946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t updateFocusDistances(cam_focus_distances_info_t *focusDistances);
3956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
3966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isFpsDebugEnabled() {return m_bDebugFps;};
3976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isHistogramEnabled() {return m_bHistogramEnabled;};
3986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isFaceDetectionEnabled() {return ((m_nFaceProcMask & CAM_FACE_PROCESS_MASK_DETECTION) != 0);};
3996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setHistogram(bool enabled);
4006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFaceDetection(bool enabled);
4016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setLockCAF(bool bLock);
4026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFrameSkip(enum msm_vfe_frame_skip_pattern pattern);
4036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    qcamera_thermal_mode getThermalMode() {return m_ThermalMode;};
404744f5403bebb0e27140d16a5df7a341713c24a13Nagesh Subba Reddy    int32_t updateRecordingHintValue(int32_t value);
4056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
4066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    cam_focus_mode_type getFocusMode() const {return mFocusMode;};
4076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setNumOfSnapshot();
4086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t adjustPreviewFpsRange(cam_fps_range_t *fpsRange);
4096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isJpegPictureFormat() {return (mPictureFormat == CAM_FORMAT_JPEG);};
4107fde32d818742141a39fda194e66b84109182affEmilian Peev    bool isNV16PictureFormat() {return (mPictureFormat == CAM_FORMAT_YUV_422_NV16);};
4116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    cam_denoise_process_type_t getWaveletDenoiseProcessPlate();
4126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getLiveSnapshotSize(cam_dimension_t &dim) {dim = m_LiveSnapshotSize; return NO_ERROR;};
4136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getFlipMode(cam_stream_type_t streamType);
4146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
4156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void setLockCAFNeeded(bool bNeedflag) {m_bNeedLockCAF = bNeedflag;};
4166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isLockCAFNeeded() {return m_bNeedLockCAF;};
4176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isCAFLocked() {return m_bCAFLocked;};
4186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void setAFRunning(bool bflag) {m_bAFRunning = bflag;};
4196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool isAFRunning() {return m_bAFRunning;};
4206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
4216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevprivate:
4226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setPreviewSize(const QCameraParameters& );
4236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setVideoSize(const QCameraParameters& );
4246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setPictureSize(const QCameraParameters& );
4256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setLiveSnapshotSize(const QCameraParameters& );
4266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setPreviewFormat(const QCameraParameters& );
4276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setPictureFormat(const QCameraParameters& );
4286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setOrientation(const QCameraParameters& );
4296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setJpegThumbnailSize(const QCameraParameters& );
4306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setJpegQuality(const QCameraParameters& );
4316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setPreviewFpsRange(const QCameraParameters& );
4326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setPreviewFrameRate(const QCameraParameters& );
4336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAutoExposure(const QCameraParameters& );
4346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setEffect(const QCameraParameters& );
4356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setBrightness(const QCameraParameters& );
4366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFocusMode(const QCameraParameters& );
4376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSharpness(const QCameraParameters& );
4386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSaturation(const QCameraParameters& );
4396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setContrast(const QCameraParameters& );
4406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSkinToneEnhancement(const QCameraParameters& );
4416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSceneDetect(const QCameraParameters& );
4422f073d4cfa214187fc326377a1e0eecad84eaf3dMuhua Li    int32_t setVideoHDR(const QCameraParameters& );
4436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setZoom(const QCameraParameters& );
4446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setISOValue(const QCameraParameters& );
4456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setRotation(const QCameraParameters& );
4466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFlash(const QCameraParameters& );
4476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAecLock(const QCameraParameters& );
4486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAwbLock(const QCameraParameters& );
4496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setMCEValue(const QCameraParameters& );
4506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setDISValue(const QCameraParameters& params);
4516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setHighFrameRate(const QCameraParameters& );
4526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setLensShadeValue(const QCameraParameters& );
4536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setExposureCompensation(const QCameraParameters& );
4546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setWhiteBalance(const QCameraParameters& );
4556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAntibanding(const QCameraParameters& );
4566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFocusAreas(const QCameraParameters& );
4576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setMeteringAreas(const QCameraParameters& );
4586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSceneMode(const QCameraParameters& );
4596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSelectableZoneAf(const QCameraParameters& );
4606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAEBracket(const QCameraParameters& );
4616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setRedeyeReduction(const QCameraParameters& );
4626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setGpsLocation(const QCameraParameters& );
4636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setRecordingHint(const QCameraParameters& );
4646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setNoDisplayMode(const QCameraParameters& );
4656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setWaveletDenoise(const QCameraParameters& );
4666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setZslMode(const QCameraParameters& );
4676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setZslAttributes(const QCameraParameters& );
4686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setCameraMode(const QCameraParameters& );
4696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFaceRecognition(const QCameraParameters& );
4706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFlip(const QCameraParameters& );
4716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
4726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAutoExposure(const char *autoExp);
4736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setPreviewFpsRange(int minFPS,int maxFPS);
4746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setEffect(const char *effect);
4756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setBrightness(int brightness);
4766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFocusMode(const char *focusMode);
4776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSharpness(int sharpness);
4786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSaturation(int saturation);
4796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setContrast(int contrast);
4806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSkinToneEnhancement(int sceFactor);
4816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSceneDetect(const char *scendDetect);
4822f073d4cfa214187fc326377a1e0eecad84eaf3dMuhua Li    int32_t setVideoHDR(const char *videoHDR);
4836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setZoom(int zoom_level);
4846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setISOValue(const char *isoValue);
4856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFlash(const char *flashStr);
4866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAecLock(const char *aecStr);
4876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAwbLock(const char *awbStr);
4886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setMCEValue(const char *mceStr);
4896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setDISValue(const char *disStr);
4906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setHighFrameRate(const char *hfrStr);
4916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setLensShadeValue(const char *lensShadeStr);
4926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setExposureCompensation(int expComp);
4936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setWhiteBalance(const char *wbStr);
4946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAntibanding(const char *antiBandingStr);
4956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFocusAreas(const char *focusAreasStr);
4966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setMeteringAreas(const char *meteringAreasStr);
4976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSceneMode(const char *sceneModeStr);
4986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setSelectableZoneAf(const char *selZoneAFStr);
4996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setAEBracket(const char *aecBracketStr);
5006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setRedeyeReduction(const char *redeyeStr);
5016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setWaveletDenoise(const char *wnrStr);
5026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t setFaceRecognition(const char *faceRecog, int maxFaces);
5036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t parse_pair(const char *str, int *first, int *second,
5056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                       char delim, char **endptr);
5066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void parseSizesList(const char *sizesStr, Vector<Size> &sizes);
5076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t parseNDimVector(const char *str, int *num, int N, char delim);
5086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t parseCameraAreaString(const char *str, int max_num_areas,
5096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                  cam_area_t *pAreas, int& num_areas_found);
5106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool validateCameraAreas(cam_area_t *areas, int num_areas);
5116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int parseGPSCoordinate(const char *coord_str, rat_t *coord);
5126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t getRational(rat_t *rat, int num, int denom);
5136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    String8 createSizesString(const cam_dimension_t *sizes, int len);
5146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    String8 createValuesString(const int *values, int len,
5156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                               const QCameraMap *map, int map_len);
5166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    String8 createValuesStringFromMap(const QCameraMap *map,
5176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                      int map_len);
5186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    String8 createHfrValuesString(const cam_hfr_info_t *values, int len,
5196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                  const QCameraMap *map, int map_len);
5206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    String8 createHfrSizesString(const cam_hfr_info_t *values, int len);
5216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    String8 createFpsRangeString(const cam_fps_range_t *fps,
5226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                 int len,
5236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                 int &default_fps_index);
524744f5403bebb0e27140d16a5df7a341713c24a13Nagesh Subba Reddy    static int compareFPSValues(const void *p1, const void *p2);
5256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    String8 createFpsString(const cam_fps_range_t *fps, int len);
5266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    String8 createZoomRatioValuesString(int *zoomRatios, int length);
5276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int lookupAttr(const QCameraMap arr[], int len, const char *name);
5286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    const char *lookupNameByValue(const QCameraMap arr[], int len, int value);
5296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // ops for batch set/get params with server
5316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t initBatchUpdate(parm_buffer_t *p_table);
5326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t AddSetParmEntryToBatch(parm_buffer_t *p_table,
5336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                   cam_intf_parm_type_t paramType,
5346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                   uint32_t paramLength,
5356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                   void *paramValue);
5366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t commitSetBatch();
5376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t AddGetParmEntryToBatch(parm_buffer_t *p_table,
5386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                                   cam_intf_parm_type_t paramType);
5396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t commitGetBatch();
5406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // ops to tempororily update parameter entries and commit
5426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t updateParamEntry(const char *key, const char *value);
5436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t commitParamChanges();
5446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    // Map from strings to values
5466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const cam_dimension_t THUMBNAIL_SIZES_MAP[];
5476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap AUTO_EXPOSURE_MAP[];
5486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap PREVIEW_FORMATS_MAP[];
5496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap PICTURE_TYPES_MAP[];
5506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap RAW_FORMATS_MAP[];
5516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap FOCUS_MODES_MAP[];
5526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap EFFECT_MODES_MAP[];
5536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap SCENE_MODES_MAP[];
5546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap FLASH_MODES_MAP[];
5556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap FOCUS_ALGO_MAP[];
5566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap WHITE_BALANCE_MODES_MAP[];
5576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap ANTIBANDING_MODES_MAP[];
5586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap ISO_MODES_MAP[];
5596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap HFR_MODES_MAP[];
5606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap BRACKETING_MODES_MAP[];
5616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap ON_OFF_MODES_MAP[];
5626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap ENABLE_DISABLE_MODES_MAP[];
5636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap DENOISE_ON_OFF_MODES_MAP[];
5646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap TRUE_FALSE_MODES_MAP[];
5656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap TOUCH_AF_AEC_MODES_MAP[];
5666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static const QCameraMap FLIP_MODES_MAP[];
5676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    cam_capability_t *m_pCapability;
5696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    mm_camera_vtbl_t *m_pCamOpsTbl;
5706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCameraHeapMemory *m_pParamHeap;
5716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    parm_buffer_t     *m_pParamBuf;  // ptr to param buf in m_pParamHeap
5726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bZslMode;                // if ZSL is enabled
574744f5403bebb0e27140d16a5df7a341713c24a13Nagesh Subba Reddy    bool m_bZslMode_new;
5756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bRecordingHint;          // local copy of recording hint
576744f5403bebb0e27140d16a5df7a341713c24a13Nagesh Subba Reddy    bool m_bRecordingHint_new;
5776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bHistogramEnabled;       // if histogram is enabled
5786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int  m_nFaceProcMask;           // face process mask
5796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bDebugFps;               // if FPS need to be logged
5806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    cam_focus_mode_type mFocusMode;
5816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    cam_format_t mPreviewFormat;
5826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int32_t mPictureFormat;         // could be CAMERA_PICTURE_TYPE_JPEG or cam_format_t
5836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bNeedRestart;            // if preview needs restart after parameters updated
5846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bNoDisplayMode;
5856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bWNROn;
5866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bNeedLockCAF;
5876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bCAFLocked;
5886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    bool m_bAFRunning;
5896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    qcamera_thermal_mode m_ThermalMode; // adjust fps vs adjust frameskip
5906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    cam_dimension_t m_LiveSnapshotSize; // live snapshot size
5916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    DefaultKeyedVector<String8,String8> m_tempMap; // map for temororily store parameters to be set
5936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev};
5946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev}; // namespace qcamera
5966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
5976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#endif
598