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