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