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