/*
 * Copyright 2018 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 edit this file directly !
 *
 * Generated automatically from camera_metadata_tags.mojom.mako
 */

module cros.mojom;

/**
 * Top level hierarchy definitions for camera metadata. *_INFO sections are for
 * the static metadata that can be retrived without opening the camera device.
 * New sections must be added right before ANDROID_SECTION_COUNT to maintain
 * existing enumerations.
 */
enum CameraMetadataSection {
    ANDROID_COLOR_CORRECTION       = 0x0,
    ANDROID_CONTROL                = 0x1,
    ANDROID_DEMOSAIC               = 0x2,
    ANDROID_EDGE                   = 0x3,
    ANDROID_FLASH                  = 0x4,
    ANDROID_FLASH_INFO             = 0x5,
    ANDROID_HOT_PIXEL              = 0x6,
    ANDROID_JPEG                   = 0x7,
    ANDROID_LENS                   = 0x8,
    ANDROID_LENS_INFO              = 0x9,
    ANDROID_NOISE_REDUCTION        = 0xA,
    ANDROID_QUIRKS                 = 0xB,
    ANDROID_REQUEST                = 0xC,
    ANDROID_SCALER                 = 0xD,
    ANDROID_SENSOR                 = 0xE,
    ANDROID_SENSOR_INFO            = 0xF,
    ANDROID_SHADING                = 0x10,
    ANDROID_STATISTICS             = 0x11,
    ANDROID_STATISTICS_INFO        = 0x12,
    ANDROID_TONEMAP                = 0x13,
    ANDROID_LED                    = 0x14,
    ANDROID_INFO                   = 0x15,
    ANDROID_BLACK_LEVEL            = 0x16,
    ANDROID_SYNC                   = 0x17,
    ANDROID_REPROCESS              = 0x18,
    ANDROID_DEPTH                  = 0x19,
    ANDROID_LOGICAL_MULTI_CAMERA   = 0x1A,
    ANDROID_DISTORTION_CORRECTION  = 0x1B,
    ANDROID_SECTION_COUNT          = 0x1C,

    VENDOR_SECTION                 = 0x8000
};

/**
 * Hierarchy positions in enum space. All vendor extension tags must be
 * defined with tag >= VENDOR_SECTION_START
 */
[Extensible]
enum CameraMetadataSectionStart {
    ANDROID_COLOR_CORRECTION_START = 0x0,
    ANDROID_CONTROL_START          = 0x10000,
    ANDROID_DEMOSAIC_START         = 0x20000,
    ANDROID_EDGE_START             = 0x30000,
    ANDROID_FLASH_START            = 0x40000,
    ANDROID_FLASH_INFO_START       = 0x50000,
    ANDROID_HOT_PIXEL_START        = 0x60000,
    ANDROID_JPEG_START             = 0x70000,
    ANDROID_LENS_START             = 0x80000,
    ANDROID_LENS_INFO_START        = 0x90000,
    ANDROID_NOISE_REDUCTION_START  = 0xA0000,
    ANDROID_QUIRKS_START           = 0xB0000,
    ANDROID_REQUEST_START          = 0xC0000,
    ANDROID_SCALER_START           = 0xD0000,
    ANDROID_SENSOR_START           = 0xE0000,
    ANDROID_SENSOR_INFO_START      = 0xF0000,
    ANDROID_SHADING_START          = 0x100000,
    ANDROID_STATISTICS_START       = 0x110000,
    ANDROID_STATISTICS_INFO_START  = 0x120000,
    ANDROID_TONEMAP_START          = 0x130000,
    ANDROID_LED_START              = 0x140000,
    ANDROID_INFO_START             = 0x150000,
    ANDROID_BLACK_LEVEL_START      = 0x160000,
    ANDROID_SYNC_START             = 0x170000,
    ANDROID_REPROCESS_START        = 0x180000,
    ANDROID_DEPTH_START            = 0x190000,
    ANDROID_LOGICAL_MULTI_CAMERA_START
                                   = 0x1A0000,
    ANDROID_DISTORTION_CORRECTION_START
                                   = 0x1B0000,

