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