1 /* Copyright (c) 2012, 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 <stdint.h> 34 #include <pthread.h> 35 #include <inttypes.h> 36 #include <media/msm_camera.h> 37 38 #define PAD_TO_WORD(a) (((a)+3)&~3) 39 #define PAD_TO_2K(a) (((a)+2047)&~2047) 40 #define PAD_TO_4K(a) (((a)+4095)&~4095) 41 #define PAD_TO_8K(a) (((a)+8191)&~8191) 42 43 #define CEILING32(X) (((X) + 0x0001F) & 0xFFFFFFE0) 44 #define CEILING16(X) (((X) + 0x000F) & 0xFFF0) 45 #define CEILING4(X) (((X) + 0x0003) & 0xFFFC) 46 #define CEILING2(X) (((X) + 0x0001) & 0xFFFE) 47 48 #define MAX_ROI 2 49 #define MAX_NUM_PARM 5 50 #define MAX_NUM_OPS 2 51 #define VIDEO_MAX_PLANES 8 52 #define MAX_SNAPSHOT_BUFFERS 5 53 #define MAX_EXP_BRACKETING_LENGTH 32 54 55 /* No sharpness for default */ 56 #define CAMERA_MIN_SHARPNESS 0 57 #define CAMERA_DEF_SHARPNESS 10 58 #define CAMERA_MAX_SHARPNESS 30 59 #define CAMERA_SHARPNESS_STEP 5 60 61 /* No saturation for default */ 62 #define CAMERA_MIN_SATURATION 0 63 #define CAMERA_DEF_SATURATION 5 64 #define CAMERA_MAX_SATURATION 10 65 #define CAMERA_SATURATION_STEP 1 66 67 #define CAMERA_MIN_BRIGHTNESS 0 68 #define CAMERA_DEF_BRIGHTNESS 3 69 #define CAMERA_MAX_BRIGHTNESS 6 70 #define CAMERA_BRIGHTNESS_STEP 1 71 72 #define CAMERA_MIN_CONTRAST 0 73 #define CAMERA_DEF_CONTRAST 5 74 #define CAMERA_MAX_CONTRAST 10 75 #define CAMERA_CONTRAST_STEP 1 76 77 /* No hue for default. */ 78 #define CAMERA_MIN_HUE 0 79 #define CAMERA_DEF_HUE 0 80 #define CAMERA_MAX_HUE 300 81 #define CAMERA_HUE_STEP 60 82 83 #define CAMERA_MIN_ZOOM 0 84 #define CAMERA_DEF_ZOOM 0 85 #define CAMERA_MAX_ZOOM 0x31 86 #define CAMERA_ZOOM_STEP 0x3 87 88 #define ANDROID_FB0 "/dev/graphics/fb0" 89 #define LE_FB0 "/dev/fb0" 90 91 // Events common to encoder and decoder 92 #define JPEG_EVENT_DONE 0 93 #define JPEG_EVENT_WARNING 1 94 #define JPEG_EVENT_ERROR 2 95 #define JPEG_EVENT_ABORTED 3 96 // Events specific to encoder 97 #define JPEG_EVENT_THUMBNAIL_DROPPED 4 98 99 /* Exif Tag ID */ 100 typedef uint32_t exif_tag_id_t; 101 102 /* Exif Info (opaque definition) */ 103 struct exif_info_t; 104 typedef struct exif_info_t * exif_info_obj_t; 105 106 typedef enum { 107 BACK_CAMERA, 108 FRONT_CAMERA, 109 }cam_position_t; 110 111 typedef enum { 112 CAM_CTRL_FAILED, /* Failure in doing operation */ 113 CAM_CTRL_SUCCESS, /* Operation Succeded */ 114 CAM_CTRL_INVALID_PARM, /* Inavlid parameter provided */ 115 CAM_CTRL_NOT_SUPPORTED, /* Parameter/operation not supported */ 116 CAM_CTRL_ACCEPTED, /* Parameter accepted */ 117 CAM_CTRL_MAX, 118 } cam_ctrl_status_t; 119 120 typedef enum { 121 CAMERA_YUV_420_NV12, 122 CAMERA_YUV_420_NV21, 123 CAMERA_YUV_420_NV21_ADRENO, 124 CAMERA_BAYER_SBGGR10, 125 CAMERA_RDI, 126 CAMERA_YUV_420_YV12, 127 CAMERA_YUV_422_NV16, 128 CAMERA_YUV_422_NV61, 129 CAMERA_YUV_422_YUYV, 130 } cam_format_t; 131 132 typedef enum { 133 CAMERA_PAD_NONE, 134 CAMERA_PAD_TO_WORD, /*2 bytes*/ 135 CAMERA_PAD_TO_LONG_WORD, /*4 bytes*/ 136 CAMERA_PAD_TO_8, /*8 bytes*/ 137 CAMERA_PAD_TO_16, /*16 bytes*/ 138 139 CAMERA_PAD_TO_1K, /*1k bytes*/ 140 CAMERA_PAD_TO_2K, /*2k bytes*/ 141 CAMERA_PAD_TO_4K, 142 CAMERA_PAD_TO_8K 143 } cam_pad_format_t; 144 145 typedef struct { 146 int ext_mode; /* preview, main, thumbnail, video, raw, etc */ 147 int frame_idx; /* frame index */ 148 int fd; /* origin fd */ 149 uint32_t size; 150 } mm_camera_frame_map_type; 151 152 typedef struct { 153 int ext_mode; /* preview, main, thumbnail, video, raw, etc */ 154 int frame_idx; /* frame index */ 155 } mm_camera_frame_unmap_type; 156 157 typedef enum { 158 CAM_SOCK_MSG_TYPE_FD_MAPPING, 159 CAM_SOCK_MSG_TYPE_FD_UNMAPPING, 160 CAM_SOCK_MSG_TYPE_WDN_START, 161 CAM_SOCK_MSG_TYPE_HIST_MAPPING, 162 CAM_SOCK_MSG_TYPE_HIST_UNMAPPING, 163 CAM_SOCK_MSG_TYPE_HDR_START, 164 CAM_SOCK_MSG_TYPE_MAX 165 }mm_camera_socket_msg_type; 166 167 168 #define MAX_HDR_EXP_FRAME_NUM 5 169 typedef struct { 170 unsigned long cookie; 171 int num_hdr_frames; 172 int hdr_main_idx[MAX_HDR_EXP_FRAME_NUM]; 173 int hdr_thm_idx[MAX_HDR_EXP_FRAME_NUM]; 174 int exp[MAX_HDR_EXP_FRAME_NUM]; 175 } mm_camera_hdr_start_type; 176 177 #define MM_MAX_WDN_NUM 2 178 typedef struct { 179 unsigned long cookie; 180 int num_frames; 181 int ext_mode[MM_MAX_WDN_NUM]; 182 int frame_idx[MM_MAX_WDN_NUM]; 183 } mm_camera_wdn_start_type; 184 185 typedef struct { 186 mm_camera_socket_msg_type msg_type; 187 union { 188 mm_camera_frame_map_type frame_fd_map; 189 mm_camera_frame_unmap_type frame_fd_unmap; 190 mm_camera_wdn_start_type wdn_start; 191 mm_camera_hdr_start_type hdr_pkg; 192 } payload; 193 } cam_sock_packet_t; 194 195 196 typedef enum { 197 CAM_VIDEO_FRAME, 198 CAM_SNAPSHOT_FRAME, 199 CAM_PREVIEW_FRAME, 200 }cam_frame_type_t; 201 202 203 typedef enum { 204 CAMERA_MODE_2D = (1<<0), 205 CAMERA_MODE_3D = (1<<1), 206 CAMERA_NONZSL_MODE = (1<<2), 207 CAMERA_ZSL_MODE = (1<<3), 208 CAMERA_MODE_MAX = CAMERA_ZSL_MODE, 209 } camera_mode_t; 210 211 212 typedef struct { 213 int modes_supported; 214 int8_t camera_id; 215 cam_position_t position; 216 uint32_t sensor_mount_angle; 217 }qcamera_info_t; 218 219 typedef struct { 220 camera_mode_t mode; 221 int8_t camera_id; 222 camera_mode_t cammode; 223 }config_params_t; 224 225 typedef struct { 226 uint32_t len; 227 uint32_t y_offset; 228 uint32_t cbcr_offset; 229 } cam_sp_len_offset_t; 230 231 typedef struct{ 232 uint32_t len; 233 uint32_t offset; 234 } cam_mp_len_offset_t; 235 236 typedef struct { 237 int num_planes; 238 union { 239 cam_sp_len_offset_t sp; 240 cam_mp_len_offset_t mp[8]; 241 }; 242 uint32_t frame_len; 243 } cam_frame_len_offset_t; 244 245 typedef struct { 246 uint32_t parm[MAX_NUM_PARM]; 247 uint32_t ops[MAX_NUM_OPS]; 248 uint8_t yuv_output; 249 uint8_t jpeg_capture; 250 uint32_t max_pict_width; 251 uint32_t max_pict_height; 252 uint32_t max_preview_width; 253 uint32_t max_preview_height; 254 uint32_t max_video_width; 255 uint32_t max_video_height; 256 uint32_t effect; 257 camera_mode_t modes; 258 uint8_t preview_format; 259 uint32_t preview_sizes_cnt; 260 uint32_t thumb_sizes_cnt; 261 uint32_t video_sizes_cnt; 262 uint32_t hfr_sizes_cnt; 263 uint8_t vfe_output_enable; 264 uint8_t hfr_frame_skip; 265 uint32_t default_preview_width; 266 uint32_t default_preview_height; 267 uint32_t bestshot_reconfigure; 268 uint32_t pxlcode; 269 }cam_prop_t; 270 271 typedef struct { 272 uint16_t video_width; /* Video width seen by VFE could be different than orig. Ex. DIS */ 273 uint16_t video_height; /* Video height seen by VFE */ 274 uint16_t picture_width; /* Picture width seen by VFE */ 275 uint16_t picture_height; /* Picture height seen by VFE */ 276 uint16_t display_width; /* width of display */ 277 uint16_t display_height; /* height of display */ 278 uint16_t orig_video_width; /* original video width received */ 279 uint16_t orig_video_height; /* original video height received */ 280 uint16_t orig_picture_dx; /* original picture width received */ 281 uint16_t orig_picture_dy; /* original picture height received */ 282 uint16_t ui_thumbnail_height; /* Just like orig_picture_dx */ 283 uint16_t ui_thumbnail_width; /* Just like orig_picture_dy */ 284 uint16_t thumbnail_height; 285 uint16_t thumbnail_width; 286 uint16_t orig_picture_width; 287 uint16_t orig_picture_height; 288 uint16_t orig_thumb_width; 289 uint16_t orig_thumb_height; 290 uint16_t raw_picture_height; 291 uint16_t raw_picture_width; 292 uint16_t rdi0_height; 293 uint16_t rdi0_width; 294 uint16_t rdi1_height; 295 uint16_t rdi1_width; 296 uint32_t hjr_xtra_buff_for_bayer_filtering; 297 cam_format_t prev_format; 298 cam_format_t enc_format; 299 cam_format_t thumb_format; 300 cam_format_t main_img_format; 301 cam_format_t rdi0_format; 302 cam_format_t rdi1_format; 303 cam_format_t raw_img_format; 304 cam_pad_format_t prev_padding_format; 305 cam_pad_format_t enc_padding_format; 306 cam_pad_format_t thumb_padding_format; 307 cam_pad_format_t main_padding_format; 308 uint16_t display_luma_width; 309 uint16_t display_luma_height; 310 uint16_t display_chroma_width; 311 uint16_t display_chroma_height; 312 uint16_t video_luma_width; 313 uint16_t video_luma_height; 314 uint16_t video_chroma_width; 315 uint16_t video_chroma_height; 316 uint16_t thumbnail_luma_width; 317 uint16_t thumbnail_luma_height; 318 uint16_t thumbnail_chroma_width; 319 uint16_t thumbnail_chroma_height; 320 uint16_t main_img_luma_width; 321 uint16_t main_img_luma_height; 322 uint16_t main_img_chroma_width; 323 uint16_t main_img_chroma_height; 324 int rotation; 325 cam_frame_len_offset_t display_frame_offset; 326 cam_frame_len_offset_t video_frame_offset; 327 cam_frame_len_offset_t picture_frame_offset; 328 cam_frame_len_offset_t thumb_frame_offset; 329 uint32_t channel_interface_mask; 330 } cam_ctrl_dimension_t; 331 332 typedef struct { 333 uint8_t cid; 334 uint8_t dt; 335 uint32_t inst_handle; 336 } cam_cid_entry_t; 337 338 #define CAM_MAX_CID_NUM 8 339 typedef struct { 340 /*should we hard code max CIDs? if not we need to have two CMD*/ 341 uint8_t num_cids; 342 cam_cid_entry_t cid_entries[CAM_MAX_CID_NUM]; 343 } cam_cid_info_t; 344 345 typedef struct { 346 /* we still use prev, video, main, 347 * thumb to interprete image types */ 348 uint32_t image_mode; /* input */ 349 cam_format_t format; /* input */ 350 cam_pad_format_t padding_format; /* input */ 351 int rotation; /* input */ 352 uint16_t width; /* input/output */ 353 uint16_t height; /* input/output */ 354 cam_frame_len_offset_t frame_offset; /* output */ 355 } cam_frame_resolution_t; 356 357 /* Add enumenrations at the bottom but before MM_CAMERA_PARM_MAX */ 358 typedef enum { 359 MM_CAMERA_PARM_PICT_SIZE, 360 MM_CAMERA_PARM_ZOOM_RATIO, 361 MM_CAMERA_PARM_HISTOGRAM, 362 MM_CAMERA_PARM_DIMENSION, 363 MM_CAMERA_PARM_FPS, 364 MM_CAMERA_PARM_FPS_MODE, /*5*/ 365 MM_CAMERA_PARM_EFFECT, 366 MM_CAMERA_PARM_EXPOSURE_COMPENSATION, 367 MM_CAMERA_PARM_EXPOSURE, 368 MM_CAMERA_PARM_SHARPNESS, 369 MM_CAMERA_PARM_CONTRAST, /*10*/ 370 MM_CAMERA_PARM_SATURATION, 371 MM_CAMERA_PARM_BRIGHTNESS, 372 MM_CAMERA_PARM_WHITE_BALANCE, 373 MM_CAMERA_PARM_LED_MODE, 374 MM_CAMERA_PARM_ANTIBANDING, /*15*/ 375 MM_CAMERA_PARM_ROLLOFF, 376 MM_CAMERA_PARM_CONTINUOUS_AF, 377 MM_CAMERA_PARM_FOCUS_RECT, 378 MM_CAMERA_PARM_AEC_ROI, 379 MM_CAMERA_PARM_AF_ROI, /*20*/ 380 MM_CAMERA_PARM_HJR, 381 MM_CAMERA_PARM_ISO, 382 MM_CAMERA_PARM_BL_DETECTION, 383 MM_CAMERA_PARM_SNOW_DETECTION, 384 MM_CAMERA_PARM_BESTSHOT_MODE, /*25*/ 385 MM_CAMERA_PARM_ZOOM, 386 MM_CAMERA_PARM_VIDEO_DIS, 387 MM_CAMERA_PARM_VIDEO_ROT, 388 MM_CAMERA_PARM_SCE_FACTOR, 389 MM_CAMERA_PARM_FD, /*30*/ 390 MM_CAMERA_PARM_MODE, 391 /* 2nd 32 bits */ 392 MM_CAMERA_PARM_3D_FRAME_FORMAT, 393 MM_CAMERA_PARM_CAMERA_ID, 394 MM_CAMERA_PARM_CAMERA_INFO, 395 MM_CAMERA_PARM_PREVIEW_SIZE, /*35*/ 396 MM_CAMERA_PARM_QUERY_FALSH4SNAP, 397 MM_CAMERA_PARM_FOCUS_DISTANCES, 398 MM_CAMERA_PARM_BUFFER_INFO, 399 MM_CAMERA_PARM_JPEG_ROTATION, 400 MM_CAMERA_PARM_JPEG_MAINIMG_QUALITY, /* 40 */ 401 MM_CAMERA_PARM_JPEG_THUMB_QUALITY, 402 MM_CAMERA_PARM_ZSL_ENABLE, 403 MM_CAMERA_PARM_FOCAL_LENGTH, 404 MM_CAMERA_PARM_HORIZONTAL_VIEW_ANGLE, 405 MM_CAMERA_PARM_VERTICAL_VIEW_ANGLE, /* 45 */ 406 MM_CAMERA_PARM_MCE, 407 MM_CAMERA_PARM_RESET_LENS_TO_INFINITY, 408 MM_CAMERA_PARM_SNAPSHOTDATA, 409 MM_CAMERA_PARM_HFR, 410 MM_CAMERA_PARM_REDEYE_REDUCTION, /* 50 */ 411 MM_CAMERA_PARM_WAVELET_DENOISE, 412 MM_CAMERA_PARM_3D_DISPLAY_DISTANCE, 413 MM_CAMERA_PARM_3D_VIEW_ANGLE, 414 MM_CAMERA_PARM_PREVIEW_FORMAT, 415 MM_CAMERA_PARM_RDI_FORMAT, 416 MM_CAMERA_PARM_HFR_SIZE, /* 55 */ 417 MM_CAMERA_PARM_3D_EFFECT, 418 MM_CAMERA_PARM_3D_MANUAL_CONV_RANGE, 419 MM_CAMERA_PARM_3D_MANUAL_CONV_VALUE, 420 MM_CAMERA_PARM_ENABLE_3D_MANUAL_CONVERGENCE, 421 /* These are new parameters defined here */ 422 MM_CAMERA_PARM_CH_IMAGE_FMT, /* 60 */ // mm_camera_ch_image_fmt_parm_t 423 MM_CAMERA_PARM_OP_MODE, // camera state, sub state also 424 MM_CAMERA_PARM_SHARPNESS_CAP, // 425 MM_CAMERA_PARM_SNAPSHOT_BURST_NUM, // num shots per snapshot action 426 MM_CAMERA_PARM_LIVESHOT_MAIN, // enable/disable full size live shot 427 MM_CAMERA_PARM_MAXZOOM, /* 65 */ 428 MM_CAMERA_PARM_LUMA_ADAPTATION, // enable/disable 429 MM_CAMERA_PARM_HDR, 430 MM_CAMERA_PARM_CROP, 431 MM_CAMERA_PARM_MAX_PICTURE_SIZE, 432 MM_CAMERA_PARM_MAX_PREVIEW_SIZE, /* 70 */ 433 MM_CAMERA_PARM_ASD_ENABLE, 434 MM_CAMERA_PARM_RECORDING_HINT, 435 MM_CAMERA_PARM_CAF_ENABLE, 436 MM_CAMERA_PARM_FULL_LIVESHOT, 437 MM_CAMERA_PARM_DIS_ENABLE, /* 75 */ 438 MM_CAMERA_PARM_AEC_LOCK, 439 MM_CAMERA_PARM_AWB_LOCK, 440 MM_CAMERA_PARM_AF_MTR_AREA, 441 MM_CAMERA_PARM_AEC_MTR_AREA, 442 MM_CAMERA_GET_PARM_LOW_LIGHT_FOR_ZSL, 443 MM_CAMERA_PARM_LOW_POWER_MODE, 444 MM_CAMERA_PARM_MAX_HFR_MODE, /* 80 */ 445 MM_CAMERA_PARM_MAX_VIDEO_SIZE, 446 MM_CAMERA_PARM_DEF_PREVIEW_SIZES, 447 MM_CAMERA_PARM_DEF_VIDEO_SIZES, 448 MM_CAMERA_PARM_DEF_THUMB_SIZES, 449 MM_CAMERA_PARM_DEF_HFR_SIZES, 450 MM_CAMERA_PARM_PREVIEW_SIZES_CNT, 451 MM_CAMERA_PARM_VIDEO_SIZES_CNT, 452 MM_CAMERA_PARM_THUMB_SIZES_CNT, 453 MM_CAMERA_PARM_HFR_SIZES_CNT, 454 MM_CAMERA_PARM_GRALLOC_USAGE, 455 MM_CAMERA_PARM_VFE_OUTPUT_ENABLE, //to check whether both oputputs are 456 MM_CAMERA_PARM_DEFAULT_PREVIEW_WIDTH, 457 MM_CAMERA_PARM_DEFAULT_PREVIEW_HEIGHT, 458 MM_CAMERA_PARM_FOCUS_MODE, 459 MM_CAMERA_PARM_HFR_FRAME_SKIP, 460 MM_CAMERA_PARM_CH_INTERFACE, 461 //or single output enabled to differentiate 7x27a with others 462 MM_CAMERA_PARM_BESTSHOT_RECONFIGURE, 463 MM_CAMERA_PARM_MAX_NUM_FACES_DECT, 464 MM_CAMERA_PARM_FPS_RANGE, 465 MM_CAMERA_PARM_CID, 466 MM_CAMERA_PARM_FRAME_RESOLUTION, 467 MM_CAMERA_PARM_RAW_SNAPSHOT_FMT, 468 MM_CAMERA_PARM_FACIAL_FEATURE_INFO, 469 MM_CAMERA_PARM_CAF_LOCK_CANCEL, 470 MM_CAMERA_PARM_CAF_TYPE, 471 MM_CAMERA_PARM_LUX_IDX, 472 MM_CAMERA_PARM_GET_AF_STATUS, 473 MM_CAMERA_PARM_CHECK_AF_RETRY, 474 MM_CAMERA_PARM_LG_CAF_LOCK, 475 MM_CAMERA_PARM_INFORM_STARTPRVIEW, 476 MM_CAMERA_PARM_F_NUMBER, 477 MM_CAMERA_PARM_MAX 478 } mm_camera_parm_type_t; 479 480 typedef enum { 481 STREAM_IMAGE, 482 STREAM_RAW, 483 STREAM_IMAGE_AND_RAW, 484 STREAM_RAW_AND_RAW, 485 STREAM_MAX, 486 } mm_camera_channel_stream_info_t; 487 488 typedef enum { 489 CAMERA_SET_PARM_DISPLAY_INFO, 490 CAMERA_SET_PARM_DIMENSION, 491 492 CAMERA_SET_PARM_ZOOM, 493 CAMERA_SET_PARM_SENSOR_POSITION, 494 CAMERA_SET_PARM_FOCUS_RECT, 495 CAMERA_SET_PARM_LUMA_ADAPTATION, 496 CAMERA_SET_PARM_CONTRAST, 497 CAMERA_SET_PARM_BRIGHTNESS, 498 CAMERA_SET_PARM_EXPOSURE_COMPENSATION, 499 CAMERA_SET_PARM_SHARPNESS, 500 CAMERA_SET_PARM_HUE, /* 10 */ 501 CAMERA_SET_PARM_SATURATION, 502 CAMERA_SET_PARM_EXPOSURE, 503 CAMERA_SET_PARM_AUTO_FOCUS, 504 CAMERA_SET_PARM_WB, 505 CAMERA_SET_PARM_EFFECT, 506 CAMERA_SET_PARM_FPS, 507 CAMERA_SET_PARM_FLASH, 508 CAMERA_SET_PARM_NIGHTSHOT_MODE, 509 CAMERA_SET_PARM_REFLECT, 510 CAMERA_SET_PARM_PREVIEW_MODE, /* 20 */ 511 CAMERA_SET_PARM_ANTIBANDING, 512 CAMERA_SET_PARM_RED_EYE_REDUCTION, 513 CAMERA_SET_PARM_FOCUS_STEP, 514 CAMERA_SET_PARM_EXPOSURE_METERING, 515 CAMERA_SET_PARM_AUTO_EXPOSURE_MODE, 516 CAMERA_SET_PARM_ISO, 517 CAMERA_SET_PARM_BESTSHOT_MODE, 518 CAMERA_SET_PARM_ENCODE_ROTATION, 519 520 CAMERA_SET_PARM_PREVIEW_FPS, 521 CAMERA_SET_PARM_AF_MODE, /* 30 */ 522 CAMERA_SET_PARM_HISTOGRAM, 523 CAMERA_SET_PARM_FLASH_STATE, 524 CAMERA_SET_PARM_FRAME_TIMESTAMP, 525 CAMERA_SET_PARM_STROBE_FLASH, 526 CAMERA_SET_PARM_FPS_LIST, 527 CAMERA_SET_PARM_HJR, 528 CAMERA_SET_PARM_ROLLOFF, 529 530 CAMERA_STOP_PREVIEW, 531 CAMERA_START_PREVIEW, 532 CAMERA_START_SNAPSHOT, /* 40 */ 533 CAMERA_START_RAW_SNAPSHOT, 534 CAMERA_STOP_SNAPSHOT, 535 CAMERA_EXIT, 536 CAMERA_ENABLE_BSM, 537 CAMERA_DISABLE_BSM, 538 CAMERA_GET_PARM_ZOOM, 539 CAMERA_GET_PARM_MAXZOOM, 540 CAMERA_GET_PARM_ZOOMRATIOS, 541 CAMERA_GET_PARM_AF_SHARPNESS, 542 CAMERA_SET_PARM_LED_MODE, /* 50 */ 543 CAMERA_SET_MOTION_ISO, 544 CAMERA_AUTO_FOCUS_CANCEL, 545 CAMERA_GET_PARM_FOCUS_STEP, 546 CAMERA_ENABLE_AFD, 547 CAMERA_PREPARE_SNAPSHOT, 548 CAMERA_SET_FPS_MODE, 549 CAMERA_START_VIDEO, 550 CAMERA_STOP_VIDEO, 551 CAMERA_START_RECORDING, 552 CAMERA_STOP_RECORDING, /* 60 */ 553 CAMERA_SET_VIDEO_DIS_PARAMS, 554 CAMERA_SET_VIDEO_ROT_PARAMS, 555 CAMERA_SET_PARM_AEC_ROI, 556 CAMERA_SET_CAF, 557 CAMERA_SET_PARM_BL_DETECTION_ENABLE, 558 CAMERA_SET_PARM_SNOW_DETECTION_ENABLE, 559 CAMERA_SET_PARM_STROBE_FLASH_MODE, 560 CAMERA_SET_PARM_AF_ROI, 561 CAMERA_START_LIVESHOT, 562 CAMERA_SET_SCE_FACTOR, /* 70 */ 563 CAMERA_GET_CAPABILITIES, 564 CAMERA_GET_PARM_DIMENSION, 565 CAMERA_GET_PARM_LED_MODE, 566 CAMERA_SET_PARM_FD, 567 CAMERA_GET_PARM_3D_FRAME_FORMAT, 568 CAMERA_QUERY_FLASH_FOR_SNAPSHOT, 569 CAMERA_GET_PARM_FOCUS_DISTANCES, 570 CAMERA_START_ZSL, 571 CAMERA_STOP_ZSL, 572 CAMERA_ENABLE_ZSL, /* 80 */ 573 CAMERA_GET_PARM_FOCAL_LENGTH, 574 CAMERA_GET_PARM_HORIZONTAL_VIEW_ANGLE, 575 CAMERA_GET_PARM_VERTICAL_VIEW_ANGLE, 576 CAMERA_SET_PARM_WAVELET_DENOISE, 577 CAMERA_SET_PARM_MCE, 578 CAMERA_ENABLE_STEREO_CAM, 579 CAMERA_SET_PARM_RESET_LENS_TO_INFINITY, 580 CAMERA_GET_PARM_SNAPSHOTDATA, 581 CAMERA_SET_PARM_HFR, 582 CAMERA_SET_REDEYE_REDUCTION, /* 90 */ 583 CAMERA_SET_PARM_3D_DISPLAY_DISTANCE, 584 CAMERA_SET_PARM_3D_VIEW_ANGLE, 585 CAMERA_SET_PARM_3D_EFFECT, 586 CAMERA_SET_PARM_PREVIEW_FORMAT, 587 CAMERA_GET_PARM_3D_DISPLAY_DISTANCE, /* 95 */ 588 CAMERA_GET_PARM_3D_VIEW_ANGLE, 589 CAMERA_GET_PARM_3D_EFFECT, 590 CAMERA_GET_PARM_3D_MANUAL_CONV_RANGE, 591 CAMERA_SET_PARM_3D_MANUAL_CONV_VALUE, 592 CAMERA_ENABLE_3D_MANUAL_CONVERGENCE, /* 100 */ 593 CAMERA_SET_PARM_HDR, 594 CAMERA_SET_ASD_ENABLE, 595 CAMERA_POSTPROC_ABORT, 596 CAMERA_SET_AEC_MTR_AREA, 597 CAMERA_SET_AEC_LOCK, /*105*/ 598 CAMERA_SET_AWB_LOCK, 599 CAMERA_SET_RECORDING_HINT, 600 CAMERA_SET_PARM_CAF, 601 CAMERA_SET_FULL_LIVESHOT, 602 CAMERA_SET_DIS_ENABLE, /*110*/ 603 CAMERA_GET_PARM_MAX_HFR_MODE, 604 CAMERA_SET_LOW_POWER_MODE, 605 CAMERA_GET_PARM_DEF_PREVIEW_SIZES, 606 CAMERA_GET_PARM_DEF_VIDEO_SIZES, 607 CAMERA_GET_PARM_DEF_THUMB_SIZES, /*115*/ 608 CAMERA_GET_PARM_DEF_HFR_SIZES, 609 CAMERA_GET_PARM_MAX_LIVESHOT_SIZE, 610 CAMERA_GET_PARM_FPS_RANGE, 611 CAMERA_SET_3A_CONVERGENCE, 612 CAMERA_SET_PREVIEW_HFR, /*120*/ 613 CAMERA_GET_MAX_DIMENSION, 614 CAMERA_GET_MAX_NUM_FACES_DECT, 615 CAMERA_SET_CHANNEL_STREAM, 616 CAMERA_GET_CHANNEL_STREAM, 617 CAMERA_SET_PARM_CID, /*125*/ 618 CAMERA_GET_PARM_FRAME_RESOLUTION, 619 CAMERA_GET_FACIAL_FEATURE_INFO, 620 CAMERA_SET_CAF_LOCK_CANCEL, 621 CAMERA_GET_PARM_HDR, 622 CAMERA_SET_PARM_CAF_TYPE, 623 CAMERA_GET_PARM_LUX_IDX, 624 CAMERA_GET_PARM_LOW_LIGHT_FOR_ZSL, 625 CAMERA_GET_PARM_AF_STATUS, 626 CAMERA_CHECK_AF_RETRY, 627 CAMERA_SET_LG_CAF_LOCK, 628 CAMERA_SET_INFORM_STARTPREVIEW, 629 CAMERA_GET_PARM_F_NUMBER, 630 CAMERA_CTRL_PARM_MAX 631 } cam_ctrl_type; 632 633 typedef enum { 634 CAMERA_ERROR_NO_MEMORY, 635 CAMERA_ERROR_EFS_FAIL, /* Low-level operation failed */ 636 CAMERA_ERROR_EFS_FILE_OPEN, /* File already opened */ 637 CAMERA_ERROR_EFS_FILE_NOT_OPEN, /* File not opened */ 638 CAMERA_ERROR_EFS_FILE_ALREADY_EXISTS, /* File already exists */ 639 CAMERA_ERROR_EFS_NONEXISTENT_DIR, /* User directory doesn't exist */ 640 CAMERA_ERROR_EFS_NONEXISTENT_FILE, /* User directory doesn't exist */ 641 CAMERA_ERROR_EFS_BAD_FILE_NAME, /* Client specified invalid file/directory name*/ 642 CAMERA_ERROR_EFS_BAD_FILE_HANDLE, /* Client specified invalid file/directory name*/ 643 CAMERA_ERROR_EFS_SPACE_EXHAUSTED, /* Out of file system space */ 644 CAMERA_ERROR_EFS_OPEN_TABLE_FULL, /* Out of open-file table slots */ 645 CAMERA_ERROR_EFS_OTHER_ERROR, /* Other error */ 646 CAMERA_ERROR_CONFIG, 647 CAMERA_ERROR_EXIF_ENCODE, 648 CAMERA_ERROR_VIDEO_ENGINE, 649 CAMERA_ERROR_IPL, 650 CAMERA_ERROR_INVALID_FORMAT, 651 CAMERA_ERROR_TIMEOUT, 652 CAMERA_ERROR_ESD, 653 CAMERA_ERROR_MAX 654 } camera_error_type; 655 656 #if defined CAMERA_ANTIBANDING_OFF 657 #undef CAMERA_ANTIBANDING_OFF 658 #endif 659 660 #if defined CAMERA_ANTIBANDING_60HZ 661 #undef CAMERA_ANTIBANDING_60HZ 662 #endif 663 664 #if defined CAMERA_ANTIBANDING_50HZ 665 #undef CAMERA_ANTIBANDING_50HZ 666 #endif 667 668 #if defined CAMERA_ANTIBANDING_AUTO 669 #undef CAMERA_ANTIBANDING_AUTO 670 #endif 671 672 typedef enum { 673 CAMERA_ANTIBANDING_OFF, 674 CAMERA_ANTIBANDING_60HZ, 675 CAMERA_ANTIBANDING_50HZ, 676 CAMERA_ANTIBANDING_AUTO, 677 CAMERA_ANTIBANDING_AUTO_50HZ, 678 CAMERA_ANTIBANDING_AUTO_60HZ, 679 CAMERA_MAX_ANTIBANDING, 680 } camera_antibanding_type; 681 682 /* Enum Type for different ISO Mode supported */ 683 typedef enum { 684 CAMERA_ISO_AUTO = 0, 685 CAMERA_ISO_DEBLUR, 686 CAMERA_ISO_100, 687 CAMERA_ISO_200, 688 CAMERA_ISO_400, 689 CAMERA_ISO_800, 690 CAMERA_ISO_1600, 691 CAMERA_ISO_MAX 692 } camera_iso_mode_type; 693 694 typedef enum { 695 MM_CAMERA_FACIAL_FEATURE_FD, // facial detection 696 MM_CAMERA_FACIAL_FEATURE_MAX 697 } camera_facial_features; 698 699 typedef enum { 700 AEC_ROI_OFF, 701 AEC_ROI_ON 702 } aec_roi_ctrl_t; 703 704 typedef enum { 705 AEC_ROI_BY_INDEX, 706 AEC_ROI_BY_COORDINATE, 707 } aec_roi_type_t; 708 709 typedef struct { 710 uint32_t x; 711 uint32_t y; 712 } cam_coordinate_type_t; 713 714 /* 715 * Define DRAW_RECTANGLES to draw rectangles on screen. Just for test purpose. 716 */ 717 //#define DRAW_RECTANGLES 718 719 typedef struct { 720 uint16_t x; 721 uint16_t y; 722 uint16_t dx; 723 uint16_t dy; 724 } roi_t; 725 726 typedef struct { 727 aec_roi_ctrl_t aec_roi_enable; 728 aec_roi_type_t aec_roi_type; 729 union { 730 cam_coordinate_type_t coordinate; 731 uint32_t aec_roi_idx; 732 } aec_roi_position; 733 } cam_set_aec_roi_t; 734 735 typedef struct { 736 uint32_t frm_id; 737 uint8_t num_roi; 738 roi_t roi[MAX_ROI]; 739 uint8_t is_multiwindow; 740 } roi_info_t; 741 742 /* Exif Tag Data Type */ 743 typedef enum 744 { 745 EXIF_BYTE = 1, 746 EXIF_ASCII = 2, 747 EXIF_SHORT = 3, 748 EXIF_LONG = 4, 749 EXIF_RATIONAL = 5, 750 EXIF_UNDEFINED = 7, 751 EXIF_SLONG = 9, 752 EXIF_SRATIONAL = 10 753 } exif_tag_type_t; 754 755 756 /* Exif Rational Data Type */ 757 typedef struct 758 { 759 uint32_t num; // Numerator 760 uint32_t denom; // Denominator 761 762 } rat_t; 763 764 /* Exif Signed Rational Data Type */ 765 typedef struct 766 { 767 int32_t num; // Numerator 768 int32_t denom; // Denominator 769 770 } srat_t; 771 772 typedef struct 773 { 774 exif_tag_type_t type; 775 uint8_t copy; 776 uint32_t count; 777 union 778 { 779 char *_ascii; 780 uint8_t *_bytes; 781 uint8_t _byte; 782 uint16_t *_shorts; 783 uint16_t _short; 784 uint32_t *_longs; 785 uint32_t _long; 786 rat_t *_rats; 787 rat_t _rat; 788 uint8_t *_undefined; 789 int32_t *_slongs; 790 int32_t _slong; 791 srat_t *_srats; 792 srat_t _srat; 793 } data; 794 } exif_tag_entry_t; 795 796 typedef struct { 797 uint32_t tag_id; 798 exif_tag_entry_t tag_entry; 799 } exif_tags_info_t; 800 801 802 typedef enum { 803 HDR_BRACKETING_OFF, 804 HDR_MODE, 805 EXP_BRACKETING_MODE 806 } hdr_mode; 807 808 typedef struct { 809 hdr_mode mode; 810 uint32_t hdr_enable; 811 uint32_t total_frames; 812 uint32_t total_hal_frames; 813 char values[MAX_EXP_BRACKETING_LENGTH]; /* user defined values */ 814 } exp_bracketing_t; 815 typedef struct { 816 roi_t mtr_area[MAX_ROI]; 817 uint32_t num_area; 818 int weight[MAX_ROI]; 819 } aec_mtr_area_t; 820 821 typedef struct { 822 int denoise_enable; 823 int process_plates; 824 } denoise_param_t; 825 826 #ifndef HAVE_CAMERA_SIZE_TYPE 827 #define HAVE_CAMERA_SIZE_TYPE 828 struct camera_size_type { 829 int width; 830 int height; 831 }; 832 #endif 833 834 typedef struct { 835 uint32_t yoffset; 836 uint32_t cbcr_offset; 837 uint32_t size; 838 struct camera_size_type resolution; 839 }cam_buf_info_t; 840 841 typedef struct { 842 int x; 843 int y; 844 }cam_point_t; 845 846 typedef struct { 847 /* AF parameters */ 848 uint8_t focus_position; 849 /* AEC parameters */ 850 uint32_t line_count; 851 uint8_t luma_target; 852 /* AWB parameters */ 853 int32_t r_gain; 854 int32_t b_gain; 855 int32_t g_gain; 856 uint8_t exposure_mode; 857 uint8_t exposure_program; 858 float exposure_time; 859 uint32_t iso_speed; 860 } snapshotData_info_t; 861 862 863 typedef enum { 864 CAMERA_HFR_MODE_OFF = 1, 865 CAMERA_HFR_MODE_60FPS, 866 CAMERA_HFR_MODE_90FPS, 867 CAMERA_HFR_MODE_120FPS, 868 CAMERA_HFR_MODE_150FPS, 869 } camera_hfr_mode_t; 870 871 /* frame Q*/ 872 struct fifo_node 873 { 874 struct fifo_node *next; 875 void *f; 876 }; 877 878 struct fifo_queue 879 { 880 int num_of_frames; 881 struct fifo_node *front; 882 struct fifo_node *back; 883 pthread_mutex_t mut; 884 pthread_cond_t wait; 885 char* name; 886 }; 887 888 typedef struct { 889 uint32_t buf_len; 890 uint8_t num; 891 uint8_t pmem_type; 892 uint32_t vaddr[8]; 893 } mm_camera_histo_mem_info_t; 894 895 typedef enum { 896 MM_CAMERA_CTRL_EVT_ZOOM_DONE, 897 MM_CAMERA_CTRL_EVT_AUTO_FOCUS_DONE, 898 MM_CAMERA_CTRL_EVT_PREP_SNAPSHOT, 899 MM_CAMERA_CTRL_EVT_SNAPSHOT_CONFIG_DONE, 900 MM_CAMERA_CTRL_EVT_WDN_DONE, // wavelet denoise done 901 MM_CAMERA_CTRL_EVT_HDR_DONE, 902 MM_CAMERA_CTRL_EVT_AUTO_FOCUS_MOVE, 903 MM_CAMERA_CTRL_EVT_ERROR, 904 MM_CAMERA_CTRL_EVT_MAX 905 }mm_camera_ctrl_event_type_t; 906 907 typedef struct { 908 mm_camera_ctrl_event_type_t evt; 909 cam_ctrl_status_t status; 910 unsigned long cookie; 911 } mm_camera_ctrl_event_t; 912 913 typedef enum { 914 MM_CAMERA_CH_EVT_STREAMING_ON, 915 MM_CAMERA_CH_EVT_STREAMING_OFF, 916 MM_CAMERA_CH_EVT_STREAMING_ERR, 917 MM_CAMERA_CH_EVT_DATA_DELIVERY_DONE, 918 MM_CAMERA_CH_EVT_DATA_REQUEST_MORE, 919 MM_CAMERA_CH_EVT_MAX 920 }mm_camera_ch_event_type_t; 921 922 typedef struct { 923 uint32_t ch; 924 mm_camera_ch_event_type_t evt; 925 } mm_camera_ch_event_t; 926 927 typedef struct { 928 uint32_t index; 929 /* TBD: need more fields for histo stats? */ 930 } mm_camera_stats_histo_t; 931 932 typedef struct { 933 uint32_t event_id; 934 union { 935 mm_camera_stats_histo_t stats_histo; 936 } e; 937 } mm_camera_stats_event_t; 938 939 typedef enum { 940 FD_ROI_TYPE_HEADER, 941 FD_ROI_TYPE_DATA 942 } fd_roi_type_t; 943 944 typedef struct { 945 int fd_mode; 946 int num_fd; 947 } fd_set_parm_t; 948 949 typedef struct { 950 uint32_t frame_id; 951 int16_t num_face_detected; 952 } fd_roi_header_type; 953 954 struct fd_rect_t { 955 uint16_t x; 956 uint16_t y; 957 uint16_t dx; 958 uint16_t dy; 959 }; 960 961 typedef struct { 962 struct fd_rect_t face_boundary; 963 uint16_t left_eye_center[2]; 964 uint16_t right_eye_center[2]; 965 uint16_t mouth_center[2]; 966 uint8_t smile_degree; //0 -100 967 uint8_t smile_confidence; // 968 uint8_t blink_detected; // 0 or 1 969 uint8_t is_face_recognised; // 0 or 1 970 int8_t gaze_angle; // -90 -45 0 45 90 for head left to rigth tilt 971 int8_t updown_dir; // -90 to 90 972 int8_t leftright_dir; //-90 to 90 973 int8_t roll_dir; // -90 to 90 974 int8_t left_right_gaze; // -50 to 50 975 int8_t top_bottom_gaze; // -50 to 50 976 uint8_t left_blink; // 0 - 100 977 uint8_t right_blink; // 0 - 100 978 int8_t id; // unique id for face tracking within view unless view changes 979 int8_t score; // score of confidence( 0 -100) 980 } fd_face_type; 981 982 typedef struct { 983 uint32_t frame_id; 984 uint8_t idx; 985 fd_face_type face; 986 } fd_roi_data_type; 987 988 struct fd_roi_t { 989 fd_roi_type_t type; 990 union { 991 fd_roi_header_type hdr; 992 fd_roi_data_type data; 993 } d; 994 }; 995 996 typedef struct { 997 uint32_t event_id; 998 union { 999 mm_camera_histo_mem_info_t histo_mem_info; 1000 struct fd_roi_t roi; 1001 } e; 1002 } mm_camera_info_event_t; 1003 1004 typedef enum { 1005 MM_CAMERA_EVT_TYPE_CH, 1006 MM_CAMERA_EVT_TYPE_CTRL, 1007 MM_CAMERA_EVT_TYPE_STATS, 1008 MM_CAMERA_EVT_TYPE_INFO, 1009 MM_CAMERA_EVT_TYPE_MAX 1010 } mm_camera_event_type_t; 1011 1012 /* 1013 * the APP event related defines 1014 */ 1015 typedef enum { 1016 MM_CAMERA_STATS_EVT_HISTO, 1017 MM_CAMERA_STATS_EVT_MAX 1018 } mm_camera_stats_event_type_t; 1019 1020 typedef enum { 1021 MM_CAMERA_INFO_EVT_ROI, 1022 MM_CAMERA_INFO_FLASH_FRAME_IDX, 1023 MM_CAMERA_INFO_EVT_MAX 1024 } mm_camera_info_event_type_t; 1025 1026 /* !!WARNING: PLAESE BE VERY CAREFUL!! 1027 * v4l2_event payload has a limitation of 64 bytes. 1028 * This makes that the whole mm_camera_event_t size 1029 * cannot go beyond 64 bytes. 1030 */ 1031 typedef struct { 1032 mm_camera_event_type_t event_type; 1033 /* the union size cannot go beyond 64 bytes. need RFC */ 1034 union { 1035 mm_camera_ch_event_t ch; 1036 mm_camera_ctrl_event_t ctrl; 1037 mm_camera_stats_event_t stats; 1038 mm_camera_info_event_t info; 1039 } e; 1040 } mm_camera_event_t; 1041 1042 /* Auto focus mode, used for CAMERA_PARM_AF_MODE */ 1043 typedef enum { 1044 AF_MODE_UNCHANGED = -1, 1045 AF_MODE_NORMAL = 0, 1046 AF_MODE_MACRO, 1047 AF_MODE_AUTO, 1048 AF_MODE_CAF, 1049 AF_MODE_INFINITY, 1050 AF_MODE_MAX 1051 } isp3a_af_mode_t; 1052 1053 typedef struct { 1054 uint32_t in1_w; 1055 uint32_t out1_w; 1056 uint32_t in1_h; 1057 uint32_t out1_h; 1058 uint32_t in2_w; 1059 uint32_t out2_w; 1060 uint32_t in2_h; 1061 uint32_t out2_h; 1062 uint8_t update_flag; 1063 } common_crop_t; 1064 1065 typedef enum { 1066 LED_MODE_OFF, 1067 LED_MODE_AUTO, 1068 LED_MODE_ON, 1069 LED_MODE_TORCH, 1070 1071 /*new mode above should be added above this line*/ 1072 LED_MODE_MAX 1073 } led_mode_t; 1074 1075 typedef struct { 1076 int is_checking_af_retry; 1077 int is_moving; 1078 } af_actuator_status_t; 1079 1080 typedef struct{ 1081 int aec_index_for_zsl; 1082 int zsl_flash_enable; 1083 } aec_info_for_flash_t; 1084 1085 typedef struct video_dis_param_ctrl_t { 1086 uint32_t dis_enable; /* DIS feature: 1 = enable, 0 = disable. 1087 when enable, caller makes sure w/h are 10% more. */ 1088 uint32_t video_rec_width; /* video frame width for recording */ 1089 uint32_t video_rec_height; /* video frame height for recording */ 1090 uint32_t output_cbcr_offset; 1091 } video_dis_param_ctrl_t; 1092 1093 typedef enum camera_rotation_type { 1094 ROT_NONE = 0, 1095 ROT_CLOCKWISE_90 = 1, 1096 ROT_CLOCKWISE_180 = 6, 1097 ROT_CLOCKWISE_270 = 7, 1098 } camera_rotation_type; 1099 1100 typedef struct video_rotation_param_ctrl_t { 1101 camera_rotation_type rotation; /* 0 degree = rot disable. */ 1102 } video_rotation_param_ctrl_t; 1103 1104 enum focus_distance_index{ 1105 FOCUS_DISTANCE_NEAR_INDEX, /* 0 */ 1106 FOCUS_DISTANCE_OPTIMAL_INDEX, 1107 FOCUS_DISTANCE_FAR_INDEX, 1108 FOCUS_DISTANCE_MAX_INDEX 1109 }; 1110 1111 typedef struct { 1112 float focus_distance[FOCUS_DISTANCE_MAX_INDEX]; 1113 float real_gain; 1114 float exp_time; 1115 } focus_distances_info_t; 1116 1117 typedef enum msm_st_frame_packing cam_3d_frame_format_t; 1118 1119 typedef struct { 1120 cam_frame_type_t frame_type; 1121 cam_3d_frame_format_t format; 1122 }camera_3d_frame_t; 1123 1124 typedef enum { 1125 CAMERA_BESTSHOT_OFF = 0, 1126 CAMERA_BESTSHOT_AUTO = 1, 1127 CAMERA_BESTSHOT_LANDSCAPE = 2, 1128 CAMERA_BESTSHOT_SNOW, 1129 CAMERA_BESTSHOT_BEACH, 1130 CAMERA_BESTSHOT_SUNSET, 1131 CAMERA_BESTSHOT_NIGHT, 1132 CAMERA_BESTSHOT_PORTRAIT, 1133 CAMERA_BESTSHOT_BACKLIGHT, 1134 CAMERA_BESTSHOT_SPORTS, 1135 CAMERA_BESTSHOT_ANTISHAKE, 1136 CAMERA_BESTSHOT_FLOWERS, 1137 CAMERA_BESTSHOT_CANDLELIGHT, 1138 CAMERA_BESTSHOT_FIREWORKS, 1139 CAMERA_BESTSHOT_PARTY, 1140 CAMERA_BESTSHOT_NIGHT_PORTRAIT, 1141 CAMERA_BESTSHOT_THEATRE, 1142 CAMERA_BESTSHOT_ACTION, 1143 CAMERA_BESTSHOT_AR, 1144 CAMERA_BESTSHOT_MAX 1145 } camera_bestshot_mode_type; 1146 1147 typedef enum { 1148 AUTO = 1, 1149 SPOT, 1150 CENTER_WEIGHTED, 1151 AVERAGE 1152 } cam_af_focusrect_t; 1153 1154 typedef enum { 1155 CAMERA_AEC_FRAME_AVERAGE, 1156 CAMERA_AEC_CENTER_WEIGHTED, 1157 CAMERA_AEC_SPOT_METERING, 1158 CAMERA_AEC_SMART_METERING, 1159 CAMERA_AEC_USER_METERING, 1160 CAMERA_AEC_MAX_MODES 1161 } camera_auto_exposure_mode_type; 1162 1163 typedef enum { 1164 FPS_MODE_AUTO, 1165 FPS_MODE_FIXED, 1166 } fps_mode_t; 1167 1168 typedef struct { 1169 int32_t buffer[256]; /* buffer to hold data */ 1170 int32_t max_value; 1171 } camera_preview_histogram_info; 1172 1173 /* Clockwise */ 1174 typedef enum { 1175 CAMERA_ENCODING_ROTATE_0, 1176 CAMERA_ENCODING_ROTATE_90, 1177 CAMERA_ENCODING_ROTATE_180, 1178 CAMERA_ENCODING_ROTATE_270 1179 } camera_encoding_rotate_t; 1180 1181 typedef enum { 1182 MOTION_ISO_OFF, 1183 MOTION_ISO_ON 1184 } motion_iso_t; 1185 1186 typedef struct { 1187 struct msm_ctrl_cmd ctrlCmd; 1188 int fd; 1189 void (*af_cb)(int8_t ); 1190 int8_t is_camafctrl_thread_join; 1191 isp3a_af_mode_t af_mode; 1192 } cam_af_ctrl_t; 1193 1194 /* Display */ 1195 typedef struct { 1196 uint16_t user_input_display_width; 1197 uint16_t user_input_display_height; 1198 } USER_INPUT_DISPLAY_T; 1199 1200 #if defined CAMERA_WB_AUTO 1201 #undef CAMERA_WB_AUTO 1202 #endif 1203 1204 #if defined CAMERA_WB_CUSTOM 1205 #undef CAMERA_WB_CUSTOM 1206 #endif 1207 1208 #if defined CAMERA_WB_INCANDESCENT 1209 #undef CAMERA_WB_INCANDESCENT 1210 #endif 1211 1212 #if defined CAMERA_WB_FLUORESCENT 1213 #undef CAMERA_WB_FLUORESCENT 1214 #endif 1215 1216 #if defined CAMERA_WB_DAYLIGHT 1217 #undef CAMERA_WB_DAYLIGHT 1218 #endif 1219 1220 #if defined CAMERA_WB_CLOUDY_DAYLIGHT 1221 #undef CAMERA_WB_CLOUDY_DAYLIGHT 1222 #endif 1223 1224 #if defined CAMERA_WB_TWILIGHT 1225 #undef CAMERA_WB_TWILIGHT 1226 #endif 1227 1228 #if defined CAMERA_WB_SHADE 1229 #undef CAMERA_WB_SHADE 1230 #endif 1231 1232 typedef enum { 1233 CAMERA_WB_MIN_MINUS_1, 1234 CAMERA_WB_AUTO = 1, 1235 CAMERA_WB_CUSTOM, 1236 CAMERA_WB_INCANDESCENT, 1237 CAMERA_WB_FLUORESCENT, 1238 CAMERA_WB_DAYLIGHT, 1239 CAMERA_WB_CLOUDY_DAYLIGHT, 1240 CAMERA_WB_TWILIGHT, 1241 CAMERA_WB_SHADE, 1242 CAMERA_WB_OFF, 1243 CAMERA_WB_MAX_PLUS_1 1244 } config3a_wb_t; 1245 1246 /****************************************************************************** 1247 * Function: exif_set_tag 1248 * Description: Inserts or modifies an Exif tag to the Exif Info object. Typical 1249 * use is to call this function multiple times - to insert all the 1250 * desired Exif Tags individually to the Exif Info object and 1251 * then pass the info object to the Jpeg Encoder object so 1252 * the inserted tags would be emitted as tags in the Exif header. 1253 * Input parameters: 1254 * obj - The Exif Info object where the tag would be inserted to or 1255 * modified from. 1256 * tag_id - The Exif Tag ID of the tag to be inserted/modified. 1257 * p_entry - The pointer to the tag entry structure which contains the 1258 * details of tag. The pointer can be set to NULL to un-do 1259 * previous insertion for a certain tag. 1260 * Return values: 1261 * JPEGERR_SUCCESS 1262 * JPEGERR_ENULLPTR 1263 * JPEGERR_EFAILED 1264 * (See jpegerr.h for description of error values.) 1265 * Notes: none 1266 *****************************************************************************/ 1267 int exif_set_tag(exif_info_obj_t obj, 1268 exif_tag_id_t tag_id, 1269 exif_tag_entry_t *p_entry); 1270 1271 typedef uint32_t jpeg_event_t; 1272 1273 // Possibly supported color formats 1274 // Ordering handcrafted for efficient coding, alter with care! 1275 typedef enum 1276 { 1277 YCRCBLP_H2V2 = 0, 1278 YCBCRLP_H2V2 = 1, 1279 1280 YCRCBLP_H2V1 = 2, 1281 YCBCRLP_H2V1 = 3, 1282 1283 YCRCBLP_H1V2 = 4, 1284 YCBCRLP_H1V2 = 5, 1285 1286 YCRCBLP_H1V1 = 6, 1287 YCBCRLP_H1V1 = 7, 1288 1289 RGB565 = 8, 1290 RGB888 = 9, 1291 RGBa = 10, 1292 1293 JPEG_BITSTREAM_H2V2 = 12, 1294 JPEG_BITSTREAM_H2V1 = 14, 1295 JPEG_BITSTREAM_H1V2 = 16, 1296 JPEG_BITSTREAM_H1V1 = 18, 1297 1298 JPEG_COLOR_FORMAT_MAX, 1299 1300 } jpeg_color_format_t; 1301 1302 /* EXIF header */ 1303 /* ======================================================================= 1304 ** Macro Definitions 1305 ** ======================================================================= */ 1306 /* Enum defined to let compiler generate unique offset numbers for different 1307 * tags - ordering matters! NOT INTENDED to be used by any application. */ 1308 typedef enum 1309 { 1310 // GPS IFD 1311 GPS_VERSION_ID = 0, 1312 GPS_LATITUDE_REF, 1313 GPS_LATITUDE, 1314 GPS_LONGITUDE_REF, 1315 GPS_LONGITUDE, 1316 GPS_ALTITUDE_REF, 1317 GPS_ALTITUDE, 1318 GPS_TIMESTAMP, 1319 GPS_SATELLITES, 1320 GPS_STATUS, 1321 GPS_MEASUREMODE, 1322 GPS_DOP, 1323 GPS_SPEED_REF, 1324 GPS_SPEED, 1325 GPS_TRACK_REF, 1326 GPS_TRACK, 1327 GPS_IMGDIRECTION_REF, 1328 GPS_IMGDIRECTION, 1329 GPS_MAPDATUM, 1330 GPS_DESTLATITUDE_REF, 1331 GPS_DESTLATITUDE, 1332 GPS_DESTLONGITUDE_REF, 1333 GPS_DESTLONGITUDE, 1334 GPS_DESTBEARING_REF, 1335 GPS_DESTBEARING, 1336 GPS_DESTDISTANCE_REF, 1337 GPS_DESTDISTANCE, 1338 GPS_PROCESSINGMETHOD, 1339 GPS_AREAINFORMATION, 1340 GPS_DATESTAMP, 1341 GPS_DIFFERENTIAL, 1342 1343 // TIFF IFD 1344 NEW_SUBFILE_TYPE, 1345 SUBFILE_TYPE, 1346 IMAGE_WIDTH, 1347 IMAGE_LENGTH, 1348 BITS_PER_SAMPLE, 1349 COMPRESSION, 1350 PHOTOMETRIC_INTERPRETATION, 1351 THRESH_HOLDING, 1352 CELL_WIDTH, 1353 CELL_HEIGHT, 1354 FILL_ORDER, 1355 DOCUMENT_NAME, 1356 IMAGE_DESCRIPTION, 1357 MAKE, 1358 MODEL, 1359 STRIP_OFFSETS, 1360 ORIENTATION, 1361 SAMPLES_PER_PIXEL, 1362 ROWS_PER_STRIP, 1363 STRIP_BYTE_COUNTS, 1364 MIN_SAMPLE_VALUE, 1365 MAX_SAMPLE_VALUE, 1366 X_RESOLUTION, 1367 Y_RESOLUTION, 1368 PLANAR_CONFIGURATION, 1369 PAGE_NAME, 1370 X_POSITION, 1371 Y_POSITION, 1372 FREE_OFFSET, 1373 FREE_BYTE_COUNTS, 1374 GRAY_RESPONSE_UNIT, 1375 GRAY_RESPONSE_CURVE, 1376 T4_OPTION, 1377 T6_OPTION, 1378 RESOLUTION_UNIT, 1379 PAGE_NUMBER, 1380 TRANSFER_FUNCTION, 1381 SOFTWARE, 1382 DATE_TIME, 1383 ARTIST, 1384 HOST_COMPUTER, 1385 PREDICTOR, 1386 WHITE_POINT, 1387 PRIMARY_CHROMATICITIES, 1388 COLOR_MAP, 1389 HALFTONE_HINTS, 1390 TILE_WIDTH, 1391 TILE_LENGTH, 1392 TILE_OFFSET, 1393 TILE_BYTE_COUNTS, 1394 INK_SET, 1395 INK_NAMES, 1396 NUMBER_OF_INKS, 1397 DOT_RANGE, 1398 TARGET_PRINTER, 1399 EXTRA_SAMPLES, 1400 SAMPLE_FORMAT, 1401 TRANSFER_RANGE, 1402 JPEG_PROC, 1403 JPEG_INTERCHANGE_FORMAT, 1404 JPEG_INTERCHANGE_FORMAT_LENGTH, 1405 JPEG_RESTART_INTERVAL, 1406 JPEG_LOSSLESS_PREDICTORS, 1407 JPEG_POINT_TRANSFORMS, 1408 JPEG_Q_TABLES, 1409 JPEG_DC_TABLES, 1410 JPEG_AC_TABLES, 1411 YCBCR_COEFFICIENTS, 1412 YCBCR_SUB_SAMPLING, 1413 YCBCR_POSITIONING, 1414 REFERENCE_BLACK_WHITE, 1415 GAMMA, 1416 ICC_PROFILE_DESCRIPTOR, 1417 SRGB_RENDERING_INTENT, 1418 IMAGE_TITLE, 1419 COPYRIGHT, 1420 EXIF_IFD, 1421 ICC_PROFILE, 1422 GPS_IFD, 1423 1424 1425 // TIFF IFD (Thumbnail) 1426 TN_IMAGE_WIDTH, 1427 TN_IMAGE_LENGTH, 1428 TN_BITS_PER_SAMPLE, 1429 TN_COMPRESSION, 1430 TN_PHOTOMETRIC_INTERPRETATION, 1431 TN_IMAGE_DESCRIPTION, 1432 TN_MAKE, 1433 TN_MODEL, 1434 TN_STRIP_OFFSETS, 1435 TN_ORIENTATION, 1436 TN_SAMPLES_PER_PIXEL, 1437 TN_ROWS_PER_STRIP, 1438 TN_STRIP_BYTE_COUNTS, 1439 TN_X_RESOLUTION, 1440 TN_Y_RESOLUTION, 1441 TN_PLANAR_CONFIGURATION, 1442 TN_RESOLUTION_UNIT, 1443 TN_TRANSFER_FUNCTION, 1444 TN_SOFTWARE, 1445 TN_DATE_TIME, 1446 TN_ARTIST, 1447 TN_WHITE_POINT, 1448 TN_PRIMARY_CHROMATICITIES, 1449 TN_JPEGINTERCHANGE_FORMAT, 1450 TN_JPEGINTERCHANGE_FORMAT_L, 1451 TN_YCBCR_COEFFICIENTS, 1452 TN_YCBCR_SUB_SAMPLING, 1453 TN_YCBCR_POSITIONING, 1454 TN_REFERENCE_BLACK_WHITE, 1455 TN_COPYRIGHT, 1456 1457 // EXIF IFD 1458 EXPOSURE_TIME, 1459 F_NUMBER, 1460 EXPOSURE_PROGRAM, 1461 SPECTRAL_SENSITIVITY, 1462 ISO_SPEED_RATING, 1463 OECF, 1464 EXIF_VERSION, 1465 EXIF_DATE_TIME_ORIGINAL, 1466 EXIF_DATE_TIME_DIGITIZED, 1467 EXIF_COMPONENTS_CONFIG, 1468 EXIF_COMPRESSED_BITS_PER_PIXEL, 1469 SHUTTER_SPEED, 1470 APERTURE, 1471 BRIGHTNESS, 1472 EXPOSURE_BIAS_VALUE, 1473 MAX_APERTURE, 1474 SUBJECT_DISTANCE, 1475 METERING_MODE, 1476 LIGHT_SOURCE, 1477 FLASH, 1478 FOCAL_LENGTH, 1479 SUBJECT_AREA, 1480 EXIF_MAKER_NOTE, 1481 EXIF_USER_COMMENT, 1482 SUBSEC_TIME, 1483 SUBSEC_TIME_ORIGINAL, 1484 SUBSEC_TIME_DIGITIZED, 1485 EXIF_FLASHPIX_VERSION, 1486 EXIF_COLOR_SPACE, 1487 EXIF_PIXEL_X_DIMENSION, 1488 EXIF_PIXEL_Y_DIMENSION, 1489 RELATED_SOUND_FILE, 1490 INTEROP, 1491 FLASH_ENERGY, 1492 SPATIAL_FREQ_RESPONSE, 1493 FOCAL_PLANE_X_RESOLUTION, 1494 FOCAL_PLANE_Y_RESOLUTION, 1495 FOCAL_PLANE_RESOLUTION_UNIT, 1496 SUBJECT_LOCATION, 1497 EXPOSURE_INDEX, 1498 SENSING_METHOD, 1499 FILE_SOURCE, 1500 SCENE_TYPE, 1501 CFA_PATTERN, 1502 CUSTOM_RENDERED, 1503 EXPOSURE_MODE, 1504 WHITE_BALANCE, 1505 DIGITAL_ZOOM_RATIO, 1506 FOCAL_LENGTH_35MM, 1507 SCENE_CAPTURE_TYPE, 1508 GAIN_CONTROL, 1509 CONTRAST, 1510 SATURATION, 1511 SHARPNESS, 1512 DEVICE_SETTINGS_DESCRIPTION, 1513 SUBJECT_DISTANCE_RANGE, 1514 IMAGE_UID, 1515 PIM, 1516 1517 EXIF_TAG_MAX_OFFSET 1518 1519 } exif_tag_offset_t; 1520 1521 /* Below are the supported Tags (ID and structure for their data) */ 1522 #define CONSTRUCT_TAGID(offset,ID) (offset << 16 | ID) 1523 1524 // GPS tag version 1525 // Use EXIFTAGTYPE_GPS_VERSION_ID as the exif_tag_type (EXIF_BYTE) 1526 // Count should be 4 1527 #define _ID_GPS_VERSION_ID 0x0000 1528 #define EXIFTAGID_GPS_VERSION_ID CONSTRUCT_TAGID(GPS_VERSION_ID, _ID_GPS_VERSION_ID) 1529 #define EXIFTAGTYPE_GPS_VERSION_ID EXIF_BYTE 1530 // North or South Latitude 1531 // Use EXIFTAGTYPE_GPS_LATITUDE_REF as the exif_tag_type (EXIF_ASCII) 1532 // It should be 2 characters long including the null-terminating character. 1533 #define _ID_GPS_LATITUDE_REF 0x0001 1534 #define EXIFTAGID_GPS_LATITUDE_REF CONSTRUCT_TAGID(GPS_LATITUDE_REF, _ID_GPS_LATITUDE_REF) 1535 #define EXIFTAGTYPE_GPS_LATITUDE_REF EXIF_ASCII 1536 // Latitude 1537 // Use EXIFTAGTYPE_GPS_LATITUDE as the exif_tag_type (EXIF_RATIONAL) 1538 // Count should be 3 1539 #define _ID_GPS_LATITUDE 0x0002 1540 #define EXIFTAGID_GPS_LATITUDE CONSTRUCT_TAGID(GPS_LATITUDE, _ID_GPS_LATITUDE) 1541 #define EXIFTAGTYPE_GPS_LATITUDE EXIF_RATIONAL 1542 // East or West Longitude 1543 // Use EXIFTAGTYPE_GPS_LONGITUDE_REF as the exif_tag_type (EXIF_ASCII) 1544 // It should be 2 characters long including the null-terminating character. 1545 #define _ID_GPS_LONGITUDE_REF 0x0003 1546 #define EXIFTAGID_GPS_LONGITUDE_REF CONSTRUCT_TAGID(GPS_LONGITUDE_REF, _ID_GPS_LONGITUDE_REF) 1547 #define EXIFTAGTYPE_GPS_LONGITUDE_REF EXIF_ASCII 1548 // Longitude 1549 // Use EXIFTAGTYPE_GPS_LONGITUDE as the exif_tag_type (EXIF_RATIONAL) 1550 // Count should be 3 1551 #define _ID_GPS_LONGITUDE 0x0004 1552 #define EXIFTAGID_GPS_LONGITUDE CONSTRUCT_TAGID(GPS_LONGITUDE, _ID_GPS_LONGITUDE) 1553 #define EXIFTAGTYPE_GPS_LONGITUDE EXIF_RATIONAL 1554 // Altitude reference 1555 // Use EXIFTAGTYPE_GPS_ALTITUDE_REF as the exif_tag_type (EXIF_BYTE) 1556 #define _ID_GPS_ALTITUDE_REF 0x0005 1557 #define EXIFTAGID_GPS_ALTITUDE_REF CONSTRUCT_TAGID(GPS_ALTITUDE_REF, _ID_GPS_ALTITUDE_REF) 1558 #define EXIFTAGTYPE_GPS_ALTITUDE_REF EXIF_BYTE 1559 // Altitude 1560 // Use EXIFTAGTYPE_GPS_ALTITUDE as the exif_tag_type (EXIF_RATIONAL) 1561 #define _ID_GPS_ALTITUDE 0x0006 1562 #define EXIFTAGID_GPS_ALTITUDE CONSTRUCT_TAGID(GPS_ALTITUDE, _ID_GPS_ALTITUDE) 1563 #define EXIFTAGTYPE_GPS_ALTITUE EXIF_RATIONAL 1564 // GPS time (atomic clock) 1565 // Use EXIFTAGTYPE_GPS_TIMESTAMP as the exif_tag_type (EXIF_RATIONAL) 1566 // Count should be 3 1567 #define _ID_GPS_TIMESTAMP 0x0007 1568 #define EXIFTAGID_GPS_TIMESTAMP CONSTRUCT_TAGID(GPS_TIMESTAMP, _ID_GPS_TIMESTAMP) 1569 #define EXIFTAGTYPE_GPS_TIMESTAMP EXIF_RATIONAL 1570 // GPS Satellites 1571 // Use EXIFTAGTYPE_GPS_SATELLITES as the exif_tag_type (EXIF_ASCII) 1572 // Count can be anything. 1573 #define _ID_GPS_SATELLITES 0x0008 1574 #define EXIFTAGID_GPS_SATELLITES CONSTRUCT_TAGID(GPS_SATELLITES, _ID_GPS_SATELLITES) 1575 #define EXIFTAGTYPE_GPS_SATELLITES EXIF_ASCII 1576 // GPS Status 1577 // Use EXIFTAGTYPE_GPS_STATUS as the exif_tag_type (EXIF_ASCII) 1578 // It should be 2 characters long including the null-terminating character. 1579 // "A" - Measurement in progress 1580 // "V" - Measurement Interoperability 1581 // Other - Reserved 1582 #define _ID_GPS_STATUS 0x0009 1583 #define EXIFTAGID_GPS_STATUS CONSTRUCT_TAGID(GPS_STATUS, _ID_GPS_STATUS) 1584 #define EXIFTATTYPE_GPS_STATUS EXIF_ASCII 1585 // GPS Measure Mode 1586 // Use EXIFTAGTYPE_GPS_MEASUREMODE as the exif_tag_type (EXIF_ASCII) 1587 // It should be 2 characters long including the null-terminating character. 1588 // "2" - 2-dimensional measurement 1589 // "3" - 3-dimensional measurement 1590 // Other - Reserved 1591 #define _ID_GPS_MEASUREMODE 0x000a 1592 #define EXIFTAGID_GPS_MEASUREMODE CONSTRUCT_TAGID(GPS_MEASUREMODE, _ID_GPS_MEASUREMODE) 1593 #define EXIFTAGTYPE_GPS_MEASUREMODE EXIF_ASCII 1594 // GPS Measurement precision (DOP) 1595 // Use EXIFTAGTYPE_GPS_DOP as the exif_tag_type (EXIF_RATIONAL) 1596 // Count should be 1 1597 #define _ID_GPS_DOP 0x000b 1598 #define EXIFTAGID_GPS_DOP CONSTRUCT_TAGID(GPS_DOP, _ID_GPS_DOP) 1599 #define EXIFTAGTYPE_GPS_DOP EXIF_RATIONAL 1600 // Speed Unit 1601 // Use EXIFTAGTYPE_GPS_SPEED_REF as the exif_tag_type (EXIF_ASCII) 1602 // It should be 2 characters long including the null-terminating character. 1603 // "K" - Kilometers per hour 1604 // "M" - Miles per hour 1605 // "N" - Knots 1606 // Other - Reserved 1607 #define _ID_GPS_SPEED_REF 0x000c 1608 #define EXIFTAGID_GPS_SPEED_REF CONSTRUCT_TAGID(GPS_SPEED_REF, _ID_GPS_SPEED_REF) 1609 #define EXIFTAGTYPE_GPS_SPEED_REF EXIF_ASCII 1610 // Speed of GPS receiver 1611 // Use EXIFTAGTYPE_GPS_SPEED as the exif_tag_type (EXIF_RATIONAL) 1612 // Count should be 1 1613 #define _ID_GPS_SPEED 0x000d 1614 #define EXIFTAGID_GPS_SPEED CONSTRUCT_TAGID(GPS_SPEED, _ID_GPS_SPEED) 1615 #define EXIFTAGTYPE_GPS_SPEED EXIF_RATIONAL 1616 // Reference of direction of movement 1617 // Use EXIFTAGTYPE_GPS_TRACK_REF as the exif_tag_type (EXIF_ASCII) 1618 // It should be 2 characters long including the null-terminating character. 1619 // "T" - True direction 1620 // "M" - Magnetic direction 1621 // Other - Reserved 1622 #define _ID_GPS_TRACK_REF 0x000e 1623 #define EXIFTAGID_GPS_TRACK_REF CONSTRUCT_TAGID(GPS_TRACK_REF, _ID_GPS_TRACK_REF) 1624 #define EXIFTAGTYPE_GPS_TRACK_REF EXIF_ASCII 1625 // Direction of movement 1626 // Use EXIFTAGTYPE_GPS_TRACK as the exif_tag_type (EXIF_RATIONAL) 1627 // Count should be 1 1628 #define _ID_GPS_TRACK 0x000f 1629 #define EXIFTAGID_GPS_TRACK CONSTRUCT_TAGID(GPS_TRACK, _ID_GPS_TRACK) 1630 #define EXIFTAGTYPE_GPS_TRACK EXIF_RATIONAL 1631 // Reference of direction of image 1632 // Use EXIFTAGTYPE_GPS_IMGDIRECTION_REF as the exif_tag_type (EXIF_ASCII) 1633 // It should be 2 characters long including the null-terminating character. 1634 // "T" - True direction 1635 // "M" - Magnetic direction 1636 // Other - Reserved 1637 #define _ID_GPS_IMGDIRECTION_REF 0x0010 1638 #define EXIFTAGID_GPS_IMGDIRECTION_REF CONSTRUCT_TAGID(GPS_IMGDIRECTION_REF, _ID_GPS_IMGDIRECTION_REF) 1639 #define EXIFTAGTYPE_GPS_IMGDIRECTION_REF EXIF_ASCII 1640 // Direction of image 1641 // Use EXIFTAGTYPE_GPS_IMGDIRECTION as the exif_tag_type (EXIF_RATIONAL) 1642 // Count should be 1 1643 #define _ID_GPS_IMGDIRECTION 0x0011 1644 #define EXIFTAGID_GPS_IMGDIRECTION CONSTRUCT_TAGID(GPS_IMGDIRECTION, _ID_GPS_IMGDIRECTION) 1645 #define EXIFTAGTYPE_GPS_IMGDIRECTION EXIF_RATIONAL 1646 // Geodetic survey data used 1647 // Use EXIFTAGTYPE_GPS_MAPDATUM as the exif_tag_type (EXIF_ASCII) 1648 // Count can be any 1649 #define _ID_GPS_MAPDATUM 0x0012 1650 #define EXIFTAGID_GPS_MAPDATUM CONSTRUCT_TAGID(GPS_MAPDATUM, _ID_GPS_MAPDATUM) 1651 #define EXIFTAGTYPE_GPS_MAPDATUM EXIF_ASCII 1652 // Reference for latitude of destination 1653 // Use EXIFTAGTYPE_GPS_DESTLATITUDE_REF as the exif_tag_type (EXIF_ASCII) 1654 // It should be 2 characters long including the null-terminating character. 1655 // "N" - North latitude 1656 // "S" - South latitude 1657 // Other - Reserved 1658 #define _ID_GPS_DESTLATITUDE_REF 0x0013 1659 #define EXIFTAGID_GPS_DESTLATITUDE_REF CONSTRUCT_TAGID(GPS_DESTLATITUDE_REF, _ID_GPS_DESTLATITUDE_REF) 1660 #define EXIFTAGTYPE_GPS_DESTLATITUDE_REF EXIF_ASCII 1661 // Latitude of destination 1662 // Use EXIFTAGTYPE_GPS_DESTLATITUDE as the exif_tag_type (EXIF_RATIONAL) 1663 // Count should be 3 1664 #define _ID_GPS_DESTLATITUDE 0x0014 1665 #define EXIFTAGID_GPS_DESTLATITUDE CONSTRUCT_TAGID(GPS_DESTLATITUDE, _ID_GPS_DESTLATITUDE) 1666 #define EXIFTAGTYPE_GPS_DESTLATITUDE EXIF_RATIONAL 1667 // Reference for longitude of destination 1668 // Use EXIFTAGTYPE_GPS_DESTLONGITUDE_REF as the exif_tag_type (EXIF_ASCII) 1669 // It should be 2 characters long including the null-terminating character. 1670 // "E" - East longitude 1671 // "W" - West longitude 1672 // Other - Reserved 1673 #define _ID_GPS_DESTLONGITUDE_REF 0x0015 1674 #define EXIFTAGID_GPS_DESTLONGITUDE_REF CONSTRUCT_TAGID(GPS_DESTLONGITUDE_REF, _ID_GPS_DESTLONGITUDE_REF) 1675 #define EXIFTAGTYPE_GPS_DESTLONGITUDE_REF EXIF_ASCII 1676 // Longitude of destination 1677 // Use EXIFTAGTYPE_GPS_DESTLONGITUDE as the exif_tag_type (EXIF_RATIONAL) 1678 // Count should be 3 1679 #define _ID_GPS_DESTLONGITUDE 0x0016 1680 #define EXIFTAGID_GPS_DESTLONGITUDE CONSTRUCT_TAGID(GPS_DESTLONGITUDE, _ID_GPS_DESTLONGITUDE) 1681 #define EXIFTAGTYPE_GPS_DESTLONGITUDE EXIF_RATIONAL 1682 // Reference for bearing of destination 1683 // Use EXIFTAGTYPE_GPS_DESTBEARING_REF as the exif_tag_type (EXIF_ASCII) 1684 // It should be 2 characters long including the null-terminating character. 1685 // "T" - True direction 1686 // "M" - Magnetic direction 1687 // Other - Reserved 1688 #define _ID_GPS_DESTBEARING_REF 0x0017 1689 #define EXIFTAGID_GPS_DESTBEARING_REF CONSTRUCT_TAGID(GPS_DESTBEARING_REF, _ID_GPS_DESTBEARING_REF) 1690 #define EXIFTAGTYPE_GPS_DESTBEARING_REF EXIF_ASCII 1691 // Bearing of destination 1692 // Use EXIFTAGTYPE_GPS_DESTBEARING as the exif_tag_type (EXIF_RATIONAL) 1693 // Count should be 1 1694 #define _ID_GPS_DESTBEARING 0x0018 1695 #define EXIFTAGID_GPS_DESTBEARING CONSTRUCT_TAGID(GPS_DESTBEARING, _ID_GPS_DESTBEARING) 1696 #define EXIFTAGTYPE_GPS_DESTBEARING EXIF_RATIONAL 1697 // Reference for distance to destination 1698 // Use EXIFTAGTYPE_GPS_DESTDISTANCE_REF as the exif_tag_type (EXIF_ASCII) 1699 // It should be 2 characters long including the null-terminating character. 1700 // "K" - Kilometers per hour 1701 // "M" - Miles per hour 1702 // "N" - Knots 1703 // Other - Reserved 1704 #define _ID_GPS_DESTDISTANCE_REF 0x0019 1705 #define EXIFTAGID_GPS_DESTDISTANCE_REF CONSTRUCT_TAGID(GPS_DESTDISTANCE_REF, _ID_GPS_DESTDISTANCE_REF) 1706 #define EXIFTAGTYPE_GPS_DESTDISTANCE_REF EXIF_ASCII 1707 // Distance to destination 1708 // Use EXIFTAGTYPE_GPS_DESTDISTANCE as the exif_tag_type (EXIF_RATIONAL) 1709 // Count should be 1 1710 #define _ID_GPS_DESTDISTANCE 0x001a 1711 #define EXIFTAGID_GPS_DESTDISTANCE CONSTRUCT_TAGID(GPS_DESTDISTANCE, _ID_GPS_DESTDISTANCE) 1712 #define EXIFTAGTYPE_GPS_DESTDISTANCE EXIF_RATIONAL 1713 // Name of GPS processing method 1714 // Use EXIFTAGTYPE_GPS_PROCESSINGMETHOD as the exif_tag_type (EXIF_UNDEFINED) 1715 // Count can be any 1716 #define _ID_GPS_PROCESSINGMETHOD 0x001b 1717 #define EXIFTAGID_GPS_PROCESSINGMETHOD CONSTRUCT_TAGID(GPS_PROCESSINGMETHOD, _ID_GPS_PROCESSINGMETHOD) 1718 #define EXIFTAGTYPE_GPS_PROCESSINGMETHOD EXIF_UNDEFINED 1719 // Name of GPS area 1720 // Use EXIFTAGTYPE_GPS_AREAINFORMATION as the exif_tag_type (EXIF_UNDEFINED) 1721 // Count can be any 1722 #define _ID_GPS_AREAINFORMATION 0x001c 1723 #define EXIFTAGID_GPS_AREAINFORMATION CONSTRUCT_TAGID(GPS_AREAINFORMATION, _ID_GPS_AREAINFORMATION) 1724 #define EXIFTAGTYPE_GPS_AREAINFORMATION EXIF_UNDEFINED 1725 // GPS date 1726 // Use EXIFTAGTYPE_GPS_DATESTAMP as the exif_tag_type (EXIF_ASCII) 1727 // It should be 11 characters long including the null-terminating character. 1728 #define _ID_GPS_DATESTAMP 0x001d 1729 #define EXIFTAGID_GPS_DATESTAMP CONSTRUCT_TAGID(GPS_DATESTAMP, _ID_GPS_DATESTAMP) 1730 #define EXIFTAGTYPE_GPS_DATESTAMP EXIF_ASCII 1731 // GPS differential correction 1732 // Use EXIFTAGTYPE_GPS_DIFFERENTIAL as the exif_tag_type (EXIF_SHORT) 1733 // Count should be 1 1734 // 0 - Measurement without differential correction 1735 // 1 - Differential correction applied 1736 // Other - Reserved 1737 #define _ID_GPS_DIFFERENTIAL 0x001e 1738 #define EXIFTAGID_GPS_DIFFERENTIAL CONSTRUCT_TAGID(GPS_DIFFERENTIAL, _ID_GPS_DIFFERENTIAL) 1739 #define EXIFTAGTYPE_GPS_DIFFERENTIAL EXIF_SHORT 1740 // Image width 1741 // Use EXIFTAGTYPE_IMAGE_WIDTH as the exif_tag_type (EXIF_LONG) 1742 // Count should be 1 1743 #define _ID_IMAGE_WIDTH 0x0100 1744 #define EXIFTAGID_IMAGE_WIDTH CONSTRUCT_TAGID(IMAGE_WIDTH, _ID_IMAGE_WIDTH) 1745 #define EXIFTAGTYPE_IMAGE_WIDTH EXIF_LONG 1746 // Image height 1747 // Use EXIFTAGTYPE_IMAGE_LENGTH as the exif_tag_type (EXIF_SHORT_OR_LONG) 1748 // Count should be 1 1749 #define _ID_IMAGE_LENGTH 0x0101 1750 #define EXIFTAGID_IMAGE_LENGTH CONSTRUCT_TAGID(IMAGE_LENGTH, _ID_IMAGE_LENGTH) 1751 #define EXIFTAGTYPE_IMAGE_LENGTH EXIF_LONG 1752 // Number of bits per component 1753 // Use EXIFTAGTYPE_BITS_PER_SAMPLE as the exif_tag_type (EXIF_SHORT) 1754 // Count should be 1 1755 #define _ID_BITS_PER_SAMPLE 0x0102 1756 #define EXIFTAGID_BITS_PER_SAMPLE CONSTRUCT_TAGID(BITS_PER_SAMPLE, _ID_BITS_PER_SAMPLE) 1757 #define EXIFTAGTYPE_BITS_PER_SAMPLE EXIF_SHORT 1758 // Compression scheme 1759 // Use EXIFTAGTYPE_COMPRESSION as the exif_tag_type (EXIF_SHORT) 1760 // Count should be 1 1761 #define _ID_COMPRESSION 0x0103 1762 #define EXIFTAGID_COMPRESSION CONSTRUCT_TAGID(COMPRESSION, _ID_COMPRESSION) 1763 #define EXIFTAGTYPE_COMPRESSION EXIF_SHORT 1764 // Pixel composition 1765 // Use EXIFTAGTYPE_PHOTOMETRIC_INTERPRETATION as the exif_tag_type (EXIF_SHORT) 1766 // Count should be 1 1767 #define _ID_PHOTOMETRIC_INTERPRETATION 0x0106 1768 #define EXIFTAGID_PHOTOMETRIC_INTERPRETATION CONSTRUCT_TAGID(PHOTOMETRIC_INTERPRETATION, _ID_PHOTOMETRIC_INTERPRETATION) 1769 #define EXIFTAGTYPE_PHOTOMETRIC_INTERPRETATION EXIF_SHORT 1770 1771 // Thresholding 1772 // Use EXIFTAGTYPE_THRESH_HOLDING as the exif_tag_type (EXIF_SHORT) 1773 // 1774 //1 = No dithering or halftoning 1775 //2 = Ordered dither or halftone 1776 //3 = Randomized dither 1777 #define _ID_THRESH_HOLDING 0x0107 1778 #define EXIFTAGID_THRESH_HOLDING CONSTRUCT_TAGID(THRESH_HOLDING, _ID_THRESH_HOLDING) 1779 #define EXIFTAGTYPE_THRESH_HOLDING EXIF_SHORT 1780 1781 // Cell Width 1782 // Use EXIFTAGTYPE_CELL_WIDTH as the exif_tag_type (EXIF_SHORT) 1783 // 1784 #define _ID_CELL_WIDTH 0x0108 1785 #define EXIFTAGID_CELL_WIDTH CONSTRUCT_TAGID(CELL_WIDTH, _ID_CELL_WIDTH) 1786 #define EXIFTAGTYPE_CELL_WIDTH EXIF_SHORT 1787 // Cell Height 1788 // Use EXIFTAGTYPE_CELL_HEIGHT as the exif_tag_type (EXIF_SHORT) 1789 // Count should be 1 1790 #define _ID_CELL_HEIGHT 0x0109 1791 #define EXIFTAGID_CELL_HEIGHT CONSTRUCT_TAGID(CELL_HEIGHT, _ID_CELL_HEIGHT) 1792 #define EXIFTAGTYPE_CELL_HEIGHT EXIF_SHORT 1793 // Fill Order 1794 // Use EXIFTAGTYPE_FILL_ORDER as the exif_tag_type (EXIF_SHORT) 1795 // 1 = Normal 1796 // 2 = Reversed 1797 #define _ID_FILL_ORDER 0x010A 1798 #define EXIFTAGID_FILL_ORDER CONSTRUCT_TAGID(FILL_ORDER, _ID_FILL_ORDER) 1799 #define EXIFTAGTYPE_FILL_ORDER EXIF_SHORT 1800 1801 // DOCUMENT NAME 1802 // Use EXIFTAGTYPE_DOCUMENT_NAME as the exif_tag_type (EXIF_ASCII) 1803 // 1804 #define _ID_DOCUMENT_NAME 0x010D 1805 #define EXIFTAGID_DOCUMENT_NAME CONSTRUCT_TAGID(DOCUMENT_NAME, _ID_DOCUMENT_NAME) 1806 #define EXIFTAGTYPE_DOCUMENT_NAME EXIF_ASCII 1807 1808 // Image title 1809 // Use EXIFTAGTYPE_IMAGE_DESCRIPTION as the exif_tag_type (EXIF_ASCII) 1810 // Count can be any 1811 #define _ID_IMAGE_DESCRIPTION 0x010e 1812 #define EXIFTAGID_IMAGE_DESCRIPTION CONSTRUCT_TAGID(IMAGE_DESCRIPTION, _ID_IMAGE_DESCRIPTION) 1813 #define EXIFTAGTYPE_IMAGE_DESCRIPTION EXIF_ASCII 1814 // Image input equipment manufacturer 1815 // Use EXIFTAGTYPE_MAKE as the exif_tag_type (EXIF_ASCII) 1816 // Count can be any 1817 #define _ID_MAKE 0x010f 1818 #define EXIFTAGID_MAKE CONSTRUCT_TAGID(MAKE, _ID_MAKE) 1819 #define EXIFTAGTYPE_MAKE EXIF_ASCII 1820 // Image input equipment model 1821 // Use EXIFTAGTYPE_MODEL as the exif_tag_type (EXIF_ASCII) 1822 // Count can be any 1823 #define _ID_MODEL 0x0110 1824 #define EXIFTAGID_MODEL CONSTRUCT_TAGID(MODEL, _ID_MODEL) 1825 #define EXIFTAGTYPE_MODEL EXIF_ASCII 1826 // Image data location 1827 // Use EXIFTAGTYPE_STRIP_OFFSETS as the exif_tag_type (EXIF_LONG) 1828 // Count = StripsPerImage when PlanarConfiguration = 1 1829 // = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 1830 #define _ID_STRIP_OFFSETS 0x0111 1831 #define EXIFTAGID_STRIP_OFFSETS CONSTRUCT_TAGID(STRIP_OFFSETS, _ID_STRIP_OFFSETS) 1832 #define EXIFTAGTYPE_STRIP_OFFSETS EXIF_LONG 1833 // Orientation of image 1834 // Use EXIFTAGTYPE_ORIENTATION as the exif_tag_type (EXIF_SHORT) 1835 // Count should be 1 1836 #define _ID_ORIENTATION 0x0112 1837 #define EXIFTAGID_ORIENTATION CONSTRUCT_TAGID(ORIENTATION, _ID_ORIENTATION) 1838 #define EXIFTAGTYPE_ORIENTATION EXIF_SHORT 1839 // Number of components 1840 // Use EXIFTAGTYPE_SAMPLES_PER_PIXEL as the exif_tag_type (EXIF_SHORT) 1841 // Count should be 1 1842 #define _ID_SAMPLES_PER_PIXEL 0x0115 1843 #define EXIFTAGID_SAMPLES_PER_PIXEL CONSTRUCT_TAGID(SAMPLES_PER_PIXEL, _ID_SAMPLES_PER_PIXEL) 1844 #define EXIFTAGTYPE_SAMPLES_PER_PIXEL EXIF_SHORT 1845 // Number of rows per strip 1846 // Use EXIFTAGTYPE_ROWS_PER_STRIP as the exif_tag_type (EXIF_LONG) 1847 // Count should be 1 1848 #define _ID_ROWS_PER_STRIP 0x0116 1849 #define EXIFTAGID_ROWS_PER_STRIP CONSTRUCT_TAGID(ROWS_PER_STRIP, _ID_ROWS_PER_STRIP) 1850 #define EXIFTAGTYPE_ROWS_PER_STRIP EXIF_LONG 1851 // Bytes per compressed strip 1852 // Use EXIFTAGTYPE_STRIP_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 1853 // Count = StripsPerImage when PlanarConfiguration = 1 1854 // = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 1855 #define _ID_STRIP_BYTE_COUNTS 0x0117 1856 #define EXIFTAGID_STRIP_BYTE_COUNTS CONSTRUCT_TAGID(STRIP_BYTE_COUNTS, _ID_STRIP_BYTE_COUNTS) 1857 #define EXIFTAGTYPE_STRIP_BYTE_COUNTS EXIF_LONG 1858 // MinSampleValue 1859 // Use EXIFTAGTYPE_MIN_SAMPLE_VALUE as the exif_tag_type (EXIF_SHORT) 1860 #define _ID_MIN_SAMPLE_VALUE 0x0118 1861 #define EXIFTAGID_MIN_SAMPLE_VALUE CONSTRUCT_TAGID(MIN_SAMPLE_VALUE, _ID_MIN_SAMPLE_VALUE) 1862 #define EXIFTAGTYPE_MIN_SAMPLE_VALUE EXIF_SHORT 1863 // MaxSampleValue 1864 // Use EXIFTAGTYPE_MAX_SAMPLE_VALUE as the exif_tag_type (EXIF_SHORT) 1865 #define _ID_MAX_SAMPLE_VALUE 0x0119 1866 #define EXIFTAGID_MAX_SAMPLE_VALUE CONSTRUCT_TAGID(MAX_SAMPLE_VALUE, _ID_MAX_SAMPLE_VALUE) 1867 #define EXIFTAGTYPE_MAX_SAMPLE_VALUE EXIF_SHORT 1868 1869 // Image resolution in width direction 1870 // Use EXIFTAGTYPE_X_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 1871 // Count should be 1 1872 #define _ID_X_RESOLUTION 0x011a 1873 #define EXIFTAGID_X_RESOLUTION CONSTRUCT_TAGID(X_RESOLUTION, _ID_X_RESOLUTION) 1874 #define EXIFTAGTYPE_X_RESOLUTION EXIF_RATIONAL 1875 // Image resolution in height direction 1876 // Use EXIFTAGTYPE_Y_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 1877 // Count should be 1 1878 #define _ID_Y_RESOLUTION 0x011b 1879 #define EXIFTAGID_Y_RESOLUTION CONSTRUCT_TAGID(Y_RESOLUTION, _ID_Y_RESOLUTION) 1880 #define EXIFTAGTYPE_Y_RESOLUTION EXIF_RATIONAL 1881 // Image data arrangement 1882 // Use EXIFTAGTYPE_PLANAR_CONFIGURATION as the exif_tag_type (EXIF_SHORT) 1883 // Count should be 1 1884 #define _ID_PLANAR_CONFIGURATION 0x011c 1885 #define EXIFTAGID_PLANAR_CONFIGURATION CONSTRUCT_TAGID(PLANAR_CONFIGURATION, _ID_PLANAR_CONFIGURATION) 1886 #define EXIFTAGTYPE_PLANAR_CONFIGURATION EXIF_SHORT 1887 // PageName 1888 // Use EXIFTAGTYPE_PAGE_NAME as the exif_tag_type (EXIF_ASCII) 1889 // Count should be 1 1890 #define _ID_PAGE_NAME 0x011d 1891 #define EXIFTAGID_PAGE_NAME CONSTRUCT_TAGID(PAGE_NAME, _ID_PAGE_NAME) 1892 #define EXIFTAGTYPE_PAGE_NAME EXIF_ASCII 1893 // XPosition 1894 // Use EXIFTAGTYPE_X_POSITION as the exif_tag_type (EXIF_RATIONAL) 1895 // 1896 #define _ID_X_POSITION 0x011e 1897 #define EXIFTAGID_X_POSITION CONSTRUCT_TAGID(X_POSITION, _ID_X_POSITION) 1898 #define EXIFTAGTYPE_X_POSITION EXIF_RATIONAL 1899 // YPosition 1900 // Use EXIFTAGTYPE_Y_POSITION as the exif_tag_type (EXIF_RATIONAL) 1901 // 1902 #define _ID_Y_POSITION 0x011f 1903 #define EXIFTAGID_Y_POSITION CONSTRUCT_TAGID(Y_POSITION, _ID_Y_POSITION) 1904 #define EXIFTAGTYPE_Y_POSITION EXIF_RATIONAL 1905 1906 // FREE_OFFSET 1907 // Use EXIFTAGTYPE_FREE_OFFSET as the exif_tag_type (EXIF_LONG) 1908 // 1909 #define _ID_FREE_OFFSET 0x0120 1910 #define EXIFTAGID_FREE_OFFSET CONSTRUCT_TAGID(FREE_OFFSET, _ID_FREE_OFFSET) 1911 #define EXIFTAGTYPE_FREE_OFFSET EXIF_LONG 1912 // FREE_BYTE_COUNTS 1913 // Use EXIFTAGTYPE_FREE_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 1914 // 1915 #define _ID_FREE_BYTE_COUNTS 0x0121 1916 #define EXIFTAGID_FREE_BYTE_COUNTS CONSTRUCT_TAGID(FREE_BYTE_COUNTS, _ID_FREE_BYTE_COUNTS) 1917 #define EXIFTAGTYPE_FREE_BYTE_COUNTS EXIF_LONG 1918 1919 // GrayResponseUnit 1920 // Use EXIFTAGTYPE_GRAY_RESPONSE_UNIT as the exif_tag_type (EXIF_SHORT) 1921 // 1922 #define _ID_GRAY_RESPONSE_UNIT 0x0122 1923 #define EXIFTAGID_GRAY_RESPONSE_UNIT CONSTRUCT_TAGID(GRAY_RESPONSE_UNIT, _ID_GRAY_RESPONSE_UNIT) 1924 #define EXIFTAGTYPE_GRAY_RESPONSE_UNIT EXIF_SHORT 1925 // GrayResponseCurve 1926 // Use EXIFTAGTYPE_GRAY_RESPONSE_CURVE as the exif_tag_type (EXIF_SHORT) 1927 // 1928 #define _ID_GRAY_RESPONSE_CURVE 0x0123 1929 #define EXIFTAGID_GRAY_RESPONSE_CURVE CONSTRUCT_TAGID(GRAY_RESPONSE_CURVE , _ID_GRAY_RESPONSE_CURVE ) 1930 #define EXIFTAGTYPE_GRAY_RESPONSE_CURVE EXIF_SHORT 1931 1932 // T4_OPTION 1933 // Use EXIFTAGTYPE_T4_OPTION as the exif_tag_type (EXIF_LONG) 1934 // 1935 #define _ID_T4_OPTION 0x0124 1936 #define EXIFTAGID_T4_OPTION CONSTRUCT_TAGID(T4_OPTION, _ID_T4_OPTION) 1937 #define EXIFTAGTYPE_T4_OPTION EXIF_LONG 1938 // T6_OPTION 1939 // Use EXIFTAGTYPE_T6_OPTION as the exif_tag_type (EXIF_LONG) 1940 // 1941 #define _ID_T6_OPTION 0x0125 1942 #define EXIFTAGID_T6_OPTION CONSTRUCT_TAGID(T6_OPTION, _ID_T6_OPTION) 1943 #define EXIFTAGTYPE_T6_OPTION EXIF_LONG 1944 1945 // Unit of X and Y resolution 1946 // Use EXIFTAGTYPE_RESOLUTION_UNIT as the exif_tag_type (EXIF_SHORT) 1947 // Count should be 1 1948 #define _ID_RESOLUTION_UNIT 0x0128 1949 #define EXIFTAGID_RESOLUTION_UNIT CONSTRUCT_TAGID(RESOLUTION_UNIT, _ID_RESOLUTION_UNIT) 1950 #define EXIFTAGTYPE_RESOLUTION_UNIT EXIF_SHORT 1951 1952 // Page Number 1953 // Use EXIFTAGTYPE_PAGE_NUMBER as the exif_tag_type (EXIF_SHORT) 1954 // Count should be 1 1955 #define _ID_PAGE_NUMBER 0x0129 1956 #define EXIFTAGID_PAGE_NUMBER CONSTRUCT_TAGID(PAGE_NUMBER, _ID_PAGE_NUMBER) 1957 #define EXIFTAGTYPE_PAGE_NUMBER EXIF_SHORT 1958 // Transfer function 1959 // Use EXIFTAGTYPE_TRANSFER_FUNCTION as the exif_tag_type (EXIF_SHORT) 1960 // Count should be 3*256 1961 #define _ID_TRANSFER_FUNCTION 0x012d 1962 #define EXIFTAGID_TRANSFER_FUNCTION CONSTRUCT_TAGID(TRANSFER_FUNCTION, _ID_TRANSFER_FUNCTION) 1963 #define EXIFTAGTYPE_TRANSFER_FUNCTION EXIF_SHORT 1964 // Software used 1965 // Use EXIFTAGTYPE_SOFTWARE as the exif_tag_type (EXIF_ASCII) 1966 // Count can be any 1967 #define _ID_SOFTWARE 0x0131 1968 #define EXIFTAGID_SOFTWARE CONSTRUCT_TAGID(SOFTWARE, _ID_SOFTWARE) 1969 #define EXIFTAGTYPE_SOFTWARE EXIF_ASCII 1970 // File change date and time 1971 // Use EXIFTAGTYPE_DATE_TIME as the exif_tag_type (EXIF_ASCII) 1972 // Count should be 20 1973 #define _ID_DATE_TIME 0x0132 1974 #define EXIFTAGID_DATE_TIME CONSTRUCT_TAGID(DATE_TIME, _ID_DATE_TIME) 1975 #define EXIFTAGTYPE_DATE_TIME EXIF_ASCII 1976 // ARTIST, person who created this image 1977 // Use EXIFTAGTYPE_ARTIST as the exif_tag_type (EXIF_ASCII) 1978 // Count can be any 1979 #define _ID_ARTIST 0x013b 1980 #define EXIFTAGID_ARTIST CONSTRUCT_TAGID(ARTIST, _ID_ARTIST) 1981 #define EXIFTAGTYPE_ARTIST EXIF_ASCII 1982 // Host Computer Name 1983 // Use EXIFTAGTYPE_HOST_COMPUTER as the exif_tag_type (EXIF_ASCII) 1984 // Count can be any 1985 #define _ID_HOST_COMPUTER 0x013c 1986 #define EXIFTAGID_HOST_COMPUTER CONSTRUCT_TAGID(HOST_COMPUTER , _ID_HOST_COMPUTER ) 1987 #define EXIFTAGTYPE_HOST_COMPUTER EXIF_ASCII 1988 // Predictor 1989 // Use EXIFTAGTYPE_PREDICTOR as the exif_tag_type (EXIF_SHORT) 1990 // Count can be any 1991 #define _ID_PREDICTOR 0x013d 1992 #define EXIFTAGID_PREDICTOR CONSTRUCT_TAGID(PREDICTOR , _ID_PREDICTOR ) 1993 #define EXIFTAGTYPE_PREDICTOR EXIF_SHORT 1994 // White point chromaticity 1995 // Use EXIFTAGTYPE_WHITE_POINT as the exif_tag_type (EXIF_RATIONAL) 1996 // Count should be 2 1997 #define _ID_WHITE_POINT 0x013e 1998 #define EXIFTAGID_WHITE_POINT CONSTRUCT_TAGID(WHITE_POINT, _ID_WHITE_POINT) 1999 #define EXIFTAGTYPE_WHITE_POINT EXIF_RATIONAL 2000 // Chromaticities of primaries 2001 // Use EXIFTAGTYPE_PRIMARY_CHROMATICITIES as the exif_tag_type (EXIF_RATIONAL) 2002 // Count should be 6 2003 #define _ID_PRIMARY_CHROMATICITIES 0x013f 2004 #define EXIFTAGID_PRIMARY_CHROMATICITIES CONSTRUCT_TAGID(PRIMARY_CHROMATICITIES, _ID_PRIMARY_CHROMATICITIES) 2005 #define EXIFTAGTYPE_PRIMARY_CHROMATICITIES EXIF_RATIONAL 2006 2007 // COLOR_MAP 2008 // Use EXIFTAGTYPE_COLOR_MAP as the exif_tag_type (EXIF_SHORT) 2009 // Count should be 6 2010 #define _ID_COLOR_MAP 0x0140 2011 #define EXIFTAGID_COLOR_MAP CONSTRUCT_TAGID(COLOR_MAP, _ID_COLOR_MAP) 2012 #define EXIFTAGTYPE_COLOR_MAP EXIF_SHORT 2013 // HALFTONE_HINTS 2014 // Use EXIFTAGTYPE_HALFTONE_HINTS as the exif_tag_type (EXIF_SHORT) 2015 // Count should be 6 2016 #define _ID_HALFTONE_HINTS 0x0141 2017 #define EXIFTAGID_HALFTONE_HINTS CONSTRUCT_TAGID(HALFTONE_HINTS, _ID_HALFTONE_HINTS) 2018 #define EXIFTAGTYPE_HALFTONE_HINTS EXIF_SHORT 2019 2020 // TILE_WIDTH 2021 // Use EXIFTAGTYPE_TILE_WIDTH as the exif_tag_type (EXIF_LONG) 2022 // Count should be 6 2023 #define _ID_TILE_WIDTH 0x0142 2024 #define EXIFTAGID_TILE_WIDTH CONSTRUCT_TAGID(TILE_WIDTH, _ID_TILE_WIDTH) 2025 #define EXIFTAGTYPE_TILE_WIDTH EXIF_LONG 2026 // TILE_LENGTH 2027 // Use EXIFTAGTYPE_TILE_LENGTH as the exif_tag_type (EXIF_LONG) 2028 // Count should be 6 2029 #define _ID_TILE_LENGTH 0x0143 2030 #define EXIFTAGID_TILE_LENGTH CONSTRUCT_TAGID(TILE_LENGTH , _ID_TILE_LENGTH ) 2031 #define EXIFTAGTYPE_TILE_LENGTH EXIF_LONG 2032 // TILE_OFFSET 2033 // Use EXIFTAGTYPE_TILE_OFFSET as the exif_tag_type (EXIF_LONG) 2034 // 2035 #define _ID_TILE_OFFSET 0x0144 2036 #define EXIFTAGID_TILE_OFFSET CONSTRUCT_TAGID(TILE_OFFSET , _ID_TILE_OFFSET ) 2037 #define EXIFTAGTYPE_TILE_OFFSET EXIF_LONG 2038 // tile Byte Counts 2039 // Use EXIFTAGTYPE_TILE_OFFSET as the exif_tag_type (EXIF_LONG) 2040 // 2041 #define _ID_TILE_BYTE_COUNTS 0x0145 2042 #define EXIFTAGID_TILE_BYTE_COUNTS CONSTRUCT_TAGID(TILE_BYTE_COUNTS , _ID_TILE_BYTE_COUNTS ) 2043 #define EXIFTAGTYPE_TILE_BYTE_COUNTS EXIF_LONG 2044 2045 // INK_SET 2046 // Use EXIFTAGTYPE_TILE_LENGTH as the exif_tag_type (EXIF_SHORT) 2047 // Count should be 6 2048 #define _ID_INK_SET 0x014c 2049 #define EXIFTAGID_INK_SET CONSTRUCT_TAGID(INK_SET , _ID_INK_SET ) 2050 #define EXIFTAGTYPE_INK_SET EXIF_SHORT 2051 // INK_NAMES 2052 // Use EXIFTAGTYPE_INK_NAMES as the exif_tag_type (EXIF_ASCII) 2053 // Count should be 6 2054 #define _ID_INK_NAMES 0x014D 2055 #define EXIFTAGID_INK_NAMES CONSTRUCT_TAGID(INK_NAMES , _ID_INK_NAMES) 2056 #define EXIFTAGTYPE_INK_NAMES EXIF_ASCII 2057 // NUMBER_OF_INKS 2058 // Use EXIFTAGTYPE_NUMBER_OF_INKS as the exif_tag_type (EXIF_SHORT) 2059 // Count should be 6 2060 #define _ID_NUMBER_OF_INKS 0x014e 2061 #define EXIFTAGID_NUMBER_OF_INKS CONSTRUCT_TAGID(NUMBER_OF_INKS , _ID_NUMBER_OF_INKS ) 2062 #define EXIFTAGTYPE_NUMBER_OF_INKS EXIF_SHORT 2063 2064 // DOT_RANGE 2065 // Use EXIFTAGTYPE_DOT_RANGE as the exif_tag_type (EXIF_ASCII) 2066 // Count should be 6 2067 #define _ID_DOT_RANGE 0x0150 2068 #define EXIFTAGID_DOT_RANGE CONSTRUCT_TAGID(DOT_RANGE , _ID_DOT_RANGE ) 2069 #define EXIFTAGTYPE_DOT_RANGE EXIF_ASCII 2070 2071 // TARGET_PRINTER 2072 // Use EXIFTAGTYPE_TARGET_PRINTER as the exif_tag_type (EXIF_ASCII) 2073 // Count should be 6 2074 #define _ID_TARGET_PRINTER 0x0151 2075 #define EXIFTAGID_TARGET_PRINTER CONSTRUCT_TAGID(TARGET_PRINTER , _ID_TARGET_PRINTER) 2076 #define EXIFTAGTYPE_TARGET_PRINTER EXIF_ASCII 2077 // EXTRA_SAMPLES 2078 // Use EXIFTAGTYPE_EXTRA_SAMPLES as the exif_tag_type (EXIF_SHORT) 2079 // Count should be 6 2080 #define _ID_EXTRA_SAMPLES 0x0152 2081 #define EXIFTAGID_EXTRA_SAMPLES CONSTRUCT_TAGID(EXTRA_SAMPLES , _ID_EXTRA_SAMPLES ) 2082 #define EXIFTAGTYPE_EXTRA_SAMPLES EXIF_SHORT 2083 2084 // SAMPLE_FORMAT 2085 // Use EXIFTAGTYPE_SAMPLE_FORMAT as the exif_tag_type (EXIF_SHORT) 2086 // Count should be 6 2087 #define _ID_SAMPLE_FORMAT 0x0153 2088 #define EXIFTAGID_SAMPLE_FORMAT CONSTRUCT_TAGID(SAMPLE_FORMAT , _ID_SAMPLE_FORMAT ) 2089 #define EXIFTAGTYPE_SAMPLE_FORMAT EXIF_SHORT 2090 2091 // Table of values that extends the range of the transfer function. 2092 // Use EXIFTAGTYPE_TRANSFER_RANGE as the exif_tag_type (EXIF_SHORT) 2093 // Count should be 6 2094 #define _ID_TRANSFER_RANGE 0x0156 2095 #define EXIFTAGID_TRANSFER_RANGE CONSTRUCT_TAGID(TRANSFER_RANGE , _ID_TRANSFER_RANGE ) 2096 #define EXIFTAGTYPE_TRANSFER_RANGE EXIF_SHORT 2097 2098 // JPEG compression process. 2099 // Use EXIFTAGTYPE_JPEG_PROC as the exif_tag_type (EXIF_SHORT) 2100 // 2101 #define _ID_JPEG_PROC 0x0200 2102 #define EXIFTAGID_JPEG_PROC CONSTRUCT_TAGID(JPEG_PROC , _ID_JPEG_PROC ) 2103 #define EXIFTAGTYPE_JPEG_PROC EXIF_SHORT 2104 2105 2106 // Offset to JPEG SOI 2107 // Use EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT as the exif_tag_type (EXIF_LONG) 2108 // Count is undefined 2109 #define _ID_JPEG_INTERCHANGE_FORMAT 0x0201 2110 #define EXIFTAGID_JPEG_INTERCHANGE_FORMAT CONSTRUCT_TAGID(JPEG_INTERCHANGE_FORMAT, _ID_JPEG_INTERCHANGE_FORMAT) 2111 #define EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT EXIF_LONG 2112 // Bytes of JPEG data 2113 // Use EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT_LENGTH as the exif_tag_type (EXIF_LONG) 2114 // Count is undefined 2115 #define _ID_JPEG_INTERCHANGE_FORMAT_LENGTH 0x0202 2116 #define EXIFTAGID_JPEG_INTERCHANGE_FORMAT_LENGTH CONSTRUCT_TAGID(JPEG_INTERCHANGE_FORMAT_LENGTH, _ID_JPEG_INTERCHANGE_FORMAT_LENGTH) 2117 #define EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT_LENGTH EXIF_LONG 2118 2119 // Length of the restart interval. 2120 // Use EXIFTAGTYPE_JPEG_RESTART_INTERVAL as the exif_tag_type (EXIF_SHORT) 2121 // Count is undefined 2122 #define _ID_JPEG_RESTART_INTERVAL 0x0203 2123 #define EXIFTAGID_JPEG_RESTART_INTERVAL CONSTRUCT_TAGID(JPEG_RESTART_INTERVAL, _ID_JPEG_RESTART_INTERVAL) 2124 #define EXIFTAGTYPE_JPEG_RESTART_INTERVAL EXIF_SHORT 2125 2126 // JPEGLosslessPredictors 2127 // Use EXIFTAGTYPE_JPEG_LOSSLESS_PREDICTORS as the exif_tag_type (EXIF_SHORT) 2128 // Count is undefined 2129 #define _ID_JPEG_LOSSLESS_PREDICTORS 0x0205 2130 #define EXIFTAGID_JPEG_LOSSLESS_PREDICTORS CONSTRUCT_TAGID(JPEG_LOSSLESS_PREDICTORS, _ID_JPEG_LOSSLESS_PREDICTORS) 2131 #define EXIFTAGTYPE_JPEG_LOSSLESS_PREDICTORS EXIF_SHORT 2132 2133 // JPEGPointTransforms 2134 // Use EXIFTAGTYPE_JPEG_POINT_TRANSFORMS as the exif_tag_type (EXIF_SHORT) 2135 // Count is undefined 2136 #define _ID_JPEG_POINT_TRANSFORMS 0x0206 2137 #define EXIFTAGID_JPEG_POINT_TRANSFORMS CONSTRUCT_TAGID(JPEG_POINT_TRANSFORMS, _ID_JPEG_POINT_TRANSFORMS) 2138 #define EXIFTAGTYPE_JPEG_POINT_TRANSFORMS EXIF_SHORT 2139 2140 // JPEG_Q_TABLES 2141 // Use EXIFTAGTYPE_JPEG_Q_TABLES as the exif_tag_type (EXIF_LONG) 2142 // Count is undefined 2143 #define _ID_JPEG_Q_TABLES 0x0207 2144 #define EXIFTAGID_JPEG_Q_TABLES CONSTRUCT_TAGID(JPEG_Q_TABLES, _ID_JPEG_Q_TABLES) 2145 #define EXIFTAGTYPE_JPEG_Q_TABLES EXIF_LONG 2146 // JPEG_DC_TABLES 2147 // Use EXIFTAGTYPE_JPEG_DC_TABLES as the exif_tag_type (EXIF_LONG) 2148 // Count is undefined 2149 #define _ID_JPEG_DC_TABLES 0x0208 2150 #define EXIFTAGID_JPEG_DC_TABLES CONSTRUCT_TAGID(JPEG_DC_TABLES, _ID_JPEG_DC_TABLES) 2151 #define EXIFTAGTYPE_JPEG_DC_TABLES EXIF_LONG 2152 // JPEG_AC_TABLES 2153 // Use EXIFTAGTYPE_JPEG_AC_TABLES as the exif_tag_type (EXIF_LONG) 2154 // Count is undefined 2155 #define _ID_JPEG_AC_TABLES 0x0209 2156 #define EXIFTAGID_JPEG_AC_TABLES CONSTRUCT_TAGID(JPEG_AC_TABLES, _ID_JPEG_AC_TABLES) 2157 #define EXIFTAGTYPE_JPEG_AC_TABLES EXIF_LONG 2158 2159 // Color space transformation matrix coefficients 2160 // Use EXIFTAGTYPE_YCBCR_COEFFICIENTS as the exif_tag_type (EXIF_RATIONAL) 2161 // Count should be 3 2162 #define _ID_YCBCR_COEFFICIENTS 0x0211 2163 #define EXIFTAGID_YCBCR_COEFFICIENTS CONSTRUCT_TAGID(YCBCR_COEFFICIENTS, _ID_YCBCR_COEFFICIENTS) 2164 #define EXIFTAGTYPE_YCBCR_COEFFICIENTS EXIF_RATIONAL 2165 // Subsampling ratio of Y to C 2166 // Use EXIFTAGTYPE_YCBCR_SUB_SAMPLING as the exif_tag_type (EXIF_SHORT) 2167 // Count should be 2 2168 #define _ID_YCBCR_SUB_SAMPLING 0x0212 2169 #define EXIFTAGID_YCBCR_SUB_SAMPLING CONSTRUCT_TAGID(YCBCR_SUB_SAMPLING, _ID_YCBCR_SUB_SAMPLING) 2170 #define EXIFTAGTYPE_YCBCR_SUB_SAMPLING EXIF_SHORT 2171 // Y and C positioning 2172 // Use EXIFTAGTYPE_YCBCR_POSITIONING as the exif_tag_type (EXIF_SHORT) 2173 // Count should be 1 2174 #define _ID_YCBCR_POSITIONING 0x0213 2175 #define EXIFTAGID_YCBCR_POSITIONING CONSTRUCT_TAGID(YCBCR_POSITIONING, _ID_YCBCR_POSITIONING) 2176 #define EXIFTAGTYPE_YCBCR_POSITIONING EXIF_SHORT 2177 // Pair of black and white reference values 2178 // Use EXIFTAGTYPE_REFERENCE_BLACK_WHITE as the exif_tag_type (EXIF_RATIONAL) 2179 // Count should be 6 2180 #define _ID_REFERENCE_BLACK_WHITE 0x0214 2181 #define EXIFTAGID_REFERENCE_BLACK_WHITE CONSTRUCT_TAGID(REFERENCE_BLACK_WHITE, _ID_REFERENCE_BLACK_WHITE) 2182 #define EXIFTAGTYPE_REFERENCE_BLACK_WHITE EXIF_RATIONAL 2183 // GAMMA 2184 // Use EXIFTAGTYPE_GAMMA as the exif_tag_type (EXIF_RATIONAL) 2185 // Count should be 6 2186 #define _ID_GAMMA 0x0301 2187 #define EXIFTAGID_GAMMA CONSTRUCT_TAGID(GAMMA, _ID_GAMMA) 2188 #define EXIFTAGTYPE_GAMMA EXIF_RATIONAL 2189 // Null-terminated character string that identifies an ICC profile. 2190 // Use EXIFTAGTYPE_ICC_PROFILE_DESCRIPTOR as the exif_tag_type (EXIF_ASCII) 2191 // Count should be 6 2192 #define _ID_ICC_PROFILE_DESCRIPTOR 0x0302 2193 #define EXIFTAGID_ICC_PROFILE_DESCRIPTOR CONSTRUCT_TAGID(ICC_PROFILE_DESCRIPTOR, _ID_ICC_PROFILE_DESCRIPTOR) 2194 #define EXIFTAGTYPE_ICC_PROFILE_DESCRIPTOR EXIF_ASCII 2195 // SRGB_RENDERING_INTENT 2196 // Use EXIFTAGTYPE_SRGB_RENDERING_INTENT as the exif_tag_type (EXIF_BYTE) 2197 // Count should be 6 2198 #define _ID_SRGB_RENDERING_INTENT 0x0303 2199 #define EXIFTAGID_SRGB_RENDERING_INTENT CONSTRUCT_TAGID(SRGB_RENDERING_INTENT, _ID_SRGB_RENDERING_INTENT) 2200 #define EXIFTAGTYPE_SRGB_RENDERING_INTENT EXIF_BYTE 2201 2202 // Null-terminated character string that specifies the title of the image. 2203 // Use EXIFTAGTYPE_IMAGE_TITLE as the exif_tag_type (EXIF_ASCII ) 2204 // 2205 #define _ID_IMAGE_TITLE 0x0320 2206 #define EXIFTAGID_IMAGE_TITLE CONSTRUCT_TAGID(IMAGE_TITLE, _ID_IMAGE_TITLE) 2207 #define EXIFTAGTYPE_IMAGE_TITLE EXIF_ASCII 2208 2209 // Copyright holder 2210 // Use EXIFTAGTYPE_COPYRIGHT as the exif_tag_type (EXIF_ASCII) 2211 // Count can be any 2212 #define _ID_COPYRIGHT 0x8298 2213 #define EXIFTAGID_COPYRIGHT CONSTRUCT_TAGID(COPYRIGHT, _ID_COPYRIGHT) 2214 #define EXIFTAGTYPE_COPYRIGHT EXIF_ASCII 2215 // Old Subfile Type 2216 // Use EXIFTAGTYPE_NEW_SUBFILE_TYPE as the exif_tag_type (EXIF_SHORT) 2217 // Count can be any 2218 #define _ID_NEW_SUBFILE_TYPE 0x00fe 2219 #define EXIFTAGID_NEW_SUBFILE_TYPE CONSTRUCT_TAGID(NEW_SUBFILE_TYPE, _ID_NEW_SUBFILE_TYPE) 2220 #define EXIFTAGTYPE_NEW_SUBFILE_TYPE EXIF_SHORT 2221 2222 // New Subfile Type 2223 // Use EXIFTAGTYPE_NEW_SUBFILE_TYPE as the exif_tag_type (EXIF_LONG) 2224 // Count can be any 2225 #define _ID_SUBFILE_TYPE 0x00ff 2226 #define EXIFTAGID_SUBFILE_TYPE CONSTRUCT_TAGID(SUBFILE_TYPE, _ID_SUBFILE_TYPE) 2227 #define EXIFTAGTYPE_SUBFILE_TYPE EXIF_LONG 2228 2229 // Image width (of thumbnail) 2230 // Use EXIFTAGTYPE_TN_IMAGE_WIDTH as the exif_tag_type (EXIF_LONG) 2231 // Count should be 1 2232 #define _ID_TN_IMAGE_WIDTH 0x0100 2233 #define EXIFTAGID_TN_IMAGE_WIDTH CONSTRUCT_TAGID(TN_IMAGE_WIDTH, _ID_TN_IMAGE_WIDTH) 2234 #define EXIFTAGTYPE_TN_IMAGE_WIDTH EXIF_LONG 2235 // Image height (of thumbnail) 2236 // Use EXIFTAGTYPE_TN_IMAGE_LENGTH as the exif_tag_type (EXIF_SHORT_OR_LONG) 2237 // Count should be 1 2238 #define _ID_TN_IMAGE_LENGTH 0x0101 2239 #define EXIFTAGID_TN_IMAGE_LENGTH CONSTRUCT_TAGID(TN_IMAGE_LENGTH, _ID_TN_IMAGE_LENGTH) 2240 #define EXIFTAGTYPE_TN_IMAGE_LENGTH EXIF_LONG 2241 // Number of bits per component (of thumbnail) 2242 // Use EXIFTAGTYPE_TN_BITS_PER_SAMPLE as the exif_tag_type (EXIF_SHORT) 2243 // Count should be 1 2244 #define _ID_TN_BITS_PER_SAMPLE 0x0102 2245 #define EXIFTAGID_TN_BITS_PER_SAMPLE CONSTRUCT_TAGID(TN_BITS_PER_SAMPLE, _ID_TN_BITS_PER_SAMPLE) 2246 #define EXIFTAGTYPE_TN_BITS_PER_SAMPLE EXIF_SHORT 2247 // Compression scheme (of thumbnail) 2248 // Use EXIFTAGTYPE_TN_COMPRESSION as the exif_tag_type (EXIF_SHORT) 2249 // Count should be 1 2250 #define _ID_TN_COMPRESSION 0x0103 2251 #define EXIFTAGID_TN_COMPRESSION CONSTRUCT_TAGID(TN_COMPRESSION, _ID_TN_COMPRESSION) 2252 #define EXIFTAGTYPE_TN_COMPRESSION EXIF_SHORT 2253 // Pixel composition (of thumbnail) 2254 // Use EXIFTAGTYPE_TN_PHOTOMETRIC_INTERPRETATION as the exif_tag_type (EXIF_SHORT) 2255 // Count should be 1 2256 #define _ID_TN_PHOTOMETRIC_INTERPRETATION 0x0106 2257 #define EXIFTAGID_TN_PHOTOMETRIC_INTERPRETATION CONSTRUCT_TAGID(TN_PHOTOMETRIC_INTERPRETATION, _ID_TN_PHOTOMETRIC_INTERPRETATION) 2258 #define EXIFTAGTYPE_TN_PHOTOMETRIC_INTERPRETATION EXIF_SHORT 2259 // Image title (of thumbnail) 2260 // Use EXIFTAGTYPE_TN_IMAGE_DESCRIPTION as the exif_tag_type (EXIF_ASCII) 2261 // Count can be any 2262 #define _ID_TN_IMAGE_DESCRIPTION 0x010e 2263 #define EXIFTAGID_TN_IMAGE_DESCRIPTION CONSTRUCT_TAGID(TN_IMAGE_DESCRIPTION, _ID_TN_IMAGE_DESCRIPTION) 2264 #define EXIFTAGTYPE_TN_IMAGE_DESCRIPTION EXIF_ASCII 2265 // Image input equipment manufacturer (of thumbnail) 2266 // Use EXIFTAGTYPE_TN_MAKE as the exif_tag_type (EXIF_ASCII) 2267 // Count can be any 2268 #define _ID_TN_MAKE 0x010f 2269 #define EXIFTAGID_TN_MAKE CONSTRUCT_TAGID(TN_MAKE, _ID_TN_MAKE) 2270 #define EXIFTAGTYPE_TN_MAKE EXIF_ASCII 2271 // Image input equipment model (of thumbnail) 2272 // Use EXIFTAGTYPE_TN_MODEL as the exif_tag_type (EXIF_ASCII) 2273 // Count can be any 2274 #define _ID_TN_MODEL 0x0110 2275 #define EXIFTAGID_TN_MODEL CONSTRUCT_TAGID(TN_MODEL, _ID_TN_MODEL) 2276 #define EXIFTAGTYPE_TN_MODEL EXIF_ASCII 2277 // Image data location (of thumbnail) 2278 // Use EXIFTAGTYPE_TN_STRIP_OFFSETS as the exif_tag_type (EXIF_LONG) 2279 // Count = StripsPerImage when PlanarConfiguration = 1 2280 // = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 2281 #define _ID_TN_STRIP_OFFSETS 0x0111 2282 #define EXIFTAGID_TN_STRIP_OFFSETS CONSTRUCT_TAGID(STRIP_TN_OFFSETS, _ID_TN_STRIP_OFFSETS) 2283 #define EXIFTAGTYPE_TN_STRIP_OFFSETS EXIF_LONG 2284 // Orientation of image (of thumbnail) 2285 // Use EXIFTAGTYPE_TN_ORIENTATION as the exif_tag_type (EXIF_SHORT) 2286 // Count should be 1 2287 #define _ID_TN_ORIENTATION 0x0112 2288 #define EXIFTAGID_TN_ORIENTATION CONSTRUCT_TAGID(TN_ORIENTATION, _ID_TN_ORIENTATION) 2289 #define EXIFTAGTYPE_TN_ORIENTATION EXIF_SHORT 2290 // Number of components (of thumbnail) 2291 // Use EXIFTAGTYPE_TN_SAMPLES_PER_PIXEL as the exif_tag_type (EXIF_SHORT) 2292 // Count should be 1 2293 #define _ID_TN_SAMPLES_PER_PIXEL 0x0115 2294 #define EXIFTAGID_TN_SAMPLES_PER_PIXEL CONSTRUCT_TAGID(TN_SAMPLES_PER_PIXEL, _ID_TN_SAMPLES_PER_PIXEL) 2295 #define EXIFTAGTYPE_TN_SAMPLES_PER_PIXEL EXIF_SHORT 2296 // Number of rows per strip (of thumbnail) 2297 // Use EXIFTAGTYPE_TN_ROWS_PER_STRIP as the exif_tag_type (EXIF_LONG) 2298 // Count should be 1 2299 #define _ID_TN_ROWS_PER_STRIP 0x0116 2300 #define EXIFTAGID_TN_ROWS_PER_STRIP CONSTRUCT_TAGID(TN_ROWS_PER_STRIP, _ID_TN_ROWS_PER_STRIP) 2301 #define EXIFTAGTYPE_TN_ROWS_PER_STRIP EXIF_LONG 2302 // Bytes per compressed strip (of thumbnail) 2303 // Use EXIFTAGTYPE_TN_STRIP_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 2304 // Count = StripsPerImage when PlanarConfiguration = 1 2305 // = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 2306 #define _ID_TN_STRIP_BYTE_COUNTS 0x0117 2307 #define EXIFTAGID_TN_STRIP_BYTE_COUNTS CONSTRUCT_TAGID(TN_STRIP_BYTE_COUNTS, _ID_TN_STRIP_BYTE_COUNTS) 2308 #define EXIFTAGTYPE_TN_STRIP_BYTE_COUNTS EXIF_LONG 2309 // Image resolution in width direction (of thumbnail) 2310 // Use EXIFTAGTYPE_TN_X_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 2311 // Count should be 1 2312 #define _ID_TN_X_RESOLUTION 0x011a 2313 #define EXIFTAGID_TN_X_RESOLUTION CONSTRUCT_TAGID(TN_X_RESOLUTION, _ID_TN_X_RESOLUTION) 2314 #define EXIFTAGTYPE_TN_X_RESOLUTION EXIF_RATIONAL 2315 // Image resolution in height direction (of thumbnail) 2316 // Use EXIFTAGTYPE_TN_Y_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 2317 // Count should be 1 2318 #define _ID_TN_Y_RESOLUTION 0x011b 2319 #define EXIFTAGID_TN_Y_RESOLUTION CONSTRUCT_TAGID(TN_Y_RESOLUTION, _ID_TN_Y_RESOLUTION) 2320 #define EXIFTAGTYPE_TN_Y_RESOLUTION EXIF_RATIONAL 2321 // Image data arrangement (of thumbnail) 2322 // Use EXIFTAGTYPE_TN_PLANAR_CONFIGURATION as the exif_tag_type (EXIF_SHORT) 2323 // Count should be 1 2324 #define _ID_TN_PLANAR_CONFIGURATION 0x011c 2325 #define EXIFTAGID_TN_PLANAR_CONFIGURATION CONSTRUCT_TAGID(TN_PLANAR_CONFIGURATION, _ID_TN_PLANAR_CONFIGURATION) 2326 #define EXIFTAGTYPE_TN_PLANAR_CONFIGURATION EXIF_SHORT 2327 // Unit of X and Y resolution (of thumbnail) 2328 // Use EXIFTAGTYPE_TN_RESOLUTION_UNIT as the exif_tag_type (EXIF_SHORT) 2329 // Count should be 1 2330 #define _ID_TN_RESOLUTION_UNIT 0x128 2331 #define EXIFTAGID_TN_RESOLUTION_UNIT CONSTRUCT_TAGID(TN_RESOLUTION_UNIT, _ID_TN_RESOLUTION_UNIT) 2332 #define EXIFTAGTYPE_TN_RESOLUTION_UNIT EXIF_SHORT 2333 // Transfer function (of thumbnail) 2334 // Use EXIFTAGTYPE_TN_TRANSFER_FUNCTION as the exif_tag_type (EXIF_SHORT) 2335 // Count should be 3*256 2336 #define _ID_TN_TRANSFER_FUNCTION 0x012d 2337 #define EXIFTAGID_TN_TRANSFER_FUNCTION CONSTRUCT_TAGID(TN_TRANSFER_FUNCTION, _ID_TN_TRANSFER_FUNCTION) 2338 #define EXIFTAGTYPE_TN_TRANSFER_FUNCTION EXIF_SHORT 2339 // Software used (of thumbnail) 2340 // Use EXIFTAGTYPE_TN_SOFTWARE as the exif_tag_type (EXIF_ASCII) 2341 // Count can be any 2342 #define _ID_TN_SOFTWARE 0x0131 2343 #define EXIFTAGID_TN_SOFTWARE CONSTRUCT_TAGID(TN_SOFTWARE, _ID_TN_SOFTWARE) 2344 #define EXIFTAGTYPE_TN_SOFTWARE EXIF_ASCII 2345 // File change date and time (of thumbnail) 2346 // Use EXIFTAGTYPE_TN_DATE_TIME as the exif_tag_type (EXIF_ASCII) 2347 // Count should be 20 2348 #define _ID_TN_DATE_TIME 0x0132 2349 #define EXIFTAGID_TN_DATE_TIME CONSTRUCT_TAGID(TN_DATE_TIME, _ID_TN_DATE_TIME) 2350 #define EXIFTAGTYPE_TN_DATE_TIME EXIF_ASCII 2351 // ARTIST, person who created this image (of thumbnail) 2352 // Use EXIFTAGTYPE_TN_ARTIST as the exif_tag_type (EXIF_ASCII) 2353 // Count can be any 2354 #define _ID_TN_ARTIST 0x013b 2355 #define EXIFTAGID_TN_ARTIST CONSTRUCT_TAGID(TN_ARTIST, _ID_TN_ARTIST) 2356 #define EXIFTAGTYPE_TN_ARTIST EXIF_ASCII 2357 // White point chromaticity (of thumbnail) 2358 // Use EXIFTAGTYPE_TN_WHITE_POINT as the exif_tag_type (EXIF_RATIONAL) 2359 // Count should be 2 2360 #define _ID_TN_WHITE_POINT 0x013e 2361 #define EXIFTAGID_TN_WHITE_POINT CONSTRUCT_TAGID(TN_WHITE_POINT, _ID_TN_WHITE_POINT) 2362 #define EXIFTAGTYPE_TN_WHITE_POINT EXIF_RATIONAL 2363 // Chromaticities of primaries (of thumbnail) 2364 // Use EXIFTAGTYPE_TN_PRIMARY_CHROMATICITIES as the exif_tag_type (EXIF_RATIONAL) 2365 // Count should be 6 2366 #define _ID_TN_PRIMARY_CHROMATICITIES 0x013f 2367 #define EXIFTAGID_TN_PRIMARY_CHROMATICITIES CONSTRUCT_TAGID(TN_PRIMARY_CHROMATICITIES, _ID_TN_PRIMARY_CHROMATICITIES) 2368 #define EXIFTAGTYPE_TN_PRIMARY_CHROMATICITIES EXIF_RATIONAL 2369 // Offset to JPEG SOI (of thumbnail) 2370 // Use EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT as the exif_tag_type (EXIF_LONG) 2371 // Count is undefined 2372 #define _ID_TN_JPEGINTERCHANGE_FORMAT 0x0201 2373 #define EXIFTAGID_TN_JPEGINTERCHANGE_FORMAT CONSTRUCT_TAGID(TN_JPEGINTERCHANGE_FORMAT, _ID_TN_JPEGINTERCHANGE_FORMAT) 2374 #define EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT EXIF_LONG 2375 // Bytes of JPEG data (of thumbnail) 2376 // Use EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT_L as the exif_tag_type (EXIF_LONG) 2377 // Count is undefined 2378 #define _ID_TN_JPEGINTERCHANGE_FORMAT_L 0x0202 2379 #define EXIFTAGID_TN_JPEGINTERCHANGE_FORMAT_L CONSTRUCT_TAGID(TN_JPEGINTERCHANGE_FORMAT_L, _ID_TN_JPEGINTERCHANGE_FORMAT_L) 2380 #define EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT_L EXIF_LONG 2381 // Color space transformation matrix coefficients (of thumbnail) 2382 // Use EXIFTAGTYPE_TN_YCBCR_COEFFICIENTS as the exif_tag_type (EXIF_RATIONAL) 2383 // Count should be 3 2384 #define _ID_TN_YCBCR_COEFFICIENTS 0x0211 2385 #define EXIFTAGID_TN_YCBCR_COEFFICIENTS CONSTRUCT_TAGID(TN_YCBCR_COEFFICIENTS, _ID_TN_YCBCR_COEFFICIENTS) 2386 #define EXIFTAGTYPE_TN_YCBCR_COEFFICIENTS EXIF_RATIONAL 2387 // Subsampling ratio of Y to C (of thumbnail) 2388 // Use EXIFTAGTYPE_TN_YCBCR_SUB_SAMPLING as the exif_tag_type (EXIF_SHORT) 2389 // Count should be 2 2390 #define _ID_TN_YCBCR_SUB_SAMPLING 0x0212 2391 #define EXIFTAGID_TN_YCBCR_SUB_SAMPLING CONSTRUCT_TAGID(TN_YCBCR_SUB_SAMPLING, _ID_TN_YCBCR_SUB_SAMPLING) 2392 #define EXIFTAGTYPE_TN_YCBCR_SUB_SAMPLING EXIF_SHORT 2393 // Y and C positioning (of thumbnail) 2394 // Use EXIFTAGTYPE_TN_YCBCR_POSITIONING as the exif_tag_type (EXIF_SHORT) 2395 // Count should be 1 2396 #define _ID_TN_YCBCR_POSITIONING 0x0213 2397 #define EXIFTAGID_TN_YCBCR_POSITIONING CONSTRUCT_TAGID(TN_YCBCR_POSITIONING, _ID_TN_YCBCR_POSITIONING) 2398 #define EXIFTAGTYPE_TN_YCBCR_POSITIONING EXIF_SHORT 2399 // Pair of black and white reference values (of thumbnail) 2400 // Use EXIFTAGTYPE_TN_REFERENCE_BLACK_WHITE as the exif_tag_type (EXIF_RATIONAL) 2401 // Count should be 6 2402 #define _ID_TN_REFERENCE_BLACK_WHITE 0x0214 2403 #define EXIFTAGID_TN_REFERENCE_BLACK_WHITE CONSTRUCT_TAGID(TN_REFERENCE_BLACK_WHITE, _ID_TN_REFERENCE_BLACK_WHITE) 2404 #define EXIFTAGTYPE_TN_REFERENCE_BLACK_WHITE EXIF_RATIONAL 2405 // Copyright holder (of thumbnail) 2406 // Use EXIFTAGTYPE_TN_COPYRIGHT as the exif_tag_type (EXIF_ASCII) 2407 // Count can be any 2408 #define _ID_TN_COPYRIGHT 0x8298 2409 #define EXIFTAGID_TN_COPYRIGHT CONSTRUCT_TAGID(TN_COPYRIGHT, _ID_TN_COPYRIGHT) 2410 #define EXIFTAGTYPE_TN_COPYRIGHT EXIF_ASCII 2411 // Exposure time 2412 // Use EXIFTAGTYPE_EXPOSURE_TIME as the exif_tag_type (EXIF_RATIONAL) 2413 // Count should be 1 2414 #define _ID_EXPOSURE_TIME 0x829a 2415 #define EXIFTAGID_EXPOSURE_TIME CONSTRUCT_TAGID(EXPOSURE_TIME, _ID_EXPOSURE_TIME) 2416 #define EXIFTAGTYPE_EXPOSURE_TIME EXIF_RATIONAL 2417 // F number 2418 // Use EXIFTAGTYPE_F_NUMBER as the exif_tag_type (EXIF_RATIONAL) 2419 // Count should be 1 2420 #define _ID_F_NUMBER 0x829d 2421 #define EXIFTAGID_F_NUMBER CONSTRUCT_TAGID(F_NUMBER, _ID_F_NUMBER) 2422 #define EXIFTAGTYPE_F_NUMBER EXIF_RATIONAL 2423 // Exif IFD pointer (NOT INTENDED to be accessible to user) 2424 #define _ID_EXIF_IFD_PTR 0x8769 2425 #define EXIFTAGID_EXIF_IFD_PTR CONSTRUCT_TAGID(EXIF_IFD, _ID_EXIF_IFD_PTR) 2426 #define EXIFTAGTYPE_EXIF_IFD_PTR EXIF_LONG 2427 2428 // ICC_PROFILE (NOT INTENDED to be accessible to user) 2429 #define _ID_ICC_PROFILE 0x8773 2430 #define EXIFTAGID_ICC_PROFILE CONSTRUCT_TAGID(ICC_PROFILE, _ID_ICC_PROFILE) 2431 #define EXIFTAGTYPE_ICC_PROFILE EXIF_LONG 2432 // Exposure program 2433 // Use EXIFTAGTYPE_EXPOSURE_PROGRAM as the exif_tag_type (EXIF_SHORT) 2434 // Count should be 1 2435 #define _ID_EXPOSURE_PROGRAM 0x8822 2436 #define EXIFTAGID_EXPOSURE_PROGRAM CONSTRUCT_TAGID(EXPOSURE_PROGRAM, _ID_EXPOSURE_PROGRAM) 2437 #define EXIFTAGTYPE_EXPOSURE_PROGRAM EXIF_SHORT 2438 // Spectral sensitivity 2439 // Use EXIFTAGTYPE_SPECTRAL_SENSITIVITY as the exif_tag_type (EXIF_ASCII) 2440 // Count can be any 2441 #define _ID_SPECTRAL_SENSITIVITY 0x8824 2442 #define EXIFTAGID_SPECTRAL_SENSITIVITY CONSTRUCT_TAGID(SPECTRAL_SENSITIVITY, _ID_SPECTRAL_SENSITIVITY) 2443 #define EXIFTAGTYPE_SPECTRAL_SENSITIVITY EXIF_ASCII 2444 // GPS IFD pointer (NOT INTENDED to be accessible to user) 2445 #define _ID_GPS_IFD_PTR 0x8825 2446 #define EXIFTAGID_GPS_IFD_PTR CONSTRUCT_TAGID(GPS_IFD, _ID_GPS_IFD_PTR) 2447 #define EXIFTAGTYPE_GPS_IFD_PTR EXIF_LONG 2448 // ISO Speed Rating 2449 // Use EXIFTAGTYPE_ISO_SPEED_RATING as the exif_tag_type (EXIF_SHORT) 2450 // Count can be any 2451 #define _ID_ISO_SPEED_RATING 0x8827 2452 #define EXIFTAGID_ISO_SPEED_RATING CONSTRUCT_TAGID(ISO_SPEED_RATING, _ID_ISO_SPEED_RATING) 2453 #define EXIFTAGTYPE_ISO_SPEED_RATING EXIF_SHORT 2454 // Optoelectric conversion factor 2455 // Use EXIFTAGTYPE_OECF as the exif_tag_type (EXIF_UNDEFINED) 2456 // Count can be any 2457 #define _ID_OECF 0x8828 2458 #define EXIFTAGID_OECF CONSTRUCT_TAGID(OECF, _ID_OECF) 2459 #define EXIFTAGTYPE_OECF EXIF_UNDEFINED 2460 // Exif version 2461 // Use EXIFTAGTYPE_EXIF_VERSION as the exif_tag_type (EXIF_UNDEFINED) 2462 // Count should be 4 2463 #define _ID_EXIF_VERSION 0x9000 2464 #define EXIFTAGID_EXIF_VERSION CONSTRUCT_TAGID(EXIF_VERSION, _ID_EXIF_VERSION) 2465 #define EXIFTAGTYPE_EXIF_VERSION EXIF_UNDEFINED 2466 // Date and time of original data gerneration 2467 // Use EXIFTAGTYPE_EXIF_DATE_TIME_ORIGINAL as the exif_tag_type (EXIF_ASCII) 2468 // It should be 20 characters long including the null-terminating character. 2469 #define _ID_EXIF_DATE_TIME_ORIGINAL 0x9003 2470 #define EXIFTAGID_EXIF_DATE_TIME_ORIGINAL CONSTRUCT_TAGID(EXIF_DATE_TIME_ORIGINAL, _ID_EXIF_DATE_TIME_ORIGINAL) 2471 #define EXIFTAGTYPE_EXIF_DATE_TIME_ORIGINAL EXIF_ASCII 2472 // Date and time of digital data generation 2473 // Use EXIFTAGTYPE_EXIF_DATE_TIME_DIGITIZED as the exif_tag_type (EXIF_ASCII) 2474 // It should be 20 characters long including the null-terminating character. 2475 #define _ID_EXIF_DATE_TIME_DIGITIZED 0x9004 2476 #define EXIFTAGID_EXIF_DATE_TIME_DIGITIZED CONSTRUCT_TAGID(EXIF_DATE_TIME_DIGITIZED, _ID_EXIF_DATE_TIME_DIGITIZED) 2477 #define EXIFTAGTYPE_EXIF_DATE_TIME_DIGITIZED EXIF_ASCII 2478 // Meaning of each component 2479 // Use EXIFTAGTYPE_EXIF_COMPONENTS_CONFIG as the exif_tag_type (EXIF_UNDEFINED) 2480 // Count should be 4 2481 #define _ID_EXIF_COMPONENTS_CONFIG 0x9101 2482 #define EXIFTAGID_EXIF_COMPONENTS_CONFIG CONSTRUCT_TAGID(EXIF_COMPONENTS_CONFIG, _ID_EXIF_COMPONENTS_CONFIG) 2483 #define EXIFTAGTYPE_EXIF_COMPONENTS_CONFIG EXIF_UNDEFINED 2484 // Meaning of Image compression mode 2485 // Use EXIFTAGTYPE_EXIF_COMPRESSED_BITS_PER_PIXEL as the exif_tag_type (EXIF_RATIONAL) 2486 // Count should be 1 2487 #define _ID_EXIF_COMPRESSED_BITS_PER_PIXEL 0x9102 2488 #define EXIFTAGID_EXIF_COMPRESSED_BITS_PER_PIXEL CONSTRUCT_TAGID(EXIF_COMPRESSED_BITS_PER_PIXEL, _ID_EXIF_COMPRESSED_BITS_PER_PIXEL) 2489 #define EXIFTAGTYPE_EXIF_COMPRESSED_BITS_PER_PIXEL EXIF_RATIONAL 2490 // Shutter speed 2491 // Use EXIFTAGTYPE_SHUTTER_SPEED as the exif_tag_type (EXIF_SRATIONAL) 2492 // Count should be 1 2493 #define _ID_SHUTTER_SPEED 0x9201 2494 #define EXIFTAGID_SHUTTER_SPEED CONSTRUCT_TAGID(SHUTTER_SPEED, _ID_SHUTTER_SPEED) 2495 #define EXIFTAGTYPE_SHUTTER_SPEED EXIF_SRATIONAL 2496 // Aperture 2497 // Use EXIFTAGTYPE_APERTURE as the exif_tag_type (EXIF_RATIONAL) 2498 // Count should be 1 2499 #define _ID_APERTURE 0x9202 2500 #define EXIFTAGID_APERTURE CONSTRUCT_TAGID(APERTURE, _ID_APERTURE) 2501 #define EXIFTAGTYPE_APERTURE EXIF_RATIONAL 2502 // Brigthness 2503 // Use EXIFTAGTYPE_BRIGHTNESS as the exif_tag_type (EXIF_SRATIONAL) 2504 // Count should be 1 2505 #define _ID_BRIGHTNESS 0x9203 2506 #define EXIFTAGID_BRIGHTNESS CONSTRUCT_TAGID(BRIGHTNESS, _ID_BRIGHTNESS) 2507 #define EXIFTAGTYPE_BRIGHTNESS EXIF_SRATIONAL 2508 // Exposure bias 2509 // Use EXIFTAGTYPE_EXPOSURE_BIAS_VALUE as the exif_tag_type (EXIF_SRATIONAL) 2510 // Count should be 1 2511 #define _ID_EXPOSURE_BIAS_VALUE 0x9204 2512 #define EXIFTAGID_EXPOSURE_BIAS_VALUE CONSTRUCT_TAGID(EXPOSURE_BIAS_VALUE, _ID_EXPOSURE_BIAS_VALUE) 2513 #define EXIFTAGTYPE_EXPOSURE_BIAS_VALUE EXIF_SRATIONAL 2514 // Maximum lens aperture 2515 // Use EXIFTAGTYPE_MAX_APERTURE as the exif_tag_type (EXIF_RATIONAL) 2516 // Count should be 1 2517 #define _ID_MAX_APERTURE 0x9205 2518 #define EXIFTAGID_MAX_APERTURE CONSTRUCT_TAGID(MAX_APERTURE, _ID_MAX_APERTURE) 2519 #define EXIFTAGTYPE_MAX_APERTURE EXIF_RATIONAL 2520 // Subject distance 2521 // Use EXIFTAGTYPE_SUBJECT_DISTANCE as the exif_tag_type (EXIF_RATIONAL) 2522 // Count should be 1 2523 #define _ID_SUBJECT_DISTANCE 0x9206 2524 #define EXIFTAGID_SUBJECT_DISTANCE CONSTRUCT_TAGID(SUBJECT_DISTANCE, _ID_SUBJECT_DISTANCE) 2525 #define EXIFTAGTYPE_SUBJECT_DISTANCE EXIF_RATIONAL 2526 // Metering mode 2527 // Use EXIFTAGTYPE_METERING_MODE as the exif_tag_type (EXIF_SHORT) 2528 // Count should be 1 2529 #define _ID_METERING_MODE 0x9207 2530 #define EXIFTAGID_METERING_MODE CONSTRUCT_TAGID(METERING_MODE, _ID_METERING_MODE) 2531 #define EXIFTAGTYPE_METERING_MODE EXIF_SHORT 2532 // Light source 2533 // Use EXIFTAGTYPE_LIGHT_SOURCE as the exif_tag_type (EXIF_SHORT) 2534 // Count should be 1 2535 #define _ID_LIGHT_SOURCE 0x9208 2536 #define EXIFTAGID_LIGHT_SOURCE CONSTRUCT_TAGID(LIGHT_SOURCE, _ID_LIGHT_SOURCE) 2537 #define EXIFTAGTYPE_LIGHT_SOURCE EXIF_SHORT 2538 // Flash 2539 // Use EXIFTAGTYPE_FLASH as the exif_tag_type (EXIF_SHORT) 2540 // Count should be 1 2541 #define _ID_FLASH 0x9209 2542 #define EXIFTAGID_FLASH CONSTRUCT_TAGID(FLASH, _ID_FLASH) 2543 #define EXIFTAGTYPE_FLASH EXIF_SHORT 2544 // Lens focal length 2545 // Use EXIFTAGTYPE_FOCAL_LENGTH as the exif_tag_type (EXIF_RATIONAL) 2546 // Count should be 1 2547 #define _ID_FOCAL_LENGTH 0x920a 2548 #define EXIFTAGID_FOCAL_LENGTH CONSTRUCT_TAGID(FOCAL_LENGTH, _ID_FOCAL_LENGTH) 2549 #define EXIFTAGTYPE_FOCAL_LENGTH EXIF_RATIONAL 2550 // Subject area 2551 // Use EXIFTAGTYPE_SUBJECT_AREA as exif_tag_type (EXIF_SHORT) 2552 // Count should be 2 or 3 or 4 2553 #define _ID_SUBJECT_AREA 0x9214 2554 #define EXIFTAGID_SUBJECT_AREA CONSTRUCT_TAGID(SUBJECT_AREA, _ID_SUBJECT_AREA) 2555 #define EXIFTAGTYPE_SUBJECT_AREA EXIF_SHORT 2556 // Maker note 2557 // Use EXIFTAGTYPE_EXIF_MAKER_NOTE as the exif_tag_type (EXIF_UNDEFINED) 2558 // Count can be any 2559 #define _ID_EXIF_MAKER_NOTE 0x927c 2560 #define EXIFTAGID_EXIF_MAKER_NOTE CONSTRUCT_TAGID(EXIF_MAKER_NOTE, _ID_EXIF_MAKER_NOTE) 2561 #define EXIFTAGTYPE_EXIF_MAKER_NOTE EXIF_UNDEFINED 2562 // User comments 2563 // Use EXIFTAGTYPE_EXIF_USER_COMMENT as the exif_tag_type (EXIF_UNDEFINED) 2564 // Count can be any 2565 #define _ID_EXIF_USER_COMMENT 0x9286 2566 #define EXIFTAGID_EXIF_USER_COMMENT CONSTRUCT_TAGID(EXIF_USER_COMMENT, _ID_EXIF_USER_COMMENT) 2567 #define EXIFTAGTYPE_EXIF_USER_COMMENT EXIF_UNDEFINED 2568 // Date time sub-seconds 2569 // Use EXIFTAGTYPE_SUBSEC_TIME as the exif_tag_type (EXIF_ASCII) 2570 // Count could be any 2571 #define _ID_SUBSEC_TIME 0x9290 2572 #define EXIFTAGID_SUBSEC_TIME CONSTRUCT_TAGID(SUBSEC_TIME, _ID_SUBSEC_TIME) 2573 #define EXIFTAGTYPE_SEBSEC_TIME EXIF_ASCII 2574 // Date time original sub-seconds 2575 // use EXIFTAGTYPE_SUBSEC_TIME_ORIGINAL as the exif_tag_type (EXIF_ASCII) 2576 // Count could be any 2577 #define _ID_SUBSEC_TIME_ORIGINAL 0x9291 2578 #define EXIFTAGID_SUBSEC_TIME_ORIGINAL CONSTRUCT_TAGID(SUBSEC_TIME_ORIGINAL, _ID_SUBSEC_TIME_ORIGINAL) 2579 #define EXIFTAGTYPE_SUBSEC_TIME_ORIGINAL EXIF_ASCII 2580 // Date time digitized sub-seconds 2581 // use EXIFTAGTYPE_SUBSEC_TIME_DIGITIZED as the exif_tag_type (EXIF_ASCII) 2582 // Count could be any 2583 #define _ID_SUBSEC_TIME_DIGITIZED 0x9292 2584 #define EXIFTAGID_SUBSEC_TIME_DIGITIZED CONSTRUCT_TAGID(SUBSEC_TIME_DIGITIZED, _ID_SUBSEC_TIME_DIGITIZED) 2585 #define EXIFTAGTYPE_SUBSEC_TIME_DIGITIZED EXIF_ASCII 2586 // Supported Flashpix version 2587 // Use EXIFTAGTYPE_EXIF_FLASHPIX_VERSION as the exif_tag_type (EXIF_UNDEFINED) 2588 // Count should be 4 2589 #define _ID_EXIF_FLASHPIX_VERSION 0xa000 2590 #define EXIFTAGID_EXIF_FLASHPIX_VERSION CONSTRUCT_TAGID(EXIF_FLASHPIX_VERSION, _ID_EXIF_FLASHPIX_VERSION) 2591 #define EXIFTAGTYPE_EXIF_FLASHPIX_VERSION EXIF_UNDEFINED 2592 // Color space information 2593 // Use EXIFTAGTYPE_EXIF_COLOR_SPACE as the exif_tag_type (EXIF_SHORT) 2594 // Count should be 1 2595 #define _ID_EXIF_COLOR_SPACE 0xa001 2596 #define EXIFTAGID_EXIF_COLOR_SPACE CONSTRUCT_TAGID(EXIF_COLOR_SPACE, _ID_EXIF_COLOR_SPACE) 2597 #define EXIFTAGTYPE_EXIF_COLOR_SPACE EXIF_SHORT 2598 // Valid image width 2599 // Use EXIFTAGTYPE_EXIF_PIXEL_X_DIMENSION as the exif_tag_type (EXIF_SHORT) 2600 // Count should be 1 2601 #define _ID_EXIF_PIXEL_X_DIMENSION 0xa002 2602 #define EXIFTAGID_EXIF_PIXEL_X_DIMENSION CONSTRUCT_TAGID(EXIF_PIXEL_X_DIMENSION, _ID_EXIF_PIXEL_X_DIMENSION) 2603 #define EXIFTAGTYPE_EXIF_PIXEL_X_DIMENSION EXIF_SHORT 2604 // Valid image height 2605 // Use EXIFTAGTYPE_EXIF_PIXEL_Y_DIMENSION as the exif_tag_type (EXIF_SHORT) 2606 // Count should be 1 2607 #define _ID_EXIF_PIXEL_Y_DIMENSION 0xa003 2608 #define EXIFTAGID_EXIF_PIXEL_Y_DIMENSION CONSTRUCT_TAGID(EXIF_PIXEL_Y_DIMENSION, _ID_EXIF_PIXEL_Y_DIMENSION) 2609 #define EXIFTAGTYPE_EXIF_PIXEL_Y_DIMENSION EXIF_SHORT 2610 // Related audio file 2611 // Use EXIFTAGTYPE_EXIF_RELATED_SOUND_FILE as the exif_tag_type (EXIF_ASCII) 2612 // Count should be 13 2613 #define _ID_RELATED_SOUND_FILE 0xa004 2614 #define EXIFTAGID_RELATED_SOUND_FILE CONSTRUCT_TAGID(RELATED_SOUND_FILE, _ID_RELATED_SOUND_FILE) 2615 #define EXIFTAGTYPE_RELATED_SOUND_FILE EXIF_ASCII 2616 // Interop IFD pointer (NOT INTENDED to be accessible to user) 2617 #define _ID_INTEROP_IFD_PTR 0xa005 2618 #define EXIFTAGID_INTEROP_IFD_PTR CONSTRUCT_TAGID(INTEROP, _ID_INTEROP_IFD_PTR) 2619 #define EXIFTAGTYPE_INTEROP_IFD_PTR EXIF_LONG 2620 // Flash energy 2621 // Use EXIFTAGTYPE_EXIF_FLASH_ENERGY as the exif_tag_type (EXIF_RATIONAL) 2622 // Count should be 1 2623 #define _ID_FLASH_ENERGY 0xa20b 2624 #define EXIFTAGID_FLASH_ENERGY CONSTRUCT_TAGID(FLASH_ENERGY, _ID_FLASH_ENERGY) 2625 #define EXIFTAGTYPE_FLASH_ENERGY EXIF_RATIONAL 2626 // Spatial frequency response 2627 // Use EXIFTAGTYPE_SPATIAL_FREQ_RESPONSE as exif_tag_type (EXIF_UNDEFINED) 2628 // Count would be any 2629 #define _ID_SPATIAL_FREQ_RESPONSE 0xa20c 2630 #define EXIFTAGID_SPATIAL_FREQ_RESPONSE CONSTRUCT_TAGID(SPATIAL_FREQ_RESPONSE, _ID_SPATIAL_FREQ_RESPONSE) 2631 #define EXIFTAGTYPE_SPATIAL_FREQ_RESPONSE EXIF_UNDEFINED 2632 // Focal plane x resolution 2633 // Use EXIFTAGTYPE_FOCAL_PLANE_X_RESOLUTION as exif_tag_type (EXIF_RATIONAL) 2634 // Count should be 1 2635 #define _ID_FOCAL_PLANE_X_RESOLUTION 0xa20e 2636 #define EXIFTAGID_FOCAL_PLANE_X_RESOLUTION CONSTRUCT_TAGID(FOCAL_PLANE_X_RESOLUTION, _ID_FOCAL_PLANE_X_RESOLUTION) 2637 #define EXIFTAGTYPE_FOCAL_PLANE_X_RESOLUTION EXIF_RATIONAL 2638 // Focal plane y resolution 2639 // Use EXIFTAGTYPE_FOCAL_PLANE_Y_RESOLUTION as exif_tag_type (EXIF_RATIONAL) 2640 // Count should be 1 2641 #define _ID_FOCAL_PLANE_Y_RESOLUTION 0xa20f 2642 #define EXIFTAGID_FOCAL_PLANE_Y_RESOLUTION CONSTRUCT_TAGID(FOCAL_PLANE_Y_RESOLUTION, _ID_FOCAL_PLANE_Y_RESOLUTION) 2643 #define EXIFTAGTYPE_FOCAL_PLANE_Y_RESOLUTION EXIF_RATIONAL 2644 // Focal plane resolution unit 2645 // Use EXIFTAGTYPE_FOCAL_PLANE_RESOLUTION_UNIT as exif_tag_type (EXIF_SHORT) 2646 // Count should be 1 2647 #define _ID_FOCAL_PLANE_RESOLUTION_UNIT 0xa210 2648 #define EXIFTAGID_FOCAL_PLANE_RESOLUTION_UNIT CONSTRUCT_TAGID(FOCAL_PLANE_RESOLUTION_UNIT, _ID_FOCAL_PLANE_RESOLUTION_UNIT) 2649 #define EXIFTAGTYPE_FOCAL_PLANE_RESOLUTION_UNIT EXIF_SHORT 2650 // Subject location 2651 // Use EXIFTAGTYPE_SUBJECT_LOCATION as the exif_tag_type (EXIF_SHORT) 2652 // Count should be 2 2653 #define _ID_SUBJECT_LOCATION 0xa214 2654 #define EXIFTAGID_SUBJECT_LOCATION CONSTRUCT_TAGID(SUBJECT_LOCATION, _ID_SUBJECT_LOCATION) 2655 #define EXIFTAGTYPE_SUBJECT_LOCATION EXIF_SHORT 2656 // Exposure index 2657 // Use EXIFTAGTYPE_EXPOSURE_INDEX as the exif_tag_type (EXIF_RATIONAL) 2658 // Count should be 1 2659 #define _ID_EXPOSURE_INDEX 0xa215 2660 #define EXIFTAGID_EXPOSURE_INDEX CONSTRUCT_TAGID(EXPOSURE_INDEX, _ID_EXPOSURE_INDEX) 2661 #define EXIFTAGTYPE_EXPOSURE_INDEX EXIF_RATIONAL 2662 // Sensing method 2663 // Use EXIFTAGTYPE_SENSING_METHOD as the exif_tag_type (EXIF_SHORT) 2664 // Count should be 1 2665 #define _ID_SENSING_METHOD 0xa217 2666 #define EXIFTAGID_SENSING_METHOD CONSTRUCT_TAGID(SENSING_METHOD, _ID_SENSING_METHOD) 2667 #define EXIFTAGTYPE_SENSING_METHOD EXIF_SHORT 2668 // File source 2669 // Use EXIFTAGTYPE_FILE_SOURCE as the exif_tag_type (EXIF_UNDEFINED) 2670 // Count should be 1 2671 #define _ID_FILE_SOURCE 0xa300 2672 #define EXIFTAGID_FILE_SOURCE CONSTRUCT_TAGID(FILE_SOURCE, _ID_FILE_SOURCE) 2673 #define EXIFTAGTYPE_FILE_SOURCE EXIF_UNDEFINED 2674 // Scene type 2675 // Use EXIFTAGTYPE_SCENE_TYPE as the exif_tag_type (EXIF_UNDEFINED) 2676 // Count should be 1 2677 #define _ID_SCENE_TYPE 0xa301 2678 #define EXIFTAGID_SCENE_TYPE CONSTRUCT_TAGID(SCENE_TYPE, _ID_SCENE_TYPE) 2679 #define EXIFTAGTYPE_SCENE_TYPE EXIF_UNDEFINED 2680 // CFA pattern 2681 // Use EXIFTAGTYPE_CFA_PATTERN as the exif_tag_type (EXIF_UNDEFINED) 2682 // Count can be any 2683 #define _ID_CFA_PATTERN 0xa302 2684 #define EXIFTAGID_CFA_PATTERN CONSTRUCT_TAGID(CFA_PATTERN, _ID_CFA_PATTERN) 2685 #define EXIFTAGTYPE_CFA_PATTERN EXIF_UNDEFINED 2686 // Custom image processing 2687 // Use EXIFTAGTYPE_CUSTOM_RENDERED as the exif_tag_type (EXIF_SHORT) 2688 // Count should be 1 2689 #define _ID_CUSTOM_RENDERED 0xa401 2690 #define EXIFTAGID_CUSTOM_RENDERED CONSTRUCT_TAGID(CUSTOM_RENDERED, _ID_CUSTOM_RENDERED) 2691 #define EXIFTAGTYPE_CUSTOM_RENDERED EXIF_SHORT 2692 // Exposure mode 2693 // Use EXIFTAGTYPE_EXPOSURE_MODE as the exif_tag_type (EXIF_SHORT) 2694 // Count should be 1 2695 #define _ID_EXPOSURE_MODE 0xa402 2696 #define EXIFTAGID_EXPOSURE_MODE CONSTRUCT_TAGID(EXPOSURE_MODE, _ID_EXPOSURE_MODE) 2697 #define EXIFTAGTYPE_EXPOSURE_MODE EXIF_SHORT 2698 // White balance 2699 // Use EXIFTAGTYPE_WHITE_BALANCE as the exif_tag_type (EXIF_SHORT) 2700 // Count should be 1 2701 #define _ID_WHITE_BALANCE 0xa403 2702 #define EXIFTAGID_WHITE_BALANCE CONSTRUCT_TAGID(WHITE_BALANCE, _ID_WHITE_BALANCE) 2703 #define EXIFTAGTYPE_WHITE_BALANCE EXIF_SHORT 2704 // Digital zoom ratio 2705 // Use EXIFTAGTYPE_DIGITAL_ZOOM_RATIO as the exif_tag_type (EXIF_RATIONAL) 2706 // Count should be 1 2707 #define _ID_DIGITAL_ZOOM_RATIO 0xa404 2708 #define EXIFTAGID_DIGITAL_ZOOM_RATIO CONSTRUCT_TAGID(DIGITAL_ZOOM_RATIO, _ID_DIGITAL_ZOOM_RATIO) 2709 #define EXIFTAGTYPE_DIGITAL_ZOOM_RATIO EXIF_RATIONAL 2710 // Focal length in 35mm film 2711 // Use EXIFTAGTYPE_FOCAL_LENGTH_35MM as the exif_tag_type (EXIF_SHORT) 2712 // Count should be 1 2713 #define _ID_FOCAL_LENGTH_35MM 0xa405 2714 #define EXIFTAGID_FOCAL_LENGTH_35MM CONSTRUCT_TAGID(FOCAL_LENGTH_35MM, _ID_FOCAL_LENGTH_35MM) 2715 #define EXIFTAGTYPE_FOCAL_LENGTH_35MM EXIF_SHORT 2716 // Scene capture type 2717 // Use EXIFTAGTYPE_SCENE_CAPTURE_TYPE as the exif_tag_type (EXIF_SHORT) 2718 // Count should be 1 2719 #define _ID_SCENE_CAPTURE_TYPE 0xa406 2720 #define EXIFTAGID_SCENE_CAPTURE_TYPE CONSTRUCT_TAGID(SCENE_CAPTURE_TYPE, _ID_SCENE_CAPTURE_TYPE) 2721 #define EXIFTAGTYPE_SCENE_CAPTURE_TYPE EXIF_SHORT 2722 // Gain control 2723 // Use EXIFTAGTYPE_GAIN_CONTROL as the exif_tag_type (EXIF_SHORT) 2724 // Count should be 1 2725 #define _ID_GAIN_CONTROL 0xa407 2726 #define EXIFTAGID_GAIN_CONTROL CONSTRUCT_TAGID(GAIN_CONTROL, _ID_GAIN_CONTROL) 2727 #define EXIFTAGTYPE_GAIN_CONTROL EXIF_SHORT 2728 // Contrast 2729 // Use EXIFTAGTYPE_CONTRAST as the exif_tag_type (EXIF_SHORT) 2730 // Count should be 1 2731 #define _ID_CONTRAST 0xa408 2732 #define EXIFTAGID_CONTRAST CONSTRUCT_TAGID(CONTRAST, _ID_CONTRAST) 2733 #define EXIFTAGTYPE_CONTRAST EXIF_SHORT 2734 // Saturation 2735 // Use EXIFTAGTYPE_SATURATION as the exif_tag_type (EXIF_SHORT) 2736 // Count should be 1 2737 #define _ID_SATURATION 0xa409 2738 #define EXIFTAGID_SATURATION CONSTRUCT_TAGID(SATURATION, _ID_SATURATION) 2739 #define EXIFTAGTYPE_SATURATION EXIF_SHORT 2740 // Sharpness 2741 // Use EXIFTAGTYPE_SHARPNESS as the exif_tag_type (EXIF_SHORT) 2742 // Count should be 1 2743 #define _ID_SHARPNESS 0xa40a 2744 #define EXIFTAGID_SHARPNESS CONSTRUCT_TAGID(SHARPNESS, _ID_SHARPNESS) 2745 #define EXIFTAGTYPE_SHARPNESS EXIF_SHORT 2746 // Device settings description 2747 // Use EXIFTAGID_DEVICE_SETTINGS_DESCRIPTION as exif_tag_type (EXIF_UNDEFINED) 2748 // Count could be any 2749 #define _ID_DEVICE_SETTINGS_DESCRIPTION 0xa40b 2750 #define EXIFTAGID_DEVICE_SETTINGS_DESCRIPTION CONSTRUCT_TAGID(DEVICE_SETTINGS_DESCRIPTION, _ID_DEVICE_SETTINGS_DESCRIPTION) 2751 #define EXIFTAGTYPE_DEVIC_SETTIGNS_DESCRIPTION EXIF_UNDEFINED 2752 // Subject distance range 2753 // Use EXIFTAGTYPE_SUBJECT_DISTANCE_RANGE as the exif_tag_type (EXIF_SHORT) 2754 // Count should be 1 2755 #define _ID_SUBJECT_DISTANCE_RANGE 0xa40c 2756 #define EXIFTAGID_SUBJECT_DISTANCE_RANGE CONSTRUCT_TAGID(SUBJECT_DISTANCE_RANGE, _ID_SUBJECT_DISTANCE_RANGE) 2757 #define EXIFTAGTYPE_SUBJECT_DISTANCE_RANGE EXIF_SHORT 2758 // Unique image id 2759 // Use EXIFTAG_TYPE_IMAGE_UIDas the exif_tag_type (EXIF_ASCII) 2760 // Count should be 33 2761 #define _ID_IMAGE_UID 0xa420 2762 #define EXIFTAGID_IMAGE_UID CONSTRUCT_TAGID(IMAGE_UID, _ID_IMAGE_UID) 2763 #define EXIFTAGTYPE_IMAGE_UID EXIF_ASCII 2764 // PIM tag 2765 // Use EXIFTAGTYPE_PIM_TAG as the exif_tag_type (EXIF_UNDEFINED) 2766 // Count can be any 2767 #define _ID_PIM 0xc4a5 2768 #define EXIFTAGID_PIM_TAG CONSTRUCT_TAGID(PIM, _ID_PIM) 2769 #define EXIFTAGTYPE_PIM_TAG EXIF_UNDEFINED 2770 2771 #endif /* __QCAMERA_INTF_H__ */ 2772