cam_intf.h revision 2dd2f652b9cdd9e1d3db1d4157e38756370d7409
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 uint8_t supported_overrides_cnt; // == supported_scene_modes_cnt 267 cam_scene_mode_overrides_t scene_mode_overrides[CAM_SCENE_MODE_MAX]; 268 269} cam_capability_t; 270 271typedef enum { 272 CAM_STREAM_CONSUMER_DISPLAY, /* buf to be displayed */ 273 CAM_STREAM_CONSUMER_VIDEO_ENC, /* buf to be encoded by video */ 274 CAM_STREAM_CONSUMER_JPEG_ENC, /* ZSL YUV buf to be fed back to JPEG */ 275} cam_stream_consumer_t; 276 277typedef enum { 278 CAM_STREAM_PARAM_TYPE_DO_REPROCESS = CAM_INTF_PARM_DO_REPROCESS, 279 CAM_STREAM_PARAM_TYPE_SET_BUNDLE_INFO = CAM_INTF_PARM_SET_BUNDLE, 280 CAM_STREAM_PARAM_SET_STREAM_CONSUMER, 281 CAM_STREAM_PARAM_TYPE_MAX 282} cam_stream_param_type_e; 283 284typedef struct { 285 uint8_t buf_index; /* buf index to the source frame buffer that needs reprocess, 286 (assume buffer is already mapped)*/ 287 uint32_t frame_idx; /* frame id of source frame to be reprocessed */ 288 int32_t ret_val; /* return value from reprocess. Could have different meanings. 289 i.e., faceID in the case of face registration. */ 290 uint8_t meta_present; /* if there is meta data associated with this reprocess frame */ 291 uint32_t meta_stream_handle; /* meta data stream ID. only valid if meta_present != 0 */ 292 uint8_t meta_buf_index; /* buf index to meta data buffer. only valid if meta_present != 0 */ 293 294 cam_per_frame_pp_config_t frame_pp_config; /* per frame post-proc configuration */ 295} cam_reprocess_param; 296 297typedef struct { 298 cam_stream_param_type_e type; 299 union { 300 cam_reprocess_param reprocess; /* do reprocess */ 301 cam_bundle_config_t bundleInfo; /* set bundle info*/ 302 cam_stream_consumer_t consumer; /* stream consumer */ 303 }; 304} cam_stream_parm_buffer_t; 305 306/* stream info */ 307typedef struct { 308 /* stream ID from server */ 309 uint32_t stream_svr_id; 310 311 /* stream type */ 312 cam_stream_type_t stream_type; 313 314 /* image format */ 315 cam_format_t fmt; 316 317 /* image dimension */ 318 cam_dimension_t dim; 319 320 /* buffer plane information, will be calc based on stream_type, fmt, 321 dim, and padding_info(from stream config). Info including: 322 offset_x, offset_y, stride, scanline, plane offset */ 323 cam_stream_buf_plane_info_t buf_planes; 324 325 /* streaming type */ 326 cam_streaming_mode_t streaming_mode; 327 /* num of frames needs to be generated. 328 * only valid when streaming_mode = CAM_STREAMING_MODE_BURST */ 329 uint8_t num_of_burst; 330 331 /* stream specific pp config */ 332 cam_pp_feature_config_t pp_config; 333 334 /* this section is valid if offline reprocess type stream */ 335 cam_stream_reproc_config_t reprocess_config; 336 337 cam_stream_parm_buffer_t parm_buf; /* stream based parameters */ 338} cam_stream_info_t; 339 340/***************************************************************************** 341 * Code for Domain Socket Based Parameters * 342 ****************************************************************************/ 343 344#define POINTER_OF(PARAM_ID,TABLE_PTR) \ 345 (&(TABLE_PTR->entry[PARAM_ID].data)) 346 347#define GET_FIRST_PARAM_ID(TABLE_PTR) \ 348 (TABLE_PTR->first_flagged_entry) 349 350#define SET_FIRST_PARAM_ID(TABLE_PTR,PARAM_ID) \ 351 TABLE_PTR->first_flagged_entry=PARAM_ID 352 353#define GET_NEXT_PARAM_ID(CURRENT_PARAM_ID,TABLE_PTR) \ 354 (TABLE_PTR->entry[CURRENT_PARAM_ID].next_flagged_entry) 355 356#define SET_NEXT_PARAM_ID(CURRENT_PARAM_ID,TABLE_PTR,NEXT_PARAM_ID) \ 357 TABLE_PTR->entry[CURRENT_PARAM_ID].next_flagged_entry=NEXT_PARAM_ID; 358 359#define INCLUDE(PARAM_ID,DATATYPE,COUNT) \ 360 DATATYPE member_variable_##PARAM_ID[ COUNT ] 361 362typedef union { 363/************************************************************************************** 364 * ID from (cam_intf_parm_type_t) DATATYPE COUNT 365 **************************************************************************************/ 366 INCLUDE(CAM_INTF_PARM_HAL_VERSION, int32_t, 1); 367 /* Shared between HAL1 and HAL3 */ 368 INCLUDE(CAM_INTF_PARM_ANTIBANDING, int32_t, 1); 369 INCLUDE(CAM_INTF_PARM_EXPOSURE_COMPENSATION, int32_t, 1); 370 INCLUDE(CAM_INTF_PARM_AEC_LOCK, int32_t, 1); 371 INCLUDE(CAM_INTF_PARM_FPS_RANGE, cam_fps_range_t, 1); 372 INCLUDE(CAM_INTF_PARM_FOCUS_MODE, uint8_t, 1); 373 INCLUDE(CAM_INTF_PARM_AWB_LOCK, int32_t, 1); 374 INCLUDE(CAM_INTF_PARM_WHITE_BALANCE, int32_t, 1); 375 INCLUDE(CAM_INTF_PARM_EFFECT, int32_t, 1); 376 INCLUDE(CAM_INTF_PARM_BESTSHOT_MODE, int32_t, 1); 377 INCLUDE(CAM_INTF_PARM_DIS_ENABLE, int32_t, 1); 378 INCLUDE(CAM_INTF_PARM_LED_MODE, int32_t, 1); 379 380 /* HAL1 specific */ 381 INCLUDE(CAM_INTF_PARM_QUERY_FLASH4SNAP, int32_t, 1); //read only 382 INCLUDE(CAM_INTF_PARM_EXPOSURE, int32_t, 1); 383 INCLUDE(CAM_INTF_PARM_SHARPNESS, int32_t, 1); 384 INCLUDE(CAM_INTF_PARM_CONTRAST, int32_t, 1); 385 INCLUDE(CAM_INTF_PARM_SATURATION, int32_t, 1); 386 INCLUDE(CAM_INTF_PARM_BRIGHTNESS, int32_t, 1); 387 INCLUDE(CAM_INTF_PARM_ISO, int32_t, 1); 388 INCLUDE(CAM_INTF_PARM_ZOOM, int32_t, 1); 389 INCLUDE(CAM_INTF_PARM_ROLLOFF, int32_t, 1); 390 INCLUDE(CAM_INTF_PARM_MODE, int32_t, 1); 391 INCLUDE(CAM_INTF_PARM_AEC_ALGO_TYPE, int32_t, 1); 392 INCLUDE(CAM_INTF_PARM_FOCUS_ALGO_TYPE, int32_t, 1); 393 INCLUDE(CAM_INTF_PARM_AEC_ROI, cam_set_aec_roi_t, 1); 394 INCLUDE(CAM_INTF_PARM_AF_ROI, cam_roi_info_t, 1); 395 INCLUDE(CAM_INTF_PARM_SCE_FACTOR, int32_t, 1); 396 INCLUDE(CAM_INTF_PARM_FD, cam_fd_set_parm_t, 1); 397 INCLUDE(CAM_INTF_PARM_MCE, int32_t, 1); 398 INCLUDE(CAM_INTF_PARM_HFR, int32_t, 1); 399 INCLUDE(CAM_INTF_PARM_REDEYE_REDUCTION, int32_t, 1); 400 INCLUDE(CAM_INTF_PARM_WAVELET_DENOISE, cam_denoise_param_t, 1); 401 INCLUDE(CAM_INTF_PARM_HISTOGRAM, int32_t, 1); 402 INCLUDE(CAM_INTF_PARM_ASD_ENABLE, int32_t, 1); 403 INCLUDE(CAM_INTF_PARM_RECORDING_HINT, int32_t, 1); 404 INCLUDE(CAM_INTF_PARM_HDR, cam_exp_bracketing_t, 1); 405 INCLUDE(CAM_INTF_PARM_FRAMESKIP, int32_t, 1); 406 INCLUDE(CAM_INTF_PARM_ZSL_MODE, int32_t, 1); 407 INCLUDE(CAM_INTF_PARM_HDR_NEED_1X, int32_t, 1); 408 INCLUDE(CAM_INTF_PARM_LOCK_CAF, int32_t, 1); 409 INCLUDE(CAM_INTF_PARM_VIDEO_HDR, int32_t, 1); 410 411 /* HAL3 sepcific */ 412 INCLUDE(CAM_INTF_META_FRAME_NUMBER, uint32_t, 1); 413 INCLUDE(CAM_INTF_META_COLOR_CORRECT_MODE, uint8_t, 1); 414 INCLUDE(CAM_INTF_META_COLOR_CORRECT_TRANSFORM, cam_color_correct_matrix_t, 1); 415 INCLUDE(CAM_INTF_META_AEC_MODE, uint8_t, 1); 416 INCLUDE(CAM_INTF_META_AEC_ROI, cam_area_t, 5); 417 INCLUDE(CAM_INTF_META_AEC_PRECAPTURE_TRIGGER, cam_trigger_t, 1); 418 INCLUDE(CAM_INTF_META_AF_ROI, cam_area_t, 5); 419 INCLUDE(CAM_INTF_META_AF_TRIGGER, cam_trigger_t, 1); 420 INCLUDE(CAM_INTF_META_AWB_REGIONS, cam_area_t, 5); 421 INCLUDE(CAM_INTF_META_CAPTURE_INTENT, uint8_t, 1); 422 INCLUDE(CAM_INTF_META_MODE, uint8_t, 1); 423 INCLUDE(CAM_INTF_META_DEMOSAIC, int32_t, 1); 424 INCLUDE(CAM_INTF_META_EDGE, int32_t, 1); 425 INCLUDE(CAM_INTF_META_SHARPNESS_STRENGTH, int32_t, 1); 426 INCLUDE(CAM_INTF_META_FLASH_POWER, uint8_t, 1); 427 INCLUDE(CAM_INTF_META_FLASH_FIRING_TIME, int64_t, 1); 428 INCLUDE(CAM_INTF_META_GEOMETRIC_MODE, uint8_t, 1); 429 INCLUDE(CAM_INTF_META_GEOMETRIC_STRENGTH, uint8_t, 1); 430 INCLUDE(CAM_INTF_META_HOTPIXEL_MODE, uint8_t, 1); 431 INCLUDE(CAM_INTF_META_LENS_APERTURE, float, 1); 432 INCLUDE(CAM_INTF_META_LENS_FILTERDENSITY, float, 1); 433 INCLUDE(CAM_INTF_META_LENS_FOCAL_LENGTH, float, 1); 434 INCLUDE(CAM_INTF_META_LENS_FOCUS_DISTANCE, float, 1); 435 INCLUDE(CAM_INTF_META_LENS_OPT_STAB_MODE, uint8_t, 1); 436 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_MODE, uint8_t, 1); 437 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_STRENGTH, int32_t, 1); 438 INCLUDE(CAM_INTF_META_SCALER_CROP_REGION, cam_crop_region_t, 1); 439 INCLUDE(CAM_INTF_META_SENSOR_EXPOSURE_TIME, int64_t, 1); 440 INCLUDE(CAM_INTF_META_SENSOR_FRAME_DURATION, int64_t, 1); 441 INCLUDE(CAM_INTF_META_SENSOR_SENSITIVITY, int32_t, 1); 442 INCLUDE(CAM_INTF_META_SHADING_MODE, uint8_t, 1); 443 INCLUDE(CAM_INTF_META_SHADING_STRENGTH, uint8_t, 1); 444 INCLUDE(CAM_INTF_META_STATS_FACEDETECT_MODE, uint8_t, 1); 445 INCLUDE(CAM_INTF_META_STATS_HISTOGRAM_MODE, uint8_t, 1); 446 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, uint8_t, 1); 447 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_BLUE, cam_tonemap_curve_t, 1); 448 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_GREEN, cam_tonemap_curve_t, 1); 449 INCLUDE(CAM_INTF_META_TONEMAP_CURVE_RED, cam_tonemap_curve_t, 1); 450 INCLUDE(CAM_INTF_META_TONEMAP_MODE, uint8_t, 1); 451} parm_type_t; 452 453 454typedef union { 455/************************************************************************************** 456 * ID from (cam_intf_metadata_type_t) DATATYPE COUNT 457 **************************************************************************************/ 458 /* common between HAL1 and HAL3 */ 459 INCLUDE(CAM_INTF_META_HISTOGRAM, cam_hist_stats_t, 1); 460 INCLUDE(CAM_INTF_META_FACE_DETECTION, cam_face_detection_data_t, 1); 461 INCLUDE(CAM_INTF_META_AUTOFOCUS_DATA, cam_auto_focus_data_t, 1); 462 463 /* Specific to HAl1 */ 464 INCLUDE(CAM_INTF_META_CROP_DATA, cam_crop_data_t, 1); 465 INCLUDE(CAM_INTF_META_PREP_SNAPSHOT_DONE, int32_t, 1); 466 INCLUDE(CAM_INTF_META_GOOD_FRAME_IDX_RANGE, cam_frame_idx_range_t, 1); 467 /* Specific to HAL3 */ 468 INCLUDE(CAM_INTF_META_FRAME_NUMBER_VALID, int32_t, 1); 469 INCLUDE(CAM_INTF_META_FRAME_NUMBER, uint32_t, 1); 470 INCLUDE(CAM_INTF_META_COLOR_CORRECT_MODE, uint8_t, 1); 471 INCLUDE(CAM_INTF_META_AEC_PRECAPTURE_ID, int32_t, 1); 472 INCLUDE(CAM_INTF_META_AEC_ROI, cam_area_t, 5); 473 INCLUDE(CAM_INTF_META_AEC_STATE, uint8_t, 1); 474 INCLUDE(CAM_INTF_PARM_FOCUS_MODE, uint8_t, 1); 475 INCLUDE(CAM_INTF_META_AF_ROI, cam_area_t, 5); 476 INCLUDE(CAM_INTF_META_AF_STATE, uint8_t, 1); 477 INCLUDE(CAM_INTF_META_AF_TRIGGER_ID, int32_t, 1); 478 INCLUDE(CAM_INTF_PARM_WHITE_BALANCE, int32_t, 1); 479 INCLUDE(CAM_INTF_META_AWB_REGIONS, cam_area_t, 5); 480 INCLUDE(CAM_INTF_META_AWB_STATE, uint8_t, 1); 481 INCLUDE(CAM_INTF_META_MODE, uint8_t, 1); 482 INCLUDE(CAM_INTF_META_EDGE, int32_t, 1); 483 INCLUDE(CAM_INTF_META_FLASH_POWER, uint8_t, 1); 484 INCLUDE(CAM_INTF_META_FLASH_FIRING_TIME, int64_t, 1); 485 INCLUDE(CAM_INTF_PARM_LED_MODE, uint8_t, 1); 486 INCLUDE(CAM_INTF_META_FLASH_STATE, int32_t, 1); 487 INCLUDE(CAM_INTF_META_HOTPIXEL_MODE, uint8_t, 1); 488 INCLUDE(CAM_INTF_META_LENS_APERTURE, float, 1); 489 INCLUDE(CAM_INTF_META_LENS_FILTERDENSITY, float, 1); 490 INCLUDE(CAM_INTF_META_LENS_FOCAL_LENGTH, float, 1); 491 INCLUDE(CAM_INTF_META_LENS_FOCUS_DISTANCE, float, 1); 492 INCLUDE(CAM_INTF_META_LENS_FOCUS_RANGE, float, 2); 493 INCLUDE(CAM_INTF_META_LENS_OPT_STAB_MODE, uint8_t, 1); 494 INCLUDE(CAM_INTF_META_LENS_FOCUS_STATE, uint8_t, 1); 495 INCLUDE(CAM_INTF_META_NOISE_REDUCTION_MODE, uint8_t, 1); 496 INCLUDE(CAM_INTF_META_SCALER_CROP_REGION, cam_crop_region_t, 1); 497 INCLUDE(CAM_INTF_META_SENSOR_EXPOSURE_TIME, int64_t, 1); 498 INCLUDE(CAM_INTF_META_SENSOR_FRAME_DURATION, int64_t, 1); 499 INCLUDE(CAM_INTF_META_SENSOR_SENSITIVITY, int32_t, 1); 500 INCLUDE(CAM_INTF_META_SENSOR_TIMESTAMP, struct timeval, 1); 501 INCLUDE(CAM_INTF_META_SHADING_MODE, uint8_t, 1); 502 INCLUDE(CAM_INTF_META_STATS_FACEDETECT_MODE, uint8_t, 1); 503 INCLUDE(CAM_INTF_META_STATS_HISTOGRAM_MODE, uint8_t, 1); 504 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, uint8_t, 1); 505 INCLUDE(CAM_INTF_META_STATS_SHARPNESS_MAP, cam_sharpness_map_t, 3); 506 INCLUDE(CAM_INTF_META_PRIVATE_DATA, char, MAX_METADATA_PAYLOAD_SIZE); 507 508} metadata_type_t; 509 510/****************************DO NOT MODIFY BELOW THIS LINE!!!!*********************/ 511 512typedef struct { 513 metadata_type_t data; 514 uint8_t next_flagged_entry; 515} metadata_entry_type_t; 516 517typedef struct { 518 uint8_t first_flagged_entry; 519 metadata_entry_type_t entry[CAM_INTF_PARM_MAX]; 520} metadata_buffer_t; 521 522typedef struct { 523 parm_type_t data; 524 uint8_t next_flagged_entry; 525} parm_entry_type_t; 526 527typedef struct { 528 uint8_t first_flagged_entry; 529 parm_entry_type_t entry[CAM_INTF_PARM_MAX]; 530} parm_buffer_t; 531 532#endif /* __QCAMERA_INTF_H__ */ 533