1 /*Copyright (c) 2012, The Linux Foundation. All rights reserved. 2 3 Redistribution and use in source and binary forms, with or without 4 modification, are permitted provided that the following conditions are 5 met: 6 * Redistributions of source code must retain the above copyright 7 notice, this list of conditions and the following disclaimer. 8 * Redistributions in binary form must reproduce the above 9 copyright notice, this list of conditions and the following 10 disclaimer in the documentation and/or other materials provided 11 with the distribution. 12 * Neither the name of The Linux Foundation nor the names of its 13 contributors may be used to endorse or promote products derived 14 from this software without specific prior written permission. 15 16 THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26 IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/ 27 28 29 #ifndef __QEXIF_H__ 30 #define __QEXIF_H__ 31 32 #include <stdio.h> 33 34 /* Exif Info (opaque definition) */ 35 struct exif_info_t; 36 typedef struct exif_info_t * exif_info_obj_t; 37 38 /* Exif Tag ID */ 39 typedef uint32_t exif_tag_id_t; 40 41 42 /* Exif Rational Data Type */ 43 typedef struct 44 { 45 uint32_t num; // Numerator 46 uint32_t denom; // Denominator 47 48 } rat_t; 49 50 /* Exif Signed Rational Data Type */ 51 typedef struct 52 { 53 int32_t num; // Numerator 54 int32_t denom; // Denominator 55 56 } srat_t; 57 58 /* Exif Tag Data Type */ 59 typedef enum 60 { 61 EXIF_BYTE = 1, 62 EXIF_ASCII = 2, 63 EXIF_SHORT = 3, 64 EXIF_LONG = 4, 65 EXIF_RATIONAL = 5, 66 EXIF_UNDEFINED = 7, 67 EXIF_SLONG = 9, 68 EXIF_SRATIONAL = 10 69 } exif_tag_type_t; 70 71 /* Exif Tag Entry 72 * Used in exif_set_tag as an input argument and 73 * in exif_get_tag as an output argument. */ 74 typedef struct 75 { 76 /* The Data Type of the Tag * 77 * Rational, etc */ 78 exif_tag_type_t type; 79 80 /* Copy 81 * This field is used when a user pass this structure to 82 * be stored in an exif_info_t via the exif_set_tag method. 83 * The routine would look like this field and decide whether 84 * it is necessary to make a copy of the data pointed by this 85 * structure (all string and array types). 86 * If this field is set to false, only a pointer to the actual 87 * data is retained and it is the caller's responsibility to 88 * ensure the validity of the data before the exif_info_t object 89 * is destroyed. 90 */ 91 uint8_t copy; 92 93 /* Data count 94 * This indicates the number of elements of the data. For example, if 95 * the type is EXIF_BYTE and the count is 1, that means the actual data 96 * is one byte and is accessible by data._byte. If the type is EXIF_BYTE 97 * and the count is more than one, the actual data is contained in an 98 * array and is accessible by data._bytes. In case of EXIF_ASCII, it 99 * indicates the string length and in case of EXIF_UNDEFINED, it indicates 100 * the length of the array. 101 */ 102 uint32_t count; 103 104 /* Data 105 * A union which covers all possible data types. The user should pick 106 * the right field to use depending on the data type and the count. 107 * See in-line comment below. 108 */ 109 union 110 { 111 char *_ascii; // EXIF_ASCII (count indicates string length) 112 uint8_t *_bytes; // EXIF_BYTE (count > 1) 113 uint8_t _byte; // EXIF_BYTE (count = 1) 114 uint16_t *_shorts; // EXIF_SHORT (count > 1) 115 uint16_t _short; // EXIF_SHORT (count = 1) 116 uint32_t *_longs; // EXIF_LONG (count > 1) 117 uint32_t _long; // EXIF_LONG (count = 1) 118 rat_t *_rats; // EXIF_RATIONAL (count > 1) 119 rat_t _rat; // EXIF_RATIONAL (count = 1) 120 uint8_t *_undefined; // EXIF_UNDEFINED (count indicates length) 121 int32_t *_slongs; // EXIF_SLONG (count > 1) 122 int32_t _slong; // EXIF_SLONG (count = 1) 123 srat_t *_srats; // EXIF_SRATIONAL (count > 1) 124 srat_t _srat; // EXIF_SRATIONAL (count = 1) 125 126 } data; 127 128 } exif_tag_entry_t; 129 130 /* ======================================================================= 131 ** Macro Definitions 132 ** ======================================================================= */ 133 /* Enum defined to let compiler generate unique offset numbers for different 134 * tags - ordering matters! NOT INTENDED to be used by any application. */ 135 typedef enum 136 { 137 // GPS IFD 138 GPS_VERSION_ID = 0, 139 GPS_LATITUDE_REF, 140 GPS_LATITUDE, 141 GPS_LONGITUDE_REF, 142 GPS_LONGITUDE, 143 GPS_ALTITUDE_REF, 144 GPS_ALTITUDE, 145 GPS_TIMESTAMP, 146 GPS_SATELLITES, 147 GPS_STATUS, 148 GPS_MEASUREMODE, 149 GPS_DOP, 150 GPS_SPEED_REF, 151 GPS_SPEED, 152 GPS_TRACK_REF, 153 GPS_TRACK, 154 GPS_IMGDIRECTION_REF, 155 GPS_IMGDIRECTION, 156 GPS_MAPDATUM, 157 GPS_DESTLATITUDE_REF, 158 GPS_DESTLATITUDE, 159 GPS_DESTLONGITUDE_REF, 160 GPS_DESTLONGITUDE, 161 GPS_DESTBEARING_REF, 162 GPS_DESTBEARING, 163 GPS_DESTDISTANCE_REF, 164 GPS_DESTDISTANCE, 165 GPS_PROCESSINGMETHOD, 166 GPS_AREAINFORMATION, 167 GPS_DATESTAMP, 168 GPS_DIFFERENTIAL, 169 170 // TIFF IFD 171 NEW_SUBFILE_TYPE, 172 SUBFILE_TYPE, 173 IMAGE_WIDTH, 174 IMAGE_LENGTH, 175 BITS_PER_SAMPLE, 176 COMPRESSION, 177 PHOTOMETRIC_INTERPRETATION, 178 THRESH_HOLDING, 179 CELL_WIDTH, 180 CELL_HEIGHT, 181 FILL_ORDER, 182 DOCUMENT_NAME, 183 IMAGE_DESCRIPTION, 184 MAKE, 185 MODEL, 186 STRIP_OFFSETS, 187 ORIENTATION, 188 SAMPLES_PER_PIXEL, 189 ROWS_PER_STRIP, 190 STRIP_BYTE_COUNTS, 191 MIN_SAMPLE_VALUE, 192 MAX_SAMPLE_VALUE, 193 X_RESOLUTION, 194 Y_RESOLUTION, 195 PLANAR_CONFIGURATION, 196 PAGE_NAME, 197 X_POSITION, 198 Y_POSITION, 199 FREE_OFFSET, 200 FREE_BYTE_COUNTS, 201 GRAY_RESPONSE_UNIT, 202 GRAY_RESPONSE_CURVE, 203 T4_OPTION, 204 T6_OPTION, 205 RESOLUTION_UNIT, 206 PAGE_NUMBER, 207 TRANSFER_FUNCTION, 208 SOFTWARE, 209 DATE_TIME, 210 ARTIST, 211 HOST_COMPUTER, 212 PREDICTOR, 213 WHITE_POINT, 214 PRIMARY_CHROMATICITIES, 215 COLOR_MAP, 216 HALFTONE_HINTS, 217 TILE_WIDTH, 218 TILE_LENGTH, 219 TILE_OFFSET, 220 TILE_BYTE_COUNTS, 221 INK_SET, 222 INK_NAMES, 223 NUMBER_OF_INKS, 224 DOT_RANGE, 225 TARGET_PRINTER, 226 EXTRA_SAMPLES, 227 SAMPLE_FORMAT, 228 TRANSFER_RANGE, 229 JPEG_PROC, 230 JPEG_INTERCHANGE_FORMAT, 231 JPEG_INTERCHANGE_FORMAT_LENGTH, 232 JPEG_RESTART_INTERVAL, 233 JPEG_LOSSLESS_PREDICTORS, 234 JPEG_POINT_TRANSFORMS, 235 JPEG_Q_TABLES, 236 JPEG_DC_TABLES, 237 JPEG_AC_TABLES, 238 YCBCR_COEFFICIENTS, 239 YCBCR_SUB_SAMPLING, 240 YCBCR_POSITIONING, 241 REFERENCE_BLACK_WHITE, 242 GAMMA, 243 ICC_PROFILE_DESCRIPTOR, 244 SRGB_RENDERING_INTENT, 245 IMAGE_TITLE, 246 COPYRIGHT, 247 EXIF_IFD, 248 ICC_PROFILE, 249 GPS_IFD, 250 251 252 // TIFF IFD (Thumbnail) 253 TN_IMAGE_WIDTH, 254 TN_IMAGE_LENGTH, 255 TN_BITS_PER_SAMPLE, 256 TN_COMPRESSION, 257 TN_PHOTOMETRIC_INTERPRETATION, 258 TN_IMAGE_DESCRIPTION, 259 TN_MAKE, 260 TN_MODEL, 261 TN_STRIP_OFFSETS, 262 TN_ORIENTATION, 263 TN_SAMPLES_PER_PIXEL, 264 TN_ROWS_PER_STRIP, 265 TN_STRIP_BYTE_COUNTS, 266 TN_X_RESOLUTION, 267 TN_Y_RESOLUTION, 268 TN_PLANAR_CONFIGURATION, 269 TN_RESOLUTION_UNIT, 270 TN_TRANSFER_FUNCTION, 271 TN_SOFTWARE, 272 TN_DATE_TIME, 273 TN_ARTIST, 274 TN_WHITE_POINT, 275 TN_PRIMARY_CHROMATICITIES, 276 TN_JPEGINTERCHANGE_FORMAT, 277 TN_JPEGINTERCHANGE_FORMAT_L, 278 TN_YCBCR_COEFFICIENTS, 279 TN_YCBCR_SUB_SAMPLING, 280 TN_YCBCR_POSITIONING, 281 TN_REFERENCE_BLACK_WHITE, 282 TN_COPYRIGHT, 283 284 // EXIF IFD 285 EXPOSURE_TIME, 286 F_NUMBER, 287 EXPOSURE_PROGRAM, 288 SPECTRAL_SENSITIVITY, 289 ISO_SPEED_RATING, 290 OECF, 291 EXIF_VERSION, 292 EXIF_DATE_TIME_ORIGINAL, 293 EXIF_DATE_TIME_DIGITIZED, 294 EXIF_COMPONENTS_CONFIG, 295 EXIF_COMPRESSED_BITS_PER_PIXEL, 296 SHUTTER_SPEED, 297 APERTURE, 298 BRIGHTNESS, 299 EXPOSURE_BIAS_VALUE, 300 MAX_APERTURE, 301 SUBJECT_DISTANCE, 302 METERING_MODE, 303 LIGHT_SOURCE, 304 FLASH, 305 FOCAL_LENGTH, 306 SUBJECT_AREA, 307 EXIF_MAKER_NOTE, 308 EXIF_USER_COMMENT, 309 SUBSEC_TIME, 310 SUBSEC_TIME_ORIGINAL, 311 SUBSEC_TIME_DIGITIZED, 312 EXIF_FLASHPIX_VERSION, 313 EXIF_COLOR_SPACE, 314 EXIF_PIXEL_X_DIMENSION, 315 EXIF_PIXEL_Y_DIMENSION, 316 RELATED_SOUND_FILE, 317 INTEROP, 318 FLASH_ENERGY, 319 SPATIAL_FREQ_RESPONSE, 320 FOCAL_PLANE_X_RESOLUTION, 321 FOCAL_PLANE_Y_RESOLUTION, 322 FOCAL_PLANE_RESOLUTION_UNIT, 323 SUBJECT_LOCATION, 324 EXPOSURE_INDEX, 325 SENSING_METHOD, 326 FILE_SOURCE, 327 SCENE_TYPE, 328 CFA_PATTERN, 329 CUSTOM_RENDERED, 330 EXPOSURE_MODE, 331 WHITE_BALANCE, 332 DIGITAL_ZOOM_RATIO, 333 FOCAL_LENGTH_35MM, 334 SCENE_CAPTURE_TYPE, 335 GAIN_CONTROL, 336 CONTRAST, 337 SATURATION, 338 SHARPNESS, 339 DEVICE_SETTINGS_DESCRIPTION, 340 SUBJECT_DISTANCE_RANGE, 341 IMAGE_UID, 342 PIM, 343 344 EXIF_TAG_MAX_OFFSET 345 346 } exif_tag_offset_t; 347 348 /* Below are the supported Tags (ID and structure for their data) */ 349 #define CONSTRUCT_TAGID(offset,ID) (offset << 16 | ID) 350 351 // GPS tag version 352 // Use EXIFTAGTYPE_GPS_VERSION_ID as the exif_tag_type (EXIF_BYTE) 353 // Count should be 4 354 #define _ID_GPS_VERSION_ID 0x0000 355 #define EXIFTAGID_GPS_VERSION_ID \ 356 CONSTRUCT_TAGID(GPS_VERSION_ID, _ID_GPS_VERSION_ID) 357 #define EXIFTAGTYPE_GPS_VERSION_ID EXIF_BYTE 358 // North or South Latitude 359 // Use EXIFTAGTYPE_GPS_LATITUDE_REF as the exif_tag_type (EXIF_ASCII) 360 // It should be 2 characters long including the null-terminating character. 361 #define _ID_GPS_LATITUDE_REF 0x0001 362 #define EXIFTAGID_GPS_LATITUDE_REF \ 363 CONSTRUCT_TAGID(GPS_LATITUDE_REF, _ID_GPS_LATITUDE_REF) 364 #define EXIFTAGTYPE_GPS_LATITUDE_REF EXIF_ASCII 365 // Latitude 366 // Use EXIFTAGTYPE_GPS_LATITUDE as the exif_tag_type (EXIF_RATIONAL) 367 // Count should be 3 368 #define _ID_GPS_LATITUDE 0x0002 369 #define EXIFTAGID_GPS_LATITUDE CONSTRUCT_TAGID(GPS_LATITUDE, _ID_GPS_LATITUDE) 370 #define EXIFTAGTYPE_GPS_LATITUDE EXIF_RATIONAL 371 // East or West Longitude 372 // Use EXIFTAGTYPE_GPS_LONGITUDE_REF as the exif_tag_type (EXIF_ASCII) 373 // It should be 2 characters long including the null-terminating character. 374 #define _ID_GPS_LONGITUDE_REF 0x0003 375 #define EXIFTAGID_GPS_LONGITUDE_REF \ 376 CONSTRUCT_TAGID(GPS_LONGITUDE_REF, _ID_GPS_LONGITUDE_REF) 377 #define EXIFTAGTYPE_GPS_LONGITUDE_REF EXIF_ASCII 378 // Longitude 379 // Use EXIFTAGTYPE_GPS_LONGITUDE as the exif_tag_type (EXIF_RATIONAL) 380 // Count should be 3 381 #define _ID_GPS_LONGITUDE 0x0004 382 #define EXIFTAGID_GPS_LONGITUDE \ 383 CONSTRUCT_TAGID(GPS_LONGITUDE, _ID_GPS_LONGITUDE) 384 #define EXIFTAGTYPE_GPS_LONGITUDE EXIF_RATIONAL 385 // Altitude reference 386 // Use EXIFTAGTYPE_GPS_ALTITUDE_REF as the exif_tag_type (EXIF_BYTE) 387 #define _ID_GPS_ALTITUDE_REF 0x0005 388 #define EXIFTAGID_GPS_ALTITUDE_REF \ 389 CONSTRUCT_TAGID(GPS_ALTITUDE_REF, _ID_GPS_ALTITUDE_REF) 390 #define EXIFTAGTYPE_GPS_ALTITUDE_REF EXIF_BYTE 391 // Altitude 392 // Use EXIFTAGTYPE_GPS_ALTITUDE as the exif_tag_type (EXIF_RATIONAL) 393 #define _ID_GPS_ALTITUDE 0x0006 394 #define EXIFTAGID_GPS_ALTITUDE CONSTRUCT_TAGID(GPS_ALTITUDE, _ID_GPS_ALTITUDE) 395 #define EXIFTAGTYPE_GPS_ALTITUE EXIF_RATIONAL 396 // GPS time (atomic clock) 397 // Use EXIFTAGTYPE_GPS_TIMESTAMP as the exif_tag_type (EXIF_RATIONAL) 398 // Count should be 3 399 #define _ID_GPS_TIMESTAMP 0x0007 400 #define EXIFTAGID_GPS_TIMESTAMP \ 401 CONSTRUCT_TAGID(GPS_TIMESTAMP, _ID_GPS_TIMESTAMP) 402 #define EXIFTAGTYPE_GPS_TIMESTAMP EXIF_RATIONAL 403 // GPS Satellites 404 // Use EXIFTAGTYPE_GPS_SATELLITES as the exif_tag_type (EXIF_ASCII) 405 // Count can be anything. 406 #define _ID_GPS_SATELLITES 0x0008 407 #define EXIFTAGID_GPS_SATELLITES \ 408 CONSTRUCT_TAGID(GPS_SATELLITES, _ID_GPS_SATELLITES) 409 #define EXIFTAGTYPE_GPS_SATELLITES EXIF_ASCII 410 // GPS Status 411 // Use EXIFTAGTYPE_GPS_STATUS as the exif_tag_type (EXIF_ASCII) 412 // It should be 2 characters long including the null-terminating character. 413 // "A" - Measurement in progress 414 // "V" - Measurement Interoperability 415 // Other - Reserved 416 #define _ID_GPS_STATUS 0x0009 417 #define EXIFTAGID_GPS_STATUS CONSTRUCT_TAGID(GPS_STATUS, _ID_GPS_STATUS) 418 #define EXIFTATTYPE_GPS_STATUS EXIF_ASCII 419 // GPS Measure Mode 420 // Use EXIFTAGTYPE_GPS_MEASUREMODE as the exif_tag_type (EXIF_ASCII) 421 // It should be 2 characters long including the null-terminating character. 422 // "2" - 2-dimensional measurement 423 // "3" - 3-dimensional measurement 424 // Other - Reserved 425 #define _ID_GPS_MEASUREMODE 0x000a 426 #define EXIFTAGID_GPS_MEASUREMODE \ 427 CONSTRUCT_TAGID(GPS_MEASUREMODE, _ID_GPS_MEASUREMODE) 428 #define EXIFTAGTYPE_GPS_MEASUREMODE EXIF_ASCII 429 // GPS Measurement precision (DOP) 430 // Use EXIFTAGTYPE_GPS_DOP as the exif_tag_type (EXIF_RATIONAL) 431 // Count should be 1 432 #define _ID_GPS_DOP 0x000b 433 #define EXIFTAGID_GPS_DOP CONSTRUCT_TAGID(GPS_DOP, _ID_GPS_DOP) 434 #define EXIFTAGTYPE_GPS_DOP EXIF_RATIONAL 435 // Speed Unit 436 // Use EXIFTAGTYPE_GPS_SPEED_REF as the exif_tag_type (EXIF_ASCII) 437 // It should be 2 characters long including the null-terminating character. 438 // "K" - Kilometers per hour 439 // "M" - Miles per hour 440 // "N" - Knots 441 // Other - Reserved 442 #define _ID_GPS_SPEED_REF 0x000c 443 #define EXIFTAGID_GPS_SPEED_REF \ 444 CONSTRUCT_TAGID(GPS_SPEED_REF, _ID_GPS_SPEED_REF) 445 #define EXIFTAGTYPE_GPS_SPEED_REF EXIF_ASCII 446 // Speed of GPS receiver 447 // Use EXIFTAGTYPE_GPS_SPEED as the exif_tag_type (EXIF_RATIONAL) 448 // Count should be 1 449 #define _ID_GPS_SPEED 0x000d 450 #define EXIFTAGID_GPS_SPEED CONSTRUCT_TAGID(GPS_SPEED, _ID_GPS_SPEED) 451 #define EXIFTAGTYPE_GPS_SPEED EXIF_RATIONAL 452 // Reference of direction of movement 453 // Use EXIFTAGTYPE_GPS_TRACK_REF as the exif_tag_type (EXIF_ASCII) 454 // It should be 2 characters long including the null-terminating character. 455 // "T" - True direction 456 // "M" - Magnetic direction 457 // Other - Reserved 458 #define _ID_GPS_TRACK_REF 0x000e 459 #define EXIFTAGID_GPS_TRACK_REF \ 460 CONSTRUCT_TAGID(GPS_TRACK_REF, _ID_GPS_TRACK_REF) 461 #define EXIFTAGTYPE_GPS_TRACK_REF EXIF_ASCII 462 // Direction of movement 463 // Use EXIFTAGTYPE_GPS_TRACK as the exif_tag_type (EXIF_RATIONAL) 464 // Count should be 1 465 #define _ID_GPS_TRACK 0x000f 466 #define EXIFTAGID_GPS_TRACK CONSTRUCT_TAGID(GPS_TRACK, _ID_GPS_TRACK) 467 #define EXIFTAGTYPE_GPS_TRACK EXIF_RATIONAL 468 // Reference of direction of image 469 // Use EXIFTAGTYPE_GPS_IMGDIRECTION_REF as the exif_tag_type (EXIF_ASCII) 470 // It should be 2 characters long including the null-terminating character. 471 // "T" - True direction 472 // "M" - Magnetic direction 473 // Other - Reserved 474 #define _ID_GPS_IMGDIRECTION_REF 0x0010 475 #define EXIFTAGID_GPS_IMGDIRECTION_REF \ 476 CONSTRUCT_TAGID(GPS_IMGDIRECTION_REF, _ID_GPS_IMGDIRECTION_REF) 477 #define EXIFTAGTYPE_GPS_IMGDIRECTION_REF EXIF_ASCII 478 // Direction of image 479 // Use EXIFTAGTYPE_GPS_IMGDIRECTION as the exif_tag_type (EXIF_RATIONAL) 480 // Count should be 1 481 #define _ID_GPS_IMGDIRECTION 0x0011 482 #define EXIFTAGID_GPS_IMGDIRECTION \ 483 CONSTRUCT_TAGID(GPS_IMGDIRECTION, _ID_GPS_IMGDIRECTION) 484 #define EXIFTAGTYPE_GPS_IMGDIRECTION EXIF_RATIONAL 485 // Geodetic survey data used 486 // Use EXIFTAGTYPE_GPS_MAPDATUM as the exif_tag_type (EXIF_ASCII) 487 // Count can be any 488 #define _ID_GPS_MAPDATUM 0x0012 489 #define EXIFTAGID_GPS_MAPDATUM CONSTRUCT_TAGID(GPS_MAPDATUM, _ID_GPS_MAPDATUM) 490 #define EXIFTAGTYPE_GPS_MAPDATUM EXIF_ASCII 491 // Reference for latitude of destination 492 // Use EXIFTAGTYPE_GPS_DESTLATITUDE_REF as the exif_tag_type (EXIF_ASCII) 493 // It should be 2 characters long including the null-terminating character. 494 // "N" - North latitude 495 // "S" - South latitude 496 // Other - Reserved 497 #define _ID_GPS_DESTLATITUDE_REF 0x0013 498 #define EXIFTAGID_GPS_DESTLATITUDE_REF \ 499 CONSTRUCT_TAGID(GPS_DESTLATITUDE_REF, _ID_GPS_DESTLATITUDE_REF) 500 #define EXIFTAGTYPE_GPS_DESTLATITUDE_REF EXIF_ASCII 501 // Latitude of destination 502 // Use EXIFTAGTYPE_GPS_DESTLATITUDE as the exif_tag_type (EXIF_RATIONAL) 503 // Count should be 3 504 #define _ID_GPS_DESTLATITUDE 0x0014 505 #define EXIFTAGID_GPS_DESTLATITUDE \ 506 CONSTRUCT_TAGID(GPS_DESTLATITUDE, _ID_GPS_DESTLATITUDE) 507 #define EXIFTAGTYPE_GPS_DESTLATITUDE EXIF_RATIONAL 508 // Reference for longitude of destination 509 // Use EXIFTAGTYPE_GPS_DESTLONGITUDE_REF as the exif_tag_type (EXIF_ASCII) 510 // It should be 2 characters long including the null-terminating character. 511 // "E" - East longitude 512 // "W" - West longitude 513 // Other - Reserved 514 #define _ID_GPS_DESTLONGITUDE_REF 0x0015 515 #define EXIFTAGID_GPS_DESTLONGITUDE_REF \ 516 CONSTRUCT_TAGID(GPS_DESTLONGITUDE_REF, _ID_GPS_DESTLONGITUDE_REF) 517 #define EXIFTAGTYPE_GPS_DESTLONGITUDE_REF EXIF_ASCII 518 // Longitude of destination 519 // Use EXIFTAGTYPE_GPS_DESTLONGITUDE as the exif_tag_type (EXIF_RATIONAL) 520 // Count should be 3 521 #define _ID_GPS_DESTLONGITUDE 0x0016 522 #define EXIFTAGID_GPS_DESTLONGITUDE CONSTRUCT_TAGID(GPS_DESTLONGITUDE, _ID_GPS_DESTLONGITUDE) 523 #define EXIFTAGTYPE_GPS_DESTLONGITUDE EXIF_RATIONAL 524 // Reference for bearing of destination 525 // Use EXIFTAGTYPE_GPS_DESTBEARING_REF as the exif_tag_type (EXIF_ASCII) 526 // It should be 2 characters long including the null-terminating character. 527 // "T" - True direction 528 // "M" - Magnetic direction 529 // Other - Reserved 530 #define _ID_GPS_DESTBEARING_REF 0x0017 531 #define EXIFTAGID_GPS_DESTBEARING_REF \ 532 CONSTRUCT_TAGID(GPS_DESTBEARING_REF, _ID_GPS_DESTBEARING_REF) 533 #define EXIFTAGTYPE_GPS_DESTBEARING_REF EXIF_ASCII 534 // Bearing of destination 535 // Use EXIFTAGTYPE_GPS_DESTBEARING as the exif_tag_type (EXIF_RATIONAL) 536 // Count should be 1 537 #define _ID_GPS_DESTBEARING 0x0018 538 #define EXIFTAGID_GPS_DESTBEARING \ 539 CONSTRUCT_TAGID(GPS_DESTBEARING, _ID_GPS_DESTBEARING) 540 #define EXIFTAGTYPE_GPS_DESTBEARING EXIF_RATIONAL 541 // Reference for distance to destination 542 // Use EXIFTAGTYPE_GPS_DESTDISTANCE_REF as the exif_tag_type (EXIF_ASCII) 543 // It should be 2 characters long including the null-terminating character. 544 // "K" - Kilometers per hour 545 // "M" - Miles per hour 546 // "N" - Knots 547 // Other - Reserved 548 #define _ID_GPS_DESTDISTANCE_REF 0x0019 549 #define EXIFTAGID_GPS_DESTDISTANCE_REF \ 550 CONSTRUCT_TAGID(GPS_DESTDISTANCE_REF, _ID_GPS_DESTDISTANCE_REF) 551 #define EXIFTAGTYPE_GPS_DESTDISTANCE_REF EXIF_ASCII 552 // Distance to destination 553 // Use EXIFTAGTYPE_GPS_DESTDISTANCE as the exif_tag_type (EXIF_RATIONAL) 554 // Count should be 1 555 #define _ID_GPS_DESTDISTANCE 0x001a 556 #define EXIFTAGID_GPS_DESTDISTANCE \ 557 CONSTRUCT_TAGID(GPS_DESTDISTANCE, _ID_GPS_DESTDISTANCE) 558 #define EXIFTAGTYPE_GPS_DESTDISTANCE EXIF_RATIONAL 559 // Name of GPS processing method 560 // Use EXIFTAGTYPE_GPS_PROCESSINGMETHOD as the exif_tag_type (EXIF_UNDEFINED) 561 // Count can be any 562 #define _ID_GPS_PROCESSINGMETHOD 0x001b 563 #define EXIFTAGID_GPS_PROCESSINGMETHOD \ 564 CONSTRUCT_TAGID(GPS_PROCESSINGMETHOD, _ID_GPS_PROCESSINGMETHOD) 565 #define EXIFTAGTYPE_GPS_PROCESSINGMETHOD EXIF_UNDEFINED 566 // Name of GPS area 567 // Use EXIFTAGTYPE_GPS_AREAINFORMATION as the exif_tag_type (EXIF_UNDEFINED) 568 // Count can be any 569 #define _ID_GPS_AREAINFORMATION 0x001c 570 #define EXIFTAGID_GPS_AREAINFORMATION \ 571 CONSTRUCT_TAGID(GPS_AREAINFORMATION, _ID_GPS_AREAINFORMATION) 572 #define EXIFTAGTYPE_GPS_AREAINFORMATION EXIF_UNDEFINED 573 // GPS date 574 // Use EXIFTAGTYPE_GPS_DATESTAMP as the exif_tag_type (EXIF_ASCII) 575 // It should be 11 characters long including the null-terminating character. 576 #define _ID_GPS_DATESTAMP 0x001d 577 #define EXIFTAGID_GPS_DATESTAMP \ 578 CONSTRUCT_TAGID(GPS_DATESTAMP, _ID_GPS_DATESTAMP) 579 #define EXIFTAGTYPE_GPS_DATESTAMP EXIF_ASCII 580 // GPS differential correction 581 // Use EXIFTAGTYPE_GPS_DIFFERENTIAL as the exif_tag_type (EXIF_SHORT) 582 // Count should be 1 583 // 0 - Measurement without differential correction 584 // 1 - Differential correction applied 585 // Other - Reserved 586 #define _ID_GPS_DIFFERENTIAL 0x001e 587 #define EXIFTAGID_GPS_DIFFERENTIAL \ 588 CONSTRUCT_TAGID(GPS_DIFFERENTIAL, _ID_GPS_DIFFERENTIAL) 589 #define EXIFTAGTYPE_GPS_DIFFERENTIAL EXIF_SHORT 590 // Image width 591 // Use EXIFTAGTYPE_IMAGE_WIDTH as the exif_tag_type (EXIF_LONG) 592 // Count should be 1 593 #define _ID_IMAGE_WIDTH 0x0100 594 #define EXIFTAGID_IMAGE_WIDTH CONSTRUCT_TAGID(IMAGE_WIDTH, _ID_IMAGE_WIDTH) 595 #define EXIFTAGTYPE_IMAGE_WIDTH EXIF_LONG 596 // Image height 597 // Use EXIFTAGTYPE_IMAGE_LENGTH as the exif_tag_type (EXIF_SHORT_OR_LONG) 598 // Count should be 1 599 #define _ID_IMAGE_LENGTH 0x0101 600 #define EXIFTAGID_IMAGE_LENGTH CONSTRUCT_TAGID(IMAGE_LENGTH, _ID_IMAGE_LENGTH) 601 #define EXIFTAGTYPE_IMAGE_LENGTH EXIF_LONG 602 // Number of bits per component 603 // Use EXIFTAGTYPE_BITS_PER_SAMPLE as the exif_tag_type (EXIF_SHORT) 604 // Count should be 1 605 #define _ID_BITS_PER_SAMPLE 0x0102 606 #define EXIFTAGID_BITS_PER_SAMPLE \ 607 CONSTRUCT_TAGID(BITS_PER_SAMPLE, _ID_BITS_PER_SAMPLE) 608 #define EXIFTAGTYPE_BITS_PER_SAMPLE EXIF_SHORT 609 // Compression scheme 610 // Use EXIFTAGTYPE_COMPRESSION as the exif_tag_type (EXIF_SHORT) 611 // Count should be 1 612 #define _ID_COMPRESSION 0x0103 613 #define EXIFTAGID_COMPRESSION CONSTRUCT_TAGID(COMPRESSION, _ID_COMPRESSION) 614 #define EXIFTAGTYPE_COMPRESSION EXIF_SHORT 615 // Pixel composition 616 // Use EXIFTAGTYPE_PHOTOMETRIC_INTERPRETATION as the exif_tag_type (EXIF_SHORT) 617 // Count should be 1 618 #define _ID_PHOTOMETRIC_INTERPRETATION 0x0106 619 #define EXIFTAGID_PHOTOMETRIC_INTERPRETATION \ 620 CONSTRUCT_TAGID(PHOTOMETRIC_INTERPRETATION, _ID_PHOTOMETRIC_INTERPRETATION) 621 #define EXIFTAGTYPE_PHOTOMETRIC_INTERPRETATION EXIF_SHORT 622 623 // Thresholding 624 // Use EXIFTAGTYPE_THRESH_HOLDING as the exif_tag_type (EXIF_SHORT) 625 // 626 //1 = No dithering or halftoning 627 //2 = Ordered dither or halftone 628 //3 = Randomized dither 629 #define _ID_THRESH_HOLDING 0x0107 630 #define EXIFTAGID_THRESH_HOLDING \ 631 CONSTRUCT_TAGID(THRESH_HOLDING, _ID_THRESH_HOLDING) 632 #define EXIFTAGTYPE_THRESH_HOLDING EXIF_SHORT 633 634 // Cell Width 635 // Use EXIFTAGTYPE_CELL_WIDTH as the exif_tag_type (EXIF_SHORT) 636 // 637 #define _ID_CELL_WIDTH 0x0108 638 #define EXIFTAGID_CELL_WIDTH CONSTRUCT_TAGID(CELL_WIDTH, _ID_CELL_WIDTH) 639 #define EXIFTAGTYPE_CELL_WIDTH EXIF_SHORT 640 // Cell Height 641 // Use EXIFTAGTYPE_CELL_HEIGHT as the exif_tag_type (EXIF_SHORT) 642 // Count should be 1 643 #define _ID_CELL_HEIGHT 0x0109 644 #define EXIFTAGID_CELL_HEIGHT CONSTRUCT_TAGID(CELL_HEIGHT, _ID_CELL_HEIGHT) 645 #define EXIFTAGTYPE_CELL_HEIGHT EXIF_SHORT 646 // Fill Order 647 // Use EXIFTAGTYPE_FILL_ORDER as the exif_tag_type (EXIF_SHORT) 648 // 1 = Normal 649 // 2 = Reversed 650 #define _ID_FILL_ORDER 0x010A 651 #define EXIFTAGID_FILL_ORDER CONSTRUCT_TAGID(FILL_ORDER, _ID_FILL_ORDER) 652 #define EXIFTAGTYPE_FILL_ORDER EXIF_SHORT 653 654 // DOCUMENT NAME 655 // Use EXIFTAGTYPE_DOCUMENT_NAME as the exif_tag_type (EXIF_ASCII) 656 // 657 #define _ID_DOCUMENT_NAME 0x010D 658 #define EXIFTAGID_DOCUMENT_NAME CONSTRUCT_TAGID(DOCUMENT_NAME, _ID_DOCUMENT_NAME) 659 #define EXIFTAGTYPE_DOCUMENT_NAME EXIF_ASCII 660 661 // Image title 662 // Use EXIFTAGTYPE_IMAGE_DESCRIPTION as the exif_tag_type (EXIF_ASCII) 663 // Count can be any 664 #define _ID_IMAGE_DESCRIPTION 0x010e 665 #define EXIFTAGID_IMAGE_DESCRIPTION \ 666 CONSTRUCT_TAGID(IMAGE_DESCRIPTION, _ID_IMAGE_DESCRIPTION) 667 #define EXIFTAGTYPE_IMAGE_DESCRIPTION EXIF_ASCII 668 // Image input equipment manufacturer 669 // Use EXIFTAGTYPE_MAKE as the exif_tag_type (EXIF_ASCII) 670 // Count can be any 671 #define _ID_MAKE 0x010f 672 #define EXIFTAGID_MAKE CONSTRUCT_TAGID(MAKE, _ID_MAKE) 673 #define EXIFTAGTYPE_MAKE EXIF_ASCII 674 // Image input equipment model 675 // Use EXIFTAGTYPE_MODEL as the exif_tag_type (EXIF_ASCII) 676 // Count can be any 677 #define _ID_MODEL 0x0110 678 #define EXIFTAGID_MODEL CONSTRUCT_TAGID(MODEL, _ID_MODEL) 679 #define EXIFTAGTYPE_MODEL EXIF_ASCII 680 // Image data location 681 // Use EXIFTAGTYPE_STRIP_OFFSETS as the exif_tag_type (EXIF_LONG) 682 // Count = StripsPerImage when PlanarConfiguration = 1 683 // = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 684 #define _ID_STRIP_OFFSETS 0x0111 685 #define EXIFTAGID_STRIP_OFFSETS \ 686 CONSTRUCT_TAGID(STRIP_OFFSETS, _ID_STRIP_OFFSETS) 687 #define EXIFTAGTYPE_STRIP_OFFSETS EXIF_LONG 688 // Orientation of image 689 // Use EXIFTAGTYPE_ORIENTATION as the exif_tag_type (EXIF_SHORT) 690 // Count should be 1 691 #define _ID_ORIENTATION 0x0112 692 #define EXIFTAGID_ORIENTATION CONSTRUCT_TAGID(ORIENTATION, _ID_ORIENTATION) 693 #define EXIFTAGTYPE_ORIENTATION EXIF_SHORT 694 // Number of components 695 // Use EXIFTAGTYPE_SAMPLES_PER_PIXEL as the exif_tag_type (EXIF_SHORT) 696 // Count should be 1 697 #define _ID_SAMPLES_PER_PIXEL 0x0115 698 #define EXIFTAGID_SAMPLES_PER_PIXEL \ 699 CONSTRUCT_TAGID(SAMPLES_PER_PIXEL, _ID_SAMPLES_PER_PIXEL) 700 #define EXIFTAGTYPE_SAMPLES_PER_PIXEL EXIF_SHORT 701 // Number of rows per strip 702 // Use EXIFTAGTYPE_ROWS_PER_STRIP as the exif_tag_type (EXIF_LONG) 703 // Count should be 1 704 #define _ID_ROWS_PER_STRIP 0x0116 705 #define EXIFTAGID_ROWS_PER_STRIP \ 706 CONSTRUCT_TAGID(ROWS_PER_STRIP, _ID_ROWS_PER_STRIP) 707 #define EXIFTAGTYPE_ROWS_PER_STRIP EXIF_LONG 708 // Bytes per compressed strip 709 // Use EXIFTAGTYPE_STRIP_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 710 // Count = StripsPerImage when PlanarConfiguration = 1 711 // = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 712 #define _ID_STRIP_BYTE_COUNTS 0x0117 713 #define EXIFTAGID_STRIP_BYTE_COUNTS \ 714 CONSTRUCT_TAGID(STRIP_BYTE_COUNTS, _ID_STRIP_BYTE_COUNTS) 715 #define EXIFTAGTYPE_STRIP_BYTE_COUNTS EXIF_LONG 716 // MinSampleValue 717 // Use EXIFTAGTYPE_MIN_SAMPLE_VALUE as the exif_tag_type (EXIF_SHORT) 718 #define _ID_MIN_SAMPLE_VALUE 0x0118 719 #define EXIFTAGID_MIN_SAMPLE_VALUE \ 720 CONSTRUCT_TAGID(MIN_SAMPLE_VALUE, _ID_MIN_SAMPLE_VALUE) 721 #define EXIFTAGTYPE_MIN_SAMPLE_VALUE EXIF_SHORT 722 // MaxSampleValue 723 // Use EXIFTAGTYPE_MAX_SAMPLE_VALUE as the exif_tag_type (EXIF_SHORT) 724 #define _ID_MAX_SAMPLE_VALUE 0x0119 725 #define EXIFTAGID_MAX_SAMPLE_VALUE CONSTRUCT_TAGID(MAX_SAMPLE_VALUE, _ID_MAX_SAMPLE_VALUE) 726 #define EXIFTAGTYPE_MAX_SAMPLE_VALUE EXIF_SHORT 727 728 // Image resolution in width direction 729 // Use EXIFTAGTYPE_X_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 730 // Count should be 1 731 #define _ID_X_RESOLUTION 0x011a 732 #define EXIFTAGID_X_RESOLUTION \ 733 CONSTRUCT_TAGID(X_RESOLUTION, _ID_X_RESOLUTION) 734 #define EXIFTAGTYPE_X_RESOLUTION EXIF_RATIONAL 735 // Image resolution in height direction 736 // Use EXIFTAGTYPE_Y_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 737 // Count should be 1 738 #define _ID_Y_RESOLUTION 0x011b 739 #define EXIFTAGID_Y_RESOLUTION \ 740 CONSTRUCT_TAGID(Y_RESOLUTION, _ID_Y_RESOLUTION) 741 #define EXIFTAGTYPE_Y_RESOLUTION EXIF_RATIONAL 742 // Image data arrangement 743 // Use EXIFTAGTYPE_PLANAR_CONFIGURATION as the exif_tag_type (EXIF_SHORT) 744 // Count should be 1 745 #define _ID_PLANAR_CONFIGURATION 0x011c 746 #define EXIFTAGID_PLANAR_CONFIGURATION \ 747 CONSTRUCT_TAGID(PLANAR_CONFIGURATION, _ID_PLANAR_CONFIGURATION) 748 #define EXIFTAGTYPE_PLANAR_CONFIGURATION EXIF_SHORT 749 // PageName 750 // Use EXIFTAGTYPE_PAGE_NAME as the exif_tag_type (EXIF_ASCII) 751 // Count should be 1 752 #define _ID_PAGE_NAME 0x011d 753 #define EXIFTAGID_PAGE_NAME CONSTRUCT_TAGID(PAGE_NAME, _ID_PAGE_NAME) 754 #define EXIFTAGTYPE_PAGE_NAME EXIF_ASCII 755 // XPosition 756 // Use EXIFTAGTYPE_X_POSITION as the exif_tag_type (EXIF_RATIONAL) 757 // 758 #define _ID_X_POSITION 0x011e 759 #define EXIFTAGID_X_POSITION CONSTRUCT_TAGID(X_POSITION, _ID_X_POSITION) 760 #define EXIFTAGTYPE_X_POSITION EXIF_RATIONAL 761 // YPosition 762 // Use EXIFTAGTYPE_Y_POSITION as the exif_tag_type (EXIF_RATIONAL) 763 // 764 #define _ID_Y_POSITION 0x011f 765 #define EXIFTAGID_Y_POSITION CONSTRUCT_TAGID(Y_POSITION, _ID_Y_POSITION) 766 #define EXIFTAGTYPE_Y_POSITION EXIF_RATIONAL 767 768 // FREE_OFFSET 769 // Use EXIFTAGTYPE_FREE_OFFSET as the exif_tag_type (EXIF_LONG) 770 // 771 #define _ID_FREE_OFFSET 0x0120 772 #define EXIFTAGID_FREE_OFFSET CONSTRUCT_TAGID(FREE_OFFSET, _ID_FREE_OFFSET) 773 #define EXIFTAGTYPE_FREE_OFFSET EXIF_LONG 774 // FREE_BYTE_COUNTS 775 // Use EXIFTAGTYPE_FREE_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 776 // 777 #define _ID_FREE_BYTE_COUNTS 0x0121 778 #define EXIFTAGID_FREE_BYTE_COUNTS \ 779 CONSTRUCT_TAGID(FREE_BYTE_COUNTS, _ID_FREE_BYTE_COUNTS) 780 #define EXIFTAGTYPE_FREE_BYTE_COUNTS EXIF_LONG 781 782 // GrayResponseUnit 783 // Use EXIFTAGTYPE_GRAY_RESPONSE_UNIT as the exif_tag_type (EXIF_SHORT) 784 // 785 #define _ID_GRAY_RESPONSE_UNIT 0x0122 786 #define EXIFTAGID_GRAY_RESPONSE_UNIT \ 787 CONSTRUCT_TAGID(GRAY_RESPONSE_UNIT, _ID_GRAY_RESPONSE_UNIT) 788 #define EXIFTAGTYPE_GRAY_RESPONSE_UNIT EXIF_SHORT 789 // GrayResponseCurve 790 // Use EXIFTAGTYPE_GRAY_RESPONSE_CURVE as the exif_tag_type (EXIF_SHORT) 791 // 792 #define _ID_GRAY_RESPONSE_CURVE 0x0123 793 #define EXIFTAGID_GRAY_RESPONSE_CURVE \ 794 CONSTRUCT_TAGID(GRAY_RESPONSE_CURVE , _ID_GRAY_RESPONSE_CURVE ) 795 #define EXIFTAGTYPE_GRAY_RESPONSE_CURVE EXIF_SHORT 796 797 // T4_OPTION 798 // Use EXIFTAGTYPE_T4_OPTION as the exif_tag_type (EXIF_LONG) 799 // 800 #define _ID_T4_OPTION 0x0124 801 #define EXIFTAGID_T4_OPTION CONSTRUCT_TAGID(T4_OPTION, _ID_T4_OPTION) 802 #define EXIFTAGTYPE_T4_OPTION EXIF_LONG 803 // T6_OPTION 804 // Use EXIFTAGTYPE_T6_OPTION as the exif_tag_type (EXIF_LONG) 805 // 806 #define _ID_T6_OPTION 0x0125 807 #define EXIFTAGID_T6_OPTION CONSTRUCT_TAGID(T6_OPTION, _ID_T6_OPTION) 808 #define EXIFTAGTYPE_T6_OPTION EXIF_LONG 809 810 // Unit of X and Y resolution 811 // Use EXIFTAGTYPE_RESOLUTION_UNIT as the exif_tag_type (EXIF_SHORT) 812 // Count should be 1 813 #define _ID_RESOLUTION_UNIT 0x0128 814 #define EXIFTAGID_RESOLUTION_UNIT \ 815 CONSTRUCT_TAGID(RESOLUTION_UNIT, _ID_RESOLUTION_UNIT) 816 #define EXIFTAGTYPE_RESOLUTION_UNIT EXIF_SHORT 817 818 // Page Number 819 // Use EXIFTAGTYPE_PAGE_NUMBER as the exif_tag_type (EXIF_SHORT) 820 // Count should be 1 821 #define _ID_PAGE_NUMBER 0x0129 822 #define EXIFTAGID_PAGE_NUMBER CONSTRUCT_TAGID(PAGE_NUMBER, _ID_PAGE_NUMBER) 823 #define EXIFTAGTYPE_PAGE_NUMBER EXIF_SHORT 824 // Transfer function 825 // Use EXIFTAGTYPE_TRANSFER_FUNCTION as the exif_tag_type (EXIF_SHORT) 826 // Count should be 3*256 827 #define _ID_TRANSFER_FUNCTION 0x012d 828 #define EXIFTAGID_TRANSFER_FUNCTION \ 829 CONSTRUCT_TAGID(TRANSFER_FUNCTION, _ID_TRANSFER_FUNCTION) 830 #define EXIFTAGTYPE_TRANSFER_FUNCTION EXIF_SHORT 831 // Software used 832 // Use EXIFTAGTYPE_SOFTWARE as the exif_tag_type (EXIF_ASCII) 833 // Count can be any 834 #define _ID_SOFTWARE 0x0131 835 #define EXIFTAGID_SOFTWARE CONSTRUCT_TAGID(SOFTWARE, _ID_SOFTWARE) 836 #define EXIFTAGTYPE_SOFTWARE EXIF_ASCII 837 // File change date and time 838 // Use EXIFTAGTYPE_DATE_TIME as the exif_tag_type (EXIF_ASCII) 839 // Count should be 20 840 #define _ID_DATE_TIME 0x0132 841 #define EXIFTAGID_DATE_TIME CONSTRUCT_TAGID(DATE_TIME, _ID_DATE_TIME) 842 #define EXIFTAGTYPE_DATE_TIME EXIF_ASCII 843 // ARTIST, person who created this image 844 // Use EXIFTAGTYPE_ARTIST as the exif_tag_type (EXIF_ASCII) 845 // Count can be any 846 #define _ID_ARTIST 0x013b 847 #define EXIFTAGID_ARTIST CONSTRUCT_TAGID(ARTIST, _ID_ARTIST) 848 #define EXIFTAGTYPE_ARTIST EXIF_ASCII 849 // Host Computer Name 850 // Use EXIFTAGTYPE_HOST_COMPUTER as the exif_tag_type (EXIF_ASCII) 851 // Count can be any 852 #define _ID_HOST_COMPUTER 0x013c 853 #define EXIFTAGID_HOST_COMPUTER \ 854 CONSTRUCT_TAGID(HOST_COMPUTER , _ID_HOST_COMPUTER ) 855 #define EXIFTAGTYPE_HOST_COMPUTER EXIF_ASCII 856 // Predictor 857 // Use EXIFTAGTYPE_PREDICTOR as the exif_tag_type (EXIF_SHORT) 858 // Count can be any 859 #define _ID_PREDICTOR 0x013d 860 #define EXIFTAGID_PREDICTOR CONSTRUCT_TAGID(PREDICTOR , _ID_PREDICTOR ) 861 #define EXIFTAGTYPE_PREDICTOR EXIF_SHORT 862 // White point chromaticity 863 // Use EXIFTAGTYPE_WHITE_POINT as the exif_tag_type (EXIF_RATIONAL) 864 // Count should be 2 865 #define _ID_WHITE_POINT 0x013e 866 #define EXIFTAGID_WHITE_POINT CONSTRUCT_TAGID(WHITE_POINT, _ID_WHITE_POINT) 867 #define EXIFTAGTYPE_WHITE_POINT EXIF_RATIONAL 868 // Chromaticities of primaries 869 // Use EXIFTAGTYPE_PRIMARY_CHROMATICITIES as the exif_tag_type (EXIF_RATIONAL) 870 // Count should be 6 871 #define _ID_PRIMARY_CHROMATICITIES 0x013f 872 #define EXIFTAGID_PRIMARY_CHROMATICITIES \ 873 CONSTRUCT_TAGID(PRIMARY_CHROMATICITIES, _ID_PRIMARY_CHROMATICITIES) 874 #define EXIFTAGTYPE_PRIMARY_CHROMATICITIES EXIF_RATIONAL 875 876 // COLOR_MAP 877 // Use EXIFTAGTYPE_COLOR_MAP as the exif_tag_type (EXIF_SHORT) 878 // Count should be 6 879 #define _ID_COLOR_MAP 0x0140 880 #define EXIFTAGID_COLOR_MAP CONSTRUCT_TAGID(COLOR_MAP, _ID_COLOR_MAP) 881 #define EXIFTAGTYPE_COLOR_MAP EXIF_SHORT 882 // HALFTONE_HINTS 883 // Use EXIFTAGTYPE_HALFTONE_HINTS as the exif_tag_type (EXIF_SHORT) 884 // Count should be 6 885 #define _ID_HALFTONE_HINTS 0x0141 886 #define EXIFTAGID_HALFTONE_HINTS \ 887 CONSTRUCT_TAGID(HALFTONE_HINTS, _ID_HALFTONE_HINTS) 888 #define EXIFTAGTYPE_HALFTONE_HINTS EXIF_SHORT 889 890 // TILE_WIDTH 891 // Use EXIFTAGTYPE_TILE_WIDTH as the exif_tag_type (EXIF_LONG) 892 // Count should be 6 893 #define _ID_TILE_WIDTH 0x0142 894 #define EXIFTAGID_TILE_WIDTH CONSTRUCT_TAGID(TILE_WIDTH, _ID_TILE_WIDTH) 895 #define EXIFTAGTYPE_TILE_WIDTH EXIF_LONG 896 // TILE_LENGTH 897 // Use EXIFTAGTYPE_TILE_LENGTH as the exif_tag_type (EXIF_LONG) 898 // Count should be 6 899 #define _ID_TILE_LENGTH 0x0143 900 #define EXIFTAGID_TILE_LENGTH CONSTRUCT_TAGID(TILE_LENGTH , _ID_TILE_LENGTH ) 901 #define EXIFTAGTYPE_TILE_LENGTH EXIF_LONG 902 // TILE_OFFSET 903 // Use EXIFTAGTYPE_TILE_OFFSET as the exif_tag_type (EXIF_LONG) 904 // 905 #define _ID_TILE_OFFSET 0x0144 906 #define EXIFTAGID_TILE_OFFSET CONSTRUCT_TAGID(TILE_OFFSET , _ID_TILE_OFFSET ) 907 #define EXIFTAGTYPE_TILE_OFFSET EXIF_LONG 908 // tile Byte Counts 909 // Use EXIFTAGTYPE_TILE_OFFSET as the exif_tag_type (EXIF_LONG) 910 // 911 #define _ID_TILE_BYTE_COUNTS 0x0145 912 #define EXIFTAGID_TILE_BYTE_COUNTS \ 913 CONSTRUCT_TAGID(TILE_BYTE_COUNTS , _ID_TILE_BYTE_COUNTS ) 914 #define EXIFTAGTYPE_TILE_BYTE_COUNTS EXIF_LONG 915 916 // INK_SET 917 // Use EXIFTAGTYPE_TILE_LENGTH as the exif_tag_type (EXIF_SHORT) 918 // Count should be 6 919 #define _ID_INK_SET 0x014c 920 #define EXIFTAGID_INK_SET CONSTRUCT_TAGID(INK_SET , _ID_INK_SET ) 921 #define EXIFTAGTYPE_INK_SET EXIF_SHORT 922 // INK_NAMES 923 // Use EXIFTAGTYPE_INK_NAMES as the exif_tag_type (EXIF_ASCII) 924 // Count should be 6 925 #define _ID_INK_NAMES 0x014D 926 #define EXIFTAGID_INK_NAMES CONSTRUCT_TAGID(INK_NAMES , _ID_INK_NAMES) 927 #define EXIFTAGTYPE_INK_NAMES EXIF_ASCII 928 // NUMBER_OF_INKS 929 // Use EXIFTAGTYPE_NUMBER_OF_INKS as the exif_tag_type (EXIF_SHORT) 930 // Count should be 6 931 #define _ID_NUMBER_OF_INKS 0x014e 932 #define EXIFTAGID_NUMBER_OF_INKS \ 933 CONSTRUCT_TAGID(NUMBER_OF_INKS , _ID_NUMBER_OF_INKS ) 934 #define EXIFTAGTYPE_NUMBER_OF_INKS EXIF_SHORT 935 936 // DOT_RANGE 937 // Use EXIFTAGTYPE_DOT_RANGE as the exif_tag_type (EXIF_ASCII) 938 // Count should be 6 939 #define _ID_DOT_RANGE 0x0150 940 #define EXIFTAGID_DOT_RANGE CONSTRUCT_TAGID(DOT_RANGE , _ID_DOT_RANGE ) 941 #define EXIFTAGTYPE_DOT_RANGE EXIF_ASCII 942 943 // TARGET_PRINTER 944 // Use EXIFTAGTYPE_TARGET_PRINTER as the exif_tag_type (EXIF_ASCII) 945 // Count should be 6 946 #define _ID_TARGET_PRINTER 0x0151 947 #define EXIFTAGID_TARGET_PRINTER \ 948 CONSTRUCT_TAGID(TARGET_PRINTER , _ID_TARGET_PRINTER) 949 #define EXIFTAGTYPE_TARGET_PRINTER EXIF_ASCII 950 // EXTRA_SAMPLES 951 // Use EXIFTAGTYPE_EXTRA_SAMPLES as the exif_tag_type (EXIF_SHORT) 952 // Count should be 6 953 #define _ID_EXTRA_SAMPLES 0x0152 954 #define EXIFTAGID_EXTRA_SAMPLES \ 955 CONSTRUCT_TAGID(EXTRA_SAMPLES , _ID_EXTRA_SAMPLES ) 956 #define EXIFTAGTYPE_EXTRA_SAMPLES EXIF_SHORT 957 958 // SAMPLE_FORMAT 959 // Use EXIFTAGTYPE_SAMPLE_FORMAT as the exif_tag_type (EXIF_SHORT) 960 // Count should be 6 961 #define _ID_SAMPLE_FORMAT 0x0153 962 #define EXIFTAGID_SAMPLE_FORMAT \ 963 CONSTRUCT_TAGID(SAMPLE_FORMAT , _ID_SAMPLE_FORMAT ) 964 #define EXIFTAGTYPE_SAMPLE_FORMAT EXIF_SHORT 965 966 // Table of values that extends the range of the transfer function. 967 // Use EXIFTAGTYPE_TRANSFER_RANGE as the exif_tag_type (EXIF_SHORT) 968 // Count should be 6 969 #define _ID_TRANSFER_RANGE 0x0156 970 #define EXIFTAGID_TRANSFER_RANGE \ 971 CONSTRUCT_TAGID(TRANSFER_RANGE , _ID_TRANSFER_RANGE ) 972 #define EXIFTAGTYPE_TRANSFER_RANGE EXIF_SHORT 973 974 // JPEG compression process. 975 // Use EXIFTAGTYPE_JPEG_PROC as the exif_tag_type (EXIF_SHORT) 976 // 977 #define _ID_JPEG_PROC 0x0200 978 #define EXIFTAGID_JPEG_PROC CONSTRUCT_TAGID(JPEG_PROC , _ID_JPEG_PROC ) 979 #define EXIFTAGTYPE_JPEG_PROC EXIF_SHORT 980 981 982 // Offset to JPEG SOI 983 // Use EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT as the exif_tag_type (EXIF_LONG) 984 // Count is undefined 985 #define _ID_JPEG_INTERCHANGE_FORMAT 0x0201 986 #define EXIFTAGID_JPEG_INTERCHANGE_FORMAT \ 987 CONSTRUCT_TAGID(JPEG_INTERCHANGE_FORMAT, _ID_JPEG_INTERCHANGE_FORMAT) 988 #define EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT EXIF_LONG 989 // Bytes of JPEG data 990 // Use EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT_LENGTH as the exif_tag_type (EXIF_LONG) 991 // Count is undefined 992 #define _ID_JPEG_INTERCHANGE_FORMAT_LENGTH 0x0202 993 #define EXIFTAGID_JPEG_INTERCHANGE_FORMAT_LENGTH \ 994 CONSTRUCT_TAGID(JPEG_INTERCHANGE_FORMAT_LENGTH, \ 995 _ID_JPEG_INTERCHANGE_FORMAT_LENGTH) 996 #define EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT_LENGTH EXIF_LONG 997 998 // Length of the restart interval. 999 // Use EXIFTAGTYPE_JPEG_RESTART_INTERVAL as the exif_tag_type (EXIF_SHORT) 1000 // Count is undefined 1001 #define _ID_JPEG_RESTART_INTERVAL 0x0203 1002 #define EXIFTAGID_JPEG_RESTART_INTERVAL \ 1003 CONSTRUCT_TAGID(JPEG_RESTART_INTERVAL, _ID_JPEG_RESTART_INTERVAL) 1004 #define EXIFTAGTYPE_JPEG_RESTART_INTERVAL EXIF_SHORT 1005 1006 // JPEGLosslessPredictors 1007 // Use EXIFTAGTYPE_JPEG_LOSSLESS_PREDICTORS as the exif_tag_type (EXIF_SHORT) 1008 // Count is undefined 1009 #define _ID_JPEG_LOSSLESS_PREDICTORS 0x0205 1010 #define EXIFTAGID_JPEG_LOSSLESS_PREDICTORS \ 1011 CONSTRUCT_TAGID(JPEG_LOSSLESS_PREDICTORS, _ID_JPEG_LOSSLESS_PREDICTORS) 1012 #define EXIFTAGTYPE_JPEG_LOSSLESS_PREDICTORS EXIF_SHORT 1013 1014 // JPEGPointTransforms 1015 // Use EXIFTAGTYPE_JPEG_POINT_TRANSFORMS as the exif_tag_type (EXIF_SHORT) 1016 // Count is undefined 1017 #define _ID_JPEG_POINT_TRANSFORMS 0x0206 1018 #define EXIFTAGID_JPEG_POINT_TRANSFORMS \ 1019 CONSTRUCT_TAGID(JPEG_POINT_TRANSFORMS, _ID_JPEG_POINT_TRANSFORMS) 1020 #define EXIFTAGTYPE_JPEG_POINT_TRANSFORMS EXIF_SHORT 1021 1022 // JPEG_Q_TABLES 1023 // Use EXIFTAGTYPE_JPEG_Q_TABLES as the exif_tag_type (EXIF_LONG) 1024 // Count is undefined 1025 #define _ID_JPEG_Q_TABLES 0x0207 1026 #define EXIFTAGID_JPEG_Q_TABLES \ 1027 CONSTRUCT_TAGID(JPEG_Q_TABLES, _ID_JPEG_Q_TABLES) 1028 #define EXIFTAGTYPE_JPEG_Q_TABLES EXIF_LONG 1029 // JPEG_DC_TABLES 1030 // Use EXIFTAGTYPE_JPEG_DC_TABLES as the exif_tag_type (EXIF_LONG) 1031 // Count is undefined 1032 #define _ID_JPEG_DC_TABLES 0x0208 1033 #define EXIFTAGID_JPEG_DC_TABLES \ 1034 CONSTRUCT_TAGID(JPEG_DC_TABLES, _ID_JPEG_DC_TABLES) 1035 #define EXIFTAGTYPE_JPEG_DC_TABLES EXIF_LONG 1036 // JPEG_AC_TABLES 1037 // Use EXIFTAGTYPE_JPEG_AC_TABLES as the exif_tag_type (EXIF_LONG) 1038 // Count is undefined 1039 #define _ID_JPEG_AC_TABLES 0x0209 1040 #define EXIFTAGID_JPEG_AC_TABLES \ 1041 CONSTRUCT_TAGID(JPEG_AC_TABLES, _ID_JPEG_AC_TABLES) 1042 #define EXIFTAGTYPE_JPEG_AC_TABLES EXIF_LONG 1043 1044 // Color space transformation matrix coefficients 1045 // Use EXIFTAGTYPE_YCBCR_COEFFICIENTS as the exif_tag_type (EXIF_RATIONAL) 1046 // Count should be 3 1047 #define _ID_YCBCR_COEFFICIENTS 0x0211 1048 #define EXIFTAGID_YCBCR_COEFFICIENTS \ 1049 CONSTRUCT_TAGID(YCBCR_COEFFICIENTS, _ID_YCBCR_COEFFICIENTS) 1050 #define EXIFTAGTYPE_YCBCR_COEFFICIENTS EXIF_RATIONAL 1051 // Subsampling ratio of Y to C 1052 // Use EXIFTAGTYPE_YCBCR_SUB_SAMPLING as the exif_tag_type (EXIF_SHORT) 1053 // Count should be 2 1054 #define _ID_YCBCR_SUB_SAMPLING 0x0212 1055 #define EXIFTAGID_YCBCR_SUB_SAMPLING \ 1056 CONSTRUCT_TAGID(YCBCR_SUB_SAMPLING, _ID_YCBCR_SUB_SAMPLING) 1057 #define EXIFTAGTYPE_YCBCR_SUB_SAMPLING EXIF_SHORT 1058 // Y and C positioning 1059 // Use EXIFTAGTYPE_YCBCR_POSITIONING as the exif_tag_type (EXIF_SHORT) 1060 // Count should be 1 1061 #define _ID_YCBCR_POSITIONING 0x0213 1062 #define EXIFTAGID_YCBCR_POSITIONING \ 1063 CONSTRUCT_TAGID(YCBCR_POSITIONING, _ID_YCBCR_POSITIONING) 1064 #define EXIFTAGTYPE_YCBCR_POSITIONING EXIF_SHORT 1065 // Pair of black and white reference values 1066 // Use EXIFTAGTYPE_REFERENCE_BLACK_WHITE as the exif_tag_type (EXIF_RATIONAL) 1067 // Count should be 6 1068 #define _ID_REFERENCE_BLACK_WHITE 0x0214 1069 #define EXIFTAGID_REFERENCE_BLACK_WHITE \ 1070 CONSTRUCT_TAGID(REFERENCE_BLACK_WHITE, _ID_REFERENCE_BLACK_WHITE) 1071 #define EXIFTAGTYPE_REFERENCE_BLACK_WHITE EXIF_RATIONAL 1072 // GAMMA 1073 // Use EXIFTAGTYPE_GAMMA as the exif_tag_type (EXIF_RATIONAL) 1074 // Count should be 6 1075 #define _ID_GAMMA 0x0301 1076 #define EXIFTAGID_GAMMA CONSTRUCT_TAGID(GAMMA, _ID_GAMMA) 1077 #define EXIFTAGTYPE_GAMMA EXIF_RATIONAL 1078 // Null-terminated character string that identifies an ICC profile. 1079 // Use EXIFTAGTYPE_ICC_PROFILE_DESCRIPTOR as the exif_tag_type (EXIF_ASCII) 1080 // Count should be 6 1081 #define _ID_ICC_PROFILE_DESCRIPTOR 0x0302 1082 #define EXIFTAGID_ICC_PROFILE_DESCRIPTOR \ 1083 CONSTRUCT_TAGID(ICC_PROFILE_DESCRIPTOR, _ID_ICC_PROFILE_DESCRIPTOR) 1084 #define EXIFTAGTYPE_ICC_PROFILE_DESCRIPTOR EXIF_ASCII 1085 // SRGB_RENDERING_INTENT 1086 // Use EXIFTAGTYPE_SRGB_RENDERING_INTENT as the exif_tag_type (EXIF_BYTE) 1087 // Count should be 6 1088 #define _ID_SRGB_RENDERING_INTENT 0x0303 1089 #define EXIFTAGID_SRGB_RENDERING_INTENT \ 1090 CONSTRUCT_TAGID(SRGB_RENDERING_INTENT, _ID_SRGB_RENDERING_INTENT) 1091 #define EXIFTAGTYPE_SRGB_RENDERING_INTENT EXIF_BYTE 1092 1093 // Null-terminated character string that specifies the title of the image. 1094 // Use EXIFTAGTYPE_IMAGE_TITLE as the exif_tag_type (EXIF_ASCII ) 1095 // 1096 #define _ID_IMAGE_TITLE 0x0320 1097 #define EXIFTAGID_IMAGE_TITLE CONSTRUCT_TAGID(IMAGE_TITLE, _ID_IMAGE_TITLE) 1098 #define EXIFTAGTYPE_IMAGE_TITLE EXIF_ASCII 1099 1100 // Copyright holder 1101 // Use EXIFTAGTYPE_COPYRIGHT as the exif_tag_type (EXIF_ASCII) 1102 // Count can be any 1103 #define _ID_COPYRIGHT 0x8298 1104 #define EXIFTAGID_COPYRIGHT CONSTRUCT_TAGID(COPYRIGHT, _ID_COPYRIGHT) 1105 #define EXIFTAGTYPE_COPYRIGHT EXIF_ASCII 1106 // Old Subfile Type 1107 // Use EXIFTAGTYPE_NEW_SUBFILE_TYPE as the exif_tag_type (EXIF_SHORT) 1108 // Count can be any 1109 #define _ID_NEW_SUBFILE_TYPE 0x00fe 1110 #define EXIFTAGID_NEW_SUBFILE_TYPE \ 1111 CONSTRUCT_TAGID(NEW_SUBFILE_TYPE, _ID_NEW_SUBFILE_TYPE) 1112 #define EXIFTAGTYPE_NEW_SUBFILE_TYPE EXIF_SHORT 1113 1114 // New Subfile Type 1115 // Use EXIFTAGTYPE_NEW_SUBFILE_TYPE as the exif_tag_type (EXIF_LONG) 1116 // Count can be any 1117 #define _ID_SUBFILE_TYPE 0x00ff 1118 #define EXIFTAGID_SUBFILE_TYPE CONSTRUCT_TAGID(SUBFILE_TYPE, _ID_SUBFILE_TYPE) 1119 #define EXIFTAGTYPE_SUBFILE_TYPE EXIF_LONG 1120 1121 // Image width (of thumbnail) 1122 // Use EXIFTAGTYPE_TN_IMAGE_WIDTH as the exif_tag_type (EXIF_LONG) 1123 // Count should be 1 1124 #define _ID_TN_IMAGE_WIDTH 0x0100 1125 #define EXIFTAGID_TN_IMAGE_WIDTH \ 1126 CONSTRUCT_TAGID(TN_IMAGE_WIDTH, _ID_TN_IMAGE_WIDTH) 1127 #define EXIFTAGTYPE_TN_IMAGE_WIDTH EXIF_LONG 1128 // Image height (of thumbnail) 1129 // Use EXIFTAGTYPE_TN_IMAGE_LENGTH as the exif_tag_type (EXIF_SHORT_OR_LONG) 1130 // Count should be 1 1131 #define _ID_TN_IMAGE_LENGTH 0x0101 1132 #define EXIFTAGID_TN_IMAGE_LENGTH \ 1133 CONSTRUCT_TAGID(TN_IMAGE_LENGTH, _ID_TN_IMAGE_LENGTH) 1134 #define EXIFTAGTYPE_TN_IMAGE_LENGTH EXIF_LONG 1135 // Number of bits per component (of thumbnail) 1136 // Use EXIFTAGTYPE_TN_BITS_PER_SAMPLE as the exif_tag_type (EXIF_SHORT) 1137 // Count should be 1 1138 #define _ID_TN_BITS_PER_SAMPLE 0x0102 1139 #define EXIFTAGID_TN_BITS_PER_SAMPLE \ 1140 CONSTRUCT_TAGID(TN_BITS_PER_SAMPLE, _ID_TN_BITS_PER_SAMPLE) 1141 #define EXIFTAGTYPE_TN_BITS_PER_SAMPLE EXIF_SHORT 1142 // Compression scheme (of thumbnail) 1143 // Use EXIFTAGTYPE_TN_COMPRESSION as the exif_tag_type (EXIF_SHORT) 1144 // Count should be 1 1145 #define _ID_TN_COMPRESSION 0x0103 1146 #define EXIFTAGID_TN_COMPRESSION \ 1147 CONSTRUCT_TAGID(TN_COMPRESSION, _ID_TN_COMPRESSION) 1148 #define EXIFTAGTYPE_TN_COMPRESSION EXIF_SHORT 1149 // Pixel composition (of thumbnail) 1150 // Use EXIFTAGTYPE_TN_PHOTOMETRIC_INTERPRETATION as the 1151 // exif_tag_type (EXIF_SHORT) 1152 // Count should be 1 1153 #define _ID_TN_PHOTOMETRIC_INTERPRETATION 0x0106 1154 #define EXIFTAGID_TN_PHOTOMETRIC_INTERPRETATION \ 1155 CONSTRUCT_TAGID(TN_PHOTOMETRIC_INTERPRETATION, \ 1156 _ID_TN_PHOTOMETRIC_INTERPRETATION) 1157 #define EXIFTAGTYPE_TN_PHOTOMETRIC_INTERPRETATION EXIF_SHORT 1158 // Image title (of thumbnail) 1159 // Use EXIFTAGTYPE_TN_IMAGE_DESCRIPTION as the exif_tag_type (EXIF_ASCII) 1160 // Count can be any 1161 #define _ID_TN_IMAGE_DESCRIPTION 0x010e 1162 #define EXIFTAGID_TN_IMAGE_DESCRIPTION \ 1163 CONSTRUCT_TAGID(TN_IMAGE_DESCRIPTION, _ID_TN_IMAGE_DESCRIPTION) 1164 #define EXIFTAGTYPE_TN_IMAGE_DESCRIPTION EXIF_ASCII 1165 // Image input equipment manufacturer (of thumbnail) 1166 // Use EXIFTAGTYPE_TN_MAKE as the exif_tag_type (EXIF_ASCII) 1167 // Count can be any 1168 #define _ID_TN_MAKE 0x010f 1169 #define EXIFTAGID_TN_MAKE CONSTRUCT_TAGID(TN_MAKE, _ID_TN_MAKE) 1170 #define EXIFTAGTYPE_TN_MAKE EXIF_ASCII 1171 // Image input equipment model (of thumbnail) 1172 // Use EXIFTAGTYPE_TN_MODEL as the exif_tag_type (EXIF_ASCII) 1173 // Count can be any 1174 #define _ID_TN_MODEL 0x0110 1175 #define EXIFTAGID_TN_MODEL CONSTRUCT_TAGID(TN_MODEL, _ID_TN_MODEL) 1176 #define EXIFTAGTYPE_TN_MODEL EXIF_ASCII 1177 // Image data location (of thumbnail) 1178 // Use EXIFTAGTYPE_TN_STRIP_OFFSETS as the exif_tag_type (EXIF_LONG) 1179 // Count = StripsPerImage when PlanarConfiguration = 1 1180 // = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 1181 #define _ID_TN_STRIP_OFFSETS 0x0111 1182 #define EXIFTAGID_TN_STRIP_OFFSETS \ 1183 CONSTRUCT_TAGID(STRIP_TN_OFFSETS, _ID_TN_STRIP_OFFSETS) 1184 #define EXIFTAGTYPE_TN_STRIP_OFFSETS EXIF_LONG 1185 // Orientation of image (of thumbnail) 1186 // Use EXIFTAGTYPE_TN_ORIENTATION as the exif_tag_type (EXIF_SHORT) 1187 // Count should be 1 1188 #define _ID_TN_ORIENTATION 0x0112 1189 #define EXIFTAGID_TN_ORIENTATION \ 1190 CONSTRUCT_TAGID(TN_ORIENTATION, _ID_TN_ORIENTATION) 1191 #define EXIFTAGTYPE_TN_ORIENTATION EXIF_SHORT 1192 // Number of components (of thumbnail) 1193 // Use EXIFTAGTYPE_TN_SAMPLES_PER_PIXEL as the exif_tag_type (EXIF_SHORT) 1194 // Count should be 1 1195 #define _ID_TN_SAMPLES_PER_PIXEL 0x0115 1196 #define EXIFTAGID_TN_SAMPLES_PER_PIXEL \ 1197 CONSTRUCT_TAGID(TN_SAMPLES_PER_PIXEL, _ID_TN_SAMPLES_PER_PIXEL) 1198 #define EXIFTAGTYPE_TN_SAMPLES_PER_PIXEL EXIF_SHORT 1199 // Number of rows per strip (of thumbnail) 1200 // Use EXIFTAGTYPE_TN_ROWS_PER_STRIP as the exif_tag_type (EXIF_LONG) 1201 // Count should be 1 1202 #define _ID_TN_ROWS_PER_STRIP 0x0116 1203 #define EXIFTAGID_TN_ROWS_PER_STRIP \ 1204 CONSTRUCT_TAGID(TN_ROWS_PER_STRIP, _ID_TN_ROWS_PER_STRIP) 1205 #define EXIFTAGTYPE_TN_ROWS_PER_STRIP EXIF_LONG 1206 // Bytes per compressed strip (of thumbnail) 1207 // Use EXIFTAGTYPE_TN_STRIP_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 1208 // Count = StripsPerImage when PlanarConfiguration = 1 1209 // = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 1210 #define _ID_TN_STRIP_BYTE_COUNTS 0x0117 1211 #define EXIFTAGID_TN_STRIP_BYTE_COUNTS \ 1212 CONSTRUCT_TAGID(TN_STRIP_BYTE_COUNTS, _ID_TN_STRIP_BYTE_COUNTS) 1213 #define EXIFTAGTYPE_TN_STRIP_BYTE_COUNTS EXIF_LONG 1214 // Image resolution in width direction (of thumbnail) 1215 // Use EXIFTAGTYPE_TN_X_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 1216 // Count should be 1 1217 #define _ID_TN_X_RESOLUTION 0x011a 1218 #define EXIFTAGID_TN_X_RESOLUTION \ 1219 CONSTRUCT_TAGID(TN_X_RESOLUTION, _ID_TN_X_RESOLUTION) 1220 #define EXIFTAGTYPE_TN_X_RESOLUTION EXIF_RATIONAL 1221 // Image resolution in height direction (of thumbnail) 1222 // Use EXIFTAGTYPE_TN_Y_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 1223 // Count should be 1 1224 #define _ID_TN_Y_RESOLUTION 0x011b 1225 #define EXIFTAGID_TN_Y_RESOLUTION \ 1226 CONSTRUCT_TAGID(TN_Y_RESOLUTION, _ID_TN_Y_RESOLUTION) 1227 #define EXIFTAGTYPE_TN_Y_RESOLUTION EXIF_RATIONAL 1228 // Image data arrangement (of thumbnail) 1229 // Use EXIFTAGTYPE_TN_PLANAR_CONFIGURATION as the exif_tag_type (EXIF_SHORT) 1230 // Count should be 1 1231 #define _ID_TN_PLANAR_CONFIGURATION 0x011c 1232 #define EXIFTAGID_TN_PLANAR_CONFIGURATION \ 1233 CONSTRUCT_TAGID(TN_PLANAR_CONFIGURATION, _ID_TN_PLANAR_CONFIGURATION) 1234 #define EXIFTAGTYPE_TN_PLANAR_CONFIGURATION EXIF_SHORT 1235 // Unit of X and Y resolution (of thumbnail) 1236 // Use EXIFTAGTYPE_TN_RESOLUTION_UNIT as the exif_tag_type (EXIF_SHORT) 1237 // Count should be 1 1238 #define _ID_TN_RESOLUTION_UNIT 0x128 1239 #define EXIFTAGID_TN_RESOLUTION_UNIT \ 1240 CONSTRUCT_TAGID(TN_RESOLUTION_UNIT, _ID_TN_RESOLUTION_UNIT) 1241 #define EXIFTAGTYPE_TN_RESOLUTION_UNIT EXIF_SHORT 1242 // Transfer function (of thumbnail) 1243 // Use EXIFTAGTYPE_TN_TRANSFER_FUNCTION as the exif_tag_type (EXIF_SHORT) 1244 // Count should be 3*256 1245 #define _ID_TN_TRANSFER_FUNCTION 0x012d 1246 #define EXIFTAGID_TN_TRANSFER_FUNCTION \ 1247 CONSTRUCT_TAGID(TN_TRANSFER_FUNCTION, _ID_TN_TRANSFER_FUNCTION) 1248 #define EXIFTAGTYPE_TN_TRANSFER_FUNCTION EXIF_SHORT 1249 // Software used (of thumbnail) 1250 // Use EXIFTAGTYPE_TN_SOFTWARE as the exif_tag_type (EXIF_ASCII) 1251 // Count can be any 1252 #define _ID_TN_SOFTWARE 0x0131 1253 #define EXIFTAGID_TN_SOFTWARE CONSTRUCT_TAGID(TN_SOFTWARE, _ID_TN_SOFTWARE) 1254 #define EXIFTAGTYPE_TN_SOFTWARE EXIF_ASCII 1255 // File change date and time (of thumbnail) 1256 // Use EXIFTAGTYPE_TN_DATE_TIME as the exif_tag_type (EXIF_ASCII) 1257 // Count should be 20 1258 #define _ID_TN_DATE_TIME 0x0132 1259 #define EXIFTAGID_TN_DATE_TIME CONSTRUCT_TAGID(TN_DATE_TIME, _ID_TN_DATE_TIME) 1260 #define EXIFTAGTYPE_TN_DATE_TIME EXIF_ASCII 1261 // ARTIST, person who created this image (of thumbnail) 1262 // Use EXIFTAGTYPE_TN_ARTIST as the exif_tag_type (EXIF_ASCII) 1263 // Count can be any 1264 #define _ID_TN_ARTIST 0x013b 1265 #define EXIFTAGID_TN_ARTIST CONSTRUCT_TAGID(TN_ARTIST, _ID_TN_ARTIST) 1266 #define EXIFTAGTYPE_TN_ARTIST EXIF_ASCII 1267 // White point chromaticity (of thumbnail) 1268 // Use EXIFTAGTYPE_TN_WHITE_POINT as the exif_tag_type (EXIF_RATIONAL) 1269 // Count should be 2 1270 #define _ID_TN_WHITE_POINT 0x013e 1271 #define EXIFTAGID_TN_WHITE_POINT \ 1272 CONSTRUCT_TAGID(TN_WHITE_POINT, _ID_TN_WHITE_POINT) 1273 #define EXIFTAGTYPE_TN_WHITE_POINT EXIF_RATIONAL 1274 // Chromaticities of primaries (of thumbnail) 1275 // Use EXIFTAGTYPE_TN_PRIMARY_CHROMATICITIES as the exif_tag_type (EXIF_RATIONAL) 1276 // Count should be 6 1277 #define _ID_TN_PRIMARY_CHROMATICITIES 0x013f 1278 #define EXIFTAGID_TN_PRIMARY_CHROMATICITIES \ 1279 CONSTRUCT_TAGID(TN_PRIMARY_CHROMATICITIES, _ID_TN_PRIMARY_CHROMATICITIES) 1280 #define EXIFTAGTYPE_TN_PRIMARY_CHROMATICITIES EXIF_RATIONAL 1281 // Offset to JPEG SOI (of thumbnail) 1282 // Use EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT as the exif_tag_type (EXIF_LONG) 1283 // Count is undefined 1284 #define _ID_TN_JPEGINTERCHANGE_FORMAT 0x0201 1285 #define EXIFTAGID_TN_JPEGINTERCHANGE_FORMAT \ 1286 CONSTRUCT_TAGID(TN_JPEGINTERCHANGE_FORMAT, _ID_TN_JPEGINTERCHANGE_FORMAT) 1287 #define EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT EXIF_LONG 1288 // Bytes of JPEG data (of thumbnail) 1289 // Use EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT_L as the exif_tag_type (EXIF_LONG) 1290 // Count is undefined 1291 #define _ID_TN_JPEGINTERCHANGE_FORMAT_L 0x0202 1292 #define EXIFTAGID_TN_JPEGINTERCHANGE_FORMAT_L \ 1293 CONSTRUCT_TAGID(TN_JPEGINTERCHANGE_FORMAT_L, _ID_TN_JPEGINTERCHANGE_FORMAT_L) 1294 #define EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT_L EXIF_LONG 1295 // Color space transformation matrix coefficients (of thumbnail) 1296 // Use EXIFTAGTYPE_TN_YCBCR_COEFFICIENTS as the exif_tag_type (EXIF_RATIONAL) 1297 // Count should be 3 1298 #define _ID_TN_YCBCR_COEFFICIENTS 0x0211 1299 #define EXIFTAGID_TN_YCBCR_COEFFICIENTS \ 1300 CONSTRUCT_TAGID(TN_YCBCR_COEFFICIENTS, _ID_TN_YCBCR_COEFFICIENTS) 1301 #define EXIFTAGTYPE_TN_YCBCR_COEFFICIENTS EXIF_RATIONAL 1302 // Subsampling ratio of Y to C (of thumbnail) 1303 // Use EXIFTAGTYPE_TN_YCBCR_SUB_SAMPLING as the exif_tag_type (EXIF_SHORT) 1304 // Count should be 2 1305 #define _ID_TN_YCBCR_SUB_SAMPLING 0x0212 1306 #define EXIFTAGID_TN_YCBCR_SUB_SAMPLING \ 1307 CONSTRUCT_TAGID(TN_YCBCR_SUB_SAMPLING, _ID_TN_YCBCR_SUB_SAMPLING) 1308 #define EXIFTAGTYPE_TN_YCBCR_SUB_SAMPLING EXIF_SHORT 1309 // Y and C positioning (of thumbnail) 1310 // Use EXIFTAGTYPE_TN_YCBCR_POSITIONING as the exif_tag_type (EXIF_SHORT) 1311 // Count should be 1 1312 #define _ID_TN_YCBCR_POSITIONING 0x0213 1313 #define EXIFTAGID_TN_YCBCR_POSITIONING \ 1314 CONSTRUCT_TAGID(TN_YCBCR_POSITIONING, _ID_TN_YCBCR_POSITIONING) 1315 #define EXIFTAGTYPE_TN_YCBCR_POSITIONING EXIF_SHORT 1316 // Pair of black and white reference values (of thumbnail) 1317 // Use EXIFTAGTYPE_TN_REFERENCE_BLACK_WHITE as the exif_tag_type (EXIF_RATIONAL) 1318 // Count should be 6 1319 #define _ID_TN_REFERENCE_BLACK_WHITE 0x0214 1320 #define EXIFTAGID_TN_REFERENCE_BLACK_WHITE \ 1321 CONSTRUCT_TAGID(TN_REFERENCE_BLACK_WHITE, _ID_TN_REFERENCE_BLACK_WHITE) 1322 #define EXIFTAGTYPE_TN_REFERENCE_BLACK_WHITE EXIF_RATIONAL 1323 // Copyright holder (of thumbnail) 1324 // Use EXIFTAGTYPE_TN_COPYRIGHT as the exif_tag_type (EXIF_ASCII) 1325 // Count can be any 1326 #define _ID_TN_COPYRIGHT 0x8298 1327 #define EXIFTAGID_TN_COPYRIGHT CONSTRUCT_TAGID(TN_COPYRIGHT, _ID_TN_COPYRIGHT) 1328 #define EXIFTAGTYPE_TN_COPYRIGHT EXIF_ASCII 1329 // Exposure time 1330 // Use EXIFTAGTYPE_EXPOSURE_TIME as the exif_tag_type (EXIF_RATIONAL) 1331 // Count should be 1 1332 #define _ID_EXPOSURE_TIME 0x829a 1333 #define EXIFTAGID_EXPOSURE_TIME \ 1334 CONSTRUCT_TAGID(EXPOSURE_TIME, _ID_EXPOSURE_TIME) 1335 #define EXIFTAGTYPE_EXPOSURE_TIME EXIF_RATIONAL 1336 // F number 1337 // Use EXIFTAGTYPE_F_NUMBER as the exif_tag_type (EXIF_RATIONAL) 1338 // Count should be 1 1339 #define _ID_F_NUMBER 0x829d 1340 #define EXIFTAGID_F_NUMBER \ 1341 CONSTRUCT_TAGID(F_NUMBER, _ID_F_NUMBER) 1342 #define EXIFTAGTYPE_F_NUMBER EXIF_RATIONAL 1343 // Exif IFD pointer (NOT INTENDED to be accessible to user) 1344 #define _ID_EXIF_IFD_PTR 0x8769 1345 #define EXIFTAGID_EXIF_IFD_PTR \ 1346 CONSTRUCT_TAGID(EXIF_IFD, _ID_EXIF_IFD_PTR) 1347 #define EXIFTAGTYPE_EXIF_IFD_PTR EXIF_LONG 1348 1349 // ICC_PROFILE (NOT INTENDED to be accessible to user) 1350 #define _ID_ICC_PROFILE 0x8773 1351 #define EXIFTAGID_ICC_PROFILE CONSTRUCT_TAGID(ICC_PROFILE, _ID_ICC_PROFILE) 1352 #define EXIFTAGTYPE_ICC_PROFILE EXIF_LONG 1353 // Exposure program 1354 // Use EXIFTAGTYPE_EXPOSURE_PROGRAM as the exif_tag_type (EXIF_SHORT) 1355 // Count should be 1 1356 #define _ID_EXPOSURE_PROGRAM 0x8822 1357 #define EXIFTAGID_EXPOSURE_PROGRAM \ 1358 CONSTRUCT_TAGID(EXPOSURE_PROGRAM, _ID_EXPOSURE_PROGRAM) 1359 #define EXIFTAGTYPE_EXPOSURE_PROGRAM EXIF_SHORT 1360 // Spectral sensitivity 1361 // Use EXIFTAGTYPE_SPECTRAL_SENSITIVITY as the exif_tag_type (EXIF_ASCII) 1362 // Count can be any 1363 #define _ID_SPECTRAL_SENSITIVITY 0x8824 1364 #define EXIFTAGID_SPECTRAL_SENSITIVITY \ 1365 CONSTRUCT_TAGID(SPECTRAL_SENSITIVITY, _ID_SPECTRAL_SENSITIVITY) 1366 #define EXIFTAGTYPE_SPECTRAL_SENSITIVITY EXIF_ASCII 1367 // GPS IFD pointer (NOT INTENDED to be accessible to user) 1368 #define _ID_GPS_IFD_PTR 0x8825 1369 #define EXIFTAGID_GPS_IFD_PTR \ 1370 CONSTRUCT_TAGID(GPS_IFD, _ID_GPS_IFD_PTR) 1371 #define EXIFTAGTYPE_GPS_IFD_PTR EXIF_LONG 1372 // ISO Speed Rating 1373 // Use EXIFTAGTYPE_ISO_SPEED_RATING as the exif_tag_type (EXIF_SHORT) 1374 // Count can be any 1375 #define _ID_ISO_SPEED_RATING 0x8827 1376 #define EXIFTAGID_ISO_SPEED_RATING \ 1377 CONSTRUCT_TAGID(ISO_SPEED_RATING, _ID_ISO_SPEED_RATING) 1378 #define EXIFTAGTYPE_ISO_SPEED_RATING EXIF_SHORT 1379 // Optoelectric conversion factor 1380 // Use EXIFTAGTYPE_OECF as the exif_tag_type (EXIF_UNDEFINED) 1381 // Count can be any 1382 #define _ID_OECF 0x8828 1383 #define EXIFTAGID_OECF CONSTRUCT_TAGID(OECF, _ID_OECF) 1384 #define EXIFTAGTYPE_OECF EXIF_UNDEFINED 1385 // Exif version 1386 // Use EXIFTAGTYPE_EXIF_VERSION as the exif_tag_type (EXIF_UNDEFINED) 1387 // Count should be 4 1388 #define _ID_EXIF_VERSION 0x9000 1389 #define EXIFTAGID_EXIF_VERSION \ 1390 CONSTRUCT_TAGID(EXIF_VERSION, _ID_EXIF_VERSION) 1391 #define EXIFTAGTYPE_EXIF_VERSION EXIF_UNDEFINED 1392 // Date and time of original data gerneration 1393 // Use EXIFTAGTYPE_EXIF_DATE_TIME_ORIGINAL as the exif_tag_type (EXIF_ASCII) 1394 // It should be 20 characters long including the null-terminating character. 1395 #define _ID_EXIF_DATE_TIME_ORIGINAL 0x9003 1396 #define EXIFTAGID_EXIF_DATE_TIME_ORIGINAL \ 1397 CONSTRUCT_TAGID(EXIF_DATE_TIME_ORIGINAL, _ID_EXIF_DATE_TIME_ORIGINAL) 1398 #define EXIFTAGTYPE_EXIF_DATE_TIME_ORIGINAL EXIF_ASCII 1399 // Date and time of digital data generation 1400 // Use EXIFTAGTYPE_EXIF_DATE_TIME_DIGITIZED as the exif_tag_type (EXIF_ASCII) 1401 // It should be 20 characters long including the null-terminating character. 1402 #define _ID_EXIF_DATE_TIME_DIGITIZED 0x9004 1403 #define EXIFTAGID_EXIF_DATE_TIME_DIGITIZED \ 1404 CONSTRUCT_TAGID(EXIF_DATE_TIME_DIGITIZED, _ID_EXIF_DATE_TIME_DIGITIZED) 1405 #define EXIFTAGTYPE_EXIF_DATE_TIME_DIGITIZED EXIF_ASCII 1406 // Meaning of each component 1407 // Use EXIFTAGTYPE_EXIF_COMPONENTS_CONFIG as the exif_tag_type (EXIF_UNDEFINED) 1408 // Count should be 4 1409 #define _ID_EXIF_COMPONENTS_CONFIG 0x9101 1410 #define EXIFTAGID_EXIF_COMPONENTS_CONFIG \ 1411 CONSTRUCT_TAGID(EXIF_COMPONENTS_CONFIG, _ID_EXIF_COMPONENTS_CONFIG) 1412 #define EXIFTAGTYPE_EXIF_COMPONENTS_CONFIG EXIF_UNDEFINED 1413 // Meaning of Image compression mode 1414 // Use EXIFTAGTYPE_EXIF_COMPRESSED_BITS_PER_PIXEL as the exif_tag_type (EXIF_RATIONAL) 1415 // Count should be 1 1416 #define _ID_EXIF_COMPRESSED_BITS_PER_PIXEL 0x9102 1417 #define EXIFTAGID_EXIF_COMPRESSED_BITS_PER_PIXEL \ 1418 CONSTRUCT_TAGID(EXIF_COMPRESSED_BITS_PER_PIXEL, _ID_EXIF_COMPRESSED_BITS_PER_PIXEL) 1419 #define EXIFTAGTYPE_EXIF_COMPRESSED_BITS_PER_PIXEL EXIF_RATIONAL 1420 // Shutter speed 1421 // Use EXIFTAGTYPE_SHUTTER_SPEED as the exif_tag_type (EXIF_SRATIONAL) 1422 // Count should be 1 1423 #define _ID_SHUTTER_SPEED 0x9201 1424 #define EXIFTAGID_SHUTTER_SPEED \ 1425 CONSTRUCT_TAGID(SHUTTER_SPEED, _ID_SHUTTER_SPEED) 1426 #define EXIFTAGTYPE_SHUTTER_SPEED EXIF_SRATIONAL 1427 // Aperture 1428 // Use EXIFTAGTYPE_APERTURE as the exif_tag_type (EXIF_RATIONAL) 1429 // Count should be 1 1430 #define _ID_APERTURE 0x9202 1431 #define EXIFTAGID_APERTURE CONSTRUCT_TAGID(APERTURE, _ID_APERTURE) 1432 #define EXIFTAGTYPE_APERTURE EXIF_RATIONAL 1433 // Brigthness 1434 // Use EXIFTAGTYPE_BRIGHTNESS as the exif_tag_type (EXIF_SRATIONAL) 1435 // Count should be 1 1436 #define _ID_BRIGHTNESS 0x9203 1437 #define EXIFTAGID_BRIGHTNESS CONSTRUCT_TAGID(BRIGHTNESS, _ID_BRIGHTNESS) 1438 #define EXIFTAGTYPE_BRIGHTNESS EXIF_SRATIONAL 1439 // Exposure bias 1440 // Use EXIFTAGTYPE_EXPOSURE_BIAS_VALUE as the exif_tag_type (EXIF_SRATIONAL) 1441 // Count should be 1 1442 #define _ID_EXPOSURE_BIAS_VALUE 0x9204 1443 #define EXIFTAGID_EXPOSURE_BIAS_VALUE \ 1444 CONSTRUCT_TAGID(EXPOSURE_BIAS_VALUE, _ID_EXPOSURE_BIAS_VALUE) 1445 #define EXIFTAGTYPE_EXPOSURE_BIAS_VALUE EXIF_SRATIONAL 1446 // Maximum lens aperture 1447 // Use EXIFTAGTYPE_MAX_APERTURE as the exif_tag_type (EXIF_RATIONAL) 1448 // Count should be 1 1449 #define _ID_MAX_APERTURE 0x9205 1450 #define EXIFTAGID_MAX_APERTURE CONSTRUCT_TAGID(MAX_APERTURE, _ID_MAX_APERTURE) 1451 #define EXIFTAGTYPE_MAX_APERTURE EXIF_RATIONAL 1452 // Subject distance 1453 // Use EXIFTAGTYPE_SUBJECT_DISTANCE as the exif_tag_type (EXIF_RATIONAL) 1454 // Count should be 1 1455 #define _ID_SUBJECT_DISTANCE 0x9206 1456 #define EXIFTAGID_SUBJECT_DISTANCE \ 1457 CONSTRUCT_TAGID(SUBJECT_DISTANCE, _ID_SUBJECT_DISTANCE) 1458 #define EXIFTAGTYPE_SUBJECT_DISTANCE EXIF_RATIONAL 1459 // Metering mode 1460 // Use EXIFTAGTYPE_METERING_MODE as the exif_tag_type (EXIF_SHORT) 1461 // Count should be 1 1462 #define _ID_METERING_MODE 0x9207 1463 #define EXIFTAGID_METERING_MODE \ 1464 CONSTRUCT_TAGID(METERING_MODE, _ID_METERING_MODE) 1465 #define EXIFTAGTYPE_METERING_MODE EXIF_SHORT 1466 // Light source 1467 // Use EXIFTAGTYPE_LIGHT_SOURCE as the exif_tag_type (EXIF_SHORT) 1468 // Count should be 1 1469 #define _ID_LIGHT_SOURCE 0x9208 1470 #define EXIFTAGID_LIGHT_SOURCE CONSTRUCT_TAGID(LIGHT_SOURCE, _ID_LIGHT_SOURCE) 1471 #define EXIFTAGTYPE_LIGHT_SOURCE EXIF_SHORT 1472 // Flash 1473 // Use EXIFTAGTYPE_FLASH as the exif_tag_type (EXIF_SHORT) 1474 // Count should be 1 1475 #define _ID_FLASH 0x9209 1476 #define EXIFTAGID_FLASH CONSTRUCT_TAGID(FLASH, _ID_FLASH) 1477 #define EXIFTAGTYPE_FLASH EXIF_SHORT 1478 // Lens focal length 1479 // Use EXIFTAGTYPE_FOCAL_LENGTH as the exif_tag_type (EXIF_RATIONAL) 1480 // Count should be 1 1481 #define _ID_FOCAL_LENGTH 0x920a 1482 #define EXIFTAGID_FOCAL_LENGTH CONSTRUCT_TAGID(FOCAL_LENGTH, _ID_FOCAL_LENGTH) 1483 #define EXIFTAGTYPE_FOCAL_LENGTH EXIF_RATIONAL 1484 // Subject area 1485 // Use EXIFTAGTYPE_SUBJECT_AREA as exif_tag_type (EXIF_SHORT) 1486 // Count should be 2 or 3 or 4 1487 #define _ID_SUBJECT_AREA 0x9214 1488 #define EXIFTAGID_SUBJECT_AREA CONSTRUCT_TAGID(SUBJECT_AREA, _ID_SUBJECT_AREA) 1489 #define EXIFTAGTYPE_SUBJECT_AREA EXIF_SHORT 1490 // Maker note 1491 // Use EXIFTAGTYPE_EXIF_MAKER_NOTE as the exif_tag_type (EXIF_UNDEFINED) 1492 // Count can be any 1493 #define _ID_EXIF_MAKER_NOTE 0x927c 1494 #define EXIFTAGID_EXIF_MAKER_NOTE \ 1495 CONSTRUCT_TAGID(EXIF_MAKER_NOTE, _ID_EXIF_MAKER_NOTE) 1496 #define EXIFTAGTYPE_EXIF_MAKER_NOTE EXIF_UNDEFINED 1497 // User comments 1498 // Use EXIFTAGTYPE_EXIF_USER_COMMENT as the exif_tag_type (EXIF_UNDEFINED) 1499 // Count can be any 1500 #define _ID_EXIF_USER_COMMENT 0x9286 1501 #define EXIFTAGID_EXIF_USER_COMMENT \ 1502 CONSTRUCT_TAGID(EXIF_USER_COMMENT, _ID_EXIF_USER_COMMENT) 1503 #define EXIFTAGTYPE_EXIF_USER_COMMENT EXIF_UNDEFINED 1504 // Date time sub-seconds 1505 // Use EXIFTAGTYPE_SUBSEC_TIME as the exif_tag_type (EXIF_ASCII) 1506 // Count could be any 1507 #define _ID_SUBSEC_TIME 0x9290 1508 #define EXIFTAGID_SUBSEC_TIME CONSTRUCT_TAGID(SUBSEC_TIME, _ID_SUBSEC_TIME) 1509 #define EXIFTAGTYPE_SEBSEC_TIME EXIF_ASCII 1510 // Date time original sub-seconds 1511 // use EXIFTAGTYPE_SUBSEC_TIME_ORIGINAL as the exif_tag_type (EXIF_ASCII) 1512 // Count could be any 1513 #define _ID_SUBSEC_TIME_ORIGINAL 0x9291 1514 #define EXIFTAGID_SUBSEC_TIME_ORIGINAL \ 1515 CONSTRUCT_TAGID(SUBSEC_TIME_ORIGINAL, _ID_SUBSEC_TIME_ORIGINAL) 1516 #define EXIFTAGTYPE_SUBSEC_TIME_ORIGINAL EXIF_ASCII 1517 // Date time digitized sub-seconds 1518 // use EXIFTAGTYPE_SUBSEC_TIME_DIGITIZED as the exif_tag_type (EXIF_ASCII) 1519 // Count could be any 1520 #define _ID_SUBSEC_TIME_DIGITIZED 0x9292 1521 #define EXIFTAGID_SUBSEC_TIME_DIGITIZED \ 1522 CONSTRUCT_TAGID(SUBSEC_TIME_DIGITIZED, _ID_SUBSEC_TIME_DIGITIZED) 1523 #define EXIFTAGTYPE_SUBSEC_TIME_DIGITIZED EXIF_ASCII 1524 // Supported Flashpix version 1525 // Use EXIFTAGTYPE_EXIF_FLASHPIX_VERSION as the exif_tag_type (EXIF_UNDEFINED) 1526 // Count should be 4 1527 #define _ID_EXIF_FLASHPIX_VERSION 0xa000 1528 #define EXIFTAGID_EXIF_FLASHPIX_VERSION \ 1529 CONSTRUCT_TAGID(EXIF_FLASHPIX_VERSION, _ID_EXIF_FLASHPIX_VERSION) 1530 #define EXIFTAGTYPE_EXIF_FLASHPIX_VERSION EXIF_UNDEFINED 1531 // Color space information 1532 // Use EXIFTAGTYPE_EXIF_COLOR_SPACE as the exif_tag_type (EXIF_SHORT) 1533 // Count should be 1 1534 #define _ID_EXIF_COLOR_SPACE 0xa001 1535 #define EXIFTAGID_EXIF_COLOR_SPACE \ 1536 CONSTRUCT_TAGID(EXIF_COLOR_SPACE, _ID_EXIF_COLOR_SPACE) 1537 #define EXIFTAGTYPE_EXIF_COLOR_SPACE EXIF_SHORT 1538 // Valid image width 1539 // Use EXIFTAGTYPE_EXIF_PIXEL_X_DIMENSION as the exif_tag_type (EXIF_SHORT) 1540 // Count should be 1 1541 #define _ID_EXIF_PIXEL_X_DIMENSION 0xa002 1542 #define EXIFTAGID_EXIF_PIXEL_X_DIMENSION \ 1543 CONSTRUCT_TAGID(EXIF_PIXEL_X_DIMENSION, _ID_EXIF_PIXEL_X_DIMENSION) 1544 #define EXIFTAGTYPE_EXIF_PIXEL_X_DIMENSION EXIF_SHORT 1545 // Valid image height 1546 // Use EXIFTAGTYPE_EXIF_PIXEL_Y_DIMENSION as the exif_tag_type (EXIF_SHORT) 1547 // Count should be 1 1548 #define _ID_EXIF_PIXEL_Y_DIMENSION 0xa003 1549 #define EXIFTAGID_EXIF_PIXEL_Y_DIMENSION \ 1550 CONSTRUCT_TAGID(EXIF_PIXEL_Y_DIMENSION, _ID_EXIF_PIXEL_Y_DIMENSION) 1551 #define EXIFTAGTYPE_EXIF_PIXEL_Y_DIMENSION EXIF_SHORT 1552 // Related audio file 1553 // Use EXIFTAGTYPE_EXIF_RELATED_SOUND_FILE as the exif_tag_type (EXIF_ASCII) 1554 // Count should be 13 1555 #define _ID_RELATED_SOUND_FILE 0xa004 1556 #define EXIFTAGID_RELATED_SOUND_FILE \ 1557 CONSTRUCT_TAGID(RELATED_SOUND_FILE, _ID_RELATED_SOUND_FILE) 1558 #define EXIFTAGTYPE_RELATED_SOUND_FILE EXIF_ASCII 1559 // Interop IFD pointer (NOT INTENDED to be accessible to user) 1560 #define _ID_INTEROP_IFD_PTR 0xa005 1561 #define EXIFTAGID_INTEROP_IFD_PTR CONSTRUCT_TAGID(INTEROP, _ID_INTEROP_IFD_PTR) 1562 #define EXIFTAGTYPE_INTEROP_IFD_PTR EXIF_LONG 1563 // Flash energy 1564 // Use EXIFTAGTYPE_EXIF_FLASH_ENERGY as the exif_tag_type (EXIF_RATIONAL) 1565 // Count should be 1 1566 #define _ID_FLASH_ENERGY 0xa20b 1567 #define EXIFTAGID_FLASH_ENERGY CONSTRUCT_TAGID(FLASH_ENERGY, _ID_FLASH_ENERGY) 1568 #define EXIFTAGTYPE_FLASH_ENERGY EXIF_RATIONAL 1569 // Spatial frequency response 1570 // Use EXIFTAGTYPE_SPATIAL_FREQ_RESPONSE as exif_tag_type (EXIF_UNDEFINED) 1571 // Count would be any 1572 #define _ID_SPATIAL_FREQ_RESPONSE 0xa20c 1573 #define EXIFTAGID_SPATIAL_FREQ_RESPONSE \ 1574 CONSTRUCT_TAGID(SPATIAL_FREQ_RESPONSE, _ID_SPATIAL_FREQ_RESPONSE) 1575 #define EXIFTAGTYPE_SPATIAL_FREQ_RESPONSE EXIF_UNDEFINED 1576 // Focal plane x resolution 1577 // Use EXIFTAGTYPE_FOCAL_PLANE_X_RESOLUTION as exif_tag_type (EXIF_RATIONAL) 1578 // Count should be 1 1579 #define _ID_FOCAL_PLANE_X_RESOLUTION 0xa20e 1580 #define EXIFTAGID_FOCAL_PLANE_X_RESOLUTION \ 1581 CONSTRUCT_TAGID(FOCAL_PLANE_X_RESOLUTION, _ID_FOCAL_PLANE_X_RESOLUTION) 1582 #define EXIFTAGTYPE_FOCAL_PLANE_X_RESOLUTION EXIF_RATIONAL 1583 // Focal plane y resolution 1584 // Use EXIFTAGTYPE_FOCAL_PLANE_Y_RESOLUTION as exif_tag_type (EXIF_RATIONAL) 1585 // Count should be 1 1586 #define _ID_FOCAL_PLANE_Y_RESOLUTION 0xa20f 1587 #define EXIFTAGID_FOCAL_PLANE_Y_RESOLUTION \ 1588 CONSTRUCT_TAGID(FOCAL_PLANE_Y_RESOLUTION, _ID_FOCAL_PLANE_Y_RESOLUTION) 1589 #define EXIFTAGTYPE_FOCAL_PLANE_Y_RESOLUTION EXIF_RATIONAL 1590 // Focal plane resolution unit 1591 // Use EXIFTAGTYPE_FOCAL_PLANE_RESOLUTION_UNIT as exif_tag_type (EXIF_SHORT) 1592 // Count should be 1 1593 #define _ID_FOCAL_PLANE_RESOLUTION_UNIT 0xa210 1594 #define EXIFTAGID_FOCAL_PLANE_RESOLUTION_UNIT \ 1595 CONSTRUCT_TAGID(FOCAL_PLANE_RESOLUTION_UNIT, _ID_FOCAL_PLANE_RESOLUTION_UNIT) 1596 #define EXIFTAGTYPE_FOCAL_PLANE_RESOLUTION_UNIT EXIF_SHORT 1597 // Subject location 1598 // Use EXIFTAGTYPE_SUBJECT_LOCATION as the exif_tag_type (EXIF_SHORT) 1599 // Count should be 2 1600 #define _ID_SUBJECT_LOCATION 0xa214 1601 #define EXIFTAGID_SUBJECT_LOCATION \ 1602 CONSTRUCT_TAGID(SUBJECT_LOCATION, _ID_SUBJECT_LOCATION) 1603 #define EXIFTAGTYPE_SUBJECT_LOCATION EXIF_SHORT 1604 // Exposure index 1605 // Use EXIFTAGTYPE_EXPOSURE_INDEX as the exif_tag_type (EXIF_RATIONAL) 1606 // Count should be 1 1607 #define _ID_EXPOSURE_INDEX 0xa215 1608 #define EXIFTAGID_EXPOSURE_INDEX \ 1609 CONSTRUCT_TAGID(EXPOSURE_INDEX, _ID_EXPOSURE_INDEX) 1610 #define EXIFTAGTYPE_EXPOSURE_INDEX EXIF_RATIONAL 1611 // Sensing method 1612 // Use EXIFTAGTYPE_SENSING_METHOD as the exif_tag_type (EXIF_SHORT) 1613 // Count should be 1 1614 #define _ID_SENSING_METHOD 0xa217 1615 #define EXIFTAGID_SENSING_METHOD \ 1616 CONSTRUCT_TAGID(SENSING_METHOD, _ID_SENSING_METHOD) 1617 #define EXIFTAGTYPE_SENSING_METHOD EXIF_SHORT 1618 // File source 1619 // Use EXIFTAGTYPE_FILE_SOURCE as the exif_tag_type (EXIF_UNDEFINED) 1620 // Count should be 1 1621 #define _ID_FILE_SOURCE 0xa300 1622 #define EXIFTAGID_FILE_SOURCE CONSTRUCT_TAGID(FILE_SOURCE, _ID_FILE_SOURCE) 1623 #define EXIFTAGTYPE_FILE_SOURCE EXIF_UNDEFINED 1624 // Scene type 1625 // Use EXIFTAGTYPE_SCENE_TYPE as the exif_tag_type (EXIF_UNDEFINED) 1626 // Count should be 1 1627 #define _ID_SCENE_TYPE 0xa301 1628 #define EXIFTAGID_SCENE_TYPE CONSTRUCT_TAGID(SCENE_TYPE, _ID_SCENE_TYPE) 1629 #define EXIFTAGTYPE_SCENE_TYPE EXIF_UNDEFINED 1630 // CFA pattern 1631 // Use EXIFTAGTYPE_CFA_PATTERN as the exif_tag_type (EXIF_UNDEFINED) 1632 // Count can be any 1633 #define _ID_CFA_PATTERN 0xa302 1634 #define EXIFTAGID_CFA_PATTERN CONSTRUCT_TAGID(CFA_PATTERN, _ID_CFA_PATTERN) 1635 #define EXIFTAGTYPE_CFA_PATTERN EXIF_UNDEFINED 1636 // Custom image processing 1637 // Use EXIFTAGTYPE_CUSTOM_RENDERED as the exif_tag_type (EXIF_SHORT) 1638 // Count should be 1 1639 #define _ID_CUSTOM_RENDERED 0xa401 1640 #define EXIFTAGID_CUSTOM_RENDERED \ 1641 CONSTRUCT_TAGID(CUSTOM_RENDERED, _ID_CUSTOM_RENDERED) 1642 #define EXIFTAGTYPE_CUSTOM_RENDERED EXIF_SHORT 1643 // Exposure mode 1644 // Use EXIFTAGTYPE_EXPOSURE_MODE as the exif_tag_type (EXIF_SHORT) 1645 // Count should be 1 1646 #define _ID_EXPOSURE_MODE 0xa402 1647 #define EXIFTAGID_EXPOSURE_MODE \ 1648 CONSTRUCT_TAGID(EXPOSURE_MODE, _ID_EXPOSURE_MODE) 1649 #define EXIFTAGTYPE_EXPOSURE_MODE EXIF_SHORT 1650 // White balance 1651 // Use EXIFTAGTYPE_WHITE_BALANCE as the exif_tag_type (EXIF_SHORT) 1652 // Count should be 1 1653 #define _ID_WHITE_BALANCE 0xa403 1654 #define EXIFTAGID_WHITE_BALANCE \ 1655 CONSTRUCT_TAGID(WHITE_BALANCE, _ID_WHITE_BALANCE) 1656 #define EXIFTAGTYPE_WHITE_BALANCE EXIF_SHORT 1657 // Digital zoom ratio 1658 // Use EXIFTAGTYPE_DIGITAL_ZOOM_RATIO as the exif_tag_type (EXIF_RATIONAL) 1659 // Count should be 1 1660 #define _ID_DIGITAL_ZOOM_RATIO 0xa404 1661 #define EXIFTAGID_DIGITAL_ZOOM_RATIO \ 1662 CONSTRUCT_TAGID(DIGITAL_ZOOM_RATIO, _ID_DIGITAL_ZOOM_RATIO) 1663 #define EXIFTAGTYPE_DIGITAL_ZOOM_RATIO EXIF_RATIONAL 1664 // Focal length in 35mm film 1665 // Use EXIFTAGTYPE_FOCAL_LENGTH_35MM as the exif_tag_type (EXIF_SHORT) 1666 // Count should be 1 1667 #define _ID_FOCAL_LENGTH_35MM 0xa405 1668 #define EXIFTAGID_FOCAL_LENGTH_35MM CONSTRUCT_TAGID(FOCAL_LENGTH_35MM, _ID_FOCAL_LENGTH_35MM) 1669 #define EXIFTAGTYPE_FOCAL_LENGTH_35MM EXIF_SHORT 1670 // Scene capture type 1671 // Use EXIFTAGTYPE_SCENE_CAPTURE_TYPE as the exif_tag_type (EXIF_SHORT) 1672 // Count should be 1 1673 #define _ID_SCENE_CAPTURE_TYPE 0xa406 1674 #define EXIFTAGID_SCENE_CAPTURE_TYPE \ 1675 CONSTRUCT_TAGID(SCENE_CAPTURE_TYPE, _ID_SCENE_CAPTURE_TYPE) 1676 #define EXIFTAGTYPE_SCENE_CAPTURE_TYPE EXIF_SHORT 1677 // Gain control 1678 // Use EXIFTAGTYPE_GAIN_CONTROL as the exif_tag_type (EXIF_SHORT) 1679 // Count should be 1 1680 #define _ID_GAIN_CONTROL 0xa407 1681 #define EXIFTAGID_GAIN_CONTROL CONSTRUCT_TAGID(GAIN_CONTROL, _ID_GAIN_CONTROL) 1682 #define EXIFTAGTYPE_GAIN_CONTROL EXIF_SHORT 1683 // Contrast 1684 // Use EXIFTAGTYPE_CONTRAST as the exif_tag_type (EXIF_SHORT) 1685 // Count should be 1 1686 #define _ID_CONTRAST 0xa408 1687 #define EXIFTAGID_CONTRAST CONSTRUCT_TAGID(CONTRAST, _ID_CONTRAST) 1688 #define EXIFTAGTYPE_CONTRAST EXIF_SHORT 1689 // Saturation 1690 // Use EXIFTAGTYPE_SATURATION as the exif_tag_type (EXIF_SHORT) 1691 // Count should be 1 1692 #define _ID_SATURATION 0xa409 1693 #define EXIFTAGID_SATURATION CONSTRUCT_TAGID(SATURATION, _ID_SATURATION) 1694 #define EXIFTAGTYPE_SATURATION EXIF_SHORT 1695 // Sharpness 1696 // Use EXIFTAGTYPE_SHARPNESS as the exif_tag_type (EXIF_SHORT) 1697 // Count should be 1 1698 #define _ID_SHARPNESS 0xa40a 1699 #define EXIFTAGID_SHARPNESS CONSTRUCT_TAGID(SHARPNESS, _ID_SHARPNESS) 1700 #define EXIFTAGTYPE_SHARPNESS EXIF_SHORT 1701 // Device settings description 1702 // Use EXIFTAGID_DEVICE_SETTINGS_DESCRIPTION as exif_tag_type (EXIF_UNDEFINED) 1703 // Count could be any 1704 #define _ID_DEVICE_SETTINGS_DESCRIPTION 0xa40b 1705 #define EXIFTAGID_DEVICE_SETTINGS_DESCRIPTION \ 1706 CONSTRUCT_TAGID(DEVICE_SETTINGS_DESCRIPTION, _ID_DEVICE_SETTINGS_DESCRIPTION) 1707 #define EXIFTAGTYPE_DEVIC_SETTIGNS_DESCRIPTION EXIF_UNDEFINED 1708 // Subject distance range 1709 // Use EXIFTAGTYPE_SUBJECT_DISTANCE_RANGE as the exif_tag_type (EXIF_SHORT) 1710 // Count should be 1 1711 #define _ID_SUBJECT_DISTANCE_RANGE 0xa40c 1712 #define EXIFTAGID_SUBJECT_DISTANCE_RANGE \ 1713 CONSTRUCT_TAGID(SUBJECT_DISTANCE_RANGE, _ID_SUBJECT_DISTANCE_RANGE) 1714 #define EXIFTAGTYPE_SUBJECT_DISTANCE_RANGE EXIF_SHORT 1715 // Unique image id 1716 // Use EXIFTAG_TYPE_IMAGE_UIDas the exif_tag_type (EXIF_ASCII) 1717 // Count should be 33 1718 #define _ID_IMAGE_UID 0xa420 1719 #define EXIFTAGID_IMAGE_UID CONSTRUCT_TAGID(IMAGE_UID, _ID_IMAGE_UID) 1720 #define EXIFTAGTYPE_IMAGE_UID EXIF_ASCII 1721 // PIM tag 1722 // Use EXIFTAGTYPE_PIM_TAG as the exif_tag_type (EXIF_UNDEFINED) 1723 // Count can be any 1724 #define _ID_PIM 0xc4a5 1725 #define EXIFTAGID_PIM_TAG CONSTRUCT_TAGID(PIM, _ID_PIM) 1726 #define EXIFTAGTYPE_PIM_TAG EXIF_UNDEFINED 1727 #endif // __QEXIF_H__ 1728 1729