• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  
37  namespace qcamera {
38  
39  #define TANGO_SECTION_OFFSET  0x4000
40  
41  enum 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  
77  enum 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  
107  enum 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
483  typedef 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
489  typedef 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
495  typedef 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
502  typedef 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
509  typedef enum qcamera3_histogram_mode {
510      QCAMERA3_HISTOGRAM_MODE_OFF,
511      QCAMERA3_HISTOGRAM_MODE_ON
512  } histogram_mode;
513  
514  // QCAMERA3_BINNING_CORRECTION_MODE
515  typedef 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
521  typedef 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
532  typedef 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  
543  typedef 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
558  typedef 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  
564  typedef 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  
568  class QCamera3VendorTags {
569  
570  public:
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