    // Mojom maps enum to int32_t in C++. This causes problem on the VENDOR_SECTION_START
    // below as 0x80000000 would generate -Wc++11-narrowing warnings while compiling the
    // generated C++ files. Until mojom supports mapping enum as uint32_t in C++ we need
    // to omit VENDOR_SECTION_START here and set CameraMetadataSectionStart as extensible.
    // VENDOR_SECTION_START           = 0x80000000
};

/**
 * Main enum for defining camera metadata tags.  New entries must always go
 * before the section _END tag to preserve existing enumeration values.  In
 * addition, the name and type of the tag needs to be added to
 * system/media/camera/src/camera_metadata_tag_info.c
 */
[Extensible]
enum CameraMetadataTag {
    ANDROID_COLOR_CORRECTION_MODE =                    0x0, // ANDROID_COLOR_CORRECTION_START,
    ANDROID_COLOR_CORRECTION_TRANSFORM,
    ANDROID_COLOR_CORRECTION_GAINS,
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
    ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,
    ANDROID_COLOR_CORRECTION_END,
    ANDROID_CONTROL_AE_ANTIBANDING_MODE =              0x10000, // ANDROID_CONTROL_START,
    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
    ANDROID_CONTROL_AE_LOCK,
    ANDROID_CONTROL_AE_MODE,
    ANDROID_CONTROL_AE_REGIONS,
    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
    ANDROID_CONTROL_AF_MODE,
    ANDROID_CONTROL_AF_REGIONS,
    ANDROID_CONTROL_AF_TRIGGER,
    ANDROID_CONTROL_AWB_LOCK,
    ANDROID_CONTROL_AWB_MODE,
    ANDROID_CONTROL_AWB_REGIONS,
    ANDROID_CONTROL_CAPTURE_INTENT,
    ANDROID_CONTROL_EFFECT_MODE,
    ANDROID_CONTROL_MODE,
    ANDROID_CONTROL_SCENE_MODE,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
    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_SCENE_MODE_OVERRIDES,
    ANDROID_CONTROL_AE_PRECAPTURE_ID,
    ANDROID_CONTROL_AE_STATE,
    ANDROID_CONTROL_AF_STATE,
    ANDROID_CONTROL_AF_TRIGGER_ID,
    ANDROID_CONTROL_AWB_STATE,
    ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS,
    ANDROID_CONTROL_AE_LOCK_AVAILABLE,
    ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
    ANDROID_CONTROL_AVAILABLE_MODES,
    ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE,
    ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST,
    ANDROID_CONTROL_ENABLE_ZSL,
    ANDROID_CONTROL_AF_SCENE_CHANGE,
    ANDROID_CONTROL_END,
    ANDROID_DEMOSAIC_MODE =                            0x20000, // ANDROID_DEMOSAIC_START,
    ANDROID_DEMOSAIC_END,
    ANDROID_EDGE_MODE =                                0x30000, // ANDROID_EDGE_START,
    ANDROID_EDGE_STRENGTH,
    ANDROID_EDGE_AVAILABLE_EDGE_MODES,
    ANDROID_EDGE_END,
    ANDROID_FLASH_FIRING_POWER =                       0x40000, // ANDROID_FLASH_START,
    ANDROID_FLASH_FIRING_TIME,
    ANDROID_FLASH_MODE,
    ANDROID_FLASH_COLOR_TEMPERATURE,
    ANDROID_FLASH_MAX_ENERGY,
    ANDROID_FLASH_STATE,
    ANDROID_FLASH_END,
    ANDROID_FLASH_INFO_AVAILABLE =                     0x50000, // ANDROID_FLASH_INFO_START,
    ANDROID_FLASH_INFO_CHARGE_DURATION,
    ANDROID_FLASH_INFO_END,
    ANDROID_HOT_PIXEL_MODE =                           0x60000, // ANDROID_HOT_PIXEL_START,
    ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES,
    ANDROID_HOT_PIXEL_END,
    ANDROID_JPEG_GPS_COORDINATES =                     0x70000, // ANDROID_JPEG_START,
    ANDROID_JPEG_GPS_PROCESSING_METHOD,
    ANDROID_JPEG_GPS_TIMESTAMP,
    ANDROID_JPEG_ORIENTATION,
    ANDROID_JPEG_QUALITY,
    ANDROID_JPEG_THUMBNAIL_QUALITY,
    ANDROID_JPEG_THUMBNAIL_SIZE,
    ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
    ANDROID_JPEG_MAX_SIZE,
    ANDROID_JPEG_SIZE,
    ANDROID_JPEG_END,
    ANDROID_LENS_APERTURE =                            0x80000, // ANDROID_LENS_START,
    ANDROID_LENS_FILTER_DENSITY,
    ANDROID_LENS_FOCAL_LENGTH,
    ANDROID_LENS_FOCUS_DISTANCE,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
    ANDROID_LENS_FACING,
    ANDROID_LENS_POSE_ROTATION,
    ANDROID_LENS_POSE_TRANSLATION,
    ANDROID_LENS_FOCUS_RANGE,
    ANDROID_LENS_STATE,
    ANDROID_LENS_INTRINSIC_CALIBRATION,
    ANDROID_LENS_RADIAL_DISTORTION,
    ANDROID_LENS_POSE_REFERENCE,
    ANDROID_LENS_DISTORTION,
    ANDROID_LENS_END,
    ANDROID_LENS_INFO_AVAILABLE_APERTURES =            0x90000, // ANDROID_LENS_INFO_START,
    ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES,
    ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,
    ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,
    ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
    ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
    ANDROID_LENS_INFO_SHADING_MAP_SIZE,
    ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION,
    ANDROID_LENS_INFO_END,
    ANDROID_NOISE_REDUCTION_MODE =                     0xA0000, // ANDROID_NOISE_REDUCTION_START,
    ANDROID_NOISE_REDUCTION_STRENGTH,
    ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,
    ANDROID_NOISE_REDUCTION_END,
    ANDROID_QUIRKS_METERING_CROP_REGION =              0xB0000, // ANDROID_QUIRKS_START,
    ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO,
    ANDROID_QUIRKS_USE_ZSL_FORMAT,
    ANDROID_QUIRKS_USE_PARTIAL_RESULT,
    ANDROID_QUIRKS_PARTIAL_RESULT,
    ANDROID_QUIRKS_END,
    ANDROID_REQUEST_FRAME_COUNT =                      0xC0000, // ANDROID_REQUEST_START,
    ANDROID_REQUEST_ID,
    ANDROID_REQUEST_INPUT_STREAMS,
    ANDROID_REQUEST_METADATA_MODE,
    ANDROID_REQUEST_OUTPUT_STREAMS,
    ANDROID_REQUEST_TYPE,
    ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,
    ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS,
    ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS,
    ANDROID_REQUEST_PIPELINE_DEPTH,
    ANDROID_REQUEST_PIPELINE_MAX_DEPTH,
    ANDROID_REQUEST_PARTIAL_RESULT_COUNT,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES,
    ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,
    ANDROID_REQUEST_AVAILABLE_RESULT_KEYS,
    ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS,
    ANDROID_REQUEST_AVAILABLE_SESSION_KEYS,
    ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS,
    ANDROID_REQUEST_END,
    ANDROID_SCALER_CROP_REGION =                       0xD0000, // ANDROID_SCALER_START,
    ANDROID_SCALER_AVAILABLE_FORMATS,
    ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS,
    ANDROID_SCALER_AVAILABLE_JPEG_SIZES,
    ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
    ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS,
    ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES,
    ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS,
    ANDROID_SCALER_AVAILABLE_RAW_SIZES,
    ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
    ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,
    ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,
    ANDROID_SCALER_CROPPING_TYPE,
    ANDROID_SCALER_END,
    ANDROID_SENSOR_EXPOSURE_TIME =                     0xE0000, // ANDROID_SENSOR_START,
    ANDROID_SENSOR_FRAME_DURATION,
    ANDROID_SENSOR_SENSITIVITY,
    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,
    ANDROID_SENSOR_BASE_GAIN_FACTOR,
    ANDROID_SENSOR_BLACK_LEVEL_PATTERN,
    ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY,
    ANDROID_SENSOR_ORIENTATION,
    ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS,
    ANDROID_SENSOR_TIMESTAMP,
    ANDROID_SENSOR_TEMPERATURE,
    ANDROID_SENSOR_NEUTRAL_COLOR_POINT,
    ANDROID_SENSOR_NOISE_PROFILE,
    ANDROID_SENSOR_PROFILE_HUE_SAT_MAP,
    ANDROID_SENSOR_PROFILE_TONE_CURVE,
    ANDROID_SENSOR_GREEN_SPLIT,
    ANDROID_SENSOR_TEST_PATTERN_DATA,
    ANDROID_SENSOR_TEST_PATTERN_MODE,
    ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,
    ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,
    ANDROID_SENSOR_OPTICAL_BLACK_REGIONS,
    ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL,
    ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL,
    ANDROID_SENSOR_OPAQUE_RAW_SIZE,
    ANDROID_SENSOR_END,
    ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE =            0xF0000, // ANDROID_SENSOR_INFO_START,
    ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
    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_WHITE_LEVEL,
    ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,
    ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED,
    ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,
    ANDROID_SENSOR_INFO_END,
    ANDROID_SHADING_MODE =                             0x100000, // ANDROID_SHADING_START,
    ANDROID_SHADING_STRENGTH,
    ANDROID_SHADING_AVAILABLE_MODES,
    ANDROID_SHADING_END,
    ANDROID_STATISTICS_FACE_DETECT_MODE =              0x110000, // ANDROID_STATISTICS_START,
    ANDROID_STATISTICS_HISTOGRAM_MODE,
    ANDROID_STATISTICS_SHARPNESS_MAP_MODE,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
    ANDROID_STATISTICS_FACE_IDS,
    ANDROID_STATISTICS_FACE_LANDMARKS,
    ANDROID_STATISTICS_FACE_RECTANGLES,
    ANDROID_STATISTICS_FACE_SCORES,
    ANDROID_STATISTICS_HISTOGRAM,
    ANDROID_STATISTICS_SHARPNESS_MAP,
    ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP,
    ANDROID_STATISTICS_LENS_SHADING_MAP,
    ANDROID_STATISTICS_PREDICTED_COLOR_GAINS,
    ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM,
    ANDROID_STATISTICS_SCENE_FLICKER,
    ANDROID_STATISTICS_HOT_PIXEL_MAP,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
    ANDROID_STATISTICS_OIS_DATA_MODE,
    ANDROID_STATISTICS_OIS_TIMESTAMPS,
    ANDROID_STATISTICS_OIS_X_SHIFTS,
    ANDROID_STATISTICS_OIS_Y_SHIFTS,
    ANDROID_STATISTICS_END,
    ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES =
                                                       0x120000, // ANDROID_STATISTICS_INFO_START,
    ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT,
    ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,
    ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT,
    ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE,
    ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE,
    ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES,
    ANDROID_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES,
    ANDROID_STATISTICS_INFO_END,
    ANDROID_TONEMAP_CURVE_BLUE =                       0x130000, // ANDROID_TONEMAP_START,
    ANDROID_TONEMAP_CURVE_GREEN,
    ANDROID_TONEMAP_CURVE_RED,
    ANDROID_TONEMAP_MODE,
    ANDROID_TONEMAP_MAX_CURVE_POINTS,
    ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES,
    ANDROID_TONEMAP_GAMMA,
    ANDROID_TONEMAP_PRESET_CURVE,
    ANDROID_TONEMAP_END,
    ANDROID_LED_TRANSMIT =                             0x140000, // ANDROID_LED_START,
    ANDROID_LED_AVAILABLE_LEDS,
    ANDROID_LED_END,
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL =            0x150000, // ANDROID_INFO_START,
    ANDROID_INFO_VERSION,
    ANDROID_INFO_END,
    ANDROID_BLACK_LEVEL_LOCK =                         0x160000, // ANDROID_BLACK_LEVEL_START,
    ANDROID_BLACK_LEVEL_END,
    ANDROID_SYNC_FRAME_NUMBER =                        0x170000, // ANDROID_SYNC_START,
    ANDROID_SYNC_MAX_LATENCY,
    ANDROID_SYNC_END,
    ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR =      0x180000, // ANDROID_REPROCESS_START,
    ANDROID_REPROCESS_MAX_CAPTURE_STALL,
    ANDROID_REPROCESS_END,
    ANDROID_DEPTH_MAX_DEPTH_SAMPLES =                  0x190000, // ANDROID_DEPTH_START,
    ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS,
    ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS,
    ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS,
    ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE,
    ANDROID_DEPTH_END,
    ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS =        0x1A0000, // ANDROID_LOGICAL_MULTI_CAMERA_START,
    ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE,
    ANDROID_LOGICAL_MULTI_CAMERA_END,
    ANDROID_DISTORTION_CORRECTION_MODE =               0x1B0000, // ANDROID_DISTORTION_CORRECTION_START,
    ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES,
    ANDROID_DISTORTION_CORRECTION_END,
};

