blob: 52bc56d1eeddff1a23c97aca147a113fc7440fab [file] [log] [blame]
/* Copyright (c) 2011 Samsung Electronics Co, Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Alternatively, 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.
*/
/*2012.04.18 Version 0.1 Initial Release*/
/*2012.04.23 Version 0.2 Added static metadata (draft)*/
/*2012.07.04 Version 0.3 Applied google's undocumented changes (draft)*/
/*2012.07.11 Version 0.4 Added FD parameters */
/*2012.07.27 Version 0.5 Modified HSB control and DM */
/*2012.08.28 Version 0.6 Added AA_SCENE_MODE_NIGHT_CAPTURE */
/*2012.10.15 Version 0.7 Added contrast in colorcorrection */
/*2012.10.22 Version 0.8 Added analogGain and digitalGain in sensor control */
/*2012.10.30 Version 0.9 Added disTargetAddress in camera2_scaler_uctl */
/*2012.10.31 Version 0.10 Added user-defined metadata for 3A */
/*2012.11.27 Version 0.11 Added image effects */
/*2012.12.10 Version 0.12 Modified aa_aemode */
#ifndef FIMC_IS_METADATA_H_
#define FIMC_IS_METADATA_H_
#ifndef _LINUX_TYPES_H
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned int uint32_t;
/*typedef unsigned long long uint64_t;*/
#endif
struct rational {
int32_t num;
int32_t den;
};
#define CAMERA2_MAX_AVAILABLE_MODE 21
#define CAMERA2_MAX_FACES 16
#define CAMERA2_MAX_VENDER_LENGTH 400
#define CAMERA2_MAX_IPC_VENDER_LENGTH 1056
#ifdef EXYNOS7885
#define CAPTURE_NODE_MAX 6
#else
#define CAPTURE_NODE_MAX 5
#endif
#define CAMERA2_MAX_PDAF_MULTIROI_COLUMN 13
#define CAMERA2_MAX_PDAF_MULTIROI_ROW 9
#define CAMERA2_MAX_UCTL_VENDER_LENGTH 32
#define CAMERA2_MAX_UCTL_VENDOR2_LENGTH 400
#define CAMERA2_MAX_UDM_VENDOR2_LENGTH 32
#define OPEN_MAGIC_NUMBER 0x01020304
#define SHOT_MAGIC_NUMBER 0x23456789
#include "ExynosCameraConfig.h"
/*
*controls/dynamic metadata
*/
/* android.request */
enum metadata_mode {
METADATA_MODE_NONE,
METADATA_MODE_FULL
};
enum is_subscenario_id {
ISS_SUB_SCENARIO_STILL_PREVIEW = 0, /* 0: still preview */
ISS_SUB_SCENARIO_VIDEO = 1, /* 1: video */
ISS_SUB_SCENARIO_DUAL_STILL = 2, /* 2: dual still preview */
ISS_SUB_SCENARIO_DUAL_VIDEO = 3, /* 3: dual video */
ISS_SUB_SCENARIO_VIDEO_HIGH_SPEED = 4, /* 4: video high speed */
ISS_SUB_SCENARIO_DUAL_PREVIEW = ISS_SUB_SCENARIO_VIDEO_HIGH_SPEED,
ISS_SUB_SCENARIO_STILL_CAPTURE = 5, /* 5: still capture */
ISS_SUB_SCENARIO_FHD_60FPS = 6, /* 6: video FHD 60fps */
ISS_SUB_SCENARIO_UHD_30FPS = 7, /* 7: video UHD 30fps */
ISS_SUB_SCENARIO_WVGA_300FPS = 8, /* 8: video WVGA 300fps */
ISS_SUB_SCENARIO_STILL_PREVIEW_WDR_ON = 9,
ISS_SUB_SCENARIO_VIDEO_WDR_ON = 10,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_ON = 11,
ISS_SUB_SCENARIO_UHD_30FPS_WDR_ON = 12,
ISS_SUB_SCENARIO_STILL_CAPTURE_ZOOM = 13,
ISS_SUB_SCENARIO_STILL_CAPTURE_ZOOM_INDOOR = 14,
ISS_SUB_SCENARIO_STILL_CAPTURE_ZOOM_OUTDOOR = 15,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_ON_ZOOM = 16,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_ON_ZOOM_INDOOR = 17,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_ON_ZOOM_OUTDOOR = 18,
ISS_SUB_SCENARIO_STILL_CAPTURE_LLS = 19,
ISS_SUB_SCENARIO_MERGED_STILL_CAPTURE_WDR_AUTO = ISS_SUB_SCENARIO_STILL_CAPTURE_LLS,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_ON_LLS = 20,
ISS_SUB_SCENARIO_MERGED_STILL_CAPTURE_WDR_ON = ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_ON_LLS,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_AUTO_ZOOM = 21,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_AUTO_ZOOM_INDOOR = 22,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_AUTO_ZOOM_OUTDOOR = 23,
ISS_SUB_SCENARIO_STILL_CAPTURE_WDR_AUTO = 24,
ISS_SUB_SCENARIO_VIDEO_WDR_AUTO = 25,
ISS_SUB_SCENARIO_STILL_PREVIEW_WDR_AUTO = 26,
ISS_SUB_SCENARIO_FHD_240FPS = 27,
ISS_SUB_SCENARIO_MERGED_STILL_CAPTURE = 28,
ISS_SUB_SCENARIO_STILL_CAPTURE_SHARPEN = 29,
ISS_SUB_SCENARIO_STILL_CAPTURE_LONG = 30,
ISS_SUB_SCENARIO_STILL_CAPTURE_MANUAL_ISO = 31,
ISS_SUB_SCENARIO_STILL_PREVIEW_BINNING = 40, /* 40: binning mode for low power */
ISS_SUB_SCENARIO_STILL_CAPTURE_BDS = 41,
ISS_SUB_SCENARIO_STILL_PREVIEW_LLS = 42,
ISS_SUB_SCENARIO_FRONT_VT1 = 31, /* 31: front camera VT1 */
ISS_SUB_SCENARIO_FRONT_VT2 = 32, /* 32: front camera VT2 */
ISS_SUB_SCENARIO_FRONT_SMART_STAY = 33, /* 33: front camera smart stay */
ISS_SUB_SCENARIO_FRONT_PANORAMA = 34, /* 34: front camera front panorama */
ISS_SUB_SCENARIO_FRONT_C2_OFF_STILL_PREVIEW = 35, /* 35: C2 off front still preview */
ISS_SUB_SCENARIO_FRONT_C2_OFF_STILL_CAPTURE = 36, /* 36: C2 off front still capture */
ISS_SUB_SCENARIO_FRONT_C2_OFF_VIDEO = 37, /* 37: C2 off front video */
ISS_SUB_SCENARIO_FRONT_VT4 = 38, /* 38: front camera VT4 */
ISS_SUB_SCENARIO_FRONT_VT1_STILL_CAPTURE = 39, /* 39: front camera VT1 still capture */
ISS_SUB_SCENARIO_FRONT_STILL_PREVIEW_BINNING = 40, /* 40: front camera binning mode for low power */
ISS_SUB_SCENARIO_FRONT_COLOR_IRIS_PREVIEW = 43, /* 43: front camera Color Iris preview */
ISS_SUB_SCENARIO_LIVE_OUTFOCUS_PREVIEW = 44,
ISS_SUB_SCENARIO_LIVE_OUTFOCUS_CAPTURE = 45,
ISS_SUB_SCENARIO_LIVE_OUTFOCUS_VIDEO = 46,
ISS_SUB_END,
};
enum is_scenario_is {
FIMC_IS_SCENARIO_SWVDIS = 1,
FIMC_IS_SCENARIO_COLOR_IRIS = 2,
FIMC_IS_SCENARIO_AUTO_DUAL = 3,
};
enum available_capabilities {
REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE = 0,
REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR,
REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING,
REQUEST_AVAILABLE_CAPABILITIES_RAW,
REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING,
REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS,
REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE,
REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING,
REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT,
REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO,
};
struct camera2_request_ctl {
uint32_t frameCount;
uint32_t id;
enum metadata_mode metadataMode;
/* vendor feature */
uint32_t vendor_frameCount;
};
struct camera2_request_dm {
uint32_t frameCount;
uint32_t id;
enum metadata_mode metadataMode;
uint8_t pipelineDepth;
uint32_t vendor_frameCount;
};
struct camera2_request_sm {
uint32_t maxNumOutputStreams[3];
uint32_t maxNumOutputRaw;
uint32_t maxNumOutputProc;
uint32_t maxNumOutputProcStalling;
uint32_t maxNumInputStreams;
uint8_t pipelineMaxDepth;
uint32_t partialResultCount;
uint8_t availableCapabilities[CAMERA2_MAX_AVAILABLE_MODE];
uint32_t availableRequestKeys[CAMERA2_MAX_AVAILABLE_MODE];
uint32_t availableResultKeys[CAMERA2_MAX_AVAILABLE_MODE];
uint32_t availableCharacteristicsKeys[CAMERA2_MAX_AVAILABLE_MODE];
};
struct camera2_entry_ctl {
uint32_t lowIndexParam;
uint32_t highIndexParam;
uint32_t parameter[2048];
};
struct camera2_entry_dm {
uint32_t lowIndexParam;
uint32_t highIndexParam;
};
/* android.lens */
enum optical_stabilization_mode {
OPTICAL_STABILIZATION_MODE_OFF = 0,
OPTICAL_STABILIZATION_MODE_ON = 1,
/* vendor feature */
OPTICAL_STABILIZATION_MODE_STILL = 100, // Still mode
OPTICAL_STABILIZATION_MODE_STILL_ZOOM, // Still Zoom mode
OPTICAL_STABILIZATION_MODE_VIDEO, // Recording mode
OPTICAL_STABILIZATION_MODE_SINE_X, // factory mode x
OPTICAL_STABILIZATION_MODE_SINE_Y, // factory mode y
OPTICAL_STABILIZATION_MODE_CENTERING, // Centering mode
OPTICAL_STABILIZATION_MODE_VDIS, // VDIS mode
OPTICAL_STABILIZATION_MODE_VIDEO_RATIO_4_3, // Recording mode(VGA)
};
enum lens_state {
LENS_STATE_STATIONARY = 0,
LENS_STATE_MOVING,
};
enum lens_focus_distance_calibration {
LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED = 0,
LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE,
LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED,
};
enum lens_facing {
LENS_FACING_BACK,
LENS_FACING_FRONT,
LENS_FACING_EXTERNAL,
};
struct camera2_lens_ctl {
float aperture;
float filterDensity;
float focalLength;
float focusDistance;
enum optical_stabilization_mode opticalStabilizationMode;
};
struct camera2_lens_dm {
float aperture;
float filterDensity;
float focalLength;
float focusDistance;
float focusRange[2];
enum optical_stabilization_mode opticalStabilizationMode;
enum lens_state state;
float poseRotation[4];
float poseTranslation[3];
float intrinsicCalibration[5];
float radialDistortion[6];
};
struct camera2_lens_sm {
float availableApertures[CAMERA2_MAX_AVAILABLE_MODE];
float availableFilterDensities[CAMERA2_MAX_AVAILABLE_MODE];
float availableFocalLength[CAMERA2_MAX_AVAILABLE_MODE];
uint8_t availableOpticalStabilization[CAMERA2_MAX_AVAILABLE_MODE];
float hyperfocalDistance;
float minimumFocusDistance;
uint32_t shadingMapSize[2];
enum lens_focus_distance_calibration focusDistanceCalibration;
enum lens_facing facing;
float poseRotation[4];
float poseTranslation[3];
float intrinsicCalibration[5];
float radialDistortion[6];
};
/* android.sensor */
enum sensor_test_pattern_mode {
SENSOR_TEST_PATTERN_MODE_OFF = 1,
SENSOR_TEST_PATTERN_MODE_SOLID_COLOR,
SENSOR_TEST_PATTERN_MODE_COLOR_BARS,
SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY,
SENSOR_TEST_PATTERN_MODE_PN9,
SENSOR_TEST_PATTERN_MODE_CUSTOM1 = 257,
};
enum sensor_colorfilterarrangement {
SENSOR_COLORFILTERARRANGEMENT_RGGB,
SENSOR_COLORFILTERARRANGEMENT_GRBG,
SENSOR_COLORFILTERARRANGEMENT_GBRG,
SENSOR_COLORFILTERARRANGEMENT_BGGR,
SENSOR_COLORFILTERARRANGEMENT_RGB
};
enum sensor_timestamp_calibration {
SENSOR_INFO_TIMESTAMP_CALIBRATION_UNCALIBRATED = 0,
SENSOR_INFO_TIMESTAMP_CALIBRATION_CALIBRATED,
};
enum sensor_lensshading_applied {
SENSOR_INFO_LENS_SHADING_APPLIED_FALSE = 0,
SENSOR_INFO_LENS_SHADING_APPLIED_TRUE,
};
enum sensor_ref_illuminant {
SENSOR_ILLUMINANT_DAYLIGHT = 1,
SENSOR_ILLUMINANT_FLUORESCENT = 2,
SENSOR_ILLUMINANT_TUNGSTEN = 3,
SENSOR_ILLUMINANT_FLASH = 4,
SENSOR_ILLUMINANT_FINE_WEATHER = 9,
SENSOR_ILLUMINANT_CLOUDY_WEATHER = 10,
SENSOR_ILLUMINANT_SHADE = 11,
SENSOR_ILLUMINANT_DAYLIGHT_FLUORESCENT = 12,
SENSOR_ILLUMINANT_DAY_WHITE_FLUORESCENT = 13,
SENSOR_ILLUMINANT_COOL_WHITE_FLUORESCENT = 14,
SENSOR_ILLUMINANT_WHITE_FLUORESCENT = 15,
SENSOR_ILLUMINANT_STANDARD_A = 17,
SENSOR_ILLUMINANT_STANDARD_B = 18,
SENSOR_ILLUMINANT_STANDARD_C = 19,
SENSOR_ILLUMINANT_D55 = 20,
SENSOR_ILLUMINANT_D65 = 21,
SENSOR_ILLUMINANT_D75 = 22,
SENSOR_ILLUMINANT_D50 = 23,
SENSOR_ILLUMINANT_ISO_STUDIO_TUNGSTEN = 24
};
struct camera2_sensor_ctl {
uint64_t exposureTime;
uint64_t frameDuration;
uint32_t sensitivity;
int32_t testPatternData[4];
enum sensor_test_pattern_mode testPatternMode;
};
struct camera2_sensor_dm {
uint64_t exposureTime;
uint64_t frameDuration;
uint32_t sensitivity;
uint64_t timeStamp;
float temperature;
struct rational neutralColorPoint[3];
double noiseProfile[4][2];
float profileHueSatMap[2][2][2][3];
float profileToneCurve[32][2];
float greenSplit;
int32_t testPatternData[4];
enum sensor_test_pattern_mode testPatternMode;
uint64_t rollingShutterSkew;
};
struct camera2_sensor_sm {
uint32_t activeArraySize[4];
uint32_t preCorrectionActiveArraySize[4];
uint32_t sensitivityRange[2];
enum sensor_colorfilterarrangement colorFilterArrangement;
uint64_t exposureTimeRange[2];
uint64_t maxFrameDuration;
float physicalSize[2];
uint32_t pixelArraySize[2];
uint32_t whiteLevel;
enum sensor_timestamp_calibration timestampCalibration;
enum sensor_lensshading_applied lensShadingApplied;
enum sensor_ref_illuminant referenceIlluminant1;
enum sensor_ref_illuminant referenceIlluminant2;
struct rational calibrationTransform1[9];
struct rational calibrationTransform2[9];
struct rational colorTransform1[9];
struct rational colorTransform2[9];
struct rational forwardMatrix1[9];
struct rational forwardMatrix2[9];
struct rational baseGainFactor;
uint32_t blackLevelPattern[4];
uint32_t maxAnalogSensitivity;
uint32_t orientation;
uint32_t profileHueSatMapDimensions[3];
uint32_t availableTestPatternModes[CAMERA2_MAX_AVAILABLE_MODE];
};
/* android.flash */
enum flash_mode {
CAM2_FLASH_MODE_NONE = 0,
CAM2_FLASH_MODE_OFF = 1,
CAM2_FLASH_MODE_SINGLE,
CAM2_FLASH_MODE_TORCH,
/* vendor feature */
CAM2_FLASH_MODE_BEST = 100,
CAM2_FLASH_MODE_LCD = 101,
};
enum flash_state {
FLASH_STATE_UNAVAILABLE = 0,
FLASH_STATE_CHARGING,
FLASH_STATE_READY,
FLASH_STATE_FIRED,
FLASH_STATE_PARTIAL,
};
enum capture_state {
CAPTURE_STATE_NONE = 0,
CAPTURE_STATE_FLASH = 1,
CAPTURE_STATE_HDR_DARK = 12,
CAPTURE_STATE_HDR_NORMAL = 13,
CAPTURE_STATE_HDR_BRIGHT = 14,
CAPTURE_STATE_ZSL_LIKE = 20,
CAPTURE_STATE_STREAM_ON_CAPTURE = 30,
CAPTURE_STATE_RAW_CAPTURE = 100,
}; /* firingStable state */
enum flash_info_available {
FLASH_INFO_AVAILABLE_FALSE = 0,
FLASH_INFO_AVAILABLE_TRUE,
};
struct camera2_flash_ctl {
uint32_t firingPower;
uint64_t firingTime;
enum flash_mode flashMode;
};
struct camera2_flash_dm {
uint32_t firingPower;
uint64_t firingTime;
enum flash_mode flashMode;
enum flash_state flashState;
/* vendor feature */
uint32_t vendor_firingStable;
uint32_t vendor_decision;
uint32_t vendor_flashReady;
uint32_t vendor_flashOffReady;
};
struct camera2_flash_sm {
enum flash_info_available available;
uint64_t chargeDuration;
uint8_t colorTemperature;
uint8_t maxEnergy;
};
/* android.hotpixel */
enum processing_mode {
PROCESSING_MODE_OFF = 1,
PROCESSING_MODE_FAST,
PROCESSING_MODE_HIGH_QUALITY,
PROCESSING_MODE_MINIMAL,
/* vendor feature */
PROCESSING_MODE_MANUAL = 100,
};
struct camera2_hotpixel_ctl {
enum processing_mode mode;
};
struct camera2_hotpixel_dm {
enum processing_mode mode;
};
struct camera2_hotpixel_sm {
uint8_t availableHotPixelModes[CAMERA2_MAX_AVAILABLE_MODE];
};
/* android.demosaic */
enum demosaic_processing_mode {
DEMOSAIC_PROCESSING_MODE_FAST = 1,
DEMOSAIC_PROCESSING_MODE_HIGH_QUALITY
};
struct camera2_demosaic_ctl {
enum demosaic_processing_mode mode;
};
struct camera2_demosaic_dm {
enum demosaic_processing_mode mode;
};
/* android.noiseReduction */
struct camera2_noisereduction_ctl {
enum processing_mode mode;
uint8_t strength;
};
struct camera2_noisereduction_dm {
enum processing_mode mode;
uint8_t strength;
};
struct camera2_noisereduction_sm {
uint8_t availableNoiseReductionModes[CAMERA2_MAX_AVAILABLE_MODE];
};
/* android.shading */
struct camera2_shading_ctl {
enum processing_mode mode;
uint8_t strength; /* Range: 1 ~ 10 */ // TODO: [API32] not implemented yet
};
struct camera2_shading_dm {
enum processing_mode mode;
uint8_t strength; /* Range: 1 ~ 10 */ // TODO: [API32] not implemented yet
};
struct camera2_shading_sm {
enum processing_mode availableModes[CAMERA2_MAX_AVAILABLE_MODE];
};
/* android.colorCorrection */
enum colorcorrection_mode {
COLORCORRECTION_MODE_TRANSFORM_MATRIX = 1,
COLORCORRECTION_MODE_FAST,
COLORCORRECTION_MODE_HIGH_QUALITY,
};
struct camera2_colorcorrection_ctl {
enum colorcorrection_mode mode;
struct rational transform[9];
float gains[4];
enum processing_mode aberrationCorrectionMode;
/* vendor feature */
uint32_t vendor_hue;
uint32_t vendor_saturation;
uint32_t vendor_brightness;
uint32_t vendor_contrast;
};
struct camera2_colorcorrection_dm {
enum colorcorrection_mode mode;
struct rational transform[9];
float gains[4];
enum processing_mode aberrationCorrectionMode;
/* vendor feature */
uint32_t vendor_hue;
uint32_t vendor_saturation;
uint32_t vendor_brightness;
uint32_t vendor_contrast;
};
struct camera2_colorcorrection_sm {
uint8_t availableModes[CAMERA2_MAX_AVAILABLE_MODE];
uint8_t availableAberrationCorrectionModes[CAMERA2_MAX_AVAILABLE_MODE];
/* vendor feature */
uint32_t vendor_hueRange[2];
uint32_t vendor_saturationRange[2];
uint32_t vendor_brightnessRange[2];
uint32_t vendor_contrastRange[2];
};
/* android.tonemap */
enum tonemap_mode {
TONEMAP_MODE_CONTRAST_CURVE = 1,
TONEMAP_MODE_FAST,
TONEMAP_MODE_HIGH_QUALITY,
TONEMAP_MODE_GAMMA_VALUE,
TONEMAP_MODE_PRESET_CURVE,
};
enum tonemap_presetCurve {
TONEMAP_PRESET_CURVE_SRGB,
TONEMAP_PRESET_CURVE_REC709,
};
struct camera2_tonemap_ctl {
float curveBlue[64];
float curveGreen[64];
float curveRed[64];
float curve;
enum tonemap_mode mode;
float gamma;
enum tonemap_presetCurve presetCurve;
};
struct camera2_tonemap_dm {
float curveBlue[64];
float curveGreen[64];
float curveRed[64];
float curve;
enum tonemap_mode mode;
float gamma;
enum tonemap_presetCurve presetCurve;
};
struct camera2_tonemap_sm {
uint32_t maxCurvePoints;
uint8_t availableToneMapModes[CAMERA2_MAX_AVAILABLE_MODE];
};
/* android.edge */
struct camera2_edge_ctl {
enum processing_mode mode;
uint8_t strength;
};
struct camera2_edge_dm {
enum processing_mode mode;
uint8_t strength;
};
struct camera2_edge_sm {
uint8_t availableEdgeModes[CAMERA2_MAX_AVAILABLE_MODE];
};
/* android.scaler */
struct camera2_scaler_ctl {
uint32_t cropRegion[4];
};
struct camera2_scaler_dm {
uint32_t cropRegion[4];
};
enum available_stream_configurations {
SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT = 0,
SCALER_AVAILABLE_STREAM_CONFIGURATIONS_INPUT,
};
enum scaler_cropping_type {
SCALER_CROPPING_TYPE_CENTER_ONLY = 0,
SCALER_CROPPING_TYPE_FREEFORM,
};
struct camera2_scaler_sm {
float availableMaxDigitalZoom;
int32_t availableInputOutputFormatsMap;
uint8_t availableStreamConfigurations[CAMERA2_MAX_AVAILABLE_MODE][4];
uint64_t availableMinFrameDurations[CAMERA2_MAX_AVAILABLE_MODE][4];
uint64_t availableStallDurations[CAMERA2_MAX_AVAILABLE_MODE][4];
int32_t streamConfigurationMap;
enum scaler_cropping_type croppingType;
};
/* android.jpeg */
struct camera2_jpeg_ctl {
uint8_t gpsLocation;
double gpsCoordinates[3];
uint8_t gpsProcessingMethod[32];
uint64_t gpsTimestamp;
uint32_t orientation;
uint8_t quality;
uint8_t thumbnailQuality;
uint32_t thumbnailSize[2];
};
struct camera2_jpeg_dm {
uint8_t gpsLocation;
double gpsCoordinates[3];
uint8_t gpsProcessingMethod[32];
uint64_t gpsTimestamp;
uint32_t orientation;
uint8_t quality;
uint32_t size;
uint8_t thumbnailQuality;
uint32_t thumbnailSize[2];
};
struct camera2_jpeg_sm {
uint32_t availableThumbnailSizes[8][2];
uint32_t maxSize;
};
/* android.statistics */
enum facedetect_mode {
FACEDETECT_MODE_OFF = 1,
FACEDETECT_MODE_SIMPLE,
FACEDETECT_MODE_FULL
};
enum stats_mode {
STATS_MODE_OFF = 1,
STATS_MODE_ON
};
enum stats_scene_flicker {
STATISTICS_SCENE_FLICKER_NONE = 1,
STATISTICS_SCENE_FLICKER_50HZ,
STATISTICS_SCENE_FLICKER_60HZ,
};
enum stats_lowlightmode {
STATE_LLS_LEVEL_ZSL = 0,
STATE_LLS_LEVEL_LOW = 1,
STATE_LLS_LEVEL_HIGH = 2,
STATE_LLS_LEVEL_SIS = 3,
STATE_LLS_LEVEL_ZSL_LIKE = 4,
STATE_LLS_LEVEL_ZSL_LIKE1 = 7,
STATE_LLS_LEVEL_SHARPEN_SINGLE = 8,
STATE_LLS_MANUAL_ISO = 9,
STATE_LLS_LEVEL_FLASH = 16,
STATE_LLS_LEVEL_MULTI_MERGE_2 = 18,
STATE_LLS_LEVEL_MULTI_MERGE_3 = 19,
STATE_LLS_LEVEL_MULTI_MERGE_4 = 20,
STATE_LLS_LEVEL_MULTI_PICK_2 = 34,
STATE_LLS_LEVEL_MULTI_PICK_3 = 35,
STATE_LLS_LEVEL_MULTI_PICK_4 = 36,
STATE_LLS_LEVEL_MULTI_MERGE_INDICATOR_2 = 50,
STATE_LLS_LEVEL_MULTI_MERGE_INDICATOR_3 = 51,
STATE_LLS_LEVEL_MULTI_MERGE_INDICATOR_4 = 52,
STATE_LLS_LEVEL_FLASH_2 = 66,
STATE_LLS_LEVEL_FLASH_3 = 67,
STATE_LLS_LEVEL_FLASH_4 = 68,
STATE_LLS_LEVEL_MULTI_MERGE_INDICATOR_LOW_2 = 82,
STATE_LLS_LEVEL_MULTI_MERGE_INDICATOR_LOW_3 = 83,
STATE_LLS_LEVEL_MULTI_MERGE_INDICATOR_LOW_4 = 84,
STATE_LLS_LEVEL_FLASH_LOW_2 = 98,
STATE_LLS_LEVEL_FLASH_LOW_3 = 99,
STATE_LLS_LEVEL_FLASH_LOW_4 = 100,
STATE_LLS_LEVEL_DUMMY = 150,
};
enum stats_wdrAutoState {
STATE_WDR_AUTO_OFF = 1,
STATE_WDR_AUTO_REQUIRED = 2,
};
struct camera2_stats_ctl {
enum facedetect_mode faceDetectMode;
enum stats_mode histogramMode;
enum stats_mode sharpnessMapMode;
enum stats_mode hotPixelMapMode;
enum stats_mode lensShadingMapMode;
};
struct camera2_stats_dm {
enum facedetect_mode faceDetectMode;
uint32_t faceIds[CAMERA2_MAX_FACES];
uint32_t faceLandmarks[CAMERA2_MAX_FACES][6];
uint32_t faceRectangles[CAMERA2_MAX_FACES][4];
uint8_t faceScores[CAMERA2_MAX_FACES];
uint32_t faceSrcImageSize[2];
uint32_t faces[CAMERA2_MAX_FACES-2];
uint32_t histogram[3 * 256];
enum stats_mode histogramMode;
int32_t sharpnessMap[2][2][3];
enum stats_mode sharpnessMapMode;
uint8_t lensShadingCorrectionMap;
float lensShadingMap[2][2][4];
enum stats_scene_flicker sceneFlicker;
enum stats_mode hotPixelMapMode;
int32_t hotPixelMap[CAMERA2_MAX_AVAILABLE_MODE][2];
enum stats_mode lensShadingMapMode;
/* vendor feature */
enum stats_lowlightmode vendor_LowLightMode;
uint32_t vendor_lls_tuning_set_index;
uint32_t vendor_lls_brightness_index;
enum stats_wdrAutoState vendor_wdrAutoState;
};
struct camera2_stats_sm {
uint8_t availableFaceDetectModes[CAMERA2_MAX_AVAILABLE_MODE];
uint32_t histogramBucketCount;
uint32_t maxFaceCount;
uint32_t maxHistogramCount;
uint32_t maxSharpnessMapValue;
uint32_t sharpnessMapSize[2];
uint32_t availableHotPixelMapModes[CAMERA2_MAX_AVAILABLE_MODE];
enum stats_mode availableLensShadingMapModes[CAMERA2_MAX_AVAILABLE_MODE];
};
/* android.control */
enum aa_capture_intent {
AA_CAPTURE_INTENT_CUSTOM = 0,
AA_CAPTURE_INTENT_PREVIEW,
AA_CAPTURE_INTENT_STILL_CAPTURE,
AA_CAPTURE_INTENT_VIDEO_RECORD,
AA_CAPTURE_INTENT_VIDEO_SNAPSHOT,
AA_CAPTURE_INTENT_ZERO_SHUTTER_LAG,
AA_CAPTURE_INTENT_MANUAL,
/* vendor feature */
AA_CAPTURE_INTENT_STILL_CAPTURE_OIS_SINGLE = 100,
AA_CAPTURE_INTENT_STILL_CAPTURE_OIS_MULTI,
AA_CAPTURE_INTENT_STILL_CAPTURE_OIS_BEST,
AA_CAPTRUE_INTENT_STILL_CAPTURE_COMP_BYPASS,
AA_CAPTRUE_INTENT_STILL_CAPTURE_RAWDUMP = AA_CAPTRUE_INTENT_STILL_CAPTURE_COMP_BYPASS,
AA_CAPTRUE_INTENT_STILL_CAPTURE_OIS_DEBLUR,
AA_CAPTRUE_INTENT_STILL_CAPTURE_DEBLUR_DYNAMIC_SHOT,
AA_CAPTRUE_INTENT_STILL_CAPTURE_OIS_DYNAMIC_SHOT,
AA_CAPTRUE_INTENT_STILL_CAPTURE_EXPOSURE_DYNAMIC_SHOT,
AA_CAPTURE_INTENT_STILL_CAPTURE_CANCEL,
};
enum aa_mode {
AA_CONTROL_OFF = 1,
AA_CONTROL_AUTO,
AA_CONTROL_USE_SCENE_MODE,
AA_CONTROL_OFF_KEEP_STATE,
};
enum aa_scene_mode {
AA_SCENE_MODE_DISABLED = 1,
AA_SCENE_MODE_FACE_PRIORITY,
AA_SCENE_MODE_ACTION,
AA_SCENE_MODE_PORTRAIT,
AA_SCENE_MODE_LANDSCAPE,
AA_SCENE_MODE_NIGHT,
AA_SCENE_MODE_NIGHT_PORTRAIT,
AA_SCENE_MODE_THEATRE,
AA_SCENE_MODE_BEACH,
AA_SCENE_MODE_SNOW,
AA_SCENE_MODE_SUNSET,
AA_SCENE_MODE_STEADYPHOTO,
AA_SCENE_MODE_FIREWORKS,
AA_SCENE_MODE_SPORTS,
AA_SCENE_MODE_PARTY,
AA_SCENE_MODE_CANDLELIGHT,
AA_SCENE_MODE_BARCODE,
AA_SCENE_MODE_HIGH_SPEED_VIDEO,
AA_SCENE_MODE_HDR,
AA_SCENE_MODE_FACE_PRIORITY_LOW_LIGHT,
/* vendor feature */
AA_SCENE_MODE_NIGHT_CAPTURE = 100,
AA_SCENE_MODE_ANTISHAKE,
AA_SCENE_MODE_LLS,
AA_SCENE_MODE_FDAE,
AA_SCENE_MODE_DUAL,
AA_SCENE_MODE_DRAMA,
AA_SCENE_MODE_ANIMATED,
AA_SCENE_MODE_PANORAMA,
AA_SCENE_MODE_GOLF,
AA_SCENE_MODE_PREVIEW,
AA_SCENE_MODE_VIDEO,
AA_SCENE_MODE_SLOWMOTION_2,
AA_SCENE_MODE_SLOWMOTION_4_8,
AA_SCENE_MODE_DUAL_PREVIEW,
AA_SCENE_MODE_DUAL_VIDEO,
AA_SCENE_MODE_120_PREVIEW,
AA_SCENE_MODE_LIGHT_TRACE,
AA_SCENE_MODE_FOOD,
AA_SCENE_MODE_AQUA,
AA_SCENE_MODE_THERMAL,
AA_SCENE_MODE_VIDEO_COLLAGE,
AA_SCENE_MODE_PRO_MODE,
AA_SCENE_MODE_COLOR_IRIS,
AA_SCENE_MODE_FACE_LOCK,
AA_SCENE_MODE_LIVE_OUTFOCUS,
};
enum aa_effect_mode {
AA_EFFECT_OFF = 1,
AA_EFFECT_MONO,
AA_EFFECT_NEGATIVE,
AA_EFFECT_SOLARIZE,
AA_EFFECT_SEPIA,
AA_EFFECT_POSTERIZE,
AA_EFFECT_WHITEBOARD,
AA_EFFECT_BLACKBOARD,
AA_EFFECT_AQUA,
/* vendor feature */
AA_EFFECT_EMBOSS = 100,
AA_EFFECT_EMBOSS_MONO,
AA_EFFECT_SKETCH,
AA_EFFECT_RED_YELLOW_POINT,
AA_EFFECT_GREEN_POINT,
AA_EFFECT_BLUE_POINT,
AA_EFFECT_MAGENTA_POINT,
AA_EFFECT_WARM_VINTAGE,
AA_EFFECT_COLD_VINTAGE,
AA_EFFECT_WASHED,
AA_EFFECT_BEAUTY_FACE,
};
enum aa_ae_lock {
AA_AE_LOCK_OFF = 1,
AA_AE_LOCK_ON,
};
enum aa_aemode {
AA_AEMODE_OFF = 1,
AA_AEMODE_ON,
AA_AEMODE_ON_AUTO_FLASH,
AA_AEMODE_ON_ALWAYS_FLASH,
AA_AEMODE_ON_AUTO_FLASH_REDEYE,
/* vendor feature */
AA_AEMODE_CENTER = 100,
AA_AEMODE_AVERAGE,
AA_AEMODE_MATRIX,
AA_AEMODE_SPOT,
AA_AEMODE_CENTER_TOUCH,
AA_AEMODE_AVERAGE_TOUCH,
AA_AEMODE_MATRIX_TOUCH,
AA_AEMODE_SPOT_TOUCH,
UNKNOWN_AA_AE_MODE
};
enum aa_ae_flashmode {
/*all flash control stop*/
AA_FLASHMODE_OFF = 1,
/*flash start*/
AA_FLASHMODE_START,
/*flash cancle*/
AA_FLASHMODE_CANCEL,
/*internal 3A can control flash*/
AA_FLASHMODE_ON,
/*internal 3A can do auto flash algorithm*/
AA_FLASHMODE_AUTO,
/*internal 3A can fire flash by auto result*/
AA_FLASHMODE_CAPTURE,
/*internal 3A can control flash forced*/
AA_FLASHMODE_ON_ALWAYS
};
enum aa_ae_antibanding_mode {
AA_AE_ANTIBANDING_OFF = 1,
AA_AE_ANTIBANDING_50HZ,
AA_AE_ANTIBANDING_60HZ,
AA_AE_ANTIBANDING_AUTO,
/* vendor feature */
AA_AE_ANTIBANDING_AUTO_50HZ = 100, /* 50Hz + Auto */
AA_AE_ANTIBANDING_AUTO_60HZ /* 60Hz + Auto */
};
enum aa_awb_lock {
AA_AWB_LOCK_OFF = 1,
AA_AWB_LOCK_ON,
};
enum aa_awbmode {
AA_AWBMODE_OFF = 1,
AA_AWBMODE_WB_AUTO,
AA_AWBMODE_WB_INCANDESCENT,
AA_AWBMODE_WB_FLUORESCENT,
AA_AWBMODE_WB_WARM_FLUORESCENT,
AA_AWBMODE_WB_DAYLIGHT,
AA_AWBMODE_WB_CLOUDY_DAYLIGHT,
AA_AWBMODE_WB_TWILIGHT,
AA_AWBMODE_WB_SHADE,
AA_AWBMODE_WB_CUSTOM_K
};
enum aa_ae_precapture_trigger {
AA_AE_PRECAPTURE_TRIGGER_IDLE = 0,
AA_AE_PRECAPTURE_TRIGGER_START,
AA_AE_PRECAPTURE_TRIGGER_CANCEL,
};
enum aa_afmode {
AA_AFMODE_OFF = 1,
AA_AFMODE_AUTO,
AA_AFMODE_MACRO,
AA_AFMODE_CONTINUOUS_VIDEO,
AA_AFMODE_CONTINUOUS_PICTURE,
AA_AFMODE_EDOF,
};
enum aa_afmode_option_bit {
AA_AFMODE_OPTION_BIT_VIDEO = 0,
AA_AFMODE_OPTION_BIT_MACRO = 1,
AA_AFMODE_OPTION_BIT_FACE = 2,
AA_AFMODE_OPTION_BIT_DELAYED = 3,
AA_AFMODE_OPTION_BIT_OUT_FOCUSING = 4,
AA_AFMODE_OPTION_BIT_OBJECT_TRACKING = 5,
AA_AFMODE_OPTION_BIT_AF_ROI_NO_CONV = 6,
AA_AFMODE_OPTION_BIT_MULTI_AF = 7,
};
enum aa_afmode_ext {
AA_AFMODE_EXT_OFF = 1,
AA_AFMODE_EXT_ADVANCED_MACRO_FOCUS = 2,
AA_AFMODE_EXT_FOCUS_LOCATION = 3,
AA_AFMODE_EXT_FIXED_FACE = 4,
};
enum aa_af_trigger {
AA_AF_TRIGGER_IDLE = 0,
AA_AF_TRIGGER_START,
AA_AF_TRIGGER_CANCEL,
};
enum aa_afstate {
AA_AFSTATE_INACTIVE = 1,
AA_AFSTATE_PASSIVE_SCAN,
AA_AFSTATE_PASSIVE_FOCUSED,
AA_AFSTATE_ACTIVE_SCAN,
AA_AFSTATE_FOCUSED_LOCKED,
AA_AFSTATE_NOT_FOCUSED_LOCKED,
AA_AFSTATE_PASSIVE_UNFOCUSED,
};
enum ae_state {
AE_STATE_INACTIVE = 1,
AE_STATE_SEARCHING,
AE_STATE_CONVERGED,
AE_STATE_LOCKED,
AE_STATE_FLASH_REQUIRED,
AE_STATE_PRECAPTURE,
AE_STATE_LOCKED_CONVERGED = 10,
AE_STATE_LOCKED_FLASH_REQUIRED,
AE_STATE_SEARCHING_FLASH_REQUIRED,
};
enum awb_state {
AWB_STATE_INACTIVE = 1,
AWB_STATE_SEARCHING,
AWB_STATE_CONVERGED,
AWB_STATE_LOCKED
};
enum aa_videostabilization_mode {
VIDEO_STABILIZATION_MODE_OFF = 0,
VIDEO_STABILIZATION_MODE_ON,
};
enum aa_isomode {
AA_ISOMODE_AUTO = 1,
AA_ISOMODE_MANUAL,
};
enum aa_cameraid {
AA_CAMERAID_FRONT = 1,
AA_CAMERAID_REAR,
};
enum aa_cameratype {
AA_CAMERATYPE_SINGLE = 1,
AA_CAMERATYPE_WIDE,
AA_CAMERATYPE_TELE,
};
enum aa_videomode {
AA_VIDEOMODE_OFF = 0,
AA_VIDEOMODE_ON,
};
enum aa_ae_facemode {
AA_AE_FACEMODE_OFF = 0,
AA_AE_FACEMODE_ON,
};
enum aa_ae_lockavailable {
AE_LOCK_AVAILABLE_FALSE = 0,
AE_LOCK_AVAILABLE_TRUE,
};
enum aa_awb_lockavailable {
AWB_LOCK_AVAILABLE_FALSE = 0,
AWB_LOCK_AVAILABLE_TRUE,
};
enum aa_available_mode {
AA_OFF = 0,
AA_AUTO,
/* AA_USE_SCENE_MODE,
* AA_OFF_KEEP_STATE, */
};
struct camera2_aa_ctl {
enum aa_ae_antibanding_mode aeAntibandingMode;
int32_t aeExpCompensation;
enum aa_ae_lock aeLock;
enum aa_aemode aeMode;
uint32_t aeRegions[5];
uint32_t aeTargetFpsRange[2];
enum aa_ae_precapture_trigger aePrecaptureTrigger;
enum aa_afmode afMode;
uint32_t afRegions[5];
enum aa_af_trigger afTrigger;
enum aa_awb_lock awbLock;
enum aa_awbmode awbMode;
uint32_t awbRegions[5];
enum aa_capture_intent captureIntent;
enum aa_effect_mode effectMode;
enum aa_mode mode;
enum aa_scene_mode sceneMode;
enum aa_videostabilization_mode videoStabilizationMode;
/* vendor feature */
float vendor_aeExpCompensationStep;
uint32_t vendor_afmode_option;
enum aa_afmode_ext vendor_afmode_ext;
enum aa_ae_flashmode vendor_aeflashMode;
enum aa_isomode vendor_isoMode;
uint32_t vendor_isoValue;
int32_t vendor_awbValue;
enum aa_cameraid vendor_cameraId;
enum aa_videomode vendor_videoMode;
enum aa_ae_facemode vendor_aeFaceMode;
enum aa_afstate vendor_afState;
int32_t vendor_exposureValue;
uint32_t vendor_touchAeDone;
uint32_t vendor_touchBvChange;
uint32_t vendor_captureCount;
uint32_t vendor_captureExposureTime;
uint32_t vendor_expBracketingCount;
float vendor_expBracketing[15];
float vendor_expBracketingCapture;
uint32_t vendor_reserved[10];
};
struct camera2_aa_dm {
enum aa_ae_antibanding_mode aeAntibandingMode;
int32_t aeExpCompensation;
enum aa_ae_lock aeLock;
enum aa_aemode aeMode;
uint32_t aeRegions[5];
uint32_t aeTargetFpsRange[2];
enum aa_ae_precapture_trigger aePrecaptureTrigger;
enum ae_state aeState;
enum aa_afmode afMode;
uint32_t afRegions[5];
enum aa_af_trigger afTrigger;
enum aa_afstate afState;
enum aa_awb_lock awbLock;
enum aa_awbmode awbMode;
uint32_t awbRegions[5];
enum aa_capture_intent captureIntent;
enum awb_state awbState;
enum aa_effect_mode effectMode;
enum aa_mode mode;
enum aa_scene_mode sceneMode;
enum aa_videostabilization_mode videoStabilizationMode;
/* vendor feature */
float vendor_aeExpCompensationStep;
uint32_t vendor_afmode_option;
enum aa_afmode_ext vendor_afmode_ext;
enum aa_ae_flashmode vendor_aeflashMode;
enum aa_isomode vendor_isoMode;
uint32_t vendor_isoValue;
int32_t vendor_awbValue;
enum aa_cameraid vendor_cameraId;
enum aa_videomode vendor_videoMode;
enum aa_ae_facemode vendor_aeFaceMode;
enum aa_afstate vendor_afState;
int32_t vendor_exposureValue;
uint32_t vendor_touchAeDone;
uint32_t vendor_touchBvChange;
uint32_t vendor_captureCount;
uint32_t vendor_captureExposureTime;
uint32_t vendor_expBracketingCount;
float vendor_expBracketing[15];
float vendor_expBracketingCapture;
float vendor_objectDistanceCm;
uint32_t vendor_reserved[9];
};
struct camera2_aa_sm {
uint8_t aeAvailableAntibandingModes[CAMERA2_MAX_AVAILABLE_MODE];
uint8_t aeAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
uint32_t aeAvailableTargetFpsRanges[CAMERA2_MAX_AVAILABLE_MODE][2];
int32_t aeCompensationRange[2];
struct rational aeCompensationStep;
uint8_t afAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
uint8_t availableEffects[CAMERA2_MAX_AVAILABLE_MODE];
uint8_t availableSceneModes[CAMERA2_MAX_AVAILABLE_MODE];
uint8_t availableVideoStabilizationModes[4];
uint8_t awbAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
uint32_t maxRegions[3];
uint32_t maxRegionsAe;
uint32_t maxRegionsAwb;
uint32_t maxRegionsAf;
uint8_t sceneModeOverrides[CAMERA2_MAX_AVAILABLE_MODE][3];
uint32_t availableHighSpeedVideoConfigurations[CAMERA2_MAX_AVAILABLE_MODE][5];
enum aa_ae_lockavailable aeLockAvailable;
enum aa_awb_lockavailable awbLockAvailable;
enum aa_available_mode availableModes;
/* vendor feature */
uint32_t vendor_isoRange[2];
};
/* android.led */
enum led_transmit {
TRANSMIT_OFF = 0,
TRANSMIT_ON,
};
struct camera2_led_ctl {
enum led_transmit transmit;
};
struct camera2_led_dm {
enum led_transmit transmit;
};
struct camera2_led_sm {
uint8_t availableLeds[CAMERA2_MAX_AVAILABLE_MODE];
};
/* android.info */
enum info_supported_hardware_level {
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED = 0,
INFO_SUPPORTED_HARDWARE_LEVEL_FULL,
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY,
};
struct camera2_info_sm {
enum info_supported_hardware_level supportedHardwareLevel;
};
/* android.blacklevel */
enum blacklevel_lock {
BLACK_LEVEL_LOCK_OFF = 0,
BLACK_LEVEL_LOCK_ON,
};
struct camera2_blacklevel_ctl {
enum blacklevel_lock lock;
};
struct camera2_blacklevel_dm {
enum blacklevel_lock lock;
};
/* android.reprocess */
struct camera2_reprocess_ctl {
float effectiveExposureFactor;
};
struct camera2_reprocess_dm {
float effectiveExposureFactor;
};
struct camera2_reprocess_sm {
uint32_t maxCaptureStall;
};
/* android.depth */
enum depth_available_depth_stream_config {
DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_OUTPUT,
DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_INPUT,
};
enum depth_depth_is_exclusive {
DEPTH_DEPTH_IS_EXCLUSIVE_FALSE,
DEPTH_DEPTH_IS_EXCLUSIVE_TRUE,
};
struct camera2_depth_sm {
uint32_t maxDepthSamples;
enum depth_available_depth_stream_config availableDepthStreamConfigurations[CAMERA2_MAX_AVAILABLE_MODE][4];
uint64_t availableDepthMinFrameDurations[CAMERA2_MAX_AVAILABLE_MODE][4];
uint64_t availableDepthStallDurations[CAMERA2_MAX_AVAILABLE_MODE][4];
enum depth_depth_is_exclusive depthIsExclusive;
};
/* android.sync */
enum sync_frame_number {
SYNC_FRAME_NUMBER_CONVERGING = -1,
SYNC_FRAME_NUMBER_UNKNOWN = -2,
};
enum sync_max_latency {
SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0,
SYNC_MAX_LATENCY_UNKNOWN = -1,
};
struct camera2_sync_ctl {
int64_t frameNumber;
};
struct camera2_sync_dm {
int32_t maxLatency;
};
struct camera2_lens_usm {
uint32_t focusDistanceFrameDelay;
};
struct camera2_sensor_usm {
uint32_t exposureTimeFrameDelay;
uint32_t frameDurationFrameDelay;
uint32_t sensitivityFrameDelay;
};
struct camera2_flash_usm {
uint32_t flashModeFrameDelay;
uint32_t firingPowerFrameDelay;
uint64_t firingTimeFrameDelay;
};
struct camera2_ctl {
struct camera2_colorcorrection_ctl color;
struct camera2_aa_ctl aa;
struct camera2_demosaic_ctl demosaic;
struct camera2_edge_ctl edge;
struct camera2_flash_ctl flash;
struct camera2_hotpixel_ctl hotpixel;
struct camera2_jpeg_ctl jpeg;
struct camera2_lens_ctl lens;
struct camera2_noisereduction_ctl noise;
struct camera2_request_ctl request;
struct camera2_scaler_ctl scaler;
struct camera2_sensor_ctl sensor;
struct camera2_shading_ctl shading;
struct camera2_stats_ctl stats;
struct camera2_tonemap_ctl tonemap;
struct camera2_led_ctl led;
struct camera2_blacklevel_ctl blacklevel;
struct camera2_sync_ctl sync;
struct camera2_reprocess_ctl reprocess;
/* vendor feature */
struct camera2_entry_ctl vendor_entry;
};
struct camera2_dm {
struct camera2_colorcorrection_dm color;
struct camera2_aa_dm aa;
struct camera2_demosaic_dm demosaic;
struct camera2_edge_dm edge;
struct camera2_flash_dm flash;
struct camera2_hotpixel_dm hotpixel;
struct camera2_jpeg_dm jpeg;
struct camera2_lens_dm lens;
struct camera2_noisereduction_dm noise;
struct camera2_request_dm request;
struct camera2_scaler_dm scaler;
struct camera2_sensor_dm sensor;
struct camera2_shading_dm shading;
struct camera2_stats_dm stats;
struct camera2_tonemap_dm tonemap;
struct camera2_led_dm led;
struct camera2_blacklevel_dm blacklevel;
struct camera2_sync_dm sync;
struct camera2_reprocess_dm reprocess;
/* vendor feature */
struct camera2_entry_dm vendor_entry;
};
struct camera2_sm {
struct camera2_colorcorrection_sm color;
struct camera2_aa_sm aa;
struct camera2_edge_sm edge;
struct camera2_flash_sm flash;
struct camera2_hotpixel_sm hotpixel;
struct camera2_jpeg_sm jpeg;
struct camera2_lens_sm lens;
struct camera2_noisereduction_sm noise;
struct camera2_request_sm request;
struct camera2_scaler_sm scaler;
struct camera2_sensor_sm sensor;
struct camera2_shading_sm shading;
struct camera2_stats_sm stats;
struct camera2_tonemap_sm tonemap;
struct camera2_led_sm led;
struct camera2_info_sm info;
struct camera2_reprocess_sm reprocess;
struct camera2_depth_sm depth;
/** User-defined(ispfw specific) static metadata. */
struct camera2_lens_usm lensUd;
struct camera2_sensor_usm sensorUd;
struct camera2_flash_usm flashUd;
};
struct camera2_obj_af_info {
int32_t focusState;
int32_t focusROILeft;
int32_t focusROIRight;
int32_t focusROITop;
int32_t focusROIBottom;
int32_t focusWeight;
int32_t w_movement;
int32_t h_movement;
int32_t w_velocity;
int32_t h_velocity;
};
struct camera2_hrm_sensor_info {
uint32_t visible_data;
uint32_t ir_data;
uint32_t flicker_data; // 0: No flicker detect, 100: 50Hz, 120: 60Hz
int32_t status;
};
struct camera2_illuminaion_sensor_info {
uint16_t visible_cdata;
uint16_t visible_rdata;
uint16_t visible_gdata;
uint16_t visible_bdata;
uint16_t visible_gain;
uint16_t visible_exptime;
uint16_t ir_north;
uint16_t ir_south;
uint16_t ir_east;
uint16_t ir_west;
uint16_t ir_gain;
uint16_t ir_exptime;
};
struct camera2_gyro_sensor_info {
float x;
float y;
float z;
};
struct camera2_accelerometer_sensor_info {
float x;
float y;
float z;
};
struct camera2_aa_uctl {
struct camera2_obj_af_info af_data;
struct camera2_hrm_sensor_info hrmInfo;
struct camera2_illuminaion_sensor_info illuminationInfo;
struct camera2_gyro_sensor_info gyroInfo;
struct camera2_accelerometer_sensor_info accInfo;
};
struct camera2_aa_udm {
struct camera2_obj_af_info af_data;
struct camera2_hrm_sensor_info hrmInfo;
struct camera2_illuminaion_sensor_info illuminationInfo;
struct camera2_gyro_sensor_info gyroInfo;
struct camera2_accelerometer_sensor_info accInfo;
};
struct camera2_lens_uctl {
uint32_t pos;
uint32_t posSize;
uint32_t direction;
uint32_t slewRate;
uint32_t oisCoefVal;
};
struct camera2_lens_udm {
uint32_t pos;
uint32_t posSize;
uint32_t direction;
uint32_t slewRate;
uint32_t oisCoefVal;
};
struct camera2_ae_udm {
uint32_t vsLength;
uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
uint32_t vs2Length;
uint32_t vendorSpecific2[CAMERA2_MAX_UDM_VENDOR2_LENGTH];
};
struct camera2_awb_udm {
uint32_t vsLength;
uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
uint32_t vs2Length;
uint32_t vendorSpecific2[CAMERA2_MAX_UDM_VENDOR2_LENGTH];
};
struct camera2_af_uctl {
uint32_t vs2Length;
uint32_t vendorSpecific2[CAMERA2_MAX_UCTL_VENDOR2_LENGTH];
};
struct camera2_af_udm {
uint32_t vsLength;
uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
int32_t lensPositionInfinity;
int32_t lensPositionMacro;
int32_t lensPositionCurrent;
uint32_t vs2Length;
uint32_t vendorSpecific2[CAMERA2_MAX_UDM_VENDOR2_LENGTH];
};
struct camera2_as_udm {
uint32_t vsLength;
uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
};
struct camera2_ipc_udm {
uint32_t vsLength;
#ifdef CAMERA_REAR2
uint32_t vendorSpecific[CAMERA2_MAX_IPC_VENDER_LENGTH];
#else
uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
#endif
};
/** \brief
User-defined metadata for rta debug info.
*/
struct camera2_rta_udm {
uint32_t vsLength;
uint32_t vendorSpecific[100];
};
struct camera2_internal_udm {
uint32_t ProcessedFrameInfo;
uint32_t vendorSpecific1[CAMERA2_MAX_VENDER_LENGTH];
uint32_t vendorSpecific2[CAMERA2_MAX_VENDER_LENGTH];
/*
vendorSpecific2[0] : 3aaIspSircSdk
vendorSpedific2[1] : IspTpuSirdSdk
vendorSpecific2[100] : exposure
vendorSpecific2[101] : iso(gain)
vendorSpecific2[102] : Bv
vendorSpecific2[103] : Tv
*/
};
struct camera2_sensor_uctl {
uint64_t dynamicFrameDuration;
uint32_t analogGain;
uint32_t digitalGain;
uint64_t longExposureTime;
uint64_t shortExposureTime;
uint32_t longAnalogGain;
uint32_t shortAnalogGain;
uint32_t longDigitalGain;
uint32_t shortDigitalGain;
uint64_t exposureTime;
uint32_t frameDuration;
uint32_t sensitivity;
uint32_t CtrlFrameDuration;
};
struct camera2_sensor_udm {
uint64_t dynamicFrameDuration;
uint32_t analogGain;
uint32_t digitalGain;
uint64_t longExposureTime;
uint64_t shortExposureTime;
uint32_t longAnalogGain;
uint32_t shortAnalogGain;
uint32_t longDigitalGain;
uint32_t shortDigitalGain;
uint64_t timeStampBoot;
};
enum mcsc_port {
MCSC_PORT_NONE = -1,
MCSC_PORT_0,
MCSC_PORT_1,
MCSC_PORT_2,
MCSC_PORT_3,
MCSC_PORT_4,
MCSC_PORT_MAX,
};
enum mcsc_interface_type {
INTERFACE_TYPE_YSUM = 0,
INTERFACE_TYPE_DS,
INTERFACE_TYPE_MAX,
};
#ifdef EXYNOS7885
struct ysum_data {
uint32_t lower_ysum_value;
uint32_t higher_ysum_value;
};
#endif
struct camera2_scaler_uctl {
uint32_t sourceAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t txcTargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t txpTargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t ixcTargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t ixpTargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t sccTargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t scpTargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t sc0TargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t sc1TargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t sc2TargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t sc3TargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t sc4TargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
#ifdef EXYNOS7885
// To add buffer address because of MCSC DS for LT (VRA input)
uint32_t sc5TargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES]; /* MCSC DS output */
#endif
uint32_t dxcTargetAddress[EXYNOS_CAMERA_BUFFER_MAX_PLANES];
uint32_t orientation;
#ifdef EXYNOS7885
enum mcsc_port mcsc_sub_blk_port[INTERFACE_TYPE_MAX];
#endif
};
#ifdef EXYNOS7885
struct camera2_scaler_udm {
struct ysum_data ysumdata;
};
#endif
struct camera2_flash_uctl {
uint32_t firingPower;
uint64_t firingTime;
enum flash_mode flashMode;
};
struct camera2_flash_udm {
uint32_t firingPower;
uint64_t firingTime;
enum flash_mode flashMode;
};
enum companion_drc_mode {
COMPANION_DRC_OFF = 1,
COMPANION_DRC_ON,
};
enum companion_wdr_mode {
COMPANION_WDR_OFF = 1,
COMPANION_WDR_ON = 2,
COMPANION_WDR_AUTO = 3,
COMPANION_WDR_AUTO_LIKE = 4,
TOTALCOUNT_COMPANION_WDR,
COMPANION_WDR_UNKNOWN,
};
enum companion_paf_mode {
COMPANION_PAF_OFF = 1,
COMPANION_PAF_ON,
};
enum companion_caf_mode {
COMPANION_CAF_OFF = 1,
COMPANION_CAF_ON,
};
enum companion_bypass_mode {
COMPANION_FULL_BYPASS_OFF = 1,
COMPANION_FULL_BYPASS_ON,
};
enum companion_lsc_mode {
COMPANION_LSC_OFF = 1,
COMPANION_LSC_ON,
};
enum companion_bpc_mode {
COMPANION_BPC_OFF = 1,
COMPANION_BPC_ON,
};
enum companion_disparity_mode {
COMPANION_DISPARITY_OFF = 1,
COMPANION_DISPARITY_SAD,
COMPANION_DISPARITY_CENSUS_MEAN,
COMPANION_DISPARITY_CENSUS_CENTER // Disparity mode default
};
enum camera_flash_mode {
CAMERA_FLASH_MODE_OFF = 0,
CAMERA_FLASH_MODE_AUTO,
CAMERA_FLASH_MODE_ON,
CAMERA_FLASH_MODE_RED_EYE,
CAMERA_FLASH_MODE_TORCH
};
enum camera_op_mode {
CAMERA_OP_MODE_GED = 0, // default
CAMERA_OP_MODE_TW,
CAMERA_OP_MODE_HAL3_GED,
CAMERA_OP_MODE_HAL3_TW,
CAMERA_OP_MODE_FAC,
CAMERA_OP_MODE_HAL3_FAC,
};
struct camera2_companion_uctl {
enum companion_drc_mode drc_mode;
enum companion_wdr_mode wdr_mode;
enum companion_paf_mode paf_mode;
enum companion_caf_mode caf_mode;
enum companion_lsc_mode lsc_mode;
enum companion_bpc_mode bpc_mode;
enum companion_bypass_mode bypass_mode;
enum companion_disparity_mode disparity_mode;
};
struct camera2_pdaf_single_result {
uint16_t mode;
uint16_t goalPos;
uint16_t reliability;
uint16_t currentPos;
};
struct camera2_pdaf_multi_result {
uint16_t mode;
uint16_t goalPos;
uint16_t reliability;
uint16_t focused;
};
struct camera2_pdaf_udm {
uint16_t numCol;
uint16_t numRow;
struct camera2_pdaf_multi_result multiResult[CAMERA2_MAX_PDAF_MULTIROI_ROW][CAMERA2_MAX_PDAF_MULTIROI_COLUMN];
struct camera2_pdaf_single_result singleResult;
uint16_t lensPosResolution;
};
struct camera2_companion_udm {
enum companion_drc_mode drc_mode;
enum companion_wdr_mode wdr_mode;
enum companion_paf_mode paf_mode;
enum companion_caf_mode caf_mode;
enum companion_lsc_mode lsc_mode;
enum companion_bpc_mode bpc_mode;
enum companion_bypass_mode bypass_mode;
struct camera2_pdaf_udm pdaf;
enum companion_disparity_mode disparity_mode;
};
struct camera2_fd_uctl {
enum facedetect_mode faceDetectMode;
uint32_t faceIds[CAMERA2_MAX_FACES];
uint32_t faceLandmarks[CAMERA2_MAX_FACES][6];
uint32_t faceRectangles[CAMERA2_MAX_FACES][4];
uint8_t faceScores[CAMERA2_MAX_FACES];
uint32_t faces[CAMERA2_MAX_FACES];
uint32_t vendorSpecific[CAMERA2_MAX_UCTL_VENDER_LENGTH];
/* ---------------------------------------------------------
vendorSpecific[0] = fdMapAddress[0];
vendorSpecific[1] = fdMapAddress[1];
vendorSpecific[2] = fdMapAddress[2];
vendorSpecific[4] = fdMapAddress[4];
vendorSpecific[5] = fdMapAddress[5];
vendorSpecific[6] = fdMapAddress[6];
vendorSpecific[7] = fdMapAddress[7];
vendorSpecific[8] = fdYMapAddress;
vendorSpecific[9] = fdCoefK;
vendorSpecific[10] = fdUp;
vendorSpecific[11] = fdShift;
vendorSpecific[12] ~ vendorSpecific[31] : reserved
---------------------------------------------------------
*/
};
struct camera2_fd_udm {
uint32_t vendorSpecific[CAMERA2_MAX_UCTL_VENDER_LENGTH];
/* ---------------------------------------------------------
vendorSpecific[0] = fdSat;
vendorSpecific[1] ~ vendorSpecific[31] : reserved
---------------------------------------------------------
*/
};
#ifdef EXYNOS7885
struct camera2_ni_udm {
uint32_t currentFrameNoiseIndex; /* Noise Index for N */
uint32_t nextFrameNoiseIndex; /* Noise Index for N+1 */
uint32_t nextNextFrameNoiseIndex; /* Noise Index for N+2 */
};
#endif
enum camera2_drc_mode {
DRC_OFF = 1,
DRC_ON,
};
struct camera2_drc_uctl {
enum camera2_drc_mode uDrcEn;
};
enum camera2_scene_index {
SCENE_INDEX_INVALID = 0,
SCENE_INDEX_FOOD = 1,
SCENE_INDEX_TEXT = 2,
SCENE_INDEX_PERSON = 3,
SCENE_INDEX_FLOWER = 4,
SCENE_INDEX_TREE = 5,
SCENE_INDEX_MOUNTAIN = 6,
SCENE_INDEX_MOUNTAIN_GREEN = 7,
SCENE_INDEX_MOUNTAIN_FALL = 8,
SCENE_INDEX_ANIMAL = 9,
SCENE_INDEX_SUNSET_SUNRISE = 10,
SCENE_INDEX_BEACH = 11,
SCENE_INDEX_SKY = 12,
SCENE_INDEX_SNOW = 13,
SCENE_INDEX_NIGHTVIEW = 14,
SCENE_INDEX_WATERFALL = 15,
SCENE_INDEX_BIRD = 16,
SCENE_INDEX_CITYSTREET = 17,
SCENE_INDEX_HOMEINDOOR = 18,
SCENE_INDEX_WATERSIDE = 19,
SCENE_INDEX_SCENERY = 20,
SCENE_INDEX_GREENERY = 21,
SCENE_INDEX_DAY_HDR = 10000, // The enums which are same as or more than 1000 are set by AE result
SCENE_INDEX_NIGHT_HDR = 10001,
SCENE_INDEX_MOTION_BLUR_REMOVAL = 10002
};
struct camera2_scene_detect_uctl
{
uint64_t timeStamp;
enum camera2_scene_index scene_index;
uint32_t confidence_score;
uint32_t object_roi[4]; /* left, top, right, bottom */
};
enum camera_vt_mode {
VT_MODE_OFF = 0,
VT_MODE_1,
VT_MODE_2,
VT_MODE_3,
VT_MODE_4,
};
enum camera2_is_hw_lls_mode {
CAMERA_HW_LLS_OFF = 0,
CAMERA_HW_LLS_ON,
};
enum camera2_is_hw_lls_progress {
CAMERA_HW_LLS_FIRST_FRAME = 0,
CAMERA_HW_LLS_SECOND_FRAME,
CAMERA_HW_LLS_INTERMEDIATE_FRAME,
CAMERA_HW_LLS_LAST_FRAME,
};
struct camera2_is_hw_lls_uctl {
enum camera2_is_hw_lls_mode hwLlsMode;
enum camera2_is_hw_lls_progress hwLlsProgress;
};
struct camera2_uctl {
uint32_t uUpdateBitMap;
uint32_t uFrameNumber;
struct camera2_aa_uctl aaUd;
struct camera2_af_uctl af;
struct camera2_lens_uctl lensUd;
struct camera2_sensor_uctl sensorUd;
struct camera2_flash_uctl flashUd;
struct camera2_scaler_uctl scalerUd;
struct camera2_companion_uctl companionUd;
struct camera2_fd_uctl fdUd;
struct camera2_drc_uctl drcUd;
struct camera2_scene_detect_uctl sceneDetectInfoUd;
enum camera_vt_mode vtMode;
float zoomRatio;
enum camera_flash_mode flashMode;
enum camera_op_mode opMode;
struct camera2_is_hw_lls_uctl hwlls_mode;
uint32_t statsRoi[4];
enum aa_cameratype masterCam;
uint8_t countryCode[4];
};
struct camera2_udm {
struct camera2_aa_udm aa;
struct camera2_lens_udm lens;
struct camera2_sensor_udm sensor;
struct camera2_flash_udm flash;
struct camera2_ae_udm ae;
struct camera2_awb_udm awb;
struct camera2_af_udm af;
struct camera2_as_udm as;
struct camera2_ipc_udm ipc;
struct camera2_rta_udm rta;
struct camera2_internal_udm internal;
#ifdef EXYNOS7885
struct camera2_scaler_udm scaler;
#endif
struct camera2_companion_udm companion;
struct camera2_fd_udm fd;
enum camera_vt_mode vtMode;
float zoomRatio;
enum camera_flash_mode flashMode;
enum camera_op_mode opMode;
#ifdef EXYNOS7885
struct camera2_ni_udm ni;
uint32_t reserved[3];
#else
uint32_t reserved[8];
#endif
};
struct camera2_shot {
struct camera2_ctl ctl;
struct camera2_dm dm;
struct camera2_uctl uctl;
struct camera2_udm udm;
uint32_t magicNumber;
};
struct camera2_node_input {
uint32_t cropRegion[4];
};
struct camera2_node_output {
uint32_t cropRegion[4];
};
struct camera2_node {
uint32_t vid;
uint32_t request;
struct camera2_node_input input;
struct camera2_node_output output;
#ifdef EXYNOS7885
uint32_t pixelformat;
#endif
};
struct camera2_node_group {
struct camera2_node leader;
struct camera2_node capture[CAPTURE_NODE_MAX];
};
struct camera2_shot_ext {
uint32_t setfile;
struct camera2_node_group node_group;
uint32_t drc_bypass;
uint32_t dis_bypass;
uint32_t dnr_bypass;
uint32_t fd_bypass;
uint32_t free_cnt;
uint32_t request_cnt;
uint32_t process_cnt;
uint32_t complete_cnt;
uint32_t invalid;
uint32_t reserved[14];
uint32_t timeZone[10][2];
struct camera2_shot shot;
};
struct camera2_stream {
uint32_t address;
uint32_t fcount;
uint32_t rcount;
uint32_t findex;
uint32_t fvalid;
uint32_t input_crop_region[4];
uint32_t output_crop_region[4];
};
#define CAM_LENS_CMD (0x1 << 0x0)
#define CAM_SENSOR_CMD (0x1 << 0x1)
#define CAM_FLASH_CMD (0x1 << 0x2)
enum camera_pixel_size {
CAMERA_PIXEL_SIZE_8BIT = 0,
CAMERA_PIXEL_SIZE_10BIT,
CAMERA_PIXEL_SIZE_PACKED_10BIT,
CAMERA_PIXEL_SIZE_8_2BIT,
};
/* typedefs below are for firmware sources */
typedef enum metadata_mode metadata_mode_t;
typedef struct camera2_request_ctl camera2_request_ctl_t;
typedef struct camera2_request_dm camera2_request_dm_t;
typedef enum optical_stabilization_mode optical_stabilization_mode_t;
typedef enum lens_facing lens_facing_t;
typedef struct camera2_entry_ctl camera2_entry_ctl_t;
typedef struct camera2_entry_dm camera2_entry_dm_t;
typedef struct camera2_lens_ctl camera2_lens_ctl_t;
typedef struct camera2_lens_dm camera2_lens_dm_t;
typedef struct camera2_lens_sm camera2_lens_sm_t;
typedef enum sensor_colorfilterarrangement sensor_colorfilterarrangement_t;
typedef enum sensor_lensshading_applied sensor_lensshading_applied_t;
typedef enum sensor_ref_illuminant sensor_ref_illuminant_t;
typedef struct camera2_sensor_ctl camera2_sensor_ctl_t;
typedef struct camera2_sensor_dm camera2_sensor_dm_t;
typedef struct camera2_sensor_sm camera2_sensor_sm_t;
typedef enum flash_mode flash_mode_t;
typedef struct camera2_flash_ctl camera2_flash_ctl_t;
typedef struct camera2_flash_dm camera2_flash_dm_t;
typedef struct camera2_flash_sm camera2_flash_sm_t;
typedef enum processing_mode processing_mode_t;
typedef struct camera2_hotpixel_ctl camera2_hotpixel_ctl_t;
typedef struct camera2_hotpixel_dm camera2_hotpixel_dm_t;
typedef struct camera2_hotpixel_sm camera2_hotpixel_sm_t;
typedef struct camera2_demosaic_ctl camera2_demosaic_ctl_t;
typedef struct camera2_demosaic_dm camera2_demosaic_dm_t;
typedef struct camera2_noisereduction_ctl camera2_noisereduction_ctl_t;
typedef struct camera2_noisereduction_dm camera2_noisereduction_dm_t;
typedef struct camera2_noisereduction_sm camera2_noisereduction_sm_t;
typedef struct camera2_shading_ctl camera2_shading_ctl_t;
typedef struct camera2_shading_dm camera2_shading_dm_t;
typedef enum colorcorrection_mode colorcorrection_mode_t;
typedef struct camera2_colorcorrection_ctl camera2_colorcorrection_ctl_t;
typedef struct camera2_colorcorrection_dm camera2_colorcorrection_dm_t;
typedef struct camera2_colorcorrection_sm camera2_colorcorrection_sm_t;
typedef enum tonemap_mode tonemap_mode_t;
typedef enum tonemap_presetCurve tonemap_presetCurve_t;
typedef struct camera2_tonemap_ctl camera2_tonemap_ctl_t;
typedef struct camera2_tonemap_dm camera2_tonemap_dm_t;
typedef struct camera2_tonemap_sm camera2_tonemap_sm_t;
typedef struct camera2_edge_ctl camera2_edge_ctl_t;
typedef struct camera2_edge_dm camera2_edge_dm_t;
typedef struct camera2_edge_sm camera2_edge_sm_t;
typedef struct camera2_scaler_ctl camera2_scaler_ctl_t;
typedef struct camera2_scaler_dm camera2_scaler_dm_t;
typedef struct camera2_jpeg_ctl camera2_jpeg_ctl_t;
typedef struct camera2_jpeg_dm camera2_jpeg_dm_t;
typedef struct camera2_jpeg_sm camera2_jpeg_sm_t;
typedef enum facedetect_mode facedetect_mode_t;
typedef enum stats_mode stats_mode_t;
typedef struct camera2_stats_ctl camera2_stats_ctl_t;
typedef struct camera2_stats_dm camera2_stats_dm_t;
typedef struct camera2_stats_sm camera2_stats_sm_t;
typedef enum aa_capture_intent aa_capture_intent_t;
typedef enum aa_mode aa_mode_t;
typedef enum aa_scene_mode aa_scene_mode_t;
typedef enum aa_effect_mode aa_effect_mode_t;
typedef enum aa_aemode aa_aemode_t;
typedef enum aa_ae_antibanding_mode aa_ae_antibanding_mode_t;
typedef enum aa_awbmode aa_awbmode_t;
typedef enum aa_afmode aa_afmode_t;
typedef enum aa_afstate aa_afstate_t;
typedef enum aa_ae_lockavailable aa_ae_lockavailable_t;
typedef enum aa_awb_lockavailable aa_awb_lockavailable_t;
typedef enum aa_available_mode aa_available_mode_t;
typedef struct camera2_aa_ctl camera2_aa_ctl_t;
typedef struct camera2_aa_dm camera2_aa_dm_t;
typedef struct camera2_aa_sm camera2_aa_sm_t;
typedef struct camera2_lens_usm camera2_lens_usm_t;
typedef struct camera2_sensor_usm camera2_sensor_usm_t;
typedef struct camera2_flash_usm camera2_flash_usm_t;
typedef struct camera2_ctl camera2_ctl_t;
typedef struct camera2_uctl camera2_uctl_t;
typedef struct camera2_dm camera2_dm_t;
typedef struct camera2_sm camera2_sm_t;
typedef struct camera2_reprocess_ctl camera2_reprocess_ctl_t;
typedef struct camera2_reprocess_dm camera2_reprocess_dm_t;
typedef struct camera2_reprocess_sm camera2_reprocess_sm_t;
typedef enum depth_available_depth_stream_config depth_available_depth_stream_config_t;
typedef enum depth_depth_is_exclusive depth_depth_is_exclusive_t;
typedef struct camera2_depth_sm camera2_depth_ctl_t;
typedef struct camera2_scaler_sm camera2_scaler_sm_t;
typedef struct camera2_scaler_uctl camera2_scaler_uctl_t;
typedef struct camera2_fd_uctl camera2_fd_uctl_t;
typedef struct camera2_fd_udm camera2_fd_udm_t;
typedef struct camera2_sensor_uctl camera2_sensor_uctl_t;
typedef struct camera2_aa_uctl camera2_aa_uctl_t;
typedef struct camera2_aa_udm camera2_aa_udm_t;
typedef struct camera2_lens_uctl camera2_lens_uctl_t;
typedef struct camera2_lens_udm camera2_lens_udm_t;
typedef struct camera2_ae_udm camera2_ae_udm_t;
typedef struct camera2_awb_udm camera2_awb_udm_t;
typedef struct camera2_af_udm camera2_af_udm_t;
typedef struct camera2_as_udm camera2_as_udm_t;
typedef struct camera2_ipc_udm camera2_ipc_udm_t;
typedef struct camera2_udm camera2_udm_t;
typedef struct camera2_rta_udm camera2_rta_udm_t;
typedef struct camera2_internal_udm camera2_internal_udm_t;
typedef struct camera2_flash_uctl camera2_flash_uctl_t;
typedef struct camera2_is_mode_udm camera2_is_mode_udm_t;
typedef struct camera2_companion_udm camera2_companion_udm_t;
typedef struct camera2_shot camera2_shot_t;
typedef struct camera2_ni_udm camera2_ni_udm_t;
typedef struct camera2_drc_udm camera2_drc_udm_t;
typedef struct camera2_rgbGamma_udm camera2_rgbGamma_udm_t;
typedef struct camera2_ccm_udm camera2_ccm_udm_t;
typedef struct camera2_me_udm camera2_me_udm_t;
#endif