/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * !! Do not reference this file directly !!
 *
 * It is logically a part of camera_metadata.c.  It is broken out for ease of
 * maintaining the tag info.
 *
 * Array assignments are done using specified-index syntax to keep things in
 * sync with camera_metadata_tags.h
 */

/**
 * ! Do not edit this file directly !
 *
 * Generated automatically from camera_metadata_tag_info.mako
 */

const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
    [ANDROID_COLOR_CORRECTION]     = "android.colorCorrection",
    [ANDROID_CONTROL]              = "android.control",
    [ANDROID_DEMOSAIC]             = "android.demosaic",
    [ANDROID_EDGE]                 = "android.edge",
    [ANDROID_FLASH]                = "android.flash",
    [ANDROID_FLASH_INFO]           = "android.flash.info",
    [ANDROID_HOT_PIXEL]            = "android.hotPixel",
    [ANDROID_JPEG]                 = "android.jpeg",
    [ANDROID_LENS]                 = "android.lens",
    [ANDROID_LENS_INFO]            = "android.lens.info",
    [ANDROID_NOISE_REDUCTION]      = "android.noiseReduction",
    [ANDROID_QUIRKS]               = "android.quirks",
    [ANDROID_REQUEST]              = "android.request",
    [ANDROID_SCALER]               = "android.scaler",
    [ANDROID_SENSOR]               = "android.sensor",
    [ANDROID_SENSOR_INFO]          = "android.sensor.info",
    [ANDROID_SHADING]              = "android.shading",
    [ANDROID_STATISTICS]           = "android.statistics",
    [ANDROID_STATISTICS_INFO]      = "android.statistics.info",
    [ANDROID_TONEMAP]              = "android.tonemap",
    [ANDROID_LED]                  = "android.led",
    [ANDROID_INFO]                 = "android.info",
    [ANDROID_BLACK_LEVEL]          = "android.blackLevel",
    [ANDROID_SYNC]                 = "android.sync",
    [ANDROID_REPROCESS]            = "android.reprocess",
    [ANDROID_DEPTH]                = "android.depth",
    [ANDROID_LOGICAL_MULTI_CAMERA] = "android.logicalMultiCamera",
    [ANDROID_DISTORTION_CORRECTION]
                                    = "android.distortionCorrection",
    [ANDROID_HEIC]                 = "android.heic",
    [ANDROID_HEIC_INFO]            = "android.heic.info",
};

unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
    [ANDROID_COLOR_CORRECTION]     = { ANDROID_COLOR_CORRECTION_START,
                                       ANDROID_COLOR_CORRECTION_END },
    [ANDROID_CONTROL]              = { ANDROID_CONTROL_START,
                                       ANDROID_CONTROL_END },
    [ANDROID_DEMOSAIC]             = { ANDROID_DEMOSAIC_START,
                                       ANDROID_DEMOSAIC_END },
    [ANDROID_EDGE]                 = { ANDROID_EDGE_START,
                                       ANDROID_EDGE_END },
    [ANDROID_FLASH]                = { ANDROID_FLASH_START,
                                       ANDROID_FLASH_END },
    [ANDROID_FLASH_INFO]           = { ANDROID_FLASH_INFO_START,
                                       ANDROID_FLASH_INFO_END },
    [ANDROID_HOT_PIXEL]            = { ANDROID_HOT_PIXEL_START,
                                       ANDROID_HOT_PIXEL_END },
    [ANDROID_JPEG]                 = { ANDROID_JPEG_START,
                                       ANDROID_JPEG_END },
    [ANDROID_LENS]                 = { ANDROID_LENS_START,
                                       ANDROID_LENS_END },
    [ANDROID_LENS_INFO]            = { ANDROID_LENS_INFO_START,
                                       ANDROID_LENS_INFO_END },
    [ANDROID_NOISE_REDUCTION]      = { ANDROID_NOISE_REDUCTION_START,
                                       ANDROID_NOISE_REDUCTION_END },
    [ANDROID_QUIRKS]               = { ANDROID_QUIRKS_START,
                                       ANDROID_QUIRKS_END },
    [ANDROID_REQUEST]              = { ANDROID_REQUEST_START,
                                       ANDROID_REQUEST_END },
    [ANDROID_SCALER]               = { ANDROID_SCALER_START,
                                       ANDROID_SCALER_END },
    [ANDROID_SENSOR]               = { ANDROID_SENSOR_START,
                                       ANDROID_SENSOR_END },
    [ANDROID_SENSOR_INFO]          = { ANDROID_SENSOR_INFO_START,
                                       ANDROID_SENSOR_INFO_END },
    [ANDROID_SHADING]              = { ANDROID_SHADING_START,
                                       ANDROID_SHADING_END },
    [ANDROID_STATISTICS]           = { ANDROID_STATISTICS_START,
                                       ANDROID_STATISTICS_END },
    [ANDROID_STATISTICS_INFO]      = { ANDROID_STATISTICS_INFO_START,
                                       ANDROID_STATISTICS_INFO_END },
    [ANDROID_TONEMAP]              = { ANDROID_TONEMAP_START,
                                       ANDROID_TONEMAP_END },
    [ANDROID_LED]                  = { ANDROID_LED_START,
                                       ANDROID_LED_END },
    [ANDROID_INFO]                 = { ANDROID_INFO_START,
                                       ANDROID_INFO_END },
    [ANDROID_BLACK_LEVEL]          = { ANDROID_BLACK_LEVEL_START,
                                       ANDROID_BLACK_LEVEL_END },
    [ANDROID_SYNC]                 = { ANDROID_SYNC_START,
                                       ANDROID_SYNC_END },
    [ANDROID_REPROCESS]            = { ANDROID_REPROCESS_START,
                                       ANDROID_REPROCESS_END },
    [ANDROID_DEPTH]                = { ANDROID_DEPTH_START,
                                       ANDROID_DEPTH_END },
    [ANDROID_LOGICAL_MULTI_CAMERA] = { ANDROID_LOGICAL_MULTI_CAMERA_START,
                                       ANDROID_LOGICAL_MULTI_CAMERA_END },
    [ANDROID_DISTORTION_CORRECTION]
                                    = { ANDROID_DISTORTION_CORRECTION_START,
                                       ANDROID_DISTORTION_CORRECTION_END },
    [ANDROID_HEIC]                 = { ANDROID_HEIC_START,
                                       ANDROID_HEIC_END },
    [ANDROID_HEIC_INFO]            = { ANDROID_HEIC_INFO_START,
                                       ANDROID_HEIC_INFO_END },
};

static tag_info_t android_color_correction[ANDROID_COLOR_CORRECTION_END -
        ANDROID_COLOR_CORRECTION_START] = {
    [ ANDROID_COLOR_CORRECTION_MODE - ANDROID_COLOR_CORRECTION_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_COLOR_CORRECTION_TRANSFORM - ANDROID_COLOR_CORRECTION_START ] =
    { "transform",                     TYPE_RATIONAL
                },
    [ ANDROID_COLOR_CORRECTION_GAINS - ANDROID_COLOR_CORRECTION_START ] =
    { "gains",                         TYPE_FLOAT  },
    [ ANDROID_COLOR_CORRECTION_ABERRATION_MODE - ANDROID_COLOR_CORRECTION_START ] =
    { "aberrationMode",                TYPE_BYTE   },
    [ ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES - ANDROID_COLOR_CORRECTION_START ] =
    { "availableAberrationModes",      TYPE_BYTE   },
};

