QCamera_Intf.h revision bf1bd919afd1e5e15eaeda79f8b5f83abc1ecb7a
1/* Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum, Inc. 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 <stdint.h> 34#include <pthread.h> 35#include <inttypes.h> 36 37#define PAD_TO_WORD(a) (((a)+3)&~3) 38#define PAD_TO_2K(a) (((a)+2047)&~2047) 39#define PAD_TO_4K(a) (((a)+4095)&~4095) 40#define PAD_TO_8K(a) (((a)+8191)&~8191) 41 42#define CEILING32(X) (((X) + 0x0001F) & 0xFFFFFFE0) 43#define CEILING16(X) (((X) + 0x000F) & 0xFFF0) 44#define CEILING4(X) (((X) + 0x0003) & 0xFFFC) 45#define CEILING2(X) (((X) + 0x0001) & 0xFFFE) 46 47#define MAX_ROI 2 48#define MAX_NUM_PARM 5 49#define MAX_NUM_OPS 2 50#define VIDEO_MAX_PLANES 8 51#define MAX_SNAPSHOT_BUFFERS 5 52#define MAX_EXP_BRACKETING_LENGTH 32 53 54 55/* Exif Tag ID */ 56typedef uint32_t exif_tag_id_t; 57 58/* Exif Info (opaque definition) */ 59struct exif_info_t; 60typedef struct exif_info_t * exif_info_obj_t; 61 62typedef enum { 63 BACK_CAMERA, 64 FRONT_CAMERA, 65}cam_position_t; 66 67typedef enum { 68 CAM_CTRL_FAILED, /* Failure in doing operation */ 69 CAM_CTRL_SUCCESS, /* Operation Succeded */ 70 CAM_CTRL_INVALID_PARM, /* Inavlid parameter provided */ 71 CAM_CTRL_NOT_SUPPORTED, /* Parameter/operation not supported */ 72 CAM_CTRL_ACCEPTED, /* Parameter accepted */ 73 CAM_CTRL_MAX, 74} cam_ctrl_status_t; 75 76typedef enum { 77 CAMERA_YUV_420_NV12, 78 CAMERA_YUV_420_NV21, 79 CAMERA_YUV_420_NV21_ADRENO, 80 CAMERA_BAYER_SBGGR10, 81 CAMERA_RDI, 82 CAMERA_YUV_420_YV12, 83 CAMERA_YUV_422_NV16, 84 CAMERA_YUV_422_NV61 85} cam_format_t; 86 87typedef enum { 88 CAMERA_PAD_NONE, 89 CAMERA_PAD_TO_WORD, /*2 bytes*/ 90 CAMERA_PAD_TO_LONG_WORD, /*4 bytes*/ 91 CAMERA_PAD_TO_8, /*8 bytes*/ 92 CAMERA_PAD_TO_16, /*16 bytes*/ 93 94 CAMERA_PAD_TO_1K, /*1k bytes*/ 95 CAMERA_PAD_TO_2K, /*2k bytes*/ 96 CAMERA_PAD_TO_4K, 97 CAMERA_PAD_TO_8K 98} cam_pad_format_t; 99 100typedef struct { 101 int ext_mode; /* preview, main, thumbnail, video, raw, etc */ 102 int frame_idx; /* frame index */ 103 int fd; /* origin fd */ 104 uint32_t size; 105} mm_camera_frame_map_type; 106 107typedef struct { 108 int ext_mode; /* preview, main, thumbnail, video, raw, etc */ 109 int frame_idx; /* frame index */ 110} mm_camera_frame_unmap_type; 111 112typedef enum { 113 CAM_SOCK_MSG_TYPE_FD_MAPPING, 114 CAM_SOCK_MSG_TYPE_FD_UNMAPPING, 115 CAM_SOCK_MSG_TYPE_WDN_START, 116 CAM_SOCK_MSG_TYPE_HIST_MAPPING, 117 CAM_SOCK_MSG_TYPE_HIST_UNMAPPING, 118 CAM_SOCK_MSG_TYPE_MAX 119}mm_camera_socket_msg_type; 120 121#define MM_MAX_WDN_NUM 2 122typedef struct { 123 unsigned long cookie; 124 int num_frames; 125 int ext_mode[MM_MAX_WDN_NUM]; 126 int frame_idx[MM_MAX_WDN_NUM]; 127} mm_camera_wdn_start_type; 128 129typedef struct { 130 mm_camera_socket_msg_type msg_type; 131 union { 132 mm_camera_frame_map_type frame_fd_map; 133 mm_camera_frame_unmap_type frame_fd_unmap; 134 mm_camera_wdn_start_type wdn_start; 135 } payload; 136} cam_sock_packet_t; 137 138 139typedef enum { 140 CAM_VIDEO_FRAME, 141 CAM_SNAPSHOT_FRAME, 142 CAM_PREVIEW_FRAME, 143}cam_frame_type_t; 144 145 146typedef enum { 147 CAMERA_MODE_2D = (1<<0), 148 CAMERA_MODE_3D = (1<<1), 149 CAMERA_NONZSL_MODE = (1<<2), 150 CAMERA_ZSL_MODE = (1<<3), 151 CAMERA_MODE_MAX = CAMERA_ZSL_MODE, 152} camera_mode_t; 153 154 155typedef struct { 156 int modes_supported; 157 int8_t camera_id; 158 cam_position_t position; 159 uint32_t sensor_mount_angle; 160}camera_info_t; 161 162typedef struct { 163 camera_mode_t mode; 164 int8_t camera_id; 165 camera_mode_t cammode; 166}config_params_t; 167 168typedef struct { 169 uint32_t len; 170 uint32_t y_offset; 171 uint32_t cbcr_offset; 172} cam_sp_len_offset_t; 173 174typedef struct{ 175 uint32_t len; 176 uint32_t offset; 177} cam_mp_len_offset_t; 178 179typedef struct { 180 int num_planes; 181 union { 182 cam_sp_len_offset_t sp; 183 cam_mp_len_offset_t mp[8]; 184 }; 185 uint32_t frame_len; 186} cam_frame_len_offset_t; 187 188typedef struct { 189 uint32_t parm[MAX_NUM_PARM]; 190 uint32_t ops[MAX_NUM_OPS]; 191 uint8_t yuv_output; 192 uint8_t jpeg_capture; 193 uint32_t max_pict_width; 194 uint32_t max_pict_height; 195 uint32_t max_preview_width; 196 uint32_t max_preview_height; 197 uint32_t max_video_width; 198 uint32_t max_video_height; 199 uint32_t effect; 200 camera_mode_t modes; 201 uint8_t preview_format; 202 uint32_t preview_sizes_cnt; 203 uint32_t thumb_sizes_cnt; 204 uint32_t video_sizes_cnt; 205 uint32_t hfr_sizes_cnt; 206 uint8_t vfe_output_enable; 207 uint8_t hfr_frame_skip; 208 uint32_t default_preview_width; 209 uint32_t default_preview_height; 210 uint32_t bestshot_reconfigure; 211}cam_prop_t; 212 213typedef struct { 214 uint16_t video_width; /* Video width seen by VFE could be different than orig. Ex. DIS */ 215 uint16_t video_height; /* Video height seen by VFE */ 216 uint16_t picture_width; /* Picture width seen by VFE */ 217 uint16_t picture_height; /* Picture height seen by VFE */ 218 uint16_t display_width; /* width of display */ 219 uint16_t display_height; /* height of display */ 220 uint16_t orig_video_width; /* original video width received */ 221 uint16_t orig_video_height; /* original video height received */ 222 uint16_t orig_picture_dx; /* original picture width received */ 223 uint16_t orig_picture_dy; /* original picture height received */ 224 uint16_t ui_thumbnail_height; /* Just like orig_picture_dx */ 225 uint16_t ui_thumbnail_width; /* Just like orig_picture_dy */ 226 uint16_t thumbnail_height; 227 uint16_t thumbnail_width; 228 uint16_t orig_picture_width; 229 uint16_t orig_picture_height; 230 uint16_t orig_thumb_width; 231 uint16_t orig_thumb_height; 232 uint16_t raw_picture_height; 233 uint16_t raw_picture_width; 234 uint32_t hjr_xtra_buff_for_bayer_filtering; 235 cam_format_t prev_format; 236 cam_format_t enc_format; 237 cam_format_t thumb_format; 238 cam_format_t main_img_format; 239 cam_pad_format_t prev_padding_format; 240 cam_pad_format_t enc_padding_format; 241 cam_pad_format_t thumb_padding_format; 242 cam_pad_format_t main_padding_format; 243 uint16_t display_luma_width; 244 uint16_t display_luma_height; 245 uint16_t display_chroma_width; 246 uint16_t display_chroma_height; 247 uint16_t video_luma_width; 248 uint16_t video_luma_height; 249 uint16_t video_chroma_width; 250 uint16_t video_chroma_height; 251 uint16_t thumbnail_luma_width; 252 uint16_t thumbnail_luma_height; 253 uint16_t thumbnail_chroma_width; 254 uint16_t thumbnail_chroma_height; 255 uint16_t main_img_luma_width; 256 uint16_t main_img_luma_height; 257 uint16_t main_img_chroma_width; 258 uint16_t main_img_chroma_height; 259 int rotation; 260 cam_frame_len_offset_t display_frame_offset; 261 cam_frame_len_offset_t video_frame_offset; 262 cam_frame_len_offset_t picture_frame_offset; 263 cam_frame_len_offset_t thumb_frame_offset; 264} cam_ctrl_dimension_t; 265 266/* Add enumenrations at the bottom but before MM_CAMERA_PARM_MAX */ 267typedef enum { 268 MM_CAMERA_PARM_PICT_SIZE, 269 MM_CAMERA_PARM_ZOOM_RATIO, 270 MM_CAMERA_PARM_HISTOGRAM, 271 MM_CAMERA_PARM_DIMENSION, 272 MM_CAMERA_PARM_FPS, 273 MM_CAMERA_PARM_FPS_MODE, /*5*/ 274 MM_CAMERA_PARM_EFFECT, 275 MM_CAMERA_PARM_EXPOSURE_COMPENSATION, 276 MM_CAMERA_PARM_EXPOSURE, 277 MM_CAMERA_PARM_SHARPNESS, 278 MM_CAMERA_PARM_CONTRAST, /*10*/ 279 MM_CAMERA_PARM_SATURATION, 280 MM_CAMERA_PARM_BRIGHTNESS, 281 MM_CAMERA_PARM_WHITE_BALANCE, 282 MM_CAMERA_PARM_LED_MODE, 283 MM_CAMERA_PARM_ANTIBANDING, /*15*/ 284 MM_CAMERA_PARM_ROLLOFF, 285 MM_CAMERA_PARM_CONTINUOUS_AF, 286 MM_CAMERA_PARM_FOCUS_RECT, 287 MM_CAMERA_PARM_AEC_ROI, 288 MM_CAMERA_PARM_AF_ROI, /*20*/ 289 MM_CAMERA_PARM_HJR, 290 MM_CAMERA_PARM_ISO, 291 MM_CAMERA_PARM_BL_DETECTION, 292 MM_CAMERA_PARM_SNOW_DETECTION, 293 MM_CAMERA_PARM_BESTSHOT_MODE, /*25*/ 294 MM_CAMERA_PARM_ZOOM, 295 MM_CAMERA_PARM_VIDEO_DIS, 296 MM_CAMERA_PARM_VIDEO_ROT, 297 MM_CAMERA_PARM_SCE_FACTOR, 298 MM_CAMERA_PARM_FD, /*30*/ 299 MM_CAMERA_PARM_MODE, 300 /* 2nd 32 bits */ 301 MM_CAMERA_PARM_3D_FRAME_FORMAT, 302 MM_CAMERA_PARM_CAMERA_ID, 303 MM_CAMERA_PARM_CAMERA_INFO, 304 MM_CAMERA_PARM_PREVIEW_SIZE, /*35*/ 305 MM_CAMERA_PARM_QUERY_FALSH4SNAP, 306 MM_CAMERA_PARM_FOCUS_DISTANCES, 307 MM_CAMERA_PARM_BUFFER_INFO, 308 MM_CAMERA_PARM_JPEG_ROTATION, 309 MM_CAMERA_PARM_JPEG_MAINIMG_QUALITY, /* 40 */ 310 MM_CAMERA_PARM_JPEG_THUMB_QUALITY, 311 MM_CAMERA_PARM_ZSL_ENABLE, 312 MM_CAMERA_PARM_FOCAL_LENGTH, 313 MM_CAMERA_PARM_HORIZONTAL_VIEW_ANGLE, 314 MM_CAMERA_PARM_VERTICAL_VIEW_ANGLE, /* 45 */ 315 MM_CAMERA_PARM_MCE, 316 MM_CAMERA_PARM_RESET_LENS_TO_INFINITY, 317 MM_CAMERA_PARM_SNAPSHOTDATA, 318 MM_CAMERA_PARM_HFR, 319 MM_CAMERA_PARM_REDEYE_REDUCTION, /* 50 */ 320 MM_CAMERA_PARM_WAVELET_DENOISE, 321 MM_CAMERA_PARM_3D_DISPLAY_DISTANCE, 322 MM_CAMERA_PARM_3D_VIEW_ANGLE, 323 MM_CAMERA_PARM_PREVIEW_FORMAT, 324 MM_CAMERA_PARM_HFR_SIZE, /* 55 */ 325 MM_CAMERA_PARM_3D_EFFECT, 326 MM_CAMERA_PARM_3D_MANUAL_CONV_RANGE, 327 MM_CAMERA_PARM_3D_MANUAL_CONV_VALUE, 328 MM_CAMERA_PARM_ENABLE_3D_MANUAL_CONVERGENCE, 329 /* These are new parameters defined here */ 330 MM_CAMERA_PARM_CH_IMAGE_FMT, /* 60 */ // mm_camera_ch_image_fmt_parm_t 331 MM_CAMERA_PARM_OP_MODE, // camera state, sub state also 332 MM_CAMERA_PARM_SHARPNESS_CAP, // 333 MM_CAMERA_PARM_SNAPSHOT_BURST_NUM, // num shots per snapshot action 334 MM_CAMERA_PARM_LIVESHOT_MAIN, // enable/disable full size live shot 335 MM_CAMERA_PARM_MAXZOOM, /* 65 */ 336 MM_CAMERA_PARM_LUMA_ADAPTATION, // enable/disable 337 MM_CAMERA_PARM_HDR, 338 MM_CAMERA_PARM_CROP, 339 MM_CAMERA_PARM_MAX_PICTURE_SIZE, 340 MM_CAMERA_PARM_MAX_PREVIEW_SIZE, /* 70 */ 341 MM_CAMERA_PARM_ASD_ENABLE, 342 MM_CAMERA_PARM_RECORDING_HINT, 343 MM_CAMERA_PARM_CAF_ENABLE, 344 MM_CAMERA_PARM_FULL_LIVESHOT, 345 MM_CAMERA_PARM_DIS_ENABLE, /* 75 */ 346 MM_CAMERA_PARM_AEC_LOCK, 347 MM_CAMERA_PARM_AWB_LOCK, 348 MM_CAMERA_PARM_AF_MTR_AREA, 349 MM_CAMERA_PARM_AEC_MTR_AREA, 350 MM_CAMERA_PARM_LOW_POWER_MODE, 351 MM_CAMERA_PARM_MAX_HFR_MODE, /* 80 */ 352 MM_CAMERA_PARM_MAX_VIDEO_SIZE, 353 MM_CAMERA_PARM_DEF_PREVIEW_SIZES, 354 MM_CAMERA_PARM_DEF_VIDEO_SIZES, 355 MM_CAMERA_PARM_DEF_THUMB_SIZES, 356 MM_CAMERA_PARM_DEF_HFR_SIZES, 357 MM_CAMERA_PARM_PREVIEW_SIZES_CNT, 358 MM_CAMERA_PARM_VIDEO_SIZES_CNT, 359 MM_CAMERA_PARM_THUMB_SIZES_CNT, 360 MM_CAMERA_PARM_HFR_SIZES_CNT, 361 MM_CAMERA_PARM_GRALLOC_USAGE, 362 MM_CAMERA_PARM_VFE_OUTPUT_ENABLE, //to check whether both oputputs are 363 MM_CAMERA_PARM_DEFAULT_PREVIEW_WIDTH, 364 MM_CAMERA_PARM_DEFAULT_PREVIEW_HEIGHT, 365 MM_CAMERA_PARM_FOCUS_MODE, 366 MM_CAMERA_PARM_HFR_FRAME_SKIP, 367 //or single output enabled to differentiate 7x27a with others 368 MM_CAMERA_PARM_BESTSHOT_RECONFIGURE, 369 MM_CAMERA_MAX_NUM_FACES_DECT, 370 MM_CAMERA_PARM_FPS_RANGE, 371 MM_CAMERA_PARM_MAX 372} mm_camera_parm_type_t; 373 374typedef enum { 375 CAMERA_SET_PARM_DISPLAY_INFO, 376 CAMERA_SET_PARM_DIMENSION, 377 378 CAMERA_SET_PARM_ZOOM, 379 CAMERA_SET_PARM_SENSOR_POSITION, 380 CAMERA_SET_PARM_FOCUS_RECT, 381 CAMERA_SET_PARM_LUMA_ADAPTATION, 382 CAMERA_SET_PARM_CONTRAST, 383 CAMERA_SET_PARM_BRIGHTNESS, 384 CAMERA_SET_PARM_EXPOSURE_COMPENSATION, 385 CAMERA_SET_PARM_SHARPNESS, 386 CAMERA_SET_PARM_HUE, /* 10 */ 387 CAMERA_SET_PARM_SATURATION, 388 CAMERA_SET_PARM_EXPOSURE, 389 CAMERA_SET_PARM_AUTO_FOCUS, 390 CAMERA_SET_PARM_WB, 391 CAMERA_SET_PARM_EFFECT, 392 CAMERA_SET_PARM_FPS, 393 CAMERA_SET_PARM_FLASH, 394 CAMERA_SET_PARM_NIGHTSHOT_MODE, 395 CAMERA_SET_PARM_REFLECT, 396 CAMERA_SET_PARM_PREVIEW_MODE, /* 20 */ 397 CAMERA_SET_PARM_ANTIBANDING, 398 CAMERA_SET_PARM_RED_EYE_REDUCTION, 399 CAMERA_SET_PARM_FOCUS_STEP, 400 CAMERA_SET_PARM_EXPOSURE_METERING, 401 CAMERA_SET_PARM_AUTO_EXPOSURE_MODE, 402 CAMERA_SET_PARM_ISO, 403 CAMERA_SET_PARM_BESTSHOT_MODE, 404 CAMERA_SET_PARM_ENCODE_ROTATION, 405 406 CAMERA_SET_PARM_PREVIEW_FPS, 407 CAMERA_SET_PARM_AF_MODE, /* 30 */ 408 CAMERA_SET_PARM_HISTOGRAM, 409 CAMERA_SET_PARM_FLASH_STATE, 410 CAMERA_SET_PARM_FRAME_TIMESTAMP, 411 CAMERA_SET_PARM_STROBE_FLASH, 412 CAMERA_SET_PARM_FPS_LIST, 413 CAMERA_SET_PARM_HJR, 414 CAMERA_SET_PARM_ROLLOFF, 415 416 CAMERA_STOP_PREVIEW, 417 CAMERA_START_PREVIEW, 418 CAMERA_START_SNAPSHOT, /* 40 */ 419 CAMERA_START_RAW_SNAPSHOT, 420 CAMERA_STOP_SNAPSHOT, 421 CAMERA_EXIT, 422 CAMERA_ENABLE_BSM, 423 CAMERA_DISABLE_BSM, 424 CAMERA_GET_PARM_ZOOM, 425 CAMERA_GET_PARM_MAXZOOM, 426 CAMERA_GET_PARM_ZOOMRATIOS, 427 CAMERA_GET_PARM_AF_SHARPNESS, 428 CAMERA_SET_PARM_LED_MODE, /* 50 */ 429 CAMERA_SET_MOTION_ISO, 430 CAMERA_AUTO_FOCUS_CANCEL, 431 CAMERA_GET_PARM_FOCUS_STEP, 432 CAMERA_ENABLE_AFD, 433 CAMERA_PREPARE_SNAPSHOT, 434 CAMERA_SET_FPS_MODE, 435 CAMERA_START_VIDEO, 436 CAMERA_STOP_VIDEO, 437 CAMERA_START_RECORDING, 438 CAMERA_STOP_RECORDING, /* 60 */ 439 CAMERA_SET_VIDEO_DIS_PARAMS, 440 CAMERA_SET_VIDEO_ROT_PARAMS, 441 CAMERA_SET_PARM_AEC_ROI, 442 CAMERA_SET_CAF, 443 CAMERA_SET_PARM_BL_DETECTION_ENABLE, 444 CAMERA_SET_PARM_SNOW_DETECTION_ENABLE, 445 CAMERA_SET_PARM_STROBE_FLASH_MODE, 446 CAMERA_SET_PARM_AF_ROI, 447 CAMERA_START_LIVESHOT, 448 CAMERA_SET_SCE_FACTOR, /* 70 */ 449 CAMERA_GET_CAPABILITIES, 450 CAMERA_GET_PARM_DIMENSION, 451 CAMERA_GET_PARM_LED_MODE, 452 CAMERA_SET_PARM_FD, 453 CAMERA_GET_PARM_3D_FRAME_FORMAT, 454 CAMERA_QUERY_FLASH_FOR_SNAPSHOT, 455 CAMERA_GET_PARM_FOCUS_DISTANCES, 456 CAMERA_START_ZSL, 457 CAMERA_STOP_ZSL, 458 CAMERA_ENABLE_ZSL, /* 80 */ 459 CAMERA_GET_PARM_FOCAL_LENGTH, 460 CAMERA_GET_PARM_HORIZONTAL_VIEW_ANGLE, 461 CAMERA_GET_PARM_VERTICAL_VIEW_ANGLE, 462 CAMERA_SET_PARM_WAVELET_DENOISE, 463 CAMERA_SET_PARM_MCE, 464 CAMERA_ENABLE_STEREO_CAM, 465 CAMERA_SET_PARM_RESET_LENS_TO_INFINITY, 466 CAMERA_GET_PARM_SNAPSHOTDATA, 467 CAMERA_SET_PARM_HFR, 468 CAMERA_SET_REDEYE_REDUCTION, /* 90 */ 469 CAMERA_SET_PARM_3D_DISPLAY_DISTANCE, 470 CAMERA_SET_PARM_3D_VIEW_ANGLE, 471 CAMERA_SET_PARM_3D_EFFECT, 472 CAMERA_SET_PARM_PREVIEW_FORMAT, 473 CAMERA_GET_PARM_3D_DISPLAY_DISTANCE, /* 95 */ 474 CAMERA_GET_PARM_3D_VIEW_ANGLE, 475 CAMERA_GET_PARM_3D_EFFECT, 476 CAMERA_GET_PARM_3D_MANUAL_CONV_RANGE, 477 CAMERA_SET_PARM_3D_MANUAL_CONV_VALUE, 478 CAMERA_ENABLE_3D_MANUAL_CONVERGENCE, /* 100 */ 479 CAMERA_SET_PARM_HDR, 480 CAMERA_SET_ASD_ENABLE, 481 CAMERA_POSTPROC_ABORT, 482 CAMERA_SET_AEC_MTR_AREA, 483 CAMERA_SET_AEC_LOCK, /*105*/ 484 CAMERA_SET_AWB_LOCK, 485 CAMERA_SET_RECORDING_HINT, 486 CAMERA_SET_PARM_CAF, 487 CAMERA_SET_FULL_LIVESHOT, 488 CAMERA_SET_DIS_ENABLE, /*110*/ 489 CAMERA_GET_PARM_MAX_HFR_MODE, 490 CAMERA_SET_LOW_POWER_MODE, 491 CAMERA_GET_PARM_DEF_PREVIEW_SIZES, 492 CAMERA_GET_PARM_DEF_VIDEO_SIZES, 493 CAMERA_GET_PARM_DEF_THUMB_SIZES, /*115*/ 494 CAMERA_GET_PARM_DEF_HFR_SIZES, 495 CAMERA_GET_PARM_MAX_LIVESHOT_SIZE, 496 CAMERA_GET_PARM_FPS_RANGE, 497 CAMERA_SET_3A_CONVERGENCE, 498 CAMERA_SET_PREVIEW_HFR, /*120*/ 499 CAMERA_GET_MAX_DIMENSION, 500 CAMERA_GET_MAX_NUM_FACES_DECT, 501 CAMERA_CTRL_PARM_MAX 502} cam_ctrl_type; 503 504typedef enum { 505 CAMERA_ERROR_NO_MEMORY, 506 CAMERA_ERROR_EFS_FAIL, /* Low-level operation failed */ 507 CAMERA_ERROR_EFS_FILE_OPEN, /* File already opened */ 508 CAMERA_ERROR_EFS_FILE_NOT_OPEN, /* File not opened */ 509 CAMERA_ERROR_EFS_FILE_ALREADY_EXISTS, /* File already exists */ 510 CAMERA_ERROR_EFS_NONEXISTENT_DIR, /* User directory doesn't exist */ 511 CAMERA_ERROR_EFS_NONEXISTENT_FILE, /* User directory doesn't exist */ 512 CAMERA_ERROR_EFS_BAD_FILE_NAME, /* Client specified invalid file/directory name*/ 513 CAMERA_ERROR_EFS_BAD_FILE_HANDLE, /* Client specified invalid file/directory name*/ 514 CAMERA_ERROR_EFS_SPACE_EXHAUSTED, /* Out of file system space */ 515 CAMERA_ERROR_EFS_OPEN_TABLE_FULL, /* Out of open-file table slots */ 516 CAMERA_ERROR_EFS_OTHER_ERROR, /* Other error */ 517 CAMERA_ERROR_CONFIG, 518 CAMERA_ERROR_EXIF_ENCODE, 519 CAMERA_ERROR_VIDEO_ENGINE, 520 CAMERA_ERROR_IPL, 521 CAMERA_ERROR_INVALID_FORMAT, 522 CAMERA_ERROR_TIMEOUT, 523 CAMERA_ERROR_ESD, 524 CAMERA_ERROR_MAX 525} camera_error_type; 526 527#if defined CAMERA_ANTIBANDING_OFF 528#undef CAMERA_ANTIBANDING_OFF 529#endif 530 531#if defined CAMERA_ANTIBANDING_60HZ 532#undef CAMERA_ANTIBANDING_60HZ 533#endif 534 535#if defined CAMERA_ANTIBANDING_50HZ 536#undef CAMERA_ANTIBANDING_50HZ 537#endif 538 539#if defined CAMERA_ANTIBANDING_AUTO 540#undef CAMERA_ANTIBANDING_AUTO 541#endif 542 543typedef enum { 544 CAMERA_ANTIBANDING_OFF, 545 CAMERA_ANTIBANDING_60HZ, 546 CAMERA_ANTIBANDING_50HZ, 547 CAMERA_ANTIBANDING_AUTO, 548 CAMERA_ANTIBANDING_AUTO_50HZ, 549 CAMERA_ANTIBANDING_AUTO_60HZ, 550 CAMERA_MAX_ANTIBANDING, 551} camera_antibanding_type; 552 553/* Enum Type for different ISO Mode supported */ 554typedef enum { 555 CAMERA_ISO_AUTO = 0, 556 CAMERA_ISO_DEBLUR, 557 CAMERA_ISO_100, 558 CAMERA_ISO_200, 559 CAMERA_ISO_400, 560 CAMERA_ISO_800, 561 CAMERA_ISO_1600, 562 CAMERA_ISO_MAX 563} camera_iso_mode_type; 564 565 566typedef enum { 567 AEC_ROI_OFF, 568 AEC_ROI_ON 569} aec_roi_ctrl_t; 570 571typedef enum { 572 AEC_ROI_BY_INDEX, 573 AEC_ROI_BY_COORDINATE, 574} aec_roi_type_t; 575 576typedef struct { 577 uint32_t x; 578 uint32_t y; 579} cam_coordinate_type_t; 580 581/* 582 * Define DRAW_RECTANGLES to draw rectangles on screen. Just for test purpose. 583 */ 584//#define DRAW_RECTANGLES 585 586typedef struct { 587 uint16_t x; 588 uint16_t y; 589 uint16_t dx; 590 uint16_t dy; 591} roi_t; 592 593typedef struct { 594 aec_roi_ctrl_t aec_roi_enable; 595 aec_roi_type_t aec_roi_type; 596 union { 597 cam_coordinate_type_t coordinate; 598 uint32_t aec_roi_idx; 599 } aec_roi_position; 600} cam_set_aec_roi_t; 601 602typedef struct { 603 uint32_t frm_id; 604 uint8_t num_roi; 605 roi_t roi[MAX_ROI]; 606 uint8_t is_multiwindow; 607} roi_info_t; 608 609/* Exif Tag Data Type */ 610typedef enum 611{ 612 EXIF_BYTE = 1, 613 EXIF_ASCII = 2, 614 EXIF_SHORT = 3, 615 EXIF_LONG = 4, 616 EXIF_RATIONAL = 5, 617 EXIF_UNDEFINED = 7, 618 EXIF_SLONG = 9, 619 EXIF_SRATIONAL = 10 620} exif_tag_type_t; 621 622 623/* Exif Rational Data Type */ 624typedef struct 625{ 626 uint32_t num; // Numerator 627 uint32_t denom; // Denominator 628 629} rat_t; 630 631/* Exif Signed Rational Data Type */ 632typedef struct 633{ 634 int32_t num; // Numerator 635 int32_t denom; // Denominator 636 637} srat_t; 638 639typedef struct 640{ 641 exif_tag_type_t type; 642 uint8_t copy; 643 uint32_t count; 644 union 645 { 646 char *_ascii; 647 uint8_t *_bytes; 648 uint8_t _byte; 649 uint16_t *_shorts; 650 uint16_t _short; 651 uint32_t *_longs; 652 uint32_t _long; 653 rat_t *_rats; 654 rat_t _rat; 655 uint8_t *_undefined; 656 int32_t *_slongs; 657 int32_t _slong; 658 srat_t *_srats; 659 srat_t _srat; 660 } data; 661} exif_tag_entry_t; 662 663typedef struct { 664 uint32_t tag_id; 665 exif_tag_entry_t tag_entry; 666} exif_tags_info_t; 667 668 669typedef enum { 670 HDR_BRACKETING_OFF, 671 HDR_MODE, 672 EXP_BRACKETING_MODE 673 } hdr_mode; 674 675typedef struct { 676 hdr_mode mode; 677 uint32_t hdr_enable; 678 uint32_t total_frames; 679 uint32_t total_hal_frames; 680 char values[MAX_EXP_BRACKETING_LENGTH]; /* user defined values */ 681} exp_bracketing_t; 682typedef struct { 683 roi_t mtr_area[MAX_ROI]; 684 uint32_t num_area; 685 int weight[MAX_ROI]; 686} aec_mtr_area_t; 687 688typedef struct { 689 int denoise_enable; 690 int process_plates; 691} denoise_param_t; 692 693#ifndef HAVE_CAMERA_SIZE_TYPE 694 #define HAVE_CAMERA_SIZE_TYPE 695struct camera_size_type { 696 int width; 697 int height; 698}; 699#endif 700 701typedef struct { 702 uint32_t yoffset; 703 uint32_t cbcr_offset; 704 uint32_t size; 705 struct camera_size_type resolution; 706}cam_buf_info_t; 707 708typedef struct { 709 int x; 710 int y; 711}cam_point_t; 712 713typedef struct { 714 /* AF parameters */ 715 uint8_t focus_position; 716 /* AEC parameters */ 717 uint32_t line_count; 718 uint8_t luma_target; 719 /* AWB parameters */ 720 int32_t r_gain; 721 int32_t b_gain; 722 int32_t g_gain; 723 uint8_t exposure_mode; 724 uint8_t exposure_program; 725 float exposure_time; 726 uint32_t iso_speed; 727} snapshotData_info_t; 728 729 730typedef enum { 731 CAMERA_HFR_MODE_OFF = 1, 732 CAMERA_HFR_MODE_60FPS, 733 CAMERA_HFR_MODE_90FPS, 734 CAMERA_HFR_MODE_120FPS, 735 CAMERA_HFR_MODE_150FPS, 736} camera_hfr_mode_t; 737 738/* frame Q*/ 739struct fifo_node 740{ 741 struct fifo_node *next; 742 void *f; 743}; 744 745struct fifo_queue 746{ 747 int num_of_frames; 748 struct fifo_node *front; 749 struct fifo_node *back; 750 pthread_mutex_t mut; 751 pthread_cond_t wait; 752 char* name; 753}; 754 755typedef struct { 756 uint32_t buf_len; 757 uint8_t num; 758 uint8_t pmem_type; 759 uint32_t vaddr[8]; 760} mm_camera_histo_mem_info_t; 761 762typedef enum { 763 MM_CAMERA_CTRL_EVT_ZOOM_DONE, 764 MM_CAMERA_CTRL_EVT_AUTO_FOCUS_DONE, 765 MM_CAMERA_CTRL_EVT_PREP_SNAPSHOT, 766 MM_CAMERA_CTRL_EVT_SNAPSHOT_CONFIG_DONE, 767 MM_CAMERA_CTRL_EVT_WDN_DONE, // wavelet denoise done 768 MM_CAMERA_CTRL_EVT_ERROR, 769 MM_CAMERA_CTRL_EVT_MAX 770}mm_camera_ctrl_event_type_t; 771 772typedef struct { 773 mm_camera_ctrl_event_type_t evt; 774 cam_ctrl_status_t status; 775 unsigned long cookie; 776} mm_camera_ctrl_event_t; 777 778typedef enum { 779 MM_CAMERA_CH_EVT_STREAMING_ON, 780 MM_CAMERA_CH_EVT_STREAMING_OFF, 781 MM_CAMERA_CH_EVT_STREAMING_ERR, 782 MM_CAMERA_CH_EVT_DATA_DELIVERY_DONE, 783 MM_CAMERA_CH_EVT_DATA_REQUEST_MORE, 784 MM_CAMERA_CH_EVT_MAX 785}mm_camera_ch_event_type_t; 786 787typedef struct { 788 uint32_t ch; 789 mm_camera_ch_event_type_t evt; 790} mm_camera_ch_event_t; 791 792typedef struct { 793 uint32_t index; 794 /* TBD: need more fields for histo stats? */ 795} mm_camera_stats_histo_t; 796 797typedef struct { 798 uint32_t event_id; 799 union { 800 mm_camera_stats_histo_t stats_histo; 801 } e; 802} mm_camera_stats_event_t; 803 804typedef enum { 805 FD_ROI_TYPE_HEADER, 806 FD_ROI_TYPE_DATA 807} fd_roi_type_t; 808 809typedef struct { 810 uint32_t frame_id; 811 int16_t num_face_detected; 812} fd_roi_header_type; 813 814struct fd_rect_t { 815 uint16_t x; 816 uint16_t y; 817 uint16_t dx; 818 uint16_t dy; 819}; 820 821typedef struct { 822 struct fd_rect_t face_boundary; 823 uint16_t left_eye_center[2]; 824 uint16_t right_eye_center[2]; 825 uint16_t mouth_center[2]; 826 uint8_t smile_degree; //0 -100 827 uint8_t smile_confidence; // 828 uint8_t blink_detected; // 0 or 1 829 uint8_t is_face_recognised; // 0 or 1 830 int8_t gaze_angle; // -90 -45 0 45 90 for head left to rigth tilt 831 int8_t updown_dir; // -90 to 90 832 int8_t leftright_dir; //-90 to 90 833 int8_t roll_dir; // -90 to 90 834 int8_t left_right_gaze; // -50 to 50 835 int8_t top_bottom_gaze; // -50 to 50 836 uint8_t left_blink; // 0 - 100 837 uint8_t right_blink; // 0 - 100 838 int8_t id; // unique id for face tracking within view unless view changes 839 int8_t score; // score of confidence( 0 -100) 840} fd_face_type; 841 842typedef struct { 843 uint32_t frame_id; 844 uint8_t idx; 845 fd_face_type face; 846} fd_roi_data_type; 847 848struct fd_roi_t { 849 fd_roi_type_t type; 850 union { 851 fd_roi_header_type hdr; 852 fd_roi_data_type data; 853 } d; 854}; 855 856typedef struct { 857 uint32_t event_id; 858 union { 859 mm_camera_histo_mem_info_t histo_mem_info; 860 struct fd_roi_t roi; 861 } e; 862} mm_camera_info_event_t; 863 864 865typedef enum { 866 MM_CAMERA_EVT_TYPE_CH, 867 MM_CAMERA_EVT_TYPE_CTRL, 868 MM_CAMERA_EVT_TYPE_STATS, 869 MM_CAMERA_EVT_TYPE_INFO, 870 MM_CAMERA_EVT_TYPE_MAX 871} mm_camera_event_type_t; 872 873/****************************************************************************** 874 * Function: exif_set_tag 875 * Description: Inserts or modifies an Exif tag to the Exif Info object. Typical 876 * use is to call this function multiple times - to insert all the 877 * desired Exif Tags individually to the Exif Info object and 878 * then pass the info object to the Jpeg Encoder object so 879 * the inserted tags would be emitted as tags in the Exif header. 880 * Input parameters: 881 * obj - The Exif Info object where the tag would be inserted to or 882 * modified from. 883 * tag_id - The Exif Tag ID of the tag to be inserted/modified. 884 * p_entry - The pointer to the tag entry structure which contains the 885 * details of tag. The pointer can be set to NULL to un-do 886 * previous insertion for a certain tag. 887 * Return values: 888 * JPEGERR_SUCCESS 889 * JPEGERR_ENULLPTR 890 * JPEGERR_EFAILED 891 * (See jpegerr.h for description of error values.) 892 * Notes: none 893 *****************************************************************************/ 894int exif_set_tag(exif_info_obj_t obj, 895 exif_tag_id_t tag_id, 896 exif_tag_entry_t *p_entry); 897 898 899#endif /* __QCAMERA_INTF_H__ */ 900