/*
** Copyright 2014, Samsung Electronics Co. LTD
**
** 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.
*/

#ifndef EXYNOS_CAMERA_AVAILABILITY_TABLE_H
#define EXYNOS_CAMERA_AVAILABILITY_TABLE_H

#include <hardware/camera3.h>
#include <camera/CameraMetadata.h>

/* Android ColorCorrection Static Metadata */
static uint8_t AVAILABLE_COLOR_CORRECTION_ABERRATION_MODES[] =
{
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF,
    //ANDROID_COLOR_CORRECTION_ABERRATION_MODE_FAST,
    //ANDROID_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY,
};

/* Android Control Static Metadata */
static uint8_t AVAILABLE_ANTIBANDING_MODES[] =
{
    ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF,
    //ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ,
    //ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ,
    ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO,
};

/* ANDROID_LENS_FACING_FRONT */
static uint8_t AVAILABLE_AE_MODES_FRONT[] =
{
    ANDROID_CONTROL_AE_MODE_OFF,
    ANDROID_CONTROL_AE_MODE_ON,
    //ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH,
    //ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH,
    //ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE,
};
/* ANDROID_LENS_FACING_BACK */
static uint8_t AVAILABLE_AE_MODES_BACK[] =
{
    ANDROID_CONTROL_AE_MODE_OFF,
    ANDROID_CONTROL_AE_MODE_ON,
    ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH,
    ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH,
    //ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE,
};

/* ANDROID_LENS_FACING_FRONT */
static uint8_t AVAILABLE_AF_MODES_FRONT[] =
{
    ANDROID_CONTROL_AF_MODE_OFF,
    //ANDROID_CONTROL_AF_MODE_AUTO,
    //ANDROID_CONTROL_AF_MODE_MACRO,
    //ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO,
    //ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE,
    //ANDROID_CONTROL_AF_MODE_EDOF,
};
/* ANDROID_LENS_FACING_BACK */
static uint8_t AVAILABLE_AF_MODES_BACK[] =
{
    ANDROID_CONTROL_AF_MODE_OFF,
    ANDROID_CONTROL_AF_MODE_AUTO,
    ANDROID_CONTROL_AF_MODE_MACRO,
    ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO,
    ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE,
    //ANDROID_CONTROL_AF_MODE_EDOF,
};

static uint8_t AVAILABLE_EFFECT_MODES[] =
{
    ANDROID_CONTROL_EFFECT_MODE_OFF,
    ANDROID_CONTROL_EFFECT_MODE_MONO,
    ANDROID_CONTROL_EFFECT_MODE_NEGATIVE,
    //ANDROID_CONTROL_EFFECT_MODE_SOLARIZE,
    ANDROID_CONTROL_EFFECT_MODE_SEPIA,
    ANDROID_CONTROL_EFFECT_MODE_POSTERIZE,
    //ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD,
    //ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD,
    ANDROID_CONTROL_EFFECT_MODE_AQUA,
};

static uint8_t AVAILABLE_SCENE_MODES[] =
{
    ANDROID_CONTROL_SCENE_MODE_DISABLED,
    ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY,
    //ANDROID_CONTROL_SCENE_MODE_ACTION,
    //ANDROID_CONTROL_SCENE_MODE_PORTRAIT,
    //ANDROID_CONTROL_SCENE_MODE_LANDSCAPE,
    //ANDROID_CONTROL_SCENE_MODE_NIGHT,
    //ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT,
    //ANDROID_CONTROL_SCENE_MODE_THEATRE,
    //ANDROID_CONTROL_SCENE_MODE_BEACH,
    //ANDROID_CONTROL_SCENE_MODE_SNOW,
    //ANDROID_CONTROL_SCENE_MODE_SUNSET,
    //ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO,
    //ANDROID_CONTROL_SCENE_MODE_FIREWORKS,
    //ANDROID_CONTROL_SCENE_MODE_SPORTS,
    //ANDROID_CONTROL_SCENE_MODE_PARTY,
    //ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT,
    //ANDROID_CONTROL_SCENE_MODE_BARCODE,
    //ANDROID_CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO,
    //ANDROID_CONTROL_SCENE_MODE_HDR,
};

static uint8_t AVAILABLE_VIDEO_STABILIZATION_MODES[] =
{
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF,
    //ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON,
};

