Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 /**
     18  * !! Do not reference this file directly !!
     19  *
     20  * It is logically a part of camera_metadata.c.  It is broken out for ease of
     21  * maintaining the tag info.
     22  *
     23  * Array assignments are done using specified-index syntax to keep things in
     24  * sync with camera_metadata_tags.h
     25  */
     26 
     27 /**
     28  * ! Do not edit this file directly !
     29  *
     30  * Generated automatically from camera_metadata_tag_info.mako
     31  */
     32 
     33 const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
     34     [ANDROID_COLOR_CORRECTION]     = "android.colorCorrection",
     35     [ANDROID_CONTROL]              = "android.control",
     36     [ANDROID_DEMOSAIC]             = "android.demosaic",
     37     [ANDROID_EDGE]                 = "android.edge",
     38     [ANDROID_FLASH]                = "android.flash",
     39     [ANDROID_FLASH_INFO]           = "android.flash.info",
     40     [ANDROID_GEOMETRIC]            = "android.geometric",
     41     [ANDROID_HOT_PIXEL]            = "android.hotPixel",
     42     [ANDROID_HOT_PIXEL_INFO]       = "android.hotPixel.info",
     43     [ANDROID_JPEG]                 = "android.jpeg",
     44     [ANDROID_LENS]                 = "android.lens",
     45     [ANDROID_LENS_INFO]            = "android.lens.info",
     46     [ANDROID_NOISE_REDUCTION]      = "android.noiseReduction",
     47     [ANDROID_QUIRKS]               = "android.quirks",
     48     [ANDROID_REQUEST]              = "android.request",
     49     [ANDROID_SCALER]               = "android.scaler",
     50     [ANDROID_SENSOR]               = "android.sensor",
     51     [ANDROID_SENSOR_INFO]          = "android.sensor.info",
     52     [ANDROID_SHADING]              = "android.shading",
     53     [ANDROID_STATISTICS]           = "android.statistics",
     54     [ANDROID_STATISTICS_INFO]      = "android.statistics.info",
     55     [ANDROID_TONEMAP]              = "android.tonemap",
     56     [ANDROID_LED]                  = "android.led",
     57     [ANDROID_INFO]                 = "android.info",
     58 };
     59 
     60 unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
     61     [ANDROID_COLOR_CORRECTION]     = { ANDROID_COLOR_CORRECTION_START,
     62                                        ANDROID_COLOR_CORRECTION_END },
     63     [ANDROID_CONTROL]              = { ANDROID_CONTROL_START,
     64                                        ANDROID_CONTROL_END },
     65     [ANDROID_DEMOSAIC]             = { ANDROID_DEMOSAIC_START,
     66                                        ANDROID_DEMOSAIC_END },
     67     [ANDROID_EDGE]                 = { ANDROID_EDGE_START,
     68                                        ANDROID_EDGE_END },
     69     [ANDROID_FLASH]                = { ANDROID_FLASH_START,
     70                                        ANDROID_FLASH_END },
     71     [ANDROID_FLASH_INFO]           = { ANDROID_FLASH_INFO_START,
     72                                        ANDROID_FLASH_INFO_END },
     73     [ANDROID_GEOMETRIC]            = { ANDROID_GEOMETRIC_START,
     74                                        ANDROID_GEOMETRIC_END },
     75     [ANDROID_HOT_PIXEL]            = { ANDROID_HOT_PIXEL_START,
     76                                        ANDROID_HOT_PIXEL_END },
     77     [ANDROID_HOT_PIXEL_INFO]       = { ANDROID_HOT_PIXEL_INFO_START,
     78                                        ANDROID_HOT_PIXEL_INFO_END },
     79     [ANDROID_JPEG]                 = { ANDROID_JPEG_START,
     80                                        ANDROID_JPEG_END },
     81     [ANDROID_LENS]                 = { ANDROID_LENS_START,
     82                                        ANDROID_LENS_END },
     83     [ANDROID_LENS_INFO]            = { ANDROID_LENS_INFO_START,
     84                                        ANDROID_LENS_INFO_END },
     85     [ANDROID_NOISE_REDUCTION]      = { ANDROID_NOISE_REDUCTION_START,
     86                                        ANDROID_NOISE_REDUCTION_END },
     87     [ANDROID_QUIRKS]               = { ANDROID_QUIRKS_START,
     88                                        ANDROID_QUIRKS_END },
     89     [ANDROID_REQUEST]              = { ANDROID_REQUEST_START,
     90                                        ANDROID_REQUEST_END },
     91     [ANDROID_SCALER]               = { ANDROID_SCALER_START,
     92                                        ANDROID_SCALER_END },
     93     [ANDROID_SENSOR]               = { ANDROID_SENSOR_START,
     94                                        ANDROID_SENSOR_END },
     95     [ANDROID_SENSOR_INFO]          = { ANDROID_SENSOR_INFO_START,
     96                                        ANDROID_SENSOR_INFO_END },
     97     [ANDROID_SHADING]              = { ANDROID_SHADING_START,
     98                                        ANDROID_SHADING_END },
     99     [ANDROID_STATISTICS]           = { ANDROID_STATISTICS_START,
    100                                        ANDROID_STATISTICS_END },
    101     [ANDROID_STATISTICS_INFO]      = { ANDROID_STATISTICS_INFO_START,
    102                                        ANDROID_STATISTICS_INFO_END },
    103     [ANDROID_TONEMAP]              = { ANDROID_TONEMAP_START,
    104                                        ANDROID_TONEMAP_END },
    105     [ANDROID_LED]                  = { ANDROID_LED_START,
    106                                        ANDROID_LED_END },
    107     [ANDROID_INFO]                 = { ANDROID_INFO_START,
    108                                        ANDROID_INFO_END },
    109 };
    110 
    111 static tag_info_t android_color_correction[ANDROID_COLOR_CORRECTION_END -
    112         ANDROID_COLOR_CORRECTION_START] = {
    113     [ ANDROID_COLOR_CORRECTION_MODE - ANDROID_COLOR_CORRECTION_START ] =
    114     { "mode",                          TYPE_BYTE   },
    115     [ ANDROID_COLOR_CORRECTION_TRANSFORM - ANDROID_COLOR_CORRECTION_START ] =
    116     { "transform",                     TYPE_FLOAT  },
    117 };
    118 
    119 static tag_info_t android_control[ANDROID_CONTROL_END -
    120         ANDROID_CONTROL_START] = {
    121     [ ANDROID_CONTROL_AE_ANTIBANDING_MODE - ANDROID_CONTROL_START ] =
    122     { "aeAntibandingMode",             TYPE_BYTE   },
    123     [ ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION - ANDROID_CONTROL_START ] =
    124     { "aeExposureCompensation",        TYPE_INT32  },
    125     [ ANDROID_CONTROL_AE_LOCK - ANDROID_CONTROL_START ] =
    126     { "aeLock",                        TYPE_BYTE   },
    127     [ ANDROID_CONTROL_AE_MODE - ANDROID_CONTROL_START ] =
    128     { "aeMode",                        TYPE_BYTE   },
    129     [ ANDROID_CONTROL_AE_REGIONS - ANDROID_CONTROL_START ] =
    130     { "aeRegions",                     TYPE_INT32  },
    131     [ ANDROID_CONTROL_AE_TARGET_FPS_RANGE - ANDROID_CONTROL_START ] =
    132     { "aeTargetFpsRange",              TYPE_INT32  },
    133     [ ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER - ANDROID_CONTROL_START ] =
    134     { "aePrecaptureTrigger",           TYPE_BYTE   },
    135     [ ANDROID_CONTROL_AF_MODE - ANDROID_CONTROL_START ] =
    136     { "afMode",                        TYPE_BYTE   },
    137     [ ANDROID_CONTROL_AF_REGIONS - ANDROID_CONTROL_START ] =
    138     { "afRegions",                     TYPE_INT32  },
    139     [ ANDROID_CONTROL_AF_TRIGGER - ANDROID_CONTROL_START ] =
    140     { "afTrigger",                     TYPE_BYTE   },
    141     [ ANDROID_CONTROL_AWB_LOCK - ANDROID_CONTROL_START ] =
    142     { "awbLock",                       TYPE_BYTE   },
    143     [ ANDROID_CONTROL_AWB_MODE - ANDROID_CONTROL_START ] =
    144     { "awbMode",                       TYPE_BYTE   },
    145     [ ANDROID_CONTROL_AWB_REGIONS - ANDROID_CONTROL_START ] =
    146     { "awbRegions",                    TYPE_INT32  },
    147     [ ANDROID_CONTROL_CAPTURE_INTENT - ANDROID_CONTROL_START ] =
    148     { "captureIntent",                 TYPE_BYTE   },
    149     [ ANDROID_CONTROL_EFFECT_MODE - ANDROID_CONTROL_START ] =
    150     { "effectMode",                    TYPE_BYTE   },
    151     [ ANDROID_CONTROL_MODE - ANDROID_CONTROL_START ] =
    152     { "mode",                          TYPE_BYTE   },
    153     [ ANDROID_CONTROL_SCENE_MODE - ANDROID_CONTROL_START ] =
    154     { "sceneMode",                     TYPE_BYTE   },
    155     [ ANDROID_CONTROL_VIDEO_STABILIZATION_MODE - ANDROID_CONTROL_START ] =
    156     { "videoStabilizationMode",        TYPE_BYTE   },
    157     [ ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES - ANDROID_CONTROL_START ] =
    158     { "aeAvailableAntibandingModes",   TYPE_BYTE   },
    159     [ ANDROID_CONTROL_AE_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
    160     { "aeAvailableModes",              TYPE_BYTE   },
    161     [ ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES - ANDROID_CONTROL_START ] =
    162     { "aeAvailableTargetFpsRanges",    TYPE_INT32  },
    163     [ ANDROID_CONTROL_AE_COMPENSATION_RANGE - ANDROID_CONTROL_START ] =
    164     { "aeCompensationRange",           TYPE_INT32  },
    165     [ ANDROID_CONTROL_AE_COMPENSATION_STEP - ANDROID_CONTROL_START ] =
    166     { "aeCompensationStep",            TYPE_RATIONAL
    167                 },
    168     [ ANDROID_CONTROL_AF_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
    169     { "afAvailableModes",              TYPE_BYTE   },
    170     [ ANDROID_CONTROL_AVAILABLE_EFFECTS - ANDROID_CONTROL_START ] =
    171     { "availableEffects",              TYPE_BYTE   },
    172     [ ANDROID_CONTROL_AVAILABLE_SCENE_MODES - ANDROID_CONTROL_START ] =
    173     { "availableSceneModes",           TYPE_BYTE   },
    174     [ ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES - ANDROID_CONTROL_START ] =
    175     { "availableVideoStabilizationModes",
    176                                         TYPE_BYTE   },
    177     [ ANDROID_CONTROL_AWB_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
    178     { "awbAvailableModes",             TYPE_BYTE   },
    179     [ ANDROID_CONTROL_MAX_REGIONS - ANDROID_CONTROL_START ] =
    180     { "maxRegions",                    TYPE_INT32  },
    181     [ ANDROID_CONTROL_SCENE_MODE_OVERRIDES - ANDROID_CONTROL_START ] =
    182     { "sceneModeOverrides",            TYPE_BYTE   },
    183     [ ANDROID_CONTROL_AE_PRECAPTURE_ID - ANDROID_CONTROL_START ] =
    184     { "aePrecaptureId",                TYPE_INT32  },
    185     [ ANDROID_CONTROL_AE_STATE - ANDROID_CONTROL_START ] =
    186     { "aeState",                       TYPE_BYTE   },
    187     [ ANDROID_CONTROL_AF_STATE - ANDROID_CONTROL_START ] =
    188     { "afState",                       TYPE_BYTE   },
    189     [ ANDROID_CONTROL_AF_TRIGGER_ID - ANDROID_CONTROL_START ] =
    190     { "afTriggerId",                   TYPE_INT32  },
    191     [ ANDROID_CONTROL_AWB_STATE - ANDROID_CONTROL_START ] =
    192     { "awbState",                      TYPE_BYTE   },
    193 };
    194 
    195 static tag_info_t android_demosaic[ANDROID_DEMOSAIC_END -
    196         ANDROID_DEMOSAIC_START] = {
    197     [ ANDROID_DEMOSAIC_MODE - ANDROID_DEMOSAIC_START ] =
    198     { "mode",                          TYPE_BYTE   },
    199 };
    200 
    201 static tag_info_t android_edge[ANDROID_EDGE_END -
    202         ANDROID_EDGE_START] = {
    203     [ ANDROID_EDGE_MODE - ANDROID_EDGE_START ] =
    204     { "mode",                          TYPE_BYTE   },
    205     [ ANDROID_EDGE_STRENGTH - ANDROID_EDGE_START ] =
    206     { "strength",                      TYPE_BYTE   },
    207 };
    208 
    209 static tag_info_t android_flash[ANDROID_FLASH_END -
    210         ANDROID_FLASH_START] = {
    211     [ ANDROID_FLASH_FIRING_POWER - ANDROID_FLASH_START ] =
    212     { "firingPower",                   TYPE_BYTE   },
    213     [ ANDROID_FLASH_FIRING_TIME - ANDROID_FLASH_START ] =
    214     { "firingTime",                    TYPE_INT64  },
    215     [ ANDROID_FLASH_MODE - ANDROID_FLASH_START ] =
    216     { "mode",                          TYPE_BYTE   },
    217     [ ANDROID_FLASH_COLOR_TEMPERATURE - ANDROID_FLASH_START ] =
    218     { "colorTemperature",              TYPE_BYTE   },
    219     [ ANDROID_FLASH_MAX_ENERGY - ANDROID_FLASH_START ] =
    220     { "maxEnergy",                     TYPE_BYTE   },
    221     [ ANDROID_FLASH_STATE - ANDROID_FLASH_START ] =
    222     { "state",                         TYPE_BYTE   },
    223 };
    224 
    225 static tag_info_t android_flash_info[ANDROID_FLASH_INFO_END -
    226         ANDROID_FLASH_INFO_START] = {
    227     [ ANDROID_FLASH_INFO_AVAILABLE - ANDROID_FLASH_INFO_START ] =
    228     { "available",                     TYPE_BYTE   },
    229     [ ANDROID_FLASH_INFO_CHARGE_DURATION - ANDROID_FLASH_INFO_START ] =
    230     { "chargeDuration",                TYPE_INT64  },
    231 };
    232 
    233 static tag_info_t android_geometric[ANDROID_GEOMETRIC_END -
    234         ANDROID_GEOMETRIC_START] = {
    235     [ ANDROID_GEOMETRIC_MODE - ANDROID_GEOMETRIC_START ] =
    236     { "mode",                          TYPE_BYTE   },
    237     [ ANDROID_GEOMETRIC_STRENGTH - ANDROID_GEOMETRIC_START ] =
    238     { "strength",                      TYPE_BYTE   },
    239 };
    240 
    241 static tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END -
    242         ANDROID_HOT_PIXEL_START] = {
    243     [ ANDROID_HOT_PIXEL_MODE - ANDROID_HOT_PIXEL_START ] =
    244     { "mode",                          TYPE_BYTE   },
    245 };
    246 
    247 static tag_info_t android_hot_pixel_info[ANDROID_HOT_PIXEL_INFO_END -
    248         ANDROID_HOT_PIXEL_INFO_START] = {
    249     [ ANDROID_HOT_PIXEL_INFO_MAP - ANDROID_HOT_PIXEL_INFO_START ] =
    250     { "map",                           TYPE_INT32  },
    251 };
    252 
    253 static tag_info_t android_jpeg[ANDROID_JPEG_END -
    254         ANDROID_JPEG_START] = {
    255     [ ANDROID_JPEG_GPS_COORDINATES - ANDROID_JPEG_START ] =
    256     { "gpsCoordinates",                TYPE_DOUBLE },
    257     [ ANDROID_JPEG_GPS_PROCESSING_METHOD - ANDROID_JPEG_START ] =
    258     { "gpsProcessingMethod",           TYPE_BYTE   },
    259     [ ANDROID_JPEG_GPS_TIMESTAMP - ANDROID_JPEG_START ] =
    260     { "gpsTimestamp",                  TYPE_INT64  },
    261     [ ANDROID_JPEG_ORIENTATION - ANDROID_JPEG_START ] =
    262     { "orientation",                   TYPE_INT32  },
    263     [ ANDROID_JPEG_QUALITY - ANDROID_JPEG_START ] =
    264     { "quality",                       TYPE_BYTE   },
    265     [ ANDROID_JPEG_THUMBNAIL_QUALITY - ANDROID_JPEG_START ] =
    266     { "thumbnailQuality",              TYPE_BYTE   },
    267     [ ANDROID_JPEG_THUMBNAIL_SIZE - ANDROID_JPEG_START ] =
    268     { "thumbnailSize",                 TYPE_INT32  },
    269     [ ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES - ANDROID_JPEG_START ] =
    270     { "availableThumbnailSizes",       TYPE_INT32  },
    271     [ ANDROID_JPEG_MAX_SIZE - ANDROID_JPEG_START ] =
    272     { "maxSize",                       TYPE_INT32  },
    273     [ ANDROID_JPEG_SIZE - ANDROID_JPEG_START ] =
    274     { "size",                          TYPE_INT32  },
    275 };
    276 
    277 static tag_info_t android_lens[ANDROID_LENS_END -
    278         ANDROID_LENS_START] = {
    279     [ ANDROID_LENS_APERTURE - ANDROID_LENS_START ] =
    280     { "aperture",                      TYPE_FLOAT  },
    281     [ ANDROID_LENS_FILTER_DENSITY - ANDROID_LENS_START ] =
    282     { "filterDensity",                 TYPE_FLOAT  },
    283     [ ANDROID_LENS_FOCAL_LENGTH - ANDROID_LENS_START ] =
    284     { "focalLength",                   TYPE_FLOAT  },
    285     [ ANDROID_LENS_FOCUS_DISTANCE - ANDROID_LENS_START ] =
    286     { "focusDistance",                 TYPE_FLOAT  },
    287     [ ANDROID_LENS_OPTICAL_STABILIZATION_MODE - ANDROID_LENS_START ] =
    288     { "opticalStabilizationMode",      TYPE_BYTE   },
    289     [ ANDROID_LENS_FACING - ANDROID_LENS_START ] =
    290     { "facing",                        TYPE_BYTE   },
    291     [ ANDROID_LENS_OPTICAL_AXIS_ANGLE - ANDROID_LENS_START ] =
    292     { "opticalAxisAngle",              TYPE_FLOAT  },
    293     [ ANDROID_LENS_POSITION - ANDROID_LENS_START ] =
    294     { "position",                      TYPE_FLOAT  },
    295     [ ANDROID_LENS_FOCUS_RANGE - ANDROID_LENS_START ] =
    296     { "focusRange",                    TYPE_FLOAT  },
    297     [ ANDROID_LENS_STATE - ANDROID_LENS_START ] =
    298     { "state",                         TYPE_BYTE   },
    299 };
    300 
    301 static tag_info_t android_lens_info[ANDROID_LENS_INFO_END -
    302         ANDROID_LENS_INFO_START] = {
    303     [ ANDROID_LENS_INFO_AVAILABLE_APERTURES - ANDROID_LENS_INFO_START ] =
    304     { "availableApertures",            TYPE_FLOAT  },
    305     [ ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES - ANDROID_LENS_INFO_START ] =
    306     { "availableFilterDensities",      TYPE_FLOAT  },
    307     [ ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS - ANDROID_LENS_INFO_START ] =
    308     { "availableFocalLengths",         TYPE_FLOAT  },
    309     [ ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION - ANDROID_LENS_INFO_START ] =
    310     { "availableOpticalStabilization", TYPE_BYTE   },
    311     [ ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP - ANDROID_LENS_INFO_START ] =
    312     { "geometricCorrectionMap",        TYPE_FLOAT  },
    313     [ ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP_SIZE - ANDROID_LENS_INFO_START ] =
    314     { "geometricCorrectionMapSize",    TYPE_INT32  },
    315     [ ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE - ANDROID_LENS_INFO_START ] =
    316     { "hyperfocalDistance",            TYPE_FLOAT  },
    317     [ ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE - ANDROID_LENS_INFO_START ] =
    318     { "minimumFocusDistance",          TYPE_FLOAT  },
    319     [ ANDROID_LENS_INFO_SHADING_MAP - ANDROID_LENS_INFO_START ] =
    320     { "shadingMap",                    TYPE_FLOAT  },
    321     [ ANDROID_LENS_INFO_SHADING_MAP_SIZE - ANDROID_LENS_INFO_START ] =
    322     { "shadingMapSize",                TYPE_INT32  },
    323 };
    324 
    325 static tag_info_t android_noise_reduction[ANDROID_NOISE_REDUCTION_END -
    326         ANDROID_NOISE_REDUCTION_START] = {
    327     [ ANDROID_NOISE_REDUCTION_MODE - ANDROID_NOISE_REDUCTION_START ] =
    328     { "mode",                          TYPE_BYTE   },
    329     [ ANDROID_NOISE_REDUCTION_STRENGTH - ANDROID_NOISE_REDUCTION_START ] =
    330     { "strength",                      TYPE_BYTE   },
    331 };
    332 
    333 static tag_info_t android_quirks[ANDROID_QUIRKS_END -
    334         ANDROID_QUIRKS_START] = {
    335     [ ANDROID_QUIRKS_METERING_CROP_REGION - ANDROID_QUIRKS_START ] =
    336     { "meteringCropRegion",            TYPE_BYTE   },
    337     [ ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO - ANDROID_QUIRKS_START ] =
    338     { "triggerAfWithAuto",             TYPE_BYTE   },
    339     [ ANDROID_QUIRKS_USE_ZSL_FORMAT - ANDROID_QUIRKS_START ] =
    340     { "useZslFormat",                  TYPE_BYTE   },
    341 };
    342 
    343 static tag_info_t android_request[ANDROID_REQUEST_END -
    344         ANDROID_REQUEST_START] = {
    345     [ ANDROID_REQUEST_FRAME_COUNT - ANDROID_REQUEST_START ] =
    346     { "frameCount",                    TYPE_INT32  },
    347     [ ANDROID_REQUEST_ID - ANDROID_REQUEST_START ] =
    348     { "id",                            TYPE_INT32  },
    349     [ ANDROID_REQUEST_INPUT_STREAMS - ANDROID_REQUEST_START ] =
    350     { "inputStreams",                  TYPE_BYTE   },
    351     [ ANDROID_REQUEST_METADATA_MODE - ANDROID_REQUEST_START ] =
    352     { "metadataMode",                  TYPE_BYTE   },
    353     [ ANDROID_REQUEST_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
    354     { "outputStreams",                 TYPE_BYTE   },
    355     [ ANDROID_REQUEST_TYPE - ANDROID_REQUEST_START ] =
    356     { "type",                          TYPE_BYTE   },
    357     [ ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
    358     { "maxNumOutputStreams",           TYPE_INT32  },
    359     [ ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS - ANDROID_REQUEST_START ] =
    360     { "maxNumReprocessStreams",        TYPE_INT32  },
    361 };
    362 
    363 static tag_info_t android_scaler[ANDROID_SCALER_END -
    364         ANDROID_SCALER_START] = {
    365     [ ANDROID_SCALER_CROP_REGION - ANDROID_SCALER_START ] =
    366     { "cropRegion",                    TYPE_INT32  },
    367     [ ANDROID_SCALER_AVAILABLE_FORMATS - ANDROID_SCALER_START ] =
    368     { "availableFormats",              TYPE_INT32  },
    369     [ ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS - ANDROID_SCALER_START ] =
    370     { "availableJpegMinDurations",     TYPE_INT64  },
    371     [ ANDROID_SCALER_AVAILABLE_JPEG_SIZES - ANDROID_SCALER_START ] =
    372     { "availableJpegSizes",            TYPE_INT32  },
    373     [ ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM - ANDROID_SCALER_START ] =
    374     { "availableMaxDigitalZoom",       TYPE_FLOAT  },
    375     [ ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS - ANDROID_SCALER_START ] =
    376     { "availableProcessedMinDurations",
    377                                         TYPE_INT64  },
    378     [ ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES - ANDROID_SCALER_START ] =
    379     { "availableProcessedSizes",       TYPE_INT32  },
    380     [ ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS - ANDROID_SCALER_START ] =
    381     { "availableRawMinDurations",      TYPE_INT64  },
    382     [ ANDROID_SCALER_AVAILABLE_RAW_SIZES - ANDROID_SCALER_START ] =
    383     { "availableRawSizes",             TYPE_INT32  },
    384 };
    385 
    386 static tag_info_t android_sensor[ANDROID_SENSOR_END -
    387         ANDROID_SENSOR_START] = {
    388     [ ANDROID_SENSOR_EXPOSURE_TIME - ANDROID_SENSOR_START ] =
    389     { "exposureTime",                  TYPE_INT64  },
    390     [ ANDROID_SENSOR_FRAME_DURATION - ANDROID_SENSOR_START ] =
    391     { "frameDuration",                 TYPE_INT64  },
    392     [ ANDROID_SENSOR_SENSITIVITY - ANDROID_SENSOR_START ] =
    393     { "sensitivity",                   TYPE_INT32  },
    394     [ ANDROID_SENSOR_BASE_GAIN_FACTOR - ANDROID_SENSOR_START ] =
    395     { "baseGainFactor",                TYPE_RATIONAL
    396                 },
    397     [ ANDROID_SENSOR_BLACK_LEVEL_PATTERN - ANDROID_SENSOR_START ] =
    398     { "blackLevelPattern",             TYPE_INT32  },
    399     [ ANDROID_SENSOR_CALIBRATION_TRANSFORM1 - ANDROID_SENSOR_START ] =
    400     { "calibrationTransform1",         TYPE_RATIONAL
    401                 },
    402     [ ANDROID_SENSOR_CALIBRATION_TRANSFORM2 - ANDROID_SENSOR_START ] =
    403     { "calibrationTransform2",         TYPE_RATIONAL
    404                 },
    405     [ ANDROID_SENSOR_COLOR_TRANSFORM1 - ANDROID_SENSOR_START ] =
    406     { "colorTransform1",               TYPE_RATIONAL
    407                 },
    408     [ ANDROID_SENSOR_COLOR_TRANSFORM2 - ANDROID_SENSOR_START ] =
    409     { "colorTransform2",               TYPE_RATIONAL
    410                 },
    411     [ ANDROID_SENSOR_FORWARD_MATRIX1 - ANDROID_SENSOR_START ] =
    412     { "forwardMatrix1",                TYPE_RATIONAL
    413                 },
    414     [ ANDROID_SENSOR_FORWARD_MATRIX2 - ANDROID_SENSOR_START ] =
    415     { "forwardMatrix2",                TYPE_RATIONAL
    416                 },
    417     [ ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY - ANDROID_SENSOR_START ] =
    418     { "maxAnalogSensitivity",          TYPE_INT32  },
    419     [ ANDROID_SENSOR_NOISE_MODEL_COEFFICIENTS - ANDROID_SENSOR_START ] =
    420     { "noiseModelCoefficients",        TYPE_FLOAT  },
    421     [ ANDROID_SENSOR_ORIENTATION - ANDROID_SENSOR_START ] =
    422     { "orientation",                   TYPE_INT32  },
    423     [ ANDROID_SENSOR_REFERENCE_ILLUMINANT1 - ANDROID_SENSOR_START ] =
    424     { "referenceIlluminant1",          TYPE_BYTE   },
    425     [ ANDROID_SENSOR_REFERENCE_ILLUMINANT2 - ANDROID_SENSOR_START ] =
    426     { "referenceIlluminant2",          TYPE_BYTE   },
    427     [ ANDROID_SENSOR_TIMESTAMP - ANDROID_SENSOR_START ] =
    428     { "timestamp",                     TYPE_INT64  },
    429 };
    430 
    431 static tag_info_t android_sensor_info[ANDROID_SENSOR_INFO_END -
    432         ANDROID_SENSOR_INFO_START] = {
    433     [ ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
    434     { "activeArraySize",               TYPE_INT32  },
    435     [ ANDROID_SENSOR_INFO_AVAILABLE_SENSITIVITIES - ANDROID_SENSOR_INFO_START ] =
    436     { "availableSensitivities",        TYPE_INT32  },
    437     [ ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT - ANDROID_SENSOR_INFO_START ] =
    438     { "colorFilterArrangement",        TYPE_BYTE   },
    439     [ ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE - ANDROID_SENSOR_INFO_START ] =
    440     { "exposureTimeRange",             TYPE_INT64  },
    441     [ ANDROID_SENSOR_INFO_MAX_FRAME_DURATION - ANDROID_SENSOR_INFO_START ] =
    442     { "maxFrameDuration",              TYPE_INT64  },
    443     [ ANDROID_SENSOR_INFO_PHYSICAL_SIZE - ANDROID_SENSOR_INFO_START ] =
    444     { "physicalSize",                  TYPE_FLOAT  },
    445     [ ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
    446     { "pixelArraySize",                TYPE_INT32  },
    447     [ ANDROID_SENSOR_INFO_WHITE_LEVEL - ANDROID_SENSOR_INFO_START ] =
    448     { "whiteLevel",                    TYPE_INT32  },
    449 };
    450 
    451 static tag_info_t android_shading[ANDROID_SHADING_END -
    452         ANDROID_SHADING_START] = {
    453     [ ANDROID_SHADING_MODE - ANDROID_SHADING_START ] =
    454     { "mode",                          TYPE_BYTE   },
    455     [ ANDROID_SHADING_STRENGTH - ANDROID_SHADING_START ] =
    456     { "strength",                      TYPE_BYTE   },
    457 };
    458 
    459 static tag_info_t android_statistics[ANDROID_STATISTICS_END -
    460         ANDROID_STATISTICS_START] = {
    461     [ ANDROID_STATISTICS_FACE_DETECT_MODE - ANDROID_STATISTICS_START ] =
    462     { "faceDetectMode",                TYPE_BYTE   },
    463     [ ANDROID_STATISTICS_HISTOGRAM_MODE - ANDROID_STATISTICS_START ] =
    464     { "histogramMode",                 TYPE_BYTE   },
    465     [ ANDROID_STATISTICS_SHARPNESS_MAP_MODE - ANDROID_STATISTICS_START ] =
    466     { "sharpnessMapMode",              TYPE_BYTE   },
    467     [ ANDROID_STATISTICS_FACE_IDS - ANDROID_STATISTICS_START ] =
    468     { "faceIds",                       TYPE_INT32  },
    469     [ ANDROID_STATISTICS_FACE_LANDMARKS - ANDROID_STATISTICS_START ] =
    470     { "faceLandmarks",                 TYPE_INT32  },
    471     [ ANDROID_STATISTICS_FACE_RECTANGLES - ANDROID_STATISTICS_START ] =
    472     { "faceRectangles",                TYPE_INT32  },
    473     [ ANDROID_STATISTICS_FACE_SCORES - ANDROID_STATISTICS_START ] =
    474     { "faceScores",                    TYPE_BYTE   },
    475     [ ANDROID_STATISTICS_HISTOGRAM - ANDROID_STATISTICS_START ] =
    476     { "histogram",                     TYPE_INT32  },
    477     [ ANDROID_STATISTICS_SHARPNESS_MAP - ANDROID_STATISTICS_START ] =
    478     { "sharpnessMap",                  TYPE_INT32  },
    479 };
    480 
    481 static tag_info_t android_statistics_info[ANDROID_STATISTICS_INFO_END -
    482         ANDROID_STATISTICS_INFO_START] = {
    483     [ ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES - ANDROID_STATISTICS_INFO_START ] =
    484     { "availableFaceDetectModes",      TYPE_BYTE   },
    485     [ ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT - ANDROID_STATISTICS_INFO_START ] =
    486     { "histogramBucketCount",          TYPE_INT32  },
    487     [ ANDROID_STATISTICS_INFO_MAX_FACE_COUNT - ANDROID_STATISTICS_INFO_START ] =
    488     { "maxFaceCount",                  TYPE_INT32  },
    489     [ ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT - ANDROID_STATISTICS_INFO_START ] =
    490     { "maxHistogramCount",             TYPE_INT32  },
    491     [ ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE - ANDROID_STATISTICS_INFO_START ] =
    492     { "maxSharpnessMapValue",          TYPE_INT32  },
    493     [ ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE - ANDROID_STATISTICS_INFO_START ] =
    494     { "sharpnessMapSize",              TYPE_INT32  },
    495 };
    496 
    497 static tag_info_t android_tonemap[ANDROID_TONEMAP_END -
    498         ANDROID_TONEMAP_START] = {
    499     [ ANDROID_TONEMAP_CURVE_BLUE - ANDROID_TONEMAP_START ] =
    500     { "curveBlue",                     TYPE_FLOAT  },
    501     [ ANDROID_TONEMAP_CURVE_GREEN - ANDROID_TONEMAP_START ] =
    502     { "curveGreen",                    TYPE_FLOAT  },
    503     [ ANDROID_TONEMAP_CURVE_RED - ANDROID_TONEMAP_START ] =
    504     { "curveRed",                      TYPE_FLOAT  },
    505     [ ANDROID_TONEMAP_MODE - ANDROID_TONEMAP_START ] =
    506     { "mode",                          TYPE_BYTE   },
    507     [ ANDROID_TONEMAP_MAX_CURVE_POINTS - ANDROID_TONEMAP_START ] =
    508     { "maxCurvePoints",                TYPE_INT32  },
    509 };
    510 
    511 static tag_info_t android_led[ANDROID_LED_END -
    512         ANDROID_LED_START] = {
    513     [ ANDROID_LED_TRANSMIT - ANDROID_LED_START ] =
    514     { "transmit",                      TYPE_BYTE   },
    515     [ ANDROID_LED_AVAILABLE_LEDS - ANDROID_LED_START ] =
    516     { "availableLeds",                 TYPE_BYTE   },
    517 };
    518 
    519 static tag_info_t android_info[ANDROID_INFO_END -
    520         ANDROID_INFO_START] = {
    521     [ ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL - ANDROID_INFO_START ] =
    522     { "supportedHardwareLevel",        TYPE_BYTE   },
    523 };
    524 
    525 
    526 tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
    527     android_color_correction,
    528     android_control,
    529     android_demosaic,
    530     android_edge,
    531     android_flash,
    532     android_flash_info,
    533     android_geometric,
    534     android_hot_pixel,
    535     android_hot_pixel_info,
    536     android_jpeg,
    537     android_lens,
    538     android_lens_info,
    539     android_noise_reduction,
    540     android_quirks,
    541     android_request,
    542     android_scaler,
    543     android_sensor,
    544     android_sensor_info,
    545     android_shading,
    546     android_statistics,
    547     android_statistics_info,
    548     android_tonemap,
    549     android_led,
    550     android_info,
    551 };
    552 
    553 int camera_metadata_enum_snprint(uint32_t tag,
    554                                  uint32_t value,
    555                                  char *dst,
    556                                  size_t size) {
    557     const char *msg = "error: not an enum";
    558     int ret = -1;
    559 
    560     switch(tag) {
    561         case ANDROID_COLOR_CORRECTION_MODE: {
    562             switch (value) {
    563                 case ANDROID_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX:
    564                     msg = "TRANSFORM_MATRIX";
    565                     ret = 0;
    566                     break;
    567                 case ANDROID_COLOR_CORRECTION_MODE_FAST:
    568                     msg = "FAST";
    569                     ret = 0;
    570                     break;
    571                 case ANDROID_COLOR_CORRECTION_MODE_HIGH_QUALITY:
    572                     msg = "HIGH_QUALITY";
    573                     ret = 0;
    574                     break;
    575                 default:
    576                     msg = "error: enum value out of range";
    577             }
    578             break;
    579         }
    580         case ANDROID_COLOR_CORRECTION_TRANSFORM: {
    581             break;
    582         }
    583 
    584         case ANDROID_CONTROL_AE_ANTIBANDING_MODE: {
    585             switch (value) {
    586                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF:
    587                     msg = "OFF";
    588                     ret = 0;
    589                     break;
    590                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ:
    591                     msg = "50HZ";
    592                     ret = 0;
    593                     break;
    594                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ:
    595                     msg = "60HZ";
    596                     ret = 0;
    597                     break;
    598                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO:
    599                     msg = "AUTO";
    600                     ret = 0;
    601                     break;
    602                 default:
    603                     msg = "error: enum value out of range";
    604             }
    605             break;
    606         }
    607         case ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: {
    608             break;
    609         }
    610         case ANDROID_CONTROL_AE_LOCK: {
    611             switch (value) {
    612                 case ANDROID_CONTROL_AE_LOCK_OFF:
    613                     msg = "OFF";
    614                     ret = 0;
    615                     break;
    616                 case ANDROID_CONTROL_AE_LOCK_ON:
    617                     msg = "ON";
    618                     ret = 0;
    619                     break;
    620                 default:
    621                     msg = "error: enum value out of range";
    622             }
    623             break;
    624         }
    625         case ANDROID_CONTROL_AE_MODE: {
    626             switch (value) {
    627                 case ANDROID_CONTROL_AE_MODE_OFF:
    628                     msg = "OFF";
    629                     ret = 0;
    630                     break;
    631                 case ANDROID_CONTROL_AE_MODE_ON:
    632                     msg = "ON";
    633                     ret = 0;
    634                     break;
    635                 case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH:
    636                     msg = "ON_AUTO_FLASH";
    637                     ret = 0;
    638                     break;
    639                 case ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH:
    640                     msg = "ON_ALWAYS_FLASH";
    641                     ret = 0;
    642                     break;
    643                 case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE:
    644                     msg = "ON_AUTO_FLASH_REDEYE";
    645                     ret = 0;
    646                     break;
    647                 default:
    648                     msg = "error: enum value out of range";
    649             }
    650             break;
    651         }
    652         case ANDROID_CONTROL_AE_REGIONS: {
    653             break;
    654         }
    655         case ANDROID_CONTROL_AE_TARGET_FPS_RANGE: {
    656             break;
    657         }
    658         case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: {
    659             switch (value) {
    660                 case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE:
    661                     msg = "IDLE";
    662                     ret = 0;
    663                     break;
    664                 case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_START:
    665                     msg = "START";
    666                     ret = 0;
    667                     break;
    668                 default:
    669                     msg = "error: enum value out of range";
    670             }
    671             break;
    672         }
    673         case ANDROID_CONTROL_AF_MODE: {
    674             switch (value) {
    675                 case ANDROID_CONTROL_AF_MODE_OFF:
    676                     msg = "OFF";
    677                     ret = 0;
    678                     break;
    679                 case ANDROID_CONTROL_AF_MODE_AUTO:
    680                     msg = "AUTO";
    681                     ret = 0;
    682                     break;
    683                 case ANDROID_CONTROL_AF_MODE_MACRO:
    684                     msg = "MACRO";
    685                     ret = 0;
    686                     break;
    687                 case ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO:
    688                     msg = "CONTINUOUS_VIDEO";
    689                     ret = 0;
    690                     break;
    691                 case ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE:
    692                     msg = "CONTINUOUS_PICTURE";
    693                     ret = 0;
    694                     break;
    695                 case ANDROID_CONTROL_AF_MODE_EDOF:
    696                     msg = "EDOF";
    697                     ret = 0;
    698                     break;
    699                 default:
    700                     msg = "error: enum value out of range";
    701             }
    702             break;
    703         }
    704         case ANDROID_CONTROL_AF_REGIONS: {
    705             break;
    706         }
    707         case ANDROID_CONTROL_AF_TRIGGER: {
    708             switch (value) {
    709                 case ANDROID_CONTROL_AF_TRIGGER_IDLE:
    710                     msg = "IDLE";
    711                     ret = 0;
    712                     break;
    713                 case ANDROID_CONTROL_AF_TRIGGER_START:
    714                     msg = "START";
    715                     ret = 0;
    716                     break;
    717                 case ANDROID_CONTROL_AF_TRIGGER_CANCEL:
    718                     msg = "CANCEL";
    719                     ret = 0;
    720                     break;
    721                 default:
    722                     msg = "error: enum value out of range";
    723             }
    724             break;
    725         }
    726         case ANDROID_CONTROL_AWB_LOCK: {
    727             switch (value) {
    728                 case ANDROID_CONTROL_AWB_LOCK_OFF:
    729                     msg = "OFF";
    730                     ret = 0;
    731                     break;
    732                 case ANDROID_CONTROL_AWB_LOCK_ON:
    733                     msg = "ON";
    734                     ret = 0;
    735                     break;
    736                 default:
    737                     msg = "error: enum value out of range";
    738             }
    739             break;
    740         }
    741         case ANDROID_CONTROL_AWB_MODE: {
    742             switch (value) {
    743                 case ANDROID_CONTROL_AWB_MODE_OFF:
    744                     msg = "OFF";
    745                     ret = 0;
    746                     break;
    747                 case ANDROID_CONTROL_AWB_MODE_AUTO:
    748                     msg = "AUTO";
    749                     ret = 0;
    750                     break;
    751                 case ANDROID_CONTROL_AWB_MODE_INCANDESCENT:
    752                     msg = "INCANDESCENT";
    753                     ret = 0;
    754                     break;
    755                 case ANDROID_CONTROL_AWB_MODE_FLUORESCENT:
    756                     msg = "FLUORESCENT";
    757                     ret = 0;
    758                     break;
    759                 case ANDROID_CONTROL_AWB_MODE_WARM_FLUORESCENT:
    760                     msg = "WARM_FLUORESCENT";
    761                     ret = 0;
    762                     break;
    763                 case ANDROID_CONTROL_AWB_MODE_DAYLIGHT:
    764                     msg = "DAYLIGHT";
    765                     ret = 0;
    766                     break;
    767                 case ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT:
    768                     msg = "CLOUDY_DAYLIGHT";
    769                     ret = 0;
    770                     break;
    771                 case ANDROID_CONTROL_AWB_MODE_TWILIGHT:
    772                     msg = "TWILIGHT";
    773                     ret = 0;
    774                     break;
    775                 case ANDROID_CONTROL_AWB_MODE_SHADE:
    776                     msg = "SHADE";
    777                     ret = 0;
    778                     break;
    779                 default:
    780                     msg = "error: enum value out of range";
    781             }
    782             break;
    783         }
    784         case ANDROID_CONTROL_AWB_REGIONS: {
    785             break;
    786         }
    787         case ANDROID_CONTROL_CAPTURE_INTENT: {
    788             switch (value) {
    789                 case ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM:
    790                     msg = "CUSTOM";
    791                     ret = 0;
    792                     break;
    793                 case ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW:
    794                     msg = "PREVIEW";
    795                     ret = 0;
    796                     break;
    797                 case ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE:
    798                     msg = "STILL_CAPTURE";
    799                     ret = 0;
    800                     break;
    801                 case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD:
    802                     msg = "VIDEO_RECORD";
    803                     ret = 0;
    804                     break;
    805                 case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT:
    806                     msg = "VIDEO_SNAPSHOT";
    807                     ret = 0;
    808                     break;
    809                 case ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG:
    810                     msg = "ZERO_SHUTTER_LAG";
    811                     ret = 0;
    812                     break;
    813                 default:
    814                     msg = "error: enum value out of range";
    815             }
    816             break;
    817         }
    818         case ANDROID_CONTROL_EFFECT_MODE: {
    819             switch (value) {
    820                 case ANDROID_CONTROL_EFFECT_MODE_OFF:
    821                     msg = "OFF";
    822                     ret = 0;
    823                     break;
    824                 case ANDROID_CONTROL_EFFECT_MODE_MONO:
    825                     msg = "MONO";
    826                     ret = 0;
    827                     break;
    828                 case ANDROID_CONTROL_EFFECT_MODE_NEGATIVE:
    829                     msg = "NEGATIVE";
    830                     ret = 0;
    831                     break;
    832                 case ANDROID_CONTROL_EFFECT_MODE_SOLARIZE:
    833                     msg = "SOLARIZE";
    834                     ret = 0;
    835                     break;
    836                 case ANDROID_CONTROL_EFFECT_MODE_SEPIA:
    837                     msg = "SEPIA";
    838                     ret = 0;
    839                     break;
    840                 case ANDROID_CONTROL_EFFECT_MODE_POSTERIZE:
    841                     msg = "POSTERIZE";
    842                     ret = 0;
    843                     break;
    844                 case ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD:
    845                     msg = "WHITEBOARD";
    846                     ret = 0;
    847                     break;
    848                 case ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD:
    849                     msg = "BLACKBOARD";
    850                     ret = 0;
    851                     break;
    852                 case ANDROID_CONTROL_EFFECT_MODE_AQUA:
    853                     msg = "AQUA";
    854                     ret = 0;
    855                     break;
    856                 default:
    857                     msg = "error: enum value out of range";
    858             }
    859             break;
    860         }
    861         case ANDROID_CONTROL_MODE: {
    862             switch (value) {
    863                 case ANDROID_CONTROL_MODE_OFF:
    864                     msg = "OFF";
    865                     ret = 0;
    866                     break;
    867                 case ANDROID_CONTROL_MODE_AUTO:
    868                     msg = "AUTO";
    869                     ret = 0;
    870                     break;
    871                 case ANDROID_CONTROL_MODE_USE_SCENE_MODE:
    872                     msg = "USE_SCENE_MODE";
    873                     ret = 0;
    874                     break;
    875                 default:
    876                     msg = "error: enum value out of range";
    877             }
    878             break;
    879         }
    880         case ANDROID_CONTROL_SCENE_MODE: {
    881             switch (value) {
    882                 case ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED:
    883                     msg = "UNSUPPORTED";
    884                     ret = 0;
    885                     break;
    886                 case ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY:
    887                     msg = "FACE_PRIORITY";
    888                     ret = 0;
    889                     break;
    890                 case ANDROID_CONTROL_SCENE_MODE_ACTION:
    891                     msg = "ACTION";
    892                     ret = 0;
    893                     break;
    894                 case ANDROID_CONTROL_SCENE_MODE_PORTRAIT:
    895                     msg = "PORTRAIT";
    896                     ret = 0;
    897                     break;
    898                 case ANDROID_CONTROL_SCENE_MODE_LANDSCAPE:
    899                     msg = "LANDSCAPE";
    900                     ret = 0;
    901                     break;
    902                 case ANDROID_CONTROL_SCENE_MODE_NIGHT:
    903                     msg = "NIGHT";
    904                     ret = 0;
    905                     break;
    906                 case ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT:
    907                     msg = "NIGHT_PORTRAIT";
    908                     ret = 0;
    909                     break;
    910                 case ANDROID_CONTROL_SCENE_MODE_THEATRE:
    911                     msg = "THEATRE";
    912                     ret = 0;
    913                     break;
    914                 case ANDROID_CONTROL_SCENE_MODE_BEACH:
    915                     msg = "BEACH";
    916                     ret = 0;
    917                     break;
    918                 case ANDROID_CONTROL_SCENE_MODE_SNOW:
    919                     msg = "SNOW";
    920                     ret = 0;
    921                     break;
    922                 case ANDROID_CONTROL_SCENE_MODE_SUNSET:
    923                     msg = "SUNSET";
    924                     ret = 0;
    925                     break;
    926                 case ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO:
    927                     msg = "STEADYPHOTO";
    928                     ret = 0;
    929                     break;
    930                 case ANDROID_CONTROL_SCENE_MODE_FIREWORKS:
    931                     msg = "FIREWORKS";
    932                     ret = 0;
    933                     break;
    934                 case ANDROID_CONTROL_SCENE_MODE_SPORTS:
    935                     msg = "SPORTS";
    936                     ret = 0;
    937                     break;
    938                 case ANDROID_CONTROL_SCENE_MODE_PARTY:
    939                     msg = "PARTY";
    940                     ret = 0;
    941                     break;
    942                 case ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT:
    943                     msg = "CANDLELIGHT";
    944                     ret = 0;
    945                     break;
    946                 case ANDROID_CONTROL_SCENE_MODE_BARCODE:
    947                     msg = "BARCODE";
    948                     ret = 0;
    949                     break;
    950                 default:
    951                     msg = "error: enum value out of range";
    952             }
    953             break;
    954         }
    955         case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE: {
    956             switch (value) {
    957                 case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF:
    958                     msg = "OFF";
    959                     ret = 0;
    960                     break;
    961                 case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON:
    962                     msg = "ON";
    963                     ret = 0;
    964                     break;
    965                 default:
    966                     msg = "error: enum value out of range";
    967             }
    968             break;
    969         }
    970         case ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES: {
    971             break;
    972         }
    973         case ANDROID_CONTROL_AE_AVAILABLE_MODES: {
    974             break;
    975         }
    976         case ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES: {
    977             break;
    978         }
    979         case ANDROID_CONTROL_AE_COMPENSATION_RANGE: {
    980             break;
    981         }
    982         case ANDROID_CONTROL_AE_COMPENSATION_STEP: {
    983             break;
    984         }
    985         case ANDROID_CONTROL_AF_AVAILABLE_MODES: {
    986             break;
    987         }
    988         case ANDROID_CONTROL_AVAILABLE_EFFECTS: {
    989             break;
    990         }
    991         case ANDROID_CONTROL_AVAILABLE_SCENE_MODES: {
    992             break;
    993         }
    994         case ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES: {
    995             break;
    996         }
    997         case ANDROID_CONTROL_AWB_AVAILABLE_MODES: {
    998             break;
    999         }
   1000         case ANDROID_CONTROL_MAX_REGIONS: {
   1001             break;
   1002         }
   1003         case ANDROID_CONTROL_SCENE_MODE_OVERRIDES: {
   1004             break;
   1005         }
   1006         case ANDROID_CONTROL_AE_PRECAPTURE_ID: {
   1007             break;
   1008         }
   1009         case ANDROID_CONTROL_AE_STATE: {
   1010             switch (value) {
   1011                 case ANDROID_CONTROL_AE_STATE_INACTIVE:
   1012                     msg = "INACTIVE";
   1013                     ret = 0;
   1014                     break;
   1015                 case ANDROID_CONTROL_AE_STATE_SEARCHING:
   1016                     msg = "SEARCHING";
   1017                     ret = 0;
   1018                     break;
   1019                 case ANDROID_CONTROL_AE_STATE_CONVERGED:
   1020                     msg = "CONVERGED";
   1021                     ret = 0;
   1022                     break;
   1023                 case ANDROID_CONTROL_AE_STATE_LOCKED:
   1024                     msg = "LOCKED";
   1025                     ret = 0;
   1026                     break;
   1027                 case ANDROID_CONTROL_AE_STATE_FLASH_REQUIRED:
   1028                     msg = "FLASH_REQUIRED";
   1029                     ret = 0;
   1030                     break;
   1031                 case ANDROID_CONTROL_AE_STATE_PRECAPTURE:
   1032                     msg = "PRECAPTURE";
   1033                     ret = 0;
   1034                     break;
   1035                 default:
   1036                     msg = "error: enum value out of range";
   1037             }
   1038             break;
   1039         }
   1040         case ANDROID_CONTROL_AF_STATE: {
   1041             switch (value) {
   1042                 case ANDROID_CONTROL_AF_STATE_INACTIVE:
   1043                     msg = "INACTIVE";
   1044                     ret = 0;
   1045                     break;
   1046                 case ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN:
   1047                     msg = "PASSIVE_SCAN";
   1048                     ret = 0;
   1049                     break;
   1050                 case ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED:
   1051                     msg = "PASSIVE_FOCUSED";
   1052                     ret = 0;
   1053                     break;
   1054                 case ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN:
   1055                     msg = "ACTIVE_SCAN";
   1056                     ret = 0;
   1057                     break;
   1058                 case ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED:
   1059                     msg = "FOCUSED_LOCKED";
   1060                     ret = 0;
   1061                     break;
   1062                 case ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED:
   1063                     msg = "NOT_FOCUSED_LOCKED";
   1064                     ret = 0;
   1065                     break;
   1066                 default:
   1067                     msg = "error: enum value out of range";
   1068             }
   1069             break;
   1070         }
   1071         case ANDROID_CONTROL_AF_TRIGGER_ID: {
   1072             break;
   1073         }
   1074         case ANDROID_CONTROL_AWB_STATE: {
   1075             switch (value) {
   1076                 case ANDROID_CONTROL_AWB_STATE_INACTIVE:
   1077                     msg = "INACTIVE";
   1078                     ret = 0;
   1079                     break;
   1080                 case ANDROID_CONTROL_AWB_STATE_SEARCHING:
   1081                     msg = "SEARCHING";
   1082                     ret = 0;
   1083                     break;
   1084                 case ANDROID_CONTROL_AWB_STATE_CONVERGED:
   1085                     msg = "CONVERGED";
   1086                     ret = 0;
   1087                     break;
   1088                 case ANDROID_CONTROL_AWB_STATE_LOCKED:
   1089                     msg = "LOCKED";
   1090                     ret = 0;
   1091                     break;
   1092                 default:
   1093                     msg = "error: enum value out of range";
   1094             }
   1095             break;
   1096         }
   1097 
   1098         case ANDROID_DEMOSAIC_MODE: {
   1099             switch (value) {
   1100                 case ANDROID_DEMOSAIC_MODE_FAST:
   1101                     msg = "FAST";
   1102                     ret = 0;
   1103                     break;
   1104                 case ANDROID_DEMOSAIC_MODE_HIGH_QUALITY:
   1105                     msg = "HIGH_QUALITY";
   1106                     ret = 0;
   1107                     break;
   1108                 default:
   1109                     msg = "error: enum value out of range";
   1110             }
   1111             break;
   1112         }
   1113 
   1114         case ANDROID_EDGE_MODE: {
   1115             switch (value) {
   1116                 case ANDROID_EDGE_MODE_OFF:
   1117                     msg = "OFF";
   1118                     ret = 0;
   1119                     break;
   1120                 case ANDROID_EDGE_MODE_FAST:
   1121                     msg = "FAST";
   1122                     ret = 0;
   1123                     break;
   1124                 case ANDROID_EDGE_MODE_HIGH_QUALITY:
   1125                     msg = "HIGH_QUALITY";
   1126                     ret = 0;
   1127                     break;
   1128                 default:
   1129                     msg = "error: enum value out of range";
   1130             }
   1131             break;
   1132         }
   1133         case ANDROID_EDGE_STRENGTH: {
   1134             break;
   1135         }
   1136 
   1137         case ANDROID_FLASH_FIRING_POWER: {
   1138             break;
   1139         }
   1140         case ANDROID_FLASH_FIRING_TIME: {
   1141             break;
   1142         }
   1143         case ANDROID_FLASH_MODE: {
   1144             switch (value) {
   1145                 case ANDROID_FLASH_MODE_OFF:
   1146                     msg = "OFF";
   1147                     ret = 0;
   1148                     break;
   1149                 case ANDROID_FLASH_MODE_SINGLE:
   1150                     msg = "SINGLE";
   1151                     ret = 0;
   1152                     break;
   1153                 case ANDROID_FLASH_MODE_TORCH:
   1154                     msg = "TORCH";
   1155                     ret = 0;
   1156                     break;
   1157                 default:
   1158                     msg = "error: enum value out of range";
   1159             }
   1160             break;
   1161         }
   1162         case ANDROID_FLASH_COLOR_TEMPERATURE: {
   1163             break;
   1164         }
   1165         case ANDROID_FLASH_MAX_ENERGY: {
   1166             break;
   1167         }
   1168         case ANDROID_FLASH_STATE: {
   1169             switch (value) {
   1170                 case ANDROID_FLASH_STATE_UNAVAILABLE:
   1171                     msg = "UNAVAILABLE";
   1172                     ret = 0;
   1173                     break;
   1174                 case ANDROID_FLASH_STATE_CHARGING:
   1175                     msg = "CHARGING";
   1176                     ret = 0;
   1177                     break;
   1178                 case ANDROID_FLASH_STATE_READY:
   1179                     msg = "READY";
   1180                     ret = 0;
   1181                     break;
   1182                 case ANDROID_FLASH_STATE_FIRED:
   1183                     msg = "FIRED";
   1184                     ret = 0;
   1185                     break;
   1186                 default:
   1187                     msg = "error: enum value out of range";
   1188             }
   1189             break;
   1190         }
   1191 
   1192         case ANDROID_FLASH_INFO_AVAILABLE: {
   1193             break;
   1194         }
   1195         case ANDROID_FLASH_INFO_CHARGE_DURATION: {
   1196             break;
   1197         }
   1198 
   1199         case ANDROID_GEOMETRIC_MODE: {
   1200             switch (value) {
   1201                 case ANDROID_GEOMETRIC_MODE_OFF:
   1202                     msg = "OFF";
   1203                     ret = 0;
   1204                     break;
   1205                 case ANDROID_GEOMETRIC_MODE_FAST:
   1206                     msg = "FAST";
   1207                     ret = 0;
   1208                     break;
   1209                 case ANDROID_GEOMETRIC_MODE_HIGH_QUALITY:
   1210                     msg = "HIGH_QUALITY";
   1211                     ret = 0;
   1212                     break;
   1213                 default:
   1214                     msg = "error: enum value out of range";
   1215             }
   1216             break;
   1217         }
   1218         case ANDROID_GEOMETRIC_STRENGTH: {
   1219             break;
   1220         }
   1221 
   1222         case ANDROID_HOT_PIXEL_MODE: {
   1223             switch (value) {
   1224                 case ANDROID_HOT_PIXEL_MODE_OFF:
   1225                     msg = "OFF";
   1226                     ret = 0;
   1227                     break;
   1228                 case ANDROID_HOT_PIXEL_MODE_FAST:
   1229                     msg = "FAST";
   1230                     ret = 0;
   1231                     break;
   1232                 case ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY:
   1233                     msg = "HIGH_QUALITY";
   1234                     ret = 0;
   1235                     break;
   1236                 default:
   1237                     msg = "error: enum value out of range";
   1238             }
   1239             break;
   1240         }
   1241 
   1242         case ANDROID_HOT_PIXEL_INFO_MAP: {
   1243             break;
   1244         }
   1245 
   1246         case ANDROID_JPEG_GPS_COORDINATES: {
   1247             break;
   1248         }
   1249         case ANDROID_JPEG_GPS_PROCESSING_METHOD: {
   1250             break;
   1251         }
   1252         case ANDROID_JPEG_GPS_TIMESTAMP: {
   1253             break;
   1254         }
   1255         case ANDROID_JPEG_ORIENTATION: {
   1256             break;
   1257         }
   1258         case ANDROID_JPEG_QUALITY: {
   1259             break;
   1260         }
   1261         case ANDROID_JPEG_THUMBNAIL_QUALITY: {
   1262             break;
   1263         }
   1264         case ANDROID_JPEG_THUMBNAIL_SIZE: {
   1265             break;
   1266         }
   1267         case ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES: {
   1268             break;
   1269         }
   1270         case ANDROID_JPEG_MAX_SIZE: {
   1271             break;
   1272         }
   1273         case ANDROID_JPEG_SIZE: {
   1274             break;
   1275         }
   1276 
   1277         case ANDROID_LENS_APERTURE: {
   1278             break;
   1279         }
   1280         case ANDROID_LENS_FILTER_DENSITY: {
   1281             break;
   1282         }
   1283         case ANDROID_LENS_FOCAL_LENGTH: {
   1284             break;
   1285         }
   1286         case ANDROID_LENS_FOCUS_DISTANCE: {
   1287             break;
   1288         }
   1289         case ANDROID_LENS_OPTICAL_STABILIZATION_MODE: {
   1290             switch (value) {
   1291                 case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF:
   1292                     msg = "OFF";
   1293                     ret = 0;
   1294                     break;
   1295                 case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON:
   1296                     msg = "ON";
   1297                     ret = 0;
   1298                     break;
   1299                 default:
   1300                     msg = "error: enum value out of range";
   1301             }
   1302             break;
   1303         }
   1304         case ANDROID_LENS_FACING: {
   1305             switch (value) {
   1306                 case ANDROID_LENS_FACING_FRONT:
   1307                     msg = "FRONT";
   1308                     ret = 0;
   1309                     break;
   1310                 case ANDROID_LENS_FACING_BACK:
   1311                     msg = "BACK";
   1312                     ret = 0;
   1313                     break;
   1314                 default:
   1315                     msg = "error: enum value out of range";
   1316             }
   1317             break;
   1318         }
   1319         case ANDROID_LENS_OPTICAL_AXIS_ANGLE: {
   1320             break;
   1321         }
   1322         case ANDROID_LENS_POSITION: {
   1323             break;
   1324         }
   1325         case ANDROID_LENS_FOCUS_RANGE: {
   1326             break;
   1327         }
   1328         case ANDROID_LENS_STATE: {
   1329             switch (value) {
   1330                 case ANDROID_LENS_STATE_STATIONARY:
   1331                     msg = "STATIONARY";
   1332                     ret = 0;
   1333                     break;
   1334                 default:
   1335                     msg = "error: enum value out of range";
   1336             }
   1337             break;
   1338         }
   1339 
   1340         case ANDROID_LENS_INFO_AVAILABLE_APERTURES: {
   1341             break;
   1342         }
   1343         case ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES: {
   1344             break;
   1345         }
   1346         case ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS: {
   1347             break;
   1348         }
   1349         case ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION: {
   1350             break;
   1351         }
   1352         case ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP: {
   1353             break;
   1354         }
   1355         case ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP_SIZE: {
   1356             break;
   1357         }
   1358         case ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE: {
   1359             break;
   1360         }
   1361         case ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE: {
   1362             break;
   1363         }
   1364         case ANDROID_LENS_INFO_SHADING_MAP: {
   1365             break;
   1366         }
   1367         case ANDROID_LENS_INFO_SHADING_MAP_SIZE: {
   1368             break;
   1369         }
   1370 
   1371         case ANDROID_NOISE_REDUCTION_MODE: {
   1372             switch (value) {
   1373                 case ANDROID_NOISE_REDUCTION_MODE_OFF:
   1374                     msg = "OFF";
   1375                     ret = 0;
   1376                     break;
   1377                 case ANDROID_NOISE_REDUCTION_MODE_FAST:
   1378                     msg = "FAST";
   1379                     ret = 0;
   1380                     break;
   1381                 case ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY:
   1382                     msg = "HIGH_QUALITY";
   1383                     ret = 0;
   1384                     break;
   1385                 default:
   1386                     msg = "error: enum value out of range";
   1387             }
   1388             break;
   1389         }
   1390         case ANDROID_NOISE_REDUCTION_STRENGTH: {
   1391             break;
   1392         }
   1393 
   1394         case ANDROID_QUIRKS_METERING_CROP_REGION: {
   1395             break;
   1396         }
   1397         case ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO: {
   1398             break;
   1399         }
   1400         case ANDROID_QUIRKS_USE_ZSL_FORMAT: {
   1401             break;
   1402         }
   1403 
   1404         case ANDROID_REQUEST_FRAME_COUNT: {
   1405             break;
   1406         }
   1407         case ANDROID_REQUEST_ID: {
   1408             break;
   1409         }
   1410         case ANDROID_REQUEST_INPUT_STREAMS: {
   1411             break;
   1412         }
   1413         case ANDROID_REQUEST_METADATA_MODE: {
   1414             switch (value) {
   1415                 case ANDROID_REQUEST_METADATA_MODE_NONE:
   1416                     msg = "NONE";
   1417                     ret = 0;
   1418                     break;
   1419                 case ANDROID_REQUEST_METADATA_MODE_FULL:
   1420                     msg = "FULL";
   1421                     ret = 0;
   1422                     break;
   1423                 default:
   1424                     msg = "error: enum value out of range";
   1425             }
   1426             break;
   1427         }
   1428         case ANDROID_REQUEST_OUTPUT_STREAMS: {
   1429             break;
   1430         }
   1431         case ANDROID_REQUEST_TYPE: {
   1432             switch (value) {
   1433                 case ANDROID_REQUEST_TYPE_CAPTURE:
   1434                     msg = "CAPTURE";
   1435                     ret = 0;
   1436                     break;
   1437                 case ANDROID_REQUEST_TYPE_REPROCESS:
   1438                     msg = "REPROCESS";
   1439                     ret = 0;
   1440                     break;
   1441                 default:
   1442                     msg = "error: enum value out of range";
   1443             }
   1444             break;
   1445         }
   1446         case ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS: {
   1447             break;
   1448         }
   1449         case ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS: {
   1450             break;
   1451         }
   1452 
   1453         case ANDROID_SCALER_CROP_REGION: {
   1454             break;
   1455         }
   1456         case ANDROID_SCALER_AVAILABLE_FORMATS: {
   1457             switch (value) {
   1458                 case ANDROID_SCALER_AVAILABLE_FORMATS_RAW_SENSOR:
   1459                     msg = "RAW_SENSOR";
   1460                     ret = 0;
   1461                     break;
   1462                 case ANDROID_SCALER_AVAILABLE_FORMATS_YV12:
   1463                     msg = "YV12";
   1464                     ret = 0;
   1465                     break;
   1466                 case ANDROID_SCALER_AVAILABLE_FORMATS_YCrCb_420_SP:
   1467                     msg = "YCrCb_420_SP";
   1468                     ret = 0;
   1469                     break;
   1470                 case ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED:
   1471                     msg = "IMPLEMENTATION_DEFINED";
   1472                     ret = 0;
   1473                     break;
   1474                 case ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888:
   1475                     msg = "YCbCr_420_888";
   1476                     ret = 0;
   1477                     break;
   1478                 case ANDROID_SCALER_AVAILABLE_FORMATS_BLOB:
   1479                     msg = "BLOB";
   1480                     ret = 0;
   1481                     break;
   1482                 default:
   1483                     msg = "error: enum value out of range";
   1484             }
   1485             break;
   1486         }
   1487         case ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS: {
   1488             break;
   1489         }
   1490         case ANDROID_SCALER_AVAILABLE_JPEG_SIZES: {
   1491             break;
   1492         }
   1493         case ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM: {
   1494             break;
   1495         }
   1496         case ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS: {
   1497             break;
   1498         }
   1499         case ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES: {
   1500             break;
   1501         }
   1502         case ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS: {
   1503             break;
   1504         }
   1505         case ANDROID_SCALER_AVAILABLE_RAW_SIZES: {
   1506             break;
   1507         }
   1508 
   1509         case ANDROID_SENSOR_EXPOSURE_TIME: {
   1510             break;
   1511         }
   1512         case ANDROID_SENSOR_FRAME_DURATION: {
   1513             break;
   1514         }
   1515         case ANDROID_SENSOR_SENSITIVITY: {
   1516             break;
   1517         }
   1518         case ANDROID_SENSOR_BASE_GAIN_FACTOR: {
   1519             break;
   1520         }
   1521         case ANDROID_SENSOR_BLACK_LEVEL_PATTERN: {
   1522             break;
   1523         }
   1524         case ANDROID_SENSOR_CALIBRATION_TRANSFORM1: {
   1525             break;
   1526         }
   1527         case ANDROID_SENSOR_CALIBRATION_TRANSFORM2: {
   1528             break;
   1529         }
   1530         case ANDROID_SENSOR_COLOR_TRANSFORM1: {
   1531             break;
   1532         }
   1533         case ANDROID_SENSOR_COLOR_TRANSFORM2: {
   1534             break;
   1535         }
   1536         case ANDROID_SENSOR_FORWARD_MATRIX1: {
   1537             break;
   1538         }
   1539         case ANDROID_SENSOR_FORWARD_MATRIX2: {
   1540             break;
   1541         }
   1542         case ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY: {
   1543             break;
   1544         }
   1545         case ANDROID_SENSOR_NOISE_MODEL_COEFFICIENTS: {
   1546             break;
   1547         }
   1548         case ANDROID_SENSOR_ORIENTATION: {
   1549             break;
   1550         }
   1551         case ANDROID_SENSOR_REFERENCE_ILLUMINANT1: {
   1552             switch (value) {
   1553                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT:
   1554                     msg = "DAYLIGHT";
   1555                     ret = 0;
   1556                     break;
   1557                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT:
   1558                     msg = "FLUORESCENT";
   1559                     ret = 0;
   1560                     break;
   1561                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN:
   1562                     msg = "TUNGSTEN";
   1563                     ret = 0;
   1564                     break;
   1565                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLASH:
   1566                     msg = "FLASH";
   1567                     ret = 0;
   1568                     break;
   1569                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER:
   1570                     msg = "FINE_WEATHER";
   1571                     ret = 0;
   1572                     break;
   1573                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER:
   1574                     msg = "CLOUDY_WEATHER";
   1575                     ret = 0;
   1576                     break;
   1577                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_SHADE:
   1578                     msg = "SHADE";
   1579                     ret = 0;
   1580                     break;
   1581                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT:
   1582                     msg = "DAYLIGHT_FLUORESCENT";
   1583                     ret = 0;
   1584                     break;
   1585                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT:
   1586                     msg = "DAY_WHITE_FLUORESCENT";
   1587                     ret = 0;
   1588                     break;
   1589                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT:
   1590                     msg = "COOL_WHITE_FLUORESCENT";
   1591                     ret = 0;
   1592                     break;
   1593                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT:
   1594                     msg = "WHITE_FLUORESCENT";
   1595                     ret = 0;
   1596                     break;
   1597                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A:
   1598                     msg = "STANDARD_A";
   1599                     ret = 0;
   1600                     break;
   1601                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B:
   1602                     msg = "STANDARD_B";
   1603                     ret = 0;
   1604                     break;
   1605                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C:
   1606                     msg = "STANDARD_C";
   1607                     ret = 0;
   1608                     break;
   1609                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D55:
   1610                     msg = "D55";
   1611                     ret = 0;
   1612                     break;
   1613                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D65:
   1614                     msg = "D65";
   1615                     ret = 0;
   1616                     break;
   1617                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D75:
   1618                     msg = "D75";
   1619                     ret = 0;
   1620                     break;
   1621                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D50:
   1622                     msg = "D50";
   1623                     ret = 0;
   1624                     break;
   1625                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN:
   1626                     msg = "ISO_STUDIO_TUNGSTEN";
   1627                     ret = 0;
   1628                     break;
   1629                 default:
   1630                     msg = "error: enum value out of range";
   1631             }
   1632             break;
   1633         }
   1634         case ANDROID_SENSOR_REFERENCE_ILLUMINANT2: {
   1635             break;
   1636         }
   1637         case ANDROID_SENSOR_TIMESTAMP: {
   1638             break;
   1639         }
   1640 
   1641         case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE: {
   1642             break;
   1643         }
   1644         case ANDROID_SENSOR_INFO_AVAILABLE_SENSITIVITIES: {
   1645             break;
   1646         }
   1647         case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT: {
   1648             switch (value) {
   1649                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB:
   1650                     msg = "RGGB";
   1651                     ret = 0;
   1652                     break;
   1653                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG:
   1654                     msg = "GRBG";
   1655                     ret = 0;
   1656                     break;
   1657                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG:
   1658                     msg = "GBRG";
   1659                     ret = 0;
   1660                     break;
   1661                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR:
   1662                     msg = "BGGR";
   1663                     ret = 0;
   1664                     break;
   1665                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB:
   1666                     msg = "RGB";
   1667                     ret = 0;
   1668                     break;
   1669                 default:
   1670                     msg = "error: enum value out of range";
   1671             }
   1672             break;
   1673         }
   1674         case ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE: {
   1675             break;
   1676         }
   1677         case ANDROID_SENSOR_INFO_MAX_FRAME_DURATION: {
   1678             break;
   1679         }
   1680         case ANDROID_SENSOR_INFO_PHYSICAL_SIZE: {
   1681             break;
   1682         }
   1683         case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE: {
   1684             break;
   1685         }
   1686         case ANDROID_SENSOR_INFO_WHITE_LEVEL: {
   1687             break;
   1688         }
   1689 
   1690         case ANDROID_SHADING_MODE: {
   1691             switch (value) {
   1692                 case ANDROID_SHADING_MODE_OFF:
   1693                     msg = "OFF";
   1694                     ret = 0;
   1695                     break;
   1696                 case ANDROID_SHADING_MODE_FAST:
   1697                     msg = "FAST";
   1698                     ret = 0;
   1699                     break;
   1700                 case ANDROID_SHADING_MODE_HIGH_QUALITY:
   1701                     msg = "HIGH_QUALITY";
   1702                     ret = 0;
   1703                     break;
   1704                 default:
   1705                     msg = "error: enum value out of range";
   1706             }
   1707             break;
   1708         }
   1709         case ANDROID_SHADING_STRENGTH: {
   1710             break;
   1711         }
   1712 
   1713         case ANDROID_STATISTICS_FACE_DETECT_MODE: {
   1714             switch (value) {
   1715                 case ANDROID_STATISTICS_FACE_DETECT_MODE_OFF:
   1716                     msg = "OFF";
   1717                     ret = 0;
   1718                     break;
   1719                 case ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE:
   1720                     msg = "SIMPLE";
   1721                     ret = 0;
   1722                     break;
   1723                 case ANDROID_STATISTICS_FACE_DETECT_MODE_FULL:
   1724                     msg = "FULL";
   1725                     ret = 0;
   1726                     break;
   1727                 default:
   1728                     msg = "error: enum value out of range";
   1729             }
   1730             break;
   1731         }
   1732         case ANDROID_STATISTICS_HISTOGRAM_MODE: {
   1733             switch (value) {
   1734                 case ANDROID_STATISTICS_HISTOGRAM_MODE_OFF:
   1735                     msg = "OFF";
   1736                     ret = 0;
   1737                     break;
   1738                 case ANDROID_STATISTICS_HISTOGRAM_MODE_ON:
   1739                     msg = "ON";
   1740                     ret = 0;
   1741                     break;
   1742                 default:
   1743                     msg = "error: enum value out of range";
   1744             }
   1745             break;
   1746         }
   1747         case ANDROID_STATISTICS_SHARPNESS_MAP_MODE: {
   1748             switch (value) {
   1749                 case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_OFF:
   1750                     msg = "OFF";
   1751                     ret = 0;
   1752                     break;
   1753                 case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_ON:
   1754                     msg = "ON";
   1755                     ret = 0;
   1756                     break;
   1757                 default:
   1758                     msg = "error: enum value out of range";
   1759             }
   1760             break;
   1761         }
   1762         case ANDROID_STATISTICS_FACE_IDS: {
   1763             break;
   1764         }
   1765         case ANDROID_STATISTICS_FACE_LANDMARKS: {
   1766             break;
   1767         }
   1768         case ANDROID_STATISTICS_FACE_RECTANGLES: {
   1769             break;
   1770         }
   1771         case ANDROID_STATISTICS_FACE_SCORES: {
   1772             break;
   1773         }
   1774         case ANDROID_STATISTICS_HISTOGRAM: {
   1775             break;
   1776         }
   1777         case ANDROID_STATISTICS_SHARPNESS_MAP: {
   1778             break;
   1779         }
   1780 
   1781         case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: {
   1782             break;
   1783         }
   1784         case ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT: {
   1785             break;
   1786         }
   1787         case ANDROID_STATISTICS_INFO_MAX_FACE_COUNT: {
   1788             break;
   1789         }
   1790         case ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT: {
   1791             break;
   1792         }
   1793         case ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE: {
   1794             break;
   1795         }
   1796         case ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE: {
   1797             break;
   1798         }
   1799 
   1800         case ANDROID_TONEMAP_CURVE_BLUE: {
   1801             break;
   1802         }
   1803         case ANDROID_TONEMAP_CURVE_GREEN: {
   1804             break;
   1805         }
   1806         case ANDROID_TONEMAP_CURVE_RED: {
   1807             break;
   1808         }
   1809         case ANDROID_TONEMAP_MODE: {
   1810             switch (value) {
   1811                 case ANDROID_TONEMAP_MODE_CONTRAST_CURVE:
   1812                     msg = "CONTRAST_CURVE";
   1813                     ret = 0;
   1814                     break;
   1815                 case ANDROID_TONEMAP_MODE_FAST:
   1816                     msg = "FAST";
   1817                     ret = 0;
   1818                     break;
   1819                 case ANDROID_TONEMAP_MODE_HIGH_QUALITY:
   1820                     msg = "HIGH_QUALITY";
   1821                     ret = 0;
   1822                     break;
   1823                 default:
   1824                     msg = "error: enum value out of range";
   1825             }
   1826             break;
   1827         }
   1828         case ANDROID_TONEMAP_MAX_CURVE_POINTS: {
   1829             break;
   1830         }
   1831 
   1832         case ANDROID_LED_TRANSMIT: {
   1833             switch (value) {
   1834                 case ANDROID_LED_TRANSMIT_OFF:
   1835                     msg = "OFF";
   1836                     ret = 0;
   1837                     break;
   1838                 case ANDROID_LED_TRANSMIT_ON:
   1839                     msg = "ON";
   1840                     ret = 0;
   1841                     break;
   1842                 default:
   1843                     msg = "error: enum value out of range";
   1844             }
   1845             break;
   1846         }
   1847         case ANDROID_LED_AVAILABLE_LEDS: {
   1848             switch (value) {
   1849                 case ANDROID_LED_AVAILABLE_LEDS_TRANSMIT:
   1850                     msg = "TRANSMIT";
   1851                     ret = 0;
   1852                     break;
   1853                 default:
   1854                     msg = "error: enum value out of range";
   1855             }
   1856             break;
   1857         }
   1858 
   1859         case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL: {
   1860             switch (value) {
   1861                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED:
   1862                     msg = "LIMITED";
   1863                     ret = 0;
   1864                     break;
   1865                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL:
   1866                     msg = "FULL";
   1867                     ret = 0;
   1868                     break;
   1869                 default:
   1870                     msg = "error: enum value out of range";
   1871             }
   1872             break;
   1873         }
   1874 
   1875     }
   1876 
   1877     strncpy(dst, msg, size - 1);
   1878     dst[size - 1] = '\0';
   1879 
   1880     return ret;
   1881 }
   1882 
   1883 
   1884 #define CAMERA_METADATA_ENUM_STRING_MAX_SIZE 23
   1885