1/* Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
2*
3* Redistribution and use in source and binary forms, with or without
4* modification, are permitted provided that the following conditions are
5* met:
6*     * Redistributions of source code must retain the above copyright
7*       notice, this list of conditions and the following disclaimer.
8*     * Redistributions in binary form must reproduce the above
9*       copyright notice, this list of conditions and the following
10*       disclaimer in the documentation and/or other materials provided
11*       with the distribution.
12*     * Neither the name of The Linux Foundation nor the names of its
13*       contributors may be used to endorse or promote products derived
14*       from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27*
28*/
29
30#ifndef __QCAMERA3VENDORTAGS_H__
31#define __QCAMERA3VENDORTAGS_H__
32
33// Camera dependencies
34#include "system/camera_metadata.h"
35#include "system/camera_vendor_tags.h"
36
37namespace qcamera {
38
39#define TANGO_SECTION_OFFSET  0x4000
40
41enum qcamera3_ext_section {
42    QCAMERA3_PRIVATEDATA = VENDOR_SECTION,
43    QCAMERA3_CDS,
44    QCAMERA3_OPAQUE_RAW,
45    QCAMERA3_CROP,
46    QCAMERA3_TUNING_META_DATA,
47    QCAMERA3_TEMPORAL_DENOISE,
48    QCAMERA3_ISO_EXP_PRIORITY,
49    QCAMERA3_SATURATION,
50    QCAMERA3_EXPOSURE_METERING_MODE,
51    QCAMERA3_AV_TIMER,
52    QCAMERA3_SENSOR_META_DATA,
53    QCAMERA3_DUALCAM_LINK_META_DATA,
54    QCAMERA3_DUALCAM_CALIB_META_DATA,
55    QCAMERA3_HAL_PRIVATEDATA,
56    QCAMERA3_JPEG_ENCODE_CROP,
57    QCAMERA3_VIDEO_HDR,
58    QCAMERA3_IR,
59    QCAMERA3_AEC_CONVERGENCE,
60    QCAMERA3_AWB_CONVERGENCE,
61    QCAMERA3_INSTANT_AEC,
62    NEXUS_EXPERIMENTAL_2016,
63    QCAMERA3_SHARPNESS_DATA,
64    QCAMERA3_HISTOGRAM,
65    QCAMERA3_BINNING_CORRECTION,
66    QCAMERA3_STATS,
67    NEXUS_EXPERIMENTAL_2017,
68    QCAMERA3_SECTIONS_END,
69
70    //This value is hardcoded in NDK clients and hence enum value is
71    //assigned to ensure this value does not go off sync
72    TANGO_SECTIONS_START = VENDOR_SECTION + TANGO_SECTION_OFFSET,
73    TANGO_MODE_DATA = TANGO_SECTIONS_START,
74    TANGO_SECTIONS_END
75};
76
77enum qcamera3_ext_section_ranges {
78    QCAMERA3_PRIVATEDATA_START = QCAMERA3_PRIVATEDATA << 16,
79    QCAMERA3_CDS_START = QCAMERA3_CDS << 16,
80    QCAMERA3_OPAQUE_RAW_START = QCAMERA3_OPAQUE_RAW << 16,
81    QCAMERA3_CROP_START = QCAMERA3_CROP << 16,
82    QCAMERA3_TUNING_META_DATA_START = QCAMERA3_TUNING_META_DATA << 16,
83    QCAMERA3_TEMPORAL_DENOISE_START = QCAMERA3_TEMPORAL_DENOISE << 16,
84    QCAMERA3_ISO_EXP_PRIORITY_START = QCAMERA3_ISO_EXP_PRIORITY << 16,
85    QCAMERA3_SATURATION_START = QCAMERA3_SATURATION << 16,
86    QCAMERA3_EXPOSURE_METER_START = QCAMERA3_EXPOSURE_METERING_MODE << 16,
87    QCAMERA3_AV_TIMER_START = QCAMERA3_AV_TIMER << 16,
88    QCAMERA3_SENSOR_META_DATA_START = QCAMERA3_SENSOR_META_DATA << 16,
89    QCAMERA3_DUALCAM_LINK_META_DATA_START = QCAMERA3_DUALCAM_LINK_META_DATA << 16,
90    QCAMERA3_DUALCAM_CALIB_META_DATA_START = QCAMERA3_DUALCAM_CALIB_META_DATA << 16,
91    QCAMERA3_HAL_PRIVATEDATA_START = QCAMERA3_HAL_PRIVATEDATA << 16,
92    QCAMERA3_JPEG_ENCODE_CROP_START = QCAMERA3_JPEG_ENCODE_CROP << 16,
93    QCAMERA3_VIDEO_HDR_START = QCAMERA3_VIDEO_HDR << 16,
94    QCAMERA3_IR_START = QCAMERA3_IR << 16,
95    QCAMERA3_AEC_CONVERGENCE_SPEED_START = QCAMERA3_AEC_CONVERGENCE << 16,
96    QCAMERA3_AWB_CONVERGENCE_SPEED_START = QCAMERA3_AWB_CONVERGENCE << 16,
97    QCAMERA3_INSTANT_AEC_START = QCAMERA3_INSTANT_AEC << 16,
98    NEXUS_EXPERIMENTAL_2016_START = NEXUS_EXPERIMENTAL_2016 <<16,
99    QCAMERA3_SHARPNESS_START = QCAMERA3_SHARPNESS_DATA << 16,
100    QCAMERA3_HISTOGRAM_START = QCAMERA3_HISTOGRAM << 16,
101    QCAMERA3_BINNING_CORRECTION_START = QCAMERA3_BINNING_CORRECTION << 16,
102    QCAMERA3_STATS_START = QCAMERA3_STATS << 16,
103    NEXUS_EXPERIMENTAL_2017_START = NEXUS_EXPERIMENTAL_2017 << 16,
104    TANGO_MODE_DATA_START = TANGO_MODE_DATA << 16,
105};
106
107enum qcamera3_ext_tags {
108    QCAMERA3_PRIVATEDATA_REPROCESS = QCAMERA3_PRIVATEDATA_START,
109    QCAMERA3_PRIVATEDATA_END,
110    QCAMERA3_CDS_MODE = QCAMERA3_CDS_START,
111    QCAMERA3_CDS_INFO,
112    QCAMERA3_CDS_END,
113
114    //Property Name:  org.codeaurora.qcamera3.opaque_raw.opaque_raw_strides
115    //
116    //Type: int32 * n * 3 [public]
117    //
118    //Description: Distance in bytes from the beginning of one row of opaque
119    //raw image data to the beginning of next row.
120    //
121    //Details: The strides are listed as (raw_width, raw_height, stride)
122    //triplets. For each supported raw size, there will be a stride associated
123    //with it.
124    QCAMERA3_OPAQUE_RAW_STRIDES = QCAMERA3_OPAQUE_RAW_START,
125
126    //Property Name: org.codeaurora.qcamera3.opaque_raw.opaque_raw_format
127    //
128    //Type: byte(enum) [public]
129    //  * LEGACY - The legacy raw format where 8, 10, or 12-bit
130    //    raw data is packed into a 64-bit word.
131    //  * MIPI - raw format matching the data packing described
132    //    in MIPI CSI-2 specification. In memory, the data
133    //    is constructed by packing sequentially received pixels
134    //    into least significant parts of the words first.
135    //    Within each pixel, the least significant bits are also
136    //    placed towards the least significant part of the word.
137    //
138    //Details: Lay out of opaque raw data in memory is decided by two factors:
139    //         opaque_raw_format and bit depth (implied by whiteLevel). Below
140    //         list illustrates their relationship:
141    //  LEGACY8:  P7(7:0) P6(7:0) P5(7:0) P4(7:0) P3(7:0) P2(7:0) P1(7:0) P0(7:0)
142    //            8 pixels occupy 8 bytes, no padding needed
143    //            min_stride = CEILING8(raw_width)
144    // LEGACY10:  0000 P5(9:0) P4(9:0) P3(9:0) P2(9:0) P1(9:0) P0(9:0)
145    //            6 pixels occupy 8 bytes, 4 bits padding at MSB
146    //            min_stride = (raw_width+5)/6 * 8
147    // LEGACY12:  0000 P4(11:0) P3(11:0) P2(11:0) P1(11:0) P0(11:0)
148    //            5 pixels occupy 8 bytes, 4 bits padding at MSB
149    //            min_stride = (raw_width+4)/5 * 8
150    //    MIPI8:  P0(7:0)
151    //            1 pixel occupy 1 byte
152    //            min_stride = raw_width
153    //   MIPI10:  P3(1:0) P2(1:0) P1(1:0) P0(1:0) P3(9:2) P2(9:2) P1(9:2) P0(9:2)
154    //            4 pixels occupy 5 bytes
155    //            min_stride = (raw_width+3)/4 * 5
156    //   MIPI12:  P1(3:0) P0(3:0) P1(11:4) P0(11:4)
157    //            2 pixels occupy 3 bytes
158    //            min_stride = (raw_width+1)/2 * 3
159    //Note that opaque_raw_stride needs to be at least the required minimum
160    //stride from the table above. ISP hardware may need more generous stride
161    //setting. For example, for LEGACY8, the actual stride may be
162    //CEILING16(raw_width) due to bus burst length requirement.
163    QCAMERA3_OPAQUE_RAW_FORMAT,
164    QCAMERA3_OPAQUE_RAW_END,
165
166    QCAMERA3_CROP_COUNT_REPROCESS = QCAMERA3_CROP_START,
167    QCAMERA3_CROP_REPROCESS,
168    QCAMERA3_CROP_ROI_MAP_REPROCESS,
169    QCAMERA3_CROP_END,
170
171    QCAMERA3_TUNING_META_DATA_BLOB = QCAMERA3_TUNING_META_DATA_START,
172    QCAMERA3_TUNING_META_DATA_END,
173
174    QCAMERA3_TEMPORAL_DENOISE_ENABLE = QCAMERA3_TEMPORAL_DENOISE_START,
175    QCAMERA3_TEMPORAL_DENOISE_PROCESS_TYPE,
176    QCAMERA3_TEMPORAL_DENOISE_END,
177
178    QCAMERA3_USE_ISO_EXP_PRIORITY = QCAMERA3_ISO_EXP_PRIORITY_START,
179    QCAMERA3_SELECT_PRIORITY,
180    /* Property Name:  org.codeaurora.qcamera3.iso_exp_priority.iso_available_modes
181       Type: int32[8]
182       Description: Available iso mode values
183       iso_available_modes[0] = 0 (auto)
184       iso_available_modes[1] = 1 (deblur)
185       iso_available_modes[2] = 2 (100)
186       iso_available_modes[3] = 3 (200)
187       iso_available_modes[4] = 4 (400)
188       iso_available_modes[5] = 5 (800)
189       iso_available_modes[6] = 6 (1600)
190       iso_available_modes[7] = 7 (3200)
191    */
192    QCAMERA3_ISO_AVAILABLE_MODES,
193    /* Property Name:  org.codeaurora.qcamera3.iso_exp_priority.exposure_time_range
194       Type: int64[2]
195       Description: Min/max exposure time values (ns)
196       exposure_time_range[0] = min
197       exposure_time_range[1] = max
198    */
199    QCAMERA3_EXP_TIME_RANGE,
200    QCAMERA3_ISO_EXP_PRIORITY_END,
201
202    QCAMERA3_USE_SATURATION = QCAMERA3_SATURATION_START,
203    /* Property Name:  org.codeaurora.qcamera3.saturation.range
204       Type: int32[4]
205       Description: Range of possible saturation values
206       range[0] = min
207       range[1] = max
208       range[2] = default
209       range[3] = step
210    */
211    QCAMERA3_SATURATION_RANGE,
212    QCAMERA3_SATURATION_END,
213
214    QCAMERA3_EXPOSURE_METER = QCAMERA3_EXPOSURE_METER_START,
215    /* Property Name:  org.codeaurora.qcamera3.exposure_metering.available_modes
216       Type: int32[7]
217       Description: Available exposure metering mode values
218       available_modes[0] = 0 (FRAME_AVERAGE)
219       available_modes[1] = 1 (CENTER_WEIGHTED)
220       available_modes[2] = 2 (SPOT_METERING)
221       available_modes[3] = 3 (SMART_METERING)
222       available_modes[4] = 4 (USER_METERING)
223       available_modes[5] = 5 (SPOT_METERING_ADV)
224       available_modes[6] = 6 (CENTER_WEIGHTED_ADV)
225    */
226    QCAMERA3_EXPOSURE_METER_AVAILABLE_MODES,
227    QCAMERA3_EXPOSURE_METER_END,
228
229    QCAMERA3_USE_AV_TIMER = QCAMERA3_AV_TIMER_START,
230    QCAMERA3_AV_TIMER_END,
231
232    QCAMERA3_SENSOR_DYNAMIC_BLACK_LEVEL_PATTERN = QCAMERA3_SENSOR_META_DATA_START,
233    QCAMERA3_SENSOR_IS_MONO_ONLY,
234    QCAMERA3_SENSOR_META_DATA_END,
235
236    QCAMERA3_DUALCAM_LINK_ENABLE = QCAMERA3_DUALCAM_LINK_META_DATA_START,
237    QCAMERA3_DUALCAM_LINK_IS_MAIN,
238    QCAMERA3_DUALCAM_LINK_RELATED_CAMERA_ID,
239    QCAMERA3_DUALCAM_LINK_META_DATA_END,
240
241    QCAMERA3_DUALCAM_CALIB_META_DATA_BLOB = QCAMERA3_DUALCAM_CALIB_META_DATA_START,
242    QCAMERA3_DUALCAM_CALIB_META_DATA_END,
243
244    QCAMERA3_HAL_PRIVATEDATA_REPROCESS_FLAGS = QCAMERA3_HAL_PRIVATEDATA_START,
245    QCAMERA3_HAL_PRIVATEDATA_REPROCESS_DATA_BLOB,
246    QCAMERA3_HAL_PRIVATEDATA_EXIF_DEBUG_DATA_BLOB,
247
248    QCAMERA3_HAL_PRIVATEDATA_END,
249
250    /* Property Name:  org.codeaurora.qcamera3.jpeg_encode_crop.enable
251       Type: byte
252       Description: If JPEG crop is enable
253    */
254    QCAMERA3_JPEG_ENCODE_CROP_ENABLE = QCAMERA3_JPEG_ENCODE_CROP_START,
255    /* Property Name:  org.codeaurora.qcamera3.jpeg_encode_crop.rect
256       Type: int32[4]
257       Description: Crop image into size width x height
258                    from [left, top] coordinate
259       rect[0] = left
260       rect[1] = top
261       rect[2] = width
262       rect[3] = height
263    */
264    QCAMERA3_JPEG_ENCODE_CROP_RECT,
265    /* Property Name:  org.codeaurora.qcamera3.jpeg_encode_crop.roi
266       Type: int32[4]
267       Description: Scale the crop image into size width x height
268                    from [left, top] coordinate.
269       roi[0] = left
270       roi[1] = top
271       roi[2] = width
272       roi[3] = height
273    */
274    QCAMERA3_JPEG_ENCODE_CROP_ROI,
275    QCAMERA3_JPEG_ENCODE_CROP_END,
276
277    QCAMERA3_VIDEO_HDR_MODE = QCAMERA3_VIDEO_HDR_START,
278    QCAMERA3_AVAILABLE_VIDEO_HDR_MODES,
279    QCAMERA3_VIDEO_HDR_END,
280
281    QCAMERA3_IR_MODE = QCAMERA3_IR_START,
282    QCAMERA3_IR_AVAILABLE_MODES,
283    QCAMERA3_IR_END,
284
285    QCAMERA3_AEC_CONVERGENCE_SPEED = QCAMERA3_AEC_CONVERGENCE_SPEED_START,
286    QCAMERA3_AEC_CONVERGENCE_SPEED_END,
287
288    QCAMERA3_AWB_CONVERGENCE_SPEED = QCAMERA3_AWB_CONVERGENCE_SPEED_START,
289    QCAMERA3_AWB_CONVERGENCE_SPEED_END,
290
291    QCAMERA3_INSTANT_AEC_MODE = QCAMERA3_INSTANT_AEC_START,
292    QCAMERA3_INSTANT_AEC_AVAILABLE_MODES,
293    QCAMERA3_INSTANT_AEC_END,
294
295    NEXUS_EXPERIMENTAL_2016_HYBRID_AE_ENABLE = NEXUS_EXPERIMENTAL_2016_START,
296    NEXUS_EXPERIMENTAL_2016_AF_SCENE_CHANGE,
297    // DEVCAMDEBUG
298    DEVCAMDEBUG_META_ENABLE,
299    // DEVCAMDEBUG AF
300    DEVCAMDEBUG_AF_LENS_POSITION,
301    DEVCAMDEBUG_AF_TOF_CONFIDENCE,
302    DEVCAMDEBUG_AF_TOF_DISTANCE,
303    DEVCAMDEBUG_AF_LUMA,
304    DEVCAMDEBUG_AF_HAF_STATE,
305    DEVCAMDEBUG_AF_MONITOR_PDAF_TARGET_POS,
306    DEVCAMDEBUG_AF_MONITOR_PDAF_CONFIDENCE,
307    DEVCAMDEBUG_AF_MONITOR_PDAF_REFOCUS,
308    DEVCAMDEBUG_AF_MONITOR_TOF_TARGET_POS,
309    DEVCAMDEBUG_AF_MONITOR_TOF_CONFIDENCE,
310    DEVCAMDEBUG_AF_MONITOR_TOF_REFOCUS,
311    DEVCAMDEBUG_AF_MONITOR_TYPE_SELECT,
312    DEVCAMDEBUG_AF_MONITOR_REFOCUS,
313    DEVCAMDEBUG_AF_MONITOR_TARGET_POS,
314    DEVCAMDEBUG_AF_SEARCH_PDAF_TARGET_POS,
315    DEVCAMDEBUG_AF_SEARCH_PDAF_NEXT_POS,
316    DEVCAMDEBUG_AF_SEARCH_PDAF_NEAR_POS,
317    DEVCAMDEBUG_AF_SEARCH_PDAF_FAR_POS,
318    DEVCAMDEBUG_AF_SEARCH_PDAF_CONFIDENCE,
319    DEVCAMDEBUG_AF_SEARCH_TOF_TARGET_POS,
320    DEVCAMDEBUG_AF_SEARCH_TOF_NEXT_POS,
321    DEVCAMDEBUG_AF_SEARCH_TOF_NEAR_POS,
322    DEVCAMDEBUG_AF_SEARCH_TOF_FAR_POS,
323    DEVCAMDEBUG_AF_SEARCH_TOF_CONFIDENCE,
324    DEVCAMDEBUG_AF_SEARCH_TYPE_SELECT,
325    DEVCAMDEBUG_AF_SEARCH_NEXT_POS,
326    DEVCAMDEBUG_AF_SEARCH_TARGET_POS,
327    // DEVCAMDEBUG AEC
328    DEVCAMDEBUG_AEC_TARGET_LUMA,
329    DEVCAMDEBUG_AEC_COMP_LUMA,
330    DEVCAMDEBUG_AEC_AVG_LUMA,
331    DEVCAMDEBUG_AEC_CUR_LUMA,
332    DEVCAMDEBUG_AEC_LINECOUNT,
333    DEVCAMDEBUG_AEC_REAL_GAIN,
334    DEVCAMDEBUG_AEC_EXP_INDEX,
335    DEVCAMDEBUG_AEC_LUX_IDX,
336    // DEVCAMDEBUG zzHDR
337    DEVCAMDEBUG_AEC_L_REAL_GAIN,
338    DEVCAMDEBUG_AEC_L_LINECOUNT,
339    DEVCAMDEBUG_AEC_S_REAL_GAIN,
340    DEVCAMDEBUG_AEC_S_LINECOUNT,
341    DEVCAMDEBUG_AEC_HDR_SENSITIVITY_RATIO,
342    DEVCAMDEBUG_AEC_HDR_EXP_TIME_RATIO,
343    // DEVCAMDEBUG ADRC
344    DEVCAMDEBUG_AEC_TOTAL_DRC_GAIN,
345    DEVCAMDEBUG_AEC_COLOR_DRC_GAIN,
346    DEVCAMDEBUG_AEC_GTM_RATIO,
347    DEVCAMDEBUG_AEC_LTM_RATIO,
348    DEVCAMDEBUG_AEC_LA_RATIO,
349    DEVCAMDEBUG_AEC_GAMMA_RATIO,
350    // DEVCAMDEBUG AEC MOTION
351    DEVCAMDEBUG_AEC_CAMERA_MOTION_DX,
352    DEVCAMDEBUG_AEC_CAMERA_MOTION_DY,
353    DEVCAMDEBUG_AEC_SUBJECT_MOTION,
354    // DEVCAMDEBUG AWB
355    DEVCAMDEBUG_AWB_R_GAIN,
356    DEVCAMDEBUG_AWB_G_GAIN,
357    DEVCAMDEBUG_AWB_B_GAIN,
358    DEVCAMDEBUG_AWB_CCT,
359    DEVCAMDEBUG_AWB_DECISION,
360    // DEVCAMDEBUG END
361    NEXUS_EXPERIMENTAL_2016_END,
362
363    QCAMERA3_SHARPNESS_STRENGTH = QCAMERA3_SHARPNESS_START,
364    QCAMERA3_SHARPNESS_RANGE,
365    QCAMERA3_SHARPNESS_END,
366
367    QCAMERA3_HISTOGRAM_MODE = QCAMERA3_HISTOGRAM_START,
368    QCAMERA3_HISTOGRAM_BUCKETS,
369    QCAMERA3_HISTOGRAM_MAX_COUNT,
370    QCAMERA3_HISTOGRAM_STATS,
371    QCAMERA3_HISTOGRAM_END,
372
373    QCAMERA3_BINNING_CORRECTION_MODE = QCAMERA3_BINNING_CORRECTION_START,
374    QCAMERA3_AVAILABLE_BINNING_CORRECTION_MODES,
375    QCAMERA3_BINNING_CORRECTION_END,
376
377    QCAMERA3_STATS_IS_HDR_SCENE = QCAMERA3_STATS_START,
378    /* Property Name:  org.codeaurora.qcamera3.stats.is_hdr_scene_values
379       Type: byte[2]
380       Description: Possible values for is_hdr_scene
381       roi[0] = 0 (false)
382       roi[1] = 1 (true)
383    */
384    QCAMERA3_STATS_IS_HDR_SCENE_VALUES,
385    QCAMERA3_STATS_IS_HDR_SCENE_CONFIDENCE,
386    /* Property Name:  org.codeaurora.qcamera3.stats.is_hdr_scene_confidence_range
387       Type: float[2]
388       Description: Range of values for is_hdr_scene_confidence
389       roi[0] = 0.0 (min)
390       roi[1] = 1.0 (max)
391    */
392    QCAMERA3_STATS_IS_HDR_SCENE_CONFIDENCE_RANGE,
393    QCAMERA3_STATS_BSGC_AVAILABLE,
394    QCAMERA3_STATS_BLINK_DETECTED,
395    /* Property Name:  org.codeaurora.qcamera3.stats.blink_degree
396       Type: int8[2]
397       Description: Blink degree
398       blink_degree[0] = left
399       blink_degree[1] = right
400    */
401    QCAMERA3_STATS_BLINK_DEGREE,
402    QCAMERA3_STATS_SMILE_DEGREE,
403    QCAMERA3_STATS_SMILE_CONFIDENCE,
404    QCAMERA3_STATS_GAZE_ANGLE,
405    /* Property Name:  org.codeaurora.qcamera3.stats.gaze_direction
406       Type: int32[3]
407       Description: Gaze direction
408       gaze_direction[0] = up-down
409       gaze_direction[1] = left-right
410       gaze_direction[2] = roll
411    */
412    QCAMERA3_STATS_GAZE_DIRECTION,
413    /* Property Name:  org.codeaurora.qcamera3.stats.gaze_degree
414       Type: int8[2]
415       Description: Gaze degree
416       gaze_degree[0] = left-right
417       gaze_degree[1] = top-bottom
418    */
419    QCAMERA3_STATS_GAZE_DEGREE,
420    QCAMERA3_STATS_END,
421
422    /* Histogram */
423    NEXUS_EXPERIMENTAL_2017_HISTOGRAM_ENABLE = NEXUS_EXPERIMENTAL_2017_START,
424    NEXUS_EXPERIMENTAL_2017_HISTOGRAM_SUPPORTED_BINS,
425    NEXUS_EXPERIMENTAL_2017_HISTOGRAM_BINS,
426    NEXUS_EXPERIMENTAL_2017_HISTOGRAM,
427
428    /* EEPROM Version Information */
429    NEXUS_EXPERIMENTAL_2017_EEPROM_VERSION_INFO,
430
431    /* EEPROM PDAF calibration data */
432    NEXUS_EXPERIMENTAL_2017_EEPROM_PDAF_CALIB_RIGHT_GAINS,
433    NEXUS_EXPERIMENTAL_2017_EEPROM_PDAF_CALIB_LEFT_GAINS,
434    NEXUS_EXPERIMENTAL_2017_EEPROM_PDAF_CALIB_CONV_COEFF,
435
436    /* EEPROM WB calibration data */
437    NEXUS_EXPERIMENTAL_2017_EEPROM_WB_CALIB_NUM_LIGHTS,
438    NEXUS_EXPERIMENTAL_2017_EEPROM_WB_CALIB_R_OVER_G_RATIOS,
439    NEXUS_EXPERIMENTAL_2017_EEPROM_WB_CALIB_B_OVER_G_RATIOS,
440    NEXUS_EXPERIMENTAL_2017_EEPROM_WB_CALIB_GR_OVER_GB_RATIO,
441
442    /* Tracking AF */
443    NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER,
444    NEXUS_EXPERIMENTAL_2017_AF_REGIONS_CONFIDENCE,
445    /* OIS data */
446    NEXUS_EXPERIMENTAL_2017_OIS_FRAME_TIMESTAMP_VSYNC,
447    NEXUS_EXPERIMENTAL_2017_OIS_FRAME_TIMESTAMP_BOOTTIME,
448    NEXUS_EXPERIMENTAL_2017_OIS_TIMESTAMPS_BOOTTIME,
449    NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_X,
450    NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_Y,
451    NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_PIXEL_X,
452    NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_PIXEL_Y,
453    /* PD plumbing */
454    NEXUS_EXPERIMENTAL_2017_PD_DATA_DIMENSIONS,
455    NEXUS_EXPERIMENTAL_2017_PD_DATA_ENABLE,
456    /* Exposure time boost */
457    NEXUS_EXPERIMENTAL_2017_EXP_TIME_BOOST,
458    /* EASEL HDR+ */
459    NEXUS_EXPERIMENTAL_2017_EXIF_MAKERNOTE,
460    NEXUS_EXPERIMENTAL_2017_NEXT_STILL_INTENT_REQUEST_READY,
461    NEXUS_EXPERIMENTAL_2017_POSTVIEW,
462    NEXUS_EXPERIMENTAL_2017_POSTVIEW_CONFIG,
463    NEXUS_EXPERIMENTAL_2017_POSTVIEW_DATA,
464    NEXUS_EXPERIMENTAL_2017_CONTINUOUS_ZSL_CAPTURE,
465    NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS,
466    NEXUS_EXPERIMENTAL_2017_SCENE_DISTANCE,
467
468    /* Motion detection */
469    NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE,
470    NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_X,
471    NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_Y,
472    NEXUS_EXPERIMENTAL_2017_SUBJECT_MOTION,
473
474    NEXUS_EXPERIMENTAL_2017_END,
475
476    /* Select sensor mode for tango */
477    TANGO_MODE_DATA_MODE = TANGO_MODE_DATA_START, //Unused. Reserved for backward compatibility
478    TANGO_MODE_DATA_SENSOR_FULLFOV,
479    TANGO_MODE_DATA_END,
480};
481
482// QCAMERA3_OPAQUE_RAW_FORMAT
483typedef enum qcamera3_ext_opaque_raw_format {
484    QCAMERA3_OPAQUE_RAW_FORMAT_LEGACY,
485    QCAMERA3_OPAQUE_RAW_FORMAT_MIPI
486} qcamera3_ext_opaque_raw_format_t;
487
488// QCAMERA3_VIDEO_HDR_MODE
489typedef enum camera_metadata_enum_android_video_hdr_mode {
490    QCAMERA3_VIDEO_HDR_MODE_OFF,
491    QCAMERA3_VIDEO_HDR_MODE_ON
492} camera_metadata_enum_android_video_hdr_mode_t;
493
494// QCAMERA3_IR_MODE
495typedef enum camera_metadata_enum_android_ir_mode {
496    QCAMERA3_IR_MODE_OFF,
497    QCAMERA3_IR_MODE_ON,
498    QCAMERA3_IR_MODE_AUTO
499} camera_metadata_enum_android_ir_mode_t;
500
501// QCAMERA3_INSTANCE_AEC_MODE
502typedef enum qcamera3_ext_instant_aec_mode {
503    QCAMERA3_INSTANT_AEC_NORMAL_CONVERGENCE,
504    QCAMERA3_INSTANT_AEC_AGGRESSIVE_CONVERGENCE,
505    QCAMERA3_INSTANT_AEC_FAST_CONVERGENCE
506} qcamera3_ext_instant_aec_mode_t;
507
508// QCAMERA3_HISTOGRAM_MODE
509typedef enum qcamera3_histogram_mode {
510    QCAMERA3_HISTOGRAM_MODE_OFF,
511    QCAMERA3_HISTOGRAM_MODE_ON
512} histogram_mode;
513
514// QCAMERA3_BINNING_CORRECTION_MODE
515typedef enum camera_metadata_enum_android_binning_correction_mode {
516    QCAMERA3_BINNING_CORRECTION_MODE_OFF,
517    QCAMERA3_BINNING_CORRECTION_MODE_ON
518} camera_metadata_enum_android_binning_correction_mode_t;
519
520// QCAMERA3_EXPOSURE_METER
521typedef enum qcamera3_ext_exposure_meter_mode {
522    QCAMERA3_EXP_METER_MODE_FRAME_AVERAGE,
523    QCAMERA3_EXP_METER_MODE_CENTER_WEIGHTED,
524    QCAMERA3_EXP_METER_MODE_SPOT_METERING,
525    QCAMERA3_EXP_METER_MODE_SMART_METERING,
526    QCAMERA3_EXP_METER_MODE_USER_METERING,
527    QCAMERA3_EXP_METER_MODE_SPOT_METERING_ADV,
528    QCAMERA3_EXP_METER_MODE_CENTER_WEIGHTED_ADV
529} qcamera3_ext_exposure_meter_mode_t;
530
531// QCAMERA3_ISO_EXP_PRIORITY
532typedef enum qcamera3_ext_iso_mode {
533    QCAMERA3_ISO_MODE_AUTO,
534    QCAMERA3_ISO_MODE_DEBLUR,
535    QCAMERA3_ISO_MODE_100,
536    QCAMERA3_ISO_MODE_200,
537    QCAMERA3_ISO_MODE_400,
538    QCAMERA3_ISO_MODE_800,
539    QCAMERA3_ISO_MODE_1600,
540    QCAMERA3_ISO_MODE_3200,
541} qcamera3_ext_iso_mode_t;
542
543typedef enum {
544    /* RAW only mode for devices that will simultaneously use more than two
545     * cameras. This is required because by default the HAL will start support
546     * stream along with RAW stream. This will allocate resources which
547     * otherwise can be used for another camera. Using this mode indicates HAL
548     * that the additional functionality provided by support stream is not
549     * needed.
550     * This mode has following limitations:
551     *    - Back end 3A, Face Detect or any additional functionality depending
552     *   on image/sensor statistics and YUV streams will be disabled.
553     */
554    QCAMERA3_VENDOR_STREAM_CONFIGURATION_RAW_ONLY_MODE = 0x8000,
555} QCamera3VendorStreamConfiguration;
556
557// NEXUS_EXPERIMENTAL_2017_TRACKING_AF
558typedef enum nexus_experimental_2017_tracking_af_trigger {
559    NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER_IDLE,
560    NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER_START,
561    NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER_STOP,
562} nexus_experimental_2017_tracking_af_trigger_t;
563
564typedef enum com_google_nexus_experimental_2016_control_ae_mode {
565    NEXUS_EXPERIMENTAL_2016_CONTROL_AE_MODE_EXTERNAL_FLASH = 5
566} com_google_nexus_experimental_2016_control_ae_mode_t;
567
568class QCamera3VendorTags {
569
570public:
571    static void get_vendor_tag_ops(vendor_tag_ops_t* ops);
572    static int get_tag_count(
573            const vendor_tag_ops_t *ops);
574    static void get_all_tags(
575            const vendor_tag_ops_t *ops,
576            uint32_t *tag_array);
577    static const char* get_section_name(
578            const vendor_tag_ops_t *ops,
579            uint32_t tag);
580    static const char* get_tag_name(
581            const vendor_tag_ops_t *ops,
582            uint32_t tag);
583    static int get_tag_type(
584            const vendor_tag_ops_t *ops,
585            uint32_t tag);
586
587    static const vendor_tag_ops_t *Ops;
588};
589
590}; // namespace qcamera
591
592#endif /* __QCAMERA3VENDORTAGS_H__ */
593