static uint8_t AVAILABLE_AWB_MODES[] =
{
    ANDROID_CONTROL_AWB_MODE_OFF,
    ANDROID_CONTROL_AWB_MODE_AUTO,
    ANDROID_CONTROL_AWB_MODE_INCANDESCENT,
    ANDROID_CONTROL_AWB_MODE_FLUORESCENT,
    //ANDROID_CONTROL_AWB_MODE_WARM_FLUORESCENT,
    ANDROID_CONTROL_AWB_MODE_DAYLIGHT,
    ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT,
    //ANDROID_CONTROL_AWB_MODE_TWILIGHT,
    //ANDROID_CONTROL_AWB_MODE_SHADE,
};

static uint8_t AVAILABLE_CONTROL_MODES[] =
{
    ANDROID_CONTROL_MODE_OFF,
    ANDROID_CONTROL_MODE_AUTO,
    ANDROID_CONTROL_MODE_USE_SCENE_MODE,
    //ANDROID_CONTROL_MODE_OFF_KEEP_STATE,
};

static uint8_t SCENE_MODE_OVERRIDES[] =
{
    /* ANDROID_CONTROL_SCENE_MODE_DISABLED */
    ANDROID_CONTROL_AE_MODE_ON,
    ANDROID_CONTROL_AWB_MODE_AUTO,
    ANDROID_CONTROL_AF_MODE_AUTO,
    /* ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY */
    ANDROID_CONTROL_AE_MODE_ON,
    ANDROID_CONTROL_AWB_MODE_AUTO,
    ANDROID_CONTROL_AF_MODE_AUTO,
    /* ANDROID_CONTROL_SCENE_MODE_ACTION */
    //ANDROID_CONTROL_AE_MODE_ON,
    //ANDROID_CONTROL_AWB_MODE_AUTO,
    //ANDROID_CONTROL_AF_MODE_OFF,
    /* ANDROID_CONTROL_SCENE_MODE_NIGHT */
    //ANDROID_CONTROL_AE_MODE_ON,
    //ANDROID_CONTROL_AWB_MODE_AUTO,
    //ANDROID_CONTROL_AF_MODE_OFF,
    /* ANDROID_CONTROL_SCENE_MODE_SUNSET */
    //ANDROID_CONTROL_AE_MODE_ON,
    //ANDROID_CONTROL_AWB_MODE_DAYLIGHT,
    //ANDROID_CONTROL_AF_MODE_OFF,
    /* ANDROID_CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO */
    //ANDROID_CONTROL_AE_MODE_ON,
    //ANDROID_CONTROL_AWB_MODE_AUTO,
    //ANDROID_CONTROL_AF_MODE_AUTO,
    /* ANDROID_CONTROL_SCENE_MODE_HDR */
    //ANDROID_CONTROL_AE_MODE_ON,
    //ANDROID_CONTROL_AWB_MODE_AUTO,
    //ANDROID_CONTROL_AF_MODE_AUTO,
};

/* Android Edge Static Metadata */
static uint8_t AVAILABLE_EDGE_MODES[] =
{
    ANDROID_EDGE_MODE_OFF,
    ANDROID_EDGE_MODE_FAST,
    ANDROID_EDGE_MODE_HIGH_QUALITY, /* NOT supported */
};

/* Android Hot Pixel Static Metadata */
static uint8_t AVAILABLE_HOT_PIXEL_MODES[] =
{
    ANDROID_HOT_PIXEL_MODE_OFF,
    ANDROID_HOT_PIXEL_MODE_FAST,
    ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY,
};

/* Android Lens Static Metadata */
static uint8_t AVAILABLE_OPTICAL_STABILIZATION[] =
{
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF,
    //ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON,
};

/* Android Lens Static Metadata */
static uint8_t AVAILABLE_OPTICAL_STABILIZATION_BACK[] =
{
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF,
//    ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON,
};

/* Android Noise Reduction Static Metadata */
static uint8_t AVAILABLE_NOISE_REDUCTION_MODES[] =
{
    ANDROID_NOISE_REDUCTION_MODE_OFF,
    ANDROID_NOISE_REDUCTION_MODE_FAST,
    ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY, /* NOT supported */
};

/* Android Request Static Metadata */
/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED */
static uint8_t AVAILABLE_CAPABILITIES_LIMITED[] =
{
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO,
};