static tag_info_t android_control[ANDROID_CONTROL_END -
        ANDROID_CONTROL_START] = {
    [ ANDROID_CONTROL_AE_ANTIBANDING_MODE - ANDROID_CONTROL_START ] =
    { "aeAntibandingMode",             TYPE_BYTE   },
    [ ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION - ANDROID_CONTROL_START ] =
    { "aeExposureCompensation",        TYPE_INT32  },
    [ ANDROID_CONTROL_AE_LOCK - ANDROID_CONTROL_START ] =
    { "aeLock",                        TYPE_BYTE   },
    [ ANDROID_CONTROL_AE_MODE - ANDROID_CONTROL_START ] =
    { "aeMode",                        TYPE_BYTE   },
    [ ANDROID_CONTROL_AE_REGIONS - ANDROID_CONTROL_START ] =
    { "aeRegions",                     TYPE_INT32  },
    [ ANDROID_CONTROL_AE_TARGET_FPS_RANGE - ANDROID_CONTROL_START ] =
    { "aeTargetFpsRange",              TYPE_INT32  },
    [ ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER - ANDROID_CONTROL_START ] =
    { "aePrecaptureTrigger",           TYPE_BYTE   },
    [ ANDROID_CONTROL_AF_MODE - ANDROID_CONTROL_START ] =
    { "afMode",                        TYPE_BYTE   },
    [ ANDROID_CONTROL_AF_REGIONS - ANDROID_CONTROL_START ] =
    { "afRegions",                     TYPE_INT32  },
    [ ANDROID_CONTROL_AF_TRIGGER - ANDROID_CONTROL_START ] =
    { "afTrigger",                     TYPE_BYTE   },
    [ ANDROID_CONTROL_AWB_LOCK - ANDROID_CONTROL_START ] =
    { "awbLock",                       TYPE_BYTE   },
    [ ANDROID_CONTROL_AWB_MODE - ANDROID_CONTROL_START ] =
    { "awbMode",                       TYPE_BYTE   },
    [ ANDROID_CONTROL_AWB_REGIONS - ANDROID_CONTROL_START ] =
    { "awbRegions",                    TYPE_INT32  },
    [ ANDROID_CONTROL_CAPTURE_INTENT - ANDROID_CONTROL_START ] =
    { "captureIntent",                 TYPE_BYTE   },
    [ ANDROID_CONTROL_EFFECT_MODE - ANDROID_CONTROL_START ] =
    { "effectMode",                    TYPE_BYTE   },
    [ ANDROID_CONTROL_MODE - ANDROID_CONTROL_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_CONTROL_SCENE_MODE - ANDROID_CONTROL_START ] =
    { "sceneMode",                     TYPE_BYTE   },
    [ ANDROID_CONTROL_VIDEO_STABILIZATION_MODE - ANDROID_CONTROL_START ] =
    { "videoStabilizationMode",        TYPE_BYTE   },
    [ ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES - ANDROID_CONTROL_START ] =
    { "aeAvailableAntibandingModes",   TYPE_BYTE   },
    [ ANDROID_CONTROL_AE_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
    { "aeAvailableModes",              TYPE_BYTE   },
    [ ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES - ANDROID_CONTROL_START ] =
    { "aeAvailableTargetFpsRanges",    TYPE_INT32  },
    [ ANDROID_CONTROL_AE_COMPENSATION_RANGE - ANDROID_CONTROL_START ] =
    { "aeCompensationRange",           TYPE_INT32  },
    [ ANDROID_CONTROL_AE_COMPENSATION_STEP - ANDROID_CONTROL_START ] =
    { "aeCompensationStep",            TYPE_RATIONAL
                },
    [ ANDROID_CONTROL_AF_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
    { "afAvailableModes",              TYPE_BYTE   },
    [ ANDROID_CONTROL_AVAILABLE_EFFECTS - ANDROID_CONTROL_START ] =
    { "availableEffects",              TYPE_BYTE   },
    [ ANDROID_CONTROL_AVAILABLE_SCENE_MODES - ANDROID_CONTROL_START ] =
    { "availableSceneModes",           TYPE_BYTE   },
    [ ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES - ANDROID_CONTROL_START ] =
    { "availableVideoStabilizationModes",
                                        TYPE_BYTE   },
    [ ANDROID_CONTROL_AWB_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
    { "awbAvailableModes",             TYPE_BYTE   },
    [ ANDROID_CONTROL_MAX_REGIONS - ANDROID_CONTROL_START ] =
    { "maxRegions",                    TYPE_INT32  },
    [ ANDROID_CONTROL_SCENE_MODE_OVERRIDES - ANDROID_CONTROL_START ] =
    { "sceneModeOverrides",            TYPE_BYTE   },
    [ ANDROID_CONTROL_AE_PRECAPTURE_ID - ANDROID_CONTROL_START ] =
    { "aePrecaptureId",                TYPE_INT32  },
    [ ANDROID_CONTROL_AE_STATE - ANDROID_CONTROL_START ] =
    { "aeState",                       TYPE_BYTE   },
    [ ANDROID_CONTROL_AF_STATE - ANDROID_CONTROL_START ] =
    { "afState",                       TYPE_BYTE   },
    [ ANDROID_CONTROL_AF_TRIGGER_ID - ANDROID_CONTROL_START ] =
    { "afTriggerId",                   TYPE_INT32  },
    [ ANDROID_CONTROL_AWB_STATE - ANDROID_CONTROL_START ] =
    { "awbState",                      TYPE_BYTE   },
    [ ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS - ANDROID_CONTROL_START ] =
    { "availableHighSpeedVideoConfigurations",
                                        TYPE_INT32  },
    [ ANDROID_CONTROL_AE_LOCK_AVAILABLE - ANDROID_CONTROL_START ] =
    { "aeLockAvailable",               TYPE_BYTE   },
    [ ANDROID_CONTROL_AWB_LOCK_AVAILABLE - ANDROID_CONTROL_START ] =
    { "awbLockAvailable",              TYPE_BYTE   },
    [ ANDROID_CONTROL_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
    { "availableModes",                TYPE_BYTE   },
    [ ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE - ANDROID_CONTROL_START ] =
    { "postRawSensitivityBoostRange",  TYPE_INT32  },
    [ ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST - ANDROID_CONTROL_START ] =
    { "postRawSensitivityBoost",       TYPE_INT32  },
    [ ANDROID_CONTROL_ENABLE_ZSL - ANDROID_CONTROL_START ] =
    { "enableZsl",                     TYPE_BYTE   },
    [ ANDROID_CONTROL_AF_SCENE_CHANGE - ANDROID_CONTROL_START ] =
    { "afSceneChange",                 TYPE_BYTE   },
    [ ANDROID_CONTROL_AVAILABLE_BOKEH_MAX_SIZES - ANDROID_CONTROL_START ] =
    { "availableBokehMaxSizes",        TYPE_INT32  },
    [ ANDROID_CONTROL_AVAILABLE_BOKEH_ZOOM_RATIO_RANGES - ANDROID_CONTROL_START ] =
    { "availableBokehZoomRatioRanges", TYPE_FLOAT  },
    [ ANDROID_CONTROL_BOKEH_MODE - ANDROID_CONTROL_START ] =
    { "bokehMode",                     TYPE_BYTE   },
    [ ANDROID_CONTROL_ZOOM_RATIO_RANGE - ANDROID_CONTROL_START ] =
    { "zoomRatioRange",                TYPE_FLOAT  },
    [ ANDROID_CONTROL_ZOOM_RATIO - ANDROID_CONTROL_START ] =
    { "zoomRatio",                     TYPE_FLOAT  },
};

static tag_info_t android_demosaic[ANDROID_DEMOSAIC_END -
        ANDROID_DEMOSAIC_START] = {
    [ ANDROID_DEMOSAIC_MODE - ANDROID_DEMOSAIC_START ] =
    { "mode",                          TYPE_BYTE   },
};

static tag_info_t android_edge[ANDROID_EDGE_END -
        ANDROID_EDGE_START] = {
    [ ANDROID_EDGE_MODE - ANDROID_EDGE_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_EDGE_STRENGTH - ANDROID_EDGE_START ] =
    { "strength",                      TYPE_BYTE   },
    [ ANDROID_EDGE_AVAILABLE_EDGE_MODES - ANDROID_EDGE_START ] =
    { "availableEdgeModes",            TYPE_BYTE   },
};

static tag_info_t android_flash[ANDROID_FLASH_END -
        ANDROID_FLASH_START] = {
    [ ANDROID_FLASH_FIRING_POWER - ANDROID_FLASH_START ] =
    { "firingPower",                   TYPE_BYTE   },
    [ ANDROID_FLASH_FIRING_TIME - ANDROID_FLASH_START ] =
    { "firingTime",                    TYPE_INT64  },
    [ ANDROID_FLASH_MODE - ANDROID_FLASH_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_FLASH_COLOR_TEMPERATURE - ANDROID_FLASH_START ] =
    { "colorTemperature",              TYPE_BYTE   },
    [ ANDROID_FLASH_MAX_ENERGY - ANDROID_FLASH_START ] =
    { "maxEnergy",                     TYPE_BYTE   },
    [ ANDROID_FLASH_STATE - ANDROID_FLASH_START ] =
    { "state",                         TYPE_BYTE   },
};

static tag_info_t android_flash_info[ANDROID_FLASH_INFO_END -
        ANDROID_FLASH_INFO_START] = {
    [ ANDROID_FLASH_INFO_AVAILABLE - ANDROID_FLASH_INFO_START ] =
    { "available",                     TYPE_BYTE   },
    [ ANDROID_FLASH_INFO_CHARGE_DURATION - ANDROID_FLASH_INFO_START ] =
    { "chargeDuration",                TYPE_INT64  },
};

static tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END -
        ANDROID_HOT_PIXEL_START] = {
    [ ANDROID_HOT_PIXEL_MODE - ANDROID_HOT_PIXEL_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES - ANDROID_HOT_PIXEL_START ] =
    { "availableHotPixelModes",        TYPE_BYTE   },
};

static tag_info_t android_jpeg[ANDROID_JPEG_END -
        ANDROID_JPEG_START] = {
    [ ANDROID_JPEG_GPS_COORDINATES - ANDROID_JPEG_START ] =
    { "gpsCoordinates",                TYPE_DOUBLE },
    [ ANDROID_JPEG_GPS_PROCESSING_METHOD - ANDROID_JPEG_START ] =
    { "gpsProcessingMethod",           TYPE_BYTE   },
    [ ANDROID_JPEG_GPS_TIMESTAMP - ANDROID_JPEG_START ] =
    { "gpsTimestamp",                  TYPE_INT64  },
    [ ANDROID_JPEG_ORIENTATION - ANDROID_JPEG_START ] =
    { "orientation",                   TYPE_INT32  },
    [ ANDROID_JPEG_QUALITY - ANDROID_JPEG_START ] =
    { "quality",                       TYPE_BYTE   },
    [ ANDROID_JPEG_THUMBNAIL_QUALITY - ANDROID_JPEG_START ] =
    { "thumbnailQuality",              TYPE_BYTE   },
    [ ANDROID_JPEG_THUMBNAIL_SIZE - ANDROID_JPEG_START ] =
    { "thumbnailSize",                 TYPE_INT32  },
    [ ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES - ANDROID_JPEG_START ] =
    { "availableThumbnailSizes",       TYPE_INT32  },
    [ ANDROID_JPEG_MAX_SIZE - ANDROID_JPEG_START ] =
    { "maxSize",                       TYPE_INT32  },
    [ ANDROID_JPEG_SIZE - ANDROID_JPEG_START ] =
    { "size",                          TYPE_INT32  },
};

static tag_info_t android_lens[ANDROID_LENS_END -
        ANDROID_LENS_START] = {
    [ ANDROID_LENS_APERTURE - ANDROID_LENS_START ] =
    { "aperture",                      TYPE_FLOAT  },
    [ ANDROID_LENS_FILTER_DENSITY - ANDROID_LENS_START ] =
    { "filterDensity",                 TYPE_FLOAT  },
    [ ANDROID_LENS_FOCAL_LENGTH - ANDROID_LENS_START ] =
    { "focalLength",                   TYPE_FLOAT  },
    [ ANDROID_LENS_FOCUS_DISTANCE - ANDROID_LENS_START ] =
    { "focusDistance",                 TYPE_FLOAT  },
    [ ANDROID_LENS_OPTICAL_STABILIZATION_MODE - ANDROID_LENS_START ] =
    { "opticalStabilizationMode",      TYPE_BYTE   },
    [ ANDROID_LENS_FACING - ANDROID_LENS_START ] =
    { "facing",                        TYPE_BYTE   },
    [ ANDROID_LENS_POSE_ROTATION - ANDROID_LENS_START ] =
    { "poseRotation",                  TYPE_FLOAT  },
    [ ANDROID_LENS_POSE_TRANSLATION - ANDROID_LENS_START ] =
    { "poseTranslation",               TYPE_FLOAT  },
    [ ANDROID_LENS_FOCUS_RANGE - ANDROID_LENS_START ] =
    { "focusRange",                    TYPE_FLOAT  },
    [ ANDROID_LENS_STATE - ANDROID_LENS_START ] =
    { "state",                         TYPE_BYTE   },
    [ ANDROID_LENS_INTRINSIC_CALIBRATION - ANDROID_LENS_START ] =
    { "intrinsicCalibration",          TYPE_FLOAT  },
    [ ANDROID_LENS_RADIAL_DISTORTION - ANDROID_LENS_START ] =
    { "radialDistortion",              TYPE_FLOAT  },
    [ ANDROID_LENS_POSE_REFERENCE - ANDROID_LENS_START ] =
    { "poseReference",                 TYPE_BYTE   },
    [ ANDROID_LENS_DISTORTION - ANDROID_LENS_START ] =
    { "distortion",                    TYPE_FLOAT  },
};

static tag_info_t android_lens_info[ANDROID_LENS_INFO_END -
        ANDROID_LENS_INFO_START] = {
    [ ANDROID_LENS_INFO_AVAILABLE_APERTURES - ANDROID_LENS_INFO_START ] =
    { "availableApertures",            TYPE_FLOAT  },
    [ ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES - ANDROID_LENS_INFO_START ] =
    { "availableFilterDensities",      TYPE_FLOAT  },
    [ ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS - ANDROID_LENS_INFO_START ] =
    { "availableFocalLengths",         TYPE_FLOAT  },
    [ ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION - ANDROID_LENS_INFO_START ] =
    { "availableOpticalStabilization", TYPE_BYTE   },
    [ ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE - ANDROID_LENS_INFO_START ] =
    { "hyperfocalDistance",            TYPE_FLOAT  },
    [ ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE - ANDROID_LENS_INFO_START ] =
    { "minimumFocusDistance",          TYPE_FLOAT  },
    [ ANDROID_LENS_INFO_SHADING_MAP_SIZE - ANDROID_LENS_INFO_START ] =
    { "shadingMapSize",                TYPE_INT32  },
    [ ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION - ANDROID_LENS_INFO_START ] =
    { "focusDistanceCalibration",      TYPE_BYTE   },
};

static tag_info_t android_noise_reduction[ANDROID_NOISE_REDUCTION_END -
        ANDROID_NOISE_REDUCTION_START] = {
    [ ANDROID_NOISE_REDUCTION_MODE - ANDROID_NOISE_REDUCTION_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_NOISE_REDUCTION_STRENGTH - ANDROID_NOISE_REDUCTION_START ] =
    { "strength",                      TYPE_BYTE   },
    [ ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES - ANDROID_NOISE_REDUCTION_START ] =
    { "availableNoiseReductionModes",  TYPE_BYTE   },
};

static tag_info_t android_quirks[ANDROID_QUIRKS_END -
        ANDROID_QUIRKS_START] = {
    [ ANDROID_QUIRKS_METERING_CROP_REGION - ANDROID_QUIRKS_START ] =
    { "meteringCropRegion",            TYPE_BYTE   },
    [ ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO - ANDROID_QUIRKS_START ] =
    { "triggerAfWithAuto",             TYPE_BYTE   },
    [ ANDROID_QUIRKS_USE_ZSL_FORMAT - ANDROID_QUIRKS_START ] =
    { "useZslFormat",                  TYPE_BYTE   },
    [ ANDROID_QUIRKS_USE_PARTIAL_RESULT - ANDROID_QUIRKS_START ] =
    { "usePartialResult",              TYPE_BYTE   },
    [ ANDROID_QUIRKS_PARTIAL_RESULT - ANDROID_QUIRKS_START ] =
    { "partialResult",                 TYPE_BYTE   },
};

static tag_info_t android_request[ANDROID_REQUEST_END -
        ANDROID_REQUEST_START] = {
    [ ANDROID_REQUEST_FRAME_COUNT - ANDROID_REQUEST_START ] =
    { "frameCount",                    TYPE_INT32  },
    [ ANDROID_REQUEST_ID - ANDROID_REQUEST_START ] =
    { "id",                            TYPE_INT32  },
    [ ANDROID_REQUEST_INPUT_STREAMS - ANDROID_REQUEST_START ] =
    { "inputStreams",                  TYPE_INT32  },
    [ ANDROID_REQUEST_METADATA_MODE - ANDROID_REQUEST_START ] =
    { "metadataMode",                  TYPE_BYTE   },
    [ ANDROID_REQUEST_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
    { "outputStreams",                 TYPE_INT32  },
    [ ANDROID_REQUEST_TYPE - ANDROID_REQUEST_START ] =
    { "type",                          TYPE_BYTE   },
    [ ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
    { "maxNumOutputStreams",           TYPE_INT32  },
    [ ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS - ANDROID_REQUEST_START ] =
    { "maxNumReprocessStreams",        TYPE_INT32  },
    [ ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS - ANDROID_REQUEST_START ] =
    { "maxNumInputStreams",            TYPE_INT32  },
    [ ANDROID_REQUEST_PIPELINE_DEPTH - ANDROID_REQUEST_START ] =
    { "pipelineDepth",                 TYPE_BYTE   },
    [ ANDROID_REQUEST_PIPELINE_MAX_DEPTH - ANDROID_REQUEST_START ] =
    { "pipelineMaxDepth",              TYPE_BYTE   },
    [ ANDROID_REQUEST_PARTIAL_RESULT_COUNT - ANDROID_REQUEST_START ] =
    { "partialResultCount",            TYPE_INT32  },
    [ ANDROID_REQUEST_AVAILABLE_CAPABILITIES - ANDROID_REQUEST_START ] =
    { "availableCapabilities",         TYPE_BYTE   },
    [ ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS - ANDROID_REQUEST_START ] =
    { "availableRequestKeys",          TYPE_INT32  },
    [ ANDROID_REQUEST_AVAILABLE_RESULT_KEYS - ANDROID_REQUEST_START ] =
    { "availableResultKeys",           TYPE_INT32  },
    [ ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS - ANDROID_REQUEST_START ] =
    { "availableCharacteristicsKeys",  TYPE_INT32  },
    [ ANDROID_REQUEST_AVAILABLE_SESSION_KEYS - ANDROID_REQUEST_START ] =
    { "availableSessionKeys",          TYPE_INT32  },
    [ ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS - ANDROID_REQUEST_START ] =
    { "availablePhysicalCameraRequestKeys",
                                        TYPE_INT32  },
    [ ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION - ANDROID_REQUEST_START ] =
    { "characteristicKeysNeedingPermission",
                                        TYPE_INT32  },
};

static tag_info_t android_scaler[ANDROID_SCALER_END -
        ANDROID_SCALER_START] = {
    [ ANDROID_SCALER_CROP_REGION - ANDROID_SCALER_START ] =
    { "cropRegion",                    TYPE_INT32  },
    [ ANDROID_SCALER_AVAILABLE_FORMATS - ANDROID_SCALER_START ] =
    { "availableFormats",              TYPE_INT32  },
    [ ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS - ANDROID_SCALER_START ] =
    { "availableJpegMinDurations",     TYPE_INT64  },
    [ ANDROID_SCALER_AVAILABLE_JPEG_SIZES - ANDROID_SCALER_START ] =
    { "availableJpegSizes",            TYPE_INT32  },
    [ ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM - ANDROID_SCALER_START ] =
    { "availableMaxDigitalZoom",       TYPE_FLOAT  },
    [ ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS - ANDROID_SCALER_START ] =
    { "availableProcessedMinDurations",
                                        TYPE_INT64  },
    [ ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES - ANDROID_SCALER_START ] =
    { "availableProcessedSizes",       TYPE_INT32  },
    [ ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS - ANDROID_SCALER_START ] =
    { "availableRawMinDurations",      TYPE_INT64  },
    [ ANDROID_SCALER_AVAILABLE_RAW_SIZES - ANDROID_SCALER_START ] =
    { "availableRawSizes",             TYPE_INT32  },
    [ ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP - ANDROID_SCALER_START ] =
    { "availableInputOutputFormatsMap",
                                        TYPE_INT32  },
    [ ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS - ANDROID_SCALER_START ] =
    { "availableStreamConfigurations", TYPE_INT32  },
    [ ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS - ANDROID_SCALER_START ] =
    { "availableMinFrameDurations",    TYPE_INT64  },
    [ ANDROID_SCALER_AVAILABLE_STALL_DURATIONS - ANDROID_SCALER_START ] =
    { "availableStallDurations",       TYPE_INT64  },
    [ ANDROID_SCALER_CROPPING_TYPE - ANDROID_SCALER_START ] =
    { "croppingType",                  TYPE_BYTE   },
    [ ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS - ANDROID_SCALER_START ] =
    { "availableRecommendedStreamConfigurations",
                                        TYPE_INT32  },
    [ ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP - ANDROID_SCALER_START ] =
    { "availableRecommendedInputOutputFormatsMap",
                                        TYPE_INT32  },
};

static tag_info_t android_sensor[ANDROID_SENSOR_END -
        ANDROID_SENSOR_START] = {
    [ ANDROID_SENSOR_EXPOSURE_TIME - ANDROID_SENSOR_START ] =
    { "exposureTime",                  TYPE_INT64  },
    [ ANDROID_SENSOR_FRAME_DURATION - ANDROID_SENSOR_START ] =
    { "frameDuration",                 TYPE_INT64  },
    [ ANDROID_SENSOR_SENSITIVITY - ANDROID_SENSOR_START ] =
    { "sensitivity",                   TYPE_INT32  },
    [ ANDROID_SENSOR_REFERENCE_ILLUMINANT1 - ANDROID_SENSOR_START ] =
    { "referenceIlluminant1",          TYPE_BYTE   },
    [ ANDROID_SENSOR_REFERENCE_ILLUMINANT2 - ANDROID_SENSOR_START ] =
    { "referenceIlluminant2",          TYPE_BYTE   },
    [ ANDROID_SENSOR_CALIBRATION_TRANSFORM1 - ANDROID_SENSOR_START ] =
    { "calibrationTransform1",         TYPE_RATIONAL
                },
    [ ANDROID_SENSOR_CALIBRATION_TRANSFORM2 - ANDROID_SENSOR_START ] =
    { "calibrationTransform2",         TYPE_RATIONAL
                },
    [ ANDROID_SENSOR_COLOR_TRANSFORM1 - ANDROID_SENSOR_START ] =
    { "colorTransform1",               TYPE_RATIONAL
                },
    [ ANDROID_SENSOR_COLOR_TRANSFORM2 - ANDROID_SENSOR_START ] =
    { "colorTransform2",               TYPE_RATIONAL
                },
    [ ANDROID_SENSOR_FORWARD_MATRIX1 - ANDROID_SENSOR_START ] =
    { "forwardMatrix1",                TYPE_RATIONAL
                },
    [ ANDROID_SENSOR_FORWARD_MATRIX2 - ANDROID_SENSOR_START ] =
    { "forwardMatrix2",                TYPE_RATIONAL
                },
    [ ANDROID_SENSOR_BASE_GAIN_FACTOR - ANDROID_SENSOR_START ] =
    { "baseGainFactor",                TYPE_RATIONAL
                },
    [ ANDROID_SENSOR_BLACK_LEVEL_PATTERN - ANDROID_SENSOR_START ] =
    { "blackLevelPattern",             TYPE_INT32  },
    [ ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY - ANDROID_SENSOR_START ] =
    { "maxAnalogSensitivity",          TYPE_INT32  },
    [ ANDROID_SENSOR_ORIENTATION - ANDROID_SENSOR_START ] =
    { "orientation",                   TYPE_INT32  },
    [ ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS - ANDROID_SENSOR_START ] =
    { "profileHueSatMapDimensions",    TYPE_INT32  },
    [ ANDROID_SENSOR_TIMESTAMP - ANDROID_SENSOR_START ] =
    { "timestamp",                     TYPE_INT64  },
    [ ANDROID_SENSOR_TEMPERATURE - ANDROID_SENSOR_START ] =
    { "temperature",                   TYPE_FLOAT  },
    [ ANDROID_SENSOR_NEUTRAL_COLOR_POINT - ANDROID_SENSOR_START ] =
    { "neutralColorPoint",             TYPE_RATIONAL
                },
    [ ANDROID_SENSOR_NOISE_PROFILE - ANDROID_SENSOR_START ] =
    { "noiseProfile",                  TYPE_DOUBLE },
    [ ANDROID_SENSOR_PROFILE_HUE_SAT_MAP - ANDROID_SENSOR_START ] =
    { "profileHueSatMap",              TYPE_FLOAT  },
    [ ANDROID_SENSOR_PROFILE_TONE_CURVE - ANDROID_SENSOR_START ] =
    { "profileToneCurve",              TYPE_FLOAT  },
    [ ANDROID_SENSOR_GREEN_SPLIT - ANDROID_SENSOR_START ] =
    { "greenSplit",                    TYPE_FLOAT  },
    [ ANDROID_SENSOR_TEST_PATTERN_DATA - ANDROID_SENSOR_START ] =
    { "testPatternData",               TYPE_INT32  },
    [ ANDROID_SENSOR_TEST_PATTERN_MODE - ANDROID_SENSOR_START ] =
    { "testPatternMode",               TYPE_INT32  },
    [ ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES - ANDROID_SENSOR_START ] =
    { "availableTestPatternModes",     TYPE_INT32  },
    [ ANDROID_SENSOR_ROLLING_SHUTTER_SKEW - ANDROID_SENSOR_START ] =
    { "rollingShutterSkew",            TYPE_INT64  },
    [ ANDROID_SENSOR_OPTICAL_BLACK_REGIONS - ANDROID_SENSOR_START ] =
    { "opticalBlackRegions",           TYPE_INT32  },
    [ ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL - ANDROID_SENSOR_START ] =
    { "dynamicBlackLevel",             TYPE_FLOAT  },
    [ ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL - ANDROID_SENSOR_START ] =
    { "dynamicWhiteLevel",             TYPE_INT32  },
    [ ANDROID_SENSOR_OPAQUE_RAW_SIZE - ANDROID_SENSOR_START ] =
    { "opaqueRawSize",                 TYPE_INT32  },
};

static tag_info_t android_sensor_info[ANDROID_SENSOR_INFO_END -
        ANDROID_SENSOR_INFO_START] = {
    [ ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
    { "activeArraySize",               TYPE_INT32  },
    [ ANDROID_SENSOR_INFO_SENSITIVITY_RANGE - ANDROID_SENSOR_INFO_START ] =
    { "sensitivityRange",              TYPE_INT32  },
    [ ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT - ANDROID_SENSOR_INFO_START ] =
    { "colorFilterArrangement",        TYPE_BYTE   },
    [ ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE - ANDROID_SENSOR_INFO_START ] =
    { "exposureTimeRange",             TYPE_INT64  },
    [ ANDROID_SENSOR_INFO_MAX_FRAME_DURATION - ANDROID_SENSOR_INFO_START ] =
    { "maxFrameDuration",              TYPE_INT64  },
    [ ANDROID_SENSOR_INFO_PHYSICAL_SIZE - ANDROID_SENSOR_INFO_START ] =
    { "physicalSize",                  TYPE_FLOAT  },
    [ ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
    { "pixelArraySize",                TYPE_INT32  },
    [ ANDROID_SENSOR_INFO_WHITE_LEVEL - ANDROID_SENSOR_INFO_START ] =
    { "whiteLevel",                    TYPE_INT32  },
    [ ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE - ANDROID_SENSOR_INFO_START ] =
    { "timestampSource",               TYPE_BYTE   },
    [ ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED - ANDROID_SENSOR_INFO_START ] =
    { "lensShadingApplied",            TYPE_BYTE   },
    [ ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
    { "preCorrectionActiveArraySize",  TYPE_INT32  },
};

static tag_info_t android_shading[ANDROID_SHADING_END -
        ANDROID_SHADING_START] = {
    [ ANDROID_SHADING_MODE - ANDROID_SHADING_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_SHADING_STRENGTH - ANDROID_SHADING_START ] =
    { "strength",                      TYPE_BYTE   },
    [ ANDROID_SHADING_AVAILABLE_MODES - ANDROID_SHADING_START ] =
    { "availableModes",                TYPE_BYTE   },
};

static tag_info_t android_statistics[ANDROID_STATISTICS_END -
        ANDROID_STATISTICS_START] = {
    [ ANDROID_STATISTICS_FACE_DETECT_MODE - ANDROID_STATISTICS_START ] =
    { "faceDetectMode",                TYPE_BYTE   },
    [ ANDROID_STATISTICS_HISTOGRAM_MODE - ANDROID_STATISTICS_START ] =
    { "histogramMode",                 TYPE_BYTE   },
    [ ANDROID_STATISTICS_SHARPNESS_MAP_MODE - ANDROID_STATISTICS_START ] =
    { "sharpnessMapMode",              TYPE_BYTE   },
    [ ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE - ANDROID_STATISTICS_START ] =
    { "hotPixelMapMode",               TYPE_BYTE   },
    [ ANDROID_STATISTICS_FACE_IDS - ANDROID_STATISTICS_START ] =
    { "faceIds",                       TYPE_INT32  },
    [ ANDROID_STATISTICS_FACE_LANDMARKS - ANDROID_STATISTICS_START ] =
    { "faceLandmarks",                 TYPE_INT32  },
    [ ANDROID_STATISTICS_FACE_RECTANGLES - ANDROID_STATISTICS_START ] =
    { "faceRectangles",                TYPE_INT32  },
    [ ANDROID_STATISTICS_FACE_SCORES - ANDROID_STATISTICS_START ] =
    { "faceScores",                    TYPE_BYTE   },
    [ ANDROID_STATISTICS_HISTOGRAM - ANDROID_STATISTICS_START ] =
    { "histogram",                     TYPE_INT32  },
    [ ANDROID_STATISTICS_SHARPNESS_MAP - ANDROID_STATISTICS_START ] =
    { "sharpnessMap",                  TYPE_INT32  },
    [ ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP - ANDROID_STATISTICS_START ] =
    { "lensShadingCorrectionMap",      TYPE_BYTE   },
    [ ANDROID_STATISTICS_LENS_SHADING_MAP - ANDROID_STATISTICS_START ] =
    { "lensShadingMap",                TYPE_FLOAT  },
    [ ANDROID_STATISTICS_PREDICTED_COLOR_GAINS - ANDROID_STATISTICS_START ] =
    { "predictedColorGains",           TYPE_FLOAT  },
    [ ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM - ANDROID_STATISTICS_START ] =
    { "predictedColorTransform",       TYPE_RATIONAL
                },
    [ ANDROID_STATISTICS_SCENE_FLICKER - ANDROID_STATISTICS_START ] =
    { "sceneFlicker",                  TYPE_BYTE   },
    [ ANDROID_STATISTICS_HOT_PIXEL_MAP - ANDROID_STATISTICS_START ] =
    { "hotPixelMap",                   TYPE_INT32  },
    [ ANDROID_STATISTICS_LENS_SHADING_MAP_MODE - ANDROID_STATISTICS_START ] =
    { "lensShadingMapMode",            TYPE_BYTE   },
    [ ANDROID_STATISTICS_OIS_DATA_MODE - ANDROID_STATISTICS_START ] =
    { "oisDataMode",                   TYPE_BYTE   },
    [ ANDROID_STATISTICS_OIS_TIMESTAMPS - ANDROID_STATISTICS_START ] =
    { "oisTimestamps",                 TYPE_INT64  },
    [ ANDROID_STATISTICS_OIS_X_SHIFTS - ANDROID_STATISTICS_START ] =
    { "oisXShifts",                    TYPE_FLOAT  },
    [ ANDROID_STATISTICS_OIS_Y_SHIFTS - ANDROID_STATISTICS_START ] =
    { "oisYShifts",                    TYPE_FLOAT  },
};

static tag_info_t android_statistics_info[ANDROID_STATISTICS_INFO_END -
        ANDROID_STATISTICS_INFO_START] = {
    [ ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES - ANDROID_STATISTICS_INFO_START ] =
    { "availableFaceDetectModes",      TYPE_BYTE   },
    [ ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT - ANDROID_STATISTICS_INFO_START ] =
    { "histogramBucketCount",          TYPE_INT32  },
    [ ANDROID_STATISTICS_INFO_MAX_FACE_COUNT - ANDROID_STATISTICS_INFO_START ] =
    { "maxFaceCount",                  TYPE_INT32  },
    [ ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT - ANDROID_STATISTICS_INFO_START ] =
    { "maxHistogramCount",             TYPE_INT32  },
    [ ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE - ANDROID_STATISTICS_INFO_START ] =
    { "maxSharpnessMapValue",          TYPE_INT32  },
    [ ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE - ANDROID_STATISTICS_INFO_START ] =
    { "sharpnessMapSize",              TYPE_INT32  },
    [ ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES - ANDROID_STATISTICS_INFO_START ] =
    { "availableHotPixelMapModes",     TYPE_BYTE   },
    [ ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES - ANDROID_STATISTICS_INFO_START ] =
    { "availableLensShadingMapModes",  TYPE_BYTE   },
    [ ANDROID_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES - ANDROID_STATISTICS_INFO_START ] =
    { "availableOisDataModes",         TYPE_BYTE   },
};

static tag_info_t android_tonemap[ANDROID_TONEMAP_END -
        ANDROID_TONEMAP_START] = {
    [ ANDROID_TONEMAP_CURVE_BLUE - ANDROID_TONEMAP_START ] =
    { "curveBlue",                     TYPE_FLOAT  },
    [ ANDROID_TONEMAP_CURVE_GREEN - ANDROID_TONEMAP_START ] =
    { "curveGreen",                    TYPE_FLOAT  },
    [ ANDROID_TONEMAP_CURVE_RED - ANDROID_TONEMAP_START ] =
    { "curveRed",                      TYPE_FLOAT  },
    [ ANDROID_TONEMAP_MODE - ANDROID_TONEMAP_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_TONEMAP_MAX_CURVE_POINTS - ANDROID_TONEMAP_START ] =
    { "maxCurvePoints",                TYPE_INT32  },
    [ ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES - ANDROID_TONEMAP_START ] =
    { "availableToneMapModes",         TYPE_BYTE   },
    [ ANDROID_TONEMAP_GAMMA - ANDROID_TONEMAP_START ] =
    { "gamma",                         TYPE_FLOAT  },
    [ ANDROID_TONEMAP_PRESET_CURVE - ANDROID_TONEMAP_START ] =
    { "presetCurve",                   TYPE_BYTE   },
};

static tag_info_t android_led[ANDROID_LED_END -
        ANDROID_LED_START] = {
    [ ANDROID_LED_TRANSMIT - ANDROID_LED_START ] =
    { "transmit",                      TYPE_BYTE   },
    [ ANDROID_LED_AVAILABLE_LEDS - ANDROID_LED_START ] =
    { "availableLeds",                 TYPE_BYTE   },
};

static tag_info_t android_info[ANDROID_INFO_END -
        ANDROID_INFO_START] = {
    [ ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL - ANDROID_INFO_START ] =
    { "supportedHardwareLevel",        TYPE_BYTE   },
    [ ANDROID_INFO_VERSION - ANDROID_INFO_START ] =
    { "version",                       TYPE_BYTE   },
    [ ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION - ANDROID_INFO_START ] =
    { "supportedBufferManagementVersion",
                                        TYPE_BYTE   },
};

static tag_info_t android_black_level[ANDROID_BLACK_LEVEL_END -
        ANDROID_BLACK_LEVEL_START] = {
    [ ANDROID_BLACK_LEVEL_LOCK - ANDROID_BLACK_LEVEL_START ] =
    { "lock",                          TYPE_BYTE   },
};

static tag_info_t android_sync[ANDROID_SYNC_END -
        ANDROID_SYNC_START] = {
    [ ANDROID_SYNC_FRAME_NUMBER - ANDROID_SYNC_START ] =
    { "frameNumber",                   TYPE_INT64  },
    [ ANDROID_SYNC_MAX_LATENCY - ANDROID_SYNC_START ] =
    { "maxLatency",                    TYPE_INT32  },
};

static tag_info_t android_reprocess[ANDROID_REPROCESS_END -
        ANDROID_REPROCESS_START] = {
    [ ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR - ANDROID_REPROCESS_START ] =
    { "effectiveExposureFactor",       TYPE_FLOAT  },
    [ ANDROID_REPROCESS_MAX_CAPTURE_STALL - ANDROID_REPROCESS_START ] =
    { "maxCaptureStall",               TYPE_INT32  },
};

static tag_info_t android_depth[ANDROID_DEPTH_END -
        ANDROID_DEPTH_START] = {
    [ ANDROID_DEPTH_MAX_DEPTH_SAMPLES - ANDROID_DEPTH_START ] =
    { "maxDepthSamples",               TYPE_INT32  },
    [ ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS - ANDROID_DEPTH_START ] =
    { "availableDepthStreamConfigurations",
                                        TYPE_INT32  },
    [ ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS - ANDROID_DEPTH_START ] =
    { "availableDepthMinFrameDurations",
                                        TYPE_INT64  },
    [ ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS - ANDROID_DEPTH_START ] =
    { "availableDepthStallDurations",  TYPE_INT64  },
    [ ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE - ANDROID_DEPTH_START ] =
    { "depthIsExclusive",              TYPE_BYTE   },
    [ ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS - ANDROID_DEPTH_START ] =
    { "availableRecommendedDepthStreamConfigurations",
                                        TYPE_INT32  },
    [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS - ANDROID_DEPTH_START ] =
    { "availableDynamicDepthStreamConfigurations",
                                        TYPE_INT32  },
    [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS - ANDROID_DEPTH_START ] =
    { "availableDynamicDepthMinFrameDurations",
                                        TYPE_INT64  },
    [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS - ANDROID_DEPTH_START ] =
    { "availableDynamicDepthStallDurations",
                                        TYPE_INT64  },
};

static tag_info_t android_logical_multi_camera[ANDROID_LOGICAL_MULTI_CAMERA_END -
        ANDROID_LOGICAL_MULTI_CAMERA_START] = {
    [ ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS - ANDROID_LOGICAL_MULTI_CAMERA_START ] =
    { "physicalIds",                   TYPE_BYTE   },
    [ ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE - ANDROID_LOGICAL_MULTI_CAMERA_START ] =
    { "sensorSyncType",                TYPE_BYTE   },
    [ ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID - ANDROID_LOGICAL_MULTI_CAMERA_START ] =
    { "activePhysicalId",              TYPE_BYTE   },
};

static tag_info_t android_distortion_correction[ANDROID_DISTORTION_CORRECTION_END -
        ANDROID_DISTORTION_CORRECTION_START] = {
    [ ANDROID_DISTORTION_CORRECTION_MODE - ANDROID_DISTORTION_CORRECTION_START ] =
    { "mode",                          TYPE_BYTE   },
    [ ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES - ANDROID_DISTORTION_CORRECTION_START ] =
    { "availableModes",                TYPE_BYTE   },
};

static tag_info_t android_heic[ANDROID_HEIC_END -
        ANDROID_HEIC_START] = {
    [ ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS - ANDROID_HEIC_START ] =
    { "availableHeicStreamConfigurations",
                                        TYPE_INT32  },
    [ ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS - ANDROID_HEIC_START ] =
    { "availableHeicMinFrameDurations",
                                        TYPE_INT64  },
    [ ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS - ANDROID_HEIC_START ] =
    { "availableHeicStallDurations",   TYPE_INT64  },
};

static tag_info_t android_heic_info[ANDROID_HEIC_INFO_END -
        ANDROID_HEIC_INFO_START] = {
    [ ANDROID_HEIC_INFO_SUPPORTED - ANDROID_HEIC_INFO_START ] =
    { "supported",                     TYPE_BYTE   },
    [ ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT - ANDROID_HEIC_INFO_START ] =
    { "maxJpegAppSegmentsCount",       TYPE_BYTE   },
};


tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
    android_color_correction,
    android_control,
    android_demosaic,
    android_edge,
    android_flash,
    android_flash_info,
    android_hot_pixel,
    android_jpeg,
    android_lens,
    android_lens_info,
    android_noise_reduction,
    android_quirks,
    android_request,
    android_scaler,
    android_sensor,
    android_sensor_info,
    android_shading,
    android_statistics,
    android_statistics_info,
    android_tonemap,
    android_led,
    android_info,
    android_black_level,
    android_sync,
    android_reprocess,
    android_depth,
    android_logical_multi_camera,
    android_distortion_correction,
    android_heic,
    android_heic_info,
};

static int32_t tag_permission_needed[16] = {
    ANDROID_LENS_POSE_ROTATION,
    ANDROID_LENS_POSE_TRANSLATION,
    ANDROID_LENS_INTRINSIC_CALIBRATION,
    ANDROID_LENS_RADIAL_DISTORTION,
    ANDROID_LENS_POSE_REFERENCE,
    ANDROID_LENS_DISTORTION,
    ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
    ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT2,
    ANDROID_SENSOR_CALIBRATION_TRANSFORM1,
    ANDROID_SENSOR_CALIBRATION_TRANSFORM2,
    ANDROID_SENSOR_COLOR_TRANSFORM1,
    ANDROID_SENSOR_COLOR_TRANSFORM2,
    ANDROID_SENSOR_FORWARD_MATRIX1,
    ANDROID_SENSOR_FORWARD_MATRIX2,
};

int camera_metadata_enum_snprint(uint32_t tag,
                                 uint32_t value,
                                 char *dst,
                                 size_t size) {
    const char *msg = "error: not an enum";
    int ret = -1;

    switch(tag) {
        case ANDROID_COLOR_CORRECTION_MODE: {
            switch (value) {
                case ANDROID_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX:
                    msg = "TRANSFORM_MATRIX";
                    ret = 0;
                    break;
                case ANDROID_COLOR_CORRECTION_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_COLOR_CORRECTION_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_COLOR_CORRECTION_TRANSFORM: {
            break;
        }
        case ANDROID_COLOR_CORRECTION_GAINS: {
            break;
        }
        case ANDROID_COLOR_CORRECTION_ABERRATION_MODE: {
            switch (value) {
                case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES: {
            break;
        }

        case ANDROID_CONTROL_AE_ANTIBANDING_MODE: {
            switch (value) {
                case ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ:
                    msg = "50HZ";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ:
                    msg = "60HZ";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO:
                    msg = "AUTO";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: {
            break;
        }
        case ANDROID_CONTROL_AE_LOCK: {
            switch (value) {
                case ANDROID_CONTROL_AE_LOCK_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_LOCK_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AE_MODE: {
            switch (value) {
                case ANDROID_CONTROL_AE_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_MODE_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH:
                    msg = "ON_AUTO_FLASH";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH:
                    msg = "ON_ALWAYS_FLASH";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE:
                    msg = "ON_AUTO_FLASH_REDEYE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_MODE_ON_EXTERNAL_FLASH:
                    msg = "ON_EXTERNAL_FLASH";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AE_REGIONS: {
            break;
        }
        case ANDROID_CONTROL_AE_TARGET_FPS_RANGE: {
            break;
        }
        case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: {
            switch (value) {
                case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE:
                    msg = "IDLE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_START:
                    msg = "START";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL:
                    msg = "CANCEL";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AF_MODE: {
            switch (value) {
                case ANDROID_CONTROL_AF_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_MODE_AUTO:
                    msg = "AUTO";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_MODE_MACRO:
                    msg = "MACRO";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO:
                    msg = "CONTINUOUS_VIDEO";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE:
                    msg = "CONTINUOUS_PICTURE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_MODE_EDOF:
                    msg = "EDOF";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AF_REGIONS: {
            break;
        }
        case ANDROID_CONTROL_AF_TRIGGER: {
            switch (value) {
                case ANDROID_CONTROL_AF_TRIGGER_IDLE:
                    msg = "IDLE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_TRIGGER_START:
                    msg = "START";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_TRIGGER_CANCEL:
                    msg = "CANCEL";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AWB_LOCK: {
            switch (value) {
                case ANDROID_CONTROL_AWB_LOCK_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_LOCK_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AWB_MODE: {
            switch (value) {
                case ANDROID_CONTROL_AWB_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_MODE_AUTO:
                    msg = "AUTO";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_MODE_INCANDESCENT:
                    msg = "INCANDESCENT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_MODE_FLUORESCENT:
                    msg = "FLUORESCENT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_MODE_WARM_FLUORESCENT:
                    msg = "WARM_FLUORESCENT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_MODE_DAYLIGHT:
                    msg = "DAYLIGHT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT:
                    msg = "CLOUDY_DAYLIGHT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_MODE_TWILIGHT:
                    msg = "TWILIGHT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_MODE_SHADE:
                    msg = "SHADE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AWB_REGIONS: {
            break;
        }
        case ANDROID_CONTROL_CAPTURE_INTENT: {
            switch (value) {
                case ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM:
                    msg = "CUSTOM";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW:
                    msg = "PREVIEW";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE:
                    msg = "STILL_CAPTURE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD:
                    msg = "VIDEO_RECORD";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT:
                    msg = "VIDEO_SNAPSHOT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG:
                    msg = "ZERO_SHUTTER_LAG";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_CAPTURE_INTENT_MANUAL:
                    msg = "MANUAL";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_CAPTURE_INTENT_MOTION_TRACKING:
                    msg = "MOTION_TRACKING";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_EFFECT_MODE: {
            switch (value) {
                case ANDROID_CONTROL_EFFECT_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_EFFECT_MODE_MONO:
                    msg = "MONO";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_EFFECT_MODE_NEGATIVE:
                    msg = "NEGATIVE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_EFFECT_MODE_SOLARIZE:
                    msg = "SOLARIZE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_EFFECT_MODE_SEPIA:
                    msg = "SEPIA";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_EFFECT_MODE_POSTERIZE:
                    msg = "POSTERIZE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD:
                    msg = "WHITEBOARD";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD:
                    msg = "BLACKBOARD";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_EFFECT_MODE_AQUA:
                    msg = "AQUA";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_MODE: {
            switch (value) {
                case ANDROID_CONTROL_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_MODE_AUTO:
                    msg = "AUTO";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_MODE_USE_SCENE_MODE:
                    msg = "USE_SCENE_MODE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_MODE_OFF_KEEP_STATE:
                    msg = "OFF_KEEP_STATE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_SCENE_MODE: {
            switch (value) {
                case ANDROID_CONTROL_SCENE_MODE_DISABLED:
                    msg = "DISABLED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY:
                    msg = "FACE_PRIORITY";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_ACTION:
                    msg = "ACTION";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_PORTRAIT:
                    msg = "PORTRAIT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_LANDSCAPE:
                    msg = "LANDSCAPE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_NIGHT:
                    msg = "NIGHT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT:
                    msg = "NIGHT_PORTRAIT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_THEATRE:
                    msg = "THEATRE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_BEACH:
                    msg = "BEACH";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_SNOW:
                    msg = "SNOW";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_SUNSET:
                    msg = "SUNSET";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO:
                    msg = "STEADYPHOTO";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_FIREWORKS:
                    msg = "FIREWORKS";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_SPORTS:
                    msg = "SPORTS";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_PARTY:
                    msg = "PARTY";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT:
                    msg = "CANDLELIGHT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_BARCODE:
                    msg = "BARCODE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO:
                    msg = "HIGH_SPEED_VIDEO";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_HDR:
                    msg = "HDR";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY_LOW_LIGHT:
                    msg = "FACE_PRIORITY_LOW_LIGHT";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_START:
                    msg = "DEVICE_CUSTOM_START";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_END:
                    msg = "DEVICE_CUSTOM_END";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE: {
            switch (value) {
                case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES: {
            break;
        }
        case ANDROID_CONTROL_AE_AVAILABLE_MODES: {
            break;
        }
        case ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES: {
            break;
        }
        case ANDROID_CONTROL_AE_COMPENSATION_RANGE: {
            break;
        }
        case ANDROID_CONTROL_AE_COMPENSATION_STEP: {
            break;
        }
        case ANDROID_CONTROL_AF_AVAILABLE_MODES: {
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_EFFECTS: {
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_SCENE_MODES: {
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES: {
            break;
        }
        case ANDROID_CONTROL_AWB_AVAILABLE_MODES: {
            break;
        }
        case ANDROID_CONTROL_MAX_REGIONS: {
            break;
        }
        case ANDROID_CONTROL_SCENE_MODE_OVERRIDES: {
            break;
        }
        case ANDROID_CONTROL_AE_PRECAPTURE_ID: {
            break;
        }
        case ANDROID_CONTROL_AE_STATE: {
            switch (value) {
                case ANDROID_CONTROL_AE_STATE_INACTIVE:
                    msg = "INACTIVE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_STATE_SEARCHING:
                    msg = "SEARCHING";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_STATE_CONVERGED:
                    msg = "CONVERGED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_STATE_LOCKED:
                    msg = "LOCKED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_STATE_FLASH_REQUIRED:
                    msg = "FLASH_REQUIRED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_STATE_PRECAPTURE:
                    msg = "PRECAPTURE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AF_STATE: {
            switch (value) {
                case ANDROID_CONTROL_AF_STATE_INACTIVE:
                    msg = "INACTIVE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN:
                    msg = "PASSIVE_SCAN";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED:
                    msg = "PASSIVE_FOCUSED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN:
                    msg = "ACTIVE_SCAN";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED:
                    msg = "FOCUSED_LOCKED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED:
                    msg = "NOT_FOCUSED_LOCKED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_STATE_PASSIVE_UNFOCUSED:
                    msg = "PASSIVE_UNFOCUSED";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AF_TRIGGER_ID: {
            break;
        }
        case ANDROID_CONTROL_AWB_STATE: {
            switch (value) {
                case ANDROID_CONTROL_AWB_STATE_INACTIVE:
                    msg = "INACTIVE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_STATE_SEARCHING:
                    msg = "SEARCHING";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_STATE_CONVERGED:
                    msg = "CONVERGED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_STATE_LOCKED:
                    msg = "LOCKED";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS: {
            break;
        }
        case ANDROID_CONTROL_AE_LOCK_AVAILABLE: {
            switch (value) {
                case ANDROID_CONTROL_AE_LOCK_AVAILABLE_FALSE:
                    msg = "FALSE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE:
                    msg = "TRUE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AWB_LOCK_AVAILABLE: {
            switch (value) {
                case ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE:
                    msg = "FALSE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AWB_LOCK_AVAILABLE_TRUE:
                    msg = "TRUE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_MODES: {
            break;
        }
        case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE: {
            break;
        }
        case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST: {
            break;
        }
        case ANDROID_CONTROL_ENABLE_ZSL: {
            switch (value) {
                case ANDROID_CONTROL_ENABLE_ZSL_FALSE:
                    msg = "FALSE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_ENABLE_ZSL_TRUE:
                    msg = "TRUE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AF_SCENE_CHANGE: {
            switch (value) {
                case ANDROID_CONTROL_AF_SCENE_CHANGE_NOT_DETECTED:
                    msg = "NOT_DETECTED";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_AF_SCENE_CHANGE_DETECTED:
                    msg = "DETECTED";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_BOKEH_MAX_SIZES: {
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_BOKEH_ZOOM_RATIO_RANGES: {
            break;
        }
        case ANDROID_CONTROL_BOKEH_MODE: {
            switch (value) {
                case ANDROID_CONTROL_BOKEH_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_BOKEH_MODE_STILL_CAPTURE:
                    msg = "STILL_CAPTURE";
                    ret = 0;
                    break;
                case ANDROID_CONTROL_BOKEH_MODE_CONTINUOUS:
                    msg = "CONTINUOUS";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_CONTROL_ZOOM_RATIO_RANGE: {
            break;
        }
        case ANDROID_CONTROL_ZOOM_RATIO: {
            break;
        }

        case ANDROID_DEMOSAIC_MODE: {
            switch (value) {
                case ANDROID_DEMOSAIC_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_DEMOSAIC_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_EDGE_MODE: {
            switch (value) {
                case ANDROID_EDGE_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_EDGE_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_EDGE_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                case ANDROID_EDGE_MODE_ZERO_SHUTTER_LAG:
                    msg = "ZERO_SHUTTER_LAG";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_EDGE_STRENGTH: {
            break;
        }
        case ANDROID_EDGE_AVAILABLE_EDGE_MODES: {
            break;
        }

        case ANDROID_FLASH_FIRING_POWER: {
            break;
        }
        case ANDROID_FLASH_FIRING_TIME: {
            break;
        }
        case ANDROID_FLASH_MODE: {
            switch (value) {
                case ANDROID_FLASH_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_FLASH_MODE_SINGLE:
                    msg = "SINGLE";
                    ret = 0;
                    break;
                case ANDROID_FLASH_MODE_TORCH:
                    msg = "TORCH";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_FLASH_COLOR_TEMPERATURE: {
            break;
        }
        case ANDROID_FLASH_MAX_ENERGY: {
            break;
        }
        case ANDROID_FLASH_STATE: {
            switch (value) {
                case ANDROID_FLASH_STATE_UNAVAILABLE:
                    msg = "UNAVAILABLE";
                    ret = 0;
                    break;
                case ANDROID_FLASH_STATE_CHARGING:
                    msg = "CHARGING";
                    ret = 0;
                    break;
                case ANDROID_FLASH_STATE_READY:
                    msg = "READY";
                    ret = 0;
                    break;
                case ANDROID_FLASH_STATE_FIRED:
                    msg = "FIRED";
                    ret = 0;
                    break;
                case ANDROID_FLASH_STATE_PARTIAL:
                    msg = "PARTIAL";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_FLASH_INFO_AVAILABLE: {
            switch (value) {
                case ANDROID_FLASH_INFO_AVAILABLE_FALSE:
                    msg = "FALSE";
                    ret = 0;
                    break;
                case ANDROID_FLASH_INFO_AVAILABLE_TRUE:
                    msg = "TRUE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_FLASH_INFO_CHARGE_DURATION: {
            break;
        }

        case ANDROID_HOT_PIXEL_MODE: {
            switch (value) {
                case ANDROID_HOT_PIXEL_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_HOT_PIXEL_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES: {
            break;
        }

        case ANDROID_JPEG_GPS_COORDINATES: {
            break;
        }
        case ANDROID_JPEG_GPS_PROCESSING_METHOD: {
            break;
        }
        case ANDROID_JPEG_GPS_TIMESTAMP: {
            break;
        }
        case ANDROID_JPEG_ORIENTATION: {
            break;
        }
        case ANDROID_JPEG_QUALITY: {
            break;
        }
        case ANDROID_JPEG_THUMBNAIL_QUALITY: {
            break;
        }
        case ANDROID_JPEG_THUMBNAIL_SIZE: {
            break;
        }
        case ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES: {
            break;
        }
        case ANDROID_JPEG_MAX_SIZE: {
            break;
        }
        case ANDROID_JPEG_SIZE: {
            break;
        }

        case ANDROID_LENS_APERTURE: {
            break;
        }
        case ANDROID_LENS_FILTER_DENSITY: {
            break;
        }
        case ANDROID_LENS_FOCAL_LENGTH: {
            break;
        }
        case ANDROID_LENS_FOCUS_DISTANCE: {
            break;
        }
        case ANDROID_LENS_OPTICAL_STABILIZATION_MODE: {
            switch (value) {
                case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_LENS_FACING: {
            switch (value) {
                case ANDROID_LENS_FACING_FRONT:
                    msg = "FRONT";
                    ret = 0;
                    break;
                case ANDROID_LENS_FACING_BACK:
                    msg = "BACK";
                    ret = 0;
                    break;
                case ANDROID_LENS_FACING_EXTERNAL:
                    msg = "EXTERNAL";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_LENS_POSE_ROTATION: {
            break;
        }
        case ANDROID_LENS_POSE_TRANSLATION: {
            break;
        }
        case ANDROID_LENS_FOCUS_RANGE: {
            break;
        }
        case ANDROID_LENS_STATE: {
            switch (value) {
                case ANDROID_LENS_STATE_STATIONARY:
                    msg = "STATIONARY";
                    ret = 0;
                    break;
                case ANDROID_LENS_STATE_MOVING:
                    msg = "MOVING";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_LENS_INTRINSIC_CALIBRATION: {
            break;
        }
        case ANDROID_LENS_RADIAL_DISTORTION: {
            break;
        }
        case ANDROID_LENS_POSE_REFERENCE: {
            switch (value) {
                case ANDROID_LENS_POSE_REFERENCE_PRIMARY_CAMERA:
                    msg = "PRIMARY_CAMERA";
                    ret = 0;
                    break;
                case ANDROID_LENS_POSE_REFERENCE_GYROSCOPE:
                    msg = "GYROSCOPE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_LENS_DISTORTION: {
            break;
        }

        case ANDROID_LENS_INFO_AVAILABLE_APERTURES: {
            break;
        }
        case ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES: {
            break;
        }
        case ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS: {
            break;
        }
        case ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION: {
            break;
        }
        case ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE: {
            break;
        }
        case ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE: {
            break;
        }
        case ANDROID_LENS_INFO_SHADING_MAP_SIZE: {
            break;
        }
        case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION: {
            switch (value) {
                case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED:
                    msg = "UNCALIBRATED";
                    ret = 0;
                    break;
                case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE:
                    msg = "APPROXIMATE";
                    ret = 0;
                    break;
                case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED:
                    msg = "CALIBRATED";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_NOISE_REDUCTION_MODE: {
            switch (value) {
                case ANDROID_NOISE_REDUCTION_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_NOISE_REDUCTION_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                case ANDROID_NOISE_REDUCTION_MODE_MINIMAL:
                    msg = "MINIMAL";
                    ret = 0;
                    break;
                case ANDROID_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG:
                    msg = "ZERO_SHUTTER_LAG";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_NOISE_REDUCTION_STRENGTH: {
            break;
        }
        case ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES: {
            break;
        }

        case ANDROID_QUIRKS_METERING_CROP_REGION: {
            break;
        }
        case ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO: {
            break;
        }
        case ANDROID_QUIRKS_USE_ZSL_FORMAT: {
            break;
        }
        case ANDROID_QUIRKS_USE_PARTIAL_RESULT: {
            break;
        }
        case ANDROID_QUIRKS_PARTIAL_RESULT: {
            switch (value) {
                case ANDROID_QUIRKS_PARTIAL_RESULT_FINAL:
                    msg = "FINAL";
                    ret = 0;
                    break;
                case ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL:
                    msg = "PARTIAL";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_REQUEST_FRAME_COUNT: {
            break;
        }
        case ANDROID_REQUEST_ID: {
            break;
        }
        case ANDROID_REQUEST_INPUT_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_METADATA_MODE: {
            switch (value) {
                case ANDROID_REQUEST_METADATA_MODE_NONE:
                    msg = "NONE";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_METADATA_MODE_FULL:
                    msg = "FULL";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_REQUEST_OUTPUT_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_TYPE: {
            switch (value) {
                case ANDROID_REQUEST_TYPE_CAPTURE:
                    msg = "CAPTURE";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_TYPE_REPROCESS:
                    msg = "REPROCESS";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_PIPELINE_DEPTH: {
            break;
        }
        case ANDROID_REQUEST_PIPELINE_MAX_DEPTH: {
            break;
        }
        case ANDROID_REQUEST_PARTIAL_RESULT_COUNT: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_CAPABILITIES: {
            switch (value) {
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE:
                    msg = "BACKWARD_COMPATIBLE";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR:
                    msg = "MANUAL_SENSOR";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING:
                    msg = "MANUAL_POST_PROCESSING";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW:
                    msg = "RAW";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING:
                    msg = "PRIVATE_REPROCESSING";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS:
                    msg = "READ_SENSOR_SETTINGS";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE:
                    msg = "BURST_CAPTURE";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING:
                    msg = "YUV_REPROCESSING";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT:
                    msg = "DEPTH_OUTPUT";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO:
                    msg = "CONSTRAINED_HIGH_SPEED_VIDEO";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING:
                    msg = "MOTION_TRACKING";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA:
                    msg = "LOGICAL_MULTI_CAMERA";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME:
                    msg = "MONOCHROME";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA:
                    msg = "SECURE_IMAGE_DATA";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA:
                    msg = "SYSTEM_CAMERA";
                    ret = 0;
                    break;
                case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING:
                    msg = "OFFLINE_PROCESSING";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_RESULT_KEYS: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_SESSION_KEYS: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS: {
            break;
        }
        case ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION: {
            break;
        }

        case ANDROID_SCALER_CROP_REGION: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_FORMATS: {
            switch (value) {
                case ANDROID_SCALER_AVAILABLE_FORMATS_RAW16:
                    msg = "RAW16";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_RAW_OPAQUE:
                    msg = "RAW_OPAQUE";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_YV12:
                    msg = "YV12";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_YCrCb_420_SP:
                    msg = "YCrCb_420_SP";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED:
                    msg = "IMPLEMENTATION_DEFINED";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888:
                    msg = "YCbCr_420_888";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_BLOB:
                    msg = "BLOB";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_RAW10:
                    msg = "RAW10";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_RAW12:
                    msg = "RAW12";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_FORMATS_Y8:
                    msg = "Y8";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_JPEG_SIZES: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_RAW_SIZES: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS: {
            switch (value) {
                case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT:
                    msg = "OUTPUT";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_INPUT:
                    msg = "INPUT";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_STALL_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_CROPPING_TYPE: {
            switch (value) {
                case ANDROID_SCALER_CROPPING_TYPE_CENTER_ONLY:
                    msg = "CENTER_ONLY";
                    ret = 0;
                    break;
                case ANDROID_SCALER_CROPPING_TYPE_FREEFORM:
                    msg = "FREEFORM";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS: {
            switch (value) {
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW:
                    msg = "PREVIEW";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD:
                    msg = "RECORD";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT:
                    msg = "VIDEO_SNAPSHOT";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT:
                    msg = "SNAPSHOT";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_ZSL:
                    msg = "ZSL";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RAW:
                    msg = "RAW";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_LOW_LATENCY_SNAPSHOT:
                    msg = "LOW_LATENCY_SNAPSHOT";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END:
                    msg = "PUBLIC_END";
                    ret = 0;
                    break;
                case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START:
                    msg = "VENDOR_START";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP: {
            break;
        }

        case ANDROID_SENSOR_EXPOSURE_TIME: {
            break;
        }
        case ANDROID_SENSOR_FRAME_DURATION: {
            break;
        }
        case ANDROID_SENSOR_SENSITIVITY: {
            break;
        }
        case ANDROID_SENSOR_REFERENCE_ILLUMINANT1: {
            switch (value) {
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT:
                    msg = "DAYLIGHT";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT:
                    msg = "FLUORESCENT";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN:
                    msg = "TUNGSTEN";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLASH:
                    msg = "FLASH";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER:
                    msg = "FINE_WEATHER";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER:
                    msg = "CLOUDY_WEATHER";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_SHADE:
                    msg = "SHADE";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT:
                    msg = "DAYLIGHT_FLUORESCENT";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT:
                    msg = "DAY_WHITE_FLUORESCENT";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT:
                    msg = "COOL_WHITE_FLUORESCENT";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT:
                    msg = "WHITE_FLUORESCENT";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A:
                    msg = "STANDARD_A";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B:
                    msg = "STANDARD_B";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C:
                    msg = "STANDARD_C";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D55:
                    msg = "D55";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D65:
                    msg = "D65";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D75:
                    msg = "D75";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D50:
                    msg = "D50";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN:
                    msg = "ISO_STUDIO_TUNGSTEN";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SENSOR_REFERENCE_ILLUMINANT2: {
            break;
        }
        case ANDROID_SENSOR_CALIBRATION_TRANSFORM1: {
            break;
        }
        case ANDROID_SENSOR_CALIBRATION_TRANSFORM2: {
            break;
        }
        case ANDROID_SENSOR_COLOR_TRANSFORM1: {
            break;
        }
        case ANDROID_SENSOR_COLOR_TRANSFORM2: {
            break;
        }
        case ANDROID_SENSOR_FORWARD_MATRIX1: {
            break;
        }
        case ANDROID_SENSOR_FORWARD_MATRIX2: {
            break;
        }
        case ANDROID_SENSOR_BASE_GAIN_FACTOR: {
            break;
        }
        case ANDROID_SENSOR_BLACK_LEVEL_PATTERN: {
            break;
        }
        case ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY: {
            break;
        }
        case ANDROID_SENSOR_ORIENTATION: {
            break;
        }
        case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS: {
            break;
        }
        case ANDROID_SENSOR_TIMESTAMP: {
            break;
        }
        case ANDROID_SENSOR_TEMPERATURE: {
            break;
        }
        case ANDROID_SENSOR_NEUTRAL_COLOR_POINT: {
            break;
        }
        case ANDROID_SENSOR_NOISE_PROFILE: {
            break;
        }
        case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP: {
            break;
        }
        case ANDROID_SENSOR_PROFILE_TONE_CURVE: {
            break;
        }
        case ANDROID_SENSOR_GREEN_SPLIT: {
            break;
        }
        case ANDROID_SENSOR_TEST_PATTERN_DATA: {
            break;
        }
        case ANDROID_SENSOR_TEST_PATTERN_MODE: {
            switch (value) {
                case ANDROID_SENSOR_TEST_PATTERN_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR:
                    msg = "SOLID_COLOR";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS:
                    msg = "COLOR_BARS";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY:
                    msg = "COLOR_BARS_FADE_TO_GRAY";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_TEST_PATTERN_MODE_PN9:
                    msg = "PN9";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1:
                    msg = "CUSTOM1";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES: {
            break;
        }
        case ANDROID_SENSOR_ROLLING_SHUTTER_SKEW: {
            break;
        }
        case ANDROID_SENSOR_OPTICAL_BLACK_REGIONS: {
            break;
        }
        case ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL: {
            break;
        }
        case ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL: {
            break;
        }
        case ANDROID_SENSOR_OPAQUE_RAW_SIZE: {
            break;
        }

        case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE: {
            break;
        }
        case ANDROID_SENSOR_INFO_SENSITIVITY_RANGE: {
            break;
        }
        case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT: {
            switch (value) {
                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB:
                    msg = "RGGB";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG:
                    msg = "GRBG";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG:
                    msg = "GBRG";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR:
                    msg = "BGGR";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB:
                    msg = "RGB";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO:
                    msg = "MONO";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR:
                    msg = "NIR";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE: {
            break;
        }
        case ANDROID_SENSOR_INFO_MAX_FRAME_DURATION: {
            break;
        }
        case ANDROID_SENSOR_INFO_PHYSICAL_SIZE: {
            break;
        }
        case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE: {
            break;
        }
        case ANDROID_SENSOR_INFO_WHITE_LEVEL: {
            break;
        }
        case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE: {
            switch (value) {
                case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN:
                    msg = "UNKNOWN";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME:
                    msg = "REALTIME";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED: {
            switch (value) {
                case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_FALSE:
                    msg = "FALSE";
                    ret = 0;
                    break;
                case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_TRUE:
                    msg = "TRUE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE: {
            break;
        }

        case ANDROID_SHADING_MODE: {
            switch (value) {
                case ANDROID_SHADING_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_SHADING_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_SHADING_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SHADING_STRENGTH: {
            break;
        }
        case ANDROID_SHADING_AVAILABLE_MODES: {
            break;
        }

        case ANDROID_STATISTICS_FACE_DETECT_MODE: {
            switch (value) {
                case ANDROID_STATISTICS_FACE_DETECT_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE:
                    msg = "SIMPLE";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_FACE_DETECT_MODE_FULL:
                    msg = "FULL";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_STATISTICS_HISTOGRAM_MODE: {
            switch (value) {
                case ANDROID_STATISTICS_HISTOGRAM_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_HISTOGRAM_MODE_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_STATISTICS_SHARPNESS_MAP_MODE: {
            switch (value) {
                case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE: {
            switch (value) {
                case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_STATISTICS_FACE_IDS: {
            break;
        }
        case ANDROID_STATISTICS_FACE_LANDMARKS: {
            break;
        }
        case ANDROID_STATISTICS_FACE_RECTANGLES: {
            break;
        }
        case ANDROID_STATISTICS_FACE_SCORES: {
            break;
        }
        case ANDROID_STATISTICS_HISTOGRAM: {
            break;
        }
        case ANDROID_STATISTICS_SHARPNESS_MAP: {
            break;
        }
        case ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP: {
            break;
        }
        case ANDROID_STATISTICS_LENS_SHADING_MAP: {
            break;
        }
        case ANDROID_STATISTICS_PREDICTED_COLOR_GAINS: {
            break;
        }
        case ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM: {
            break;
        }
        case ANDROID_STATISTICS_SCENE_FLICKER: {
            switch (value) {
                case ANDROID_STATISTICS_SCENE_FLICKER_NONE:
                    msg = "NONE";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_SCENE_FLICKER_50HZ:
                    msg = "50HZ";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_SCENE_FLICKER_60HZ:
                    msg = "60HZ";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_STATISTICS_HOT_PIXEL_MAP: {
            break;
        }
        case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE: {
            switch (value) {
                case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_STATISTICS_OIS_DATA_MODE: {
            switch (value) {
                case ANDROID_STATISTICS_OIS_DATA_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_STATISTICS_OIS_DATA_MODE_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_STATISTICS_OIS_TIMESTAMPS: {
            break;
        }
        case ANDROID_STATISTICS_OIS_X_SHIFTS: {
            break;
        }
        case ANDROID_STATISTICS_OIS_Y_SHIFTS: {
            break;
        }

        case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: {
            break;
        }
        case ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT: {
            break;
        }
        case ANDROID_STATISTICS_INFO_MAX_FACE_COUNT: {
            break;
        }
        case ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT: {
            break;
        }
        case ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE: {
            break;
        }
        case ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE: {
            break;
        }
        case ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES: {
            break;
        }
        case ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES: {
            break;
        }
        case ANDROID_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES: {
            break;
        }

        case ANDROID_TONEMAP_CURVE_BLUE: {
            break;
        }
        case ANDROID_TONEMAP_CURVE_GREEN: {
            break;
        }
        case ANDROID_TONEMAP_CURVE_RED: {
            break;
        }
        case ANDROID_TONEMAP_MODE: {
            switch (value) {
                case ANDROID_TONEMAP_MODE_CONTRAST_CURVE:
                    msg = "CONTRAST_CURVE";
                    ret = 0;
                    break;
                case ANDROID_TONEMAP_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_TONEMAP_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                case ANDROID_TONEMAP_MODE_GAMMA_VALUE:
                    msg = "GAMMA_VALUE";
                    ret = 0;
                    break;
                case ANDROID_TONEMAP_MODE_PRESET_CURVE:
                    msg = "PRESET_CURVE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_TONEMAP_MAX_CURVE_POINTS: {
            break;
        }
        case ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES: {
            break;
        }
        case ANDROID_TONEMAP_GAMMA: {
            break;
        }
        case ANDROID_TONEMAP_PRESET_CURVE: {
            switch (value) {
                case ANDROID_TONEMAP_PRESET_CURVE_SRGB:
                    msg = "SRGB";
                    ret = 0;
                    break;
                case ANDROID_TONEMAP_PRESET_CURVE_REC709:
                    msg = "REC709";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_LED_TRANSMIT: {
            switch (value) {
                case ANDROID_LED_TRANSMIT_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_LED_TRANSMIT_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_LED_AVAILABLE_LEDS: {
            switch (value) {
                case ANDROID_LED_AVAILABLE_LEDS_TRANSMIT:
                    msg = "TRANSMIT";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL: {
            switch (value) {
                case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED:
                    msg = "LIMITED";
                    ret = 0;
                    break;
                case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL:
                    msg = "FULL";
                    ret = 0;
                    break;
                case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY:
                    msg = "LEGACY";
                    ret = 0;
                    break;
                case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3:
                    msg = "3";
                    ret = 0;
                    break;
                case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL:
                    msg = "EXTERNAL";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_INFO_VERSION: {
            break;
        }
        case ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION: {
            switch (value) {
                case ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_HIDL_DEVICE_3_5:
                    msg = "HIDL_DEVICE_3_5";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_BLACK_LEVEL_LOCK: {
            switch (value) {
                case ANDROID_BLACK_LEVEL_LOCK_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_BLACK_LEVEL_LOCK_ON:
                    msg = "ON";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_SYNC_FRAME_NUMBER: {
            switch (value) {
                case ANDROID_SYNC_FRAME_NUMBER_CONVERGING:
                    msg = "CONVERGING";
                    ret = 0;
                    break;
                case ANDROID_SYNC_FRAME_NUMBER_UNKNOWN:
                    msg = "UNKNOWN";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_SYNC_MAX_LATENCY: {
            switch (value) {
                case ANDROID_SYNC_MAX_LATENCY_PER_FRAME_CONTROL:
                    msg = "PER_FRAME_CONTROL";
                    ret = 0;
                    break;
                case ANDROID_SYNC_MAX_LATENCY_UNKNOWN:
                    msg = "UNKNOWN";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }

        case ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR: {
            break;
        }
        case ANDROID_REPROCESS_MAX_CAPTURE_STALL: {
            break;
        }

        case ANDROID_DEPTH_MAX_DEPTH_SAMPLES: {
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS: {
            switch (value) {
                case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_OUTPUT:
                    msg = "OUTPUT";
                    ret = 0;
                    break;
                case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_INPUT:
                    msg = "INPUT";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS: {
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS: {
            break;
        }
        case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE: {
            switch (value) {
                case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_FALSE:
                    msg = "FALSE";
                    ret = 0;
                    break;
                case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_TRUE:
                    msg = "TRUE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS: {
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS: {
            switch (value) {
                case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT:
                    msg = "OUTPUT";
                    ret = 0;
                    break;
                case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT:
                    msg = "INPUT";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS: {
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS: {
            break;
        }

        case ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS: {
            break;
        }
        case ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE: {
            switch (value) {
                case ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE:
                    msg = "APPROXIMATE";
                    ret = 0;
                    break;
                case ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED:
                    msg = "CALIBRATED";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: {
            break;
        }

        case ANDROID_DISTORTION_CORRECTION_MODE: {
            switch (value) {
                case ANDROID_DISTORTION_CORRECTION_MODE_OFF:
                    msg = "OFF";
                    ret = 0;
                    break;
                case ANDROID_DISTORTION_CORRECTION_MODE_FAST:
                    msg = "FAST";
                    ret = 0;
                    break;
                case ANDROID_DISTORTION_CORRECTION_MODE_HIGH_QUALITY:
                    msg = "HIGH_QUALITY";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES: {
            break;
        }

        case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS: {
            switch (value) {
                case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT:
                    msg = "OUTPUT";
                    ret = 0;
                    break;
                case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT:
                    msg = "INPUT";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS: {
            break;
        }
        case ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS: {
            break;
        }

        case ANDROID_HEIC_INFO_SUPPORTED: {
            switch (value) {
                case ANDROID_HEIC_INFO_SUPPORTED_FALSE:
                    msg = "FALSE";
                    ret = 0;
                    break;
                case ANDROID_HEIC_INFO_SUPPORTED_TRUE:
                    msg = "TRUE";
                    ret = 0;
                    break;
                default:
                    msg = "error: enum value out of range";
            }
            break;
        }
        case ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT: {
            break;
        }

    }

    strncpy(dst, msg, size - 1);
    dst[size - 1] = '\0';

    return ret;
}

int camera_metadata_enum_value(uint32_t tag,
                                 const char *name,
                                 size_t size,
                                 uint32_t *value) {
    if ((name == NULL) || (value == NULL)) {
        return -1;
    }

    const char *enumName = NULL;
    int ret = -1;

    switch(tag) {
        case ANDROID_COLOR_CORRECTION_MODE: {
                enumName = "TRANSFORM_MATRIX";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX;
                    ret = 0;
                    break;
                }
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_COLOR_CORRECTION_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_COLOR_CORRECTION_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_COLOR_CORRECTION_TRANSFORM: {
            break;
        }
        case ANDROID_COLOR_CORRECTION_GAINS: {
            break;
        }
        case ANDROID_COLOR_CORRECTION_ABERRATION_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES: {
            break;
        }

        case ANDROID_CONTROL_AE_ANTIBANDING_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "50HZ";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ;
                    ret = 0;
                    break;
                }
                enumName = "60HZ";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ;
                    ret = 0;
                    break;
                }
                enumName = "AUTO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: {
            break;
        }
        case ANDROID_CONTROL_AE_LOCK: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_LOCK_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_LOCK_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AE_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_MODE_ON;
                    ret = 0;
                    break;
                }
                enumName = "ON_AUTO_FLASH";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH;
                    ret = 0;
                    break;
                }
                enumName = "ON_ALWAYS_FLASH";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH;
                    ret = 0;
                    break;
                }
                enumName = "ON_AUTO_FLASH_REDEYE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE;
                    ret = 0;
                    break;
                }
                enumName = "ON_EXTERNAL_FLASH";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_MODE_ON_EXTERNAL_FLASH;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AE_REGIONS: {
            break;
        }
        case ANDROID_CONTROL_AE_TARGET_FPS_RANGE: {
            break;
        }
        case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: {
                enumName = "IDLE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;
                    ret = 0;
                    break;
                }
                enumName = "START";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_START;
                    ret = 0;
                    break;
                }
                enumName = "CANCEL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AF_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "AUTO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_MODE_AUTO;
                    ret = 0;
                    break;
                }
                enumName = "MACRO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_MODE_MACRO;
                    ret = 0;
                    break;
                }
                enumName = "CONTINUOUS_VIDEO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO;
                    ret = 0;
                    break;
                }
                enumName = "CONTINUOUS_PICTURE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE;
                    ret = 0;
                    break;
                }
                enumName = "EDOF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_MODE_EDOF;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AF_REGIONS: {
            break;
        }
        case ANDROID_CONTROL_AF_TRIGGER: {
                enumName = "IDLE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_TRIGGER_IDLE;
                    ret = 0;
                    break;
                }
                enumName = "START";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_TRIGGER_START;
                    ret = 0;
                    break;
                }
                enumName = "CANCEL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_TRIGGER_CANCEL;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AWB_LOCK: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_LOCK_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_LOCK_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AWB_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "AUTO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_AUTO;
                    ret = 0;
                    break;
                }
                enumName = "INCANDESCENT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_INCANDESCENT;
                    ret = 0;
                    break;
                }
                enumName = "FLUORESCENT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_FLUORESCENT;
                    ret = 0;
                    break;
                }
                enumName = "WARM_FLUORESCENT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_WARM_FLUORESCENT;
                    ret = 0;
                    break;
                }
                enumName = "DAYLIGHT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_DAYLIGHT;
                    ret = 0;
                    break;
                }
                enumName = "CLOUDY_DAYLIGHT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT;
                    ret = 0;
                    break;
                }
                enumName = "TWILIGHT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_TWILIGHT;
                    ret = 0;
                    break;
                }
                enumName = "SHADE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_MODE_SHADE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AWB_REGIONS: {
            break;
        }
        case ANDROID_CONTROL_CAPTURE_INTENT: {
                enumName = "CUSTOM";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM;
                    ret = 0;
                    break;
                }
                enumName = "PREVIEW";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;
                    ret = 0;
                    break;
                }
                enumName = "STILL_CAPTURE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE;
                    ret = 0;
                    break;
                }
                enumName = "VIDEO_RECORD";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD;
                    ret = 0;
                    break;
                }
                enumName = "VIDEO_SNAPSHOT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT;
                    ret = 0;
                    break;
                }
                enumName = "ZERO_SHUTTER_LAG";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG;
                    ret = 0;
                    break;
                }
                enumName = "MANUAL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_CAPTURE_INTENT_MANUAL;
                    ret = 0;
                    break;
                }
                enumName = "MOTION_TRACKING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_CAPTURE_INTENT_MOTION_TRACKING;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_EFFECT_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "MONO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_MONO;
                    ret = 0;
                    break;
                }
                enumName = "NEGATIVE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_NEGATIVE;
                    ret = 0;
                    break;
                }
                enumName = "SOLARIZE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_SOLARIZE;
                    ret = 0;
                    break;
                }
                enumName = "SEPIA";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_SEPIA;
                    ret = 0;
                    break;
                }
                enumName = "POSTERIZE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_POSTERIZE;
                    ret = 0;
                    break;
                }
                enumName = "WHITEBOARD";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD;
                    ret = 0;
                    break;
                }
                enumName = "BLACKBOARD";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD;
                    ret = 0;
                    break;
                }
                enumName = "AQUA";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_EFFECT_MODE_AQUA;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "AUTO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_MODE_AUTO;
                    ret = 0;
                    break;
                }
                enumName = "USE_SCENE_MODE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_MODE_USE_SCENE_MODE;
                    ret = 0;
                    break;
                }
                enumName = "OFF_KEEP_STATE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_MODE_OFF_KEEP_STATE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_SCENE_MODE: {
                enumName = "DISABLED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_DISABLED;
                    ret = 0;
                    break;
                }
                enumName = "FACE_PRIORITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY;
                    ret = 0;
                    break;
                }
                enumName = "ACTION";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_ACTION;
                    ret = 0;
                    break;
                }
                enumName = "PORTRAIT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_PORTRAIT;
                    ret = 0;
                    break;
                }
                enumName = "LANDSCAPE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_LANDSCAPE;
                    ret = 0;
                    break;
                }
                enumName = "NIGHT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_NIGHT;
                    ret = 0;
                    break;
                }
                enumName = "NIGHT_PORTRAIT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT;
                    ret = 0;
                    break;
                }
                enumName = "THEATRE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_THEATRE;
                    ret = 0;
                    break;
                }
                enumName = "BEACH";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_BEACH;
                    ret = 0;
                    break;
                }
                enumName = "SNOW";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_SNOW;
                    ret = 0;
                    break;
                }
                enumName = "SUNSET";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_SUNSET;
                    ret = 0;
                    break;
                }
                enumName = "STEADYPHOTO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO;
                    ret = 0;
                    break;
                }
                enumName = "FIREWORKS";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_FIREWORKS;
                    ret = 0;
                    break;
                }
                enumName = "SPORTS";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_SPORTS;
                    ret = 0;
                    break;
                }
                enumName = "PARTY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_PARTY;
                    ret = 0;
                    break;
                }
                enumName = "CANDLELIGHT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT;
                    ret = 0;
                    break;
                }
                enumName = "BARCODE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_BARCODE;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_SPEED_VIDEO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO;
                    ret = 0;
                    break;
                }
                enumName = "HDR";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_HDR;
                    ret = 0;
                    break;
                }
                enumName = "FACE_PRIORITY_LOW_LIGHT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY_LOW_LIGHT;
                    ret = 0;
                    break;
                }
                enumName = "DEVICE_CUSTOM_START";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_START;
                    ret = 0;
                    break;
                }
                enumName = "DEVICE_CUSTOM_END";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_END;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES: {
            break;
        }
        case ANDROID_CONTROL_AE_AVAILABLE_MODES: {
            break;
        }
        case ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES: {
            break;
        }
        case ANDROID_CONTROL_AE_COMPENSATION_RANGE: {
            break;
        }
        case ANDROID_CONTROL_AE_COMPENSATION_STEP: {
            break;
        }
        case ANDROID_CONTROL_AF_AVAILABLE_MODES: {
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_EFFECTS: {
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_SCENE_MODES: {
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES: {
            break;
        }
        case ANDROID_CONTROL_AWB_AVAILABLE_MODES: {
            break;
        }
        case ANDROID_CONTROL_MAX_REGIONS: {
            break;
        }
        case ANDROID_CONTROL_SCENE_MODE_OVERRIDES: {
            break;
        }
        case ANDROID_CONTROL_AE_PRECAPTURE_ID: {
            break;
        }
        case ANDROID_CONTROL_AE_STATE: {
                enumName = "INACTIVE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_STATE_INACTIVE;
                    ret = 0;
                    break;
                }
                enumName = "SEARCHING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_STATE_SEARCHING;
                    ret = 0;
                    break;
                }
                enumName = "CONVERGED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_STATE_CONVERGED;
                    ret = 0;
                    break;
                }
                enumName = "LOCKED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_STATE_LOCKED;
                    ret = 0;
                    break;
                }
                enumName = "FLASH_REQUIRED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_STATE_FLASH_REQUIRED;
                    ret = 0;
                    break;
                }
                enumName = "PRECAPTURE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_STATE_PRECAPTURE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AF_STATE: {
                enumName = "INACTIVE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_STATE_INACTIVE;
                    ret = 0;
                    break;
                }
                enumName = "PASSIVE_SCAN";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN;
                    ret = 0;
                    break;
                }
                enumName = "PASSIVE_FOCUSED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED;
                    ret = 0;
                    break;
                }
                enumName = "ACTIVE_SCAN";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN;
                    ret = 0;
                    break;
                }
                enumName = "FOCUSED_LOCKED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED;
                    ret = 0;
                    break;
                }
                enumName = "NOT_FOCUSED_LOCKED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED;
                    ret = 0;
                    break;
                }
                enumName = "PASSIVE_UNFOCUSED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_STATE_PASSIVE_UNFOCUSED;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AF_TRIGGER_ID: {
            break;
        }
        case ANDROID_CONTROL_AWB_STATE: {
                enumName = "INACTIVE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_STATE_INACTIVE;
                    ret = 0;
                    break;
                }
                enumName = "SEARCHING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_STATE_SEARCHING;
                    ret = 0;
                    break;
                }
                enumName = "CONVERGED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_STATE_CONVERGED;
                    ret = 0;
                    break;
                }
                enumName = "LOCKED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_STATE_LOCKED;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS: {
            break;
        }
        case ANDROID_CONTROL_AE_LOCK_AVAILABLE: {
                enumName = "FALSE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_LOCK_AVAILABLE_FALSE;
                    ret = 0;
                    break;
                }
                enumName = "TRUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AWB_LOCK_AVAILABLE: {
                enumName = "FALSE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE;
                    ret = 0;
                    break;
                }
                enumName = "TRUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_TRUE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_MODES: {
            break;
        }
        case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE: {
            break;
        }
        case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST: {
            break;
        }
        case ANDROID_CONTROL_ENABLE_ZSL: {
                enumName = "FALSE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_ENABLE_ZSL_FALSE;
                    ret = 0;
                    break;
                }
                enumName = "TRUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_ENABLE_ZSL_TRUE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AF_SCENE_CHANGE: {
                enumName = "NOT_DETECTED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_SCENE_CHANGE_NOT_DETECTED;
                    ret = 0;
                    break;
                }
                enumName = "DETECTED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_AF_SCENE_CHANGE_DETECTED;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_BOKEH_MAX_SIZES: {
            break;
        }
        case ANDROID_CONTROL_AVAILABLE_BOKEH_ZOOM_RATIO_RANGES: {
            break;
        }
        case ANDROID_CONTROL_BOKEH_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_BOKEH_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "STILL_CAPTURE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_BOKEH_MODE_STILL_CAPTURE;
                    ret = 0;
                    break;
                }
                enumName = "CONTINUOUS";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_CONTROL_BOKEH_MODE_CONTINUOUS;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_CONTROL_ZOOM_RATIO_RANGE: {
            break;
        }
        case ANDROID_CONTROL_ZOOM_RATIO: {
            break;
        }

        case ANDROID_DEMOSAIC_MODE: {
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DEMOSAIC_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DEMOSAIC_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_EDGE_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_EDGE_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_EDGE_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_EDGE_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
                enumName = "ZERO_SHUTTER_LAG";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_EDGE_MODE_ZERO_SHUTTER_LAG;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_EDGE_STRENGTH: {
            break;
        }
        case ANDROID_EDGE_AVAILABLE_EDGE_MODES: {
            break;
        }

        case ANDROID_FLASH_FIRING_POWER: {
            break;
        }
        case ANDROID_FLASH_FIRING_TIME: {
            break;
        }
        case ANDROID_FLASH_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "SINGLE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_MODE_SINGLE;
                    ret = 0;
                    break;
                }
                enumName = "TORCH";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_MODE_TORCH;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_FLASH_COLOR_TEMPERATURE: {
            break;
        }
        case ANDROID_FLASH_MAX_ENERGY: {
            break;
        }
        case ANDROID_FLASH_STATE: {
                enumName = "UNAVAILABLE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_STATE_UNAVAILABLE;
                    ret = 0;
                    break;
                }
                enumName = "CHARGING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_STATE_CHARGING;
                    ret = 0;
                    break;
                }
                enumName = "READY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_STATE_READY;
                    ret = 0;
                    break;
                }
                enumName = "FIRED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_STATE_FIRED;
                    ret = 0;
                    break;
                }
                enumName = "PARTIAL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_STATE_PARTIAL;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_FLASH_INFO_AVAILABLE: {
                enumName = "FALSE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_INFO_AVAILABLE_FALSE;
                    ret = 0;
                    break;
                }
                enumName = "TRUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_FLASH_INFO_AVAILABLE_TRUE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_FLASH_INFO_CHARGE_DURATION: {
            break;
        }

        case ANDROID_HOT_PIXEL_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_HOT_PIXEL_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_HOT_PIXEL_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES: {
            break;
        }

        case ANDROID_JPEG_GPS_COORDINATES: {
            break;
        }
        case ANDROID_JPEG_GPS_PROCESSING_METHOD: {
            break;
        }
        case ANDROID_JPEG_GPS_TIMESTAMP: {
            break;
        }
        case ANDROID_JPEG_ORIENTATION: {
            break;
        }
        case ANDROID_JPEG_QUALITY: {
            break;
        }
        case ANDROID_JPEG_THUMBNAIL_QUALITY: {
            break;
        }
        case ANDROID_JPEG_THUMBNAIL_SIZE: {
            break;
        }
        case ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES: {
            break;
        }
        case ANDROID_JPEG_MAX_SIZE: {
            break;
        }
        case ANDROID_JPEG_SIZE: {
            break;
        }

        case ANDROID_LENS_APERTURE: {
            break;
        }
        case ANDROID_LENS_FILTER_DENSITY: {
            break;
        }
        case ANDROID_LENS_FOCAL_LENGTH: {
            break;
        }
        case ANDROID_LENS_FOCUS_DISTANCE: {
            break;
        }
        case ANDROID_LENS_OPTICAL_STABILIZATION_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_LENS_FACING: {
                enumName = "FRONT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_FACING_FRONT;
                    ret = 0;
                    break;
                }
                enumName = "BACK";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_FACING_BACK;
                    ret = 0;
                    break;
                }
                enumName = "EXTERNAL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_FACING_EXTERNAL;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_LENS_POSE_ROTATION: {
            break;
        }
        case ANDROID_LENS_POSE_TRANSLATION: {
            break;
        }
        case ANDROID_LENS_FOCUS_RANGE: {
            break;
        }
        case ANDROID_LENS_STATE: {
                enumName = "STATIONARY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_STATE_STATIONARY;
                    ret = 0;
                    break;
                }
                enumName = "MOVING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_STATE_MOVING;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_LENS_INTRINSIC_CALIBRATION: {
            break;
        }
        case ANDROID_LENS_RADIAL_DISTORTION: {
            break;
        }
        case ANDROID_LENS_POSE_REFERENCE: {
                enumName = "PRIMARY_CAMERA";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_POSE_REFERENCE_PRIMARY_CAMERA;
                    ret = 0;
                    break;
                }
                enumName = "GYROSCOPE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_POSE_REFERENCE_GYROSCOPE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_LENS_DISTORTION: {
            break;
        }

        case ANDROID_LENS_INFO_AVAILABLE_APERTURES: {
            break;
        }
        case ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES: {
            break;
        }
        case ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS: {
            break;
        }
        case ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION: {
            break;
        }
        case ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE: {
            break;
        }
        case ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE: {
            break;
        }
        case ANDROID_LENS_INFO_SHADING_MAP_SIZE: {
            break;
        }
        case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION: {
                enumName = "UNCALIBRATED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED;
                    ret = 0;
                    break;
                }
                enumName = "APPROXIMATE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE;
                    ret = 0;
                    break;
                }
                enumName = "CALIBRATED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_NOISE_REDUCTION_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_NOISE_REDUCTION_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_NOISE_REDUCTION_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
                enumName = "MINIMAL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_NOISE_REDUCTION_MODE_MINIMAL;
                    ret = 0;
                    break;
                }
                enumName = "ZERO_SHUTTER_LAG";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_NOISE_REDUCTION_STRENGTH: {
            break;
        }
        case ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES: {
            break;
        }

        case ANDROID_QUIRKS_METERING_CROP_REGION: {
            break;
        }
        case ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO: {
            break;
        }
        case ANDROID_QUIRKS_USE_ZSL_FORMAT: {
            break;
        }
        case ANDROID_QUIRKS_USE_PARTIAL_RESULT: {
            break;
        }
        case ANDROID_QUIRKS_PARTIAL_RESULT: {
                enumName = "FINAL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_QUIRKS_PARTIAL_RESULT_FINAL;
                    ret = 0;
                    break;
                }
                enumName = "PARTIAL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_REQUEST_FRAME_COUNT: {
            break;
        }
        case ANDROID_REQUEST_ID: {
            break;
        }
        case ANDROID_REQUEST_INPUT_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_METADATA_MODE: {
                enumName = "NONE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_METADATA_MODE_NONE;
                    ret = 0;
                    break;
                }
                enumName = "FULL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_METADATA_MODE_FULL;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_REQUEST_OUTPUT_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_TYPE: {
                enumName = "CAPTURE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_TYPE_CAPTURE;
                    ret = 0;
                    break;
                }
                enumName = "REPROCESS";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_TYPE_REPROCESS;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS: {
            break;
        }
        case ANDROID_REQUEST_PIPELINE_DEPTH: {
            break;
        }
        case ANDROID_REQUEST_PIPELINE_MAX_DEPTH: {
            break;
        }
        case ANDROID_REQUEST_PARTIAL_RESULT_COUNT: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_CAPABILITIES: {
                enumName = "BACKWARD_COMPATIBLE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE;
                    ret = 0;
                    break;
                }
                enumName = "MANUAL_SENSOR";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR;
                    ret = 0;
                    break;
                }
                enumName = "MANUAL_POST_PROCESSING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING;
                    ret = 0;
                    break;
                }
                enumName = "RAW";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW;
                    ret = 0;
                    break;
                }
                enumName = "PRIVATE_REPROCESSING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING;
                    ret = 0;
                    break;
                }
                enumName = "READ_SENSOR_SETTINGS";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS;
                    ret = 0;
                    break;
                }
                enumName = "BURST_CAPTURE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE;
                    ret = 0;
                    break;
                }
                enumName = "YUV_REPROCESSING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING;
                    ret = 0;
                    break;
                }
                enumName = "DEPTH_OUTPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT;
                    ret = 0;
                    break;
                }
                enumName = "CONSTRAINED_HIGH_SPEED_VIDEO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO;
                    ret = 0;
                    break;
                }
                enumName = "MOTION_TRACKING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING;
                    ret = 0;
                    break;
                }
                enumName = "LOGICAL_MULTI_CAMERA";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA;
                    ret = 0;
                    break;
                }
                enumName = "MONOCHROME";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME;
                    ret = 0;
                    break;
                }
                enumName = "SECURE_IMAGE_DATA";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA;
                    ret = 0;
                    break;
                }
                enumName = "SYSTEM_CAMERA";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA;
                    ret = 0;
                    break;
                }
                enumName = "OFFLINE_PROCESSING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_RESULT_KEYS: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_SESSION_KEYS: {
            break;
        }
        case ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS: {
            break;
        }
        case ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION: {
            break;
        }

        case ANDROID_SCALER_CROP_REGION: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_FORMATS: {
                enumName = "RAW16";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_RAW16;
                    ret = 0;
                    break;
                }
                enumName = "RAW_OPAQUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_RAW_OPAQUE;
                    ret = 0;
                    break;
                }
                enumName = "YV12";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_YV12;
                    ret = 0;
                    break;
                }
                enumName = "YCrCb_420_SP";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_YCrCb_420_SP;
                    ret = 0;
                    break;
                }
                enumName = "IMPLEMENTATION_DEFINED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED;
                    ret = 0;
                    break;
                }
                enumName = "YCbCr_420_888";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888;
                    ret = 0;
                    break;
                }
                enumName = "BLOB";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_BLOB;
                    ret = 0;
                    break;
                }
                enumName = "RAW10";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_RAW10;
                    ret = 0;
                    break;
                }
                enumName = "RAW12";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_RAW12;
                    ret = 0;
                    break;
                }
                enumName = "Y8";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_FORMATS_Y8;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_JPEG_SIZES: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_RAW_SIZES: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS: {
                enumName = "OUTPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT;
                    ret = 0;
                    break;
                }
                enumName = "INPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_INPUT;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_AVAILABLE_STALL_DURATIONS: {
            break;
        }
        case ANDROID_SCALER_CROPPING_TYPE: {
                enumName = "CENTER_ONLY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_CROPPING_TYPE_CENTER_ONLY;
                    ret = 0;
                    break;
                }
                enumName = "FREEFORM";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_CROPPING_TYPE_FREEFORM;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS: {
                enumName = "PREVIEW";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW;
                    ret = 0;
                    break;
                }
                enumName = "RECORD";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD;
                    ret = 0;
                    break;
                }
                enumName = "VIDEO_SNAPSHOT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT;
                    ret = 0;
                    break;
                }
                enumName = "SNAPSHOT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT;
                    ret = 0;
                    break;
                }
                enumName = "ZSL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_ZSL;
                    ret = 0;
                    break;
                }
                enumName = "RAW";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RAW;
                    ret = 0;
                    break;
                }
                enumName = "LOW_LATENCY_SNAPSHOT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_LOW_LATENCY_SNAPSHOT;
                    ret = 0;
                    break;
                }
                enumName = "PUBLIC_END";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END;
                    ret = 0;
                    break;
                }
                enumName = "VENDOR_START";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP: {
            break;
        }

        case ANDROID_SENSOR_EXPOSURE_TIME: {
            break;
        }
        case ANDROID_SENSOR_FRAME_DURATION: {
            break;
        }
        case ANDROID_SENSOR_SENSITIVITY: {
            break;
        }
        case ANDROID_SENSOR_REFERENCE_ILLUMINANT1: {
                enumName = "DAYLIGHT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT;
                    ret = 0;
                    break;
                }
                enumName = "FLUORESCENT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT;
                    ret = 0;
                    break;
                }
                enumName = "TUNGSTEN";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN;
                    ret = 0;
                    break;
                }
                enumName = "FLASH";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLASH;
                    ret = 0;
                    break;
                }
                enumName = "FINE_WEATHER";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER;
                    ret = 0;
                    break;
                }
                enumName = "CLOUDY_WEATHER";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER;
                    ret = 0;
                    break;
                }
                enumName = "SHADE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_SHADE;
                    ret = 0;
                    break;
                }
                enumName = "DAYLIGHT_FLUORESCENT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT;
                    ret = 0;
                    break;
                }
                enumName = "DAY_WHITE_FLUORESCENT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT;
                    ret = 0;
                    break;
                }
                enumName = "COOL_WHITE_FLUORESCENT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT;
                    ret = 0;
                    break;
                }
                enumName = "WHITE_FLUORESCENT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT;
                    ret = 0;
                    break;
                }
                enumName = "STANDARD_A";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A;
                    ret = 0;
                    break;
                }
                enumName = "STANDARD_B";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B;
                    ret = 0;
                    break;
                }
                enumName = "STANDARD_C";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C;
                    ret = 0;
                    break;
                }
                enumName = "D55";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D55;
                    ret = 0;
                    break;
                }
                enumName = "D65";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D65;
                    ret = 0;
                    break;
                }
                enumName = "D75";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D75;
                    ret = 0;
                    break;
                }
                enumName = "D50";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D50;
                    ret = 0;
                    break;
                }
                enumName = "ISO_STUDIO_TUNGSTEN";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SENSOR_REFERENCE_ILLUMINANT2: {
            break;
        }
        case ANDROID_SENSOR_CALIBRATION_TRANSFORM1: {
            break;
        }
        case ANDROID_SENSOR_CALIBRATION_TRANSFORM2: {
            break;
        }
        case ANDROID_SENSOR_COLOR_TRANSFORM1: {
            break;
        }
        case ANDROID_SENSOR_COLOR_TRANSFORM2: {
            break;
        }
        case ANDROID_SENSOR_FORWARD_MATRIX1: {
            break;
        }
        case ANDROID_SENSOR_FORWARD_MATRIX2: {
            break;
        }
        case ANDROID_SENSOR_BASE_GAIN_FACTOR: {
            break;
        }
        case ANDROID_SENSOR_BLACK_LEVEL_PATTERN: {
            break;
        }
        case ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY: {
            break;
        }
        case ANDROID_SENSOR_ORIENTATION: {
            break;
        }
        case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS: {
            break;
        }
        case ANDROID_SENSOR_TIMESTAMP: {
            break;
        }
        case ANDROID_SENSOR_TEMPERATURE: {
            break;
        }
        case ANDROID_SENSOR_NEUTRAL_COLOR_POINT: {
            break;
        }
        case ANDROID_SENSOR_NOISE_PROFILE: {
            break;
        }
        case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP: {
            break;
        }
        case ANDROID_SENSOR_PROFILE_TONE_CURVE: {
            break;
        }
        case ANDROID_SENSOR_GREEN_SPLIT: {
            break;
        }
        case ANDROID_SENSOR_TEST_PATTERN_DATA: {
            break;
        }
        case ANDROID_SENSOR_TEST_PATTERN_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_TEST_PATTERN_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "SOLID_COLOR";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR;
                    ret = 0;
                    break;
                }
                enumName = "COLOR_BARS";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS;
                    ret = 0;
                    break;
                }
                enumName = "COLOR_BARS_FADE_TO_GRAY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY;
                    ret = 0;
                    break;
                }
                enumName = "PN9";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_TEST_PATTERN_MODE_PN9;
                    ret = 0;
                    break;
                }
                enumName = "CUSTOM1";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES: {
            break;
        }
        case ANDROID_SENSOR_ROLLING_SHUTTER_SKEW: {
            break;
        }
        case ANDROID_SENSOR_OPTICAL_BLACK_REGIONS: {
            break;
        }
        case ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL: {
            break;
        }
        case ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL: {
            break;
        }
        case ANDROID_SENSOR_OPAQUE_RAW_SIZE: {
            break;
        }

        case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE: {
            break;
        }
        case ANDROID_SENSOR_INFO_SENSITIVITY_RANGE: {
            break;
        }
        case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT: {
                enumName = "RGGB";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB;
                    ret = 0;
                    break;
                }
                enumName = "GRBG";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG;
                    ret = 0;
                    break;
                }
                enumName = "GBRG";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG;
                    ret = 0;
                    break;
                }
                enumName = "BGGR";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR;
                    ret = 0;
                    break;
                }
                enumName = "RGB";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB;
                    ret = 0;
                    break;
                }
                enumName = "MONO";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO;
                    ret = 0;
                    break;
                }
                enumName = "NIR";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE: {
            break;
        }
        case ANDROID_SENSOR_INFO_MAX_FRAME_DURATION: {
            break;
        }
        case ANDROID_SENSOR_INFO_PHYSICAL_SIZE: {
            break;
        }
        case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE: {
            break;
        }
        case ANDROID_SENSOR_INFO_WHITE_LEVEL: {
            break;
        }
        case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE: {
                enumName = "UNKNOWN";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN;
                    ret = 0;
                    break;
                }
                enumName = "REALTIME";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED: {
                enumName = "FALSE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_FALSE;
                    ret = 0;
                    break;
                }
                enumName = "TRUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_TRUE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE: {
            break;
        }

        case ANDROID_SHADING_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SHADING_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SHADING_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SHADING_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SHADING_STRENGTH: {
            break;
        }
        case ANDROID_SHADING_AVAILABLE_MODES: {
            break;
        }

        case ANDROID_STATISTICS_FACE_DETECT_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "SIMPLE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE;
                    ret = 0;
                    break;
                }
                enumName = "FULL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_FACE_DETECT_MODE_FULL;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_STATISTICS_HISTOGRAM_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_HISTOGRAM_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_HISTOGRAM_MODE_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_STATISTICS_SHARPNESS_MAP_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_SHARPNESS_MAP_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_SHARPNESS_MAP_MODE_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_STATISTICS_FACE_IDS: {
            break;
        }
        case ANDROID_STATISTICS_FACE_LANDMARKS: {
            break;
        }
        case ANDROID_STATISTICS_FACE_RECTANGLES: {
            break;
        }
        case ANDROID_STATISTICS_FACE_SCORES: {
            break;
        }
        case ANDROID_STATISTICS_HISTOGRAM: {
            break;
        }
        case ANDROID_STATISTICS_SHARPNESS_MAP: {
            break;
        }
        case ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP: {
            break;
        }
        case ANDROID_STATISTICS_LENS_SHADING_MAP: {
            break;
        }
        case ANDROID_STATISTICS_PREDICTED_COLOR_GAINS: {
            break;
        }
        case ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM: {
            break;
        }
        case ANDROID_STATISTICS_SCENE_FLICKER: {
                enumName = "NONE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_SCENE_FLICKER_NONE;
                    ret = 0;
                    break;
                }
                enumName = "50HZ";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_SCENE_FLICKER_50HZ;
                    ret = 0;
                    break;
                }
                enumName = "60HZ";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_SCENE_FLICKER_60HZ;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_STATISTICS_HOT_PIXEL_MAP: {
            break;
        }
        case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_STATISTICS_OIS_DATA_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_OIS_DATA_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_STATISTICS_OIS_DATA_MODE_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_STATISTICS_OIS_TIMESTAMPS: {
            break;
        }
        case ANDROID_STATISTICS_OIS_X_SHIFTS: {
            break;
        }
        case ANDROID_STATISTICS_OIS_Y_SHIFTS: {
            break;
        }

        case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: {
            break;
        }
        case ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT: {
            break;
        }
        case ANDROID_STATISTICS_INFO_MAX_FACE_COUNT: {
            break;
        }
        case ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT: {
            break;
        }
        case ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE: {
            break;
        }
        case ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE: {
            break;
        }
        case ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES: {
            break;
        }
        case ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES: {
            break;
        }
        case ANDROID_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES: {
            break;
        }

        case ANDROID_TONEMAP_CURVE_BLUE: {
            break;
        }
        case ANDROID_TONEMAP_CURVE_GREEN: {
            break;
        }
        case ANDROID_TONEMAP_CURVE_RED: {
            break;
        }
        case ANDROID_TONEMAP_MODE: {
                enumName = "CONTRAST_CURVE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_TONEMAP_MODE_CONTRAST_CURVE;
                    ret = 0;
                    break;
                }
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_TONEMAP_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_TONEMAP_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
                enumName = "GAMMA_VALUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_TONEMAP_MODE_GAMMA_VALUE;
                    ret = 0;
                    break;
                }
                enumName = "PRESET_CURVE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_TONEMAP_MODE_PRESET_CURVE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_TONEMAP_MAX_CURVE_POINTS: {
            break;
        }
        case ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES: {
            break;
        }
        case ANDROID_TONEMAP_GAMMA: {
            break;
        }
        case ANDROID_TONEMAP_PRESET_CURVE: {
                enumName = "SRGB";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_TONEMAP_PRESET_CURVE_SRGB;
                    ret = 0;
                    break;
                }
                enumName = "REC709";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_TONEMAP_PRESET_CURVE_REC709;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_LED_TRANSMIT: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LED_TRANSMIT_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LED_TRANSMIT_ON;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_LED_AVAILABLE_LEDS: {
                enumName = "TRANSMIT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LED_AVAILABLE_LEDS_TRANSMIT;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL: {
                enumName = "LIMITED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
                    ret = 0;
                    break;
                }
                enumName = "FULL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL;
                    ret = 0;
                    break;
                }
                enumName = "LEGACY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY;
                    ret = 0;
                    break;
                }
                enumName = "3";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3;
                    ret = 0;
                    break;
                }
                enumName = "EXTERNAL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_INFO_VERSION: {
            break;
        }
        case ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION: {
                enumName = "HIDL_DEVICE_3_5";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_HIDL_DEVICE_3_5;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_BLACK_LEVEL_LOCK: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_BLACK_LEVEL_LOCK_OFF;
                    ret = 0;
                    break;
                }
                enumName = "ON";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_BLACK_LEVEL_LOCK_ON;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_SYNC_FRAME_NUMBER: {
                enumName = "CONVERGING";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SYNC_FRAME_NUMBER_CONVERGING;
                    ret = 0;
                    break;
                }
                enumName = "UNKNOWN";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SYNC_FRAME_NUMBER_UNKNOWN;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_SYNC_MAX_LATENCY: {
                enumName = "PER_FRAME_CONTROL";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SYNC_MAX_LATENCY_PER_FRAME_CONTROL;
                    ret = 0;
                    break;
                }
                enumName = "UNKNOWN";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_SYNC_MAX_LATENCY_UNKNOWN;
                    ret = 0;
                    break;
                }
            break;
        }

        case ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR: {
            break;
        }
        case ANDROID_REPROCESS_MAX_CAPTURE_STALL: {
            break;
        }

        case ANDROID_DEPTH_MAX_DEPTH_SAMPLES: {
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS: {
                enumName = "OUTPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_OUTPUT;
                    ret = 0;
                    break;
                }
                enumName = "INPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_INPUT;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS: {
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS: {
            break;
        }
        case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE: {
                enumName = "FALSE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_FALSE;
                    ret = 0;
                    break;
                }
                enumName = "TRUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_TRUE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS: {
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS: {
                enumName = "OUTPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT;
                    ret = 0;
                    break;
                }
                enumName = "INPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS: {
            break;
        }
        case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS: {
            break;
        }

        case ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS: {
            break;
        }
        case ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE: {
                enumName = "APPROXIMATE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE;
                    ret = 0;
                    break;
                }
                enumName = "CALIBRATED";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: {
            break;
        }

        case ANDROID_DISTORTION_CORRECTION_MODE: {
                enumName = "OFF";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DISTORTION_CORRECTION_MODE_OFF;
                    ret = 0;
                    break;
                }
                enumName = "FAST";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DISTORTION_CORRECTION_MODE_FAST;
                    ret = 0;
                    break;
                }
                enumName = "HIGH_QUALITY";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_DISTORTION_CORRECTION_MODE_HIGH_QUALITY;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES: {
            break;
        }

        case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS: {
                enumName = "OUTPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT;
                    ret = 0;
                    break;
                }
                enumName = "INPUT";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS: {
            break;
        }
        case ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS: {
            break;
        }

        case ANDROID_HEIC_INFO_SUPPORTED: {
                enumName = "FALSE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_HEIC_INFO_SUPPORTED_FALSE;
                    ret = 0;
                    break;
                }
                enumName = "TRUE";
                if (strncmp(name, enumName, size) == 0) {
                    *value = ANDROID_HEIC_INFO_SUPPORTED_TRUE;
                    ret = 0;
                    break;
                }
            break;
        }
        case ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT: {
            break;
        }

    }

    return ret;
}


#define CAMERA_METADATA_ENUM_STRING_MAX_SIZE 29
