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