cam_intf.h revision 744f5403bebb0e27140d16a5df7a341713c24a13
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 /* capabilities specific to HAL 1 */ 112 113 int modes_supported; /* mask of modes supported: 2D, 3D */ 114 uint32_t sensor_mount_angle; /* sensor mount angle */ 115 116 float focal_length; /* focal length */ 117 float hor_view_angle; /* horizontal view angle */ 118 float ver_view_angle; /* vertical view angle */ 119 120 uint8_t preview_sizes_tbl_cnt; /* preview sizes table size */ 121 cam_dimension_t preview_sizes_tbl[MAX_SIZES_CNT]; /* preiew sizes table */ 122 123 uint8_t video_sizes_tbl_cnt; /* video sizes table size */ 124 cam_dimension_t video_sizes_tbl[MAX_SIZES_CNT]; /* video sizes table */ 125 126 uint8_t picture_sizes_tbl_cnt; /* picture sizes table size */ 127 cam_dimension_t picture_sizes_tbl[MAX_SIZES_CNT]; /* picture sizes table */ 128 129 uint8_t livesnapshot_sizes_tbl_cnt; /* livesnapshot sizes table size */ 130 cam_dimension_t livesnapshot_sizes_tbl[MAX_SIZES_CNT]; /* livesnapshot sizes table */ 131 132 uint8_t hfr_tbl_cnt; /* table size for HFR */ 133 cam_hfr_info_t hfr_tbl[CAM_HFR_MODE_MAX]; /* HFR table */ 134 135 /* supported preview formats */ 136 uint8_t supported_preview_fmt_cnt; 137 cam_format_t supported_preview_fmts[CAM_FORMAT_MAX]; 138 139 /* supported picture formats */ 140 uint8_t supported_picture_fmt_cnt; 141 cam_format_t supported_picture_fmts[CAM_FORMAT_MAX]; 142 143 /* dimension and supported output format of raw dump from camif */ 144 cam_dimension_t raw_dim; 145 uint8_t supported_raw_fmt_cnt; 146 cam_format_t supported_raw_fmts[CAM_FORMAT_MAX]; 147 148 /* supported focus algorithms */ 149 uint8_t supported_focus_algos_cnt; 150 cam_focus_algorithm_type supported_focus_algos[CAM_FOCUS_ALGO_MAX]; 151 152 153 uint8_t auto_wb_lock_supported; /* flag if auto white balance lock is supported */ 154 uint8_t zoom_supported; /* flag if zoom is supported */ 155 uint8_t smooth_zoom_supported; /* flag if smooth zoom is supported */ 156 uint8_t auto_exposure_lock_supported; /* flag if auto exposure lock is supported */ 157 uint8_t video_snapshot_supported; /* flag if video snapshot is supported */ 158 159 uint8_t max_num_roi; /* max number of roi can be detected */ 160 uint8_t max_num_focus_areas; /* max num of focus areas */ 161 uint8_t max_num_metering_areas; /* max num opf metering areas */ 162 uint8_t max_zoom_step; /* max zoom step value */ 163 164 /* QCOM specific control */ 165 cam_control_range_t brightness_ctrl; /* brightness */ 166 cam_control_range_t sharpness_ctrl; /* sharpness */ 167 cam_control_range_t contrast_ctrl; /* contrast */ 168 cam_control_range_t saturation_ctrl; /* saturation */ 169 cam_control_range_t sce_ctrl; /* skintone enhancement factor */ 170 171 cam_padding_info_t padding_info; /* padding information from PP */ 172 int8_t min_num_hdr_bufs; /* minimum number of buffers needed for HDR by imaging module */ 173 int8_t min_num_pp_bufs; /* minimum number of buffers needed by postproc module */ 174 uint32_t min_required_pp_mask; /* min required pp feature masks for ZSL. 175 * depends on hardware limitation, i.e. for 8974, 176 * sharpness is required for all ZSL snapshot frames */ 177 178 /* capabilities specific to HAL 3 */ 179 180 float min_focus_distance; 181 float hyper_focal_distance; 182 183 float focal_lengths[CAM_FOCAL_LENGTHS_MAX]; 184 uint8_t focal_lengths_count; 185 186 float apertures[CAM_APERTURES_MAX]; 187 uint8_t apertures_count; 188 189 float filter_densities[CAM_FILTER_DENSITIES_MAX]; 190 uint8_t filter_densities_count; 191 192 cam_optical_stab_modes_t 193 optical_stab_modes[CAM_OPT_STAB_MAX]; 194 uint8_t optical_stab_modes_count; 195 196 cam_dimension_t lens_shading_map_size; 197 float lens_shading_map[3 * CAM_MAX_MAP_WIDTH * 198 CAM_MAX_MAP_HEIGHT]; 199 200 cam_dimension_t geo_correction_map_size; 201 float geo_correction_map[2 * 3 * CAM_MAX_MAP_WIDTH * 202 CAM_MAX_MAP_HEIGHT]; 203 204 float lens_position[3]; 205 206 /* nano seconds */ 207 int64_t exposure_time_range[2]; 208 209 /* nano seconds */ 210 int64_t max_frame_duration; 211 212 cam_color_filter_arrangement_t color_arrangement; 213 214 float sensor_physical_size[2]; 215 216 /* Dimensions of full pixel array, possibly including 217 black calibration pixels */ 218 cam_dimension_t pixel_array_size; 219 /* Area of raw data which corresponds to only active 220 pixels; smaller or equal to pixelArraySize. */ 221 cam_rect_t active_array_size; 222 223 /* Maximum raw value output by sensor */ 224 int32_t white_level; 225 226 /* A fixed black level offset for each of the Bayer 227 mosaic channels */ 228 int32_t black_level_pattern[4]; 229 230 /* Time taken before flash can fire again in nano secs */ 231 int64_t flash_charge_duration; 232 233 /* Maximum number of supported points in the tonemap 234 curve */ 235 int32_t max_tone_map_curve_points; 236 237 /* supported formats */ 238 uint8_t supported_scalar_format_cnt; 239 cam_format_t supported_scalar_fmts[CAM_FORMAT_MAX]; 240 241 /* The minimum frame duration that is supported for above 242 raw resolution */ 243 int64_t raw_min_duration; 244 245 uint8_t supported_sizes_tbl_cnt; 246 cam_dimension_t supported_sizes_tbl[MAX_SIZES_CNT]; 247 248 /* The minimum frame duration that is supported for each 249 * resolution in availableProcessedSizes. Should correspond 250 * to the frame duration when only that processed stream 251 * is active, with all processing set to FAST */ 252 int64_t min_duration[MAX_SIZES_CNT]; 253 254 uint32_t max_face_detection_count; 255 256 /* Number of histogram buckets supported */ 257 int32_t histogram_size; 258 /* Maximum value possible for a histogram bucket */ 259 int32_t max_histogram_count; 260 261 cam_dimension_t sharpness_map_size; 262 263 /* Maximum value possible for a sharpness map region */ 264 int32_t max_sharpness_map_value; 265 266} cam_capability_t; 267 268typedef enum { 269 CAM_STREAM_CONSUMER_DISPLAY, /* buf to be displayed */ 270 CAM_STREAM_CONSUMER_VIDEO_ENC, /* buf to be encoded by video */ 271 CAM_STREAM_CONSUMER_JPEG_ENC, /* ZSL YUV buf to be fed back to JPEG */ 272} cam_stream_consumer_t; 273 274typedef enum { 275 CAM_STREAM_PARAM_TYPE_DO_REPROCESS = CAM_INTF_PARM_DO_REPROCESS, 276 CAM_STREAM_PARAM_TYPE_SET_BUNDLE_INFO = CAM_INTF_PARM_SET_BUNDLE, 277 CAM_STREAM_PARAM_SET_STREAM_CONSUMER, 278 CAM_STREAM_PARAM_TYPE_MAX 279} cam_stream_param_type_e; 280 281typedef struct { 282 uint8_t buf_index; /* buf index to the source frame buffer that needs reprocess, 283 (assume buffer is already mapped)*/ 284 uint32_t frame_idx; /* frame id of source frame to be reprocessed */ 285 int32_t ret_val; /* return value from reprocess. Could have different meanings. 286 i.e., faceID in the case of face registration. */ 287 uint8_t meta_present; /* if there is meta data associated with this reprocess frame */ 288 uint32_t meta_stream_handle; /* meta data stream ID. only valid if meta_present != 0 */ 289 uint8_t meta_buf_index; /* buf index to meta data buffer. only valid if meta_present != 0 */ 290 291 cam_per_frame_pp_config_t frame_pp_config; /* per frame post-proc configuration */ 292} cam_reprocess_param; 293 294typedef struct { 295 cam_stream_param_type_e type; 296 union { 297 cam_reprocess_param reprocess; /* do reprocess */ 298 cam_bundle_config_t bundleInfo; /* set bundle info*/ 299 cam_stream_consumer_t consumer; /* stream consumer */ 300 }; 301} cam_stream_parm_buffer_t; 302 303/* stream info */ 304typedef struct { 305 /* stream ID from server */ 306 uint32_t stream_svr_id; 307 308 /* stream type */ 309 cam_stream_type_t stream_type; 310 311 /* image format */ 312 cam_format_t fmt; 313 314 /* image dimension */ 315 cam_dimension_t dim; 316 317 /* buffer plane information, will be calc based on stream_type, fmt, 318 dim, and padding_info(from stream config). Info including: 319 offset_x, offset_y, stride, scanline, plane offset */ 320 cam_stream_buf_plane_info_t buf_planes; 321 322 /* streaming type */ 323 cam_streaming_mode_t streaming_mode; 324 /* num of frames needs to be generated. 325 * only valid when streaming_mode = CAM_STREAMING_MODE_BURST */ 326 uint8_t num_of_burst; 327 328 /* stream specific pp config */ 329 cam_pp_feature_config_t pp_config; 330 331 /* this section is valid if offline reprocess type stream */ 332 cam_stream_reproc_config_t reprocess_config; 333 334 cam_stream_parm_buffer_t parm_buf; /* stream based parameters */ 335} cam_stream_info_t; 336 337/***************************************************************************** 338 * Code for Domain Socket Based Parameters * 339 ****************************************************************************/ 340 341#define POINTER_OF(PARAM_ID,TABLE_PTR) \ 342 (&(TABLE_PTR->entry[PARAM_ID].data)) 343 344#define GET_FIRST_PARAM_ID(TABLE_PTR) \ 345 (TABLE_PTR->first_flagged_entry) 346 347#define SET_FIRST_PARAM_ID(TABLE_PTR,PARAM_ID) \ 348 TABLE_PTR->first_flagged_entry=PARAM_ID 349 350#define GET_NEXT_PARAM_ID(CURRENT_PARAM_ID,TABLE_PTR) \ 351 (TABLE_PTR->entry[CURRENT_PARAM_ID].next_flagged_entry) 352 353#define SET_NEXT_PARAM_ID(CURRENT_PARAM_ID,TABLE_PTR,NEXT_PARAM_ID) \ 354 TABLE_PTR->entry[CURRENT_PARAM_ID].next_flagged_entry=NEXT_PARAM_ID; 355 356#define INCLUDE(PARAM_ID,DATATYPE,COUNT) \ 357 DATATYPE member_variable_##PARAM_ID[ COUNT ] 358 359typedef union { 360/************************************************************************************** 361 * ID from (cam_intf_parm_type_t) DATATYPE COUNT 362 **************************************************************************************/ 363 INCLUDE(CAM_INTF_PARM_HAL_VERSION, int32_t, 1); 364 /* Shared between HAL1 and HAL3 */ 365 INCLUDE(CAM_INTF_PARM_ANTIBANDING, int32_t, 1); 366 INCLUDE(CAM_INTF_PARM_EXPOSURE_COMPENSATION, int32_t, 1); 367 INCLUDE(CAM_INTF_PARM_AEC_LOCK, int32_t, 1); 368 INCLUDE(CAM_INTF_PARM_FPS_RANGE, cam_fps_range_t, 1); 369 INCLUDE(CAM_INTF_PARM_FOCUS_MODE, uint8_t, 1); 370 INCLUDE(CAM_INTF_PARM_AWB_LOCK, int32_t, 1); 371 INCLUDE(CAM_INTF_PARM_WHITE_BALANCE, int32_t, 1); 372 INCLUDE(CAM_INTF_PARM_EFFECT, int32_t, 1); 373 INCLUDE(CAM_INTF_PARM_BESTSHOT_MODE, int32_t, 1); 374 INCLUDE(CAM_INTF_PARM_DIS_ENABLE, int32_t, 1); 375 INCLUDE(CAM_INTF_PARM_LED_MODE, int32_t, 1); 376 377 /* HAL1 specific */ 378 INCLUDE(CAM_INTF_PARM_QUERY_FLASH4SNAP, int32_t, 1); //read only 379 INCLUDE(CAM_INTF_PARM_EXPOSURE, int32_t, 1); 380 INCLUDE(CAM_INTF_PARM_SHARPNESS, int32_t, 1); 381 INCLUDE(CAM_INTF_PARM_CONTRAST, int32_t, 1); 382 INCLUDE(CAM_INTF_PARM_SATURATION, int32_t, 1); 383 INCLUDE(CAM_INTF_PARM_BRIGHTNESS, int32_t, 1); 384 INCLUDE(CAM_INTF_PARM_ISO, int32_t, 1); 385 INCLUDE(CAM_INTF_PARM_ZOOM, int32_t, 1); 386 INCLUDE(CAM_INTF_PARM_ROLLOFF, int32_t, 1); 387 INCLUDE(CAM_INTF_PARM_MODE, int32_t, 1); 388 INCLUDE(CAM_INTF_PARM_AEC_ALGO_TYPE, int32_t, 1); 389 INCLUDE(CAM_INTF_PARM_FOCUS_ALGO_TYPE, int32_t, 1); 390 INCLUDE(CAM_INTF_PARM_AEC_ROI, cam_set_aec_roi_t, 1); 391 INCLUDE(CAM_INTF_PARM_AF_ROI, cam_roi_info_t, 1); 392 INCLUDE(CAM_INTF_PARM_SCE_FACTOR, int32_t, 1); 393 INCLUDE(CAM_INTF_PARM_FD, cam_fd_set_parm_t, 1); 394 INCLUDE(CAM_INTF_PARM_MCE, int32_t, 1); 395 INCLUDE(CAM_INTF_PARM_HFR, int32_t, 1); 396 INCLUDE(CAM_INTF_PARM_REDEYE_REDUCTION, int32_t, 1); 397 INCLUDE(CAM_INTF_PARM_WAVELET_DENOISE, cam_denoise_param_t, 1); 398 INCLUDE(CAM_INTF_PARM_HISTOGRAM, int32_t, 1); 399 INCLUDE(CAM_INTF_PARM_ASD_ENABLE, int32_t, 1); 400 INCLUDE(CAM_INTF_PARM_RECORDING_HINT, int32_t, 1); 401 INCLUDE(CAM_INTF_PARM_HDR, cam_exp_bracketing_t, 1); 402 INCLUDE(CAM_INTF_PARM_FRAMESKIP, int32_t, 1); 403 INCLUDE(CAM_INTF_PARM_ZSL_MODE, int32_t, 1); 404 INCLUDE(CAM_INTF_PARM_HDR_NEED_1X, int32_t, 1); 405 INCLUDE(CAM_INTF_PARM_LOCK_CAF, int32_t, 1); 406 INCLUDE(CAM_INTF_PARM_VIDEO_HDR, int32_t, 1); 407 408 /* HAL3 sepcific */ 409 INCLUDE(CAM_INTF_META_FRAME_NUMBER, uint32_t, 1); 410 INCLUDE(CAM_INTF_META_COLOR_CORRECT_MODE, uint8_t, 1); 411 INCLUDE(CAM_INTF_META_COLOR_CORRECT_TRANSFORM, cam_color_correct_matrix_t, 1); 412 INCLUDE(CAM_INTF_META_AEC_MODE, uint8_t, 1); 413 INCLUDE(CAM_INTF_META_AEC_ROI, cam_area_t, 5); 414 INCLUDE(CAM_INTF_META_AEC_PRECAPTURE_TRIGGER, uint8_t, 1); 415 INCLUDE(CAM_INTF_META_AF_ROI, cam_area_t, 5); 416 INCLUDE(CAM_INTF_META_AF_TRIGGER, uint8_t, 1); 417 INCLUDE(CAM_INTF_META_AWB_REGIONS, cam_area_t, 5); 418 INCLUDE(CAM_INTF_META_CAPTURE_INTENT, uint8_t, 1); 419 INCLUDE(CAM_INTF_META_MODE, uint8_t, 1); 420 INCLUDE(CAM_INTF_META_DEMOSAIC, int32_t, 1); 421 INCLUDE(CAM_INTF_META_EDGE, int32_t, 1); 422 INCLUDE(CAM_INTF_META_SHARPNESS_STRENGTH, int32_t, 1); 423 INCLUDE(CAM_INTF_META_FLASH_POWER, uint8_t, 1); 424 INCLUDE(CAM_INTF_META_FLASH_FIRING_TIME, int64_t, 1); 425 INCLUDE(CAM_INTF_META_GEOMETRIC_MODE, uint8_t, 1); 426 INCLUDE(CAM_INTF_META_GEOMETRIC_STRENGTH, uint8_t, 1); 427 INCLUDE(CAM_INTF_META_HOTPIXEL_MODE, uint8_t, 1); 428 INCLUDE(CAM_INTF_META_LENS_APERTURE, float, 1); 429 INCLUDE(CAM_INTF_META_LENS_FILTERDENSITY, float, 1); 430 INCLUDE(CAM_INTF_META_LENS_FOCAL_LENGTH, float, 1); 431 INCLUDE(CAM_INTF_META_LENS_FOCUS_DISTANCE, float, 1); 432 INCLUDE(CAM_INTF_META_LENS_OPT_STAB_MODE, uint8_t, 1); 433 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_MODE, uint8_t, 1); 434 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_STRENGTH, int32_t, 1); 435 INCLUDE(CAM_INTF_META_SCALER_CROP_REGION, cam_crop_region_t, 1); 436 INCLUDE(CAM_INTF_META_SENSOR_EXPOSURE_TIME, int64_t, 1); 437 INCLUDE(CAM_INTF_META_SENSOR_FRAME_DURATION, int64_t, 1); 438 INCLUDE(CAM_INTF_META_SENSOR_SENSITIVITY, int32_t, 1); 439 INCLUDE(CAM_INTF_META_SHADING_MODE, uint8_t, 1); 440 INCLUDE(CAM_INTF_META_SHADING_STRENGTH, uint8_t, 1); 441 INCLUDE(CAM_INTF_META_STATS_FACEDETECT_MODE, uint8_t, 1); 442 INCLUDE(CAM_INTF_META_STATS_HISTOGRAM_MODE, uint8_t, 1); 443 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, uint8_t, 1); 444 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_BLUE, cam_tonemap_curve_t, 1); 445 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_GREEN, cam_tonemap_curve_t, 1); 446 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_RED, cam_tonemap_curve_t, 1); 447 INCLUDE(CAM_INTF_META_TONEMAP_MODE, uint8_t, 1); 448} parm_type_t; 449 450 451typedef union { 452/************************************************************************************** 453 * ID from (cam_intf_metadata_type_t) DATATYPE COUNT 454 **************************************************************************************/ 455 /* common between HAL1 and HAL3 */ 456 INCLUDE(CAM_INTF_META_HISTOGRAM, cam_hist_stats_t, 1); 457 INCLUDE(CAM_INTF_META_FACE_DETECTION, cam_face_detection_data_t, 1); 458 INCLUDE(CAM_INTF_META_AUTOFOCUS_DATA, cam_auto_focus_data_t, 1); 459 460 /* Specific to HAl1 */ 461 INCLUDE(CAM_INTF_META_CROP_DATA, cam_crop_data_t, 1); 462 INCLUDE(CAM_INTF_META_PREP_SNAPSHOT_DONE, int32_t, 1); 463 INCLUDE(CAM_INTF_META_GOOD_FRAME_IDX_RANGE, cam_frame_idx_range_t, 1); 464 /* Specific to HAL3 */ 465 INCLUDE(CAM_INTF_META_FRAME_NUMBER_VALID, int32_t, 1); 466 INCLUDE(CAM_INTF_META_FRAME_NUMBER, uint32_t, 1); 467 INCLUDE(CAM_INTF_META_COLOR_CORRECT_MODE, uint8_t, 1); 468 INCLUDE(CAM_INTF_META_AEC_PRECAPTURE_ID, int32_t, 1); 469 INCLUDE(CAM_INTF_META_AEC_ROI, cam_area_t, 5); 470 INCLUDE(CAM_INTF_META_AEC_STATE, uint8_t, 1); 471 INCLUDE(CAM_INTF_PARM_FOCUS_MODE, uint8_t, 1); 472 INCLUDE(CAM_INTF_META_AF_ROI, cam_area_t, 5); 473 INCLUDE(CAM_INTF_META_AF_STATE, uint8_t, 1); 474 INCLUDE(CAM_INTF_META_AF_TRIGGER_ID, int32_t, 1); 475 INCLUDE(CAM_INTF_PARM_WHITE_BALANCE, int32_t, 1); 476 INCLUDE(CAM_INTF_META_AWB_REGIONS, cam_area_t, 5); 477 INCLUDE(CAM_INTF_META_AWB_STATE, uint8_t, 1); 478 INCLUDE(CAM_INTF_META_MODE, uint8_t, 1); 479 INCLUDE(CAM_INTF_META_EDGE, int32_t, 1); 480 INCLUDE(CAM_INTF_META_FLASH_POWER, uint8_t, 1); 481 INCLUDE(CAM_INTF_META_FLASH_FIRING_TIME, int64_t, 1); 482 INCLUDE(CAM_INTF_PARM_LED_MODE, uint8_t, 1); 483 INCLUDE(CAM_INTF_META_FLASH_STATE, int32_t, 1); 484 INCLUDE(CAM_INTF_META_HOTPIXEL_MODE, uint8_t, 1); 485 INCLUDE(CAM_INTF_META_LENS_APERTURE, float, 1); 486 INCLUDE(CAM_INTF_META_LENS_FILTERDENSITY, float, 1); 487 INCLUDE(CAM_INTF_META_LENS_FOCAL_LENGTH, float, 1); 488 INCLUDE(CAM_INTF_META_LENS_FOCUS_DISTANCE, float, 1); 489 INCLUDE(CAM_INTF_META_LENS_FOCUS_RANGE, float, 2); 490 INCLUDE(CAM_INTF_META_LENS_OPT_STAB_MODE, uint8_t, 1); 491 INCLUDE(CAM_INTF_META_LENS_FOCUS_STATE, uint8_t, 1); 492 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_MODE, uint8_t, 1); 493 INCLUDE(CAM_INTF_META_SCALER_CROP_REGION, cam_crop_region_t, 1); 494 INCLUDE(CAM_INTF_META_SENSOR_EXPOSURE_TIME, int64_t, 1); 495 INCLUDE(CAM_INTF_META_SENSOR_FRAME_DURATION, int64_t, 1); 496 INCLUDE(CAM_INTF_META_SENSOR_SENSITIVITY, int32_t, 1); 497 INCLUDE(CAM_INTF_META_SENSOR_TIMESTAMP, struct timeval, 1); 498 INCLUDE(CAM_INTF_META_SHADING_MODE, uint8_t, 1); 499 INCLUDE(CAM_INTF_META_STATS_FACEDETECT_MODE, uint8_t, 1); 500 INCLUDE(CAM_INTF_META_STATS_HISTOGRAM_MODE, uint8_t, 1); 501 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, uint8_t, 1); 502 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP, cam_sharpness_map_t, 3); 503 INCLUDE(CAM_INTF_META_PRIVATE_DATA, char, MAX_METADATA_PAYLOAD_SIZE); 504 505} metadata_type_t; 506 507/****************************DO NOT MODIFY BELOW THIS LINE!!!!*********************/ 508 509typedef struct { 510 metadata_type_t data; 511 uint8_t next_flagged_entry; 512} metadata_entry_type_t; 513 514typedef struct { 515 uint8_t first_flagged_entry; 516 metadata_entry_type_t entry[CAM_INTF_PARM_MAX]; 517} metadata_buffer_t; 518 519typedef struct { 520 parm_type_t data; 521 uint8_t next_flagged_entry; 522} parm_entry_type_t; 523 524typedef struct { 525 uint8_t first_flagged_entry; 526 parm_entry_type_t entry[CAM_INTF_PARM_MAX]; 527} parm_buffer_t; 528 529#endif /* __QCAMERA_INTF_H__ */ 530