cam_intf.h revision d18b71ed9389d1b7ccdb9e6caca12ef78e260622
1/* Copyright (c) 2012-2013, 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#include <media/msmb_isp.h> 34#include "cam_types.h" 35 36#define CAM_PRIV_IOCTL_BASE (V4L2_CID_PRIVATE_BASE + 14) 37typedef enum { 38 /* session based parameters */ 39 CAM_PRIV_PARM = CAM_PRIV_IOCTL_BASE, 40 /* session based action: do auto focus. TRIGGER_AF in HAL3 request */ 41 CAM_PRIV_DO_AUTO_FOCUS, 42 /* session based action: cancel auto focus. TRIGGER_AF in HAL3 request. */ 43 CAM_PRIV_CANCEL_AUTO_FOCUS, 44 /* session based action: prepare for snapshot. TRIGGER_AE_PREPARE in HAL3*/ 45 CAM_PRIV_PREPARE_SNAPSHOT, 46 /* sync stream info. Used for configure_streams */ 47 CAM_PRIV_STREAM_INFO_SYNC, 48 /* stream based parameters*/ 49 CAM_PRIV_STREAM_PARM, 50 /* start ZSL snapshot.*/ 51 CAM_PRIV_START_ZSL_SNAPSHOT, 52 /* stop ZSL snapshot.*/ 53 CAM_PRIV_STOP_ZSL_SNAPSHOT, 54} cam_private_ioctl_enum_t; 55 56/* capability struct definition for HAL 1*/ 57typedef struct{ 58 cam_hal_version_t version; 59 60 cam_position_t position; /* sensor position: front, back */ 61 62 /* supported iso modes */ 63 uint8_t supported_iso_modes_cnt; 64 cam_iso_mode_type supported_iso_modes[CAM_ISO_MODE_MAX]; 65 66 /* supported flash modes */ 67 uint8_t supported_flash_modes_cnt; 68 cam_flash_mode_t supported_flash_modes[CAM_FLASH_MODE_MAX]; 69 70 uint8_t zoom_ratio_tbl_cnt; /* table size for zoom ratios */ 71 int zoom_ratio_tbl[MAX_ZOOMS_CNT]; /* zoom ratios table */ 72 73 int qcom_supported_feature_mask; /* mask of qcom specific features supported: 74 * such as CAM_QCOM_FEATURE_SUPPORTED_FACE_DETECTION*/ 75 76 /* supported effect modes */ 77 uint8_t supported_effects_cnt; 78 cam_effect_mode_type supported_effects[CAM_EFFECT_MODE_MAX]; 79 80 /* supported scene modes */ 81 uint8_t supported_scene_modes_cnt; 82 cam_scene_mode_type supported_scene_modes[CAM_SCENE_MODE_MAX]; 83 84 /* supported auto exposure modes */ 85 uint8_t supported_aec_modes_cnt; 86 cam_auto_exposure_mode_type supported_aec_modes[CAM_AEC_MODE_MAX]; 87 88 uint8_t fps_ranges_tbl_cnt; /* fps ranges table size */ 89 cam_fps_range_t fps_ranges_tbl[MAX_SIZES_CNT]; /* fps ranges table */ 90 91 /* supported antibanding modes */ 92 uint8_t supported_antibandings_cnt; 93 cam_antibanding_mode_type supported_antibandings[CAM_ANTIBANDING_MODE_MAX]; 94 95 /* supported white balance modes */ 96 uint8_t supported_white_balances_cnt; 97 cam_wb_mode_type supported_white_balances[CAM_WB_MODE_MAX]; 98 99 /* supported focus modes */ 100 uint8_t supported_focus_modes_cnt; 101 cam_focus_mode_type supported_focus_modes[CAM_FOCUS_MODE_MAX]; 102 103 int exposure_compensation_min; /* min value of exposure compensation index */ 104 int exposure_compensation_max; /* max value of exposure compensation index */ 105 int exposure_compensation_default; /* default value of exposure compensation index */ 106 float exposure_compensation_step; 107 cam_rational_type_t exp_compensation_step; /* exposure compensation step value */ 108 109 uint8_t video_stablization_supported; /* flag id video stablization is supported */ 110 111 uint8_t picture_sizes_tbl_cnt; /* picture sizes table size */ 112 cam_dimension_t picture_sizes_tbl[MAX_SIZES_CNT]; /* picture sizes table */ 113 114 /* capabilities specific to HAL 1 */ 115 116 int modes_supported; /* mask of modes supported: 2D, 3D */ 117 uint32_t sensor_mount_angle; /* sensor mount angle */ 118 119 float focal_length; /* focal length */ 120 float hor_view_angle; /* horizontal view angle */ 121 float ver_view_angle; /* vertical view angle */ 122 123 uint8_t preview_sizes_tbl_cnt; /* preview sizes table size */ 124 cam_dimension_t preview_sizes_tbl[MAX_SIZES_CNT]; /* preiew sizes table */ 125 126 uint8_t video_sizes_tbl_cnt; /* video sizes table size */ 127 cam_dimension_t video_sizes_tbl[MAX_SIZES_CNT]; /* video sizes table */ 128 129 130 uint8_t livesnapshot_sizes_tbl_cnt; /* livesnapshot sizes table size */ 131 cam_dimension_t livesnapshot_sizes_tbl[MAX_SIZES_CNT]; /* livesnapshot sizes table */ 132 133 uint8_t hfr_tbl_cnt; /* table size for HFR */ 134 cam_hfr_info_t hfr_tbl[CAM_HFR_MODE_MAX]; /* HFR table */ 135 136 /* supported preview formats */ 137 uint8_t supported_preview_fmt_cnt; 138 cam_format_t supported_preview_fmts[CAM_FORMAT_MAX]; 139 140 /* supported picture formats */ 141 uint8_t supported_picture_fmt_cnt; 142 cam_format_t supported_picture_fmts[CAM_FORMAT_MAX]; 143 144 /* dimension and supported output format of raw dump from camif */ 145 cam_dimension_t raw_dim; 146 uint8_t supported_raw_fmt_cnt; 147 cam_format_t supported_raw_fmts[CAM_FORMAT_MAX]; 148 149 /* supported focus algorithms */ 150 uint8_t supported_focus_algos_cnt; 151 cam_focus_algorithm_type supported_focus_algos[CAM_FOCUS_ALGO_MAX]; 152 153 154 uint8_t auto_wb_lock_supported; /* flag if auto white balance lock is supported */ 155 uint8_t zoom_supported; /* flag if zoom is supported */ 156 uint8_t smooth_zoom_supported; /* flag if smooth zoom is supported */ 157 uint8_t auto_exposure_lock_supported; /* flag if auto exposure lock is supported */ 158 uint8_t video_snapshot_supported; /* flag if video snapshot is supported */ 159 160 uint8_t max_num_roi; /* max number of roi can be detected */ 161 uint8_t max_num_focus_areas; /* max num of focus areas */ 162 uint8_t max_num_metering_areas; /* max num opf metering areas */ 163 uint8_t max_zoom_step; /* max zoom step value */ 164 165 /* QCOM specific control */ 166 cam_control_range_t brightness_ctrl; /* brightness */ 167 cam_control_range_t sharpness_ctrl; /* sharpness */ 168 cam_control_range_t contrast_ctrl; /* contrast */ 169 cam_control_range_t saturation_ctrl; /* saturation */ 170 cam_control_range_t sce_ctrl; /* skintone enhancement factor */ 171 172 cam_padding_info_t padding_info; /* padding information from PP */ 173 int8_t min_num_hdr_bufs; /* minimum number of buffers needed for HDR by imaging module */ 174 int8_t min_num_pp_bufs; /* minimum number of buffers needed by postproc module */ 175 uint32_t min_required_pp_mask; /* min required pp feature masks for ZSL. 176 * depends on hardware limitation, i.e. for 8974, 177 * sharpness is required for all ZSL snapshot frames */ 178 179 /* capabilities specific to HAL 3 */ 180 181 float min_focus_distance; 182 float hyper_focal_distance; 183 184 float focal_lengths[CAM_FOCAL_LENGTHS_MAX]; 185 uint8_t focal_lengths_count; 186 187 float apertures[CAM_APERTURES_MAX]; 188 uint8_t apertures_count; 189 190 float filter_densities[CAM_FILTER_DENSITIES_MAX]; 191 uint8_t filter_densities_count; 192 193 cam_optical_stab_modes_t 194 optical_stab_modes[CAM_OPT_STAB_MAX]; 195 uint8_t optical_stab_modes_count; 196 197 cam_dimension_t lens_shading_map_size; 198 float lens_shading_map[3 * CAM_MAX_MAP_WIDTH * 199 CAM_MAX_MAP_HEIGHT]; 200 201 cam_dimension_t geo_correction_map_size; 202 float geo_correction_map[2 * 3 * CAM_MAX_MAP_WIDTH * 203 CAM_MAX_MAP_HEIGHT]; 204 205 float lens_position[3]; 206 207 /* nano seconds */ 208 int64_t exposure_time_range[2]; 209 210 /* nano seconds */ 211 int64_t max_frame_duration; 212 213 cam_color_filter_arrangement_t color_arrangement; 214 215 float sensor_physical_size[2]; 216 217 /* Dimensions of full pixel array, possibly including 218 black calibration pixels */ 219 cam_dimension_t pixel_array_size; 220 /* Area of raw data which corresponds to only active 221 pixels; smaller or equal to pixelArraySize. */ 222 cam_rect_t active_array_size; 223 224 /* Maximum raw value output by sensor */ 225 int32_t white_level; 226 227 /* A fixed black level offset for each of the Bayer 228 mosaic channels */ 229 int32_t black_level_pattern[4]; 230 231 /* Time taken before flash can fire again in nano secs */ 232 int64_t flash_charge_duration; 233 234 /* flash firing power */ 235 uint8_t supported_flash_firing_level_cnt; 236 cam_format_t supported_firing_levels[CAM_FLASH_FIRING_LEVEL_MAX]; 237 238 /* Flash Firing Time */ 239 int64_t flash_firing_time; 240 241 /* Flash Ciolor Temperature */ 242 uint8_t flash_color_temp; 243 244 /* Flash max Energy */ 245 uint8_t flash_max_energy; 246 247 /* Maximum number of supported points in the tonemap 248 curve */ 249 int32_t max_tone_map_curve_points; 250 251 /* supported formats */ 252 uint8_t supported_scalar_format_cnt; 253 cam_format_t supported_scalar_fmts[CAM_FORMAT_MAX]; 254 255 /* The minimum frame duration that is supported for above 256 raw resolution */ 257 int64_t raw_min_duration; 258 259 uint8_t supported_sizes_tbl_cnt; 260 cam_dimension_t supported_sizes_tbl[MAX_SIZES_CNT]; 261 262 /* The minimum frame duration that is supported for each 263 * resolution in availableProcessedSizes. Should correspond 264 * to the frame duration when only that processed stream 265 * is active, with all processing set to FAST */ 266 int64_t min_duration[MAX_SIZES_CNT]; 267 268 uint32_t max_face_detection_count; 269 270 /* Number of histogram buckets supported */ 271 int32_t histogram_size; 272 /* Maximum value possible for a histogram bucket */ 273 int32_t max_histogram_count; 274 275 cam_dimension_t sharpness_map_size; 276 277 /* Maximum value possible for a sharpness map region */ 278 int32_t max_sharpness_map_value; 279 280 cam_scene_mode_overrides_t scene_mode_overrides[CAM_SCENE_MODE_MAX]; 281 282 /*Autoexposure modes for camera 3 api*/ 283 uint8_t supported_ae_modes_cnt; 284 cam_ae_mode_type supported_ae_modes[CAM_AE_MODE_MAX]; 285 286 int64_t jpeg_min_duration[MAX_SIZES_CNT]; 287 288 cam_sensitivity_range_t sensitivity_range; 289 int32_t max_analog_sensitivity; 290 291} cam_capability_t; 292 293typedef enum { 294 CAM_STREAM_CONSUMER_DISPLAY, /* buf to be displayed */ 295 CAM_STREAM_CONSUMER_VIDEO_ENC, /* buf to be encoded by video */ 296 CAM_STREAM_CONSUMER_JPEG_ENC, /* ZSL YUV buf to be fed back to JPEG */ 297} cam_stream_consumer_t; 298 299typedef enum { 300 CAM_STREAM_PARAM_TYPE_DO_REPROCESS = CAM_INTF_PARM_DO_REPROCESS, 301 CAM_STREAM_PARAM_TYPE_SET_BUNDLE_INFO = CAM_INTF_PARM_SET_BUNDLE, 302 CAM_STREAM_PARAM_SET_STREAM_CONSUMER, 303 CAM_STREAM_PARAM_TYPE_MAX 304} cam_stream_param_type_e; 305 306typedef struct { 307 uint8_t buf_index; /* buf index to the source frame buffer that needs reprocess, 308 (assume buffer is already mapped)*/ 309 uint32_t frame_idx; /* frame id of source frame to be reprocessed */ 310 int32_t ret_val; /* return value from reprocess. Could have different meanings. 311 i.e., faceID in the case of face registration. */ 312 uint8_t meta_present; /* if there is meta data associated with this reprocess frame */ 313 uint32_t meta_stream_handle; /* meta data stream ID. only valid if meta_present != 0 */ 314 uint8_t meta_buf_index; /* buf index to meta data buffer. only valid if meta_present != 0 */ 315 316 cam_per_frame_pp_config_t frame_pp_config; /* per frame post-proc configuration */ 317} cam_reprocess_param; 318 319typedef struct { 320 cam_stream_param_type_e type; 321 union { 322 cam_reprocess_param reprocess; /* do reprocess */ 323 cam_bundle_config_t bundleInfo; /* set bundle info*/ 324 cam_stream_consumer_t consumer; /* stream consumer */ 325 }; 326} cam_stream_parm_buffer_t; 327 328/* stream info */ 329typedef struct { 330 /* stream ID from server */ 331 uint32_t stream_svr_id; 332 333 /* stream type */ 334 cam_stream_type_t stream_type; 335 336 /* image format */ 337 cam_format_t fmt; 338 339 /* image dimension */ 340 cam_dimension_t dim; 341 342 /* buffer plane information, will be calc based on stream_type, fmt, 343 dim, and padding_info(from stream config). Info including: 344 offset_x, offset_y, stride, scanline, plane offset */ 345 cam_stream_buf_plane_info_t buf_planes; 346 347 /* streaming type */ 348 cam_streaming_mode_t streaming_mode; 349 /* num of frames needs to be generated. 350 * only valid when streaming_mode = CAM_STREAMING_MODE_BURST */ 351 uint8_t num_of_burst; 352 353 /* stream specific pp config */ 354 cam_pp_feature_config_t pp_config; 355 356 /* this section is valid if offline reprocess type stream */ 357 cam_stream_reproc_config_t reprocess_config; 358 359 cam_stream_parm_buffer_t parm_buf; /* stream based parameters */ 360} cam_stream_info_t; 361 362/***************************************************************************** 363 * Code for Domain Socket Based Parameters * 364 ****************************************************************************/ 365 366#define POINTER_OF(PARAM_ID,TABLE_PTR) \ 367 (&(TABLE_PTR->entry[PARAM_ID].data)) 368 369#define GET_FIRST_PARAM_ID(TABLE_PTR) \ 370 (TABLE_PTR->first_flagged_entry) 371 372#define SET_FIRST_PARAM_ID(TABLE_PTR,PARAM_ID) \ 373 TABLE_PTR->first_flagged_entry=PARAM_ID 374 375#define GET_NEXT_PARAM_ID(CURRENT_PARAM_ID,TABLE_PTR) \ 376 (TABLE_PTR->entry[CURRENT_PARAM_ID].next_flagged_entry) 377 378#define SET_NEXT_PARAM_ID(CURRENT_PARAM_ID,TABLE_PTR,NEXT_PARAM_ID) \ 379 TABLE_PTR->entry[CURRENT_PARAM_ID].next_flagged_entry=NEXT_PARAM_ID; 380 381#define INCLUDE(PARAM_ID,DATATYPE,COUNT) \ 382 DATATYPE member_variable_##PARAM_ID[ COUNT ] 383 384typedef union { 385/************************************************************************************** 386 * ID from (cam_intf_parm_type_t) DATATYPE COUNT 387 **************************************************************************************/ 388 INCLUDE(CAM_INTF_PARM_HAL_VERSION, int32_t, 1); 389 /* Shared between HAL1 and HAL3 */ 390 INCLUDE(CAM_INTF_PARM_ANTIBANDING, int32_t, 1); 391 INCLUDE(CAM_INTF_PARM_EXPOSURE_COMPENSATION, int32_t, 1); 392 INCLUDE(CAM_INTF_PARM_AEC_LOCK, int32_t, 1); 393 INCLUDE(CAM_INTF_PARM_FPS_RANGE, cam_fps_range_t, 1); 394 INCLUDE(CAM_INTF_PARM_FOCUS_MODE, uint8_t, 1); 395 INCLUDE(CAM_INTF_PARM_AWB_LOCK, int32_t, 1); 396 INCLUDE(CAM_INTF_PARM_WHITE_BALANCE, int32_t, 1); 397 INCLUDE(CAM_INTF_PARM_EFFECT, int32_t, 1); 398 INCLUDE(CAM_INTF_PARM_BESTSHOT_MODE, int32_t, 1); 399 INCLUDE(CAM_INTF_PARM_DIS_ENABLE, int32_t, 1); 400 INCLUDE(CAM_INTF_PARM_LED_MODE, int32_t, 1); 401 402 /* HAL1 specific */ 403 INCLUDE(CAM_INTF_PARM_QUERY_FLASH4SNAP, int32_t, 1); //read only 404 INCLUDE(CAM_INTF_PARM_EXPOSURE, int32_t, 1); 405 INCLUDE(CAM_INTF_PARM_SHARPNESS, int32_t, 1); 406 INCLUDE(CAM_INTF_PARM_CONTRAST, int32_t, 1); 407 INCLUDE(CAM_INTF_PARM_SATURATION, int32_t, 1); 408 INCLUDE(CAM_INTF_PARM_BRIGHTNESS, int32_t, 1); 409 INCLUDE(CAM_INTF_PARM_ISO, int32_t, 1); 410 INCLUDE(CAM_INTF_PARM_ZOOM, int32_t, 1); 411 INCLUDE(CAM_INTF_PARM_ROLLOFF, int32_t, 1); 412 INCLUDE(CAM_INTF_PARM_MODE, int32_t, 1); 413 INCLUDE(CAM_INTF_PARM_AEC_ALGO_TYPE, int32_t, 1); 414 INCLUDE(CAM_INTF_PARM_FOCUS_ALGO_TYPE, int32_t, 1); 415 INCLUDE(CAM_INTF_PARM_AEC_ROI, cam_set_aec_roi_t, 1); 416 INCLUDE(CAM_INTF_PARM_AF_ROI, cam_roi_info_t, 1); 417 INCLUDE(CAM_INTF_PARM_SCE_FACTOR, int32_t, 1); 418 INCLUDE(CAM_INTF_PARM_FD, cam_fd_set_parm_t, 1); 419 INCLUDE(CAM_INTF_PARM_MCE, int32_t, 1); 420 INCLUDE(CAM_INTF_PARM_HFR, int32_t, 1); 421 INCLUDE(CAM_INTF_PARM_REDEYE_REDUCTION, int32_t, 1); 422 INCLUDE(CAM_INTF_PARM_WAVELET_DENOISE, cam_denoise_param_t, 1); 423 INCLUDE(CAM_INTF_PARM_HISTOGRAM, int32_t, 1); 424 INCLUDE(CAM_INTF_PARM_ASD_ENABLE, int32_t, 1); 425 INCLUDE(CAM_INTF_PARM_RECORDING_HINT, int32_t, 1); 426 INCLUDE(CAM_INTF_PARM_HDR, cam_exp_bracketing_t, 1); 427 INCLUDE(CAM_INTF_PARM_FRAMESKIP, int32_t, 1); 428 INCLUDE(CAM_INTF_PARM_ZSL_MODE, int32_t, 1); 429 INCLUDE(CAM_INTF_PARM_HDR_NEED_1X, int32_t, 1); 430 INCLUDE(CAM_INTF_PARM_LOCK_CAF, int32_t, 1); 431 INCLUDE(CAM_INTF_PARM_VIDEO_HDR, int32_t, 1); 432 433 /* HAL3 sepcific */ 434 INCLUDE(CAM_INTF_META_FRAME_NUMBER, uint32_t, 1); 435 INCLUDE(CAM_INTF_META_COLOR_CORRECT_MODE, uint8_t, 1); 436 INCLUDE(CAM_INTF_META_COLOR_CORRECT_TRANSFORM, cam_color_correct_matrix_t, 1); 437 INCLUDE(CAM_INTF_META_COLOR_CORRECT_GAINS, cam_color_correct_gains_t, 1); 438 INCLUDE(CAM_INTF_META_AEC_MODE, uint8_t, 1); 439 INCLUDE(CAM_INTF_META_AEC_ROI, cam_area_t, 5); 440 INCLUDE(CAM_INTF_META_AEC_PRECAPTURE_TRIGGER, cam_trigger_t, 1); 441 INCLUDE(CAM_INTF_META_AF_ROI, cam_area_t, 5); 442 INCLUDE(CAM_INTF_META_AF_TRIGGER, cam_trigger_t, 1); 443 INCLUDE(CAM_INTF_META_AWB_REGIONS, cam_area_t, 5); 444 INCLUDE(CAM_INTF_META_BLACK_LEVEL_LOCK, uint8_t, 1); 445 INCLUDE(CAM_INTF_META_CAPTURE_INTENT, uint8_t, 1); 446 INCLUDE(CAM_INTF_META_MODE, uint8_t, 1); 447 INCLUDE(CAM_INTF_META_DEMOSAIC, int32_t, 1); 448 INCLUDE(CAM_INTF_META_EDGE_MODE, int32_t, 1); 449 INCLUDE(CAM_INTF_META_SHARPNESS_STRENGTH, int32_t, 1); 450 INCLUDE(CAM_INTF_META_FLASH_POWER, uint8_t, 1); 451 INCLUDE(CAM_INTF_META_FLASH_FIRING_TIME, int64_t, 1); 452 INCLUDE(CAM_INTF_META_GEOMETRIC_MODE, uint8_t, 1); 453 INCLUDE(CAM_INTF_META_GEOMETRIC_STRENGTH, uint8_t, 1); 454 INCLUDE(CAM_INTF_META_HOTPIXEL_MODE, uint8_t, 1); 455 INCLUDE(CAM_INTF_META_LENS_APERTURE, float, 1); 456 INCLUDE(CAM_INTF_META_LENS_FILTERDENSITY, float, 1); 457 INCLUDE(CAM_INTF_META_LENS_FOCAL_LENGTH, float, 1); 458 INCLUDE(CAM_INTF_META_LENS_FOCUS_DISTANCE, float, 1); 459 INCLUDE(CAM_INTF_META_LENS_OPT_STAB_MODE, uint8_t, 1); 460 INCLUDE(CAM_INTF_META_LENS_SHADING_MAP_MODE, uint8_t, 1); 461 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_MODE, uint8_t, 1); 462 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_STRENGTH, int32_t, 1); 463 INCLUDE(CAM_INTF_META_SCALER_CROP_REGION, cam_crop_region_t, 1); 464 INCLUDE(CAM_INTF_META_SENSOR_EXPOSURE_TIME, int64_t, 1); 465 INCLUDE(CAM_INTF_META_SENSOR_FRAME_DURATION, int64_t, 1); 466 INCLUDE(CAM_INTF_META_SENSOR_SENSITIVITY, int32_t, 1); 467 INCLUDE(CAM_INTF_META_SHADING_MODE, uint8_t, 1); 468 INCLUDE(CAM_INTF_META_SHADING_STRENGTH, uint8_t, 1); 469 INCLUDE(CAM_INTF_META_STATS_FACEDETECT_MODE, uint8_t, 1); 470 INCLUDE(CAM_INTF_META_STATS_HISTOGRAM_MODE, uint8_t, 1); 471 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, uint8_t, 1); 472 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_BLUE, cam_tonemap_curve_t, 1); 473 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_GREEN, cam_tonemap_curve_t, 1); 474 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_RED, cam_tonemap_curve_t, 1); 475 INCLUDE(CAM_INTF_META_TONEMAP_MODE, uint8_t, 1); 476 INCLUDE(CAM_INTF_META_FLASH_MODE, uint8_t, 1); 477} parm_type_t; 478 479 480typedef union { 481/************************************************************************************** 482 * ID from (cam_intf_metadata_type_t) DATATYPE COUNT 483 **************************************************************************************/ 484 /* common between HAL1 and HAL3 */ 485 INCLUDE(CAM_INTF_META_HISTOGRAM, cam_hist_stats_t, 1); 486 INCLUDE(CAM_INTF_META_FACE_DETECTION, cam_face_detection_data_t, 1); 487 INCLUDE(CAM_INTF_META_AUTOFOCUS_DATA, cam_auto_focus_data_t, 1); 488 489 /* Specific to HAl1 */ 490 INCLUDE(CAM_INTF_META_CROP_DATA, cam_crop_data_t, 1); 491 INCLUDE(CAM_INTF_META_PREP_SNAPSHOT_DONE, int32_t, 1); 492 INCLUDE(CAM_INTF_META_GOOD_FRAME_IDX_RANGE, cam_frame_idx_range_t, 1); 493 /* Specific to HAL3 */ 494 INCLUDE(CAM_INTF_META_FRAME_NUMBER_VALID, int32_t, 1); 495 INCLUDE(CAM_INTF_META_PENDING_REQUESTS, uint32_t, 1); 496 INCLUDE(CAM_INTF_META_FRAME_NUMBER, uint32_t, 1); 497 INCLUDE(CAM_INTF_META_COLOR_CORRECT_MODE, uint8_t, 1); 498 INCLUDE(CAM_INTF_META_COLOR_CORRECT_TRANSFORM, cam_color_correct_matrix_t, 1); 499 INCLUDE(CAM_INTF_META_COLOR_CORRECT_GAINS, cam_color_correct_gains_t, 1); 500 INCLUDE(CAM_INTF_META_PRED_COLOR_CORRECT_TRANSFORM, cam_color_correct_matrix_t, 1); 501 INCLUDE(CAM_INTF_META_PRED_COLOR_CORRECT_GAINS, cam_color_correct_gains_t, 1); 502 INCLUDE(CAM_INTF_META_AEC_PRECAPTURE_ID, int32_t, 1); 503 INCLUDE(CAM_INTF_META_AEC_ROI, cam_area_t, 5); 504 INCLUDE(CAM_INTF_META_AEC_STATE, uint8_t, 1); 505 INCLUDE(CAM_INTF_PARM_FOCUS_MODE, uint8_t, 1); 506 INCLUDE(CAM_INTF_META_AF_ROI, cam_area_t, 5); 507 INCLUDE(CAM_INTF_META_AF_STATE, uint8_t, 1); 508 INCLUDE(CAM_INTF_META_AF_TRIGGER_ID, int32_t, 1); 509 INCLUDE(CAM_INTF_PARM_WHITE_BALANCE, int32_t, 1); 510 INCLUDE(CAM_INTF_META_AWB_REGIONS, cam_area_t, 5); 511 INCLUDE(CAM_INTF_META_AWB_STATE, uint8_t, 1); 512 INCLUDE(CAM_INTF_META_BLACK_LEVEL_LOCK, uint8_t, 1); 513 INCLUDE(CAM_INTF_META_MODE, uint8_t, 1); 514 INCLUDE(CAM_INTF_META_EDGE_MODE, int32_t, 1); 515 INCLUDE(CAM_INTF_META_FLASH_POWER, uint8_t, 1); 516 INCLUDE(CAM_INTF_META_FLASH_FIRING_TIME, int64_t, 1); 517 INCLUDE(CAM_INTF_META_FLASH_MODE, uint8_t, 1); 518 INCLUDE(CAM_INTF_META_FLASH_STATE, int32_t, 1); 519 INCLUDE(CAM_INTF_META_HOTPIXEL_MODE, uint8_t, 1); 520 INCLUDE(CAM_INTF_META_LENS_APERTURE, float, 1); 521 INCLUDE(CAM_INTF_META_LENS_FILTERDENSITY, float, 1); 522 INCLUDE(CAM_INTF_META_LENS_FOCAL_LENGTH, float, 1); 523 INCLUDE(CAM_INTF_META_LENS_FOCUS_DISTANCE, float, 1); 524 INCLUDE(CAM_INTF_META_LENS_FOCUS_RANGE, float, 2); 525 INCLUDE(CAM_INTF_META_LENS_OPT_STAB_MODE, uint8_t, 1); 526 INCLUDE(CAM_INTF_META_LENS_FOCUS_STATE, uint8_t, 1); 527 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_MODE, uint8_t, 1); 528 INCLUDE(CAM_INTF_META_SCALER_CROP_REGION, cam_crop_region_t, 1); 529 INCLUDE(CAM_INTF_META_SCENE_FLICKER, uint8_t, 1); 530 INCLUDE(CAM_INTF_META_SENSOR_EXPOSURE_TIME, int64_t, 1); 531 INCLUDE(CAM_INTF_META_SENSOR_FRAME_DURATION, int64_t, 1); 532 INCLUDE(CAM_INTF_META_SENSOR_SENSITIVITY, int32_t, 1); 533 INCLUDE(CAM_INTF_META_SENSOR_TIMESTAMP, struct timeval, 1); 534 INCLUDE(CAM_INTF_META_SHADING_MODE, uint8_t, 1); 535 INCLUDE(CAM_INTF_META_STATS_FACEDETECT_MODE, uint8_t, 1); 536 INCLUDE(CAM_INTF_META_STATS_HISTOGRAM_MODE, uint8_t, 1); 537 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, uint8_t, 1); 538 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP, cam_sharpness_map_t, 3); 539 INCLUDE(CAM_INTF_META_LENS_SHADING_MAP, cam_lens_shading_map_t, 1); 540 INCLUDE(CAM_INTF_META_PRIVATE_DATA, char, MAX_METADATA_PAYLOAD_SIZE); 541} metadata_type_t; 542 543/****************************DO NOT MODIFY BELOW THIS LINE!!!!*********************/ 544 545typedef struct { 546 metadata_type_t data; 547 uint8_t next_flagged_entry; 548} metadata_entry_type_t; 549 550typedef struct { 551 uint8_t first_flagged_entry; 552 metadata_entry_type_t entry[CAM_INTF_PARM_MAX]; 553} metadata_buffer_t; 554 555typedef struct { 556 parm_type_t data; 557 uint8_t next_flagged_entry; 558} parm_entry_type_t; 559 560typedef struct { 561 uint8_t first_flagged_entry; 562 parm_entry_type_t entry[CAM_INTF_PARM_MAX]; 563} parm_buffer_t; 564 565#endif /* __QCAMERA_INTF_H__ */ 566