1/*
2**
3** Copyright 2008, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9**     http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17#ifndef ANDROID_HARDWARE_QCAMERA_PARAMETERS_H
18#define ANDROID_HARDWARE_QCAMERA_PARAMETERS_H
19
20//#include <utils/KeyedVector.h>
21//#include <utils/String8.h>
22#include <camera/CameraParameters.h>
23
24namespace android {
25
26struct FPSRange{
27    int minFPS;
28    int maxFPS;
29    FPSRange(){
30        minFPS=0;
31        maxFPS=0;
32    };
33    FPSRange(int min,int max){
34        minFPS=min;
35        maxFPS=max;
36    };
37};
38class QCameraParameters: public CameraParameters
39{
40public:
41#if 1
42    QCameraParameters() : CameraParameters() {};
43    QCameraParameters(const String8 &params): CameraParameters(params) {};
44    #else
45    QCameraParameters() : CameraParameters() {};
46    QCameraParameters(const String8 &params) { unflatten(params); }
47#endif
48    ~QCameraParameters();
49
50    // Supported PREVIEW/RECORDING SIZES IN HIGH FRAME RATE recording, sizes in pixels.
51    // Example value: "800x480,432x320". Read only.
52    static const char KEY_SUPPORTED_HFR_SIZES[];
53    // The mode of preview frame rate.
54    // Example value: "frame-rate-auto, frame-rate-fixed".
55    static const char KEY_PREVIEW_FRAME_RATE_MODE[];
56    static const char KEY_SUPPORTED_PREVIEW_FRAME_RATE_MODES[];
57    static const char KEY_PREVIEW_FRAME_RATE_AUTO_MODE[];
58    static const char KEY_PREVIEW_FRAME_RATE_FIXED_MODE[];
59
60    static const char KEY_SKIN_TONE_ENHANCEMENT[] ;
61    static const char KEY_SUPPORTED_SKIN_TONE_ENHANCEMENT_MODES[] ;
62
63    //Touch Af/AEC settings.
64    static const char KEY_TOUCH_AF_AEC[];
65    static const char KEY_SUPPORTED_TOUCH_AF_AEC[];
66    //Touch Index for AEC.
67    static const char KEY_TOUCH_INDEX_AEC[];
68    //Touch Index for AF.
69    static const char KEY_TOUCH_INDEX_AF[];
70    // Current auto scene detection mode.
71    // Example value: "off" or SCENE_DETECT_XXX constants. Read/write.
72    static const char KEY_SCENE_DETECT[];
73    // Supported auto scene detection settings.
74    // Example value: "off,backlight,snow/cloudy". Read only.
75    static const char KEY_SUPPORTED_SCENE_DETECT[];
76	   // Returns true if video snapshot is supported. That is, applications
77    static const char KEY_FULL_VIDEO_SNAP_SUPPORTED[];
78    static const char KEY_POWER_MODE_SUPPORTED[];
79
80    static const char KEY_ISO_MODE[];
81    static const char KEY_SUPPORTED_ISO_MODES[];
82    static const char KEY_LENSSHADE[] ;
83    static const char KEY_SUPPORTED_LENSSHADE_MODES[] ;
84
85    static const char KEY_AUTO_EXPOSURE[];
86    static const char KEY_SUPPORTED_AUTO_EXPOSURE[];
87
88    static const char KEY_GPS_LATITUDE_REF[];
89    static const char KEY_GPS_LONGITUDE_REF[];
90    static const char KEY_GPS_ALTITUDE_REF[];
91    static const char KEY_GPS_STATUS[];
92    static const char KEY_EXIF_DATETIME[];
93    static const char KEY_MEMORY_COLOR_ENHANCEMENT[];
94    static const char KEY_SUPPORTED_MEM_COLOR_ENHANCE_MODES[];
95
96
97    static const char KEY_POWER_MODE[];
98
99    static const char KEY_ZSL[];
100    static const char KEY_SUPPORTED_ZSL_MODES[];
101
102    static const char KEY_CAMERA_MODE[];
103
104    static const char KEY_VIDEO_HIGH_FRAME_RATE[];
105    static const char KEY_SUPPORTED_VIDEO_HIGH_FRAME_RATE_MODES[];
106    static const char KEY_HIGH_DYNAMIC_RANGE_IMAGING[];
107    static const char KEY_SUPPORTED_HDR_IMAGING_MODES[];
108    static const char KEY_AE_BRACKET_HDR[];
109
110
111    // DENOISE
112    static const char KEY_DENOISE[];
113    static const char KEY_SUPPORTED_DENOISE[];
114
115    //Selectable zone AF.
116    static const char KEY_SELECTABLE_ZONE_AF[];
117    static const char KEY_SUPPORTED_SELECTABLE_ZONE_AF[];
118
119    //Face Detection
120    static const char KEY_FACE_DETECTION[];
121    static const char KEY_SUPPORTED_FACE_DETECTION[];
122
123    //Redeye Reduction
124    static const char KEY_REDEYE_REDUCTION[];
125    static const char KEY_SUPPORTED_REDEYE_REDUCTION[];
126    static const char EFFECT_EMBOSS[];
127    static const char EFFECT_SKETCH[];
128    static const char EFFECT_NEON[];
129
130    // Values for Touch AF/AEC
131    static const char TOUCH_AF_AEC_OFF[] ;
132    static const char TOUCH_AF_AEC_ON[] ;
133    static const char SCENE_MODE_ASD[];
134    static const char SCENE_MODE_BACKLIGHT[];
135    static const char SCENE_MODE_FLOWERS[];
136    static const char SCENE_MODE_AR[];
137    static const char SCENE_MODE_HDR[];
138	static const char SCENE_DETECT_OFF[];
139    static const char SCENE_DETECT_ON[];
140    static const char PIXEL_FORMAT_YUV420SP_ADRENO[]; // ADRENO
141	static const char PIXEL_FORMAT_RAW[];
142    static const char PIXEL_FORMAT_YV12[]; // NV12
143    static const char PIXEL_FORMAT_NV12[]; //NV12
144    // Normal focus mode. Applications should call
145    // CameraHardwareInterface.autoFocus to start the focus in this mode.
146    static const char FOCUS_MODE_NORMAL[];
147    static const char ISO_AUTO[];
148    static const char ISO_HJR[] ;
149    static const char ISO_100[];
150    static const char ISO_200[] ;
151    static const char ISO_400[];
152    static const char ISO_800[];
153    static const char ISO_1600[];
154    // Values for Lens Shading
155    static const char LENSSHADE_ENABLE[] ;
156    static const char LENSSHADE_DISABLE[] ;
157
158    // Values for auto exposure settings.
159    static const char AUTO_EXPOSURE_FRAME_AVG[];
160    static const char AUTO_EXPOSURE_CENTER_WEIGHTED[];
161    static const char AUTO_EXPOSURE_SPOT_METERING[];
162
163    static const char KEY_SHARPNESS[];
164    static const char KEY_MAX_SHARPNESS[];
165    static const char KEY_CONTRAST[];
166    static const char KEY_MAX_CONTRAST[];
167    static const char KEY_SATURATION[];
168    static const char KEY_MAX_SATURATION[];
169
170    static const char KEY_HISTOGRAM[] ;
171    static const char KEY_SUPPORTED_HISTOGRAM_MODES[] ;
172    // Values for HISTOGRAM
173    static const char HISTOGRAM_ENABLE[] ;
174    static const char HISTOGRAM_DISABLE[] ;
175
176    // Values for SKIN TONE ENHANCEMENT
177    static const char SKIN_TONE_ENHANCEMENT_ENABLE[] ;
178    static const char SKIN_TONE_ENHANCEMENT_DISABLE[] ;
179
180    // Values for Denoise
181    static const char DENOISE_OFF[] ;
182    static const char DENOISE_ON[] ;
183
184    // Values for auto exposure settings.
185    static const char SELECTABLE_ZONE_AF_AUTO[];
186    static const char SELECTABLE_ZONE_AF_SPOT_METERING[];
187    static const char SELECTABLE_ZONE_AF_CENTER_WEIGHTED[];
188    static const char SELECTABLE_ZONE_AF_FRAME_AVERAGE[];
189
190    // Values for Face Detection settings.
191    static const char FACE_DETECTION_OFF[];
192    static const char FACE_DETECTION_ON[];
193
194    // Values for MCE settings.
195    static const char MCE_ENABLE[];
196    static const char MCE_DISABLE[];
197
198    // Values for ZSL settings.
199    static const char ZSL_OFF[];
200    static const char ZSL_ON[];
201
202    // Values for HDR Bracketing settings.
203    static const char AE_BRACKET_HDR_OFF[];
204    static const char AE_BRACKET_HDR[];
205    static const char AE_BRACKET[];
206
207    // Values for Power mode settings.
208    static const char LOW_POWER[];
209    static const char NORMAL_POWER[];
210
211    // Values for HFR settings.
212    static const char VIDEO_HFR_OFF[];
213    static const char VIDEO_HFR_2X[];
214    static const char VIDEO_HFR_3X[];
215    static const char VIDEO_HFR_4X[];
216
217    // Values for Redeye Reduction settings.
218    static const char REDEYE_REDUCTION_ENABLE[];
219    static const char REDEYE_REDUCTION_DISABLE[];
220    // Values for HDR settings.
221    static const char HDR_ENABLE[];
222    static const char HDR_DISABLE[];
223
224   // Values for Redeye Reduction settings.
225   // static const char REDEYE_REDUCTION_ENABLE[];
226   // static const char REDEYE_REDUCTION_DISABLE[];
227   // Values for HDR settings.
228   //    static const char HDR_ENABLE[];
229   //    static const char HDR_DISABLE[];
230
231
232   static const char KEY_SINGLE_ISP_OUTPUT_ENABLED[];
233   static const char KEY_SUPPORTED_CAMERA_FEATURES[];
234   static const char KEY_MAX_NUM_REQUESTED_FACES[];
235
236    enum {
237        CAMERA_ORIENTATION_UNKNOWN = 0,
238        CAMERA_ORIENTATION_PORTRAIT = 1,
239        CAMERA_ORIENTATION_LANDSCAPE = 2,
240    };
241    int getOrientation() const;
242    void setOrientation(int orientation);
243    void getSupportedHfrSizes(Vector<Size> &sizes) const;
244    void setPreviewFpsRange(int minFPS,int maxFPS);
245	void setPreviewFrameRateMode(const char *mode);
246    const char *getPreviewFrameRateMode() const;
247    void setTouchIndexAec(int x, int y);
248    void getTouchIndexAec(int *x, int *y) const;
249    void setTouchIndexAf(int x, int y);
250    void getTouchIndexAf(int *x, int *y) const;
251    void getMeteringAreaCenter(int * x, int *y) const;
252
253};
254
255}; // namespace android
256
257#endif
258