/*
 * Copyright (C) 2017 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.
 */

/*
 * Autogenerated from camera metadata definitions in
 * /system/media/camera/docs/metadata_definitions.xml
 * *** DO NOT EDIT BY HAND ***
 */

package android.hardware.camera.metadata@3.4;

import android.hardware.camera.metadata@3.2;
import android.hardware.camera.metadata@3.3;

/**
 * Top level hierarchy definitions for camera metadata. *_INFO sections are for
 * the static metadata that can be retrived without opening the camera device.
 */
enum CameraMetadataSection : @3.3::CameraMetadataSection {
    ANDROID_HEIC =
        android.hardware.camera.metadata@3.3::CameraMetadataSection:ANDROID_SECTION_COUNT,

    ANDROID_HEIC_INFO,

    ANDROID_SECTION_COUNT_3_4,

    VENDOR_SECTION_3_4 = 0x8000,

};

/**
 * Hierarchy positions in enum space. All vendor extension sections must be
 * defined with tag >= VENDOR_SECTION_START
 */
enum CameraMetadataSectionStart : android.hardware.camera.metadata@3.3::CameraMetadataSectionStart {
    ANDROID_HEIC_START = CameraMetadataSection:ANDROID_HEIC << 16,

    ANDROID_HEIC_INFO_START = CameraMetadataSection:ANDROID_HEIC_INFO << 16,

    VENDOR_SECTION_START_3_4 = CameraMetadataSection:VENDOR_SECTION_3_4 << 16,

};

/**
 * Main enumeration for defining camera metadata tags added in this revision
 *
 * <p>Partial documentation is included for each tag; for complete documentation, reference
 * '/system/media/camera/docs/docs.html' in the corresponding Android source tree.</p>
 */
enum CameraMetadataTag : @3.3::CameraMetadataTag {
    /** android.request.characteristicKeysNeedingPermission [static, int32[], hidden]
     *
     * <p>A list of camera characteristics keys that are only available
     * in case the camera client has camera permission.</p>
     */
    ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION = android.hardware.camera.metadata@3.3::CameraMetadataTag:ANDROID_REQUEST_END_3_3,

    ANDROID_REQUEST_END_3_4,

    /** android.scaler.availableRecommendedStreamConfigurations [static, enum[], ndk_public]
     *
     * <p>Recommended stream configurations for common client use cases.</p>
     */
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS = android.hardware.camera.metadata@3.2::CameraMetadataTag:ANDROID_SCALER_END,

    /** android.scaler.availableRecommendedInputOutputFormatsMap [static, int32, ndk_public]
     *
     * <p>Recommended mappings of image formats that are supported by this
     * camera device for input streams, to their corresponding output formats.</p>
     */
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP,

    ANDROID_SCALER_END_3_4,

    /** android.info.supportedBufferManagementVersion [static, enum, system]
     *
     * <p>The version of buffer management API this camera device supports and opts into.</p>
     */
    ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION = android.hardware.camera.metadata@3.3::CameraMetadataTag:ANDROID_INFO_END_3_3,

    ANDROID_INFO_END_3_4,

    /** android.depth.availableRecommendedDepthStreamConfigurations [static, int32[], ndk_public]
     *
     * <p>Recommended depth stream configurations for common client use cases.</p>
     */
    ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS = android.hardware.camera.metadata@3.2::CameraMetadataTag:ANDROID_DEPTH_END,

    /** android.depth.availableDynamicDepthStreamConfigurations [static, enum[], ndk_public]
     *
     * <p>The available dynamic depth dataspace stream
     * configurations that this camera device supports
     * (i.e. format, width, height, output/input stream).</p>
     */
    ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS,

    /** android.depth.availableDynamicDepthMinFrameDurations [static, int64[], ndk_public]
     *
     * <p>This lists the minimum frame duration for each
     * format/size combination for dynamic depth output streams.</p>
     */
    ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS,

    /** android.depth.availableDynamicDepthStallDurations [static, int64[], ndk_public]
     *
     * <p>This lists the maximum stall duration for each
     * output format/size combination for dynamic depth streams.</p>
     */
    ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS,

    ANDROID_DEPTH_END_3_4,

    /** android.logicalMultiCamera.activePhysicalId [dynamic, byte, public]
     *
     * <p>String containing the ID of the underlying active physical camera.</p>
     */
    ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID = android.hardware.camera.metadata@3.3::CameraMetadataTag:ANDROID_LOGICAL_MULTI_CAMERA_END_3_3,

