1 /* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved. 2 * 3 * Redistribution and use in source and binary forms, with or without 4 * modification, are permitted provided that the following conditions are 5 * met: 6 * * Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * * Redistributions in binary form must reproduce the above 9 * copyright notice, this list of conditions and the following 10 * disclaimer in the documentation and/or other materials provided 11 * with the distribution. 12 * * Neither the name of The Linux Foundation nor the names of its 13 * contributors may be used to endorse or promote products derived 14 * from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 */ 29 30 #ifndef __QCAMERA_TYPES_H__ 31 #define __QCAMERA_TYPES_H__ 32 33 // System dependencies 34 #include <stdint.h> 35 #include <media/msmb_camera.h> 36 37 #define CAM_MAX_NUM_BUFS_PER_STREAM 64 38 #define MAX_METADATA_PRIVATE_PAYLOAD_SIZE_IN_BYTES 11224 39 #define AWB_DEBUG_DATA_SIZE (45000) 40 #define AEC_DEBUG_DATA_SIZE (5000) 41 #define AF_DEBUG_DATA_SIZE (60000) 42 #define ASD_DEBUG_DATA_SIZE (100) 43 #define STATS_BUFFER_DEBUG_DATA_SIZE (75000) 44 #define BESTATS_BUFFER_DEBUG_DATA_SIZE (150000) 45 #define BHIST_STATS_DEBUG_DATA_SIZE (70000) 46 #define TUNING_INFO_DEBUG_DATA_SIZE (4) 47 #define OIS_DATA_MAX_SIZE (32) 48 #define MAX_OIS_SAMPLE_NUM_PER_FRAME (20) 49 #define MAX_MAKERNOTE_LENGTH (65535) 50 51 #define PD_DATA_SIZE (4032*2*758) 52 53 #define MAX_PDAF_CALIB_GAINS (25*19) 54 #define MAX_PDAF_CALIB_COEFF (200) 55 56 #define MAX_WB_CALIB_LIGHTS (16) 57 58 #define CEILING64(X) (((X) + 0x0003F) & 0xFFFFFFC0) 59 #define CEILING32(X) (((X) + 0x0001F) & 0xFFFFFFE0) 60 #define CEILING16(X) (((X) + 0x000F) & 0xFFF0) 61 #define CEILING4(X) (((X) + 0x0003) & 0xFFFC) 62 #define CEILING2(X) (((X) + 0x0001) & 0xFFFE) 63 64 #define MAX_ZOOMS_CNT 91 65 #define MAX_SIZES_CNT 40 66 #define MAX_EXP_BRACKETING_LENGTH 32 67 #define MAX_ROI 10 68 #define MAX_STREAM_NUM_IN_BUNDLE 8 69 #define MAX_NUM_STREAMS 8 70 #define CHROMATIX_SIZE 60000 71 #define COMMONCHROMATIX_SIZE 45000 72 #define CPPCHROMATIX_SIZE 36000 73 #define SWPOSTPROCCHROMATIX_SIZE 36000 74 #define AFTUNE_SIZE 32768 75 #define A3CHROMATIX_SIZE 30000 76 #define MAX_SCALE_SIZES_CNT 8 77 #define MAX_SAMP_DECISION_CNT 64 78 #define SENSOR_PHYSICAL_SIZE_CNT 2 79 #define EXPOSURE_TIME_RANGE_CNT 2 80 #define BLACK_LEVEL_PATTERN_CNT 4 81 #define FORWARD_MATRIX_COLS 3 82 #define FORWARD_MATRIX_ROWS 3 83 #define COLOR_TRANSFORM_COLS 3 84 #define COLOR_TRANSFORM_ROWS 3 85 #define CAL_TRANSFORM_COLS 3 86 #define CAL_TRANSFORM_ROWS 3 87 88 #define MAX_ISP_DATA_SIZE (20*1024) 89 #define MAX_PP_DATA_SIZE 16384 90 #define MAX_AE_STATS_DATA_SIZE 1000 91 #define MAX_AWB_STATS_DATA_SIZE 1000 92 #define MAX_AF_STATS_DATA_SIZE 1000 93 #define MAX_ASD_STATS_DATA_SIZE 1000 94 95 #define MAX_CAPTURE_BATCH_NUM 32 96 97 #define TUNING_DATA_VERSION 6 98 #define TUNING_SENSOR_DATA_MAX 0x10000 /*(need value from sensor team)*/ 99 #define TUNING_VFE_DATA_MAX 0x10000 /*(need value from vfe team)*/ 100 #define TUNING_CPP_DATA_MAX 0x10000 /*(need value from pproc team)*/ 101 #define TUNING_CAC_DATA_MAX 0x10000 /*(need value from imglib team)*/ 102 #define TUNING_MOD1_AEC_DATA_MAX ((16*(sizeof(int))) + (16*(sizeof(float)))) 103 #define TUNING_MOD1_AWB_DATA_MAX ((16*(sizeof(int))) + (16*(sizeof(float)))) 104 #define TUNING_MOD1_AF_DATA_MAX ((16*(sizeof(int))) + (16*(sizeof(float)))) 105 #define TUNING_MOD1_STATS_DATA_MAX (TUNING_MOD1_AEC_DATA_MAX + \ 106 TUNING_MOD1_AEC_DATA_MAX + \ 107 TUNING_MOD1_AEC_DATA_MAX) 108 109 #define TUNING_DATA_MAX (TUNING_SENSOR_DATA_MAX + \ 110 TUNING_VFE_DATA_MAX + \ 111 TUNING_MOD1_STATS_DATA_MAX + \ 112 TUNING_CPP_DATA_MAX + \ 113 TUNING_CAC_DATA_MAX) 114 115 #define TUNING_SENSOR_DATA_OFFSET 0 116 #define TUNING_VFE_DATA_OFFSET TUNING_SENSOR_DATA_MAX 117 #define TUNING_MOD1_AEC_DATA_OFFSET (TUNING_SENSOR_DATA_MAX + \ 118 TUNING_VFE_DATA_MAX) 119 120 #define TUNING_MOD1_AWB_DATA_OFFSET (TUNING_SENSOR_DATA_MAX + \ 121 TUNING_VFE_DATA_MAX + \ 122 TUNING_MOD1_AEC_DATA_MAX) 123 124 #define TUNING_MOD1_AF_DATA_OFFSET (TUNING_SENSOR_DATA_MAX + \ 125 TUNING_VFE_DATA_MAX + \ 126 TUNING_MOD1_AEC_DATA_MAX + \ 127 TUNING_MOD1_AWB_DATA_MAX) 128 129 #define TUNING_CPP_DATA_OFFSET (TUNING_SENSOR_DATA_MAX + \ 130 TUNING_VFE_DATA_MAX + \ 131 TUNING_MOD1_AEC_DATA_MAX + \ 132 TUNING_MOD1_AWB_DATA_MAX + \ 133 TUNING_MOD1_AF_DATA_MAX) 134 #define TUNING_CAC_DATA_OFFSET (TUNING_SENSOR_DATA_MAX + \ 135 TUNING_VFE_DATA_MAX + \ 136 TUNING_MOD1_AEC_DATA_MAX + \ 137 TUNING_MOD1_AWB_DATA_MAX + \ 138 TUNING_MOD1_AF_DATA_MAX + \ 139 TUNING_CPP_DATA_MAX) 140 141 #define MAX_STATS_DATA_SIZE 4000 142 143 #define MAX_AF_BRACKETING_VALUES 5 144 #define MAX_TEST_PATTERN_CNT 8 145 146 #define GPS_PROCESSING_METHOD_SIZE 33 147 #define EXIF_IMAGE_DESCRIPTION_SIZE 100 148 149 #define MAX_INFLIGHT_REQUESTS 6 150 #define MAX_INFLIGHT_BLOB 3 151 #define MIN_INFLIGHT_REQUESTS 3 152 #define MIN_INFLIGHT_60FPS_REQUESTS (6) 153 #define MAX_INFLIGHT_REPROCESS_REQUESTS 1 154 #define MAX_INFLIGHT_HFR_REQUESTS (48) 155 #define MIN_INFLIGHT_HFR_REQUESTS (40) 156 157 // Max allowed video buffer count for all cases 158 #define MAX_VIDEO_BUFFERS 24 159 // Max allowed video buffer count for 30fps 160 #define MAX_30FPS_VIDEO_BUFFERS 18 161 162 #define QCAMERA_DUMP_FRM_LOCATION "/data/vendor/camera/" 163 #define QCAMERA_MAX_FILEPATH_LENGTH 64 164 165 #define LIKELY(x) __builtin_expect((x), true) 166 #define UNLIKELY(x) __builtin_expect((x), false) 167 168 #define RELCAM_CALIB_ROT_MATRIX_MAX 9 169 #define RELCAM_CALIB_SURFACE_PARMS_MAX 32 170 #define RELCAM_CALIB_RESERVED_MAX 50 171 172 #define MAX_NUM_CAMERA_PER_BUNDLE 2 /* Max number of cameras per bundle */ 173 #define EXTRA_FRAME_SYNC_BUFFERS 4 /* Extra frame sync buffers in dc mode*/ 174 #define MM_CAMERA_FRAME_SYNC_NODES EXTRA_FRAME_SYNC_BUFFERS 175 176 #define MAX_REPROCESS_STALL 2 177 178 #define QCAMERA_MAX_FILEPATH_LENGTH 64 179 180 #define MAX_EEPROM_VERSION_INFO_LEN 128 181 182 #define MAX_OPTICAL_BLACK_REGIONS 5 183 184 /*reprocess pipeline stages are pproc and jpeg */ 185 #define MAX_REPROCESS_PIPELINE_STAGES 2 186 187 /* Defines the number of rows in the color correction matrix (CCM) */ 188 #define AWB_NUM_CCM_ROWS (3) 189 190 /* Defines the number of columns in the color correction matrix (CCM) */ 191 #define AWB_NUM_CCM_COLS (3) 192 193 #define CPU_HAS_READ (1 << 0) 194 #define CPU_HAS_WRITTEN (1 << 1) 195 #define CPU_HAS_READ_WRITTEN (CPU_HAS_READ |CPU_HAS_WRITTEN) 196 197 /* Index to switch H/W to consume to free-run Q*/ 198 #define CAM_FREERUN_IDX 0xFFFFFFFF 199 200 typedef uint64_t cam_feature_mask_t; 201 202 typedef enum { 203 CAM_HAL_V1 = 1, 204 CAM_HAL_V3 = 3 205 } cam_hal_version_t; 206 207 typedef enum { 208 CAM_STATUS_INVALID_PARM = -4, /* Inavlid parameter provided */ 209 CAM_STATUS_NOT_SUPPORTED = -3, /* Parameter/operation not supported */ 210 CAM_STATUS_BUSY = -2, /* operation busy */ 211 CAM_STATUS_FAILED = -1, /* Failure in doing operation */ 212 CAM_STATUS_SUCCESS = 0, /* Operation Succeded */ 213 CAM_STATUS_ACCEPTED = 1, /* Parameter accepted */ 214 CAM_STATUS_MAX = 2, 215 } cam_status_t; 216 217 typedef enum { 218 /*back main camera*/ 219 CAM_POSITION_BACK, 220 /*front main camera*/ 221 CAM_POSITION_FRONT, 222 /*back aux camera*/ 223 CAM_POSITION_BACK_AUX, 224 /*front aux camera*/ 225 CAM_POSITION_FRONT_AUX 226 } cam_position_t; 227 228 // Counter clock wise 229 typedef enum { 230 ROTATE_0 = 1<<0, 231 ROTATE_90 = 1<<1, 232 ROTATE_180 = 1<<2, 233 ROTATE_270 = 1<<3, 234 } cam_rotation_t; 235 236 typedef enum { 237 CAM_LENS_NORMAL, 238 CAM_LENS_WIDE, 239 CAM_LENS_TELE 240 } cam_lens_type_t; 241 242 typedef enum { 243 CAM_FLICKER_NONE, 244 CAM_FLICKER_50_HZ, 245 CAM_FLICKER_60_HZ 246 } cam_flicker_t; 247 248 typedef enum { 249 CAM_PD_DATA_DISABLED = 0, 250 CAM_PD_DATA_ENABLED = 1, 251 CAM_PD_DATA_SKIP = 2, 252 } cam_sensor_pd_data_t; 253 254 typedef enum { 255 CAM_FORMAT_JPEG = 0, 256 CAM_FORMAT_YUV_420_NV12 = 1, 257 CAM_FORMAT_YUV_420_NV21, 258 CAM_FORMAT_YUV_420_NV21_ADRENO, 259 CAM_FORMAT_YUV_420_YV12, 260 CAM_FORMAT_YUV_422_NV16, 261 CAM_FORMAT_YUV_422_NV61, 262 CAM_FORMAT_YUV_420_NV12_VENUS, 263 /* Note: For all raw formats, each scanline needs to be 16 bytes aligned */ 264 265 /* Packed YUV/YVU raw format, 16 bpp: 8 bits Y and 8 bits UV. 266 * U and V are interleaved with Y: YUYV or YVYV */ 267 CAM_FORMAT_YUV_RAW_8BIT_YUYV, 268 CAM_FORMAT_YUV_RAW_8BIT_YVYU, 269 CAM_FORMAT_YUV_RAW_8BIT_UYVY, //10 270 CAM_FORMAT_YUV_RAW_8BIT_VYUY, 271 272 /* QCOM RAW formats where data is packed into 64bit word. 273 * 8BPP: 1 64-bit word contains 8 pixels p0 - p7, where p0 is 274 * stored at LSB. 275 * 10BPP: 1 64-bit word contains 6 pixels p0 - p5, where most 276 * significant 4 bits are set to 0. P0 is stored at LSB. 277 * 12BPP: 1 64-bit word contains 5 pixels p0 - p4, where most 278 * significant 4 bits are set to 0. P0 is stored at LSB. */ 279 CAM_FORMAT_BAYER_QCOM_RAW_8BPP_GBRG, 280 CAM_FORMAT_BAYER_QCOM_RAW_8BPP_GRBG, 281 CAM_FORMAT_BAYER_QCOM_RAW_8BPP_RGGB, 282 CAM_FORMAT_BAYER_QCOM_RAW_8BPP_BGGR, 283 CAM_FORMAT_BAYER_QCOM_RAW_10BPP_GBRG, 284 CAM_FORMAT_BAYER_QCOM_RAW_10BPP_GRBG, 285 CAM_FORMAT_BAYER_QCOM_RAW_10BPP_RGGB, 286 CAM_FORMAT_BAYER_QCOM_RAW_10BPP_BGGR, 287 CAM_FORMAT_BAYER_QCOM_RAW_12BPP_GBRG, //20 288 CAM_FORMAT_BAYER_QCOM_RAW_12BPP_GRBG, 289 CAM_FORMAT_BAYER_QCOM_RAW_12BPP_RGGB, 290 CAM_FORMAT_BAYER_QCOM_RAW_12BPP_BGGR, 291 /* MIPI RAW formats based on MIPI CSI-2 specifiction. 292 * 8BPP: Each pixel occupies one bytes, starting at LSB. 293 * Output with of image has no restrictons. 294 * 10BPP: Four pixels are held in every 5 bytes. The output 295 * with of image must be a multiple of 4 pixels. 296 * 12BPP: Two pixels are held in every 3 bytes. The output 297 * width of image must be a multiple of 2 pixels. */ 298 CAM_FORMAT_BAYER_MIPI_RAW_8BPP_GBRG, 299 CAM_FORMAT_BAYER_MIPI_RAW_8BPP_GRBG, 300 CAM_FORMAT_BAYER_MIPI_RAW_8BPP_RGGB, 301 CAM_FORMAT_BAYER_MIPI_RAW_8BPP_BGGR, 302 CAM_FORMAT_BAYER_MIPI_RAW_10BPP_GBRG, 303 CAM_FORMAT_BAYER_MIPI_RAW_10BPP_GRBG, 304 CAM_FORMAT_BAYER_MIPI_RAW_10BPP_RGGB, //30 305 CAM_FORMAT_BAYER_MIPI_RAW_10BPP_BGGR, 306 CAM_FORMAT_BAYER_MIPI_RAW_12BPP_GBRG, 307 CAM_FORMAT_BAYER_MIPI_RAW_12BPP_GRBG, 308 CAM_FORMAT_BAYER_MIPI_RAW_12BPP_RGGB, 309 CAM_FORMAT_BAYER_MIPI_RAW_12BPP_BGGR, 310 /* Ideal raw formats where image data has gone through black 311 * correction, lens rolloff, demux/channel gain, bad pixel 312 * correction, and ABF. 313 * Ideal raw formats could output any of QCOM_RAW and MIPI_RAW 314 * formats, plus plain8 8bbp, plain16 800, plain16 10bpp, and 315 * plain 16 12bpp */ 316 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_GBRG, 317 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_GRBG, 318 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_RGGB, 319 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_BGGR, 320 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_GBRG, //40 321 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_GRBG, 322 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_RGGB, 323 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_BGGR, 324 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_GBRG, 325 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_GRBG, 326 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_RGGB, 327 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_BGGR, 328 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_GBRG, 329 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_GRBG, 330 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_RGGB, //50 331 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_BGGR, 332 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_GBRG, 333 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_GRBG, 334 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_RGGB, 335 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_BGGR, 336 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_GBRG, 337 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_GRBG, 338 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_RGGB, 339 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_BGGR, 340 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN8_8BPP_GBRG, //60 341 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN8_8BPP_GRBG, 342 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN8_8BPP_RGGB, 343 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN8_8BPP_BGGR, 344 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_8BPP_GBRG, 345 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_8BPP_GRBG, 346 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_8BPP_RGGB, 347 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_8BPP_BGGR, 348 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_10BPP_GBRG, 349 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_10BPP_GRBG, 350 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_10BPP_RGGB, //70 351 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_10BPP_BGGR, 352 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_12BPP_GBRG, 353 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_12BPP_GRBG, 354 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_12BPP_RGGB, 355 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_12BPP_BGGR, 356 357 /* generic 8-bit raw */ 358 CAM_FORMAT_JPEG_RAW_8BIT, 359 CAM_FORMAT_META_RAW_8BIT, 360 361 /* generic 10-bit raw */ 362 CAM_FORMAT_META_RAW_10BIT, 363 364 /* QCOM RAW formats where data is packed into 64bit word. 365 * 14BPP: 1 64-bit word contains 4 pixels p0 - p3, where most 366 * significant 4 bits are set to 0. P0 is stored at LSB. 367 */ 368 CAM_FORMAT_BAYER_QCOM_RAW_14BPP_GBRG, 369 CAM_FORMAT_BAYER_QCOM_RAW_14BPP_GRBG, 370 CAM_FORMAT_BAYER_QCOM_RAW_14BPP_RGGB, //80 371 CAM_FORMAT_BAYER_QCOM_RAW_14BPP_BGGR, 372 /* MIPI RAW formats based on MIPI CSI-2 specifiction. 373 * 14 BPPP: 1st byte: P0 [13:6] 374 * 2nd byte: P1 [13:6] 375 * 3rd byte: P2 [13:6] 376 * 4th byte: P3 [13:6] 377 * 5th byte: P0 [5:0] 378 * 7th byte: P1 [5:0] 379 * 8th byte: P2 [5:0] 380 * 9th byte: P3 [5:0] 381 */ 382 CAM_FORMAT_BAYER_MIPI_RAW_14BPP_GBRG, 383 CAM_FORMAT_BAYER_MIPI_RAW_14BPP_GRBG, 384 CAM_FORMAT_BAYER_MIPI_RAW_14BPP_RGGB, 385 CAM_FORMAT_BAYER_MIPI_RAW_14BPP_BGGR, 386 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_GBRG, 387 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_GRBG, 388 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_RGGB, 389 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_BGGR, 390 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_GBRG, //90 391 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_GRBG, 392 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_RGGB, 393 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_BGGR, 394 /* 14BPP: 1st byte: P0 [8:0] 395 * 2nd byte: P0 [13:9] 396 * 3rd byte: P1 [8:0] 397 * 4th byte: P1 [13:9] 398 */ 399 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_14BPP_GBRG, 400 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_14BPP_GRBG, 401 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_14BPP_RGGB, 402 CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_14BPP_BGGR, 403 404 CAM_FORMAT_YUV_444_NV24, 405 CAM_FORMAT_YUV_444_NV42, 406 407 /* Y plane only, used for FD, 8BPP */ 408 CAM_FORMAT_Y_ONLY, //100 409 410 /* UBWC format */ 411 CAM_FORMAT_YUV_420_NV12_UBWC, 412 413 CAM_FORMAT_YUV_420_NV21_VENUS, 414 415 /* RGB formats */ 416 CAM_FORMAT_8888_ARGB, 417 418 /* Y plane only */ 419 CAM_FORMAT_Y_ONLY_10_BPP, 420 CAM_FORMAT_Y_ONLY_12_BPP, 421 CAM_FORMAT_Y_ONLY_14_BPP, 422 CAM_FORMAT_BAYER_QCOM_RAW_8BPP_GREY, 423 CAM_FORMAT_BAYER_QCOM_RAW_10BPP_GREY, 424 CAM_FORMAT_BAYER_QCOM_RAW_12BPP_GREY, 425 CAM_FORMAT_BAYER_QCOM_RAW_14BPP_GREY, 426 CAM_FORMAT_BAYER_MIPI_RAW_8BPP_GREY, 427 CAM_FORMAT_BAYER_MIPI_RAW_10BPP_GREY, 428 CAM_FORMAT_BAYER_MIPI_RAW_12BPP_GREY, 429 CAM_FORMAT_BAYER_MIPI_RAW_14BPP_GREY, 430 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_GREY, 431 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_GREY, 432 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_GREY, 433 CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_GREY, 434 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_GREY, 435 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_GREY, 436 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_GREY, 437 CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_GREY, 438 439 CAM_FORMAT_MAX 440 } cam_format_t; 441 442 typedef enum { 443 CAM_FORMAT_SUBTYPE_HDR_STATS, 444 CAM_FORMAT_SUBTYPE_PDAF_STATS, 445 CAM_FORMAT_SUBTYPE_MAX 446 } cam_sub_format_type_t; 447 448 typedef enum { 449 CAM_STREAM_TYPE_DEFAULT, /* default stream type */ 450 CAM_STREAM_TYPE_PREVIEW, /* preview */ 451 CAM_STREAM_TYPE_POSTVIEW, /* postview */ 452 CAM_STREAM_TYPE_SNAPSHOT, /* snapshot */ 453 CAM_STREAM_TYPE_VIDEO, /* video */ 454 CAM_STREAM_TYPE_CALLBACK, /* app requested callback */ 455 CAM_STREAM_TYPE_IMPL_DEFINED, /* opaque format: could be display, video enc, ZSL YUV */ 456 CAM_STREAM_TYPE_METADATA, /* meta data */ 457 CAM_STREAM_TYPE_RAW, /* raw dump from camif */ 458 CAM_STREAM_TYPE_OFFLINE_PROC, /* offline process */ 459 CAM_STREAM_TYPE_PARM, /* mct internal stream */ 460 CAM_STREAM_TYPE_ANALYSIS, /* analysis stream */ 461 CAM_STREAM_TYPE_MAX, 462 } cam_stream_type_t; 463 464 typedef enum { 465 CAM_PAD_NONE = 1, 466 CAM_PAD_TO_2 = 2, 467 CAM_PAD_TO_4 = 4, 468 CAM_PAD_TO_WORD = CAM_PAD_TO_4, 469 CAM_PAD_TO_8 = 8, 470 CAM_PAD_TO_16 = 16, 471 CAM_PAD_TO_32 = 32, 472 CAM_PAD_TO_64 = 64, 473 CAM_PAD_TO_128 = 128, 474 CAM_PAD_TO_256 = 256, 475 CAM_PAD_TO_512 = 512, 476 CAM_PAD_TO_1K = 1024, 477 CAM_PAD_TO_2K = 2048, 478 CAM_PAD_TO_4K = 4096, 479 CAM_PAD_TO_8K = 8192 480 } cam_pad_format_t; 481 482 typedef enum { 483 /* followings are per camera */ 484 CAM_MAPPING_BUF_TYPE_CAPABILITY, /* mapping camera capability buffer */ 485 CAM_MAPPING_BUF_TYPE_PARM_BUF, /* mapping parameters buffer */ 486 /* this buffer is needed for the payload to be sent with bundling related cameras cmd */ 487 CAM_MAPPING_BUF_TYPE_SYNC_RELATED_SENSORS_BUF, /* mapping sync buffer.*/ 488 CAM_MAPPING_BUF_TYPE_DUAL_CAM_CMD_BUF, /*Dual camera cmd ion memory*/ 489 490 /* followings are per stream */ 491 CAM_MAPPING_BUF_TYPE_STREAM_BUF, /* mapping stream buffers */ 492 CAM_MAPPING_BUF_TYPE_STREAM_INFO, /* mapping stream information buffer */ 493 CAM_MAPPING_BUF_TYPE_OFFLINE_INPUT_BUF, /* mapping offline process input buffer */ 494 CAM_MAPPING_BUF_TYPE_OFFLINE_META_BUF, /* mapping offline meta buffer */ 495 CAM_MAPPING_BUF_TYPE_MISC_BUF, /* mapping offline miscellaneous buffer */ 496 CAM_MAPPING_BUF_TYPE_STREAM_USER_BUF, /* mapping user ptr stream buffers */ 497 CAM_MAPPING_BUF_TYPE_MAX 498 } cam_mapping_buf_type; 499 500 typedef enum { 501 CAM_STREAM_BUF_TYPE_MPLANE, /* Multiplanar Buffer type */ 502 CAM_STREAM_BUF_TYPE_USERPTR, /* User specific structure pointer*/ 503 CAM_STREAM_BUF_TYPE_MAX 504 } cam_stream_buf_type; 505 506 typedef struct { 507 cam_mapping_buf_type type; 508 uint32_t stream_id; /* stream id: valid if STREAM_BUF */ 509 uint32_t frame_idx; /* frame index: valid if type is STREAM_BUF */ 510 int32_t plane_idx; /* planner index. valid if type is STREAM_BUF. 511 * -1 means all planners shanre the same fd; 512 * otherwise, each planner has its own fd */ 513 uint32_t cookie; /* could be job_id(uint32_t) to identify mapping job */ 514 int32_t fd; /* origin fd */ 515 size_t size; /* size of the buffer */ 516 void *buffer; /* Buffer pointer */ 517 } cam_buf_map_type; 518 519 typedef struct { 520 uint32_t length; 521 cam_buf_map_type buf_maps[CAM_MAX_NUM_BUFS_PER_STREAM]; 522 } cam_buf_map_type_list; 523 524 typedef struct { 525 cam_mapping_buf_type type; 526 uint32_t stream_id; /* stream id: valid if STREAM_BUF */ 527 uint32_t frame_idx; /* frame index: valid if STREAM_BUF or HIST_BUF */ 528 int32_t plane_idx; /* planner index. valid if type is STREAM_BUF. 529 * -1 means all planners shanre the same fd; 530 * otherwise, each planner has its own fd */ 531 uint32_t cookie; /* could be job_id(uint32_t) to identify unmapping job */ 532 } cam_buf_unmap_type; 533 534 typedef struct { 535 uint32_t length; 536 cam_buf_unmap_type buf_unmaps[CAM_MAX_NUM_BUFS_PER_STREAM]; 537 } cam_buf_unmap_type_list; 538 539 typedef enum { 540 CAM_MAPPING_TYPE_FD_MAPPING, 541 CAM_MAPPING_TYPE_FD_UNMAPPING, 542 CAM_MAPPING_TYPE_FD_BUNDLED_MAPPING, 543 CAM_MAPPING_TYPE_FD_BUNDLED_UNMAPPING, 544 CAM_MAPPING_TYPE_MAX 545 } cam_mapping_type; 546 547 typedef struct { 548 cam_mapping_type msg_type; 549 union { 550 cam_buf_map_type buf_map; 551 cam_buf_unmap_type buf_unmap; 552 cam_buf_map_type_list buf_map_list; 553 cam_buf_unmap_type_list buf_unmap_list; 554 } payload; 555 } cam_sock_packet_t; 556 typedef cam_sock_packet_t cam_reg_buf_t; 557 558 typedef enum { 559 CAM_MODE_2D = (1<<0), 560 CAM_MODE_3D = (1<<1) 561 } cam_mode_t; 562 563 typedef struct { 564 uint32_t len; 565 uint32_t y_offset; 566 uint32_t cbcr_offset; 567 } cam_sp_len_offset_t; 568 569 typedef struct{ 570 uint32_t len; 571 uint32_t offset; 572 int32_t offset_x; 573 int32_t offset_y; 574 int32_t stride; 575 int32_t stride_in_bytes; 576 int32_t scanline; 577 int32_t width; /* width without padding */ 578 int32_t height; /* height without padding */ 579 int32_t meta_stride; /*Meta stride*/ 580 int32_t meta_scanline; /*Meta Scanline*/ 581 int32_t meta_len; /*Meta plane length including 4k padding*/ 582 } cam_mp_len_offset_t; 583 584 typedef struct { 585 uint32_t offset_x; 586 uint32_t offset_y; 587 } cam_offset_info_t; 588 589 typedef struct { 590 uint32_t width_padding; 591 uint32_t height_padding; 592 uint32_t plane_padding; 593 uint32_t min_stride; 594 uint32_t min_scanline; 595 cam_offset_info_t offset_info; 596 } cam_padding_info_t; 597 598 typedef struct { 599 uint32_t num_planes; /*Number of planes in planar buffer*/ 600 union { 601 cam_sp_len_offset_t sp; 602 cam_mp_len_offset_t mp[VIDEO_MAX_PLANES]; 603 }; 604 uint32_t frame_len; 605 } cam_frame_len_offset_t; 606 607 typedef struct { 608 uint8_t frame_buf_cnt; /*Total plane frames present in 1 batch*/ 609 uint32_t size; /*Size of 1 batch buffer. Kernel structure size*/ 610 long frameInterval; /*frame interval between each frame*/ 611 } cam_stream_user_buf_info_t; 612 613 typedef struct { 614 int32_t width; 615 int32_t height; 616 } cam_dimension_t; 617 618 typedef struct { 619 cam_dimension_t active_array_size; // Size of the active array. 620 cam_dimension_t pixel_array_size; // Size of the pixel array. 621 uint32_t op_pixel_clk; // Sensor output rate. 622 uint32_t num_raw_bits; // Number of bits for RAW. 0 if not RAW. 623 int64_t timestamp_offset; // Timestamp offset with gyro sensor. 0 if uncalibrated. 624 int64_t timestamp_crop_offset; // Timestamp offset due to crop on top of active array. 625 } cam_sensor_mode_info_t; 626 627 typedef struct { 628 uint16_t left_gain_map[MAX_PDAF_CALIB_GAINS]; 629 uint16_t right_gain_map[MAX_PDAF_CALIB_GAINS]; 630 int16_t conversion_coeff[MAX_PDAF_CALIB_COEFF]; 631 } cam_pd_calibration_t; 632 633 typedef struct { 634 int32_t num_lights; 635 float r_over_g[MAX_WB_CALIB_LIGHTS]; 636 float b_over_g[MAX_WB_CALIB_LIGHTS]; 637 float gr_over_gb; 638 } cam_wb_calibration_t; 639 640 typedef struct { 641 cam_frame_len_offset_t plane_info; 642 } cam_stream_buf_plane_info_t; 643 644 typedef struct { 645 float min_fps; 646 float max_fps; 647 float video_min_fps; 648 float video_max_fps; 649 } cam_fps_range_t; 650 651 typedef struct { 652 int32_t min_sensitivity; 653 int32_t max_sensitivity; 654 } cam_sensitivity_range_t; 655 656 typedef enum { 657 CAM_ISO_PRIORITY, 658 CAM_EXP_PRIORITY, 659 CAM_DEFAULT_OFF, 660 } cam_priority_mode_t; 661 662 typedef enum { 663 CAM_HFR_MODE_OFF, 664 CAM_HFR_MODE_60FPS, 665 CAM_HFR_MODE_90FPS, 666 CAM_HFR_MODE_120FPS, 667 CAM_HFR_MODE_150FPS, 668 CAM_HFR_MODE_180FPS, 669 CAM_HFR_MODE_210FPS, 670 CAM_HFR_MODE_240FPS, 671 CAM_HFR_MODE_480FPS, 672 CAM_HFR_MODE_MAX 673 } cam_hfr_mode_t; 674 675 typedef struct { 676 cam_hfr_mode_t mode; 677 uint8_t dim_cnt; /* hfr sizes table count */ 678 cam_dimension_t dim[MAX_SIZES_CNT]; /* hfr sizes table */ 679 uint8_t livesnapshot_sizes_tbl_cnt; /* livesnapshot sizes table count */ 680 cam_dimension_t livesnapshot_sizes_tbl[MAX_SIZES_CNT]; /* livesnapshot sizes table */ 681 } cam_hfr_info_t; 682 683 typedef enum { 684 CAM_WB_MODE_AUTO, 685 CAM_WB_MODE_CUSTOM, 686 CAM_WB_MODE_INCANDESCENT, 687 CAM_WB_MODE_FLUORESCENT, 688 CAM_WB_MODE_WARM_FLUORESCENT, 689 CAM_WB_MODE_DAYLIGHT, 690 CAM_WB_MODE_CLOUDY_DAYLIGHT, 691 CAM_WB_MODE_TWILIGHT, 692 CAM_WB_MODE_SHADE, 693 CAM_WB_MODE_MANUAL, 694 CAM_WB_MODE_OFF, 695 CAM_WB_MODE_MAX 696 } cam_wb_mode_type; 697 698 typedef enum { 699 CAM_ANTIBANDING_MODE_OFF, 700 CAM_ANTIBANDING_MODE_60HZ, 701 CAM_ANTIBANDING_MODE_50HZ, 702 CAM_ANTIBANDING_MODE_AUTO, 703 CAM_ANTIBANDING_MODE_AUTO_50HZ, 704 CAM_ANTIBANDING_MODE_AUTO_60HZ, 705 CAM_ANTIBANDING_MODE_MAX, 706 } cam_antibanding_mode_type; 707 708 /* Enum Type for different ISO Mode supported */ 709 typedef enum { 710 CAM_ISO_MODE_AUTO, 711 CAM_ISO_MODE_DEBLUR, 712 CAM_ISO_MODE_100, 713 CAM_ISO_MODE_200, 714 CAM_ISO_MODE_400, 715 CAM_ISO_MODE_800, 716 CAM_ISO_MODE_1600, 717 CAM_ISO_MODE_3200, 718 CAM_ISO_MODE_MAX 719 } cam_iso_mode_type; 720 721 typedef enum { 722 CAM_AEC_MODE_FRAME_AVERAGE, 723 CAM_AEC_MODE_CENTER_WEIGHTED, 724 CAM_AEC_MODE_SPOT_METERING, 725 CAM_AEC_MODE_SMART_METERING, 726 CAM_AEC_MODE_USER_METERING, 727 CAM_AEC_MODE_SPOT_METERING_ADV, 728 CAM_AEC_MODE_CENTER_WEIGHTED_ADV, 729 CAM_AEC_MODE_MAX 730 } cam_auto_exposure_mode_type; 731 732 /* enum to select AEC convergence type */ 733 typedef enum { 734 /* Normal AEC connvergence */ 735 CAM_AEC_NORMAL_CONVERGENCE = 0, 736 /* Aggressive AEC connvergence */ 737 CAM_AEC_AGGRESSIVE_CONVERGENCE, 738 /* Fast AEC convergence */ 739 CAM_AEC_FAST_CONVERGENCE, 740 CAM_AEC_CONVERGENCE_MAX 741 } cam_aec_convergence_type; 742 743 typedef enum { 744 CAM_AE_MODE_OFF, 745 CAM_AE_MODE_ON, 746 CAM_AE_MODE_ON_EXTERNAL_FLASH, 747 CAM_AE_MODE_MAX 748 } cam_ae_mode_type; 749 750 typedef enum { 751 CAM_FOCUS_ALGO_AUTO, 752 CAM_FOCUS_ALGO_SPOT, 753 CAM_FOCUS_ALGO_CENTER_WEIGHTED, 754 CAM_FOCUS_ALGO_AVERAGE, 755 CAM_FOCUS_ALGO_MAX 756 } cam_focus_algorithm_type; 757 758 /* Auto focus mode */ 759 typedef enum { 760 CAM_FOCUS_MODE_OFF, 761 CAM_FOCUS_MODE_AUTO, 762 CAM_FOCUS_MODE_INFINITY, 763 CAM_FOCUS_MODE_MACRO, 764 CAM_FOCUS_MODE_FIXED, 765 CAM_FOCUS_MODE_EDOF, 766 CAM_FOCUS_MODE_CONTINOUS_VIDEO, 767 CAM_FOCUS_MODE_CONTINOUS_PICTURE, 768 CAM_FOCUS_MODE_MANUAL, 769 CAM_FOCUS_MODE_MAX 770 } cam_focus_mode_type; 771 772 typedef enum { 773 CAM_MANUAL_FOCUS_MODE_INDEX, 774 CAM_MANUAL_FOCUS_MODE_DAC_CODE, 775 CAM_MANUAL_FOCUS_MODE_RATIO, 776 CAM_MANUAL_FOCUS_MODE_DIOPTER, 777 CAM_MANUAL_FOCUS_MODE_MAX 778 } cam_manual_focus_mode_type; 779 780 typedef struct { 781 cam_manual_focus_mode_type flag; 782 union{ 783 int32_t af_manual_lens_position_index; 784 int32_t af_manual_lens_position_dac; 785 int32_t af_manual_lens_position_ratio; 786 float af_manual_diopter; 787 }; 788 } cam_manual_focus_parm_t; 789 790 typedef enum { 791 CAM_MANUAL_WB_MODE_CCT, 792 CAM_MANUAL_WB_MODE_GAIN, 793 CAM_MANUAL_WB_MODE_MAX 794 } cam_manual_wb_mode_type; 795 796 typedef struct { 797 float r_gain; 798 float g_gain; 799 float b_gain; 800 } cam_awb_gain_t; 801 802 typedef struct { 803 cam_manual_wb_mode_type type; 804 union{ 805 int32_t cct; 806 cam_awb_gain_t gains; 807 }; 808 } cam_manual_wb_parm_t; 809 810 typedef enum { 811 CAM_SCENE_MODE_OFF, 812 CAM_SCENE_MODE_AUTO, 813 CAM_SCENE_MODE_LANDSCAPE, 814 CAM_SCENE_MODE_SNOW, 815 CAM_SCENE_MODE_BEACH, 816 CAM_SCENE_MODE_SUNSET, 817 CAM_SCENE_MODE_NIGHT, 818 CAM_SCENE_MODE_PORTRAIT, 819 CAM_SCENE_MODE_BACKLIGHT, 820 CAM_SCENE_MODE_SPORTS, 821 CAM_SCENE_MODE_ANTISHAKE, 822 CAM_SCENE_MODE_FLOWERS, 823 CAM_SCENE_MODE_CANDLELIGHT, 824 CAM_SCENE_MODE_FIREWORKS, 825 CAM_SCENE_MODE_PARTY, 826 CAM_SCENE_MODE_NIGHT_PORTRAIT, 827 CAM_SCENE_MODE_THEATRE, 828 CAM_SCENE_MODE_ACTION, 829 CAM_SCENE_MODE_AR, 830 CAM_SCENE_MODE_FACE_PRIORITY, 831 CAM_SCENE_MODE_BARCODE, 832 CAM_SCENE_MODE_HDR, 833 CAM_SCENE_MODE_AQUA, 834 CAM_SCENE_MODE_MAX 835 } cam_scene_mode_type; 836 837 typedef enum { 838 CAM_EFFECT_MODE_OFF, 839 CAM_EFFECT_MODE_MONO, 840 CAM_EFFECT_MODE_NEGATIVE, 841 CAM_EFFECT_MODE_SOLARIZE, 842 CAM_EFFECT_MODE_SEPIA, 843 CAM_EFFECT_MODE_POSTERIZE, 844 CAM_EFFECT_MODE_WHITEBOARD, 845 CAM_EFFECT_MODE_BLACKBOARD, 846 CAM_EFFECT_MODE_AQUA, 847 CAM_EFFECT_MODE_EMBOSS, 848 CAM_EFFECT_MODE_SKETCH, 849 CAM_EFFECT_MODE_NEON, 850 CAM_EFFECT_MODE_BEAUTY, 851 CAM_EFFECT_MODE_MAX 852 } cam_effect_mode_type; 853 854 typedef enum { 855 CAM_FLASH_MODE_OFF, 856 CAM_FLASH_MODE_AUTO, 857 CAM_FLASH_MODE_ON, 858 CAM_FLASH_MODE_TORCH, 859 CAM_FLASH_MODE_SINGLE, 860 CAM_FLASH_MODE_MAX 861 } cam_flash_mode_t; 862 863 // Flash States 864 typedef enum { 865 CAM_FLASH_STATE_UNAVAILABLE, 866 CAM_FLASH_STATE_CHARGING, 867 CAM_FLASH_STATE_READY, 868 CAM_FLASH_STATE_FIRED, 869 CAM_FLASH_STATE_PARTIAL, 870 CAM_FLASH_STATE_MAX 871 } cam_flash_state_t; 872 873 typedef enum { 874 CAM_FLASH_FIRING_LEVEL_0, 875 CAM_FLASH_FIRING_LEVEL_1, 876 CAM_FLASH_FIRING_LEVEL_2, 877 CAM_FLASH_FIRING_LEVEL_3, 878 CAM_FLASH_FIRING_LEVEL_4, 879 CAM_FLASH_FIRING_LEVEL_5, 880 CAM_FLASH_FIRING_LEVEL_6, 881 CAM_FLASH_FIRING_LEVEL_7, 882 CAM_FLASH_FIRING_LEVEL_8, 883 CAM_FLASH_FIRING_LEVEL_9, 884 CAM_FLASH_FIRING_LEVEL_10, 885 CAM_FLASH_FIRING_LEVEL_MAX 886 } cam_flash_firing_level_t; 887 888 889 typedef enum { 890 CAM_AEC_TRIGGER_IDLE, 891 CAM_AEC_TRIGGER_START 892 } cam_aec_trigger_type_t; 893 894 typedef enum { 895 CAM_AF_TRIGGER_IDLE, 896 CAM_AF_TRIGGER_START, 897 CAM_AF_TRIGGER_CANCEL 898 } cam_af_trigger_type_t; 899 900 // This enum must match nexus_experimental_2017_tracking_af_trigger 901 typedef enum { 902 CAM_TRACKING_AF_TRIGGER_IDLE, 903 CAM_TRACKING_AF_TRIGGER_START, 904 CAM_TRACKING_AF_TRIGGER_STOP, 905 } cam_tracking_af_trigger_t; 906 907 typedef enum { 908 CAM_AE_STATE_INACTIVE, 909 CAM_AE_STATE_SEARCHING, 910 CAM_AE_STATE_CONVERGED, 911 CAM_AE_STATE_LOCKED, 912 CAM_AE_STATE_FLASH_REQUIRED, 913 CAM_AE_STATE_PRECAPTURE 914 } cam_ae_state_t; 915 916 typedef enum { 917 CAM_NOISE_REDUCTION_MODE_OFF, 918 CAM_NOISE_REDUCTION_MODE_FAST, 919 CAM_NOISE_REDUCTION_MODE_HIGH_QUALITY, 920 CAM_NOISE_REDUCTION_MODE_MINIMAL, 921 CAM_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG 922 } cam_noise_reduction_mode_t; 923 924 typedef enum { 925 CAM_EDGE_MODE_OFF, 926 CAM_EDGE_MODE_FAST, 927 CAM_EDGE_MODE_HIGH_QUALITY, 928 CAM_EDGE_MODE_ZERO_SHUTTER_LAG, 929 } cam_edge_mode_t; 930 931 typedef struct { 932 uint8_t edge_mode; 933 int32_t sharpness; 934 } cam_edge_application_t; 935 936 typedef enum { 937 CAM_BLACK_LEVEL_LOCK_OFF, 938 CAM_BLACK_LEVEL_LOCK_ON, 939 } cam_black_level_lock_t; 940 941 typedef enum { 942 CAM_HOTPIXEL_MODE_OFF, 943 CAM_HOTPIXEL_MODE_FAST, 944 CAM_HOTPIXEL_MODE_HIGH_QUALITY, 945 } cam_hotpixel_mode_t; 946 947 typedef enum { 948 CAM_LENS_SHADING_MAP_MODE_OFF, 949 CAM_LENS_SHADING_MAP_MODE_ON, 950 } cam_lens_shading_map_mode_t; 951 952 typedef enum { 953 CAM_LENS_SHADING_MODE_OFF, 954 CAM_LENS_SHADING_MODE_FAST, 955 CAM_LENS_SHADING_MODE_HIGH_QUALITY, 956 } cam_lens_shading_mode_t; 957 958 typedef enum { 959 CAM_FACE_DETECT_MODE_OFF, 960 CAM_FACE_DETECT_MODE_SIMPLE, 961 CAM_FACE_DETECT_MODE_FULL, 962 } cam_face_detect_mode_t; 963 964 typedef enum { 965 CAM_TONEMAP_MODE_CONTRAST_CURVE, 966 CAM_TONEMAP_MODE_FAST, 967 CAM_TONEMAP_MODE_HIGH_QUALITY, 968 } cam_tonemap_mode_t; 969 970 typedef enum { 971 CAM_CDS_MODE_OFF, 972 CAM_CDS_MODE_ON, 973 CAM_CDS_MODE_AUTO, 974 CAM_CDS_MODE_LOCK, 975 CAM_CDS_MODE_MAX 976 } cam_cds_mode_type_t; 977 978 typedef enum { 979 CAM_IR_MODE_OFF, 980 CAM_IR_MODE_ON, 981 CAM_IR_MODE_AUTO, 982 CAM_IR_MODE_MAX 983 } cam_ir_mode_type_t; 984 985 typedef enum { 986 CAM_SENSOR_HDR_OFF, 987 CAM_SENSOR_HDR_IN_SENSOR = 1, 988 CAM_SENSOR_HDR_ZIGZAG, 989 CAM_SENSOR_HDR_STAGGERED, 990 CAM_SENSOR_HDR_MAX, 991 } cam_sensor_hdr_type_t; 992 993 typedef enum { 994 CAM_VIDEO_HDR_MODE_OFF, 995 CAM_VIDEO_HDR_MODE_ON, 996 CAM_VIDEO_HDR_MODE_MAX, 997 } cam_video_hdr_mode_t; 998 999 typedef enum { 1000 CAM_BINNING_CORRECTION_MODE_OFF, 1001 CAM_BINNING_CORRECTION_MODE_ON, 1002 CAM_BINNING_CORRECTION_MODE_MAX, 1003 } cam_binning_correction_mode_t; 1004 1005 typedef struct { 1006 uint32_t size; 1007 uint8_t data[OIS_DATA_MAX_SIZE]; 1008 } cam_ois_data_t; 1009 1010 typedef struct { 1011 int64_t frame_sof_timestamp_boottime; 1012 int32_t num_ois_sample; 1013 int64_t ois_sample_timestamp_boottime[MAX_OIS_SAMPLE_NUM_PER_FRAME]; 1014 float ois_sample_shift_pixel_x[MAX_OIS_SAMPLE_NUM_PER_FRAME]; 1015 float ois_sample_shift_pixel_y[MAX_OIS_SAMPLE_NUM_PER_FRAME]; 1016 } cam_frame_ois_info_t; 1017 1018 typedef struct { 1019 int32_t left; 1020 int32_t top; 1021 int32_t width; 1022 int32_t height; 1023 } cam_rect_t; 1024 1025 typedef struct { 1026 cam_rect_t rect; 1027 int32_t weight; /* weight of the area, valid for focusing/metering areas */ 1028 } cam_area_t; 1029 1030 typedef enum { 1031 CAM_STREAMING_MODE_CONTINUOUS, /* continous streaming */ 1032 CAM_STREAMING_MODE_BURST, /* burst streaming */ 1033 CAM_STREAMING_MODE_BATCH, /* stream frames in batches */ 1034 CAM_STREAMING_MODE_MAX 1035 } cam_streaming_mode_t; 1036 1037 typedef enum { 1038 IS_TYPE_NONE, 1039 IS_TYPE_CROP, 1040 IS_TYPE_DIS, 1041 IS_TYPE_GA_DIS, 1042 IS_TYPE_EIS_2_0, 1043 IS_TYPE_EIS_3_0, 1044 IS_TYPE_MAX 1045 } cam_is_type_t; 1046 1047 typedef enum { 1048 DIS_DISABLE, 1049 DIS_ENABLE 1050 } cam_dis_mode_t; 1051 1052 typedef enum { 1053 NON_SECURE, 1054 SECURE 1055 } cam_stream_secure_t; 1056 1057 #define CAM_REPROCESS_MASK_TYPE_WNR (1<<0) 1058 1059 /* event from server */ 1060 typedef enum { 1061 CAM_EVENT_TYPE_MAP_UNMAP_DONE = (1<<0), 1062 CAM_EVENT_TYPE_AUTO_FOCUS_DONE = (1<<1), 1063 CAM_EVENT_TYPE_ZOOM_DONE = (1<<2), 1064 CAM_EVENT_TYPE_DAEMON_DIED = (1<<3), 1065 CAM_EVENT_TYPE_INT_TAKE_JPEG = (1<<4), 1066 CAM_EVENT_TYPE_INT_TAKE_RAW = (1<<5), 1067 CAM_EVENT_TYPE_DAEMON_PULL_REQ = (1<<6), 1068 CAM_EVENT_TYPE_CAC_DONE = (1<<7), 1069 CAM_EVENT_TYPE_MAX 1070 } cam_event_type_t; 1071 1072 typedef enum { 1073 CAM_EXP_BRACKETING_OFF, 1074 CAM_EXP_BRACKETING_ON 1075 } cam_bracket_mode; 1076 1077 typedef enum { 1078 CAM_LOW_LIGHT_OFF = 0, 1079 CAM_LOW_LIGHT_ON, 1080 } cam_low_light_mode_t; 1081 1082 typedef struct { 1083 cam_bracket_mode mode; 1084 char values[MAX_EXP_BRACKETING_LENGTH]; /* user defined values */ 1085 } cam_exp_bracketing_t; 1086 1087 typedef struct { 1088 uint32_t num_frames; 1089 cam_exp_bracketing_t exp_val; 1090 } cam_hdr_bracketing_info_t; 1091 1092 typedef struct { 1093 cam_bracket_mode mode; 1094 int32_t values; /* user defined values */ 1095 } cam_capture_bracketing_t; 1096 1097 typedef enum { 1098 CAM_SETTINGS_TYPE_OFF, 1099 CAM_SETTINGS_TYPE_ON, 1100 CAM_SETTINGS_TYPE_AUTO 1101 } cam_manual_setting_mode; 1102 1103 typedef struct { 1104 cam_manual_setting_mode exp_mode; 1105 int64_t exp_time; 1106 cam_manual_setting_mode iso_mode; 1107 int32_t iso_value; 1108 } cam_capture_manual_3A_t; 1109 1110 typedef enum { 1111 CAM_CAPTURE_NORMAL, 1112 CAM_CAPTURE_FLASH, 1113 CAM_CAPTURE_BRACKETING, 1114 CAM_CAPTURE_LOW_LIGHT, 1115 CAM_CAPTURE_RESET, 1116 CAM_CAPTURE_MANUAL_3A, 1117 CAM_CAPTURE_LED_CAL, 1118 CAM_CAPTURE_MAX 1119 } cam_capture_type; 1120 1121 typedef struct { 1122 int32_t num_frames; /*Num of frames requested on this quality*/ 1123 cam_capture_type type; /*type of the capture request*/ 1124 1125 /*union to strore values of capture type*/ 1126 union { 1127 cam_flash_mode_t flash_mode; 1128 cam_capture_bracketing_t hdr_mode; 1129 cam_low_light_mode_t low_light_mode; 1130 cam_capture_manual_3A_t manual_3A_mode; 1131 }; 1132 } cam_capture_settings_t; 1133 1134 typedef struct { 1135 uint32_t num_batch; /*Number of frames batch requested*/ 1136 cam_capture_settings_t configs[MAX_CAPTURE_BATCH_NUM]; 1137 } cam_capture_frame_config_t; 1138 1139 typedef struct { 1140 uint8_t stepsize; 1141 uint8_t direction; 1142 int32_t num_steps; 1143 uint8_t ttype; 1144 } tune_actuator_t; 1145 1146 typedef struct { 1147 uint8_t module; 1148 uint8_t type; 1149 int32_t value; 1150 } tune_cmd_t; 1151 1152 typedef enum { 1153 CAM_AEC_ROI_OFF, 1154 CAM_AEC_ROI_ON 1155 } cam_aec_roi_ctrl_t; 1156 1157 typedef enum { 1158 CAM_AEC_ROI_BY_INDEX, 1159 CAM_AEC_ROI_BY_COORDINATE, 1160 } cam_aec_roi_type_t; 1161 1162 typedef struct { 1163 uint32_t x; 1164 uint32_t y; 1165 } cam_coordinate_type_t; 1166 1167 typedef struct { 1168 int32_t numerator; 1169 int32_t denominator; 1170 } cam_rational_type_t; 1171 1172 typedef struct { 1173 cam_aec_roi_ctrl_t aec_roi_enable; 1174 cam_aec_roi_type_t aec_roi_type; 1175 uint8_t num_roi; 1176 union { 1177 cam_coordinate_type_t coordinate[MAX_ROI]; 1178 uint32_t aec_roi_idx[MAX_ROI]; 1179 } cam_aec_roi_position; 1180 } cam_set_aec_roi_t; 1181 1182 typedef struct { 1183 uint32_t frm_id; 1184 uint8_t num_roi; 1185 cam_rect_t roi[MAX_ROI]; 1186 int32_t weight[MAX_ROI]; 1187 uint8_t is_multiwindow; 1188 } cam_roi_info_t; 1189 1190 typedef enum { 1191 CAM_WAVELET_DENOISE_YCBCR_PLANE, 1192 CAM_WAVELET_DENOISE_CBCR_ONLY, 1193 CAM_WAVELET_DENOISE_STREAMLINE_YCBCR, 1194 CAM_WAVELET_DENOISE_STREAMLINED_CBCR 1195 } cam_denoise_process_type_t; 1196 1197 typedef struct { 1198 uint8_t denoise_enable; 1199 cam_denoise_process_type_t process_plates; 1200 } cam_denoise_param_t; 1201 1202 #define CAM_FACE_PROCESS_MASK_DETECTION (1U<<0) 1203 #define CAM_FACE_PROCESS_MASK_RECOGNITION (1U<<1) 1204 #define CAM_FACE_PROCESS_MASK_FOCUS (1U<<2) 1205 #define CAM_FACE_PROCESS_MASK_BLINK (1U<<3) 1206 #define CAM_FACE_PROCESS_MASK_SMILE (1U<<4) 1207 #define CAM_FACE_PROCESS_MASK_GAZE (1U<<5) 1208 1209 /* Keep this in sync with invalid landmark value : system/core/include/system/camera.h */ 1210 #define FACE_INVALID_POINT -2000 1211 1212 typedef struct { 1213 uint32_t fd_mode; /* mask of face process */ 1214 uint32_t num_fd; 1215 } cam_fd_set_parm_t; 1216 1217 typedef enum { 1218 QCAMERA_FD_PREVIEW, 1219 QCAMERA_FD_SNAPSHOT 1220 }qcamera_face_detect_type_t; 1221 1222 typedef enum { 1223 CAM_FACE_CT_POINT_EYE_L_PUPIL, 1224 CAM_FACE_CT_POINT_EYE_L_IN, 1225 CAM_FACE_CT_POINT_EYE_L_OUT, 1226 CAM_FACE_CT_POINT_EYE_L_UP, 1227 CAM_FACE_CT_POINT_EYE_L_DOWN, 1228 CAM_FACE_CT_POINT_EYE_R_PUPIL, 1229 CAM_FACE_CT_POINT_EYE_R_IN, 1230 CAM_FACE_CT_POINT_EYE_R_OUT, 1231 CAM_FACE_CT_POINT_EYE_R_UP, 1232 CAM_FACE_CT_POINT_EYE_R_DOWN, 1233 CAM_FACE_CT_POINT_EYE_MAX 1234 } cam_face_ct_point_eye_t; 1235 1236 typedef enum { 1237 CAM_FACE_CT_POINT_FOREHEAD, 1238 CAM_FACE_CT_POINT_FOREHEAD_MAX 1239 } cam_face_ct_point_forh_t; 1240 1241 typedef enum { 1242 CAM_FACE_CT_POINT_NOSE, 1243 CAM_FACE_CT_POINT_NOSE_TIP, 1244 CAM_FACE_CT_POINT_NOSE_L, 1245 CAM_FACE_CT_POINT_NOSE_R, 1246 CAM_FACE_CT_POINT_NOSE_L_0, 1247 CAM_FACE_CT_POINT_NOSE_R_0, 1248 CAM_FACE_CT_POINT_NOSE_L_1, 1249 CAM_FACE_CT_POINT_NOSE_R_1, 1250 CAM_FACE_CT_POINT_NOSE_MAX 1251 } cam_face_ct_point_nose_t; 1252 1253 typedef enum { 1254 CAM_FACE_CT_POINT_MOUTH_L, 1255 CAM_FACE_CT_POINT_MOUTH_R, 1256 CAM_FACE_CT_POINT_MOUTH_UP, 1257 CAM_FACE_CT_POINT_MOUTH_DOWN, 1258 CAM_FACE_CT_POINT_MOUTH_MAX 1259 } cam_face_ct_point_mouth_t; 1260 1261 typedef enum { 1262 CAM_FACE_CT_POINT_LIP_UP, 1263 CAM_FACE_CT_POINT_LIP_DOWN, 1264 CAM_FACE_CT_POINT_LIP_MAX 1265 } cam_face_ct_point_lip_t; 1266 1267 typedef enum { 1268 CAM_FACE_CT_POINT_BROW_L_UP, 1269 CAM_FACE_CT_POINT_BROW_L_DOWN, 1270 CAM_FACE_CT_POINT_BROW_L_IN, 1271 CAM_FACE_CT_POINT_BROW_L_OUT, 1272 CAM_FACE_CT_POINT_BROW_R_UP, 1273 CAM_FACE_CT_POINT_BROW_R_DOWN, 1274 CAM_FACE_CT_POINT_BROW_R_IN, 1275 CAM_FACE_CT_POINT_BROW_R_OUT, 1276 CAM_FACE_CT_POINT_BROW_MAX 1277 } cam_face_ct_point_brow_t; 1278 1279 typedef enum { 1280 CAM_FACE_CT_POINT_CHIN, 1281 CAM_FACE_CT_POINT_CHIN_L, 1282 CAM_FACE_CT_POINT_CHIN_R, 1283 CAM_FACE_CT_POINT_CHIN_MAX 1284 } cam_face_ct_point_chin_t; 1285 1286 typedef enum { 1287 CAM_FACE_CT_POINT_EAR_L_DOWN, 1288 CAM_FACE_CT_POINT_EAR_R_DOWN, 1289 CAM_FACE_CT_POINT_EAR_L_UP, 1290 CAM_FACE_CT_POINT_EAR_R_UP, 1291 CAM_FACE_CT_POINT_EAR_MAX 1292 } cam_face_ct_point_ear_t; 1293 1294 typedef struct { 1295 uint8_t is_eye_valid; 1296 cam_coordinate_type_t contour_eye_pt[CAM_FACE_CT_POINT_EYE_MAX]; 1297 uint8_t is_forehead_valid; 1298 cam_coordinate_type_t contour_forh_pt[CAM_FACE_CT_POINT_FOREHEAD_MAX]; 1299 uint8_t is_nose_valid; 1300 cam_coordinate_type_t contour_nose_pt[CAM_FACE_CT_POINT_NOSE_MAX]; 1301 uint8_t is_mouth_valid; 1302 cam_coordinate_type_t contour_mouth_pt[CAM_FACE_CT_POINT_MOUTH_MAX]; 1303 uint8_t is_lip_valid; 1304 cam_coordinate_type_t contour_lip_pt[CAM_FACE_CT_POINT_LIP_MAX]; 1305 uint8_t is_brow_valid; 1306 cam_coordinate_type_t contour_brow_pt[CAM_FACE_CT_POINT_BROW_MAX]; 1307 uint8_t is_chin_valid; 1308 cam_coordinate_type_t contour_chin_pt[CAM_FACE_CT_POINT_CHIN_MAX]; 1309 uint8_t is_ear_valid; 1310 cam_coordinate_type_t contour_ear_pt[CAM_FACE_CT_POINT_EAR_MAX]; 1311 } cam_face_contour_info_t; 1312 1313 typedef struct { 1314 cam_face_contour_info_t face_contour[MAX_ROI]; 1315 } cam_face_contour_data_t; 1316 1317 typedef struct { 1318 uint8_t is_left_eye_valid; 1319 cam_coordinate_type_t left_eye_center; /* coordinate of center of left eye */ 1320 uint8_t is_right_eye_valid; 1321 cam_coordinate_type_t right_eye_center; /* coordinate of center of right eye */ 1322 uint8_t is_mouth_valid; 1323 cam_coordinate_type_t mouth_center; /* coordinate of center of mouth */ 1324 } cam_face_landmarks_info_t; 1325 1326 typedef struct { 1327 cam_face_landmarks_info_t face_landmarks[MAX_ROI]; 1328 } cam_face_landmarks_data_t; 1329 1330 typedef struct { 1331 uint8_t smile_degree; /* smile degree (0, -100) */ 1332 uint8_t smile_confidence; /* smile confidence (0, 100) */ 1333 } cam_face_smile_info_t; 1334 1335 typedef struct { 1336 cam_face_smile_info_t smile[MAX_ROI]; 1337 } cam_face_smile_data_t; 1338 1339 typedef struct { 1340 int8_t gaze_angle; /* -90 -45 0 45 90 for head left to rigth tilt */ 1341 int32_t updown_dir; /* up down direction (-180, 179) */ 1342 int32_t leftright_dir; /* left right direction (-180, 179) */ 1343 int32_t roll_dir; /* roll direction (-180, 179) */ 1344 int8_t left_right_gaze; /* left right gaze degree (-50, 50) */ 1345 int8_t top_bottom_gaze; /* up down gaze degree (-50, 50) */ 1346 } cam_face_gaze_info_t; 1347 1348 typedef struct { 1349 cam_face_gaze_info_t gaze[MAX_ROI]; 1350 } cam_face_gaze_data_t; 1351 1352 typedef struct { 1353 uint8_t blink_detected; /* if blink is detected */ 1354 uint8_t left_blink; /* left eye blink degeree (0, -100) */ 1355 uint8_t right_blink; /* right eye blink degree (0, - 100) */ 1356 } cam_face_blink_info_t; 1357 1358 typedef struct { 1359 cam_face_blink_info_t blink[MAX_ROI]; 1360 } cam_face_blink_data_t; 1361 1362 typedef struct { 1363 uint8_t face_recognised; /* if face is recognised */ 1364 uint32_t unique_id; /* if face is recognised */ 1365 } cam_face_recog_info_t; 1366 1367 typedef struct { 1368 cam_face_recog_info_t face_rec[MAX_ROI]; 1369 } cam_face_recog_data_t; 1370 1371 typedef struct { 1372 int32_t face_id; /* unique id for face tracking within view unless view changes */ 1373 int8_t score; /* score of confidence (0, -100) */ 1374 cam_rect_t face_boundary; /* boundary of face detected */ 1375 } cam_face_detection_info_t; 1376 1377 typedef struct { 1378 uint32_t frame_id; /* frame index of which faces are detected */ 1379 uint8_t num_faces_detected; /* number of faces detected */ 1380 cam_face_detection_info_t faces[MAX_ROI]; /* detailed information of faces detected */ 1381 qcamera_face_detect_type_t fd_type; /* face detect for preview or snapshot frame*/ 1382 cam_dimension_t fd_frame_dim; /* frame dims on which fd is applied */ 1383 uint8_t update_flag; /* flag to inform whether HAL needs to send cb 1384 * to app or not */ 1385 } cam_face_detection_data_t; 1386 1387 // definition of composite face detection data 1388 typedef struct { 1389 cam_face_detection_data_t detection_data; 1390 1391 int8_t recog_valid; 1392 cam_face_recog_data_t recog_data; 1393 1394 int8_t blink_valid; 1395 cam_face_blink_data_t blink_data; 1396 1397 int8_t gaze_valid; 1398 cam_face_gaze_data_t gaze_data; 1399 1400 int8_t smile_valid; 1401 cam_face_smile_data_t smile_data; 1402 1403 int8_t landmark_valid; 1404 cam_face_landmarks_data_t landmark_data; 1405 1406 int8_t contour_valid; 1407 cam_face_contour_data_t contour_data; 1408 } cam_faces_data_t; 1409 1410 #define CAM_HISTOGRAM_STATS_SIZE 256 1411 #define MIN_CAM_HISTOGRAM_STATS_SIZE 16 1412 1413 typedef enum { 1414 CAM_STATS_CHANNEL_Y, 1415 CAM_STATS_CHANNEL_GR, 1416 CAM_STATS_CHANNEL_GB, 1417 CAM_STATS_CHANNEL_R, 1418 CAM_STATS_CHANNEL_B, 1419 CAM_STATS_CHANNEL_ALL, 1420 CAM_STATS_CHANNEL_MAX 1421 } cam_histogram_data_type; 1422 1423 typedef struct { 1424 uint32_t hist_buf[CAM_HISTOGRAM_STATS_SIZE]; /* buf holding histogram stats data */ 1425 } cam_histogram_data_t; 1426 1427 typedef struct { 1428 cam_histogram_data_type data_type; 1429 cam_histogram_data_t r_stats; 1430 cam_histogram_data_t b_stats; 1431 cam_histogram_data_t gr_stats; 1432 cam_histogram_data_t gb_stats; 1433 } cam_bayer_hist_stats_t; 1434 1435 typedef enum { 1436 CAM_HISTOGRAM_TYPE_BAYER, 1437 CAM_HISTOGRAM_TYPE_YUV 1438 } cam_histogram_type_t; 1439 1440 typedef struct { 1441 cam_histogram_type_t type; 1442 union { 1443 cam_bayer_hist_stats_t bayer_stats; 1444 cam_histogram_data_t yuv_stats; 1445 }; 1446 } cam_hist_stats_t; 1447 1448 enum cam_focus_distance_index{ 1449 CAM_FOCUS_DISTANCE_NEAR_INDEX, /* 0 */ 1450 CAM_FOCUS_DISTANCE_OPTIMAL_INDEX, 1451 CAM_FOCUS_DISTANCE_FAR_INDEX, 1452 CAM_FOCUS_DISTANCE_MAX_INDEX 1453 }; 1454 1455 typedef struct { 1456 float focus_distance[CAM_FOCUS_DISTANCE_MAX_INDEX]; 1457 } cam_focus_distances_info_t; 1458 1459 typedef struct { 1460 uint32_t scale; 1461 float diopter; 1462 } cam_focus_pos_info_t ; 1463 1464 typedef struct { 1465 float lens_shift_um; 1466 uint32_t object_distance_cm; 1467 uint32_t near_field_cm; 1468 uint32_t far_field_cm; 1469 } cam_af_focus_pos_t ; 1470 1471 typedef struct { 1472 float focalLengthRatio; 1473 } cam_focal_length_ratio_t; 1474 1475 typedef struct { 1476 uint8_t needFlush; 1477 uint32_t focused_frame_idx; 1478 } cam_af_flush_info_t; 1479 1480 /* Different autofocus cycle when calling do_autoFocus 1481 * CAM_AF_COMPLETE_EXISTING_SWEEP: Complete existing sweep 1482 * if one is ongoing, and lock. 1483 * CAM_AF_DO_ONE_FULL_SWEEP: Do one full sweep, regardless 1484 * of the current state, and lock. 1485 * CAM_AF_START_CONTINUOUS_SWEEP: Start continous sweep. 1486 * After do_autoFocus, HAL receives an event: CAM_AF_FOCUSED, 1487 * or CAM_AF_NOT_FOCUSED. 1488 * cancel_autoFocus stops any lens movement. 1489 * Each do_autoFocus call only produces 1 FOCUSED/NOT_FOCUSED 1490 * event, not both. 1491 */ 1492 typedef enum { 1493 CAM_AF_COMPLETE_EXISTING_SWEEP, 1494 CAM_AF_DO_ONE_FULL_SWEEP, 1495 CAM_AF_START_CONTINUOUS_SWEEP 1496 } cam_autofocus_cycle_t; 1497 1498 typedef enum { 1499 CAM_AF_SCANNING, 1500 CAM_AF_FOCUSED, 1501 CAM_AF_NOT_FOCUSED, 1502 CAM_CAF_SCANNING, 1503 CAM_CAF_FOCUSED, 1504 CAM_CAF_NOT_FOCUSED, 1505 CAM_AF_INACTIVE 1506 } cam_autofocus_state_t; 1507 1508 //Don't change the order of the AF states below. It should match 1509 //with the corresponding enum in frameworks (camera3.h and 1510 //CameraMetadata.java) 1511 typedef enum { 1512 CAM_AF_STATE_INACTIVE, 1513 CAM_AF_STATE_PASSIVE_SCAN, 1514 CAM_AF_STATE_PASSIVE_FOCUSED, 1515 CAM_AF_STATE_ACTIVE_SCAN, 1516 CAM_AF_STATE_FOCUSED_LOCKED, 1517 CAM_AF_STATE_NOT_FOCUSED_LOCKED, 1518 CAM_AF_STATE_PASSIVE_UNFOCUSED 1519 } cam_af_state_t; 1520 1521 typedef struct { 1522 cam_af_state_t focus_state; /* state of focus */ 1523 cam_focus_distances_info_t focus_dist; /* focus distance */ 1524 cam_focus_mode_type focus_mode; /* focus mode from backend */ 1525 int32_t focus_pos; 1526 cam_af_flush_info_t flush_info; 1527 uint8_t isDepth; 1528 float focus_value; 1529 uint8_t spot_light_detected; 1530 } cam_auto_focus_data_t; 1531 1532 typedef struct { 1533 uint32_t stream_id; 1534 cam_rect_t crop; 1535 cam_rect_t roi_map; 1536 } cam_stream_crop_info_t; 1537 1538 typedef struct { 1539 float widthMargins; /*Width margin in %*/ 1540 float heightMargins; /*Height margin in %*/ 1541 } cam_frame_margins_t; 1542 1543 typedef struct { 1544 uint8_t num_of_streams; 1545 uint8_t ignore_crop; // CPP ignores the CROP in this special mode 1546 cam_stream_crop_info_t crop_info[MAX_NUM_STREAMS]; 1547 cam_frame_margins_t margins; // Margins used by dual camera with spatial alignment block 1548 } cam_crop_data_t; 1549 1550 typedef struct { 1551 uint32_t stream_id; 1552 uint32_t cds_enable; 1553 } cam_stream_cds_info_t; 1554 1555 typedef struct { 1556 uint8_t session_cds_enable; 1557 uint8_t num_of_streams; 1558 cam_stream_cds_info_t cds_info[MAX_NUM_STREAMS]; 1559 } cam_cds_data_t; 1560 1561 typedef enum { 1562 DO_NOT_NEED_FUTURE_FRAME, 1563 NEED_FUTURE_FRAME, 1564 } cam_prep_snapshot_state_t; 1565 1566 typedef enum { 1567 CC_RED_GAIN, 1568 CC_GREEN_RED_GAIN, 1569 CC_GREEN_BLUE_GAIN, 1570 CC_BLUE_GAIN, 1571 CC_GAIN_MAX 1572 } cam_cc_gains_type_t; 1573 1574 typedef struct { 1575 float gains[CC_GAIN_MAX]; 1576 } cam_color_correct_gains_t; 1577 1578 typedef struct { 1579 // If LED is ON and Burst Num > 1, this is first LED ON frame 1580 uint32_t min_frame_idx; 1581 // If LED is ON and Burst Num > 1, this is first LED Off frame after ON 1582 uint32_t max_frame_idx; 1583 // Used only when LED Is ON and burst num > 1 1584 uint32_t num_led_on_frames; 1585 // Skip count after LED is turned OFF 1586 uint32_t frame_skip_count; 1587 // Batch id for each picture request 1588 uint32_t config_batch_idx; 1589 } cam_frame_idx_range_t; 1590 1591 typedef enum { 1592 S_NORMAL = 0, 1593 S_SCENERY, 1594 S_PORTRAIT, 1595 S_PORTRAIT_BACKLIGHT, 1596 S_SCENERY_BACKLIGHT, 1597 S_BACKLIGHT, 1598 S_HDR, 1599 S_MAX_DEFAULT, 1600 S_CUSTOM0 = S_MAX_DEFAULT, 1601 S_CUSTOM1, 1602 S_CUSTOM2, 1603 S_CUSTOM3, 1604 S_CUSTOM4, 1605 S_CUSTOM5, 1606 S_CUSTOM6, 1607 S_CUSTOM7, 1608 S_CUSTOM8, 1609 S_CUSTOM9, 1610 S_MAX, 1611 } cam_auto_scene_t; 1612 1613 typedef struct { 1614 uint32_t is_hdr_scene; 1615 float hdr_confidence; 1616 } cam_asd_hdr_scene_data_t; 1617 1618 typedef struct { 1619 uint32_t detected; 1620 float confidence; 1621 uint32_t auto_compensation; 1622 } cam_asd_scene_info_t; 1623 1624 typedef struct { 1625 cam_auto_scene_t detected_scene; 1626 uint8_t max_n_scenes; 1627 cam_asd_scene_info_t scene_info[S_MAX]; 1628 } cam_asd_decision_t; 1629 1630 1631 typedef struct { 1632 uint32_t meta_frame_id; 1633 } cam_meta_valid_t; 1634 1635 typedef enum { 1636 CAM_SENSOR_RAW, 1637 CAM_SENSOR_YUV, 1638 CAM_SENSOR_MONO 1639 } cam_sensor_t; 1640 1641 typedef struct { 1642 cam_flash_mode_t flash_mode; 1643 float aperture_value; 1644 cam_flash_state_t flash_state; 1645 float focal_length; 1646 float f_number; 1647 int32_t sensing_method; 1648 float crop_factor; 1649 cam_sensor_t sens_type; 1650 } cam_sensor_params_t; 1651 1652 typedef enum { 1653 CAM_METERING_MODE_UNKNOWN = 0, 1654 CAM_METERING_MODE_AVERAGE = 1, 1655 CAM_METERING_MODE_CENTER_WEIGHTED_AVERAGE = 2, 1656 CAM_METERING_MODE_SPOT = 3, 1657 CAM_METERING_MODE_MULTI_SPOT = 4, 1658 CAM_METERING_MODE_PATTERN = 5, 1659 CAM_METERING_MODE_PARTIAL = 6, 1660 CAM_METERING_MODE_OTHER = 255, 1661 } cam_metering_mode_t; 1662 1663 typedef struct { 1664 float exp_time; 1665 int32_t iso_value; 1666 uint32_t flash_needed; 1667 uint32_t settled; 1668 cam_wb_mode_type wb_mode; 1669 uint32_t metering_mode; 1670 uint32_t exposure_program; 1671 uint32_t exposure_mode; 1672 uint32_t scenetype; 1673 float brightness; 1674 float est_snap_exp_time; 1675 int32_t est_snap_iso_value; 1676 uint32_t est_snap_luma; 1677 uint32_t est_snap_target; 1678 } cam_3a_params_t; 1679 1680 typedef struct { 1681 uint64_t sw_version_number; 1682 int32_t aec_debug_data_size; 1683 char aec_private_debug_data[AEC_DEBUG_DATA_SIZE]; 1684 } cam_ae_exif_debug_t; 1685 1686 typedef struct { 1687 int8_t awb_ccm_enable; 1688 int8_t hard_awb_ccm_flag; 1689 int8_t ccm_update_flag; 1690 float ccm[AWB_NUM_CCM_ROWS][AWB_NUM_CCM_COLS]; 1691 float ccm_offset[AWB_NUM_CCM_ROWS]; 1692 } cam_awb_ccm_update_t; 1693 1694 typedef struct { 1695 int32_t cct_value; 1696 cam_awb_gain_t rgb_gains; 1697 cam_awb_ccm_update_t ccm_update; 1698 } cam_awb_params_t; 1699 1700 typedef struct { 1701 int32_t awb_debug_data_size; 1702 char awb_private_debug_data[AWB_DEBUG_DATA_SIZE]; 1703 } cam_awb_exif_debug_t; 1704 1705 /* AF debug data for exif*/ 1706 typedef struct { 1707 int32_t af_debug_data_size; 1708 char af_private_debug_data[AF_DEBUG_DATA_SIZE]; 1709 } cam_af_exif_debug_t; 1710 1711 typedef struct { 1712 int32_t asd_debug_data_size; 1713 char asd_private_debug_data[ASD_DEBUG_DATA_SIZE]; 1714 } cam_asd_exif_debug_t; 1715 1716 typedef struct { 1717 int32_t bg_stats_buffer_size; 1718 int32_t bg_config_buffer_size; 1719 char stats_buffer_private_debug_data[STATS_BUFFER_DEBUG_DATA_SIZE]; 1720 } cam_stats_buffer_exif_debug_t; 1721 1722 typedef struct { 1723 int32_t be_stats_buffer_size; 1724 int32_t be_config_buffer_size; 1725 char bestats_buffer_private_debug_data[BESTATS_BUFFER_DEBUG_DATA_SIZE]; 1726 } cam_bestats_buffer_exif_debug_t; 1727 1728 typedef struct { 1729 int32_t bhist_stats_buffer_size; 1730 char bhist_private_debug_data[BHIST_STATS_DEBUG_DATA_SIZE]; 1731 } cam_bhist_buffer_exif_debug_t; 1732 1733 /* 3A version*/ 1734 typedef struct { 1735 uint16_t major_version; 1736 uint16_t minor_version; 1737 uint16_t patch_version; 1738 uint16_t new_feature_des; 1739 } cam_q3a_version_t; 1740 1741 typedef struct { 1742 int32_t tuning_info_buffer_size; 1743 char tuning_info_private_debug_data[TUNING_INFO_DEBUG_DATA_SIZE]; 1744 } cam_q3a_tuning_info_t; 1745 1746 typedef struct { 1747 uint32_t tuning_data_version; 1748 size_t tuning_sensor_data_size; 1749 size_t tuning_vfe_data_size; 1750 size_t tuning_mod1_stats_data_size; //Stats data 1751 size_t tuning_cpp_data_size; 1752 size_t tuning_cac_data_size; 1753 size_t tuning_cac_data_size2; 1754 size_t tuning_mod3_data_size; 1755 uint8_t data[TUNING_DATA_MAX]; 1756 }tuning_params_t; 1757 1758 typedef struct { 1759 int32_t event_type; 1760 cam_dimension_t dim; 1761 size_t size; 1762 char path[QCAMERA_MAX_FILEPATH_LENGTH]; 1763 cam_format_t picture_format; 1764 } cam_int_evt_params_t; 1765 1766 typedef struct { 1767 uint8_t private_isp_data[MAX_ISP_DATA_SIZE]; 1768 } cam_chromatix_lite_isp_t; 1769 1770 typedef struct { 1771 uint8_t private_pp_data[MAX_PP_DATA_SIZE]; 1772 } cam_chromatix_lite_pp_t; 1773 1774 typedef struct { 1775 uint8_t private_stats_data[MAX_AE_STATS_DATA_SIZE]; 1776 } cam_chromatix_lite_ae_stats_t; 1777 1778 typedef struct { 1779 uint8_t private_stats_data[MAX_AWB_STATS_DATA_SIZE]; 1780 } cam_chromatix_lite_awb_stats_t; 1781 1782 typedef struct { 1783 uint8_t private_stats_data[MAX_AF_STATS_DATA_SIZE]; 1784 } cam_chromatix_lite_af_stats_t; 1785 1786 typedef struct { 1787 uint8_t private_stats_data[MAX_ASD_STATS_DATA_SIZE]; 1788 } cam_chromatix_lite_asd_stats_t; 1789 1790 typedef struct { 1791 uint32_t min_buffers; 1792 uint32_t max_buffers; 1793 } cam_buffer_info_t; 1794 1795 typedef struct { 1796 uint32_t frame_id; 1797 size_t length; 1798 uint8_t *depth_data; 1799 } cam_depth_data_t; 1800 1801 typedef enum { 1802 /* cmd to bundle cameras*/ 1803 CAM_DUAL_CAMERA_BUNDLE_INFO, 1804 /*cmd to suspend or resume cameras*/ 1805 CAM_DUAL_CAMERA_LOW_POWER_MODE, 1806 /*cmd to send information about role switch*/ 1807 CAM_DUAL_CAMERA_MASTER_INFO, 1808 /*Command to Defer dual camera session*/ 1809 CAM_DUAL_CAMERA_DEFER_INFO, 1810 } cam_dual_camera_cmd_type; 1811 1812 typedef enum { 1813 /* Standalone camera (won't be linked) */ 1814 CAM_TYPE_STANDALONE=0, 1815 1816 /* Main camera of the related cam subsystem which controls 1817 HW sync at sensor level*/ 1818 CAM_TYPE_MAIN = (1 << 0), 1819 1820 /* Aux camera of the related cam subsystem */ 1821 CAM_TYPE_AUX = (1 << 1), 1822 1823 /*Secure camera. Is not published*/ 1824 CAM_TYPE_SECURE = (1 << 2), 1825 } cam_sync_type_t; 1826 1827 typedef enum { 1828 CAM_3A_SYNC_NONE, /* Default for single camera, not link */ 1829 CAM_3A_SYNC_FOLLOW, /* Master->Slave: Master updates slave */ 1830 CAM_3A_SYNC_ALGO_CTRL,/* Algorithm updated cameras directly */ 1831 } cam_3a_sync_mode_t; 1832 1833 typedef struct { 1834 cam_dimension_t stream_sizes[MAX_NUM_STREAMS]; 1835 uint32_t num_streams; 1836 cam_stream_type_t type[MAX_NUM_STREAMS]; 1837 cam_feature_mask_t postprocess_mask[MAX_NUM_STREAMS]; 1838 cam_buffer_info_t buffer_info; 1839 cam_is_type_t is_type[MAX_NUM_STREAMS]; 1840 cam_hfr_mode_t hfr_mode; 1841 cam_format_t format[MAX_NUM_STREAMS]; 1842 cam_rotation_t rotation[MAX_NUM_STREAMS]; 1843 uint32_t buf_alignment; 1844 uint32_t min_stride; 1845 uint32_t min_scanline; 1846 uint8_t batch_size; 1847 cam_sync_type_t sync_type; 1848 uint32_t dt[MAX_NUM_STREAMS]; 1849 uint32_t vc[MAX_NUM_STREAMS]; 1850 cam_sub_format_type_t sub_format_type[MAX_NUM_STREAMS]; 1851 cam_frame_margins_t margins[MAX_NUM_STREAMS]; 1852 cam_dimension_t stream_sz_plus_margin[MAX_NUM_STREAMS]; /*stream sizes + margin*/ 1853 uint8_t is_secure; 1854 } cam_stream_size_info_t; 1855 1856 typedef enum { 1857 CAM_INTF_OVERWRITE_MINI_CHROMATIX_OFFLINE, 1858 CAM_INTF_OVERWRITE_ISP_HW_DATA_OFFLINE, 1859 CAM_INTF_OVERWRITE_MINI_CHROMATIX_ONLINE, 1860 CAM_INTF_OVERWRITE_ISP_HW_DATA_ONLINE, 1861 CAM_INTF_OVERWRITE_MAX, 1862 } cam_intf_overwrite_type_t; 1863 1864 typedef struct { 1865 uint8_t lds_enabled; 1866 float rnr_sampling_factor; 1867 } cam_img_hysterisis_info_t; 1868 1869 typedef struct { 1870 /* dynamic feature enablement */ 1871 uint64_t dyn_feature_mask; 1872 /* input frame count for stacking */ 1873 uint32_t input_count; 1874 /* reserved for future use */ 1875 uint8_t reserved[32]; 1876 } cam_dyn_img_data_t; 1877 1878 typedef struct { 1879 cam_intf_overwrite_type_t overwrite_type; 1880 char isp_hw_data_list[4096]; /*add upper bound memory, customer to fill*/ 1881 char chromatix_data_overwrite[4096]; /*add bound memory, customer fill*/ 1882 } cam_hw_data_overwrite_t; 1883 1884 typedef struct { 1885 uint32_t streamID; 1886 uint32_t buf_index; 1887 } cam_stream_request_t; 1888 1889 typedef struct { 1890 uint32_t num_streams; 1891 cam_stream_request_t stream_request[MAX_NUM_STREAMS]; 1892 } cam_stream_ID_t; 1893 1894 /*CAC Message posted during pipeline*/ 1895 typedef struct { 1896 uint32_t frame_id; 1897 int32_t buf_idx; 1898 } cam_cac_info_t; 1899 1900 typedef struct 1901 { 1902 uint32_t id; /* Frame ID */ 1903 uint64_t timestamp; /* Time stamp */ 1904 uint32_t distance_in_mm; /* Distance of object in ROI's in milimeters */ 1905 uint32_t confidence; /* Confidence on distance from 0(No confidence)to 1024(max) */ 1906 uint32_t status; /* Status of DCRF library execution call */ 1907 cam_rect_t focused_roi; /* ROI's for which distance is estimated */ 1908 uint32_t focused_x; /* Focus location X inside ROI with distance estimation */ 1909 uint32_t focused_y; /* Focus location Y inside ROI with distance estimation */ 1910 } cam_dcrf_result_t; 1911 1912 typedef struct { 1913 uint32_t frame_id; 1914 uint32_t num_streams; 1915 uint32_t stream_id[MAX_NUM_STREAMS]; 1916 } cam_buf_divert_info_t; 1917 1918 typedef enum { 1919 CAM_SPATIAL_ALIGN_QTI = 1 << 0, 1920 CAM_SPATIAL_ALIGN_OEM = 1 << 1 1921 } cam_spatial_align_type_t; 1922 1923 typedef struct { 1924 int32_t shift_horz; 1925 int32_t shift_vert; 1926 } cam_sac_output_shift_t; 1927 1928 typedef struct { 1929 uint8_t is_master_hint_valid; 1930 uint8_t master_hint; 1931 uint8_t is_master_preview_valid; 1932 uint8_t master_preview; 1933 uint8_t is_master_3A_valid; 1934 uint8_t master_3A; 1935 uint8_t is_ready_status_valid; 1936 uint8_t ready_status; 1937 uint8_t is_output_shift_valid; 1938 cam_sac_output_shift_t output_shift; 1939 cam_dimension_t reference_res_for_output_shift; 1940 uint8_t is_focus_roi_shift_valid; 1941 cam_sac_output_shift_t focus_roi_shift; 1942 cam_dimension_t reference_res_for_focus_roi_shift; 1943 } cam_sac_output_info_t; 1944 1945 1946 typedef struct { 1947 uint8_t is_stats_valid; /* if histgram data is valid */ 1948 cam_hist_stats_t stats_data; /* histogram data */ 1949 1950 uint8_t is_faces_valid; /* if face detection data is valid */ 1951 cam_face_detection_data_t faces_data; /* face detection result */ 1952 1953 uint8_t is_focus_valid; /* if focus data is valid */ 1954 cam_auto_focus_data_t focus_data; /* focus data */ 1955 1956 uint8_t is_crop_valid; /* if crop data is valid */ 1957 cam_crop_data_t crop_data; /* crop data */ 1958 1959 uint8_t is_prep_snapshot_done_valid; /* if prep snapshot done is valid */ 1960 cam_prep_snapshot_state_t prep_snapshot_done_state; /* prepare snapshot done state */ 1961 1962 uint8_t is_cac_valid; /* if cac info is valid */ 1963 cam_cac_info_t cac_info; /* cac info */ 1964 1965 /* Hysterisis data from Img modules */ 1966 uint8_t is_hyst_info_valid; /* if hyst info is valid */ 1967 cam_img_hysterisis_info_t img_hyst_info; /* hyst info */ 1968 1969 /* if good frame idx range is valid */ 1970 uint8_t is_good_frame_idx_range_valid; 1971 /* good frame idx range, make sure: 1972 * 1. good_frame_idx_range.min_frame_idx > current_frame_idx 1973 * 2. good_frame_idx_range.min_frame_idx - current_frame_idx < 100 */ 1974 cam_frame_idx_range_t good_frame_idx_range; 1975 1976 cam_asd_decision_t cam_asd_info; 1977 1978 char private_metadata[MAX_METADATA_PRIVATE_PAYLOAD_SIZE_IN_BYTES]; 1979 1980 /* AE parameters */ 1981 uint8_t is_3a_params_valid; 1982 cam_3a_params_t cam_3a_params; 1983 1984 /* AE exif debug parameters */ 1985 uint8_t is_ae_exif_debug_valid; 1986 cam_ae_exif_debug_t ae_exif_debug_params; 1987 1988 /* AWB exif debug parameters */ 1989 uint8_t is_awb_exif_debug_valid; 1990 cam_awb_exif_debug_t awb_exif_debug_params; 1991 1992 /* AF exif debug parameters */ 1993 uint8_t is_af_exif_debug_valid; 1994 cam_af_exif_debug_t af_exif_debug_params; 1995 1996 /* ASD exif debug parameters */ 1997 uint8_t is_asd_exif_debug_valid; 1998 cam_asd_exif_debug_t asd_exif_debug_params; 1999 2000 /* Stats buffer exif debug parameters */ 2001 uint8_t is_stats_buffer_exif_debug_valid; 2002 cam_stats_buffer_exif_debug_t stats_buffer_exif_debug_params; 2003 2004 /* BE stats buffer exif debug parameters */ 2005 uint8_t is_bestats_buffer_exif_debug_valid; 2006 cam_bestats_buffer_exif_debug_t bestats_buffer_exif_debug_params; 2007 2008 /* Bhist exif debug parameters. */ 2009 uint8_t is_bhist_exif_debug_valid; 2010 cam_bhist_buffer_exif_debug_t bhist_exif_debug_params; 2011 2012 /* AWB parameters */ 2013 uint8_t is_awb_params_valid; 2014 cam_awb_params_t awb_params; 2015 2016 /* sensor parameters */ 2017 uint8_t is_sensor_params_valid; 2018 cam_sensor_params_t sensor_params; 2019 2020 /* Meta valid params */ 2021 uint8_t is_meta_valid; 2022 cam_meta_valid_t meta_valid_params; 2023 2024 /*Tuning Data*/ 2025 uint8_t is_tuning_params_valid; 2026 tuning_params_t tuning_params; 2027 2028 uint8_t is_chromatix_lite_isp_valid; 2029 cam_chromatix_lite_isp_t chromatix_lite_isp_data; 2030 2031 uint8_t is_chromatix_lite_pp_valid; 2032 cam_chromatix_lite_pp_t chromatix_lite_pp_data; 2033 2034 uint8_t is_chromatix_lite_ae_stats_valid; 2035 cam_chromatix_lite_ae_stats_t chromatix_lite_ae_stats_data; 2036 2037 uint8_t is_chromatix_lite_awb_stats_valid; 2038 cam_chromatix_lite_awb_stats_t chromatix_lite_awb_stats_data; 2039 2040 uint8_t is_chromatix_lite_af_stats_valid; 2041 cam_chromatix_lite_af_stats_t chromatix_lite_af_stats_data; 2042 2043 uint8_t is_dcrf_result_valid; 2044 cam_dcrf_result_t dcrf_result; 2045 2046 /* Dynamic feature enablement from postprocessing modules */ 2047 uint8_t is_dyn_img_data_valid; 2048 cam_dyn_img_data_t dyn_img_data; 2049 2050 } cam_metadata_info_t; 2051 2052 typedef enum { 2053 CAM_INTF_PARM_HAL_VERSION = 0x1, 2054 2055 /* Overall mode of 3A control routines. We need to have this parameter 2056 * because not all android.control.* have an OFF option, for example, 2057 * AE_FPS_Range, aePrecaptureTrigger */ 2058 CAM_INTF_META_MODE, 2059 /* Whether AE is currently updating the sensor exposure and sensitivity 2060 * fields */ 2061 CAM_INTF_META_AEC_MODE, 2062 CAM_INTF_PARM_WHITE_BALANCE, 2063 CAM_INTF_PARM_FOCUS_MODE, 2064 2065 /* common between HAL1 and HAL3 */ 2066 CAM_INTF_PARM_ANTIBANDING, 2067 CAM_INTF_PARM_EXPOSURE_COMPENSATION, 2068 CAM_INTF_PARM_EV_STEP, 2069 CAM_INTF_PARM_AEC_LOCK, 2070 CAM_INTF_PARM_FPS_RANGE, /* 10 */ 2071 CAM_INTF_PARM_AWB_LOCK, 2072 CAM_INTF_PARM_EFFECT, 2073 CAM_INTF_PARM_BESTSHOT_MODE, 2074 CAM_INTF_PARM_DIS_ENABLE, 2075 CAM_INTF_PARM_LED_MODE, 2076 CAM_INTF_META_HISTOGRAM, 2077 CAM_INTF_META_FACE_DETECTION, 2078 /* Whether optical image stabilization is enabled. */ 2079 CAM_INTF_META_LENS_OPT_STAB_MODE, 2080 /* specific to HAl1 */ 2081 CAM_INTF_META_AUTOFOCUS_DATA, 2082 CAM_INTF_PARM_QUERY_FLASH4SNAP, /* 20 */ 2083 CAM_INTF_PARM_EXPOSURE, 2084 CAM_INTF_PARM_SHARPNESS, 2085 CAM_INTF_PARM_CONTRAST, 2086 CAM_INTF_PARM_SATURATION, 2087 CAM_INTF_PARM_BRIGHTNESS, 2088 CAM_INTF_PARM_ISO, 2089 CAM_INTF_PARM_ZOOM, 2090 CAM_INTF_PARM_ROLLOFF, 2091 CAM_INTF_PARM_MODE, /* camera mode */ 2092 CAM_INTF_PARM_AEC_ALGO_TYPE, /* 30 */ /* auto exposure algorithm */ 2093 CAM_INTF_PARM_FOCUS_ALGO_TYPE, /* focus algorithm */ 2094 CAM_INTF_PARM_AEC_ROI, 2095 CAM_INTF_PARM_AF_ROI, 2096 CAM_INTF_PARM_SCE_FACTOR, 2097 CAM_INTF_PARM_FD, 2098 CAM_INTF_PARM_MCE, 2099 CAM_INTF_PARM_HFR, 2100 CAM_INTF_PARM_REDEYE_REDUCTION, 2101 CAM_INTF_PARM_WAVELET_DENOISE, 2102 CAM_INTF_PARM_TEMPORAL_DENOISE, /* 40 */ 2103 CAM_INTF_PARM_HISTOGRAM, 2104 CAM_INTF_PARM_ASD_ENABLE, 2105 CAM_INTF_PARM_RECORDING_HINT, 2106 CAM_INTF_PARM_HDR, 2107 CAM_INTF_PARM_MAX_DIMENSION, 2108 CAM_INTF_PARM_SENSOR_MODE_INFO, 2109 CAM_INTF_PARM_CURRENT_SENSOR_MODE_INFO, 2110 CAM_INTF_PARM_FRAMESKIP, 2111 CAM_INTF_PARM_ZSL_MODE, /* indicating if it's running in ZSL mode */ 2112 CAM_INTF_PARM_BURST_NUM, 2113 CAM_INTF_PARM_RETRO_BURST_NUM, /* 50 */ 2114 CAM_INTF_PARM_BURST_LED_ON_PERIOD, 2115 CAM_INTF_PARM_HDR_NEED_1X, /* if HDR needs 1x output */ 2116 CAM_INTF_PARM_LOCK_CAF, 2117 CAM_INTF_PARM_VIDEO_HDR, 2118 CAM_INTF_PARM_SENSOR_HDR, 2119 CAM_INTF_PARM_ROTATION, 2120 CAM_INTF_PARM_SCALE, 2121 CAM_INTF_PARM_VT, /* indicating if it's a Video Call Apllication */ 2122 CAM_INTF_META_CROP_DATA, 2123 CAM_INTF_META_PREP_SNAPSHOT_DONE, /* 60 */ 2124 CAM_INTF_META_GOOD_FRAME_IDX_RANGE, 2125 CAM_INTF_META_ASD_HDR_SCENE_DATA, 2126 CAM_INTF_META_ASD_SCENE_INFO, 2127 CAM_INTF_META_CURRENT_SCENE, 2128 CAM_INTF_META_AEC_INFO, 2129 CAM_INTF_META_SENSOR_INFO, 2130 CAM_INTF_META_CHROMATIX_LITE_ISP, 2131 CAM_INTF_META_CHROMATIX_LITE_PP, 2132 CAM_INTF_META_CHROMATIX_LITE_AE, 2133 CAM_INTF_META_CHROMATIX_LITE_AWB, /* 70 */ 2134 CAM_INTF_META_CHROMATIX_LITE_AF, 2135 CAM_INTF_META_CHROMATIX_LITE_ASD, 2136 CAM_INTF_META_EXIF_DEBUG_AE, 2137 CAM_INTF_META_EXIF_DEBUG_AWB, 2138 CAM_INTF_META_EXIF_DEBUG_AF, 2139 CAM_INTF_META_EXIF_DEBUG_ASD, 2140 CAM_INTF_META_EXIF_DEBUG_STATS, 2141 CAM_INTF_META_EXIF_DEBUG_BESTATS, 2142 CAM_INTF_META_EXIF_DEBUG_BHIST, 2143 CAM_INTF_META_EXIF_DEBUG_3A_TUNING, 2144 CAM_INTF_PARM_GET_CHROMATIX, 2145 CAM_INTF_PARM_SET_RELOAD_CHROMATIX, 2146 CAM_INTF_PARM_SET_AUTOFOCUSTUNING, /* 80 */ 2147 CAM_INTF_PARM_GET_AFTUNE, 2148 CAM_INTF_PARM_SET_RELOAD_AFTUNE, 2149 CAM_INTF_PARM_SET_VFE_COMMAND, 2150 CAM_INTF_PARM_SET_PP_COMMAND, 2151 CAM_INTF_PARM_TINTLESS, 2152 CAM_INTF_PARM_LONGSHOT_ENABLE, 2153 CAM_INTF_PARM_RDI_MODE, 2154 CAM_INTF_PARM_CDS_MODE, 2155 CAM_INTF_PARM_TONE_MAP_MODE, 2156 CAM_INTF_PARM_CAPTURE_FRAME_CONFIG, /* 90 */ 2157 CAM_INTF_PARM_DUAL_LED_CALIBRATION, 2158 CAM_INTF_PARM_ADV_CAPTURE_MODE, 2159 2160 /* stream based parameters */ 2161 CAM_INTF_PARM_DO_REPROCESS, 2162 CAM_INTF_PARM_SET_BUNDLE, 2163 CAM_INTF_PARM_STREAM_FLIP, 2164 CAM_INTF_PARM_GET_OUTPUT_CROP, 2165 2166 CAM_INTF_PARM_EZTUNE_CMD, 2167 CAM_INTF_PARM_INT_EVT, 2168 2169 /* specific to HAL3 */ 2170 /* Whether the metadata maps to a valid frame number */ 2171 CAM_INTF_META_FRAME_NUMBER_VALID, 2172 /* Whether the urgent metadata maps to a valid frame number */ 2173 CAM_INTF_META_URGENT_FRAME_NUMBER_VALID, 2174 /* Whether the stream buffer corresponding this frame is dropped or not */ 2175 CAM_INTF_META_FRAME_DROPPED, /* 100 */ 2176 /* COLOR CORRECTION.*/ 2177 CAM_INTF_META_COLOR_CORRECT_MODE, 2178 /* A transform matrix to chromatically adapt pixels in the CIE XYZ (1931) 2179 * color space from the scene illuminant to the sRGB-standard D65-illuminant. */ 2180 CAM_INTF_META_COLOR_CORRECT_TRANSFORM, 2181 /*Color channel gains in the Bayer raw domain in the order [RGeGoB]*/ 2182 CAM_INTF_META_COLOR_CORRECT_GAINS, 2183 /*The best fit color transform matrix calculated by the stats*/ 2184 CAM_INTF_META_PRED_COLOR_CORRECT_TRANSFORM, 2185 /*The best fit color channels gains calculated by the stats*/ 2186 CAM_INTF_META_PRED_COLOR_CORRECT_GAINS, 2187 /* CONTROL */ 2188 /* A frame counter set by the framework. Must be maintained unchanged in 2189 * output frame. */ 2190 CAM_INTF_META_FRAME_NUMBER, 2191 /* A frame counter set by the framework. Must be maintained unchanged in 2192 * output frame. */ 2193 CAM_INTF_META_URGENT_FRAME_NUMBER, 2194 /* Choose sensor mode which has Full FOV when multiple modes satisfy the 2195 * other requirements. MUST be defined before CAM_INTF_META_STREAM_INFO */ 2196 CAM_INTF_META_SENSOR_MODE_FULLFOV, 2197 /*Number of streams and size of streams in current configuration*/ 2198 CAM_INTF_META_STREAM_INFO, 2199 /* List of areas to use for metering */ 2200 CAM_INTF_META_AEC_ROI, 2201 /* Whether the HAL must trigger precapture metering.*/ 2202 CAM_INTF_META_AEC_PRECAPTURE_TRIGGER, /* 110 */ 2203 /* The ID sent with the latest CAMERA2_TRIGGER_PRECAPTURE_METERING call */ 2204 /* Current state of AE algorithm */ 2205 CAM_INTF_META_AEC_STATE, 2206 /* Tracking AF trigger. This has to be before AF_ROI so that the behavior of 2207 * AF_ROI depends on TRACKING_AF_TRIGGER.*/ 2208 CAM_INTF_META_TRACKING_AF_TRIGGER, 2209 /* List of areas to use for focus estimation */ 2210 CAM_INTF_META_AF_ROI, 2211 /* Default ROI of the camera to be sent to FOV control*/ 2212 CAM_INTF_META_AF_DEFAULT_ROI, 2213 /* Whether the HAL must trigger autofocus. */ 2214 CAM_INTF_META_AF_TRIGGER, 2215 /* Current state of AF algorithm */ 2216 CAM_INTF_META_AF_STATE, 2217 /* List of areas to use for illuminant estimation */ 2218 CAM_INTF_META_AWB_REGIONS, 2219 /* Current state of AWB algorithm */ 2220 CAM_INTF_META_AWB_STATE, 2221 /*Whether black level compensation is frozen or free to vary*/ 2222 CAM_INTF_META_BLACK_LEVEL_LOCK, 2223 /* Information to 3A routines about the purpose of this capture, to help 2224 * decide optimal 3A strategy */ 2225 CAM_INTF_META_CAPTURE_INTENT, 2226 /* DEMOSAIC */ 2227 /* Controls the quality of the demosaicing processing */ 2228 CAM_INTF_META_DEMOSAIC, 2229 /* EDGE */ 2230 /* Operation mode for edge enhancement */ 2231 CAM_INTF_META_EDGE_MODE, /* 120 */ 2232 /* Control the amount of edge enhancement applied to the images.*/ 2233 /* 1-10; 10 is maximum sharpening */ 2234 CAM_INTF_META_SHARPNESS_STRENGTH, 2235 /* FLASH */ 2236 /* Power for flash firing/torch, 10 is max power; 0 is no flash. Linear */ 2237 CAM_INTF_META_FLASH_POWER, 2238 /* Firing time of flash relative to start of exposure, in nanoseconds*/ 2239 CAM_INTF_META_FLASH_FIRING_TIME, 2240 /* Current state of the flash unit */ 2241 CAM_INTF_META_FLASH_STATE, 2242 /* GEOMETRIC */ 2243 /* Operating mode of geometric correction */ 2244 CAM_INTF_META_GEOMETRIC_MODE, 2245 /* Control the amount of shading correction applied to the images */ 2246 CAM_INTF_META_GEOMETRIC_STRENGTH, 2247 /* HOT PIXEL */ 2248 /* Set operational mode for hot pixel correction */ 2249 CAM_INTF_META_HOTPIXEL_MODE, 2250 /* LENS */ 2251 /* Size of the lens aperture */ 2252 CAM_INTF_META_LENS_APERTURE, 2253 /* State of lens neutral density filter(s) */ 2254 CAM_INTF_META_LENS_FILTERDENSITY, 2255 /* Lens optical zoom setting */ 2256 CAM_INTF_META_LENS_FOCAL_LENGTH, /* 130 */ 2257 /* Distance to plane of sharpest focus, measured from frontmost surface 2258 * of the lens */ 2259 CAM_INTF_META_LENS_FOCUS_DISTANCE, 2260 /* The range of scene distances that are in sharp focus (depth of field) */ 2261 CAM_INTF_META_LENS_FOCUS_RANGE, 2262 /*Whether the hal needs to output the lens shading map*/ 2263 CAM_INTF_META_LENS_SHADING_MAP_MODE, 2264 /* Current lens status */ 2265 CAM_INTF_META_LENS_STATE, 2266 /* NOISE REDUCTION */ 2267 /* Mode of operation for the noise reduction algorithm */ 2268 CAM_INTF_META_NOISE_REDUCTION_MODE, 2269 /* Control the amount of noise reduction applied to the images. 2270 * 1-10; 10 is max noise reduction */ 2271 CAM_INTF_META_NOISE_REDUCTION_STRENGTH, 2272 /* SCALER */ 2273 /* Top-left corner and width of the output region to select from the active 2274 * pixel array */ 2275 CAM_INTF_META_SCALER_CROP_REGION, 2276 /* The estimated scene illumination lighting frequency */ 2277 CAM_INTF_META_SCENE_FLICKER, 2278 /* SENSOR */ 2279 /* Duration each pixel is exposed to light, in nanoseconds */ 2280 CAM_INTF_META_SENSOR_EXPOSURE_TIME, 2281 /* Duration from start of frame exposure to start of next frame exposure, 2282 * in nanoseconds */ 2283 CAM_INTF_META_SENSOR_FRAME_DURATION, /* 140 */ 2284 /* Gain applied to image data. Must be implemented through analog gain only 2285 * if set to values below 'maximum analog sensitivity'. */ 2286 CAM_INTF_META_SENSOR_SENSITIVITY, 2287 /* Time at start of exposure of first row */ 2288 CAM_INTF_META_SENSOR_TIMESTAMP, 2289 /* Time at start of exposure of first row, AV timestamp */ 2290 CAM_INTF_META_SENSOR_TIMESTAMP_AV, 2291 /* Duration b/w start of first row exposure and the start of last 2292 row exposure in nanoseconds */ 2293 CAM_INTF_META_SENSOR_ROLLING_SHUTTER_SKEW, 2294 /* SHADING */ 2295 /* Quality of lens shading correction applied to the image data */ 2296 CAM_INTF_META_SHADING_MODE, 2297 /* Control the amount of shading correction applied to the images. 2298 * unitless: 1-10; 10 is full shading compensation */ 2299 CAM_INTF_META_SHADING_STRENGTH, 2300 /* STATISTICS */ 2301 /* State of the face detector unit */ 2302 CAM_INTF_META_STATS_FACEDETECT_MODE, 2303 /* Operating mode for histogram generation */ 2304 CAM_INTF_META_STATS_HISTOGRAM_MODE, 2305 /* Operating mode for sharpness map generation */ 2306 CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, 2307 /* A 3-channel sharpness map, based on the raw sensor data, 2308 * If only a monochrome sharpness map is supported, all channels 2309 * should have the same data 2310 */ 2311 CAM_INTF_META_STATS_SHARPNESS_MAP, 2312 2313 /* TONEMAP */ 2314 /* Tone map mode */ 2315 CAM_INTF_META_TONEMAP_MODE, /* 150 */ 2316 /* Table mapping RGB input values to output values */ 2317 CAM_INTF_META_TONEMAP_CURVES, 2318 2319 CAM_INTF_META_FLASH_MODE, 2320 /* 2D array of gain factors for each color channel that was used to 2321 * compensate for lens shading for this frame */ 2322 CAM_INTF_META_LENS_SHADING_MAP, 2323 CAM_INTF_META_PRIVATE_DATA, 2324 CAM_INTF_PARM_STATS_DEBUG_MASK, 2325 CAM_INTF_PARM_STATS_AF_PAAF, 2326 /* Indicates streams ID of all the requested buffers */ 2327 CAM_INTF_META_STREAM_ID, 2328 CAM_INTF_PARM_FOCUS_BRACKETING, 2329 CAM_INTF_PARM_FLASH_BRACKETING, 2330 CAM_INTF_PARM_GET_IMG_PROP, /* 160 */ 2331 CAM_INTF_META_JPEG_GPS_COORDINATES, 2332 CAM_INTF_META_JPEG_GPS_PROC_METHODS, 2333 CAM_INTF_META_JPEG_GPS_TIMESTAMP, 2334 CAM_INTF_META_JPEG_ORIENTATION, 2335 CAM_INTF_META_JPEG_QUALITY, 2336 CAM_INTF_META_JPEG_THUMB_QUALITY, 2337 CAM_INTF_META_JPEG_THUMB_SIZE, 2338 2339 CAM_INTF_META_TEST_PATTERN_DATA, 2340 /* DNG file support */ 2341 CAM_INTF_META_PROFILE_TONE_CURVE, 2342 CAM_INTF_META_NEUTRAL_COL_POINT, /* 170 */ 2343 2344 /* CAC */ 2345 CAM_INTF_META_CAC_INFO, 2346 CAM_INTF_PARM_CAC, 2347 CAM_INTF_META_IMG_HYST_INFO, 2348 2349 /* trigger for all modules to read the debug/log level properties */ 2350 CAM_INTF_PARM_UPDATE_DEBUG_LEVEL, 2351 2352 /* OTP : WB gr/gb */ 2353 CAM_INTF_META_OTP_WB_GRGB, 2354 /* LED override for EZTUNE */ 2355 CAM_INTF_META_LED_MODE_OVERRIDE, 2356 /* auto lens position info */ 2357 CAM_INTF_META_FOCUS_POSITION, 2358 /* Manual exposure time */ 2359 CAM_INTF_PARM_EXPOSURE_TIME, 2360 /* AWB meta data info */ 2361 CAM_INTF_META_AWB_INFO, 2362 /* Manual lens position info */ 2363 CAM_INTF_PARM_MANUAL_FOCUS_POS, /* 180 */ 2364 /* Manual White balance gains */ 2365 CAM_INTF_PARM_WB_MANUAL, 2366 /* Offline Data Overwrite */ 2367 CAM_INTF_PARM_HW_DATA_OVERWRITE, 2368 /* IMG LIB reprocess debug section */ 2369 CAM_INTF_META_IMGLIB, /* cam_intf_meta_imglib_t */ 2370 /* OEM specific parameters */ 2371 CAM_INTF_PARM_CUSTOM, 2372 /* parameters added for related cameras */ 2373 /* fetch calibration info for related cam subsystem */ 2374 CAM_INTF_PARM_RELATED_SENSORS_CALIBRATION, 2375 /* focal length ratio info */ 2376 CAM_INTF_META_AF_FOCAL_LENGTH_RATIO, 2377 /* crop for binning & FOV adjust */ 2378 CAM_INTF_META_SNAP_CROP_INFO_SENSOR, 2379 /* crop for trimming edge pixels */ 2380 CAM_INTF_META_SNAP_CROP_INFO_CAMIF, 2381 /* crop for FOV adjust and zoom */ 2382 CAM_INTF_META_SNAP_CROP_INFO_ISP, 2383 /* crop for image-stabilization and zoom */ 2384 CAM_INTF_META_SNAP_CROP_INFO_CPP, /* 190 */ 2385 /* parameter for enabling DCRF */ 2386 CAM_INTF_PARM_DCRF, 2387 /* metadata tag for DCRF info */ 2388 CAM_INTF_META_DCRF, 2389 /* FLIP mode parameter*/ 2390 CAM_INTF_PARM_FLIP, 2391 /*Frame divert info from ISP*/ 2392 CAM_INTF_BUF_DIVERT_INFO, 2393 /* Use AV timer */ 2394 CAM_INTF_META_USE_AV_TIMER, 2395 CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR, 2396 /* Special event to request stream frames*/ 2397 CAM_INTF_PARM_REQUEST_FRAMES, 2398 /* Special event to request operational mode*/ 2399 CAM_INTF_PARM_REQUEST_OPS_MODE, 2400 /*Black level parameters*/ 2401 CAM_INTF_META_LDAF_EXIF, 2402 CAM_INTF_META_BLACK_LEVEL_SOURCE_PATTERN, 2403 /* Applied black level pattern in RGGB order */ 2404 CAM_INTF_META_BLACK_LEVEL_APPLIED_PATTERN, /* 200 */ 2405 CAM_INTF_META_CDS_DATA, 2406 /*3A low light level information*/ 2407 CAM_INTF_META_LOW_LIGHT, 2408 /* dynamic feature detection */ 2409 CAM_INTF_META_IMG_DYN_FEAT, /* 200 */ 2410 /*Parameter entry to communicate manual 2411 capture type*/ 2412 CAM_INTF_PARM_MANUAL_CAPTURE_TYPE, 2413 /*AF state change detected by AF module*/ 2414 CAM_INTF_AF_STATE_TRANSITION, 2415 /* face recognition */ 2416 CAM_INTF_META_FACE_RECOG, 2417 /* face blink detection */ 2418 CAM_INTF_META_FACE_BLINK, 2419 /* face gaze detection */ 2420 CAM_INTF_META_FACE_GAZE, 2421 /* face smile detection */ 2422 CAM_INTF_META_FACE_SMILE, 2423 /* face landmark detection */ 2424 CAM_INTF_META_FACE_LANDMARK, /* 210 */ 2425 /* face contour detection */ 2426 CAM_INTF_META_FACE_CONTOUR, 2427 /* Whether EIS is enabled */ 2428 CAM_INTF_META_VIDEO_STAB_MODE, 2429 /* Touch exposure compensation (EV) status */ 2430 CAM_INTF_META_TOUCH_AE_RESULT, 2431 /* Param for updating initial exposure index value*/ 2432 CAM_INTF_PARM_INITIAL_EXPOSURE_INDEX, 2433 /* Gain applied post raw capture prior to stats collection. 2434 ISP digital gain */ 2435 CAM_INTF_META_ISP_SENSITIVITY, 2436 /* Param for enabling instant aec*/ 2437 CAM_INTF_PARM_INSTANT_AEC, 2438 /* Param for tracking previous reprocessing activity */ 2439 CAM_INTF_META_REPROCESS_FLAGS, 2440 /* Param of cropping information for JPEG encoder */ 2441 CAM_INTF_PARM_JPEG_ENCODE_CROP, 2442 /* Param of scaling information for JPEG encoder */ 2443 CAM_INTF_PARM_JPEG_SCALE_DIMENSION, 2444 /*Param for updating Quadra CFA mode */ 2445 CAM_INTF_PARM_QUADRA_CFA, 2446 /* Meta Raw Dim */ 2447 CAM_INTF_META_RAW, 2448 /* Number of streams and size of streams in 2449 current configuration for pic res*/ 2450 CAM_INTF_META_STREAM_INFO_FOR_PIC_RES, 2451 CAM_INTF_META_FOCUS_DEPTH_INFO, 2452 /* Operation Mode for IR */ 2453 CAM_INTF_META_IR_MODE, 2454 /* AEC,AWB Speed control enabled */ 2455 CAM_INTF_META_AEC_CONVERGENCE_SPEED, 2456 CAM_INTF_META_AWB_CONVERGENCE_SPEED, 2457 /*Focus value output from af core*/ 2458 CAM_INTF_META_FOCUS_VALUE, 2459 /*Spot light detection result output from af core*/ 2460 CAM_INTF_META_SPOT_LIGHT_DETECT, 2461 /* HAL based HDR*/ 2462 CAM_INTF_PARM_HAL_BRACKETING_HDR, 2463 /* Dual camera - Spatial Alignment Compute/Correction output info*/ 2464 CAM_INTF_META_DC_SAC_OUTPUT_INFO, 2465 /* Dual camera - enable low power mode for the slave camera */ 2466 CAM_INTF_META_DC_LOW_POWER_ENABLE, 2467 /* Dual camera - indicate if in the snapshot postprocess zoom range */ 2468 CAM_INTF_META_DC_IN_SNAPSHOT_PP_ZOOM_RANGE, 2469 /* Dual camera - indicate if snapshot bokeh mode is selected */ 2470 CAM_INTF_META_DC_BOKEH_MODE, 2471 CAM_INTF_PARM_FOV_COMP_ENABLE, 2472 /*Meta to update dual LED calibration results to app*/ 2473 CAM_INTF_META_LED_CALIB_RESULT, 2474 /* Whether to enable hybrid ae mode */ 2475 CAM_INTF_META_HYBRID_AE, 2476 /* Whether to enable motion detection */ 2477 CAM_INTF_META_MOTION_DETECTION_ENABLE, 2478 /* DevCamDebug metadata CAM_TYPES.h */ 2479 CAM_INTF_META_DEV_CAM_ENABLE, 2480 /* DevCamDebug metadata CAM_TYPES.h AF */ 2481 CAM_INTF_META_DEV_CAM_AF_LENS_POSITION, 2482 CAM_INTF_META_AF_TOF_CONFIDENCE, 2483 CAM_INTF_META_AF_TOF_DISTANCE, 2484 CAM_INTF_META_DEV_CAM_AF_LUMA, 2485 CAM_INTF_META_DEV_CAM_AF_HAF_STATE, 2486 CAM_INTF_META_DEV_CAM_AF_MONITOR_PDAF_TARGET_POS, 2487 CAM_INTF_META_DEV_CAM_AF_MONITOR_PDAF_CONFIDENCE, 2488 CAM_INTF_META_DEV_CAM_AF_MONITOR_PDAF_REFOCUS, 2489 CAM_INTF_META_DEV_CAM_AF_MONITOR_TOF_TARGET_POS, 2490 CAM_INTF_META_DEV_CAM_AF_MONITOR_TOF_CONFIDENCE, 2491 CAM_INTF_META_DEV_CAM_AF_MONITOR_TOF_REFOCUS, 2492 CAM_INTF_META_DEV_CAM_AF_MONITOR_TYPE_SELECT, 2493 CAM_INTF_META_DEV_CAM_AF_MONITOR_REFOCUS, 2494 CAM_INTF_META_DEV_CAM_AF_MONITOR_TARGET_POS, 2495 CAM_INTF_META_DEV_CAM_AF_SEARCH_PDAF_TARGET_POS, 2496 CAM_INTF_META_DEV_CAM_AF_SEARCH_PDAF_NEXT_POS, 2497 CAM_INTF_META_DEV_CAM_AF_SEARCH_PDAF_NEAR_POS, 2498 CAM_INTF_META_DEV_CAM_AF_SEARCH_PDAF_FAR_POS, 2499 CAM_INTF_META_DEV_CAM_AF_SEARCH_PDAF_CONFIDENCE, 2500 CAM_INTF_META_DEV_CAM_AF_SEARCH_TOF_TARGET_POS, 2501 CAM_INTF_META_DEV_CAM_AF_SEARCH_TOF_NEXT_POS, 2502 CAM_INTF_META_DEV_CAM_AF_SEARCH_TOF_NEAR_POS, 2503 CAM_INTF_META_DEV_CAM_AF_SEARCH_TOF_FAR_POS, 2504 CAM_INTF_META_DEV_CAM_AF_SEARCH_TOF_CONFIDENCE, 2505 CAM_INTF_META_DEV_CAM_AF_SEARCH_TYPE_SELECT, 2506 CAM_INTF_META_DEV_CAM_AF_SEARCH_NEXT_POS, 2507 CAM_INTF_META_DEV_CAM_AF_SEARCH_TARGET_POS, 2508 /* DevCamDebug metadata CAM_TYPES.h AEC */ 2509 CAM_INTF_META_DEV_CAM_AEC_TARGET_LUMA, 2510 CAM_INTF_META_DEV_CAM_AEC_COMP_LUMA, 2511 CAM_INTF_META_DEV_CAM_AEC_AVG_LUMA, 2512 CAM_INTF_META_DEV_CAM_AEC_CUR_LUMA, 2513 CAM_INTF_META_DEV_CAM_AEC_LINECOUNT, 2514 CAM_INTF_META_DEV_CAM_AEC_REAL_GAIN, 2515 CAM_INTF_META_DEV_CAM_AEC_EXP_INDEX, 2516 CAM_INTF_META_DEV_CAM_AEC_LUX_IDX, 2517 /* DevCamDebug metadata CAM_TYPES.h zzHDR */ 2518 CAM_INTF_META_DEV_CAM_AEC_L_REAL_GAIN, 2519 CAM_INTF_META_DEV_CAM_AEC_L_LINECOUNT, 2520 CAM_INTF_META_DEV_CAM_AEC_S_REAL_GAIN, 2521 CAM_INTF_META_DEV_CAM_AEC_S_LINECOUNT, 2522 CAM_INTF_META_DEV_CAM_AEC_HDR_SENSITIVITY_RATIO, 2523 CAM_INTF_META_DEV_CAM_AEC_HDR_EXP_TIME_RATIO, 2524 /* DevCamDebug metadata CAM_TYPES.h ARDC */ 2525 CAM_INTF_META_DEV_CAM_AEC_TOTAL_DRC_GAIN, 2526 CAM_INTF_META_DEV_CAM_AEC_COLOR_DRC_GAIN, 2527 CAM_INTF_META_DEV_CAM_AEC_GTM_RATIO, 2528 CAM_INTF_META_DEV_CAM_AEC_LTM_RATIO, 2529 CAM_INTF_META_DEV_CAM_AEC_LA_RATIO, 2530 CAM_INTF_META_DEV_CAM_AEC_GAMMA_RATIO, 2531 /* DevCamDebug metadata CAM_INTF.H AEC MOTION */ 2532 CAM_INTF_META_DEV_CAM_AEC_CAMERA_MOTION_DX, 2533 CAM_INTF_META_DEV_CAM_AEC_CAMERA_MOTION_DY, 2534 CAM_INTF_META_DEV_CAM_AEC_SUBJECT_MOTION, 2535 /* DevCamDebug metadata CAM_TYPES.h AWB */ 2536 CAM_INTF_META_DEV_CAM_AWB_R_GAIN, 2537 CAM_INTF_META_DEV_CAM_AWB_G_GAIN, 2538 CAM_INTF_META_DEV_CAM_AWB_B_GAIN, 2539 CAM_INTF_META_DEV_CAM_AWB_CCT, 2540 CAM_INTF_META_DEV_CAM_AWB_DECISION, 2541 /* DevCamDebug metadata end */ 2542 /* AF scene change */ 2543 CAM_INTF_META_AF_SCENE_CHANGE, 2544 /* Gain applied post stats collection in ISP */ 2545 CAM_INTF_META_ISP_POST_STATS_SENSITIVITY, 2546 /* Dual camera - user zoom value. This will always be the wider camera zoom value */ 2547 CAM_INTF_PARM_DC_USERZOOM, 2548 /* Dual camera sync parameter */ 2549 CAM_INTF_PARM_SYNC_DC_PARAMETERS, 2550 /* AF focus position info */ 2551 CAM_INTF_META_AF_FOCUS_POS, 2552 /* AEC LUX index */ 2553 CAM_INTF_META_AEC_LUX_INDEX, 2554 /* Object's focus distance in cm*/ 2555 CAM_INTF_META_AF_OBJ_DIST_CM, 2556 /* Binning Correction Algorithm */ 2557 CAM_INTF_META_BINNING_CORRECTION_MODE, 2558 /* Read Sensor OIS data */ 2559 CAM_INTF_META_OIS_READ_DATA, 2560 /* OIS data info within frame */ 2561 CAM_INTF_META_FRAME_OIS_DATA, 2562 CAM_INTF_META_PDAF_DATA_ENABLE, 2563 /*event to flush stream buffers*/ 2564 CAM_INTF_PARM_FLUSH_FRAMES, 2565 /* Number of histogram bins */ 2566 CAM_INTF_META_STATS_HISTOGRAM_BINS, 2567 /* AF regions condidence */ 2568 CAM_INTF_META_AF_REGIONS_CONFIDENCE, 2569 /* Early AF state due to trigger */ 2570 CAM_INTF_META_EARLY_AF_STATE, 2571 /* Exposure time boost */ 2572 CAM_INTF_META_EXP_TIME_BOOST, 2573 /* Easel HDR+ makernote */ 2574 CAM_INTF_META_MAKERNOTE, 2575 /* EIS crop information */ 2576 CAM_INTF_META_EIS_CROP_INFO, 2577 CAM_INTF_PARM_MAX 2578 } cam_intf_parm_type_t; 2579 2580 typedef struct { 2581 uint32_t forced; 2582 union { 2583 uint32_t force_linecount_value; 2584 float force_gain_value; 2585 float force_snap_exp_value; 2586 float force_exp_value; 2587 uint32_t force_snap_linecount_value; 2588 float force_snap_gain_value; 2589 } u; 2590 } cam_ez_force_params_t; 2591 2592 typedef struct { 2593 float cam_black_level[4]; 2594 } cam_black_level_metadata_t; 2595 2596 typedef enum { 2597 CAM_EZTUNE_CMD_STATUS, 2598 CAM_EZTUNE_CMD_AEC_ENABLE, 2599 CAM_EZTUNE_CMD_AWB_ENABLE, 2600 CAM_EZTUNE_CMD_AF_ENABLE, 2601 CAM_EZTUNE_CMD_AEC_FORCE_LINECOUNT, 2602 CAM_EZTUNE_CMD_AEC_FORCE_GAIN, 2603 CAM_EZTUNE_CMD_AEC_FORCE_EXP, 2604 CAM_EZTUNE_CMD_AEC_FORCE_SNAP_LC, 2605 CAM_EZTUNE_CMD_AEC_FORCE_SNAP_GAIN, 2606 CAM_EZTUNE_CMD_AEC_FORCE_SNAP_EXP, 2607 CAM_EZTUNE_CMD_AWB_MODE, 2608 CAM_EZTUNE_CMD_AWB_FORCE_DUAL_LED_IDX, 2609 } cam_eztune_cmd_type_t; 2610 2611 typedef struct { 2612 cam_eztune_cmd_type_t cmd; 2613 union { 2614 int32_t running; 2615 int32_t aec_enable; 2616 int32_t awb_enable; 2617 int32_t af_enable; 2618 cam_ez_force_params_t ez_force_param; 2619 int32_t awb_mode; 2620 int32_t ez_force_dual_led_idx; 2621 } u; 2622 } cam_eztune_cmd_data_t; 2623 2624 2625 /***************************************************************************** 2626 * Code for HAL3 data types * 2627 ****************************************************************************/ 2628 typedef enum { 2629 CAM_INTF_METADATA_MAX 2630 } cam_intf_metadata_type_t; 2631 2632 typedef enum { 2633 CAM_INTENT_CUSTOM, 2634 CAM_INTENT_PREVIEW, 2635 CAM_INTENT_STILL_CAPTURE, 2636 CAM_INTENT_VIDEO_RECORD, 2637 CAM_INTENT_VIDEO_SNAPSHOT, 2638 CAM_INTENT_ZERO_SHUTTER_LAG, 2639 CAM_INTENT_MANUAL, 2640 CAM_INTENT_MOTION_TRACKING, 2641 CAM_INTENT_MAX, 2642 } cam_intent_t; 2643 2644 typedef enum { 2645 /* Full application control of pipeline. All 3A routines are disabled, 2646 * no other settings in android.control.* have any effect */ 2647 CAM_CONTROL_OFF, 2648 /* Use settings for each individual 3A routine. Manual control of capture 2649 * parameters is disabled. All controls in android.control.* besides sceneMode 2650 * take effect */ 2651 CAM_CONTROL_AUTO, 2652 /* Use specific scene mode. Enabling this disables control.aeMode, 2653 * control.awbMode and control.afMode controls; the HAL must ignore those 2654 * settings while USE_SCENE_MODE is active (except for FACE_PRIORITY scene mode). 2655 * Other control entries are still active. This setting can only be used if 2656 * availableSceneModes != UNSUPPORTED. TODO: Should we remove this and handle this 2657 * in HAL ?*/ 2658 CAM_CONTROL_USE_SCENE_MODE, 2659 CAM_CONTROL_MAX 2660 } cam_control_mode_t; 2661 2662 typedef enum { 2663 /* Use the android.colorCorrection.transform matrix to do color conversion */ 2664 CAM_COLOR_CORRECTION_TRANSFORM_MATRIX, 2665 /* Must not slow down frame rate relative to raw bayer output */ 2666 CAM_COLOR_CORRECTION_FAST, 2667 /* Frame rate may be reduced by high quality */ 2668 CAM_COLOR_CORRECTION_HIGH_QUALITY, 2669 } cam_color_correct_mode_t; 2670 2671 typedef enum { 2672 CAM_COLOR_CORRECTION_ABERRATION_OFF, 2673 CAM_COLOR_CORRECTION_ABERRATION_FAST, 2674 CAM_COLOR_CORRECTION_ABERRATION_HIGH_QUALITY, 2675 CAM_COLOR_CORRECTION_ABERRATION_MAX 2676 } cam_aberration_mode_t; 2677 2678 #define CC_MATRIX_ROWS 3 2679 #define CC_MATRIX_COLS 3 2680 2681 typedef struct { 2682 /* 3x3 float matrix in row-major order. each element is in range of (0, 1) */ 2683 cam_rational_type_t transform_matrix[CC_MATRIX_ROWS][CC_MATRIX_COLS]; 2684 } cam_color_correct_matrix_t; 2685 2686 #define CAM_FOCAL_LENGTHS_MAX 1 2687 #define CAM_APERTURES_MAX 1 2688 #define CAM_FILTER_DENSITIES_MAX 1 2689 #define CAM_MAX_MAP_HEIGHT 6 2690 #define CAM_MAX_MAP_WIDTH 6 2691 #define CAM_MAX_SHADING_MAP_WIDTH 17 2692 #define CAM_MAX_SHADING_MAP_HEIGHT 13 2693 #define CAM_MAX_TONEMAP_CURVE_SIZE 64 2694 #define CAM_MAX_FLASH_BRACKETING 5 2695 2696 typedef struct { 2697 /* A 1D array of pairs of floats. 2698 * Mapping a 0-1 input range to a 0-1 output range. 2699 * The input range must be monotonically increasing with N, 2700 * and values between entries should be linearly interpolated. 2701 * For example, if the array is: [0.0, 0.0, 0.3, 0.5, 1.0, 1.0], 2702 * then the input->output mapping for a few sample points would be: 2703 * 0 -> 0, 0.15 -> 0.25, 0.3 -> 0.5, 0.5 -> 0.64 */ 2704 float tonemap_points[CAM_MAX_TONEMAP_CURVE_SIZE][2]; 2705 } cam_tonemap_curve_t; 2706 2707 typedef struct { 2708 size_t tonemap_points_cnt; 2709 cam_tonemap_curve_t curves[3]; 2710 } cam_rgb_tonemap_curves; 2711 2712 typedef struct { 2713 size_t tonemap_points_cnt; 2714 cam_tonemap_curve_t curve; 2715 } cam_profile_tone_curve; 2716 2717 #define NEUTRAL_COL_POINTS 3 2718 2719 typedef struct { 2720 cam_rational_type_t neutral_col_point[NEUTRAL_COL_POINTS]; 2721 } cam_neutral_col_point_t; 2722 2723 typedef enum { 2724 OFF, 2725 FAST, 2726 QUALITY, 2727 } cam_quality_preference_t; 2728 2729 typedef enum { 2730 CAM_FLASH_CTRL_OFF, 2731 CAM_FLASH_CTRL_SINGLE, 2732 CAM_FLASH_CTRL_TORCH 2733 } cam_flash_ctrl_t; 2734 2735 typedef struct { 2736 uint8_t ae_mode; 2737 uint8_t awb_mode; 2738 uint8_t af_mode; 2739 } cam_scene_mode_overrides_t; 2740 2741 typedef struct { 2742 int32_t left; 2743 int32_t top; 2744 int32_t width; 2745 int32_t height; 2746 } cam_crop_region_t; 2747 2748 typedef struct { 2749 /* Estimated sharpness for each region of the input image. 2750 * Normalized to be between 0 and maxSharpnessMapValue. 2751 * Higher values mean sharper (better focused) */ 2752 int32_t sharpness[CAM_MAX_MAP_WIDTH][CAM_MAX_MAP_HEIGHT]; 2753 } cam_sharpness_map_t; 2754 2755 typedef struct { 2756 float lens_shading[4*CAM_MAX_SHADING_MAP_HEIGHT*CAM_MAX_SHADING_MAP_WIDTH]; 2757 } cam_lens_shading_map_t; 2758 2759 typedef struct { 2760 int32_t min_value; 2761 int32_t max_value; 2762 int32_t def_value; 2763 int32_t step; 2764 } cam_control_range_t; 2765 2766 #define CAM_QCOM_FEATURE_NONE (cam_feature_mask_t)0UL 2767 #define CAM_QCOM_FEATURE_FACE_DETECTION ((cam_feature_mask_t)1UL<<0) 2768 #define CAM_QCOM_FEATURE_DENOISE2D ((cam_feature_mask_t)1UL<<1) 2769 #define CAM_QCOM_FEATURE_CROP ((cam_feature_mask_t)1UL<<2) 2770 #define CAM_QCOM_FEATURE_ROTATION ((cam_feature_mask_t)1UL<<3) 2771 #define CAM_QCOM_FEATURE_FLIP ((cam_feature_mask_t)1UL<<4) 2772 #define CAM_QCOM_FEATURE_HDR ((cam_feature_mask_t)1UL<<5) 2773 #define CAM_QCOM_FEATURE_REGISTER_FACE ((cam_feature_mask_t)1UL<<6) 2774 #define CAM_QCOM_FEATURE_SHARPNESS ((cam_feature_mask_t)1UL<<7) 2775 #define CAM_QCOM_FEATURE_VIDEO_HDR ((cam_feature_mask_t)1UL<<8) 2776 #define CAM_QCOM_FEATURE_CAC ((cam_feature_mask_t)1UL<<9) 2777 #define CAM_QCOM_FEATURE_SCALE ((cam_feature_mask_t)1UL<<10) 2778 #define CAM_QCOM_FEATURE_EFFECT ((cam_feature_mask_t)1UL<<11) 2779 #define CAM_QCOM_FEATURE_UBIFOCUS ((cam_feature_mask_t)1UL<<12) 2780 #define CAM_QCOM_FEATURE_CHROMA_FLASH ((cam_feature_mask_t)1UL<<13) 2781 #define CAM_QCOM_FEATURE_OPTIZOOM ((cam_feature_mask_t)1UL<<14) 2782 #define CAM_QCOM_FEATURE_SENSOR_HDR ((cam_feature_mask_t)1UL<<15) 2783 #define CAM_QCOM_FEATURE_REFOCUS ((cam_feature_mask_t)1UL<<16) 2784 #define CAM_QCOM_FEATURE_CPP_TNR ((cam_feature_mask_t)1UL<<17) 2785 #define CAM_QCOM_FEATURE_RAW_PROCESSING ((cam_feature_mask_t)1UL<<18) 2786 #define CAM_QCOM_FEATURE_TRUEPORTRAIT ((cam_feature_mask_t)1UL<<19) 2787 #define CAM_QCOM_FEATURE_LLVD ((cam_feature_mask_t)1UL<<20) 2788 #define CAM_QCOM_FEATURE_DIS20 ((cam_feature_mask_t)1UL<<21) 2789 #define CAM_QCOM_FEATURE_STILLMORE ((cam_feature_mask_t)1UL<<22) 2790 #define CAM_QCOM_FEATURE_DCRF ((cam_feature_mask_t)1UL<<23) 2791 #define CAM_QCOM_FEATURE_CDS ((cam_feature_mask_t)1UL<<24) 2792 #define CAM_QCOM_FEATURE_EZTUNE ((cam_feature_mask_t)1UL<<25) 2793 #define CAM_QCOM_FEATURE_DSDN ((cam_feature_mask_t)1UL<<26) //Special CDS in CPP block 2794 #define CAM_QCOM_FEATURE_SW2D ((cam_feature_mask_t)1UL<<27) 2795 #define CAM_OEM_FEATURE_1 ((cam_feature_mask_t)1UL<<28) 2796 #define CAM_OEM_FEATURE_2 ((cam_feature_mask_t)1UL<<29) 2797 #define CAM_QTI_FEATURE_SW_TNR ((cam_feature_mask_t)1UL<<30) 2798 #define CAM_QCOM_FEATURE_METADATA_PROCESSING ((cam_feature_mask_t)1UL<<31) 2799 #define CAM_QCOM_FEATURE_PAAF (((cam_feature_mask_t)1UL)<<32) 2800 #define CAM_QCOM_FEATURE_QUADRA_CFA (((cam_feature_mask_t)1UL)<<33) 2801 #define CAM_QTI_FEATURE_PPEISCORE (((cam_feature_mask_t)1UL)<<34) 2802 #define CAM_QCOM_FEATURE_ZIGZAG_HDR (((cam_feature_mask_t)1UL)<<35) 2803 #define CAM_QCOM_FEATURE_STAGGERED_VIDEO_HDR (((cam_feature_mask_t)1UL)<<36) 2804 #define CAM_QCOM_FEATURE_METADATA_BYPASS (((cam_feature_mask_t)1UL)<<37) 2805 #define CAM_QTI_FEATURE_SAT (((cam_feature_mask_t)1UL)<<38) 2806 #define CAM_QTI_FEATURE_CPP_DOWNSCALE (((cam_feature_mask_t)1UL)<<39) 2807 #define CAM_QTI_FEATURE_FIXED_FOVC (((cam_feature_mask_t)1UL) << 40) 2808 #define CAM_QCOM_FEATURE_IR (((cam_feature_mask_t)1UL)<<41) 2809 #define CAM_QTI_FEATURE_SAC (((cam_feature_mask_t)1UL)<<42) 2810 #define CAM_QTI_FEATURE_RTBDM (((cam_feature_mask_t)1UL)<<43) 2811 #define CAM_QTI_FEATURE_BINNING_CORRECTION (((cam_feature_mask_t)1UL)<<44) 2812 #define CAM_QTI_FEATURE_RTB (((cam_feature_mask_t)1UL)<<45) 2813 #define CAM_QCOM_FEATURE_GOOG_ZOOM (((cam_feature_mask_t)1UL)<<46) 2814 #define CAM_QCOM_FEATURE_PP_SUPERSET (CAM_QCOM_FEATURE_DENOISE2D|CAM_QCOM_FEATURE_CROP|\ 2815 CAM_QCOM_FEATURE_ROTATION|CAM_QCOM_FEATURE_SHARPNESS|\ 2816 CAM_QCOM_FEATURE_SCALE|CAM_QCOM_FEATURE_CAC|\ 2817 CAM_QCOM_FEATURE_EZTUNE|CAM_QCOM_FEATURE_CPP_TNR|\ 2818 CAM_QCOM_FEATURE_LLVD|CAM_QCOM_FEATURE_QUADRA_CFA) 2819 2820 #define CAM_QCOM_FEATURE_PP_PASS_1 CAM_QCOM_FEATURE_PP_SUPERSET 2821 #define CAM_QCOM_FEATURE_PP_PASS_2 CAM_QCOM_FEATURE_SCALE | CAM_QCOM_FEATURE_CROP; 2822 2823 typedef struct { 2824 cam_rotation_t rotation; /* jpeg rotation */ 2825 cam_rotation_t device_rotation; /* device rotation */ 2826 uint32_t streamId; 2827 } cam_rotation_info_t; 2828 2829 typedef enum { 2830 FLIP_NONE = 0, /* 00b */ 2831 FLIP_H = 1, /* 01b */ 2832 FLIP_V = 2, /* 10b */ 2833 FLIP_V_H = 3, /* 11b */ 2834 } cam_flip_t; 2835 2836 typedef struct { 2837 uint32_t bundle_id; /* bundle id */ 2838 uint8_t num_of_streams; /* number of streams in the bundle */ 2839 uint32_t stream_ids[MAX_STREAM_NUM_IN_BUNDLE]; /* array of stream ids to be bundled */ 2840 } cam_bundle_config_t; 2841 2842 typedef enum { 2843 CAM_ONLINE_REPROCESS_TYPE, /* online reprocess, frames from running streams */ 2844 CAM_OFFLINE_REPROCESS_TYPE, /* offline reprocess, frames from external source */ 2845 } cam_reprocess_type_enum_t; 2846 2847 typedef struct { 2848 uint8_t burst_count; 2849 uint8_t min_burst_count; 2850 uint8_t max_burst_count; 2851 } cam_still_more_t; 2852 2853 typedef struct { 2854 uint8_t burst_count; 2855 uint8_t output_count; 2856 uint8_t flash_bracketing[CAM_MAX_FLASH_BRACKETING]; 2857 uint8_t metadata_index; 2858 } cam_chroma_flash_t; 2859 2860 typedef enum { 2861 CAM_HDR_MODE_SINGLEFRAME, /* Single frame HDR mode which does only tone mapping */ 2862 CAM_HDR_MODE_MULTIFRAME, /* Multi frame HDR mode which needs two frames with 0.5x and 2x exposure respectively */ 2863 } cam_hdr_mode_enum_t; 2864 2865 typedef struct { 2866 uint32_t hdr_enable; 2867 uint32_t hdr_need_1x; /* when CAM_QCOM_FEATURE_HDR enabled, indicate if 1x is needed for output */ 2868 cam_hdr_mode_enum_t hdr_mode; 2869 } cam_hdr_param_t; 2870 2871 typedef struct { 2872 int32_t output_width; 2873 int32_t output_height; 2874 } cam_scale_param_t; 2875 2876 typedef struct { 2877 uint8_t enable; 2878 uint8_t burst_count; 2879 uint8_t focus_steps[MAX_AF_BRACKETING_VALUES]; 2880 uint8_t output_count; 2881 uint32_t meta_max_size; 2882 } cam_af_bracketing_t; 2883 2884 typedef struct { 2885 uint8_t enable; 2886 uint8_t burst_count; 2887 } cam_flash_bracketing_t; 2888 2889 typedef struct { 2890 uint8_t enable; 2891 uint8_t burst_count; 2892 uint8_t zoom_threshold; 2893 } cam_opti_zoom_t; 2894 2895 typedef struct { 2896 size_t meta_max_size; 2897 } cam_true_portrait_t; 2898 2899 typedef enum { 2900 CAM_FLASH_OFF, 2901 CAM_FLASH_ON 2902 } cam_flash_value_t; 2903 2904 typedef struct { 2905 cam_sensor_t sens_type; 2906 cam_format_t native_format; 2907 } cam_sensor_type_t; 2908 2909 typedef struct { 2910 uint32_t result; 2911 uint32_t header_size; 2912 uint32_t width; 2913 uint32_t height; 2914 uint8_t data[0]; 2915 } cam_misc_buf_t; 2916 2917 typedef struct { 2918 uint32_t misc_buffer_index; 2919 } cam_misc_buf_param_t; 2920 2921 typedef struct { 2922 /* reprocess feature mask */ 2923 cam_feature_mask_t feature_mask; 2924 2925 /* individual setting for features to be reprocessed */ 2926 cam_denoise_param_t denoise2d; 2927 cam_rect_t input_crop; 2928 cam_rotation_t rotation; 2929 uint32_t flip; 2930 int32_t sharpness; 2931 int32_t effect; 2932 cam_hdr_param_t hdr_param; 2933 cam_scale_param_t scale_param; 2934 2935 uint8_t zoom_level; 2936 cam_flash_value_t flash_value; 2937 cam_misc_buf_param_t misc_buf_param; 2938 uint32_t burst_cnt; 2939 uint8_t cur_reproc_count; 2940 uint8_t total_reproc_count; 2941 } cam_pp_feature_config_t; 2942 2943 typedef struct { 2944 uint32_t input_stream_id; 2945 /* input source stream type */ 2946 cam_stream_type_t input_stream_type; 2947 } cam_pp_online_src_config_t; 2948 2949 typedef struct { 2950 /* image format */ 2951 cam_format_t input_fmt; 2952 2953 /* image dimension */ 2954 cam_dimension_t input_dim; 2955 2956 /* buffer plane information, will be calc based on stream_type, fmt, 2957 dim, and padding_info(from stream config). Info including: 2958 offset_x, offset_y, stride, scanline, plane offset */ 2959 cam_stream_buf_plane_info_t input_buf_planes; 2960 2961 /* number of input reprocess buffers */ 2962 uint8_t num_of_bufs; 2963 2964 /* input source type */ 2965 cam_stream_type_t input_type; 2966 2967 } cam_pp_offline_src_config_t; 2968 2969 /* reprocess stream input configuration */ 2970 typedef struct { 2971 /* input source config */ 2972 cam_reprocess_type_enum_t pp_type; 2973 union { 2974 cam_pp_online_src_config_t online; 2975 cam_pp_offline_src_config_t offline; 2976 }; 2977 2978 /* pp feature config */ 2979 cam_pp_feature_config_t pp_feature_config; 2980 } cam_stream_reproc_config_t; 2981 2982 typedef struct { 2983 uint8_t crop_enabled; 2984 cam_rect_t input_crop; 2985 } cam_crop_param_t; 2986 2987 typedef struct { 2988 uint8_t trigger; 2989 int32_t trigger_id; 2990 } cam_trigger_t; 2991 2992 typedef struct { 2993 cam_denoise_param_t denoise2d; 2994 cam_crop_param_t crop; 2995 uint32_t flip; /* 0 means no flip */ 2996 uint32_t uv_upsample; /* 0 means no chroma upsampling */ 2997 int32_t sharpness; /* 0 means no sharpness */ 2998 int32_t effect; 2999 cam_rotation_t rotation; 3000 cam_rotation_t device_rotation; 3001 } cam_per_frame_pp_config_t; 3002 3003 typedef enum { 3004 CAM_OPT_STAB_OFF, 3005 CAM_OPT_STAB_ON, 3006 CAM_OPT_STAB_MAX 3007 } cam_optical_stab_modes_t; 3008 3009 typedef enum { 3010 CAM_FILTER_ARRANGEMENT_RGGB, 3011 CAM_FILTER_ARRANGEMENT_GRBG, 3012 CAM_FILTER_ARRANGEMENT_GBRG, 3013 CAM_FILTER_ARRANGEMENT_BGGR, 3014 3015 /* Sensor is not Bayer; output has 3 16-bit values for each pixel, 3016 * instead of just 1 16-bit value per pixel.*/ 3017 CAM_FILTER_ARRANGEMENT_RGB, 3018 /* Sensor is YUV; SW do not have access to actual RAW, 3019 * output is interleaved UYVY */ 3020 CAM_FILTER_ARRANGEMENT_UYVY, 3021 CAM_FILTER_ARRANGEMENT_YUYV, 3022 CAM_FILTER_ARRANGEMENT_Y 3023 } cam_color_filter_arrangement_t; 3024 3025 typedef enum { 3026 CAM_AF_LENS_STATE_STATIONARY, 3027 CAM_AF_LENS_STATE_MOVING, 3028 } cam_af_lens_state_t; 3029 3030 typedef enum { 3031 CAM_AWB_STATE_INACTIVE, 3032 CAM_AWB_STATE_SEARCHING, 3033 CAM_AWB_STATE_CONVERGED, 3034 CAM_AWB_STATE_LOCKED 3035 } cam_awb_state_t; 3036 3037 typedef enum { 3038 CAM_FOCUS_UNCALIBRATED, 3039 CAM_FOCUS_APPROXIMATE, 3040 CAM_FOCUS_CALIBRATED 3041 } cam_focus_calibration_t; 3042 3043 typedef enum { 3044 CAM_TEST_PATTERN_OFF, 3045 CAM_TEST_PATTERN_SOLID_COLOR, 3046 CAM_TEST_PATTERN_COLOR_BARS, 3047 CAM_TEST_PATTERN_COLOR_BARS_FADE_TO_GRAY, 3048 CAM_TEST_PATTERN_PN9, 3049 CAM_TEST_PATTERN_CUSTOM1 = 256 3050 } cam_test_pattern_mode_t; 3051 3052 typedef struct { 3053 cam_test_pattern_mode_t mode; 3054 int32_t r; 3055 int32_t gr; 3056 int32_t gb; 3057 int32_t b; 3058 } cam_test_pattern_data_t; 3059 3060 typedef enum { 3061 CAM_AWB_D50, 3062 CAM_AWB_D65, 3063 CAM_AWB_D75, 3064 CAM_AWB_A, 3065 CAM_AWB_CUSTOM_A, 3066 CAM_AWB_WARM_FLO, 3067 CAM_AWB_COLD_FLO, 3068 CAM_AWB_CUSTOM_FLO, 3069 CAM_AWB_NOON, 3070 CAM_AWB_CUSTOM_DAYLIGHT, 3071 CAM_AWB_INVALID_ALL_LIGHT, 3072 } cam_illuminat_t; 3073 3074 typedef enum { 3075 LEGACY_RAW, 3076 MIPI_RAW, 3077 } cam_opaque_raw_format_t; 3078 3079 typedef enum { 3080 CAM_PERF_NORMAL = 0, 3081 CAM_PERF_HIGH, 3082 CAM_PERF_HIGH_PERFORMANCE, 3083 } cam_perf_mode_t; 3084 3085 typedef struct { 3086 float real_gain; 3087 float lux_idx; 3088 float exp_time; 3089 } cam_intf_aec_t; 3090 3091 #define CAM_INTF_AEC_DATA_MAX (10) 3092 3093 typedef struct { 3094 uint32_t frame_count; 3095 cam_intf_aec_t aec_data[CAM_INTF_AEC_DATA_MAX]; 3096 } cam_intf_meta_imglib_input_aec_t; 3097 3098 typedef struct { 3099 cam_intf_meta_imglib_input_aec_t meta_imglib_input_aec; 3100 } cam_intf_meta_imglib_t; 3101 3102 typedef struct { 3103 uint8_t previewOnly; 3104 uint64_t value; 3105 } cam_intf_parm_manual_3a_t; 3106 3107 typedef enum { 3108 CAM_MANUAL_CAPTURE_TYPE_OFF, /*Manual capture mode disabled*/ 3109 CAM_MANUAL_CAPTURE_TYPE_1, /*Normal ZSL capture with limited 3A settings*/ 3110 CAM_MANUAL_CAPTURE_TYPE_2, /*Low light capture mode */ 3111 CAM_MANUAL_CAPTURE_TYPE_3, /*Offline RAW processing */ 3112 CAM_MANUAL_CAPTURE_TYPE_4 /*Offline RAW processing with multiple RAW*/ 3113 } cam_manual_capture_type; 3114 3115 typedef enum { 3116 CAM_ANALYSIS_INFO_FD_STILL, /*Analysis requirements for STILL PREVIEW*/ 3117 CAM_ANALYSIS_INFO_FD_VIDEO, /*Analysis requirements for VIDEO*/ 3118 CAM_ANALYSIS_INFO_PAAF, /*Analysis requirements for PAAF*/ 3119 CAM_ANALYSIS_INFO_MAX, /*Max number*/ 3120 } cam_analysis_info_type; 3121 3122 typedef struct { 3123 /* Whether the information here is valid or not */ 3124 uint8_t valid; 3125 3126 /* Whether analysis supported by hw */ 3127 uint8_t hw_analysis_supported; 3128 3129 /* Analysis stream max supported size */ 3130 cam_dimension_t analysis_max_res; 3131 3132 /* Analysis stream padding info */ 3133 cam_padding_info_t analysis_padding_info; 3134 3135 /* Analysis format */ 3136 cam_format_t analysis_format; 3137 3138 /* Analysis recommended size */ 3139 cam_dimension_t analysis_recommended_res; 3140 } cam_analysis_info_t; 3141 3142 /** mm_camera_event_t: structure for event 3143 * @server_event_type : event type from serer 3144 * @status : status of an event, value could be 3145 * CAM_STATUS_SUCCESS 3146 * CAM_STATUS_FAILED 3147 **/ 3148 typedef struct { 3149 cam_event_type_t server_event_type; 3150 uint32_t status; 3151 } cam_event_t; 3152 3153 typedef struct { 3154 /* Information for DDM metadata*/ 3155 cam_stream_crop_info_t sensor_crop_info; /* sensor crop info */ 3156 cam_stream_crop_info_t camif_crop_info; /* CAMIF crop info */ 3157 cam_stream_crop_info_t isp_crop_info; /* ISP crop info */ 3158 cam_stream_crop_info_t cpp_crop_info; /* CPP crop info */ 3159 cam_focal_length_ratio_t af_focal_length_ratio; /* AF focal length ratio */ 3160 int32_t pipeline_flip; /* current pipeline flip and rotational parameters */ 3161 cam_rotation_info_t rotation_info; /* rotation information */ 3162 cam_area_t af_roi; /* AF roi info */ 3163 /* Information for CPP reprocess */ 3164 cam_dyn_img_data_t dyn_mask; /* Post processing dynamic feature mask */ 3165 } cam_reprocess_info_t; 3166 3167 /*********************************** 3168 * ENUM definition for custom parameter type 3169 ************************************/ 3170 typedef enum { 3171 CAM_CUSTOM_PARM_EXAMPLE, 3172 CAM_CUSTOM_PARM_MAX, 3173 } cam_custom_parm_type; 3174 3175 typedef enum { 3176 CAM_STREAM_CACHE_OPS_CLEAR_FLAGS, 3177 CAM_STREAM_CACHE_OPS_HONOUR_FLAGS, 3178 CAM_STREAM_CACHE_OPS_DISABLED 3179 } cam_stream_cache_ops_t; 3180 3181 typedef struct { 3182 int reserved_i[16]; 3183 float reserved_f[16]; 3184 }tuning_mod1_data_AWB; 3185 3186 typedef struct { 3187 int reserved_i[16]; 3188 float reserved_f[16]; 3189 }tuning_mod1_data_AEC; 3190 3191 typedef struct { 3192 int reserved_i[16]; 3193 float reserved_f[16]; 3194 }tuning_mod1_data_AF; 3195 3196 3197 // Used with MSM_CAMERA_PRIV_STREAM_ON. 3198 typedef enum { 3199 CAM_STREAM_ON_TYPE_CONFIG, // Configure modules for stream ON without starting sensor streaming. 3200 CAM_STREAM_ON_TYPE_START_SENSOR_STREAMING, // Start sensor streaming. 3201 } cam_stream_on_type_t; 3202 3203 3204 // Used with CAM_INTF_META_MAKERNOTE. 3205 typedef struct { 3206 char data[MAX_MAKERNOTE_LENGTH]; 3207 uint32_t length; 3208 } cam_makernote_t; 3209 3210 // Used with CAM_META_EIS_CROP_INFO 3211 typedef struct { 3212 int32_t delta_x; 3213 int32_t delta_y; 3214 int32_t delta_width; 3215 int32_t delta_height; 3216 } cam_eis_crop_info_t; 3217 3218 #endif /* __QCAMERA_TYPES_H__ */ 3219