1db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* 2db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * Samsung Exynos5 SoC series Camera API 2.0 HAL 3db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * 4db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * Internal Metadata (controls/dynamic metadata and static metadata) 5db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * 6db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * Copyright (c) 2012 Samsung Electronics Co., Ltd 7db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * Contact: Sungjoong Kang, <sj3.kang@samsung.com> 8db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * 9db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * This program is free software; you can redistribute it and/or modify 10db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * it under the terms of the GNU General Public License version 2 as 11db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann * published by the Free Software Foundation. 12db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 13db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 14db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/*2012.04.18 Version 0.1 Initial Release*/ 15db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/*2012.04.23 Version 0.2 Added static metadata (draft)*/ 16db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/*2012.07.04 Version 0.3 Applied google's undocumented changes (draft)*/ 17db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/*2012.07.11 Version 0.4 Added FD parameters */ 18db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/*2012.07.27 Version 0.5 Modified HSB control and DM */ 19db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 20db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 21db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#ifndef FIMC_IS_METADATA_H_ 22db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#define FIMC_IS_METADATA_H_ 23db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 24db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct rational { 25db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t num; 26db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t den; 27db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 28db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 29db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#define CAMERA2_MAX_AVAILABLE_MODE 21 30db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#define CAMERA2_MAX_FACES 16 31db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 32db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#define CAMERA2_FACE_DETECTION_THRESHOLD 35 33db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 34db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* 35db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann *controls/dynamic metadata 36db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann*/ 37db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 38db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.request */ 39db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 40db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum metadata_mode { 41db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann METADATA_MODE_NONE, 42db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann METADATA_MODE_FULL 43db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 44db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 45db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_request_ctl { 46db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t id; 47db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum metadata_mode metadataMode; 48db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t outputStreams[16]; 49db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t frameCount; 50db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 51db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 52db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_request_dm { 53db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t id; 54db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum metadata_mode metadataMode; 55db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t frameCount; 56db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 57db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 58db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 59db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 60db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.lens */ 61db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 62db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum optical_stabilization_mode { 63db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann OPTICAL_STABILIZATION_MODE_OFF, 64db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann OPTICAL_STABILIZATION_MODE_ON 65db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 66db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 67db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum lens_facing { 68db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann LENS_FACING_BACK, 69db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann LENS_FACING_FRONT 70db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 71db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 72db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_lens_ctl { 73db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t focusDistance; 74db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float aperture; 75db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float focalLength; 76db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float filterDensity; 77db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum optical_stabilization_mode opticalStabilizationMode; 78db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 79db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 80db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 81db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_lens_dm { 82db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t focusDistance; 83db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float aperture; 84db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float focalLength; 85db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float filterDensity; 86db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum optical_stabilization_mode opticalStabilizationMode; 87db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float focusRange[2]; 88db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 89db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 90db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_lens_sm { 91db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float minimumFocusDistance; 92db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float hyperfocalDistance; 93db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float availableFocalLength[2]; 94db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float availableApertures; 95db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming 1 aperture*/ 96db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float availableFilterDensities; 97db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming 1 ND filter value*/ 98db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum optical_stabilization_mode availableOpticalStabilization; 99db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming 1*/ 100db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t shadingMapSize; 101db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float shadingMap[3][40][30]; 102db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t geometricCorrectionMapSize; 103db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float geometricCorrectionMap[2][3][40][30]; 104db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum lens_facing facing; 105db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float position[2]; 106db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 107db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 108db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.sensor */ 109db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 110db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum sensor_colorfilterarrangement { 111db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_COLORFILTERARRANGEMENT_RGGB, 112db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_COLORFILTERARRANGEMENT_GRBG, 113db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_COLORFILTERARRANGEMENT_GBRG, 114db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_COLORFILTERARRANGEMENT_BGGR, 115db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_COLORFILTERARRANGEMENT_RGB 116db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 117db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 118db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum sensor_ref_illuminant { 119db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_DAYLIGHT = 1, 120db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_FLUORESCENT = 2, 121db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_TUNGSTEN = 3, 122db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_FLASH = 4, 123db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_FINE_WEATHER = 9, 124db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_CLOUDY_WEATHER = 10, 125db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_SHADE = 11, 126db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_DAYLIGHT_FLUORESCENT = 12, 127db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_DAY_WHITE_FLUORESCENT = 13, 128db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_COOL_WHITE_FLUORESCENT = 14, 129db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_WHITE_FLUORESCENT = 15, 130db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_STANDARD_A = 17, 131db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_STANDARD_B = 18, 132db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_STANDARD_C = 19, 133db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_D55 = 20, 134db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_D65 = 21, 135db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_D75 = 22, 136db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_D50 = 23, 137db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SENSOR_ILLUMINANT_ISO_STUDIO_TUNGSTEN = 24 138db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 139db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 140db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_sensor_ctl { 141db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /* unit : nano */ 142db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t exposureTime; 143db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /* unit : nano(It's min frame duration */ 144db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t frameDuration; 145db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /* unit : percent(need to change ISO value?) */ 146db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t sensitivity; 147db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 148db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 149db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_sensor_dm { 150db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t exposureTime; 151db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t frameDuration; 152db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t sensitivity; 153db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t timeStamp; 154db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 155db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 156db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_sensor_sm { 157db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t exposureTimeRange[2]; 158db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxFrameDuration; 159db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /* list of available sensitivities. */ 160db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t availableSensitivities[10]; 161db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum sensor_colorfilterarrangement colorFilterArrangement; 162db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float physicalSize[2]; 163db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t pixelArraySize[2]; 164db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t activeArraySize[4]; 165db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t whiteLevel; 166db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t blackLevelPattern[4]; 167db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct rational colorTransform1[9]; 168db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct rational colorTransform2[9]; 169db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum sensor_ref_illuminant referenceIlluminant1; 170db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum sensor_ref_illuminant referenceIlluminant2; 171db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct rational forwardMatrix1[9]; 172db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct rational forwardMatrix2[9]; 173db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct rational calibrationTransform1[9]; 174db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct rational calibrationTransform2[9]; 175db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct rational baseGainFactor; 176db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxAnalogSensitivity; 177db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float noiseModelCoefficients[2]; 178db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t orientation; 179db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 180db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 181db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 182db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 183db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.flash */ 184db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 185db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum flash_mode { 186db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann CAM2_FLASH_MODE_NOP = 0, 187db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann CAM2_FLASH_MODE_OFF = 1, 188db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann CAM2_FLASH_MODE_SINGLE, 189db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann CAM2_FLASH_MODE_TORCH, 190db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann CAM2_FLASH_MODE_BEST 191db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 192db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 193db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_flash_ctl { 194db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum flash_mode flashMode; 195db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t firingPower; 196db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t firingTime; 197db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 198db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 199db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_flash_dm { 200db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum flash_mode flashMode; 201db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*10 is max power*/ 202db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t firingPower; 203db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*unit : microseconds*/ 204db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t firingTime; 205db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*1 : stable, 0 : unstable*/ 206db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t firingStable; 207db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*1 : flash required, 2 : flash not required */ 208db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t decision; 209db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 210db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 211db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_flash_sm { 212db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t available; 213db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t chargeDuration; 214db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 215db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 216db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 217db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.hotpixel */ 218db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 219db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum processing_mode { 220db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann PROCESSING_MODE_OFF = 1, 221db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann PROCESSING_MODE_FAST, 222db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann PROCESSING_MODE_HIGH_QUALITY 223db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 224db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 225db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 226db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_hotpixel_ctl { 227db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 228db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 229db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 230db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_hotpixel_dm { 231db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 232db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 233db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 234db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 235db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 236db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.demosaic */ 237db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 238db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_demosaic_ctl { 239db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 240db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 241db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 242db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_demosaic_dm { 243db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 244db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 245db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 246db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 247db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 248db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.noiseReduction */ 249db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 250db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_noisereduction_ctl { 251db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 252db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t strength; 253db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 254db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 255db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_noisereduction_dm { 256db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 257db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t strength; 258db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 259db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 260db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 261db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 262db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.shading */ 263db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 264db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_shading_ctl { 265db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 266db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 267db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 268db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_shading_dm { 269db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 270db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 271db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 272db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 273db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 274db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.geometric */ 275db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 276db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_geometric_ctl { 277db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 278db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 279db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 280db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_geometric_dm { 281db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 282db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 283db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 284db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 285db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 286db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.colorCorrection */ 287db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 288db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum colorcorrection_mode { 289db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_FAST = 1, 290db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_HIGH_QUALITY, 291db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_TRANSFORM_MATRIX, 292db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_EFFECT_MONO, 293db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_EFFECT_NEGATIVE, 294db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_EFFECT_SOLARIZE, 295db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_EFFECT_SEPIA, 296db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_EFFECT_POSTERIZE, 297db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_EFFECT_WHITEBOARD, 298db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_EFFECT_BLACKBOARD, 299db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann COLORCORRECTION_MODE_EFFECT_AQUA 300db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 301db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 302db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 303db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_colorcorrection_ctl { 304db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum colorcorrection_mode mode; 305db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float transform[9]; 306db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t hue; 307db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t saturation; 308db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t brightness; 309db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 310db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 311db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_colorcorrection_dm { 312db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum colorcorrection_mode mode; 313db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float transform[9]; 314db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t hue; 315db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t saturation; 316db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t brightness; 317db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 318db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 319db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_colorcorrection_sm { 320db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming 10 supported modes*/ 321db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t availableModes[CAMERA2_MAX_AVAILABLE_MODE]; 322db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t hueRange[2]; 323db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t saturationRange[2]; 324db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t brightnessRange[2]; 325db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 326db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 327db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 328db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.tonemap */ 329db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 330db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum tonemap_mode { 331db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann TONEMAP_MODE_FAST = 1, 332db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann TONEMAP_MODE_HIGH_QUALITY, 333db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann TONEMAP_MODE_CONTRAST_CURVE 334db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 335db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 336db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_tonemap_ctl { 337db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum tonemap_mode mode; 338db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /* assuming maxCurvePoints = 64 */ 339db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float curveRed[64]; 340db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float curveGreen[64]; 341db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float curveBlue[64]; 342db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 343db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 344db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_tonemap_dm { 345db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum tonemap_mode mode; 346db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /* assuming maxCurvePoints = 64 */ 347db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float curveRed[64]; 348db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float curveGreen[64]; 349db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann float curveBlue[64]; 350db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 351db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 352db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_tonemap_sm { 353db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxCurvePoints; 354db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 355db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 356db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.edge */ 357db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 358db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_edge_ctl { 359db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 360db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t strength; 361db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 362db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 363db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_edge_dm { 364db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum processing_mode mode; 365db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t strength; 366db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 367db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 368db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 369db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 370db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.scaler */ 371db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 372db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum scaler_availableformats { 373db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SCALER_FORMAT_BAYER_RAW, 374db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SCALER_FORMAT_YV12, 375db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SCALER_FORMAT_NV21, 376db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SCALER_FORMAT_JPEG, 377db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann SCALER_FORMAT_UNKNOWN 378db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 379db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 380db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_scaler_ctl { 381db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t cropRegion[3]; 382db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 383db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 384db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_scaler_dm { 385db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t cropRegion[3]; 386db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 387db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 388db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_scaler_sm { 389db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum scaler_availableformats availableFormats[4]; 390db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming # of availableFormats = 4*/ 391db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t availableRawSizes; 392db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t availableRawMinDurations; 393db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /* needs check */ 394db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t availableProcessedSizes[8]; 395db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t availableProcessedMinDurations[8]; 396db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t availableJpegSizes[8][2]; 397db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t availableJpegMinDurations[8]; 398db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t availableMaxDigitalZoom[8]; 399db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 400db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 401db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.jpeg */ 402db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_jpeg_ctl { 403db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t quality; 404db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t thumbnailSize[2]; 405db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t thumbnailQuality; 406db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann double gpsCoordinates[3]; 407db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t gpsProcessingMethod; 408db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t gpsTimestamp; 409db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t orientation; 410db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 411db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 412db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_jpeg_dm { 413db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t quality; 414db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t thumbnailSize[2]; 415db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t thumbnailQuality; 416db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann double gpsCoordinates[3]; 417db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t gpsProcessingMethod; 418db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t gpsTimestamp; 419db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t orientation; 420db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 421db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 422db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_jpeg_sm { 423db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t availableThumbnailSizes[8][2]; 424db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxSize; 425db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming supported size=8*/ 426db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 427db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 428db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 429db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 430db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.statistics */ 431db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 432db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum facedetect_mode { 433db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann FACEDETECT_MODE_OFF = 1, 434db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann FACEDETECT_MODE_SIMPLE, 435db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann FACEDETECT_MODE_FULL 436db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 437db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 438db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum stats_mode { 439db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann STATS_MODE_OFF = 1, 440db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann STATS_MODE_ON 441db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 442db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 443db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_stats_ctl { 444db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum facedetect_mode faceDetectMode; 445db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum stats_mode histogramMode; 446db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum stats_mode sharpnessMapMode; 447db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 448db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 449db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 450db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_stats_dm { 451db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum facedetect_mode faceDetectMode; 452db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t faceRectangles[CAMERA2_MAX_FACES][4]; 453db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t faceScores[CAMERA2_MAX_FACES]; 454db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t faceLandmarks[CAMERA2_MAX_FACES][6]; 455db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t faceIds[CAMERA2_MAX_FACES]; 456db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* PAYTON_CHECK_20120712 : histogram_mode -> stats_mode */ 457db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum stats_mode histogramMode; 458db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* [hj529.kim, 2012/07/19] androd.statistics.histogram */ 459db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t histogram[3 * 256]; 460db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* PAYTON_CHECK_20120712 : sharpnessmap_mode -> stats_mode */ 461db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum stats_mode sharpnessMapMode; 462db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*sharpnessMap*/ 463db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 464db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 465db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 466db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_stats_sm { 467db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t availableFaceDetectModes[CAMERA2_MAX_AVAILABLE_MODE]; 468db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming supported modes = 3;*/ 469db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxFaceCount; 470db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t histogramBucketCount; 471db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxHistogramCount; 472db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t sharpnessMapSize[2]; 473db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxSharpnessMapValue; 474db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 475db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 476db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/* android.control */ 477db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 478db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_capture_intent { 479db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CAPTURE_INTENT_CUSTOM = 0, 480db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CAPTURE_INTENT_PREVIEW, 481db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CAPTURE_INTENT_STILL_CAPTURE, 482db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CAPTURE_INTENT_VIDEO_RECORD, 483db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CAPTURE_INTENT_VIDEO_SNAPSHOT, 484db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CAPTURE_INTENT_ZERO_SHUTTER_LAG 485db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 486db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 487db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_mode { 488db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CONTROL_NONE = 0, 489db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CONTROL_OFF, 490db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CONTROL_AUTO, 491db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_CONTROL_USE_SCENE_MODE 492db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 493db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 494db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_scene_mode { 495db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_UNSUPPORTED = 1, 496db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_FACE_PRIORITY, 497db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_ACTION, 498db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_PORTRAIT, 499db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_LANDSCAPE, 500db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_NIGHT, 501db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_NIGHT_PORTRAIT, 502db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_THEATRE, 503db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_BEACH, 504db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_SNOW, 505db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_SUNSET, 506db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_STEADYPHOTO, 507db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_FIREWORKS, 508db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_SPORTS, 509db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_PARTY, 510db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_CANDLELIGHT, 511db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_BARCODE, 512db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_NIGHT_CAPTURE, /* part of night mode */ 513db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_SCENE_MODE_MAX 514db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 515db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 516db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_effect_mode { 517db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_OFF = 1, 518db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_MONO, 519db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_NEGATIVE, 520db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_SOLARIZE, 521db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_SEPIA, 522db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_POSTERIZE, 523db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_WHITEBOARD, 524db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_BLACKBOARD, 525db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_EFFECT_AQUA 526db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 527db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 528db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_aemode { 529db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AEMODE_OFF = 1, 530db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AEMODE_LOCKED, 531db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AEMODE_ON, 532db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AEMODE_ON_AUTO_FLASH, 533db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AEMODE_ON_ALWAYS_FLASH, 534db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AEMODE_ON_AUTO_FLASH_REDEYE 535db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 536db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 537db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_ae_flashmode { 538db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_FLASHMODE_NOP = 0, 539db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*all flash control stop*/ 540db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_FLASHMODE_OFF = 1, 541db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*internal 3A can control flash*/ 542db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_FLASHMODE_ON, 543db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*internal 3A can do auto flash algorithm*/ 544db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_FLASHMODE_AUTO, 545db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*internal 3A can fire flash by auto result*/ 546db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_FLASHMODE_CAPTURE, 547db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*internal 3A can control flash*/ 548db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_FLASHMODE_ON_ALWAYS 549db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 550db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 551db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_ae_antibanding_mode { 552db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AE_ANTIBANDING_OFF = 1, 553db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AE_ANTIBANDING_50HZ, 554db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AE_ANTIBANDING_60HZ, 555db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AE_ANTIBANDING_AUTO 556db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 557db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 558db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_awbmode { 559db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_OFF = 1, 560db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_LOCKED, 561db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_WB_AUTO, 562db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_WB_INCANDESCENT, 563db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_WB_FLUORESCENT, 564db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_WB_WARM_FLUORESCENT, 565db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_WB_DAYLIGHT, 566db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_WB_CLOUDY_DAYLIGHT, 567db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_WB_TWILIGHT, 568db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AWBMODE_WB_SHADE 569db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 570db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 571db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_afmode { 572db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann NO_CHANGE = 0, 573db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_OFF = 1, 574db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_AUTO, 575db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_MACRO, 576db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_CONTINUOUS_VIDEO, 577db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_CONTINUOUS_PICTURE, 578db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_INFINITY, 579db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_AUTO_FACE, 580db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_CONTINUOUS_VIDEO_FACE, 581db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_CONTINUOUS_PICTURE_FACE, 582db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_MANUAL, 583db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFMODE_EDOF 584db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 585db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 586db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_afstate { 587db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFSTATE_INACTIVE = 1, 588db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFSTATE_PASSIVE_SCAN, 589db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFSTATE_ACTIVE_SCAN, 590db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFSTATE_AF_ACQUIRED_FOCUS, 591db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_AFSTATE_AF_FAILED_FOCUS 592db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 593db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 594db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum ae_state { 595db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AE_STATE_INACTIVE = 1, 596db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AE_STATE_SEARCHING, 597db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AE_STATE_CONVERGED, 598db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AE_STATE_LOCKED, 599db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AE_STATE_FLASH_REQUIRED, 600db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AE_STATE_PRECAPTURE 601db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 602db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 603db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum awb_state { 604db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AWB_STATE_INACTIVE = 1, 605db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AWB_STATE_SEARCHING, 606db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AWB_STATE_CONVERGED, 607db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AWB_STATE_LOCKED 608db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 609db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 610db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum aa_isomode { 611db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_ISOMODE_AUTO = 1, 612db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AA_ISOMODE_MANUAL, 613db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 614db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 615db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum ae_lockmode { 616db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AEMODE_LOCK_OFF = 0, 617db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AEMODE_LOCK_ON, 618db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 619db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 620db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannenum awb_lockmode { 621db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AWBMODE_LOCK_OFF = 0, 622db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann AWBMODE_LOCK_ON, 623db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 624db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 625db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_aa_ctl { 626db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_capture_intent captureIntent; 627db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_mode mode; 628db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_scene_mode sceneMode; 629db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t videoStabilizationMode; 630db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_aemode aeMode; 631db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t aeRegions[5]; 632db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/ 633db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann int32_t aeExpCompensation; 634db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t aeTargetFpsRange[2]; 635db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_ae_antibanding_mode aeAntibandingMode; 636db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_ae_flashmode aeflashMode; 637db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_awbmode awbMode; 638db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t awbRegions[5]; 639db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/ 640db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_afmode afMode; 641db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t afRegions[5]; 642db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/ 643db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t afTrigger; 644db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_isomode isoMode; 645db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t isoValue; 646db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 647db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 648db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 649db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_aa_dm { 650db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_mode mode; 651db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_effect_mode effectMode; 652db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_scene_mode sceneMode; 653db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t videoStabilizationMode; 654db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_aemode aeMode; 655db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*needs check*/ 656db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t aeRegions[5]; 657db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/ 658db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum ae_state aeState; 659db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_ae_flashmode aeflashMode; 660db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*needs check*/ 661db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_awbmode awbMode; 662db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t awbRegions[5]; 663db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum awb_state awbState; 664db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/ 665db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_afmode afMode; 666db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t afRegions[5]; 667db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region*/ 668db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_afstate afState; 669db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum aa_isomode isoMode; 670db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t isoValue; 671db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 672db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 673db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_aa_sm { 674db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t availableSceneModes[CAMERA2_MAX_AVAILABLE_MODE]; 675db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t availableEffects[CAMERA2_MAX_AVAILABLE_MODE]; 676db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming # of available scene modes = 10*/ 677db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxRegions; 678db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t aeAvailableModes[CAMERA2_MAX_AVAILABLE_MODE]; 679db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming # of available ae modes = 8*/ 680db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct rational aeCompensationStep; 681db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann int32_t aeCompensationRange[2]; 682db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t aeAvailableTargetFpsRanges[CAMERA2_MAX_AVAILABLE_MODE][2]; 683db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t aeAvailableAntibandingModes[CAMERA2_MAX_AVAILABLE_MODE]; 684db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t awbAvailableModes[CAMERA2_MAX_AVAILABLE_MODE]; 685db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming # of awbAvailableModes = 10*/ 686db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t afAvailableModes[CAMERA2_MAX_AVAILABLE_MODE]; 687db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming # of afAvailableModes = 4*/ 688db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t availableVideoStabilizationModes[4]; 689db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*assuming # of availableVideoStabilizationModes = 4*/ 690db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t isoRange[2]; 691db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 692db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 693db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_lens_usm { 694db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** Frame delay between sending command and applying frame data */ 695db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t focusDistanceFrameDelay; 696db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 697db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 698db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_sensor_usm { 699db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** Frame delay between sending command and applying frame data */ 700db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t exposureTimeFrameDelay; 701db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t frameDurationFrameDelay; 702db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t sensitivityFrameDelay; 703db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 704db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 705db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_flash_usm { 706db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** Frame delay between sending command and applying frame data */ 707db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t flashModeFrameDelay; 708db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t firingPowerFrameDelay; 709db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t firingTimeFrameDelay; 710db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 711db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 712db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_ctl { 713db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_request_ctl request; 714db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_lens_ctl lens; 715db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_sensor_ctl sensor; 716db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_flash_ctl flash; 717db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_hotpixel_ctl hotpixel; 718db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_demosaic_ctl demosaic; 719db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_noisereduction_ctl noise; 720db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_shading_ctl shading; 721db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_geometric_ctl geometric; 722db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_colorcorrection_ctl color; 723db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_tonemap_ctl tonemap; 724db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_edge_ctl edge; 725db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_scaler_ctl scaler; 726db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_jpeg_ctl jpeg; 727db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_stats_ctl stats; 728db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_aa_ctl aa; 729db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 730db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 731db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_dm { 732db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_request_dm request; 733db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_lens_dm lens; 734db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_sensor_dm sensor; 735db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_flash_dm flash; 736db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_hotpixel_dm hotpixel; 737db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_demosaic_dm demosaic; 738db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_noisereduction_dm noise; 739db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_shading_dm shading; 740db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_geometric_dm geometric; 741db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_colorcorrection_dm color; 742db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_tonemap_dm tonemap; 743db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_edge_dm edge; 744db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_scaler_dm scaler; 745db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_jpeg_dm jpeg; 746db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_stats_dm stats; 747db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_aa_dm aa; 748db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 749db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 750db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_sm { 751db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_lens_sm lens; 752db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_sensor_sm sensor; 753db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_flash_sm flash; 754db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_colorcorrection_sm color; 755db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_tonemap_sm tonemap; 756db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_scaler_sm scaler; 757db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_jpeg_sm jpeg; 758db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_stats_sm stats; 759db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_aa_sm aa; 760db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 761db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** User-defined(ispfw specific) static metadata. */ 762db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_lens_usm lensUd; 763db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_sensor_usm sensorUd; 764db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_flash_usm flashUd; 765db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 766db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 767db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/** \brief 768db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann User-defined control for lens. 769db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann*/ 770db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_lens_uctl { 771db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_lens_ctl ctl; 772db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 773db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** It depends by af algorithm(normally 255 or 1023) */ 774db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxPos; 775db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** Some actuator support slew rate control. */ 776db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t slewRate; 777db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 778db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 779db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/** \brief 780db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann User-defined metadata for lens. 781db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann*/ 782db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_lens_udm { 783db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** It depends by af algorithm(normally 255 or 1023) */ 784db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t maxPos; 785db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** Some actuator support slew rate control. */ 786db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t slewRate; 787db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 788db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 789db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/** \brief 790db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann User-defined control for sensor. 791db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann*/ 792db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_sensor_uctl { 793db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_sensor_ctl ctl; 794db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** Dynamic frame duration. 795db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann This feature is decided to max. value between 796db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 'sensor.exposureTime'+alpha and 'sensor.frameDuration'. 797db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 798db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint64_t dynamicFrameDuration; 799db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 800db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 801db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_scaler_uctl { 802db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 803db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann target address for next frame. 804db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 805db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [0] invalid address, stop 806db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [others] valid address 807db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 808db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t sccTargetAddress[4]; 809db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t scpTargetAddress[4]; 810db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 811db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 812db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_flash_uctl { 813db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_flash_ctl ctl; 814db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 815db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 816db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/** \brief 817db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann User-defined control area. 818db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 819db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann sensor, lens, flash category is empty value. 820db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann It should be filled by a5 for SET_CAM_CONTROL command. 821db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann Other category is filled already from host. 822db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann*/ 823db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_uctl { 824db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 825db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann Set sensor, lens, flash control for next frame. 826db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 827db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann This flag can be combined. 828db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [0 bit] lens 829db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [1 bit] sensor 830db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [2 bit] flash 831db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 832db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t uUpdateBitMap; 833db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 834db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** For debugging */ 835db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t uFrameNumber; 836db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 837db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** ispfw specific control(user-defined) of lens. */ 838db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_lens_uctl lensUd; 839db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** ispfw specific control(user-defined) of sensor. */ 840db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_sensor_uctl sensorUd; 841db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** ispfw specific control(user-defined) of flash. */ 842db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_flash_uctl flashUd; 843db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 844db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_scaler_uctl scalerUd; 845db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 846db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 847db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_udm { 848db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_lens_udm lens; 849db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 850db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 851db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_shot { 852db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*google standard area*/ 853db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_ctl ctl; 854db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_dm dm; 855db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*user defined area*/ 856db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_uctl uctl; 857db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_udm udm; 858db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /*magic : 23456789*/ 859db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t magicNumber; 860db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 861db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 862db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/** \brief 863db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann Structure for interfacing between HAL and driver. 864db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann*/ 865db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_shot_ext { 866db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 867db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann setfile change 868db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 869db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [x] mode for setfile 870db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 871db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t setfile; 872db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 873db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 874db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann stream control 875db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 876db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [0] disable stream out 877db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [1] enable stream out 878db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 879db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t request_sensor; 880db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t request_scc; 881db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t request_scp; 882db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 883db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 884db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann post processing control(DRC) 885db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 886db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [0] bypass off 887db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [1] bypass on 888db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 889db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t drc_bypass; 890db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 891db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 892db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann post processing control(DIS) 893db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 894db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [0] bypass off 895db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [1] bypass on 896db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 897db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t dis_bypass; 898db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 899db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 900db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann post processing control(3DNR) 901db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 902db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [0] bypass off 903db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [1] bypass on 904db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 905db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t dnr_bypass; 906db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 907db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 908db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann post processing control(FD) 909db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 910db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [0] bypass off 911db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [1] bypass on 912db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 913db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t fd_bypass; 914db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 915db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /* reserved for future */ 916db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t reserved[20]; 917db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 918db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 919db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann processing time debugging 920db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 921db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann taken time(unit : struct timeval) 922db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [0][x] flite start 923db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [1][x] flite end 924db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [2][x] DRV Shot 925db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [3][x] DRV Shot done 926db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [4][x] DRV Meta done 927db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 928db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t timeZone[10][2]; 929db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 930db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann struct camera2_shot shot; 931db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t gpsProcessingMethod[32]; 932db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t isReprocessing; 933db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint8_t reprocessInput; 934db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann enum ae_lockmode ae_lock; // this field is used in cameraHAL only 93548728d495b8aa54d3c6cc95229f49f3135107aecSungjoong Kang enum awb_lockmode awb_lock; // this field is used in cameraHAL only 93648728d495b8aa54d3c6cc95229f49f3135107aecSungjoong Kang enum aa_awbmode awb_mode_dm; 937db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 938db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 939db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann/** \brief 940db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann stream structure for scaler. 941db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann*/ 942db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmannstruct camera2_stream { 943db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 944db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann this address for verifying conincidence of index and address 945db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 946db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [X] kernel virtual address for this buffer 947db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 948db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t address; 949db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 950db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 951db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann this frame count is from FLITE through dm.request.fcount, 952db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann this count increases every frame end. initial value is 1. 953db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 954db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [X] frame count 955db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 956db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t fcount; 957db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 958db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 959db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann this request count is from HAL through ctl.request.fcount, 960db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann this count is the unique. 961db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 962db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [X] request count 963db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 964db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t rcount; 965db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 966db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann /** \brief 967db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann frame index of isp framemgr. 968db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann this value is for driver internal debugging 969db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann \remarks 970db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann [X] frame index 971db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann */ 972db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann uint32_t findex; 973db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann}; 974db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 975db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#define CAM_LENS_CMD (0x1 << 0x0) 976db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#define CAM_SENSOR_CMD (0x1 << 0x1) 977db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#define CAM_FLASH_CMD (0x1 << 0x2) 978db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 979db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 980db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann#endif 981db7d80d7a4d9ef6c8fbca602a78531f82f72f0a2Greg Hackmann 982