    ANDROID_LOGICAL_MULTI_CAMERA_END_3_4,

    /** android.heic.availableHeicStreamConfigurations [static, enum[], ndk_public]
     *
     * <p>The available HEIC (ISO/IEC 23008-12) stream
     * configurations that this camera device supports
     * (i.e. format, width, height, output/input stream).</p>
     */
    ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS = CameraMetadataSectionStart:ANDROID_HEIC_START,

    /** android.heic.availableHeicMinFrameDurations [static, int64[], ndk_public]
     *
     * <p>This lists the minimum frame duration for each
     * format/size combination for HEIC output formats.</p>
     */
    ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS,

    /** android.heic.availableHeicStallDurations [static, int64[], ndk_public]
     *
     * <p>This lists the maximum stall duration for each
     * output format/size combination for HEIC streams.</p>
     */
    ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS,

    ANDROID_HEIC_END_3_4,

    /** android.heic.info.supported [static, enum, system]
     *
     * <p>Whether this camera device can support identical set of stream combinations
     * involving HEIC image format, compared to the
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">table of combinations</a>
     * involving JPEG image format required for the device's hardware level and capabilities.</p>
     */
    ANDROID_HEIC_INFO_SUPPORTED = CameraMetadataSectionStart:ANDROID_HEIC_INFO_START,

    /** android.heic.info.maxJpegAppSegmentsCount [static, byte, system]
     *
     * <p>The maximum number of Jpeg APP segments supported by the camera HAL device.</p>
     */
    ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT,

    ANDROID_HEIC_INFO_END_3_4,

};

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

/** android.request.availableCapabilities enumeration values added since v3.3
 * @see ANDROID_REQUEST_AVAILABLE_CAPABILITIES
 */
enum CameraMetadataEnumAndroidRequestAvailableCapabilities :
        @3.3::CameraMetadataEnumAndroidRequestAvailableCapabilities {
    ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA,
};

/** android.scaler.availableFormats enumeration values added since v3.2
 * @see ANDROID_SCALER_AVAILABLE_FORMATS
 */
enum CameraMetadataEnumAndroidScalerAvailableFormats :
        @3.2::CameraMetadataEnumAndroidScalerAvailableFormats {
    ANDROID_SCALER_AVAILABLE_FORMATS_RAW10                      = 0x25,
    ANDROID_SCALER_AVAILABLE_FORMATS_RAW12                      = 0x26,
    ANDROID_SCALER_AVAILABLE_FORMATS_Y8                         = 0x20203859,
};

/** android.scaler.availableRecommendedStreamConfigurations enumeration values
 * @see ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS
 */
enum CameraMetadataEnumAndroidScalerAvailableRecommendedStreamConfigurations : uint32_t {
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW
                                                                 = 0x0,
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD
                                                                 = 0x1,
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT
                                                                 = 0x2,
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT
                                                                 = 0x3,
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_ZSL
                                                                 = 0x4,
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RAW
                                                                 = 0x5,
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_LOW_LATENCY_SNAPSHOT
                                                                 = 0x6,
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END
                                                                 = 0x7,
    ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START
                                                                 = 0x18,
};

/** android.sensor.info.colorFilterArrangement enumeration values added since v3.2
 * @see ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
 */
enum CameraMetadataEnumAndroidSensorInfoColorFilterArrangement :
        @3.2::CameraMetadataEnumAndroidSensorInfoColorFilterArrangement {
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO,
    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR,
};

/** android.info.supportedBufferManagementVersion enumeration values
 * @see ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION
 */
enum CameraMetadataEnumAndroidInfoSupportedBufferManagementVersion : uint32_t {
    ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_HIDL_DEVICE_3_5,
};

/** android.depth.availableDynamicDepthStreamConfigurations enumeration values
 * @see ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
 */
enum CameraMetadataEnumAndroidDepthAvailableDynamicDepthStreamConfigurations : uint32_t {
    ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT,
    ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT,
};

/** android.heic.availableHeicStreamConfigurations enumeration values
 * @see ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
 */
enum CameraMetadataEnumAndroidHeicAvailableHeicStreamConfigurations : uint32_t {
    ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT,
    ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT,
};

/** android.heic.info.supported enumeration values
 * @see ANDROID_HEIC_INFO_SUPPORTED
 */
enum CameraMetadataEnumAndroidHeicInfoSupported : uint32_t {
    ANDROID_HEIC_INFO_SUPPORTED_FALSE,
    ANDROID_HEIC_INFO_SUPPORTED_TRUE,
};