static uint8_t AVAILABLE_CAPABILITIES_LIMITED_BURST[] =
{
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO,
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED add optional */
static uint8_t AVAILABLE_CAPABILITIES_LIMITED_OPTIONAL[] =
{
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO,
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL */
static uint8_t AVAILABLE_CAPABILITIES_FULL[] =
{
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING,
    //ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO,
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY */
static uint8_t AVAILABLE_CAPABILITIES_LEGACY[] =
{
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED */
static int32_t AVAILABLE_REQUEST_KEYS_LIMITED[] =
{
    /* REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE */
    ANDROID_CONTROL_AE_ANTIBANDING_MODE,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    ANDROID_FLASH_MODE,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_SCALER_CROP_REGION,
    ANDROID_STATISTICS_FACE_DETECT_MODE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_NOISE_REDUCTION_MODE,
#if 0
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR */
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_EXPOSURE_TIME,
    ANDROID_SENSOR_SENSITIVITY,
    ANDROID_LENS_APERTURE,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_BLACK_LEVEL_LOCK,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING */
    ANDROID_TONEMAP_MODE,
    ANDROID_COLOR_CORRECTION_MODE,
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_SHADING_MODE,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING with FULL H/W level */
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_RAW */
    ANDROID_HOT_PIXEL_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
    /* ETC */
    ANDROID_EDGE_MODE,
    ANDROID_SENSOR_TEST_PATTERN_MODE,
#endif
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_AF_REGIONS,
};

static int32_t AVAILABLE_REQUEST_KEYS_LIMITED_OPTIONAL[] =
{
    /* REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE */
    ANDROID_CONTROL_AE_ANTIBANDING_MODE,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    ANDROID_FLASH_MODE,
    ANDROID_JPEG_GPS_COORDINATES,
    ANDROID_JPEG_GPS_PROCESSING_METHOD,
    ANDROID_JPEG_GPS_TIMESTAMP,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_SCALER_CROP_REGION,
    ANDROID_STATISTICS_FACE_DETECT_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR */
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_EXPOSURE_TIME,
    ANDROID_SENSOR_SENSITIVITY,
    ANDROID_LENS_APERTURE,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_LENS_FOCAL_LENGTH,
    ANDROID_LENS_FOCUS_DISTANCE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_BLACK_LEVEL_LOCK,
    ANDROID_NOISE_REDUCTION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING */
    //ANDROID_TONEMAP_CURVE_BLUE,
    //ANDROID_TONEMAP_CURVE_GREEN,
    //ANDROID_TONEMAP_CURVE_RED,
    ANDROID_TONEMAP_MODE,
#if 0
    ANDROID_COLOR_CORRECTION_MODE,
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_SHADING_MODE,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING with FULL H/W level */
    //ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_RAW */
    ANDROID_HOT_PIXEL_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
#endif
    /* ETC */
    //ANDROID_DEMOSAIC_MODE,  //future
    ANDROID_EDGE_MODE,
    //ANDROID_EDGE_STRENGTH,  //future
    //ANDROID_SENSOR_TEST_PATTERN_MODE,
    //ANDROID_STATISTICS_HISTOGRAM_MODE,      //future
    //ANDROID_STATISTICS_SHARPNESS_MAP_MODE,  //future
    ANDROID_REQUEST_ID,
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_AF_REGIONS,
};

static int32_t AVAILABLE_REQUEST_KEYS_LIMITED_FRONT[] =
{
    /* REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE */
    ANDROID_CONTROL_AE_ANTIBANDING_MODE,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    ANDROID_FLASH_MODE,
    ANDROID_JPEG_GPS_COORDINATES,
    ANDROID_JPEG_GPS_PROCESSING_METHOD,
    ANDROID_JPEG_GPS_TIMESTAMP,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_SCALER_CROP_REGION,
    ANDROID_STATISTICS_FACE_DETECT_MODE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_NOISE_REDUCTION_MODE,
#if 0
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR */
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_EXPOSURE_TIME,
    ANDROID_SENSOR_SENSITIVITY,
    ANDROID_LENS_APERTURE,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_LENS_FOCAL_LENGTH,
    ANDROID_LENS_FOCUS_DISTANCE,
    ANDROID_BLACK_LEVEL_LOCK,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING */
    ANDROID_TONEMAP_CURVE_BLUE,
    ANDROID_TONEMAP_CURVE_GREEN,
    ANDROID_TONEMAP_CURVE_RED,
    ANDROID_TONEMAP_MODE,
    ANDROID_COLOR_CORRECTION_MODE,
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_SHADING_MODE,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING with FULL H/W level */
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_RAW */
    ANDROID_HOT_PIXEL_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
    /* ETC */
    //ANDROID_DEMOSAIC_MODE,  //future
    ANDROID_EDGE_MODE,
    //ANDROID_EDGE_STRENGTH,  //future
    ANDROID_SENSOR_TEST_PATTERN_MODE,
    //ANDROID_STATISTICS_HISTOGRAM_MODE,      //future
    //ANDROID_STATISTICS_SHARPNESS_MAP_MODE,  //future
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_AF_REGIONS,
#endif
    ANDROID_REQUEST_ID,
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL */
static int32_t AVAILABLE_REQUEST_KEYS_FULL[] =
{
    /* REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE */
    ANDROID_CONTROL_AE_ANTIBANDING_MODE,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    ANDROID_FLASH_MODE,
    ANDROID_JPEG_GPS_COORDINATES,
    ANDROID_JPEG_GPS_PROCESSING_METHOD,
    ANDROID_JPEG_GPS_TIMESTAMP,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_SCALER_CROP_REGION,
    ANDROID_STATISTICS_FACE_DETECT_MODE,
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_AF_REGIONS,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR */
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_EXPOSURE_TIME,
    ANDROID_SENSOR_SENSITIVITY,
    ANDROID_LENS_APERTURE,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_LENS_FOCAL_LENGTH,
    ANDROID_LENS_FOCUS_DISTANCE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_BLACK_LEVEL_LOCK,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING */
    ANDROID_TONEMAP_CURVE_BLUE,
    ANDROID_TONEMAP_CURVE_GREEN,
    ANDROID_TONEMAP_CURVE_RED,
    ANDROID_TONEMAP_MODE,
    ANDROID_COLOR_CORRECTION_MODE,
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_SHADING_MODE,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING with FULL H/W level */
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_RAW */
    ANDROID_HOT_PIXEL_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
    /* ETC */
    //ANDROID_DEMOSAIC_MODE,  //future
    ANDROID_EDGE_MODE,
    //ANDROID_EDGE_STRENGTH,  //future
    ANDROID_NOISE_REDUCTION_MODE,
    ANDROID_SENSOR_TEST_PATTERN_MODE,
    //ANDROID_STATISTICS_HISTOGRAM_MODE,      //future
    //ANDROID_STATISTICS_SHARPNESS_MAP_MODE,  //future
    ANDROID_REQUEST_ID,
};

static int32_t AVAILABLE_REQUEST_KEYS_LEGACY[] =
{
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED */
static int32_t AVAILABLE_RESULT_KEYS_LIMITED[] =
{
    /* REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE */
    ANDROID_CONTROL_AE_ANTIBANDING_MODE,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    ANDROID_FLASH_MODE,
    ANDROID_FLASH_STATE,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_SCALER_CROP_REGION,
    ANDROID_STATISTICS_FACE_DETECT_MODE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_NOISE_REDUCTION_MODE,
#if 0
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR */
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_EXPOSURE_TIME,
    ANDROID_SENSOR_SENSITIVITY,
    ANDROID_LENS_APERTURE,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_BLACK_LEVEL_LOCK,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING */
    ANDROID_TONEMAP_MODE,
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_SHADING_MODE,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING with FULL H/W level */
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_RAW */
    ANDROID_HOT_PIXEL_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
    ANDROID_SENSOR_NEUTRAL_COLOR_POINT,
    ANDROID_SENSOR_GREEN_SPLIT,
    ANDROID_SENSOR_NOISE_PROFILE,
    /* ETC */
    ANDROID_EDGE_MODE,
    ANDROID_STATISTICS_SCENE_FLICKER,
    ANDROID_SENSOR_TEST_PATTERN_MODE,
#endif
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_AF_REGIONS,
};

static int32_t AVAILABLE_RESULT_KEYS_LIMITED_OPTIONAL[] =
{
    /* REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE */
    ANDROID_CONTROL_AE_ANTIBANDING_MODE,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    ANDROID_FLASH_MODE,
    ANDROID_FLASH_STATE,
    ANDROID_JPEG_GPS_COORDINATES,
    ANDROID_JPEG_GPS_PROCESSING_METHOD,
    ANDROID_JPEG_GPS_TIMESTAMP,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_SCALER_CROP_REGION,
    ANDROID_STATISTICS_FACE_DETECT_MODE,
    ANDROID_STATISTICS_FACE_IDS,
    ANDROID_STATISTICS_FACE_RECTANGLES,
    ANDROID_STATISTICS_FACE_SCORES,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR */
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_EXPOSURE_TIME,
    ANDROID_SENSOR_SENSITIVITY,
    ANDROID_LENS_APERTURE,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_LENS_FOCAL_LENGTH,
    ANDROID_LENS_FOCUS_DISTANCE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_LENS_STATE,
    ANDROID_BLACK_LEVEL_LOCK,
    ANDROID_NOISE_REDUCTION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING */
    //ANDROID_TONEMAP_CURVE_BLUE,
    //ANDROID_TONEMAP_CURVE_GREEN,
    //ANDROID_TONEMAP_CURVE_RED,
    ANDROID_TONEMAP_MODE,
#if 0
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_SHADING_MODE,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING with FULL H/W level */
    //ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_RAW */
    ANDROID_HOT_PIXEL_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
    ANDROID_SENSOR_NEUTRAL_COLOR_POINT,
    ANDROID_SENSOR_GREEN_SPLIT,
    ANDROID_SENSOR_NOISE_PROFILE,
#endif
    /* ETC */
    ANDROID_EDGE_MODE,
    ANDROID_STATISTICS_SCENE_FLICKER,
    //ANDROID_SENSOR_TEST_PATTERN_MODE,
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_AF_REGIONS,
};

static int32_t AVAILABLE_RESULT_KEYS_LIMITED_FRONT[] =
{
    /* REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE */
    ANDROID_CONTROL_AE_ANTIBANDING_MODE,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    ANDROID_FLASH_MODE,
    ANDROID_FLASH_STATE,
    ANDROID_JPEG_GPS_COORDINATES,
    ANDROID_JPEG_GPS_PROCESSING_METHOD,
    ANDROID_JPEG_GPS_TIMESTAMP,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_SCALER_CROP_REGION,
    ANDROID_STATISTICS_FACE_DETECT_MODE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_NOISE_REDUCTION_MODE,
#if 0
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR */
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_EXPOSURE_TIME,
    ANDROID_SENSOR_SENSITIVITY,
    ANDROID_LENS_APERTURE,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_LENS_FOCAL_LENGTH,
    ANDROID_LENS_FOCUS_DISTANCE,
    ANDROID_LENS_STATE,
    ANDROID_BLACK_LEVEL_LOCK,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING */
    ANDROID_TONEMAP_CURVE_BLUE,
    ANDROID_TONEMAP_CURVE_GREEN,
    ANDROID_TONEMAP_CURVE_RED,
    ANDROID_TONEMAP_MODE,
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_SHADING_MODE,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING with FULL H/W level */
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_RAW */
    ANDROID_HOT_PIXEL_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
    ANDROID_SENSOR_NEUTRAL_COLOR_POINT,
    ANDROID_SENSOR_GREEN_SPLIT,
    ANDROID_SENSOR_NOISE_PROFILE,
    /* ETC */
    ANDROID_EDGE_MODE,
    ANDROID_STATISTICS_SCENE_FLICKER,
    ANDROID_SENSOR_TEST_PATTERN_MODE,
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_AF_REGIONS,
#endif
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL */
static int32_t AVAILABLE_RESULT_KEYS_FULL[] =
{
    /* REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE */
    ANDROID_CONTROL_AE_ANTIBANDING_MODE,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    ANDROID_FLASH_MODE,
    ANDROID_FLASH_STATE,
    ANDROID_JPEG_GPS_COORDINATES,
    ANDROID_JPEG_GPS_PROCESSING_METHOD,
    ANDROID_JPEG_GPS_TIMESTAMP,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_SCALER_CROP_REGION,
    ANDROID_STATISTICS_FACE_DETECT_MODE,
    ANDROID_STATISTICS_FACE_IDS,
    ANDROID_STATISTICS_FACE_LANDMARKS,
    ANDROID_STATISTICS_FACE_RECTANGLES,
    ANDROID_STATISTICS_FACE_SCORES,
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_AF_REGIONS,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR */
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_EXPOSURE_TIME,
    ANDROID_SENSOR_SENSITIVITY,
    ANDROID_LENS_APERTURE,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_LENS_FOCAL_LENGTH,
    ANDROID_LENS_FOCUS_DISTANCE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_LENS_STATE,
    ANDROID_BLACK_LEVEL_LOCK,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING */
    ANDROID_TONEMAP_CURVE_BLUE,
    ANDROID_TONEMAP_CURVE_GREEN,
    ANDROID_TONEMAP_CURVE_RED,
    ANDROID_TONEMAP_MODE,
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_SHADING_MODE,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING with FULL H/W level */
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    /* REQUEST_AVAILABLE_CAPABILITIES_RAW */
    ANDROID_HOT_PIXEL_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
    ANDROID_SENSOR_NEUTRAL_COLOR_POINT,
    ANDROID_SENSOR_GREEN_SPLIT,
    ANDROID_SENSOR_NOISE_PROFILE,
    /* ETC */
    ANDROID_EDGE_MODE,
    ANDROID_NOISE_REDUCTION_MODE,
    ANDROID_STATISTICS_SCENE_FLICKER,
    ANDROID_SENSOR_TEST_PATTERN_MODE,
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY */
static int32_t AVAILABLE_RESULT_KEYS_LEGACY[] =
{
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED */
static int32_t AVAILABLE_CHARACTERISTICS_KEYS_LIMITED[] =
{
    ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,
    ANDROID_CONTROL_AE_COMPENSATION_RANGE,
    ANDROID_CONTROL_AE_COMPENSATION_STEP,
    ANDROID_CONTROL_AF_AVAILABLE_MODES,
    ANDROID_CONTROL_AVAILABLE_EFFECTS,
    ANDROID_CONTROL_AVAILABLE_SCENE_MODES,
    ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
    ANDROID_CONTROL_AWB_AVAILABLE_MODES,
    ANDROID_CONTROL_MAX_REGIONS,
    ANDROID_CONTROL_AE_LOCK_AVAILABLE,
    ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
    ANDROID_CONTROL_AVAILABLE_MODES,
    ANDROID_FLASH_INFO_AVAILABLE,
    ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES,
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
    ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
    ANDROID_LENS_FACING,
    ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,
    ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,
    ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION,
    ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
    ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
    ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES,
    ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,
    ANDROID_REQUEST_PARTIAL_RESULT_COUNT,
    ANDROID_REQUEST_PIPELINE_MAX_DEPTH,
    ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
    ANDROID_SCALER_CROPPING_TYPE,
    ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,
    ANDROID_SENSOR_BLACK_LEVEL_PATTERN,
    ANDROID_SENSOR_CALIBRATION_TRANSFORM1,
    ANDROID_SENSOR_CALIBRATION_TRANSFORM2,
    ANDROID_SENSOR_COLOR_TRANSFORM1,
    ANDROID_SENSOR_COLOR_TRANSFORM2,
    ANDROID_SENSOR_FORWARD_MATRIX1,
    ANDROID_SENSOR_FORWARD_MATRIX2,
    ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
    ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
    ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,
    ANDROID_SENSOR_INFO_PHYSICAL_SIZE,
    ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
    ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
    ANDROID_SENSOR_INFO_WHITE_LEVEL,
    ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,
    ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY,
    ANDROID_SENSOR_ORIENTATION,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT2,
    ANDROID_SHADING_AVAILABLE_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES,
    ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,
    ANDROID_SYNC_MAX_LATENCY,
    ANDROID_TONEMAP_MAX_CURVE_POINTS,
#if 0
    ANDROID_EDGE_AVAILABLE_EDGE_MODES,
    ANDROID_LENS_INFO_AVAILABLE_APERTURES,
    ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES,
    ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES,
#endif
};

static int32_t AVAILABLE_CHARACTERISTICS_KEYS_LIMITED_OPTIONAL[] =
{
    ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,
    ANDROID_CONTROL_AE_COMPENSATION_RANGE,
    ANDROID_CONTROL_AE_COMPENSATION_STEP,
    ANDROID_CONTROL_AF_AVAILABLE_MODES,
    ANDROID_CONTROL_AVAILABLE_EFFECTS,
    ANDROID_CONTROL_AVAILABLE_SCENE_MODES,
    ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
    ANDROID_CONTROL_AWB_AVAILABLE_MODES,
    ANDROID_CONTROL_MAX_REGIONS,
    ANDROID_CONTROL_AE_LOCK_AVAILABLE,
    ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
    ANDROID_CONTROL_AVAILABLE_MODES,
    ANDROID_FLASH_INFO_AVAILABLE,
    ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES,
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
    ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
    ANDROID_LENS_FACING,
    ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,
    ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,
    ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION,
    ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
    ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
    ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES,
    ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,
    ANDROID_REQUEST_PARTIAL_RESULT_COUNT,
    ANDROID_REQUEST_PIPELINE_MAX_DEPTH,
    ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
    ANDROID_SCALER_CROPPING_TYPE,
    ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,
    ANDROID_SENSOR_BLACK_LEVEL_PATTERN,
    ANDROID_SENSOR_CALIBRATION_TRANSFORM1,
    ANDROID_SENSOR_CALIBRATION_TRANSFORM2,
    ANDROID_SENSOR_COLOR_TRANSFORM1,
    ANDROID_SENSOR_COLOR_TRANSFORM2,
    ANDROID_SENSOR_FORWARD_MATRIX1,
    ANDROID_SENSOR_FORWARD_MATRIX2,
    ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
    ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
    ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,
    ANDROID_SENSOR_INFO_PHYSICAL_SIZE,
    ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
    ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
    ANDROID_SENSOR_INFO_WHITE_LEVEL,
    ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,
    ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY,
    ANDROID_SENSOR_ORIENTATION,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT2,
    ANDROID_SHADING_AVAILABLE_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES,
    ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,
    ANDROID_SYNC_MAX_LATENCY,
    ANDROID_TONEMAP_MAX_CURVE_POINTS,
    ANDROID_EDGE_AVAILABLE_EDGE_MODES,
    ANDROID_LENS_INFO_AVAILABLE_APERTURES,
    ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES,
    ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES,
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL */
static int32_t AVAILABLE_CHARACTERISTICS_KEYS_FULL[] =
{
    ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_MODES,
    ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,
    ANDROID_CONTROL_AE_COMPENSATION_RANGE,
    ANDROID_CONTROL_AE_COMPENSATION_STEP,
    ANDROID_CONTROL_AF_AVAILABLE_MODES,
    ANDROID_CONTROL_AVAILABLE_EFFECTS,
    ANDROID_CONTROL_AVAILABLE_SCENE_MODES,
    ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
    ANDROID_CONTROL_AWB_AVAILABLE_MODES,
    ANDROID_CONTROL_MAX_REGIONS,
    ANDROID_CONTROL_AE_LOCK_AVAILABLE,
    ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
    ANDROID_CONTROL_AVAILABLE_MODES,
    ANDROID_EDGE_AVAILABLE_EDGE_MODES,
    ANDROID_FLASH_INFO_AVAILABLE,
    ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES,
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
    ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
    ANDROID_LENS_FACING,
    ANDROID_LENS_INFO_AVAILABLE_APERTURES,
    ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES,
    ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,
    ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,
    ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION,
    ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
    ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
    ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES,
    ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,
    ANDROID_REQUEST_PARTIAL_RESULT_COUNT,
    ANDROID_REQUEST_PIPELINE_MAX_DEPTH,
    ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
    ANDROID_SCALER_CROPPING_TYPE,
    ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,
    ANDROID_SENSOR_BLACK_LEVEL_PATTERN,
    ANDROID_SENSOR_CALIBRATION_TRANSFORM1,
    ANDROID_SENSOR_CALIBRATION_TRANSFORM2,
    ANDROID_SENSOR_COLOR_TRANSFORM1,
    ANDROID_SENSOR_COLOR_TRANSFORM2,
    ANDROID_SENSOR_FORWARD_MATRIX1,
    ANDROID_SENSOR_FORWARD_MATRIX2,
    ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
    ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
    ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,
    ANDROID_SENSOR_INFO_PHYSICAL_SIZE,
    ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
    ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
    ANDROID_SENSOR_INFO_WHITE_LEVEL,
    ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,
    ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY,
    ANDROID_SENSOR_ORIENTATION,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT2,
    ANDROID_SHADING_AVAILABLE_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES,
    ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,
    ANDROID_SYNC_MAX_LATENCY,
    ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES,
    ANDROID_TONEMAP_MAX_CURVE_POINTS,
};

/* ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY */
static int32_t AVAILABLE_CHARACTERISTICS_KEYS_LEGACY[] =
{
};

/* Android Scaler Static Metadata */
static int64_t AVAILABLE_STALL_DURATIONS[] =
{
};

static int32_t YUV_FORMATS[] =
{
    HAL_PIXEL_FORMAT_RGBA_8888,
    HAL_PIXEL_FORMAT_YCbCr_420_888,
};

static int32_t STALL_FORMATS[] =
{
    HAL_PIXEL_FORMAT_BLOB,
};

static int32_t RAW_FORMATS[] =
{
    HAL_PIXEL_FORMAT_RAW16,
};

/* Android Sensor Static Metadata */
static int32_t AVAILABLE_TEST_PATTERN_MODES[] =
{
    ANDROID_SENSOR_TEST_PATTERN_MODE_OFF,
    //ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR,
    //ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS,
    //ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY,
    //ANDROID_SENSOR_TEST_PATTERN_MODE_PN9,
    //ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1,
};

/* Android Statistics Static Metadata */
static uint8_t AVAILABLE_FACE_DETECT_MODES[] =
{
    ANDROID_STATISTICS_FACE_DETECT_MODE_OFF,
    ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE,
    //ANDROID_STATISTICS_FACE_DETECT_MODE_FULL,
};

static uint8_t AVAILABLE_HOT_PIXEL_MAP_MODES[] =
{
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_OFF,
    //ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_ON,
};

static uint8_t SHADING_AVAILABLE_MODES[] =
{
    ANDROID_SHADING_MODE_OFF,
    ANDROID_SHADING_MODE_FAST,
    //ANDROID_SHADING_MODE_HIGH_QUALITY,
};

static uint8_t AVAILABLE_LENS_SHADING_MAP_MODES[] =
{
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_ON,
};

/* Android Tone Map Static Metadata */
static uint8_t AVAILABLE_TONE_MAP_MODES[] =
{
    //ANDROID_TONEMAP_MODE_CONTRAST_CURVE,
    ANDROID_TONEMAP_MODE_FAST,
    ANDROID_TONEMAP_MODE_HIGH_QUALITY,
    ANDROID_TONEMAP_MODE_GAMMA_VALUE,
    ANDROID_TONEMAP_MODE_PRESET_CURVE,
};

/* Android LED Static Metadata */
static uint8_t AVAILABLE_LEDS[] =
{
};

#ifdef SAMSUNG_CONTROL_METERING
typedef enum camera_metadata_enum_samsung_android_control_metering_mode {
    SAMSUNG_ANDROID_CONTROL_METERING_MODE_CENTER = 0,
    SAMSUNG_ANDROID_CONTROL_METERING_MODE_SPOT,
    SAMSUNG_ANDROID_CONTROL_METERING_MODE_MATRIX,
    SAMSUNG_ANDROID_CONTROL_METERING_MODE_MANUAL,
} camera_metadata_enum_samsung_android_control_metering_mode_t;

static int32_t AVAILABLE_VENDOR_METERING_MODES[] =
{
    (int32_t)SAMSUNG_ANDROID_CONTROL_METERING_MODE_CENTER,
    (int32_t)SAMSUNG_ANDROID_CONTROL_METERING_MODE_SPOT,
    (int32_t)SAMSUNG_ANDROID_CONTROL_METERING_MODE_MATRIX,
    (int32_t)SAMSUNG_ANDROID_CONTROL_METERING_MODE_MANUAL,
};
#endif

#ifdef SAMSUNG_OIS
typedef enum camera_metadata_enum_samsung_android_lens_ois_mode {
    SAMSUNG_ANDROID_LENS_OPTICAL_STABILIZATION_OPERATION_MODE_PICTURE = 0,
    SAMSUNG_ANDROID_LENS_OPTICAL_STABILIZATION_OPERATION_MODE_VIDEO,
} camera_metadata_enum_samsung_android_lens_ois_mode_t;

static int32_t AVAILABLE_VENDOR_OIS_MODES[] =
{
    (int32_t)SAMSUNG_ANDROID_LENS_OPTICAL_STABILIZATION_OPERATION_MODE_PICTURE,
    (int32_t)SAMSUNG_ANDROID_LENS_OPTICAL_STABILIZATION_OPERATION_MODE_VIDEO,
};
#endif

#endif
