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