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_INTF_H__ 31 #define __QCAMERA_INTF_H__ 32 33 // System dependencies 34 #include <string.h> 35 #include <media/msmb_isp.h> 36 37 // Camera dependencies 38 #include "cam_types.h" 39 40 #define CAM_PRIV_IOCTL_BASE (V4L2_CID_PRIVATE_BASE + MSM_CAMERA_PRIV_CMD_MAX) 41 typedef enum { 42 /* session based parameters */ 43 CAM_PRIV_PARM = CAM_PRIV_IOCTL_BASE, 44 /* session based action: do auto focus.*/ 45 CAM_PRIV_DO_AUTO_FOCUS, 46 /* session based action: cancel auto focus.*/ 47 CAM_PRIV_CANCEL_AUTO_FOCUS, 48 /* session based action: prepare for snapshot.*/ 49 CAM_PRIV_PREPARE_SNAPSHOT, 50 /* sync stream info.*/ 51 CAM_PRIV_STREAM_INFO_SYNC, 52 /* stream based parameters*/ 53 CAM_PRIV_STREAM_PARM, 54 /* start ZSL snapshot.*/ 55 CAM_PRIV_START_ZSL_SNAPSHOT, 56 /* stop ZSL snapshot.*/ 57 CAM_PRIV_STOP_ZSL_SNAPSHOT, 58 /* event for related sensors synchronization. */ 59 CAM_PRIV_SYNC_RELATED_SENSORS, 60 /* flush */ 61 CAM_PRIV_FLUSH 62 } cam_private_ioctl_enum_t; 63 64 /* capability struct definition for HAL 1*/ 65 typedef struct{ 66 cam_hal_version_t version; 67 68 cam_position_t position; /* sensor position: front, back */ 69 70 uint8_t auto_hdr_supported; 71 72 uint16_t isWnrSupported; 73 /* supported iso modes */ 74 size_t supported_iso_modes_cnt; 75 cam_iso_mode_type supported_iso_modes[CAM_ISO_MODE_MAX]; 76 77 /* supported flash modes */ 78 size_t supported_flash_modes_cnt; 79 cam_flash_mode_t supported_flash_modes[CAM_FLASH_MODE_MAX]; 80 81 size_t zoom_ratio_tbl_cnt; /* table size for zoom ratios */ 82 uint32_t zoom_ratio_tbl[MAX_ZOOMS_CNT]; /* zoom ratios table */ 83 84 /* supported effect modes */ 85 size_t supported_effects_cnt; 86 cam_effect_mode_type supported_effects[CAM_EFFECT_MODE_MAX]; 87 88 /* supported scene modes */ 89 size_t supported_scene_modes_cnt; 90 cam_scene_mode_type supported_scene_modes[CAM_SCENE_MODE_MAX]; 91 92 /* supported auto exposure modes */ 93 size_t supported_aec_modes_cnt; 94 cam_auto_exposure_mode_type supported_aec_modes[CAM_AEC_MODE_MAX]; 95 96 size_t fps_ranges_tbl_cnt; /* fps ranges table size */ 97 cam_fps_range_t fps_ranges_tbl[MAX_SIZES_CNT]; /* fps ranges table */ 98 99 /* supported antibanding modes */ 100 size_t supported_antibandings_cnt; 101 cam_antibanding_mode_type supported_antibandings[CAM_ANTIBANDING_MODE_MAX]; 102 103 /* supported white balance modes */ 104 size_t supported_white_balances_cnt; 105 cam_wb_mode_type supported_white_balances[CAM_WB_MODE_MAX]; 106 107 /* Capability list of supported insensor HDR types 108 * Backend is expected to fill in all the supported types and set appropriate 109 * count, see cam_sensor_hdr_type_t for valid types 110 */ 111 size_t supported_sensor_hdr_types_cnt; 112 cam_sensor_hdr_type_t supported_sensor_hdr_types[CAM_SENSOR_HDR_MAX]; 113 114 /* supported manual wb cct */ 115 int32_t min_wb_cct; 116 int32_t max_wb_cct; 117 118 /* supported manual wb rgb gains */ 119 float min_wb_gain; 120 float max_wb_gain; 121 122 /* supported focus modes */ 123 size_t supported_focus_modes_cnt; 124 cam_focus_mode_type supported_focus_modes[CAM_FOCUS_MODE_MAX]; 125 126 /* supported manual focus position */ 127 float min_focus_pos[CAM_MANUAL_FOCUS_MODE_MAX]; 128 float max_focus_pos[CAM_MANUAL_FOCUS_MODE_MAX]; 129 130 int32_t exposure_compensation_min; /* min value of exposure compensation index */ 131 int32_t exposure_compensation_max; /* max value of exposure compensation index */ 132 int32_t exposure_compensation_default; /* default value of exposure compensation index */ 133 float exposure_compensation_step; 134 cam_rational_type_t exp_compensation_step; /* exposure compensation step value */ 135 136 uint8_t video_stablization_supported; /* flag id video stablization is supported */ 137 138 size_t picture_sizes_tbl_cnt; /* picture sizes table size */ 139 cam_dimension_t picture_sizes_tbl[MAX_SIZES_CNT]; /* picture sizes table */ 140 /* The minimum frame duration that is supported for each 141 * resolution in availableProcessedSizes. Should correspond 142 * to the frame duration when only that processed stream 143 * is active, with all processing set to FAST */ 144 int64_t picture_min_duration[MAX_SIZES_CNT]; 145 146 /* capabilities specific to HAL 1 */ 147 148 int32_t modes_supported; /* mask of modes supported: 2D, 3D */ 149 uint32_t sensor_mount_angle; /* sensor mount angle */ 150 151 float focal_length; /* focal length */ 152 float hor_view_angle; /* horizontal view angle */ 153 float ver_view_angle; /* vertical view angle */ 154 155 size_t preview_sizes_tbl_cnt; /* preview sizes table size */ 156 cam_dimension_t preview_sizes_tbl[MAX_SIZES_CNT]; /* preiew sizes table */ 157 158 size_t video_sizes_tbl_cnt; /* video sizes table size */ 159 cam_dimension_t video_sizes_tbl[MAX_SIZES_CNT]; /* video sizes table */ 160 161 162 size_t livesnapshot_sizes_tbl_cnt; /* livesnapshot sizes table size */ 163 cam_dimension_t livesnapshot_sizes_tbl[MAX_SIZES_CNT]; /* livesnapshot sizes table */ 164 165 size_t vhdr_livesnapshot_sizes_tbl_cnt; /* vhdr_livesnapshot sizes table size */ 166 cam_dimension_t vhdr_livesnapshot_sizes_tbl[MAX_SIZES_CNT]; /* vhdr_livesnapshot sizes table */ 167 168 size_t hfr_tbl_cnt; /* table size for HFR */ 169 cam_hfr_info_t hfr_tbl[CAM_HFR_MODE_MAX]; /* HFR table */ 170 171 size_t zzhdr_sizes_tbl_cnt; /* Number of resolutions in zzHDR mode*/ 172 cam_dimension_t zzhdr_sizes_tbl[MAX_SIZES_CNT]; /* Table for ZZHDR supported sizes */ 173 174 /* supported preview formats */ 175 size_t supported_preview_fmt_cnt; 176 cam_format_t supported_preview_fmts[CAM_FORMAT_MAX]; 177 178 /* supported picture formats */ 179 size_t supported_picture_fmt_cnt; 180 cam_format_t supported_picture_fmts[CAM_FORMAT_MAX]; 181 182 uint8_t max_downscale_factor; 183 184 /* dimension and supported output format of raw dump from camif */ 185 size_t supported_raw_dim_cnt; 186 cam_dimension_t raw_dim[MAX_SIZES_CNT]; 187 size_t supported_raw_fmt_cnt; 188 cam_format_t supported_raw_fmts[CAM_FORMAT_MAX]; 189 /* The minimum frame duration that is supported for above 190 raw resolution */ 191 int64_t raw_min_duration[MAX_SIZES_CNT]; 192 193 /* 3A version*/ 194 cam_q3a_version_t q3a_version; 195 /* supported focus algorithms */ 196 size_t supported_focus_algos_cnt; 197 cam_focus_algorithm_type supported_focus_algos[CAM_FOCUS_ALGO_MAX]; 198 199 200 uint8_t auto_wb_lock_supported; /* flag if auto white balance lock is supported */ 201 uint8_t zoom_supported; /* flag if zoom is supported */ 202 uint8_t smooth_zoom_supported; /* flag if smooth zoom is supported */ 203 uint8_t auto_exposure_lock_supported; /* flag if auto exposure lock is supported */ 204 uint8_t video_snapshot_supported; /* flag if video snapshot is supported */ 205 206 uint8_t max_num_roi; /* max number of roi can be detected */ 207 uint8_t max_num_focus_areas; /* max num of focus areas */ 208 uint8_t max_num_metering_areas; /* max num opf metering areas */ 209 uint8_t max_zoom_step; /* max zoom step value */ 210 211 /* QCOM specific control */ 212 cam_control_range_t brightness_ctrl; /* brightness */ 213 cam_control_range_t sharpness_ctrl; /* sharpness */ 214 cam_control_range_t contrast_ctrl; /* contrast */ 215 cam_control_range_t saturation_ctrl; /* saturation */ 216 cam_control_range_t sce_ctrl; /* skintone enhancement factor */ 217 218 /* QCOM HDR specific control. Indicates number of frames and exposure needs for the frames */ 219 cam_hdr_bracketing_info_t hdr_bracketing_setting; 220 221 uint32_t qcom_supported_feature_mask; /* mask of qcom specific features supported: 222 * such as CAM_QCOM_FEATURE_SUPPORTED_FACE_DETECTION*/ 223 cam_padding_info_t padding_info; /* padding information from PP */ 224 uint32_t min_num_pp_bufs; /* minimum number of buffers needed by postproc module */ 225 cam_format_t rdi_mode_stream_fmt; /* stream format supported in rdi mode */ 226 227 /* capabilities specific to HAL 3 */ 228 229 float min_focus_distance; 230 float hyper_focal_distance; 231 232 float focal_lengths[CAM_FOCAL_LENGTHS_MAX]; 233 uint8_t focal_lengths_count; 234 235 /* Needs to be regular f number instead of APEX */ 236 float apertures[CAM_APERTURES_MAX]; 237 uint8_t apertures_count; 238 239 float filter_densities[CAM_FILTER_DENSITIES_MAX]; 240 uint8_t filter_densities_count; 241 242 uint8_t optical_stab_modes[CAM_OPT_STAB_MAX]; 243 uint8_t optical_stab_modes_count; 244 245 cam_dimension_t lens_shading_map_size; 246 247 cam_dimension_t geo_correction_map_size; 248 float geo_correction_map[2 * 3 * CAM_MAX_MAP_WIDTH * 249 CAM_MAX_MAP_HEIGHT]; 250 251 float lens_position[3]; 252 253 /* nano seconds */ 254 int64_t exposure_time_range[EXPOSURE_TIME_RANGE_CNT]; 255 256 /* nano seconds */ 257 int64_t max_frame_duration; 258 259 cam_color_filter_arrangement_t color_arrangement; 260 uint8_t num_color_channels; 261 262 /* parameters required to calculate S and O co-efficients */ 263 double gradient_S; 264 double offset_S; 265 double gradient_O; 266 double offset_O; 267 268 float sensor_physical_size[SENSOR_PHYSICAL_SIZE_CNT]; 269 270 /* Dimensions of full pixel array, possibly including 271 black calibration pixels */ 272 cam_dimension_t pixel_array_size; 273 /* Area of raw data which corresponds to only active 274 pixels; smaller or equal to pixelArraySize. */ 275 cam_rect_t active_array_size; 276 277 /* Maximum raw value output by sensor */ 278 int32_t white_level; 279 280 /* A fixed black level offset for each of the Bayer 281 mosaic channels */ 282 int32_t black_level_pattern[BLACK_LEVEL_PATTERN_CNT]; 283 284 /* Time taken before flash can fire again in nano secs */ 285 int64_t flash_charge_duration; 286 287 /* flash firing power */ 288 size_t supported_flash_firing_level_cnt; 289 cam_format_t supported_firing_levels[CAM_FLASH_FIRING_LEVEL_MAX]; 290 291 /* Flash Firing Time */ 292 int64_t flash_firing_time; 293 294 /* Flash Ciolor Temperature */ 295 uint8_t flash_color_temp; 296 297 /* Flash max Energy */ 298 uint8_t flash_max_energy; 299 300 /* Maximum number of supported points in the tonemap 301 curve */ 302 int32_t max_tone_map_curve_points; 303 304 /* supported formats */ 305 size_t supported_scalar_format_cnt; 306 cam_format_t supported_scalar_fmts[CAM_FORMAT_MAX]; 307 308 uint32_t max_face_detection_count; 309 uint8_t hw_analysis_supported; 310 311 uint8_t histogram_supported; 312 /* Number of histogram buckets supported */ 313 int32_t histogram_size; 314 /* Maximum value possible for a histogram bucket */ 315 int32_t max_histogram_count; 316 317 cam_dimension_t sharpness_map_size; 318 319 /* Maximum value possible for a sharpness map region */ 320 int32_t max_sharpness_map_value; 321 322 /*Autoexposure modes for camera 3 api*/ 323 size_t supported_ae_modes_cnt; 324 cam_ae_mode_type supported_ae_modes[CAM_AE_MODE_MAX]; 325 326 327 cam_sensitivity_range_t sensitivity_range; 328 int32_t max_analog_sensitivity; 329 330 /* ISP digital gain */ 331 cam_sensitivity_range_t isp_sensitivity_range; 332 333 /* picture sizes need scale*/ 334 cam_scene_mode_overrides_t scene_mode_overrides[CAM_SCENE_MODE_MAX]; 335 size_t scale_picture_sizes_cnt; 336 cam_dimension_t scale_picture_sizes[MAX_SCALE_SIZES_CNT]; 337 338 uint8_t flash_available; 339 340 cam_rational_type_t base_gain_factor; /* sensor base gain factor */ 341 /* AF Bracketing info */ 342 cam_af_bracketing_t ubifocus_af_bracketing_need; 343 cam_af_bracketing_t refocus_af_bracketing_need; 344 /* opti Zoom info */ 345 cam_opti_zoom_t opti_zoom_settings_need; 346 /* still more info */ 347 cam_still_more_t stillmore_settings_need; 348 /* chroma flash info */ 349 cam_chroma_flash_t chroma_flash_settings_need; 350 351 cam_rational_type_t forward_matrix[3][3]; 352 cam_rational_type_t color_transform[3][3]; 353 354 uint8_t focus_dist_calibrated; 355 uint8_t supported_test_pattern_modes_cnt; 356 cam_test_pattern_mode_t supported_test_pattern_modes[MAX_TEST_PATTERN_CNT]; 357 358 int64_t stall_durations[MAX_SIZES_CNT]; 359 360 cam_illuminat_t reference_illuminant1; 361 cam_illuminat_t reference_illuminant2; 362 363 int64_t jpeg_stall_durations[MAX_SIZES_CNT]; 364 int64_t raw16_stall_durations[MAX_SIZES_CNT]; 365 cam_rational_type_t forward_matrix1[FORWARD_MATRIX_ROWS][FORWARD_MATRIX_COLS]; 366 cam_rational_type_t forward_matrix2[FORWARD_MATRIX_ROWS][FORWARD_MATRIX_COLS]; 367 cam_rational_type_t color_transform1[COLOR_TRANSFORM_ROWS][COLOR_TRANSFORM_COLS]; 368 cam_rational_type_t color_transform2[COLOR_TRANSFORM_ROWS][COLOR_TRANSFORM_COLS]; 369 cam_rational_type_t calibration_transform1[CAL_TRANSFORM_ROWS][CAL_TRANSFORM_COLS]; 370 cam_rational_type_t calibration_transform2[CAL_TRANSFORM_ROWS][CAL_TRANSFORM_COLS]; 371 uint16_t isCacSupported; 372 373 cam_opaque_raw_format_t opaque_raw_fmt; 374 375 /* true Portrait info */ 376 cam_true_portrait_t true_portrait_settings_need; 377 378 /* Sensor type information */ 379 cam_sensor_type_t sensor_type; 380 381 cam_aberration_mode_t aberration_modes[CAM_COLOR_CORRECTION_ABERRATION_MAX]; 382 uint32_t aberration_modes_count; 383 384 /* Can the sensor timestamp be compared to 385 * timestamps from other sub-systems (gyro, accelerometer etc.) */ 386 uint8_t isTimestampCalibrated; 387 388 /* Analysis stream max supported size */ 389 cam_dimension_t analysis_max_res; 390 /* Analysis stream padding info */ 391 cam_padding_info_t analysis_padding_info; 392 /* Max size supported by ISP viewfinder path */ 393 cam_dimension_t max_viewfinder_size; 394 395 /* Analysis recommended size */ 396 cam_dimension_t analysis_recommended_res; 397 398 /* Analysis recommended format */ 399 cam_format_t analysis_recommended_format; 400 401 /* This is set to 'true' if sensor cannot guarantee per frame control */ 402 /* Default value of this capability is 'false' indicating per-frame */ 403 /* control is supported */ 404 uint8_t no_per_frame_control_support; 405 406 /* EIS information */ 407 uint8_t supported_is_types_cnt; 408 uint32_t supported_is_types[IS_TYPE_MAX]; 409 /*for each type, specify the margin needed. Margin will be 410 the decimal representation of a percentage 411 ex: 10% margin = 0.1 */ 412 float supported_is_type_margins[IS_TYPE_MAX]; 413 414 /* Max cpp batch size */ 415 uint8_t max_batch_bufs_supported; 416 uint32_t buf_alignment; 417 uint32_t min_stride; 418 uint32_t min_scanline; 419 uint8_t flash_dev_name[QCAMERA_MAX_FILEPATH_LENGTH]; 420 uint8_t eeprom_version_info[MAX_EEPROM_VERSION_INFO_LEN]; 421 422 /* maximum pixel bandwidth shared between cameras */ 423 uint64_t max_pixel_bandwidth; 424 425 /* Array of K integers, where K%4==0, 426 as a list of rectangles in the pixelArray co-ord system 427 left, top, right, bottom */ 428 int32_t optical_black_regions[MAX_OPTICAL_BLACK_REGIONS * 4]; 429 /* Count is K/4 */ 430 uint8_t optical_black_region_count; 431 432 /* hot pixel */ 433 uint8_t hotPixel_mode; 434 uint32_t hotPixel_count; 435 cam_coordinate_type_t hotPixelMap[512]; 436 437 /* supported instant capture/AEC convergence modes */ 438 size_t supported_instant_aec_modes_cnt; 439 cam_aec_convergence_type supported_instant_aec_modes[CAM_AEC_CONVERGENCE_MAX]; 440 } cam_capability_t; 441 442 typedef enum { 443 CAM_STREAM_PARAM_TYPE_DO_REPROCESS = CAM_INTF_PARM_DO_REPROCESS, 444 CAM_STREAM_PARAM_TYPE_SET_BUNDLE_INFO = CAM_INTF_PARM_SET_BUNDLE, 445 CAM_STREAM_PARAM_TYPE_SET_FLIP = CAM_INTF_PARM_STREAM_FLIP, 446 CAM_STREAM_PARAM_TYPE_GET_OUTPUT_CROP = CAM_INTF_PARM_GET_OUTPUT_CROP, 447 CAM_STREAM_PARAM_TYPE_GET_IMG_PROP = CAM_INTF_PARM_GET_IMG_PROP, 448 CAM_STREAM_PARAM_TYPE_REQUEST_FRAMES = CAM_INTF_PARM_REQUEST_FRAMES, 449 CAM_STREAM_PARAM_TYPE_REQUEST_OPS_MODE = CAM_INTF_PARM_REQUEST_OPS_MODE, 450 CAM_STREAM_PARAM_TYPE_MAX 451 } cam_stream_param_type_e; 452 453 typedef struct { 454 uint32_t buf_index; /* buf index to the source frame buffer that needs reprocess, 455 (assume buffer is already mapped)*/ 456 uint32_t frame_idx; /* frame id of source frame to be reprocessed */ 457 int32_t ret_val; /* return value from reprocess. Could have different meanings. 458 i.e., faceID in the case of face registration. */ 459 uint8_t meta_present; /* if there is meta data associated with this reprocess frame */ 460 uint32_t meta_stream_handle; /* meta data stream ID. only valid if meta_present != 0 */ 461 uint32_t meta_buf_index; /* buf index to meta data buffer. only valid if meta_present != 0 */ 462 463 /* opaque metadata required for reprocessing */ 464 int32_t private_data[MAX_METADATA_PRIVATE_PAYLOAD_SIZE_IN_BYTES]; 465 cam_rect_t crop_rect; 466 } cam_reprocess_param; 467 468 typedef struct { 469 uint32_t flip_mask; 470 } cam_flip_mode_t; 471 472 typedef enum { 473 /* start syncing for related cameras */ 474 CAM_SYNC_RELATED_SENSORS_ON = 1, 475 /* stop syncing for related cameras */ 476 CAM_SYNC_RELATED_SENSORS_OFF 477 } cam_sync_related_sensors_control_t; 478 479 typedef enum { 480 /* Driving camera of the related camera sub-system */ 481 /* Certain features are enabled only for primary camera 482 such as display mode for preview, autofocus etc 483 In certain configurations for eg. when optical zoom 484 limit is reached, Aux Camera would become 485 the driving camera and there will be role switch.*/ 486 CAM_MODE_PRIMARY = 0, 487 /* Non-driving camera of the related camera sub-system 488 no display mode set for secondary camera */ 489 CAM_MODE_SECONDARY 490 } cam_sync_mode_t; 491 492 typedef enum { 493 /* Main camera of the related cam subsystem which controls 494 HW sync at sensor level*/ 495 CAM_TYPE_MAIN = 0, 496 /* Aux camera of the related cam subsystem */ 497 CAM_TYPE_AUX 498 } cam_sync_type_t; 499 500 /* Payload for sending bundling info to backend */ 501 typedef struct { 502 cam_sync_related_sensors_control_t sync_control; 503 cam_sync_type_t type; 504 cam_sync_mode_t mode; 505 /* session Id of the other camera session 506 Linking will be done with this session in the 507 backend */ 508 uint32_t related_sensor_session_id; 509 uint8_t is_frame_sync_enabled; 510 }cam_sync_related_sensors_event_info_t; 511 512 /* Related camera sensor specific calibration data */ 513 typedef struct { 514 /* Focal length in pixels @ calibration resolution.*/ 515 float normalized_focal_length; 516 /* Native sensor resolution W that was used to capture calibration image */ 517 uint16_t native_sensor_resolution_width; 518 /* Native sensor resolution H that was used to capture calibration image */ 519 uint16_t native_sensor_resolution_height; 520 /* Image size W used internally by calibration tool */ 521 uint16_t calibration_sensor_resolution_width; 522 /* Image size H used internally by calibration tool */ 523 uint16_t calibration_sensor_resolution_height; 524 /* Focal length ratio @ Calibration */ 525 float focal_length_ratio; 526 }cam_related_sensor_calibration_data_t; 527 528 /* Related Camera System Calibration data 529 Calibration data for the entire related cam sub-system is 530 in a shared EEPROM. We have 2 fields which are specific to 531 each sensor followed by a set of common calibration of the 532 entire related cam system*/ 533 typedef struct { 534 /* Version information */ 535 uint32_t calibration_format_version; 536 /* Main Camera Sensor specific calibration */ 537 cam_related_sensor_calibration_data_t main_cam_specific_calibration; 538 /* Aux Camera Sensor specific calibration */ 539 cam_related_sensor_calibration_data_t aux_cam_specific_calibration; 540 /* Relative viewpoint matching matrix w.r.t Main */ 541 float relative_rotation_matrix[RELCAM_CALIB_ROT_MATRIX_MAX]; 542 /* Relative geometric surface description parameters */ 543 float relative_geometric_surface_parameters[ 544 RELCAM_CALIB_SURFACE_PARMS_MAX]; 545 /* Relative offset of sensor center from optical axis along horizontal dimension */ 546 float relative_principle_point_x_offset; 547 /* Relative offset of sensor center from optical axis along vertical dimension */ 548 float relative_principle_point_y_offset; 549 /* 0=Main Camera is on the left of Aux; 1=Main Camera is on the right of Aux */ 550 uint16_t relative_position_flag; 551 /* Camera separation in mm */ 552 float relative_baseline_distance; 553 /* main sensor setting during cal: 0-none, 1-hor-mirror, 2-ver-flip, 3-both */ 554 uint16_t main_sensor_mirror_flip_setting; 555 /* aux sensor setting during cal: 0-none, 1-hor-mirror, 2-ver-flip, 3-both */ 556 uint16_t aux_sensor_mirror_flip_setting; 557 /* module orientation during cal: 0-sensors in landscape, 1-sensors in portrait */ 558 uint16_t module_orientation_during_calibration; 559 /* cal images required rotation: 0-no, 1-90 degrees right, 2-90 degrees left */ 560 uint16_t rotation_flag; 561 /* Reserved for future use */ 562 float reserved[RELCAM_CALIB_RESERVED_MAX]; 563 } cam_related_system_calibration_data_t; 564 565 typedef struct { 566 uint32_t default_sensor_flip; 567 uint32_t sensor_mount_angle; 568 cam_related_system_calibration_data_t otp_calibration_data; 569 } cam_jpeg_metadata_t; 570 571 #define IMG_NAME_SIZE 32 572 typedef struct { 573 cam_rect_t crop; /* crop info for the image */ 574 cam_dimension_t input; /* input dimension of the image */ 575 cam_dimension_t output; /* output dimension of the image */ 576 char name[IMG_NAME_SIZE]; /* optional name of the ext*/ 577 cam_format_t format; /* image format */ 578 } cam_stream_img_prop_t; 579 580 typedef struct { 581 uint8_t enableStream; /*0 stop and 1-start */ 582 } cam_request_frames; 583 584 typedef struct { 585 cam_stream_param_type_e type; 586 union { 587 cam_reprocess_param reprocess; /* do reprocess */ 588 cam_bundle_config_t bundleInfo; /* set bundle info*/ 589 cam_flip_mode_t flipInfo; /* flip mode */ 590 cam_crop_data_t outputCrop; /* output crop for current frame */ 591 cam_stream_img_prop_t imgProp; /* image properties of current frame */ 592 cam_request_frames frameRequest; /*do TNR process*/ 593 cam_perf_mode_t perf_mode; /*request operational mode*/ 594 }; 595 } cam_stream_parm_buffer_t; 596 597 /* stream info */ 598 typedef struct { 599 /* stream ID from server */ 600 uint32_t stream_svr_id; 601 602 /* stream type */ 603 cam_stream_type_t stream_type; 604 605 /* image format */ 606 cam_format_t fmt; 607 608 /* image dimension */ 609 cam_dimension_t dim; 610 611 /* buffer plane information, will be calc based on stream_type, fmt, 612 dim, and padding_info(from stream config). Info including: 613 offset_x, offset_y, stride, scanline, plane offset */ 614 cam_stream_buf_plane_info_t buf_planes; 615 616 /* number of stream bufs will be allocated */ 617 uint32_t num_bufs; 618 619 /* streaming type */ 620 cam_streaming_mode_t streaming_mode; 621 622 /* num of frames needs to be generated. 623 * only valid when streaming_mode = CAM_STREAMING_MODE_BURST */ 624 uint8_t num_of_burst; 625 626 /* num of frames in one batch. 627 * only valid when streaming_mode = CAM_STREAMING_MODE_BATCH */ 628 cam_stream_user_buf_info_t user_buf_info; 629 630 /* stream specific pp config */ 631 cam_pp_feature_config_t pp_config; 632 633 /* this section is valid if offline reprocess type stream */ 634 cam_stream_reproc_config_t reprocess_config; 635 636 cam_stream_parm_buffer_t parm_buf; /* stream based parameters */ 637 638 uint8_t dis_enable; 639 640 /* Image Stabilization type */ 641 cam_is_type_t is_type; 642 643 /* Signifies Secure stream mode */ 644 cam_stream_secure_t is_secure; 645 646 /* Preferred Performance mode */ 647 cam_perf_mode_t perf_mode; 648 649 /* if frames will not be received */ 650 uint8_t noFrameExpected; 651 } cam_stream_info_t; 652 653 /***************************************************************************** 654 * Code for Domain Socket Based Parameters * 655 ****************************************************************************/ 656 #define INCLUDE(PARAM_ID,DATATYPE,COUNT) \ 657 DATATYPE member_variable_##PARAM_ID[ COUNT ] 658 659 #define POINTER_OF_META(META_ID, TABLE_PTR) \ 660 ((NULL != TABLE_PTR) ? \ 661 (&TABLE_PTR->data.member_variable_##META_ID[ 0 ]) : (NULL)) 662 663 #define SIZE_OF_PARAM(META_ID, TABLE_PTR) \ 664 sizeof(TABLE_PTR->data.member_variable_##META_ID) 665 666 #define IF_META_AVAILABLE(META_TYPE, META_PTR_NAME, META_ID, TABLE_PTR) \ 667 META_TYPE *META_PTR_NAME = \ 668 (((NULL != TABLE_PTR) && (TABLE_PTR->is_valid[META_ID])) ? \ 669 (&TABLE_PTR->data.member_variable_##META_ID[ 0 ]) : \ 670 (NULL)); \ 671 if (NULL != META_PTR_NAME) \ 672 673 #define ADD_SET_PARAM_ENTRY_TO_BATCH(TABLE_PTR, META_ID, DATA) \ 674 ((NULL != TABLE_PTR) ? \ 675 ((TABLE_PTR->data.member_variable_##META_ID[ 0 ] = DATA), \ 676 (TABLE_PTR->is_valid[META_ID] = 1), (0)) : \ 677 ((LOGE("Unable to set metadata TABLE_PTR:%p META_ID:%d", \ 678 TABLE_PTR, META_ID)), (-1))) \ 679 680 #define ADD_SET_PARAM_ARRAY_TO_BATCH(TABLE_PTR, META_ID, PDATA, COUNT, RCOUNT) \ 681 { \ 682 if ((NULL != TABLE_PTR) && \ 683 (0 < COUNT) && \ 684 ((sizeof(TABLE_PTR->data.member_variable_##META_ID) / \ 685 sizeof(TABLE_PTR->data.member_variable_##META_ID[ 0 ])) \ 686 >= COUNT)) { \ 687 for (size_t _i = 0; _i < COUNT ; _i++) { \ 688 TABLE_PTR->data.member_variable_##META_ID[ _i ] = PDATA [ _i ]; \ 689 } \ 690 TABLE_PTR->is_valid[META_ID] = 1; \ 691 RCOUNT = COUNT; \ 692 } else { \ 693 LOGE("Unable to set metadata TABLE_PTR:%p META_ID:%d COUNT:%zu", \ 694 TABLE_PTR, META_ID, COUNT); \ 695 RCOUNT = 0; \ 696 } \ 697 } 698 699 #define ADD_GET_PARAM_ENTRY_TO_BATCH(TABLE_PTR, META_ID) \ 700 { \ 701 if (NULL != TABLE_PTR) { \ 702 TABLE_PTR->is_reqd[META_ID] = 1; \ 703 } else { \ 704 LOGE("Unable to get metadata TABLE_PTR:%p META_ID:%d", \ 705 TABLE_PTR, META_ID); \ 706 } \ 707 } 708 709 #define READ_PARAM_ENTRY(TABLE_PTR, META_ID, DATA) \ 710 { \ 711 if (NULL != TABLE_PTR) { \ 712 DATA = TABLE_PTR->data.member_variable_##META_ID[ 0 ]; \ 713 } else { \ 714 LOGE("Unable to read metadata TABLE_PTR:%p META_ID:%d", \ 715 TABLE_PTR, META_ID); \ 716 } \ 717 } 718 719 /************************************ 720 * Custom parameter data definition 721 *************************************/ 722 typedef struct { 723 /*CAM_CUSTOM_PARM_EXAMPLE is added to explain custom param procedure*/ 724 INCLUDE(CAM_CUSTOM_PARM_EXAMPLE, int32_t, 1); 725 } custom_parm_data_t; 726 727 /************************************ 728 * Custom Parameter buffer definition 729 *************************************/ 730 typedef struct { 731 union { 732 /* Hash table of 'is valid' flags */ 733 uint8_t is_valid[CAM_CUSTOM_PARM_MAX]; 734 735 /* Hash table of 'is required' flags for the GET PARAM */ 736 uint8_t is_reqd[CAM_CUSTOM_PARM_MAX]; 737 }; 738 custom_parm_data_t data; 739 } custom_parm_buffer_t; 740 741 742 typedef struct { 743 /************************************************************************************** 744 * ID from (cam_intf_metadata_type_t) DATATYPE COUNT 745 **************************************************************************************/ 746 /* common between HAL1 and HAL3 */ 747 INCLUDE(CAM_INTF_META_HISTOGRAM, cam_hist_stats_t, 1); 748 INCLUDE(CAM_INTF_META_FACE_DETECTION, cam_face_detection_data_t, 1); 749 INCLUDE(CAM_INTF_META_FACE_RECOG, cam_face_recog_data_t, 1); 750 INCLUDE(CAM_INTF_META_FACE_BLINK, cam_face_blink_data_t, 1); 751 INCLUDE(CAM_INTF_META_FACE_GAZE, cam_face_gaze_data_t, 1); 752 INCLUDE(CAM_INTF_META_FACE_SMILE, cam_face_smile_data_t, 1); 753 INCLUDE(CAM_INTF_META_FACE_LANDMARK, cam_face_landmarks_data_t, 1); 754 INCLUDE(CAM_INTF_META_FACE_CONTOUR, cam_face_contour_data_t, 1); 755 INCLUDE(CAM_INTF_META_AUTOFOCUS_DATA, cam_auto_focus_data_t, 1); 756 INCLUDE(CAM_INTF_META_CDS_DATA, cam_cds_data_t, 1); 757 INCLUDE(CAM_INTF_PARM_UPDATE_DEBUG_LEVEL, uint32_t, 1); 758 759 /* Specific to HAl1 */ 760 INCLUDE(CAM_INTF_META_CROP_DATA, cam_crop_data_t, 1); 761 INCLUDE(CAM_INTF_META_PREP_SNAPSHOT_DONE, int32_t, 1); 762 INCLUDE(CAM_INTF_META_GOOD_FRAME_IDX_RANGE, cam_frame_idx_range_t, 1); 763 INCLUDE(CAM_INTF_META_ASD_HDR_SCENE_DATA, cam_asd_hdr_scene_data_t, 1); 764 INCLUDE(CAM_INTF_META_ASD_SCENE_INFO, cam_asd_decision_t, 1); 765 INCLUDE(CAM_INTF_META_CURRENT_SCENE, cam_scene_mode_type, 1); 766 INCLUDE(CAM_INTF_META_AWB_INFO, cam_awb_params_t, 1); 767 INCLUDE(CAM_INTF_META_FOCUS_POSITION, cam_focus_pos_info_t, 1); 768 INCLUDE(CAM_INTF_META_CHROMATIX_LITE_ISP, cam_chromatix_lite_isp_t, 1); 769 INCLUDE(CAM_INTF_META_CHROMATIX_LITE_PP, cam_chromatix_lite_pp_t, 1); 770 INCLUDE(CAM_INTF_META_CHROMATIX_LITE_AE, cam_chromatix_lite_ae_stats_t, 1); 771 INCLUDE(CAM_INTF_META_CHROMATIX_LITE_AWB, cam_chromatix_lite_awb_stats_t, 1); 772 INCLUDE(CAM_INTF_META_CHROMATIX_LITE_AF, cam_chromatix_lite_af_stats_t, 1); 773 INCLUDE(CAM_INTF_META_CHROMATIX_LITE_ASD, cam_chromatix_lite_asd_stats_t, 1); 774 INCLUDE(CAM_INTF_BUF_DIVERT_INFO, cam_buf_divert_info_t, 1); 775 776 /* Specific to HAL3 */ 777 INCLUDE(CAM_INTF_META_FRAME_NUMBER_VALID, int32_t, 1); 778 INCLUDE(CAM_INTF_META_URGENT_FRAME_NUMBER_VALID, int32_t, 1); 779 INCLUDE(CAM_INTF_META_FRAME_DROPPED, cam_frame_dropped_t, 1); 780 INCLUDE(CAM_INTF_META_FRAME_NUMBER, uint32_t, 1); 781 INCLUDE(CAM_INTF_META_URGENT_FRAME_NUMBER, uint32_t, 1); 782 INCLUDE(CAM_INTF_META_COLOR_CORRECT_MODE, uint32_t, 1); 783 INCLUDE(CAM_INTF_META_COLOR_CORRECT_TRANSFORM, cam_color_correct_matrix_t, 1); 784 INCLUDE(CAM_INTF_META_COLOR_CORRECT_GAINS, cam_color_correct_gains_t, 1); 785 INCLUDE(CAM_INTF_META_PRED_COLOR_CORRECT_TRANSFORM, cam_color_correct_matrix_t, 1); 786 INCLUDE(CAM_INTF_META_PRED_COLOR_CORRECT_GAINS, cam_color_correct_gains_t, 1); 787 INCLUDE(CAM_INTF_META_AEC_ROI, cam_area_t, 1); 788 INCLUDE(CAM_INTF_META_AEC_STATE, uint32_t, 1); 789 INCLUDE(CAM_INTF_PARM_FOCUS_MODE, uint32_t, 1); 790 INCLUDE(CAM_INTF_PARM_MANUAL_FOCUS_POS, cam_manual_focus_parm_t, 1); 791 INCLUDE(CAM_INTF_META_AF_ROI, cam_area_t, 1); 792 INCLUDE(CAM_INTF_META_AF_STATE, uint32_t, 1); 793 INCLUDE(CAM_INTF_PARM_WHITE_BALANCE, int32_t, 1); 794 INCLUDE(CAM_INTF_META_AWB_REGIONS, cam_area_t, 1); 795 INCLUDE(CAM_INTF_META_AWB_STATE, uint32_t, 1); 796 INCLUDE(CAM_INTF_META_BLACK_LEVEL_LOCK, uint32_t, 1); 797 INCLUDE(CAM_INTF_META_MODE, uint32_t, 1); 798 INCLUDE(CAM_INTF_META_EDGE_MODE, cam_edge_application_t, 1); 799 INCLUDE(CAM_INTF_META_FLASH_POWER, uint32_t, 1); 800 INCLUDE(CAM_INTF_META_FLASH_FIRING_TIME, int64_t, 1); 801 INCLUDE(CAM_INTF_META_FLASH_MODE, uint32_t, 1); 802 INCLUDE(CAM_INTF_META_FLASH_STATE, int32_t, 1); 803 INCLUDE(CAM_INTF_META_HOTPIXEL_MODE, uint32_t, 1); 804 INCLUDE(CAM_INTF_META_LENS_APERTURE, float, 1); 805 INCLUDE(CAM_INTF_META_LENS_FILTERDENSITY, float, 1); 806 INCLUDE(CAM_INTF_META_LENS_FOCAL_LENGTH, float, 1); 807 INCLUDE(CAM_INTF_META_LENS_FOCUS_DISTANCE, float, 1); 808 INCLUDE(CAM_INTF_META_LENS_FOCUS_RANGE, float, 2); 809 INCLUDE(CAM_INTF_META_LENS_STATE, cam_af_lens_state_t, 1); 810 INCLUDE(CAM_INTF_META_LENS_OPT_STAB_MODE, uint32_t, 1); 811 INCLUDE(CAM_INTF_META_VIDEO_STAB_MODE, uint32_t, 1); 812 INCLUDE(CAM_INTF_META_LENS_FOCUS_STATE, uint32_t, 1); 813 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_MODE, uint32_t, 1); 814 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_STRENGTH, uint32_t, 1); 815 INCLUDE(CAM_INTF_META_SCALER_CROP_REGION, cam_crop_region_t, 1); 816 INCLUDE(CAM_INTF_META_SCENE_FLICKER, uint32_t, 1); 817 INCLUDE(CAM_INTF_META_SENSOR_EXPOSURE_TIME, int64_t, 1); 818 INCLUDE(CAM_INTF_META_SENSOR_FRAME_DURATION, int64_t, 1); 819 INCLUDE(CAM_INTF_META_SENSOR_SENSITIVITY, int32_t, 1); 820 INCLUDE(CAM_INTF_META_ISP_SENSITIVITY , int32_t, 1); 821 INCLUDE(CAM_INTF_META_SENSOR_TIMESTAMP, int64_t, 1); 822 INCLUDE(CAM_INTF_META_SENSOR_ROLLING_SHUTTER_SKEW, int64_t, 1); 823 INCLUDE(CAM_INTF_META_SHADING_MODE, uint32_t, 1); 824 INCLUDE(CAM_INTF_META_STATS_FACEDETECT_MODE, uint32_t, 1); 825 INCLUDE(CAM_INTF_META_STATS_HISTOGRAM_MODE, uint32_t, 1); 826 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, uint32_t, 1); 827 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP, cam_sharpness_map_t, 3); 828 INCLUDE(CAM_INTF_META_TONEMAP_CURVES, cam_rgb_tonemap_curves, 1); 829 INCLUDE(CAM_INTF_META_LENS_SHADING_MAP, cam_lens_shading_map_t, 1); 830 INCLUDE(CAM_INTF_META_AEC_INFO, cam_3a_params_t, 1); 831 INCLUDE(CAM_INTF_META_SENSOR_INFO, cam_sensor_params_t, 1); 832 INCLUDE(CAM_INTF_META_EXIF_DEBUG_AE, cam_ae_exif_debug_t, 1); 833 INCLUDE(CAM_INTF_META_EXIF_DEBUG_AWB, cam_awb_exif_debug_t, 1); 834 INCLUDE(CAM_INTF_META_EXIF_DEBUG_AF, cam_af_exif_debug_t, 1); 835 INCLUDE(CAM_INTF_META_EXIF_DEBUG_ASD, cam_asd_exif_debug_t, 1); 836 INCLUDE(CAM_INTF_META_EXIF_DEBUG_STATS, cam_stats_buffer_exif_debug_t, 1); 837 INCLUDE(CAM_INTF_PARM_EFFECT, uint32_t, 1); 838 /* Defining as int32_t so that this array is 4 byte aligned */ 839 INCLUDE(CAM_INTF_META_PRIVATE_DATA, int32_t, 840 MAX_METADATA_PRIVATE_PAYLOAD_SIZE_IN_BYTES / 4); 841 842 /* Following are Params only and not metadata currently */ 843 INCLUDE(CAM_INTF_PARM_HAL_VERSION, int32_t, 1); 844 /* Shared between HAL1 and HAL3 */ 845 INCLUDE(CAM_INTF_PARM_ANTIBANDING, uint32_t, 1); 846 INCLUDE(CAM_INTF_PARM_EXPOSURE_COMPENSATION, int32_t, 1); 847 INCLUDE(CAM_INTF_PARM_EV_STEP, cam_rational_type_t, 1); 848 INCLUDE(CAM_INTF_PARM_AEC_LOCK, uint32_t, 1); 849 INCLUDE(CAM_INTF_PARM_FPS_RANGE, cam_fps_range_t, 1); 850 INCLUDE(CAM_INTF_PARM_AWB_LOCK, uint32_t, 1); 851 INCLUDE(CAM_INTF_PARM_BESTSHOT_MODE, uint32_t, 1); 852 INCLUDE(CAM_INTF_PARM_DIS_ENABLE, int32_t, 1); 853 INCLUDE(CAM_INTF_PARM_LED_MODE, int32_t, 1); 854 INCLUDE(CAM_INTF_META_LED_MODE_OVERRIDE, uint32_t, 1); 855 856 /* dual camera specific params */ 857 INCLUDE(CAM_INTF_PARM_RELATED_SENSORS_CALIBRATION, cam_related_system_calibration_data_t, 1); 858 INCLUDE(CAM_INTF_META_AF_FOCAL_LENGTH_RATIO, cam_focal_length_ratio_t, 1); 859 INCLUDE(CAM_INTF_META_SNAP_CROP_INFO_SENSOR, cam_stream_crop_info_t, 1); 860 INCLUDE(CAM_INTF_META_SNAP_CROP_INFO_CAMIF, cam_stream_crop_info_t, 1); 861 INCLUDE(CAM_INTF_META_SNAP_CROP_INFO_ISP, cam_stream_crop_info_t, 1); 862 INCLUDE(CAM_INTF_META_SNAP_CROP_INFO_CPP, cam_stream_crop_info_t, 1); 863 INCLUDE(CAM_INTF_META_DCRF, cam_dcrf_result_t, 1); 864 865 /* HAL1 specific */ 866 /* read only */ 867 INCLUDE(CAM_INTF_PARM_QUERY_FLASH4SNAP, int32_t, 1); 868 INCLUDE(CAM_INTF_PARM_EXPOSURE, int32_t, 1); 869 INCLUDE(CAM_INTF_PARM_SHARPNESS, int32_t, 1); 870 INCLUDE(CAM_INTF_PARM_CONTRAST, int32_t, 1); 871 INCLUDE(CAM_INTF_PARM_SATURATION, int32_t, 1); 872 INCLUDE(CAM_INTF_PARM_BRIGHTNESS, int32_t, 1); 873 INCLUDE(CAM_INTF_PARM_ISO, cam_intf_parm_manual_3a_t, 1); 874 INCLUDE(CAM_INTF_PARM_EXPOSURE_TIME, cam_intf_parm_manual_3a_t, 1); 875 INCLUDE(CAM_INTF_PARM_ZOOM, int32_t, 1); 876 INCLUDE(CAM_INTF_PARM_ROLLOFF, int32_t, 1); 877 INCLUDE(CAM_INTF_PARM_MODE, int32_t, 1); 878 INCLUDE(CAM_INTF_PARM_AEC_ALGO_TYPE, int32_t, 1); 879 INCLUDE(CAM_INTF_PARM_FOCUS_ALGO_TYPE, int32_t, 1); 880 INCLUDE(CAM_INTF_PARM_AEC_ROI, cam_set_aec_roi_t, 1); 881 INCLUDE(CAM_INTF_PARM_AF_ROI, cam_roi_info_t, 1); 882 INCLUDE(CAM_INTF_PARM_SCE_FACTOR, int32_t, 1); 883 INCLUDE(CAM_INTF_PARM_FD, cam_fd_set_parm_t, 1); 884 INCLUDE(CAM_INTF_PARM_MCE, int32_t, 1); 885 INCLUDE(CAM_INTF_PARM_HFR, int32_t, 1); 886 INCLUDE(CAM_INTF_PARM_REDEYE_REDUCTION, int32_t, 1); 887 INCLUDE(CAM_INTF_PARM_WAVELET_DENOISE, cam_denoise_param_t, 1); 888 INCLUDE(CAM_INTF_PARM_TEMPORAL_DENOISE, cam_denoise_param_t, 1); 889 INCLUDE(CAM_INTF_PARM_HISTOGRAM, int32_t, 1); 890 INCLUDE(CAM_INTF_PARM_ASD_ENABLE, int32_t, 1); 891 INCLUDE(CAM_INTF_PARM_RECORDING_HINT, int32_t, 1); 892 INCLUDE(CAM_INTF_PARM_HDR, cam_exp_bracketing_t, 1); 893 INCLUDE(CAM_INTF_PARM_FRAMESKIP, int32_t, 1); 894 INCLUDE(CAM_INTF_PARM_ZSL_MODE, int32_t, 1); 895 INCLUDE(CAM_INTF_PARM_HDR_NEED_1X, int32_t, 1); 896 INCLUDE(CAM_INTF_PARM_LOCK_CAF, int32_t, 1); 897 INCLUDE(CAM_INTF_PARM_VIDEO_HDR, int32_t, 1); 898 INCLUDE(CAM_INTF_PARM_SENSOR_HDR, cam_sensor_hdr_type_t, 1); 899 INCLUDE(CAM_INTF_PARM_VT, int32_t, 1); 900 INCLUDE(CAM_INTF_PARM_SET_AUTOFOCUSTUNING, tune_actuator_t, 1); 901 INCLUDE(CAM_INTF_PARM_SET_VFE_COMMAND, tune_cmd_t, 1); 902 INCLUDE(CAM_INTF_PARM_SET_PP_COMMAND, tune_cmd_t, 1); 903 INCLUDE(CAM_INTF_PARM_MAX_DIMENSION, cam_dimension_t, 1); 904 INCLUDE(CAM_INTF_PARM_RAW_DIMENSION, cam_dimension_t, 1); 905 INCLUDE(CAM_INTF_PARM_TINTLESS, int32_t, 1); 906 INCLUDE(CAM_INTF_PARM_WB_MANUAL, cam_manual_wb_parm_t, 1); 907 INCLUDE(CAM_INTF_PARM_CDS_MODE, int32_t, 1); 908 INCLUDE(CAM_INTF_PARM_EZTUNE_CMD, cam_eztune_cmd_data_t, 1); 909 INCLUDE(CAM_INTF_PARM_INT_EVT, cam_int_evt_params_t, 1); 910 INCLUDE(CAM_INTF_PARM_RDI_MODE, int32_t, 1); 911 INCLUDE(CAM_INTF_PARM_BURST_NUM, uint32_t, 1); 912 INCLUDE(CAM_INTF_PARM_RETRO_BURST_NUM, uint32_t, 1); 913 INCLUDE(CAM_INTF_PARM_BURST_LED_ON_PERIOD, uint32_t, 1); 914 INCLUDE(CAM_INTF_PARM_LONGSHOT_ENABLE, int8_t, 1); 915 INCLUDE(CAM_INTF_PARM_TONE_MAP_MODE, uint32_t, 1); 916 INCLUDE(CAM_INTF_META_TOUCH_AE_RESULT, int32_t, 1); 917 INCLUDE(CAM_INTF_PARM_DUAL_LED_CALIBRATION, int32_t, 1); 918 INCLUDE(CAM_INTF_PARM_ADV_CAPTURE_MODE, uint8_t, 1); 919 920 /* HAL3 specific */ 921 INCLUDE(CAM_INTF_META_STREAM_INFO, cam_stream_size_info_t, 1); 922 INCLUDE(CAM_INTF_META_AEC_MODE, uint32_t, 1); 923 INCLUDE(CAM_INTF_META_AEC_PRECAPTURE_TRIGGER, cam_trigger_t, 1); 924 INCLUDE(CAM_INTF_META_AF_TRIGGER, cam_trigger_t, 1); 925 INCLUDE(CAM_INTF_META_CAPTURE_INTENT, uint32_t, 1); 926 INCLUDE(CAM_INTF_META_DEMOSAIC, int32_t, 1); 927 INCLUDE(CAM_INTF_META_SHARPNESS_STRENGTH, int32_t, 1); 928 INCLUDE(CAM_INTF_META_GEOMETRIC_MODE, uint32_t, 1); 929 INCLUDE(CAM_INTF_META_GEOMETRIC_STRENGTH, uint32_t, 1); 930 INCLUDE(CAM_INTF_META_LENS_SHADING_MAP_MODE, uint32_t, 1); 931 INCLUDE(CAM_INTF_META_SHADING_STRENGTH, uint32_t, 1); 932 INCLUDE(CAM_INTF_META_TONEMAP_MODE, uint32_t, 1); 933 INCLUDE(CAM_INTF_META_STREAM_ID, cam_stream_ID_t, 1); 934 INCLUDE(CAM_INTF_PARM_STATS_DEBUG_MASK, uint32_t, 1); 935 INCLUDE(CAM_INTF_PARM_STATS_AF_PAAF, uint32_t, 1); 936 INCLUDE(CAM_INTF_PARM_FOCUS_BRACKETING, cam_af_bracketing_t, 1); 937 INCLUDE(CAM_INTF_PARM_FLASH_BRACKETING, cam_flash_bracketing_t, 1); 938 INCLUDE(CAM_INTF_META_JPEG_GPS_COORDINATES, double, 3); 939 INCLUDE(CAM_INTF_META_JPEG_GPS_PROC_METHODS, uint8_t, GPS_PROCESSING_METHOD_SIZE); 940 INCLUDE(CAM_INTF_META_JPEG_GPS_TIMESTAMP, int64_t, 1); 941 INCLUDE(CAM_INTF_META_JPEG_ORIENTATION, int32_t, 1); 942 INCLUDE(CAM_INTF_META_JPEG_QUALITY, uint32_t, 1); 943 INCLUDE(CAM_INTF_META_JPEG_THUMB_QUALITY, uint32_t, 1); 944 INCLUDE(CAM_INTF_META_JPEG_THUMB_SIZE, cam_dimension_t, 1); 945 INCLUDE(CAM_INTF_META_TEST_PATTERN_DATA, cam_test_pattern_data_t, 1); 946 INCLUDE(CAM_INTF_META_PROFILE_TONE_CURVE, cam_profile_tone_curve, 1); 947 INCLUDE(CAM_INTF_META_OTP_WB_GRGB, float, 1); 948 INCLUDE(CAM_INTF_META_IMG_HYST_INFO, cam_img_hysterisis_info_t, 1); 949 INCLUDE(CAM_INTF_META_CAC_INFO, cam_cac_info_t, 1); 950 INCLUDE(CAM_INTF_PARM_CAC, cam_aberration_mode_t, 1); 951 INCLUDE(CAM_INTF_META_NEUTRAL_COL_POINT, cam_neutral_col_point_t, 1); 952 INCLUDE(CAM_INTF_PARM_ROTATION, cam_rotation_info_t, 1); 953 INCLUDE(CAM_INTF_PARM_HW_DATA_OVERWRITE, cam_hw_data_overwrite_t, 1); 954 INCLUDE(CAM_INTF_META_IMGLIB, cam_intf_meta_imglib_t, 1); 955 INCLUDE(CAM_INTF_PARM_CAPTURE_FRAME_CONFIG, cam_capture_frame_config_t, 1); 956 INCLUDE(CAM_INTF_PARM_CUSTOM, custom_parm_buffer_t, 1); 957 INCLUDE(CAM_INTF_PARM_FLIP, int32_t, 1); 958 INCLUDE(CAM_INTF_META_USE_AV_TIMER, uint8_t, 1); 959 INCLUDE(CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR, float, 1); 960 INCLUDE(CAM_INTF_META_LDAF_EXIF, uint32_t, 2); 961 INCLUDE(CAM_INTF_META_BLACK_LEVEL_SOURCE_PATTERN, cam_black_level_metadata_t, 1); 962 INCLUDE(CAM_INTF_META_BLACK_LEVEL_APPLIED_PATTERN, cam_black_level_metadata_t, 1); 963 INCLUDE(CAM_INTF_META_LOW_LIGHT, cam_low_light_mode_t, 1); 964 INCLUDE(CAM_INTF_META_IMG_DYN_FEAT, cam_dyn_img_data_t, 1); 965 INCLUDE(CAM_INTF_PARM_MANUAL_CAPTURE_TYPE, cam_manual_capture_type, 1); 966 INCLUDE(CAM_INTF_AF_STATE_TRANSITION, uint8_t, 1); 967 INCLUDE(CAM_INTF_PARM_INITIAL_EXPOSURE_INDEX, uint32_t, 1); 968 INCLUDE(CAM_INTF_PARM_INSTANT_AEC, uint8_t, 1); 969 } metadata_data_t; 970 971 /* Update clear_metadata_buffer() function when a new is_xxx_valid is added to 972 * or removed from this structure */ 973 typedef struct { 974 union{ 975 /* Hash table of 'is valid' flags */ 976 uint8_t is_valid[CAM_INTF_PARM_MAX]; 977 978 /* Hash table of 'is required' flags for the GET PARAM */ 979 uint8_t is_reqd[CAM_INTF_PARM_MAX]; 980 }; 981 metadata_data_t data; 982 /*Tuning Data */ 983 uint8_t is_tuning_params_valid; 984 tuning_params_t tuning_params; 985 986 /* Mobicat Params */ 987 uint8_t is_mobicat_aec_params_valid; 988 cam_3a_params_t mobicat_aec_params; 989 990 /* Stats 3A Debug Params */ 991 uint8_t is_statsdebug_ae_params_valid; 992 cam_ae_exif_debug_t statsdebug_ae_data; 993 994 uint8_t is_statsdebug_awb_params_valid; 995 cam_awb_exif_debug_t statsdebug_awb_data; 996 997 uint8_t is_statsdebug_af_params_valid; 998 cam_af_exif_debug_t statsdebug_af_data; 999 1000 uint8_t is_statsdebug_asd_params_valid; 1001 cam_asd_exif_debug_t statsdebug_asd_data; 1002 1003 uint8_t is_statsdebug_stats_params_valid; 1004 cam_stats_buffer_exif_debug_t statsdebug_stats_buffer_data; 1005 } metadata_buffer_t; 1006 1007 typedef metadata_buffer_t parm_buffer_t; 1008 1009 #ifdef __cplusplus 1010 extern "C" { 1011 #endif 1012 1013 /* Update this inline function when a new is_xxx_valid is added to 1014 * or removed from metadata_buffer_t */ 1015 static inline void clear_metadata_buffer(metadata_buffer_t *meta) 1016 { 1017 if (meta) { 1018 memset(meta->is_valid, 0, CAM_INTF_PARM_MAX); 1019 meta->is_tuning_params_valid = 0; 1020 meta->is_mobicat_aec_params_valid = 0; 1021 meta->is_statsdebug_ae_params_valid = 0; 1022 meta->is_statsdebug_awb_params_valid = 0; 1023 meta->is_statsdebug_af_params_valid = 0; 1024 meta->is_statsdebug_asd_params_valid = 0; 1025 meta->is_statsdebug_stats_params_valid = 0; 1026 } 1027 } 1028 1029 #ifdef __cplusplus 1030 } 1031 #endif 1032 1033 #endif /* __QCAMERA_INTF_H__ */ 1034