Home | History | Annotate | Download | only in HAL3
      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