/**
 * Enumeration definitions for the various entries that need them
 */

// ANDROID_COLOR_CORRECTION_MODE
enum AndroidColorCorrectionMode {
    ANDROID_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX,
    ANDROID_COLOR_CORRECTION_MODE_FAST,
    ANDROID_COLOR_CORRECTION_MODE_HIGH_QUALITY,
};

// ANDROID_COLOR_CORRECTION_ABERRATION_MODE
enum AndroidColorCorrectionAberrationMode {
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF,
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE_FAST,
    ANDROID_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY,
};

// ANDROID_CONTROL_AE_ANTIBANDING_MODE
enum AndroidControlAeAntibandingMode {
    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_CONTROL_AE_LOCK
enum AndroidControlAeLock {
    ANDROID_CONTROL_AE_LOCK_OFF,
    ANDROID_CONTROL_AE_LOCK_ON,
};

// ANDROID_CONTROL_AE_MODE
enum AndroidControlAeMode {
    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_CONTROL_AE_MODE_ON_EXTERNAL_FLASH,
};

// ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER
enum AndroidControlAePrecaptureTrigger {
    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE,
    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_START,
    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL,
};

// ANDROID_CONTROL_AF_MODE
enum AndroidControlAfMode {
    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_CONTROL_AF_TRIGGER
enum AndroidControlAfTrigger {
    ANDROID_CONTROL_AF_TRIGGER_IDLE,
    ANDROID_CONTROL_AF_TRIGGER_START,
    ANDROID_CONTROL_AF_TRIGGER_CANCEL,
};

// ANDROID_CONTROL_AWB_LOCK
enum AndroidControlAwbLock {
    ANDROID_CONTROL_AWB_LOCK_OFF,
    ANDROID_CONTROL_AWB_LOCK_ON,
};

// ANDROID_CONTROL_AWB_MODE
enum AndroidControlAwbMode {
    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,
};

// ANDROID_CONTROL_CAPTURE_INTENT
enum AndroidControlCaptureIntent {
    ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM,
    ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW,
    ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE,
    ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD,
    ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT,
    ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG,
    ANDROID_CONTROL_CAPTURE_INTENT_MANUAL,
    ANDROID_CONTROL_CAPTURE_INTENT_MOTION_TRACKING,
};

// ANDROID_CONTROL_EFFECT_MODE
enum AndroidControlEffectMode {
    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,
};

// ANDROID_CONTROL_MODE
enum AndroidControlMode {
    ANDROID_CONTROL_MODE_OFF,
    ANDROID_CONTROL_MODE_AUTO,
    ANDROID_CONTROL_MODE_USE_SCENE_MODE,
    ANDROID_CONTROL_MODE_OFF_KEEP_STATE,
};

// ANDROID_CONTROL_SCENE_MODE
enum AndroidControlSceneMode {
    ANDROID_CONTROL_SCENE_MODE_DISABLED                         = 0,
    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,
    ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY_LOW_LIGHT,
    ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_START              = 100,
    ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_END                = 127,
};

// ANDROID_CONTROL_VIDEO_STABILIZATION_MODE
enum AndroidControlVideoStabilizationMode {
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF,
    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON,
};

// ANDROID_CONTROL_AE_STATE
enum AndroidControlAeState {
    ANDROID_CONTROL_AE_STATE_INACTIVE,
    ANDROID_CONTROL_AE_STATE_SEARCHING,
    ANDROID_CONTROL_AE_STATE_CONVERGED,
    ANDROID_CONTROL_AE_STATE_LOCKED,
    ANDROID_CONTROL_AE_STATE_FLASH_REQUIRED,
    ANDROID_CONTROL_AE_STATE_PRECAPTURE,
};

// ANDROID_CONTROL_AF_STATE
enum AndroidControlAfState {
    ANDROID_CONTROL_AF_STATE_INACTIVE,
    ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN,
    ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED,
    ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN,
    ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED,
    ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED,
    ANDROID_CONTROL_AF_STATE_PASSIVE_UNFOCUSED,
};

// ANDROID_CONTROL_AWB_STATE
enum AndroidControlAwbState {
    ANDROID_CONTROL_AWB_STATE_INACTIVE,
    ANDROID_CONTROL_AWB_STATE_SEARCHING,
    ANDROID_CONTROL_AWB_STATE_CONVERGED,
    ANDROID_CONTROL_AWB_STATE_LOCKED,
};

// ANDROID_CONTROL_AE_LOCK_AVAILABLE
enum AndroidControlAeLockAvailable {
    ANDROID_CONTROL_AE_LOCK_AVAILABLE_FALSE,
    ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE,
};

// ANDROID_CONTROL_AWB_LOCK_AVAILABLE
enum AndroidControlAwbLockAvailable {
    ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE,
    ANDROID_CONTROL_AWB_LOCK_AVAILABLE_TRUE,
};

// ANDROID_CONTROL_ENABLE_ZSL
enum AndroidControlEnableZsl {
    ANDROID_CONTROL_ENABLE_ZSL_FALSE,
    ANDROID_CONTROL_ENABLE_ZSL_TRUE,
};

// ANDROID_CONTROL_AF_SCENE_CHANGE
enum AndroidControlAfSceneChange {
    ANDROID_CONTROL_AF_SCENE_CHANGE_NOT_DETECTED,
    ANDROID_CONTROL_AF_SCENE_CHANGE_DETECTED,
};

// ANDROID_DEMOSAIC_MODE
enum AndroidDemosaicMode {
    ANDROID_DEMOSAIC_MODE_FAST,
    ANDROID_DEMOSAIC_MODE_HIGH_QUALITY,
};

// ANDROID_EDGE_MODE
enum AndroidEdgeMode {
    ANDROID_EDGE_MODE_OFF,
    ANDROID_EDGE_MODE_FAST,
    ANDROID_EDGE_MODE_HIGH_QUALITY,
    ANDROID_EDGE_MODE_ZERO_SHUTTER_LAG,
};

// ANDROID_FLASH_MODE
enum AndroidFlashMode {
    ANDROID_FLASH_MODE_OFF,
    ANDROID_FLASH_MODE_SINGLE,
    ANDROID_FLASH_MODE_TORCH,
};

// ANDROID_FLASH_STATE
enum AndroidFlashState {
    ANDROID_FLASH_STATE_UNAVAILABLE,
    ANDROID_FLASH_STATE_CHARGING,
    ANDROID_FLASH_STATE_READY,
    ANDROID_FLASH_STATE_FIRED,
    ANDROID_FLASH_STATE_PARTIAL,
};

// ANDROID_FLASH_INFO_AVAILABLE
enum AndroidFlashInfoAvailable {
    ANDROID_FLASH_INFO_AVAILABLE_FALSE,
    ANDROID_FLASH_INFO_AVAILABLE_TRUE,
};

// ANDROID_HOT_PIXEL_MODE
enum AndroidHotPixelMode {
    ANDROID_HOT_PIXEL_MODE_OFF,
    ANDROID_HOT_PIXEL_MODE_FAST,
    ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY,
};

// ANDROID_LENS_OPTICAL_STABILIZATION_MODE
enum AndroidLensOpticalStabilizationMode {
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF,
    ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON,
};

// ANDROID_LENS_FACING
enum AndroidLensFacing {
    ANDROID_LENS_FACING_FRONT,
    ANDROID_LENS_FACING_BACK,
    ANDROID_LENS_FACING_EXTERNAL,
};

// ANDROID_LENS_STATE
enum AndroidLensState {
    ANDROID_LENS_STATE_STATIONARY,
    ANDROID_LENS_STATE_MOVING,
};

// ANDROID_LENS_POSE_REFERENCE
enum AndroidLensPoseReference {
    ANDROID_LENS_POSE_REFERENCE_PRIMARY_CAMERA,
    ANDROID_LENS_POSE_REFERENCE_GYROSCOPE,
};

// ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION
enum AndroidLensInfoFocusDistanceCalibration {
    ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED,
    ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE,
    ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED,
};

// ANDROID_NOISE_REDUCTION_MODE
enum AndroidNoiseReductionMode {
    ANDROID_NOISE_REDUCTION_MODE_OFF,
    ANDROID_NOISE_REDUCTION_MODE_FAST,
    ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY,
    ANDROID_NOISE_REDUCTION_MODE_MINIMAL,
    ANDROID_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG,
};

// ANDROID_QUIRKS_PARTIAL_RESULT
enum AndroidQuirksPartialResult {
    ANDROID_QUIRKS_PARTIAL_RESULT_FINAL,
    ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL,
};

// ANDROID_REQUEST_METADATA_MODE
enum AndroidRequestMetadataMode {
    ANDROID_REQUEST_METADATA_MODE_NONE,
    ANDROID_REQUEST_METADATA_MODE_FULL,
};

// ANDROID_REQUEST_TYPE
enum AndroidRequestType {
    ANDROID_REQUEST_TYPE_CAPTURE,
    ANDROID_REQUEST_TYPE_REPROCESS,
};

// ANDROID_REQUEST_AVAILABLE_CAPABILITIES
enum AndroidRequestAvailableCapabilities {
    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_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA,
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME,
};

// ANDROID_SCALER_AVAILABLE_FORMATS
enum AndroidScalerAvailableFormats {
    ANDROID_SCALER_AVAILABLE_FORMATS_RAW16                      = 0x20,
    ANDROID_SCALER_AVAILABLE_FORMATS_RAW_OPAQUE                 = 0x24,
    ANDROID_SCALER_AVAILABLE_FORMATS_YV12                       = 0x32315659,
    ANDROID_SCALER_AVAILABLE_FORMATS_YCrCb_420_SP               = 0x11,
    ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED     = 0x22,
    ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888              = 0x23,
    ANDROID_SCALER_AVAILABLE_FORMATS_BLOB                       = 0x21,
};

// ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS
enum AndroidScalerAvailableStreamConfigurations {
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_INPUT,
};

// ANDROID_SCALER_CROPPING_TYPE
enum AndroidScalerCroppingType {
    ANDROID_SCALER_CROPPING_TYPE_CENTER_ONLY,
    ANDROID_SCALER_CROPPING_TYPE_FREEFORM,
};

// ANDROID_SENSOR_REFERENCE_ILLUMINANT1
enum AndroidSensorReferenceIlluminant1 {
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT               = 1,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT            = 2,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN               = 3,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLASH                  = 4,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER           = 9,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER         = 10,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_SHADE                  = 11,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT   = 12,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT  = 13,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT = 14,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT      = 15,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A             = 17,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B             = 18,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C             = 19,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D55                    = 20,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D65                    = 21,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D75                    = 22,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D50                    = 23,
    ANDROID_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN    = 24,
};

// ANDROID_SENSOR_TEST_PATTERN_MODE
enum AndroidSensorTestPatternMode {
    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                    = 256,
};

// ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
enum AndroidSensorInfoColorFilterArrangement {
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB,
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG,
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG,
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR,
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB,
};

// ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE
enum AndroidSensorInfoTimestampSource {
    ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN,
    ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME,
};

// ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED
enum AndroidSensorInfoLensShadingApplied {
    ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_FALSE,
    ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_TRUE,
};

// ANDROID_SHADING_MODE
enum AndroidShadingMode {
    ANDROID_SHADING_MODE_OFF,
    ANDROID_SHADING_MODE_FAST,
    ANDROID_SHADING_MODE_HIGH_QUALITY,
};

// ANDROID_STATISTICS_FACE_DETECT_MODE
enum AndroidStatisticsFaceDetectMode {
    ANDROID_STATISTICS_FACE_DETECT_MODE_OFF,
    ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE,
    ANDROID_STATISTICS_FACE_DETECT_MODE_FULL,
};

// ANDROID_STATISTICS_HISTOGRAM_MODE
enum AndroidStatisticsHistogramMode {
    ANDROID_STATISTICS_HISTOGRAM_MODE_OFF,
    ANDROID_STATISTICS_HISTOGRAM_MODE_ON,
};

// ANDROID_STATISTICS_SHARPNESS_MAP_MODE
enum AndroidStatisticsSharpnessMapMode {
    ANDROID_STATISTICS_SHARPNESS_MAP_MODE_OFF,
    ANDROID_STATISTICS_SHARPNESS_MAP_MODE_ON,
};

// ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE
enum AndroidStatisticsHotPixelMapMode {
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_OFF,
    ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_ON,
};

// ANDROID_STATISTICS_SCENE_FLICKER
enum AndroidStatisticsSceneFlicker {
    ANDROID_STATISTICS_SCENE_FLICKER_NONE,
    ANDROID_STATISTICS_SCENE_FLICKER_50HZ,
    ANDROID_STATISTICS_SCENE_FLICKER_60HZ,
};

// ANDROID_STATISTICS_LENS_SHADING_MAP_MODE
enum AndroidStatisticsLensShadingMapMode {
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF,
    ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_ON,
};

// ANDROID_STATISTICS_OIS_DATA_MODE
enum AndroidStatisticsOisDataMode {
    ANDROID_STATISTICS_OIS_DATA_MODE_OFF,
    ANDROID_STATISTICS_OIS_DATA_MODE_ON,
};

// ANDROID_TONEMAP_MODE
enum AndroidTonemapMode {
    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_TONEMAP_PRESET_CURVE
enum AndroidTonemapPresetCurve {
    ANDROID_TONEMAP_PRESET_CURVE_SRGB,
    ANDROID_TONEMAP_PRESET_CURVE_REC709,
};

// ANDROID_LED_TRANSMIT
enum AndroidLedTransmit {
    ANDROID_LED_TRANSMIT_OFF,
    ANDROID_LED_TRANSMIT_ON,
};

// ANDROID_LED_AVAILABLE_LEDS
enum AndroidLedAvailableLeds {
    ANDROID_LED_AVAILABLE_LEDS_TRANSMIT,
};

// ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL
enum AndroidInfoSupportedHardwareLevel {
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED,
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL,
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY,
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3,
    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL,
};

// ANDROID_BLACK_LEVEL_LOCK
enum AndroidBlackLevelLock {
    ANDROID_BLACK_LEVEL_LOCK_OFF,
    ANDROID_BLACK_LEVEL_LOCK_ON,
};

// ANDROID_SYNC_FRAME_NUMBER
enum AndroidSyncFrameNumber {
    ANDROID_SYNC_FRAME_NUMBER_CONVERGING                        = -1,
    ANDROID_SYNC_FRAME_NUMBER_UNKNOWN                           = -2,
};

// ANDROID_SYNC_MAX_LATENCY
enum AndroidSyncMaxLatency {
    ANDROID_SYNC_MAX_LATENCY_PER_FRAME_CONTROL                  = 0,
    ANDROID_SYNC_MAX_LATENCY_UNKNOWN                            = -1,
};

// ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS
enum AndroidDepthAvailableDepthStreamConfigurations {
    ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_OUTPUT,
    ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_INPUT,
};

// ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE
enum AndroidDepthDepthIsExclusive {
    ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_FALSE,
    ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_TRUE,
};

// ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
enum AndroidLogicalMultiCameraSensorSyncType {
    ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE,
    ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED,
};

// ANDROID_DISTORTION_CORRECTION_MODE
enum AndroidDistortionCorrectionMode {
    ANDROID_DISTORTION_CORRECTION_MODE_OFF,
    ANDROID_DISTORTION_CORRECTION_MODE_FAST,
    ANDROID_DISTORTION_CORRECTION_MODE_HIGH_QUALITY,
};
