16f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/*Copyright (c) 2012, The Linux Foundation. All rights reserved. 26f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 36f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevRedistribution and use in source and binary forms, with or without 46f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevmodification, are permitted provided that the following conditions are 56f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevmet: 66f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * Redistributions of source code must retain the above copyright 76f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev notice, this list of conditions and the following disclaimer. 86f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * Redistributions in binary form must reproduce the above 96f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev copyright notice, this list of conditions and the following 106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev disclaimer in the documentation and/or other materials provided 116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev with the distribution. 126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * Neither the name of The Linux Foundation nor the names of its 136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev contributors may be used to endorse or promote products derived 146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev from this software without specific prior written permission. 156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevTHIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan MalchevIF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/ 276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#ifndef __QEXIF_H__ 306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define __QEXIF_H__ 316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <stdio.h> 336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Exif Info (opaque definition) */ 356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevstruct exif_info_t; 366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef struct exif_info_t * exif_info_obj_t; 376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Exif Tag ID */ 396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef uint32_t exif_tag_id_t; 406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Exif Rational Data Type */ 436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef struct 446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{ 456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint32_t num; // Numerator 466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint32_t denom; // Denominator 476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev} rat_t; 496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Exif Signed Rational Data Type */ 516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef struct 526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{ 536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev int32_t num; // Numerator 546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev int32_t denom; // Denominator 556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev} srat_t; 576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Exif Tag Data Type */ 596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef enum 606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{ 616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_BYTE = 1, 626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_ASCII = 2, 636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_SHORT = 3, 646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_LONG = 4, 656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_RATIONAL = 5, 666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_UNDEFINED = 7, 676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_SLONG = 9, 686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_SRATIONAL = 10 696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev} exif_tag_type_t; 706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Exif Tag Entry 726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * Used in exif_set_tag as an input argument and 736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * in exif_get_tag as an output argument. */ 746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef struct 756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{ 766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev /* The Data Type of the Tag * 776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * Rational, etc */ 786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev exif_tag_type_t type; 796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev /* Copy 816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * This field is used when a user pass this structure to 826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * be stored in an exif_info_t via the exif_set_tag method. 836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * The routine would look like this field and decide whether 846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * it is necessary to make a copy of the data pointed by this 856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * structure (all string and array types). 866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * If this field is set to false, only a pointer to the actual 876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * data is retained and it is the caller's responsibility to 886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * ensure the validity of the data before the exif_info_t object 896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * is destroyed. 906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev */ 916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint8_t copy; 926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev /* Data count 946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * This indicates the number of elements of the data. For example, if 956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * the type is EXIF_BYTE and the count is 1, that means the actual data 966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * is one byte and is accessible by data._byte. If the type is EXIF_BYTE 976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * and the count is more than one, the actual data is contained in an 986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * array and is accessible by data._bytes. In case of EXIF_ASCII, it 996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * indicates the string length and in case of EXIF_UNDEFINED, it indicates 1006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * the length of the array. 1016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev */ 1026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint32_t count; 1036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 1046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev /* Data 1056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * A union which covers all possible data types. The user should pick 1066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * the right field to use depending on the data type and the count. 1076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * See in-line comment below. 1086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev */ 1096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev union 1106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev { 1116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev char *_ascii; // EXIF_ASCII (count indicates string length) 1126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint8_t *_bytes; // EXIF_BYTE (count > 1) 1136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint8_t _byte; // EXIF_BYTE (count = 1) 1146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint16_t *_shorts; // EXIF_SHORT (count > 1) 1156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint16_t _short; // EXIF_SHORT (count = 1) 1166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint32_t *_longs; // EXIF_LONG (count > 1) 1176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint32_t _long; // EXIF_LONG (count = 1) 1186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev rat_t *_rats; // EXIF_RATIONAL (count > 1) 1196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev rat_t _rat; // EXIF_RATIONAL (count = 1) 1206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev uint8_t *_undefined; // EXIF_UNDEFINED (count indicates length) 1216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev int32_t *_slongs; // EXIF_SLONG (count > 1) 1226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev int32_t _slong; // EXIF_SLONG (count = 1) 1236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev srat_t *_srats; // EXIF_SRATIONAL (count > 1) 1246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev srat_t _srat; // EXIF_SRATIONAL (count = 1) 1256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 1266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev } data; 1276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 1286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev} exif_tag_entry_t; 1296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 1306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* ======================================================================= 1316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** Macro Definitions 1326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev** ======================================================================= */ 1336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Enum defined to let compiler generate unique offset numbers for different 1346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev * tags - ordering matters! NOT INTENDED to be used by any application. */ 1356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef enum 1366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{ 1376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev // GPS IFD 1386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_VERSION_ID = 0, 1396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_LATITUDE_REF, 1406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_LATITUDE, 1416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_LONGITUDE_REF, 1426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_LONGITUDE, 1436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_ALTITUDE_REF, 1446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_ALTITUDE, 1456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_TIMESTAMP, 1466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_SATELLITES, 1476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_STATUS, 1486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_MEASUREMODE, 1496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DOP, 1506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_SPEED_REF, 1516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_SPEED, 1526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_TRACK_REF, 1536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_TRACK, 1546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_IMGDIRECTION_REF, 1556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_IMGDIRECTION, 1566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_MAPDATUM, 1576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DESTLATITUDE_REF, 1586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DESTLATITUDE, 1596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DESTLONGITUDE_REF, 1606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DESTLONGITUDE, 1616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DESTBEARING_REF, 1626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DESTBEARING, 1636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DESTDISTANCE_REF, 1646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DESTDISTANCE, 1656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_PROCESSINGMETHOD, 1666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_AREAINFORMATION, 1676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DATESTAMP, 1686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_DIFFERENTIAL, 1696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 1706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev // TIFF IFD 1716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev NEW_SUBFILE_TYPE, 1726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SUBFILE_TYPE, 1736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev IMAGE_WIDTH, 1746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev IMAGE_LENGTH, 1756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev BITS_PER_SAMPLE, 1766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev COMPRESSION, 1776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev PHOTOMETRIC_INTERPRETATION, 1786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev THRESH_HOLDING, 1796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CELL_WIDTH, 1806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CELL_HEIGHT, 1816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FILL_ORDER, 1826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev DOCUMENT_NAME, 1836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev IMAGE_DESCRIPTION, 1846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev MAKE, 1856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev MODEL, 1866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev STRIP_OFFSETS, 1876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev ORIENTATION, 1886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SAMPLES_PER_PIXEL, 1896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev ROWS_PER_STRIP, 1906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev STRIP_BYTE_COUNTS, 1916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev MIN_SAMPLE_VALUE, 1926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev MAX_SAMPLE_VALUE, 1936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev X_RESOLUTION, 1946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev Y_RESOLUTION, 1956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev PLANAR_CONFIGURATION, 1966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev PAGE_NAME, 1976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev X_POSITION, 1986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev Y_POSITION, 1996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FREE_OFFSET, 2006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FREE_BYTE_COUNTS, 2016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GRAY_RESPONSE_UNIT, 2026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GRAY_RESPONSE_CURVE, 2036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev T4_OPTION, 2046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev T6_OPTION, 2056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev RESOLUTION_UNIT, 2066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev PAGE_NUMBER, 2076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TRANSFER_FUNCTION, 2086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SOFTWARE, 2096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev DATE_TIME, 2106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev ARTIST, 2116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev HOST_COMPUTER, 2126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev PREDICTOR, 2136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev WHITE_POINT, 2146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev PRIMARY_CHROMATICITIES, 2156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev COLOR_MAP, 2166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev HALFTONE_HINTS, 2176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TILE_WIDTH, 2186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TILE_LENGTH, 2196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TILE_OFFSET, 2206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TILE_BYTE_COUNTS, 2216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev INK_SET, 2226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev INK_NAMES, 2236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev NUMBER_OF_INKS, 2246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev DOT_RANGE, 2256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TARGET_PRINTER, 2266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXTRA_SAMPLES, 2276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SAMPLE_FORMAT, 2286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TRANSFER_RANGE, 2296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_PROC, 2306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_INTERCHANGE_FORMAT, 2316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_INTERCHANGE_FORMAT_LENGTH, 2326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_RESTART_INTERVAL, 2336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_LOSSLESS_PREDICTORS, 2346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_POINT_TRANSFORMS, 2356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_Q_TABLES, 2366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_DC_TABLES, 2376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev JPEG_AC_TABLES, 2386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev YCBCR_COEFFICIENTS, 2396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev YCBCR_SUB_SAMPLING, 2406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev YCBCR_POSITIONING, 2416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev REFERENCE_BLACK_WHITE, 2426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GAMMA, 2436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev ICC_PROFILE_DESCRIPTOR, 2446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SRGB_RENDERING_INTENT, 2456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev IMAGE_TITLE, 2466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev COPYRIGHT, 2476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_IFD, 2486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev ICC_PROFILE, 2496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GPS_IFD, 2506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 2516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 2526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev // TIFF IFD (Thumbnail) 2536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_IMAGE_WIDTH, 2546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_IMAGE_LENGTH, 2556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_BITS_PER_SAMPLE, 2566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_COMPRESSION, 2576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_PHOTOMETRIC_INTERPRETATION, 2586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_IMAGE_DESCRIPTION, 2596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_MAKE, 2606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_MODEL, 2616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_STRIP_OFFSETS, 2626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_ORIENTATION, 2636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_SAMPLES_PER_PIXEL, 2646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_ROWS_PER_STRIP, 2656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_STRIP_BYTE_COUNTS, 2666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_X_RESOLUTION, 2676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_Y_RESOLUTION, 2686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_PLANAR_CONFIGURATION, 2696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_RESOLUTION_UNIT, 2706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_TRANSFER_FUNCTION, 2716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_SOFTWARE, 2726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_DATE_TIME, 2736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_ARTIST, 2746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_WHITE_POINT, 2756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_PRIMARY_CHROMATICITIES, 2766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_JPEGINTERCHANGE_FORMAT, 2776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_JPEGINTERCHANGE_FORMAT_L, 2786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_YCBCR_COEFFICIENTS, 2796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_YCBCR_SUB_SAMPLING, 2806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_YCBCR_POSITIONING, 2816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_REFERENCE_BLACK_WHITE, 2826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev TN_COPYRIGHT, 2836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 2846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev // EXIF IFD 2856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXPOSURE_TIME, 2866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev F_NUMBER, 2876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXPOSURE_PROGRAM, 2886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SPECTRAL_SENSITIVITY, 2896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev ISO_SPEED_RATING, 2906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev OECF, 2916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_VERSION, 2926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_DATE_TIME_ORIGINAL, 2936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_DATE_TIME_DIGITIZED, 2946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_COMPONENTS_CONFIG, 2956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_COMPRESSED_BITS_PER_PIXEL, 2966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SHUTTER_SPEED, 2976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev APERTURE, 2986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev BRIGHTNESS, 2996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXPOSURE_BIAS_VALUE, 3006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev MAX_APERTURE, 3016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SUBJECT_DISTANCE, 3026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev METERING_MODE, 3036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev LIGHT_SOURCE, 3046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FLASH, 3056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FOCAL_LENGTH, 3066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SUBJECT_AREA, 3076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_MAKER_NOTE, 3086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_USER_COMMENT, 3096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SUBSEC_TIME, 3106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SUBSEC_TIME_ORIGINAL, 3116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SUBSEC_TIME_DIGITIZED, 3126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_FLASHPIX_VERSION, 3136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_COLOR_SPACE, 3146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_PIXEL_X_DIMENSION, 3156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_PIXEL_Y_DIMENSION, 3166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev RELATED_SOUND_FILE, 3176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev INTEROP, 3186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FLASH_ENERGY, 3196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SPATIAL_FREQ_RESPONSE, 3206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FOCAL_PLANE_X_RESOLUTION, 3216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FOCAL_PLANE_Y_RESOLUTION, 3226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FOCAL_PLANE_RESOLUTION_UNIT, 3236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SUBJECT_LOCATION, 3246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXPOSURE_INDEX, 3256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SENSING_METHOD, 3266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FILE_SOURCE, 3276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SCENE_TYPE, 3286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CFA_PATTERN, 3296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CUSTOM_RENDERED, 3306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXPOSURE_MODE, 3316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev WHITE_BALANCE, 3326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev DIGITAL_ZOOM_RATIO, 3336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev FOCAL_LENGTH_35MM, 3346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SCENE_CAPTURE_TYPE, 3356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev GAIN_CONTROL, 3366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONTRAST, 3376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SATURATION, 3386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SHARPNESS, 3396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev DEVICE_SETTINGS_DESCRIPTION, 3406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev SUBJECT_DISTANCE_RANGE, 3416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev IMAGE_UID, 3426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev PIM, 3436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 3446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev EXIF_TAG_MAX_OFFSET 3456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 3466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev} exif_tag_offset_t; 3476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 3486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Below are the supported Tags (ID and structure for their data) */ 3496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define CONSTRUCT_TAGID(offset,ID) (offset << 16 | ID) 3506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 3516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS tag version 3526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_VERSION_ID as the exif_tag_type (EXIF_BYTE) 3536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 4 3546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_VERSION_ID 0x0000 3556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_VERSION_ID \ 3566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_VERSION_ID, _ID_GPS_VERSION_ID) 3576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_VERSION_ID EXIF_BYTE 3586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// North or South Latitude 3596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_LATITUDE_REF as the exif_tag_type (EXIF_ASCII) 3606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 3616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_LATITUDE_REF 0x0001 3626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_LATITUDE_REF \ 3636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_LATITUDE_REF, _ID_GPS_LATITUDE_REF) 3646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_LATITUDE_REF EXIF_ASCII 3656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Latitude 3666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_LATITUDE as the exif_tag_type (EXIF_RATIONAL) 3676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3 3686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_LATITUDE 0x0002 3696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_LATITUDE CONSTRUCT_TAGID(GPS_LATITUDE, _ID_GPS_LATITUDE) 3706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_LATITUDE EXIF_RATIONAL 3716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// East or West Longitude 3726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_LONGITUDE_REF as the exif_tag_type (EXIF_ASCII) 3736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 3746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_LONGITUDE_REF 0x0003 3756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_LONGITUDE_REF \ 3766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_LONGITUDE_REF, _ID_GPS_LONGITUDE_REF) 3776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_LONGITUDE_REF EXIF_ASCII 3786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Longitude 3796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_LONGITUDE as the exif_tag_type (EXIF_RATIONAL) 3806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3 3816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_LONGITUDE 0x0004 3826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_LONGITUDE \ 3836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_LONGITUDE, _ID_GPS_LONGITUDE) 3846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_LONGITUDE EXIF_RATIONAL 3856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Altitude reference 3866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_ALTITUDE_REF as the exif_tag_type (EXIF_BYTE) 3876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_ALTITUDE_REF 0x0005 3886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_ALTITUDE_REF \ 3896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_ALTITUDE_REF, _ID_GPS_ALTITUDE_REF) 3906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_ALTITUDE_REF EXIF_BYTE 3916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Altitude 3926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_ALTITUDE as the exif_tag_type (EXIF_RATIONAL) 3936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_ALTITUDE 0x0006 3946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_ALTITUDE CONSTRUCT_TAGID(GPS_ALTITUDE, _ID_GPS_ALTITUDE) 3956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_ALTITUE EXIF_RATIONAL 3966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS time (atomic clock) 3976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_TIMESTAMP as the exif_tag_type (EXIF_RATIONAL) 3986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3 3996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_TIMESTAMP 0x0007 4006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_TIMESTAMP \ 4016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_TIMESTAMP, _ID_GPS_TIMESTAMP) 4026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_TIMESTAMP EXIF_RATIONAL 4036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS Satellites 4046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_SATELLITES as the exif_tag_type (EXIF_ASCII) 4056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be anything. 4066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_SATELLITES 0x0008 4076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_SATELLITES \ 4086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_SATELLITES, _ID_GPS_SATELLITES) 4096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_SATELLITES EXIF_ASCII 4106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS Status 4116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_STATUS as the exif_tag_type (EXIF_ASCII) 4126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 4136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "A" - Measurement in progress 4146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "V" - Measurement Interoperability 4156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 4166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_STATUS 0x0009 4176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_STATUS CONSTRUCT_TAGID(GPS_STATUS, _ID_GPS_STATUS) 4186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTATTYPE_GPS_STATUS EXIF_ASCII 4196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS Measure Mode 4206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_MEASUREMODE as the exif_tag_type (EXIF_ASCII) 4216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 4226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "2" - 2-dimensional measurement 4236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "3" - 3-dimensional measurement 4246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 4256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_MEASUREMODE 0x000a 4266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_MEASUREMODE \ 4276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_MEASUREMODE, _ID_GPS_MEASUREMODE) 4286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_MEASUREMODE EXIF_ASCII 4296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS Measurement precision (DOP) 4306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DOP as the exif_tag_type (EXIF_RATIONAL) 4316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 4326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DOP 0x000b 4336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DOP CONSTRUCT_TAGID(GPS_DOP, _ID_GPS_DOP) 4346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DOP EXIF_RATIONAL 4356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Speed Unit 4366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_SPEED_REF as the exif_tag_type (EXIF_ASCII) 4376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 4386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "K" - Kilometers per hour 4396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "M" - Miles per hour 4406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "N" - Knots 4416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 4426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_SPEED_REF 0x000c 4436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_SPEED_REF \ 4446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_SPEED_REF, _ID_GPS_SPEED_REF) 4456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_SPEED_REF EXIF_ASCII 4466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Speed of GPS receiver 4476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_SPEED as the exif_tag_type (EXIF_RATIONAL) 4486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 4496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_SPEED 0x000d 4506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_SPEED CONSTRUCT_TAGID(GPS_SPEED, _ID_GPS_SPEED) 4516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_SPEED EXIF_RATIONAL 4526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Reference of direction of movement 4536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_TRACK_REF as the exif_tag_type (EXIF_ASCII) 4546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 4556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "T" - True direction 4566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "M" - Magnetic direction 4576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 4586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_TRACK_REF 0x000e 4596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_TRACK_REF \ 4606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_TRACK_REF, _ID_GPS_TRACK_REF) 4616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_TRACK_REF EXIF_ASCII 4626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Direction of movement 4636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_TRACK as the exif_tag_type (EXIF_RATIONAL) 4646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 4656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_TRACK 0x000f 4666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_TRACK CONSTRUCT_TAGID(GPS_TRACK, _ID_GPS_TRACK) 4676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_TRACK EXIF_RATIONAL 4686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Reference of direction of image 4696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_IMGDIRECTION_REF as the exif_tag_type (EXIF_ASCII) 4706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 4716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "T" - True direction 4726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "M" - Magnetic direction 4736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 4746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_IMGDIRECTION_REF 0x0010 4756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_IMGDIRECTION_REF \ 4766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_IMGDIRECTION_REF, _ID_GPS_IMGDIRECTION_REF) 4776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_IMGDIRECTION_REF EXIF_ASCII 4786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Direction of image 4796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_IMGDIRECTION as the exif_tag_type (EXIF_RATIONAL) 4806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 4816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_IMGDIRECTION 0x0011 4826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_IMGDIRECTION \ 4836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_IMGDIRECTION, _ID_GPS_IMGDIRECTION) 4846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_IMGDIRECTION EXIF_RATIONAL 4856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Geodetic survey data used 4866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_MAPDATUM as the exif_tag_type (EXIF_ASCII) 4876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 4886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_MAPDATUM 0x0012 4896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_MAPDATUM CONSTRUCT_TAGID(GPS_MAPDATUM, _ID_GPS_MAPDATUM) 4906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_MAPDATUM EXIF_ASCII 4916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Reference for latitude of destination 4926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DESTLATITUDE_REF as the exif_tag_type (EXIF_ASCII) 4936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 4946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "N" - North latitude 4956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "S" - South latitude 4966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 4976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DESTLATITUDE_REF 0x0013 4986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DESTLATITUDE_REF \ 4996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DESTLATITUDE_REF, _ID_GPS_DESTLATITUDE_REF) 5006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DESTLATITUDE_REF EXIF_ASCII 5016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Latitude of destination 5026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DESTLATITUDE as the exif_tag_type (EXIF_RATIONAL) 5036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3 5046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DESTLATITUDE 0x0014 5056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DESTLATITUDE \ 5066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DESTLATITUDE, _ID_GPS_DESTLATITUDE) 5076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DESTLATITUDE EXIF_RATIONAL 5086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Reference for longitude of destination 5096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DESTLONGITUDE_REF as the exif_tag_type (EXIF_ASCII) 5106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 5116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "E" - East longitude 5126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "W" - West longitude 5136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 5146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DESTLONGITUDE_REF 0x0015 5156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DESTLONGITUDE_REF \ 5166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DESTLONGITUDE_REF, _ID_GPS_DESTLONGITUDE_REF) 5176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DESTLONGITUDE_REF EXIF_ASCII 5186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Longitude of destination 5196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DESTLONGITUDE as the exif_tag_type (EXIF_RATIONAL) 5206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3 5216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DESTLONGITUDE 0x0016 5226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DESTLONGITUDE CONSTRUCT_TAGID(GPS_DESTLONGITUDE, _ID_GPS_DESTLONGITUDE) 5236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DESTLONGITUDE EXIF_RATIONAL 5246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Reference for bearing of destination 5256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DESTBEARING_REF as the exif_tag_type (EXIF_ASCII) 5266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 5276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "T" - True direction 5286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "M" - Magnetic direction 5296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 5306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DESTBEARING_REF 0x0017 5316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DESTBEARING_REF \ 5326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DESTBEARING_REF, _ID_GPS_DESTBEARING_REF) 5336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DESTBEARING_REF EXIF_ASCII 5346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Bearing of destination 5356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DESTBEARING as the exif_tag_type (EXIF_RATIONAL) 5366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 5376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DESTBEARING 0x0018 5386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DESTBEARING \ 5396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DESTBEARING, _ID_GPS_DESTBEARING) 5406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DESTBEARING EXIF_RATIONAL 5416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Reference for distance to destination 5426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DESTDISTANCE_REF as the exif_tag_type (EXIF_ASCII) 5436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 2 characters long including the null-terminating character. 5446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "K" - Kilometers per hour 5456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "M" - Miles per hour 5466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// "N" - Knots 5476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 5486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DESTDISTANCE_REF 0x0019 5496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DESTDISTANCE_REF \ 5506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DESTDISTANCE_REF, _ID_GPS_DESTDISTANCE_REF) 5516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DESTDISTANCE_REF EXIF_ASCII 5526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Distance to destination 5536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DESTDISTANCE as the exif_tag_type (EXIF_RATIONAL) 5546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 5556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DESTDISTANCE 0x001a 5566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DESTDISTANCE \ 5576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DESTDISTANCE, _ID_GPS_DESTDISTANCE) 5586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DESTDISTANCE EXIF_RATIONAL 5596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Name of GPS processing method 5606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_PROCESSINGMETHOD as the exif_tag_type (EXIF_UNDEFINED) 5616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 5626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_PROCESSINGMETHOD 0x001b 5636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_PROCESSINGMETHOD \ 5646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_PROCESSINGMETHOD, _ID_GPS_PROCESSINGMETHOD) 5656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_PROCESSINGMETHOD EXIF_UNDEFINED 5666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Name of GPS area 5676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_AREAINFORMATION as the exif_tag_type (EXIF_UNDEFINED) 5686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 5696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_AREAINFORMATION 0x001c 5706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_AREAINFORMATION \ 5716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_AREAINFORMATION, _ID_GPS_AREAINFORMATION) 5726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_AREAINFORMATION EXIF_UNDEFINED 5736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS date 5746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DATESTAMP as the exif_tag_type (EXIF_ASCII) 5756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 11 characters long including the null-terminating character. 5766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DATESTAMP 0x001d 5776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DATESTAMP \ 5786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DATESTAMP, _ID_GPS_DATESTAMP) 5796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DATESTAMP EXIF_ASCII 5806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS differential correction 5816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GPS_DIFFERENTIAL as the exif_tag_type (EXIF_SHORT) 5826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 5836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 0 - Measurement without differential correction 5846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 1 - Differential correction applied 5856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Other - Reserved 5866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_DIFFERENTIAL 0x001e 5876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_DIFFERENTIAL \ 5886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_DIFFERENTIAL, _ID_GPS_DIFFERENTIAL) 5896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_DIFFERENTIAL EXIF_SHORT 5906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image width 5916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_IMAGE_WIDTH as the exif_tag_type (EXIF_LONG) 5926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 5936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_IMAGE_WIDTH 0x0100 5946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_IMAGE_WIDTH CONSTRUCT_TAGID(IMAGE_WIDTH, _ID_IMAGE_WIDTH) 5956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_IMAGE_WIDTH EXIF_LONG 5966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image height 5976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_IMAGE_LENGTH as the exif_tag_type (EXIF_SHORT_OR_LONG) 5986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 5996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_IMAGE_LENGTH 0x0101 6006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_IMAGE_LENGTH CONSTRUCT_TAGID(IMAGE_LENGTH, _ID_IMAGE_LENGTH) 6016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_IMAGE_LENGTH EXIF_LONG 6026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Number of bits per component 6036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_BITS_PER_SAMPLE as the exif_tag_type (EXIF_SHORT) 6046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 6056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_BITS_PER_SAMPLE 0x0102 6066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_BITS_PER_SAMPLE \ 6076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(BITS_PER_SAMPLE, _ID_BITS_PER_SAMPLE) 6086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_BITS_PER_SAMPLE EXIF_SHORT 6096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Compression scheme 6106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_COMPRESSION as the exif_tag_type (EXIF_SHORT) 6116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 6126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_COMPRESSION 0x0103 6136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_COMPRESSION CONSTRUCT_TAGID(COMPRESSION, _ID_COMPRESSION) 6146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_COMPRESSION EXIF_SHORT 6156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Pixel composition 6166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_PHOTOMETRIC_INTERPRETATION as the exif_tag_type (EXIF_SHORT) 6176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 6186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_PHOTOMETRIC_INTERPRETATION 0x0106 6196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_PHOTOMETRIC_INTERPRETATION \ 6206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(PHOTOMETRIC_INTERPRETATION, _ID_PHOTOMETRIC_INTERPRETATION) 6216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_PHOTOMETRIC_INTERPRETATION EXIF_SHORT 6226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 6236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Thresholding 6246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_THRESH_HOLDING as the exif_tag_type (EXIF_SHORT) 6256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 6266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev//1 = No dithering or halftoning 6276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev//2 = Ordered dither or halftone 6286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev//3 = Randomized dither 6296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_THRESH_HOLDING 0x0107 6306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_THRESH_HOLDING \ 6316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(THRESH_HOLDING, _ID_THRESH_HOLDING) 6326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_THRESH_HOLDING EXIF_SHORT 6336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 6346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Cell Width 6356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_CELL_WIDTH as the exif_tag_type (EXIF_SHORT) 6366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 6376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_CELL_WIDTH 0x0108 6386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_CELL_WIDTH CONSTRUCT_TAGID(CELL_WIDTH, _ID_CELL_WIDTH) 6396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_CELL_WIDTH EXIF_SHORT 6406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Cell Height 6416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_CELL_HEIGHT as the exif_tag_type (EXIF_SHORT) 6426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 6436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_CELL_HEIGHT 0x0109 6446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_CELL_HEIGHT CONSTRUCT_TAGID(CELL_HEIGHT, _ID_CELL_HEIGHT) 6456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_CELL_HEIGHT EXIF_SHORT 6466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Fill Order 6476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FILL_ORDER as the exif_tag_type (EXIF_SHORT) 6486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 1 = Normal 6496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 2 = Reversed 6506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FILL_ORDER 0x010A 6516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FILL_ORDER CONSTRUCT_TAGID(FILL_ORDER, _ID_FILL_ORDER) 6526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FILL_ORDER EXIF_SHORT 6536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 6546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// DOCUMENT NAME 6556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_DOCUMENT_NAME as the exif_tag_type (EXIF_ASCII) 6566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 6576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_DOCUMENT_NAME 0x010D 6586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_DOCUMENT_NAME CONSTRUCT_TAGID(DOCUMENT_NAME, _ID_DOCUMENT_NAME) 6596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_DOCUMENT_NAME EXIF_ASCII 6606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 6616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image title 6626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_IMAGE_DESCRIPTION as the exif_tag_type (EXIF_ASCII) 6636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 6646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_IMAGE_DESCRIPTION 0x010e 6656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_IMAGE_DESCRIPTION \ 6666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(IMAGE_DESCRIPTION, _ID_IMAGE_DESCRIPTION) 6676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_IMAGE_DESCRIPTION EXIF_ASCII 6686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image input equipment manufacturer 6696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_MAKE as the exif_tag_type (EXIF_ASCII) 6706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 6716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_MAKE 0x010f 6726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_MAKE CONSTRUCT_TAGID(MAKE, _ID_MAKE) 6736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_MAKE EXIF_ASCII 6746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image input equipment model 6756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_MODEL as the exif_tag_type (EXIF_ASCII) 6766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 6776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_MODEL 0x0110 6786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_MODEL CONSTRUCT_TAGID(MODEL, _ID_MODEL) 6796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_MODEL EXIF_ASCII 6806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image data location 6816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_STRIP_OFFSETS as the exif_tag_type (EXIF_LONG) 6826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count = StripsPerImage when PlanarConfiguration = 1 6836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 6846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_STRIP_OFFSETS 0x0111 6856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_STRIP_OFFSETS \ 6866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(STRIP_OFFSETS, _ID_STRIP_OFFSETS) 6876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_STRIP_OFFSETS EXIF_LONG 6886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Orientation of image 6896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_ORIENTATION as the exif_tag_type (EXIF_SHORT) 6906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 6916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_ORIENTATION 0x0112 6926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_ORIENTATION CONSTRUCT_TAGID(ORIENTATION, _ID_ORIENTATION) 6936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_ORIENTATION EXIF_SHORT 6946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Number of components 6956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SAMPLES_PER_PIXEL as the exif_tag_type (EXIF_SHORT) 6966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 6976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SAMPLES_PER_PIXEL 0x0115 6986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SAMPLES_PER_PIXEL \ 6996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SAMPLES_PER_PIXEL, _ID_SAMPLES_PER_PIXEL) 7006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SAMPLES_PER_PIXEL EXIF_SHORT 7016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Number of rows per strip 7026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_ROWS_PER_STRIP as the exif_tag_type (EXIF_LONG) 7036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 7046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_ROWS_PER_STRIP 0x0116 7056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_ROWS_PER_STRIP \ 7066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(ROWS_PER_STRIP, _ID_ROWS_PER_STRIP) 7076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_ROWS_PER_STRIP EXIF_LONG 7086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Bytes per compressed strip 7096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_STRIP_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 7106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count = StripsPerImage when PlanarConfiguration = 1 7116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 7126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_STRIP_BYTE_COUNTS 0x0117 7136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_STRIP_BYTE_COUNTS \ 7146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(STRIP_BYTE_COUNTS, _ID_STRIP_BYTE_COUNTS) 7156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_STRIP_BYTE_COUNTS EXIF_LONG 7166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// MinSampleValue 7176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_MIN_SAMPLE_VALUE as the exif_tag_type (EXIF_SHORT) 7186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_MIN_SAMPLE_VALUE 0x0118 7196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_MIN_SAMPLE_VALUE \ 7206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(MIN_SAMPLE_VALUE, _ID_MIN_SAMPLE_VALUE) 7216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_MIN_SAMPLE_VALUE EXIF_SHORT 7226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// MaxSampleValue 7236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_MAX_SAMPLE_VALUE as the exif_tag_type (EXIF_SHORT) 7246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_MAX_SAMPLE_VALUE 0x0119 7256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_MAX_SAMPLE_VALUE CONSTRUCT_TAGID(MAX_SAMPLE_VALUE, _ID_MAX_SAMPLE_VALUE) 7266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_MAX_SAMPLE_VALUE EXIF_SHORT 7276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 7286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image resolution in width direction 7296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_X_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 7306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 7316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_X_RESOLUTION 0x011a 7326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_X_RESOLUTION \ 7336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(X_RESOLUTION, _ID_X_RESOLUTION) 7346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_X_RESOLUTION EXIF_RATIONAL 7356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image resolution in height direction 7366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_Y_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 7376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 7386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_Y_RESOLUTION 0x011b 7396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_Y_RESOLUTION \ 7406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(Y_RESOLUTION, _ID_Y_RESOLUTION) 7416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_Y_RESOLUTION EXIF_RATIONAL 7426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image data arrangement 7436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_PLANAR_CONFIGURATION as the exif_tag_type (EXIF_SHORT) 7446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 7456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_PLANAR_CONFIGURATION 0x011c 7466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_PLANAR_CONFIGURATION \ 7476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(PLANAR_CONFIGURATION, _ID_PLANAR_CONFIGURATION) 7486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_PLANAR_CONFIGURATION EXIF_SHORT 7496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// PageName 7506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_PAGE_NAME as the exif_tag_type (EXIF_ASCII) 7516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 7526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_PAGE_NAME 0x011d 7536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_PAGE_NAME CONSTRUCT_TAGID(PAGE_NAME, _ID_PAGE_NAME) 7546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_PAGE_NAME EXIF_ASCII 7556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// XPosition 7566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_X_POSITION as the exif_tag_type (EXIF_RATIONAL) 7576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 7586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_X_POSITION 0x011e 7596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_X_POSITION CONSTRUCT_TAGID(X_POSITION, _ID_X_POSITION) 7606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_X_POSITION EXIF_RATIONAL 7616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// YPosition 7626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_Y_POSITION as the exif_tag_type (EXIF_RATIONAL) 7636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 7646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_Y_POSITION 0x011f 7656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_Y_POSITION CONSTRUCT_TAGID(Y_POSITION, _ID_Y_POSITION) 7666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_Y_POSITION EXIF_RATIONAL 7676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 7686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// FREE_OFFSET 7696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FREE_OFFSET as the exif_tag_type (EXIF_LONG) 7706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 7716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FREE_OFFSET 0x0120 7726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FREE_OFFSET CONSTRUCT_TAGID(FREE_OFFSET, _ID_FREE_OFFSET) 7736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FREE_OFFSET EXIF_LONG 7746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// FREE_BYTE_COUNTS 7756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FREE_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 7766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 7776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FREE_BYTE_COUNTS 0x0121 7786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FREE_BYTE_COUNTS \ 7796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(FREE_BYTE_COUNTS, _ID_FREE_BYTE_COUNTS) 7806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FREE_BYTE_COUNTS EXIF_LONG 7816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 7826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GrayResponseUnit 7836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GRAY_RESPONSE_UNIT as the exif_tag_type (EXIF_SHORT) 7846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 7856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GRAY_RESPONSE_UNIT 0x0122 7866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GRAY_RESPONSE_UNIT \ 7876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GRAY_RESPONSE_UNIT, _ID_GRAY_RESPONSE_UNIT) 7886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GRAY_RESPONSE_UNIT EXIF_SHORT 7896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GrayResponseCurve 7906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GRAY_RESPONSE_CURVE as the exif_tag_type (EXIF_SHORT) 7916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 7926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GRAY_RESPONSE_CURVE 0x0123 7936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GRAY_RESPONSE_CURVE \ 7946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GRAY_RESPONSE_CURVE , _ID_GRAY_RESPONSE_CURVE ) 7956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GRAY_RESPONSE_CURVE EXIF_SHORT 7966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 7976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// T4_OPTION 7986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_T4_OPTION as the exif_tag_type (EXIF_LONG) 7996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 8006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_T4_OPTION 0x0124 8016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_T4_OPTION CONSTRUCT_TAGID(T4_OPTION, _ID_T4_OPTION) 8026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_T4_OPTION EXIF_LONG 8036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// T6_OPTION 8046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_T6_OPTION as the exif_tag_type (EXIF_LONG) 8056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 8066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_T6_OPTION 0x0125 8076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_T6_OPTION CONSTRUCT_TAGID(T6_OPTION, _ID_T6_OPTION) 8086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_T6_OPTION EXIF_LONG 8096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 8106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Unit of X and Y resolution 8116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_RESOLUTION_UNIT as the exif_tag_type (EXIF_SHORT) 8126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 8136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_RESOLUTION_UNIT 0x0128 8146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_RESOLUTION_UNIT \ 8156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(RESOLUTION_UNIT, _ID_RESOLUTION_UNIT) 8166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_RESOLUTION_UNIT EXIF_SHORT 8176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 8186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Page Number 8196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_PAGE_NUMBER as the exif_tag_type (EXIF_SHORT) 8206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 8216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_PAGE_NUMBER 0x0129 8226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_PAGE_NUMBER CONSTRUCT_TAGID(PAGE_NUMBER, _ID_PAGE_NUMBER) 8236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_PAGE_NUMBER EXIF_SHORT 8246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Transfer function 8256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TRANSFER_FUNCTION as the exif_tag_type (EXIF_SHORT) 8266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3*256 8276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TRANSFER_FUNCTION 0x012d 8286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TRANSFER_FUNCTION \ 8296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TRANSFER_FUNCTION, _ID_TRANSFER_FUNCTION) 8306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TRANSFER_FUNCTION EXIF_SHORT 8316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Software used 8326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SOFTWARE as the exif_tag_type (EXIF_ASCII) 8336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 8346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SOFTWARE 0x0131 8356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SOFTWARE CONSTRUCT_TAGID(SOFTWARE, _ID_SOFTWARE) 8366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SOFTWARE EXIF_ASCII 8376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// File change date and time 8386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_DATE_TIME as the exif_tag_type (EXIF_ASCII) 8396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 20 8406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_DATE_TIME 0x0132 8416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_DATE_TIME CONSTRUCT_TAGID(DATE_TIME, _ID_DATE_TIME) 8426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_DATE_TIME EXIF_ASCII 8436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// ARTIST, person who created this image 8446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_ARTIST as the exif_tag_type (EXIF_ASCII) 8456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 8466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_ARTIST 0x013b 8476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_ARTIST CONSTRUCT_TAGID(ARTIST, _ID_ARTIST) 8486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_ARTIST EXIF_ASCII 8496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Host Computer Name 8506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_HOST_COMPUTER as the exif_tag_type (EXIF_ASCII) 8516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 8526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_HOST_COMPUTER 0x013c 8536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_HOST_COMPUTER \ 8546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(HOST_COMPUTER , _ID_HOST_COMPUTER ) 8556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_HOST_COMPUTER EXIF_ASCII 8566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Predictor 8576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_PREDICTOR as the exif_tag_type (EXIF_SHORT) 8586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 8596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_PREDICTOR 0x013d 8606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_PREDICTOR CONSTRUCT_TAGID(PREDICTOR , _ID_PREDICTOR ) 8616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_PREDICTOR EXIF_SHORT 8626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// White point chromaticity 8636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_WHITE_POINT as the exif_tag_type (EXIF_RATIONAL) 8646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 2 8656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_WHITE_POINT 0x013e 8666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_WHITE_POINT CONSTRUCT_TAGID(WHITE_POINT, _ID_WHITE_POINT) 8676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_WHITE_POINT EXIF_RATIONAL 8686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Chromaticities of primaries 8696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_PRIMARY_CHROMATICITIES as the exif_tag_type (EXIF_RATIONAL) 8706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 8716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_PRIMARY_CHROMATICITIES 0x013f 8726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_PRIMARY_CHROMATICITIES \ 8736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(PRIMARY_CHROMATICITIES, _ID_PRIMARY_CHROMATICITIES) 8746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_PRIMARY_CHROMATICITIES EXIF_RATIONAL 8756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 8766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// COLOR_MAP 8776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_COLOR_MAP as the exif_tag_type (EXIF_SHORT) 8786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 8796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_COLOR_MAP 0x0140 8806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_COLOR_MAP CONSTRUCT_TAGID(COLOR_MAP, _ID_COLOR_MAP) 8816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_COLOR_MAP EXIF_SHORT 8826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// HALFTONE_HINTS 8836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_HALFTONE_HINTS as the exif_tag_type (EXIF_SHORT) 8846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 8856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_HALFTONE_HINTS 0x0141 8866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_HALFTONE_HINTS \ 8876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(HALFTONE_HINTS, _ID_HALFTONE_HINTS) 8886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_HALFTONE_HINTS EXIF_SHORT 8896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 8906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// TILE_WIDTH 8916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TILE_WIDTH as the exif_tag_type (EXIF_LONG) 8926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 8936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TILE_WIDTH 0x0142 8946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TILE_WIDTH CONSTRUCT_TAGID(TILE_WIDTH, _ID_TILE_WIDTH) 8956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TILE_WIDTH EXIF_LONG 8966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// TILE_LENGTH 8976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TILE_LENGTH as the exif_tag_type (EXIF_LONG) 8986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 8996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TILE_LENGTH 0x0143 9006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TILE_LENGTH CONSTRUCT_TAGID(TILE_LENGTH , _ID_TILE_LENGTH ) 9016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TILE_LENGTH EXIF_LONG 9026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// TILE_OFFSET 9036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TILE_OFFSET as the exif_tag_type (EXIF_LONG) 9046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 9056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TILE_OFFSET 0x0144 9066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TILE_OFFSET CONSTRUCT_TAGID(TILE_OFFSET , _ID_TILE_OFFSET ) 9076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TILE_OFFSET EXIF_LONG 9086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// tile Byte Counts 9096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TILE_OFFSET as the exif_tag_type (EXIF_LONG) 9106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 9116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TILE_BYTE_COUNTS 0x0145 9126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TILE_BYTE_COUNTS \ 9136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TILE_BYTE_COUNTS , _ID_TILE_BYTE_COUNTS ) 9146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TILE_BYTE_COUNTS EXIF_LONG 9156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// INK_SET 9176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TILE_LENGTH as the exif_tag_type (EXIF_SHORT) 9186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 9196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_INK_SET 0x014c 9206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_INK_SET CONSTRUCT_TAGID(INK_SET , _ID_INK_SET ) 9216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_INK_SET EXIF_SHORT 9226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// INK_NAMES 9236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_INK_NAMES as the exif_tag_type (EXIF_ASCII) 9246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 9256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_INK_NAMES 0x014D 9266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_INK_NAMES CONSTRUCT_TAGID(INK_NAMES , _ID_INK_NAMES) 9276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_INK_NAMES EXIF_ASCII 9286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// NUMBER_OF_INKS 9296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_NUMBER_OF_INKS as the exif_tag_type (EXIF_SHORT) 9306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 9316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_NUMBER_OF_INKS 0x014e 9326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_NUMBER_OF_INKS \ 9336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(NUMBER_OF_INKS , _ID_NUMBER_OF_INKS ) 9346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_NUMBER_OF_INKS EXIF_SHORT 9356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// DOT_RANGE 9376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_DOT_RANGE as the exif_tag_type (EXIF_ASCII) 9386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 9396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_DOT_RANGE 0x0150 9406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_DOT_RANGE CONSTRUCT_TAGID(DOT_RANGE , _ID_DOT_RANGE ) 9416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_DOT_RANGE EXIF_ASCII 9426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// TARGET_PRINTER 9446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TARGET_PRINTER as the exif_tag_type (EXIF_ASCII) 9456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 9466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TARGET_PRINTER 0x0151 9476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TARGET_PRINTER \ 9486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TARGET_PRINTER , _ID_TARGET_PRINTER) 9496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TARGET_PRINTER EXIF_ASCII 9506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// EXTRA_SAMPLES 9516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXTRA_SAMPLES as the exif_tag_type (EXIF_SHORT) 9526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 9536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXTRA_SAMPLES 0x0152 9546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXTRA_SAMPLES \ 9556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXTRA_SAMPLES , _ID_EXTRA_SAMPLES ) 9566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXTRA_SAMPLES EXIF_SHORT 9576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// SAMPLE_FORMAT 9596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SAMPLE_FORMAT as the exif_tag_type (EXIF_SHORT) 9606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 9616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SAMPLE_FORMAT 0x0153 9626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SAMPLE_FORMAT \ 9636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SAMPLE_FORMAT , _ID_SAMPLE_FORMAT ) 9646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SAMPLE_FORMAT EXIF_SHORT 9656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Table of values that extends the range of the transfer function. 9676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TRANSFER_RANGE as the exif_tag_type (EXIF_SHORT) 9686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 9696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TRANSFER_RANGE 0x0156 9706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TRANSFER_RANGE \ 9716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TRANSFER_RANGE , _ID_TRANSFER_RANGE ) 9726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TRANSFER_RANGE EXIF_SHORT 9736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// JPEG compression process. 9756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_PROC as the exif_tag_type (EXIF_SHORT) 9766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 9776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_PROC 0x0200 9786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_PROC CONSTRUCT_TAGID(JPEG_PROC , _ID_JPEG_PROC ) 9796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_PROC EXIF_SHORT 9806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Offset to JPEG SOI 9836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT as the exif_tag_type (EXIF_LONG) 9846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 9856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_INTERCHANGE_FORMAT 0x0201 9866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_INTERCHANGE_FORMAT \ 9876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(JPEG_INTERCHANGE_FORMAT, _ID_JPEG_INTERCHANGE_FORMAT) 9886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT EXIF_LONG 9896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Bytes of JPEG data 9906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT_LENGTH as the exif_tag_type (EXIF_LONG) 9916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 9926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_INTERCHANGE_FORMAT_LENGTH 0x0202 9936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_INTERCHANGE_FORMAT_LENGTH \ 9946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(JPEG_INTERCHANGE_FORMAT_LENGTH, \ 9956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev _ID_JPEG_INTERCHANGE_FORMAT_LENGTH) 9966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_INTERCHANGE_FORMAT_LENGTH EXIF_LONG 9976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 9986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Length of the restart interval. 9996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_RESTART_INTERVAL as the exif_tag_type (EXIF_SHORT) 10006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 10016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_RESTART_INTERVAL 0x0203 10026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_RESTART_INTERVAL \ 10036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(JPEG_RESTART_INTERVAL, _ID_JPEG_RESTART_INTERVAL) 10046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_RESTART_INTERVAL EXIF_SHORT 10056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 10066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// JPEGLosslessPredictors 10076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_LOSSLESS_PREDICTORS as the exif_tag_type (EXIF_SHORT) 10086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 10096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_LOSSLESS_PREDICTORS 0x0205 10106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_LOSSLESS_PREDICTORS \ 10116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(JPEG_LOSSLESS_PREDICTORS, _ID_JPEG_LOSSLESS_PREDICTORS) 10126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_LOSSLESS_PREDICTORS EXIF_SHORT 10136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 10146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// JPEGPointTransforms 10156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_POINT_TRANSFORMS as the exif_tag_type (EXIF_SHORT) 10166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 10176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_POINT_TRANSFORMS 0x0206 10186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_POINT_TRANSFORMS \ 10196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(JPEG_POINT_TRANSFORMS, _ID_JPEG_POINT_TRANSFORMS) 10206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_POINT_TRANSFORMS EXIF_SHORT 10216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 10226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// JPEG_Q_TABLES 10236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_Q_TABLES as the exif_tag_type (EXIF_LONG) 10246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 10256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_Q_TABLES 0x0207 10266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_Q_TABLES \ 10276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(JPEG_Q_TABLES, _ID_JPEG_Q_TABLES) 10286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_Q_TABLES EXIF_LONG 10296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// JPEG_DC_TABLES 10306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_DC_TABLES as the exif_tag_type (EXIF_LONG) 10316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 10326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_DC_TABLES 0x0208 10336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_DC_TABLES \ 10346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(JPEG_DC_TABLES, _ID_JPEG_DC_TABLES) 10356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_DC_TABLES EXIF_LONG 10366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// JPEG_AC_TABLES 10376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_JPEG_AC_TABLES as the exif_tag_type (EXIF_LONG) 10386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 10396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_JPEG_AC_TABLES 0x0209 10406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_JPEG_AC_TABLES \ 10416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(JPEG_AC_TABLES, _ID_JPEG_AC_TABLES) 10426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_JPEG_AC_TABLES EXIF_LONG 10436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 10446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Color space transformation matrix coefficients 10456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_YCBCR_COEFFICIENTS as the exif_tag_type (EXIF_RATIONAL) 10466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3 10476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_YCBCR_COEFFICIENTS 0x0211 10486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_YCBCR_COEFFICIENTS \ 10496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(YCBCR_COEFFICIENTS, _ID_YCBCR_COEFFICIENTS) 10506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_YCBCR_COEFFICIENTS EXIF_RATIONAL 10516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Subsampling ratio of Y to C 10526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_YCBCR_SUB_SAMPLING as the exif_tag_type (EXIF_SHORT) 10536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 2 10546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_YCBCR_SUB_SAMPLING 0x0212 10556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_YCBCR_SUB_SAMPLING \ 10566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(YCBCR_SUB_SAMPLING, _ID_YCBCR_SUB_SAMPLING) 10576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_YCBCR_SUB_SAMPLING EXIF_SHORT 10586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Y and C positioning 10596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_YCBCR_POSITIONING as the exif_tag_type (EXIF_SHORT) 10606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 10616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_YCBCR_POSITIONING 0x0213 10626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_YCBCR_POSITIONING \ 10636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(YCBCR_POSITIONING, _ID_YCBCR_POSITIONING) 10646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_YCBCR_POSITIONING EXIF_SHORT 10656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Pair of black and white reference values 10666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_REFERENCE_BLACK_WHITE as the exif_tag_type (EXIF_RATIONAL) 10676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 10686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_REFERENCE_BLACK_WHITE 0x0214 10696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_REFERENCE_BLACK_WHITE \ 10706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(REFERENCE_BLACK_WHITE, _ID_REFERENCE_BLACK_WHITE) 10716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_REFERENCE_BLACK_WHITE EXIF_RATIONAL 10726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GAMMA 10736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GAMMA as the exif_tag_type (EXIF_RATIONAL) 10746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 10756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GAMMA 0x0301 10766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GAMMA CONSTRUCT_TAGID(GAMMA, _ID_GAMMA) 10776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GAMMA EXIF_RATIONAL 10786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Null-terminated character string that identifies an ICC profile. 10796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_ICC_PROFILE_DESCRIPTOR as the exif_tag_type (EXIF_ASCII) 10806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 10816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_ICC_PROFILE_DESCRIPTOR 0x0302 10826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_ICC_PROFILE_DESCRIPTOR \ 10836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(ICC_PROFILE_DESCRIPTOR, _ID_ICC_PROFILE_DESCRIPTOR) 10846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_ICC_PROFILE_DESCRIPTOR EXIF_ASCII 10856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// SRGB_RENDERING_INTENT 10866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SRGB_RENDERING_INTENT as the exif_tag_type (EXIF_BYTE) 10876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 10886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SRGB_RENDERING_INTENT 0x0303 10896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SRGB_RENDERING_INTENT \ 10906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SRGB_RENDERING_INTENT, _ID_SRGB_RENDERING_INTENT) 10916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SRGB_RENDERING_INTENT EXIF_BYTE 10926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 10936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Null-terminated character string that specifies the title of the image. 10946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_IMAGE_TITLE as the exif_tag_type (EXIF_ASCII ) 10956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// 10966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_IMAGE_TITLE 0x0320 10976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_IMAGE_TITLE CONSTRUCT_TAGID(IMAGE_TITLE, _ID_IMAGE_TITLE) 10986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_IMAGE_TITLE EXIF_ASCII 10996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 11006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Copyright holder 11016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_COPYRIGHT as the exif_tag_type (EXIF_ASCII) 11026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 11036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_COPYRIGHT 0x8298 11046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_COPYRIGHT CONSTRUCT_TAGID(COPYRIGHT, _ID_COPYRIGHT) 11056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_COPYRIGHT EXIF_ASCII 11066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Old Subfile Type 11076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_NEW_SUBFILE_TYPE as the exif_tag_type (EXIF_SHORT) 11086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 11096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_NEW_SUBFILE_TYPE 0x00fe 11106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_NEW_SUBFILE_TYPE \ 11116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(NEW_SUBFILE_TYPE, _ID_NEW_SUBFILE_TYPE) 11126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_NEW_SUBFILE_TYPE EXIF_SHORT 11136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 11146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// New Subfile Type 11156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_NEW_SUBFILE_TYPE as the exif_tag_type (EXIF_LONG) 11166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 11176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SUBFILE_TYPE 0x00ff 11186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SUBFILE_TYPE CONSTRUCT_TAGID(SUBFILE_TYPE, _ID_SUBFILE_TYPE) 11196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SUBFILE_TYPE EXIF_LONG 11206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 11216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image width (of thumbnail) 11226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_IMAGE_WIDTH as the exif_tag_type (EXIF_LONG) 11236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 11246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_IMAGE_WIDTH 0x0100 11256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_IMAGE_WIDTH \ 11266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_IMAGE_WIDTH, _ID_TN_IMAGE_WIDTH) 11276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_IMAGE_WIDTH EXIF_LONG 11286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image height (of thumbnail) 11296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_IMAGE_LENGTH as the exif_tag_type (EXIF_SHORT_OR_LONG) 11306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 11316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_IMAGE_LENGTH 0x0101 11326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_IMAGE_LENGTH \ 11336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_IMAGE_LENGTH, _ID_TN_IMAGE_LENGTH) 11346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_IMAGE_LENGTH EXIF_LONG 11356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Number of bits per component (of thumbnail) 11366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_BITS_PER_SAMPLE as the exif_tag_type (EXIF_SHORT) 11376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 11386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_BITS_PER_SAMPLE 0x0102 11396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_BITS_PER_SAMPLE \ 11406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_BITS_PER_SAMPLE, _ID_TN_BITS_PER_SAMPLE) 11416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_BITS_PER_SAMPLE EXIF_SHORT 11426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Compression scheme (of thumbnail) 11436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_COMPRESSION as the exif_tag_type (EXIF_SHORT) 11446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 11456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_COMPRESSION 0x0103 11466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_COMPRESSION \ 11476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_COMPRESSION, _ID_TN_COMPRESSION) 11486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_COMPRESSION EXIF_SHORT 11496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Pixel composition (of thumbnail) 11506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_PHOTOMETRIC_INTERPRETATION as the 11516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// exif_tag_type (EXIF_SHORT) 11526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 11536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_PHOTOMETRIC_INTERPRETATION 0x0106 11546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_PHOTOMETRIC_INTERPRETATION \ 11556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_PHOTOMETRIC_INTERPRETATION, \ 11566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev _ID_TN_PHOTOMETRIC_INTERPRETATION) 11576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_PHOTOMETRIC_INTERPRETATION EXIF_SHORT 11586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image title (of thumbnail) 11596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_IMAGE_DESCRIPTION as the exif_tag_type (EXIF_ASCII) 11606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 11616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_IMAGE_DESCRIPTION 0x010e 11626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_IMAGE_DESCRIPTION \ 11636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_IMAGE_DESCRIPTION, _ID_TN_IMAGE_DESCRIPTION) 11646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_IMAGE_DESCRIPTION EXIF_ASCII 11656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image input equipment manufacturer (of thumbnail) 11666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_MAKE as the exif_tag_type (EXIF_ASCII) 11676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 11686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_MAKE 0x010f 11696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_MAKE CONSTRUCT_TAGID(TN_MAKE, _ID_TN_MAKE) 11706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_MAKE EXIF_ASCII 11716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image input equipment model (of thumbnail) 11726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_MODEL as the exif_tag_type (EXIF_ASCII) 11736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 11746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_MODEL 0x0110 11756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_MODEL CONSTRUCT_TAGID(TN_MODEL, _ID_TN_MODEL) 11766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_MODEL EXIF_ASCII 11776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image data location (of thumbnail) 11786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_STRIP_OFFSETS as the exif_tag_type (EXIF_LONG) 11796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count = StripsPerImage when PlanarConfiguration = 1 11806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 11816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_STRIP_OFFSETS 0x0111 11826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_STRIP_OFFSETS \ 11836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(STRIP_TN_OFFSETS, _ID_TN_STRIP_OFFSETS) 11846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_STRIP_OFFSETS EXIF_LONG 11856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Orientation of image (of thumbnail) 11866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_ORIENTATION as the exif_tag_type (EXIF_SHORT) 11876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 11886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_ORIENTATION 0x0112 11896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_ORIENTATION \ 11906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_ORIENTATION, _ID_TN_ORIENTATION) 11916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_ORIENTATION EXIF_SHORT 11926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Number of components (of thumbnail) 11936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_SAMPLES_PER_PIXEL as the exif_tag_type (EXIF_SHORT) 11946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 11956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_SAMPLES_PER_PIXEL 0x0115 11966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_SAMPLES_PER_PIXEL \ 11976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_SAMPLES_PER_PIXEL, _ID_TN_SAMPLES_PER_PIXEL) 11986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_SAMPLES_PER_PIXEL EXIF_SHORT 11996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Number of rows per strip (of thumbnail) 12006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_ROWS_PER_STRIP as the exif_tag_type (EXIF_LONG) 12016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 12026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_ROWS_PER_STRIP 0x0116 12036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_ROWS_PER_STRIP \ 12046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_ROWS_PER_STRIP, _ID_TN_ROWS_PER_STRIP) 12056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_ROWS_PER_STRIP EXIF_LONG 12066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Bytes per compressed strip (of thumbnail) 12076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_STRIP_BYTE_COUNTS as the exif_tag_type (EXIF_LONG) 12086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count = StripsPerImage when PlanarConfiguration = 1 12096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// = SamplesPerPixel * StripsPerImage when PlanarConfiguration = 2 12106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_STRIP_BYTE_COUNTS 0x0117 12116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_STRIP_BYTE_COUNTS \ 12126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_STRIP_BYTE_COUNTS, _ID_TN_STRIP_BYTE_COUNTS) 12136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_STRIP_BYTE_COUNTS EXIF_LONG 12146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image resolution in width direction (of thumbnail) 12156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_X_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 12166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 12176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_X_RESOLUTION 0x011a 12186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_X_RESOLUTION \ 12196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_X_RESOLUTION, _ID_TN_X_RESOLUTION) 12206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_X_RESOLUTION EXIF_RATIONAL 12216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image resolution in height direction (of thumbnail) 12226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_Y_RESOLUTION as the exif_tag_type (EXIF_RATIONAL) 12236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 12246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_Y_RESOLUTION 0x011b 12256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_Y_RESOLUTION \ 12266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_Y_RESOLUTION, _ID_TN_Y_RESOLUTION) 12276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_Y_RESOLUTION EXIF_RATIONAL 12286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Image data arrangement (of thumbnail) 12296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_PLANAR_CONFIGURATION as the exif_tag_type (EXIF_SHORT) 12306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 12316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_PLANAR_CONFIGURATION 0x011c 12326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_PLANAR_CONFIGURATION \ 12336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_PLANAR_CONFIGURATION, _ID_TN_PLANAR_CONFIGURATION) 12346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_PLANAR_CONFIGURATION EXIF_SHORT 12356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Unit of X and Y resolution (of thumbnail) 12366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_RESOLUTION_UNIT as the exif_tag_type (EXIF_SHORT) 12376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 12386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_RESOLUTION_UNIT 0x128 12396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_RESOLUTION_UNIT \ 12406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_RESOLUTION_UNIT, _ID_TN_RESOLUTION_UNIT) 12416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_RESOLUTION_UNIT EXIF_SHORT 12426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Transfer function (of thumbnail) 12436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_TRANSFER_FUNCTION as the exif_tag_type (EXIF_SHORT) 12446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3*256 12456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_TRANSFER_FUNCTION 0x012d 12466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_TRANSFER_FUNCTION \ 12476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_TRANSFER_FUNCTION, _ID_TN_TRANSFER_FUNCTION) 12486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_TRANSFER_FUNCTION EXIF_SHORT 12496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Software used (of thumbnail) 12506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_SOFTWARE as the exif_tag_type (EXIF_ASCII) 12516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 12526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_SOFTWARE 0x0131 12536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_SOFTWARE CONSTRUCT_TAGID(TN_SOFTWARE, _ID_TN_SOFTWARE) 12546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_SOFTWARE EXIF_ASCII 12556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// File change date and time (of thumbnail) 12566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_DATE_TIME as the exif_tag_type (EXIF_ASCII) 12576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 20 12586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_DATE_TIME 0x0132 12596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_DATE_TIME CONSTRUCT_TAGID(TN_DATE_TIME, _ID_TN_DATE_TIME) 12606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_DATE_TIME EXIF_ASCII 12616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// ARTIST, person who created this image (of thumbnail) 12626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_ARTIST as the exif_tag_type (EXIF_ASCII) 12636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 12646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_ARTIST 0x013b 12656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_ARTIST CONSTRUCT_TAGID(TN_ARTIST, _ID_TN_ARTIST) 12666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_ARTIST EXIF_ASCII 12676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// White point chromaticity (of thumbnail) 12686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_WHITE_POINT as the exif_tag_type (EXIF_RATIONAL) 12696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 2 12706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_WHITE_POINT 0x013e 12716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_WHITE_POINT \ 12726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_WHITE_POINT, _ID_TN_WHITE_POINT) 12736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_WHITE_POINT EXIF_RATIONAL 12746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Chromaticities of primaries (of thumbnail) 12756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_PRIMARY_CHROMATICITIES as the exif_tag_type (EXIF_RATIONAL) 12766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 12776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_PRIMARY_CHROMATICITIES 0x013f 12786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_PRIMARY_CHROMATICITIES \ 12796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_PRIMARY_CHROMATICITIES, _ID_TN_PRIMARY_CHROMATICITIES) 12806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_PRIMARY_CHROMATICITIES EXIF_RATIONAL 12816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Offset to JPEG SOI (of thumbnail) 12826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT as the exif_tag_type (EXIF_LONG) 12836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 12846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_JPEGINTERCHANGE_FORMAT 0x0201 12856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_JPEGINTERCHANGE_FORMAT \ 12866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_JPEGINTERCHANGE_FORMAT, _ID_TN_JPEGINTERCHANGE_FORMAT) 12876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT EXIF_LONG 12886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Bytes of JPEG data (of thumbnail) 12896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT_L as the exif_tag_type (EXIF_LONG) 12906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count is undefined 12916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_JPEGINTERCHANGE_FORMAT_L 0x0202 12926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_JPEGINTERCHANGE_FORMAT_L \ 12936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_JPEGINTERCHANGE_FORMAT_L, _ID_TN_JPEGINTERCHANGE_FORMAT_L) 12946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_JPEGINTERCHANGE_FORMAT_L EXIF_LONG 12956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Color space transformation matrix coefficients (of thumbnail) 12966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_YCBCR_COEFFICIENTS as the exif_tag_type (EXIF_RATIONAL) 12976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 3 12986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_YCBCR_COEFFICIENTS 0x0211 12996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_YCBCR_COEFFICIENTS \ 13006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_YCBCR_COEFFICIENTS, _ID_TN_YCBCR_COEFFICIENTS) 13016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_YCBCR_COEFFICIENTS EXIF_RATIONAL 13026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Subsampling ratio of Y to C (of thumbnail) 13036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_YCBCR_SUB_SAMPLING as the exif_tag_type (EXIF_SHORT) 13046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 2 13056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_YCBCR_SUB_SAMPLING 0x0212 13066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_YCBCR_SUB_SAMPLING \ 13076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_YCBCR_SUB_SAMPLING, _ID_TN_YCBCR_SUB_SAMPLING) 13086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_YCBCR_SUB_SAMPLING EXIF_SHORT 13096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Y and C positioning (of thumbnail) 13106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_YCBCR_POSITIONING as the exif_tag_type (EXIF_SHORT) 13116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 13126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_YCBCR_POSITIONING 0x0213 13136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_YCBCR_POSITIONING \ 13146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_YCBCR_POSITIONING, _ID_TN_YCBCR_POSITIONING) 13156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_YCBCR_POSITIONING EXIF_SHORT 13166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Pair of black and white reference values (of thumbnail) 13176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_REFERENCE_BLACK_WHITE as the exif_tag_type (EXIF_RATIONAL) 13186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 6 13196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_REFERENCE_BLACK_WHITE 0x0214 13206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_REFERENCE_BLACK_WHITE \ 13216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(TN_REFERENCE_BLACK_WHITE, _ID_TN_REFERENCE_BLACK_WHITE) 13226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_REFERENCE_BLACK_WHITE EXIF_RATIONAL 13236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Copyright holder (of thumbnail) 13246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_TN_COPYRIGHT as the exif_tag_type (EXIF_ASCII) 13256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 13266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_TN_COPYRIGHT 0x8298 13276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_TN_COPYRIGHT CONSTRUCT_TAGID(TN_COPYRIGHT, _ID_TN_COPYRIGHT) 13286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_TN_COPYRIGHT EXIF_ASCII 13296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Exposure time 13306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXPOSURE_TIME as the exif_tag_type (EXIF_RATIONAL) 13316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 13326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXPOSURE_TIME 0x829a 13336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXPOSURE_TIME \ 13346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXPOSURE_TIME, _ID_EXPOSURE_TIME) 13356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXPOSURE_TIME EXIF_RATIONAL 13366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// F number 13376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_F_NUMBER as the exif_tag_type (EXIF_RATIONAL) 13386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 13396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_F_NUMBER 0x829d 13406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_F_NUMBER \ 13416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(F_NUMBER, _ID_F_NUMBER) 13426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_F_NUMBER EXIF_RATIONAL 13436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Exif IFD pointer (NOT INTENDED to be accessible to user) 13446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_IFD_PTR 0x8769 13456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_IFD_PTR \ 13466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_IFD, _ID_EXIF_IFD_PTR) 13476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_IFD_PTR EXIF_LONG 13486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 13496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// ICC_PROFILE (NOT INTENDED to be accessible to user) 13506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_ICC_PROFILE 0x8773 13516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_ICC_PROFILE CONSTRUCT_TAGID(ICC_PROFILE, _ID_ICC_PROFILE) 13526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_ICC_PROFILE EXIF_LONG 13536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Exposure program 13546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXPOSURE_PROGRAM as the exif_tag_type (EXIF_SHORT) 13556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 13566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXPOSURE_PROGRAM 0x8822 13576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXPOSURE_PROGRAM \ 13586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXPOSURE_PROGRAM, _ID_EXPOSURE_PROGRAM) 13596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXPOSURE_PROGRAM EXIF_SHORT 13606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Spectral sensitivity 13616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SPECTRAL_SENSITIVITY as the exif_tag_type (EXIF_ASCII) 13626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 13636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SPECTRAL_SENSITIVITY 0x8824 13646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SPECTRAL_SENSITIVITY \ 13656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SPECTRAL_SENSITIVITY, _ID_SPECTRAL_SENSITIVITY) 13666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SPECTRAL_SENSITIVITY EXIF_ASCII 13676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// GPS IFD pointer (NOT INTENDED to be accessible to user) 13686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GPS_IFD_PTR 0x8825 13696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GPS_IFD_PTR \ 13706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(GPS_IFD, _ID_GPS_IFD_PTR) 13716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GPS_IFD_PTR EXIF_LONG 13726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// ISO Speed Rating 13736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_ISO_SPEED_RATING as the exif_tag_type (EXIF_SHORT) 13746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 13756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_ISO_SPEED_RATING 0x8827 13766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_ISO_SPEED_RATING \ 13776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(ISO_SPEED_RATING, _ID_ISO_SPEED_RATING) 13786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_ISO_SPEED_RATING EXIF_SHORT 13796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Optoelectric conversion factor 13806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_OECF as the exif_tag_type (EXIF_UNDEFINED) 13816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 13826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_OECF 0x8828 13836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_OECF CONSTRUCT_TAGID(OECF, _ID_OECF) 13846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_OECF EXIF_UNDEFINED 13856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Exif version 13866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_VERSION as the exif_tag_type (EXIF_UNDEFINED) 13876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 4 13886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_VERSION 0x9000 13896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_VERSION \ 13906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_VERSION, _ID_EXIF_VERSION) 13916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_VERSION EXIF_UNDEFINED 13926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Date and time of original data gerneration 13936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_DATE_TIME_ORIGINAL as the exif_tag_type (EXIF_ASCII) 13946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 20 characters long including the null-terminating character. 13956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_DATE_TIME_ORIGINAL 0x9003 13966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_DATE_TIME_ORIGINAL \ 13976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_DATE_TIME_ORIGINAL, _ID_EXIF_DATE_TIME_ORIGINAL) 13986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_DATE_TIME_ORIGINAL EXIF_ASCII 13996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Date and time of digital data generation 14006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_DATE_TIME_DIGITIZED as the exif_tag_type (EXIF_ASCII) 14016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// It should be 20 characters long including the null-terminating character. 14026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_DATE_TIME_DIGITIZED 0x9004 14036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_DATE_TIME_DIGITIZED \ 14046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_DATE_TIME_DIGITIZED, _ID_EXIF_DATE_TIME_DIGITIZED) 14056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_DATE_TIME_DIGITIZED EXIF_ASCII 14066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Meaning of each component 14076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_COMPONENTS_CONFIG as the exif_tag_type (EXIF_UNDEFINED) 14086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 4 14096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_COMPONENTS_CONFIG 0x9101 14106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_COMPONENTS_CONFIG \ 14116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_COMPONENTS_CONFIG, _ID_EXIF_COMPONENTS_CONFIG) 14126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_COMPONENTS_CONFIG EXIF_UNDEFINED 14136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Meaning of Image compression mode 14146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_COMPRESSED_BITS_PER_PIXEL as the exif_tag_type (EXIF_RATIONAL) 14156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_COMPRESSED_BITS_PER_PIXEL 0x9102 14176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_COMPRESSED_BITS_PER_PIXEL \ 14186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_COMPRESSED_BITS_PER_PIXEL, _ID_EXIF_COMPRESSED_BITS_PER_PIXEL) 14196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_COMPRESSED_BITS_PER_PIXEL EXIF_RATIONAL 14206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Shutter speed 14216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SHUTTER_SPEED as the exif_tag_type (EXIF_SRATIONAL) 14226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SHUTTER_SPEED 0x9201 14246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SHUTTER_SPEED \ 14256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SHUTTER_SPEED, _ID_SHUTTER_SPEED) 14266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SHUTTER_SPEED EXIF_SRATIONAL 14276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Aperture 14286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_APERTURE as the exif_tag_type (EXIF_RATIONAL) 14296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_APERTURE 0x9202 14316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_APERTURE CONSTRUCT_TAGID(APERTURE, _ID_APERTURE) 14326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_APERTURE EXIF_RATIONAL 14336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Brigthness 14346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_BRIGHTNESS as the exif_tag_type (EXIF_SRATIONAL) 14356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_BRIGHTNESS 0x9203 14376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_BRIGHTNESS CONSTRUCT_TAGID(BRIGHTNESS, _ID_BRIGHTNESS) 14386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_BRIGHTNESS EXIF_SRATIONAL 14396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Exposure bias 14406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXPOSURE_BIAS_VALUE as the exif_tag_type (EXIF_SRATIONAL) 14416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXPOSURE_BIAS_VALUE 0x9204 14436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXPOSURE_BIAS_VALUE \ 14446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXPOSURE_BIAS_VALUE, _ID_EXPOSURE_BIAS_VALUE) 14456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXPOSURE_BIAS_VALUE EXIF_SRATIONAL 14466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Maximum lens aperture 14476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_MAX_APERTURE as the exif_tag_type (EXIF_RATIONAL) 14486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_MAX_APERTURE 0x9205 14506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_MAX_APERTURE CONSTRUCT_TAGID(MAX_APERTURE, _ID_MAX_APERTURE) 14516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_MAX_APERTURE EXIF_RATIONAL 14526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Subject distance 14536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SUBJECT_DISTANCE as the exif_tag_type (EXIF_RATIONAL) 14546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SUBJECT_DISTANCE 0x9206 14566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SUBJECT_DISTANCE \ 14576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SUBJECT_DISTANCE, _ID_SUBJECT_DISTANCE) 14586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SUBJECT_DISTANCE EXIF_RATIONAL 14596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Metering mode 14606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_METERING_MODE as the exif_tag_type (EXIF_SHORT) 14616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_METERING_MODE 0x9207 14636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_METERING_MODE \ 14646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(METERING_MODE, _ID_METERING_MODE) 14656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_METERING_MODE EXIF_SHORT 14666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Light source 14676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_LIGHT_SOURCE as the exif_tag_type (EXIF_SHORT) 14686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_LIGHT_SOURCE 0x9208 14706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_LIGHT_SOURCE CONSTRUCT_TAGID(LIGHT_SOURCE, _ID_LIGHT_SOURCE) 14716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_LIGHT_SOURCE EXIF_SHORT 14726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Flash 14736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FLASH as the exif_tag_type (EXIF_SHORT) 14746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FLASH 0x9209 14766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FLASH CONSTRUCT_TAGID(FLASH, _ID_FLASH) 14776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FLASH EXIF_SHORT 14786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Lens focal length 14796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FOCAL_LENGTH as the exif_tag_type (EXIF_RATIONAL) 14806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 14816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FOCAL_LENGTH 0x920a 14826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FOCAL_LENGTH CONSTRUCT_TAGID(FOCAL_LENGTH, _ID_FOCAL_LENGTH) 14836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FOCAL_LENGTH EXIF_RATIONAL 14846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Subject area 14856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SUBJECT_AREA as exif_tag_type (EXIF_SHORT) 14866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 2 or 3 or 4 14876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SUBJECT_AREA 0x9214 14886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SUBJECT_AREA CONSTRUCT_TAGID(SUBJECT_AREA, _ID_SUBJECT_AREA) 14896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SUBJECT_AREA EXIF_SHORT 14906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Maker note 14916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_MAKER_NOTE as the exif_tag_type (EXIF_UNDEFINED) 14926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 14936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_MAKER_NOTE 0x927c 14946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_MAKER_NOTE \ 14956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_MAKER_NOTE, _ID_EXIF_MAKER_NOTE) 14966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_MAKER_NOTE EXIF_UNDEFINED 14976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// User comments 14986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_USER_COMMENT as the exif_tag_type (EXIF_UNDEFINED) 14996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 15006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_USER_COMMENT 0x9286 15016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_USER_COMMENT \ 15026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_USER_COMMENT, _ID_EXIF_USER_COMMENT) 15036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_USER_COMMENT EXIF_UNDEFINED 15046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Date time sub-seconds 15056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SUBSEC_TIME as the exif_tag_type (EXIF_ASCII) 15066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count could be any 15076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SUBSEC_TIME 0x9290 15086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SUBSEC_TIME CONSTRUCT_TAGID(SUBSEC_TIME, _ID_SUBSEC_TIME) 15096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SEBSEC_TIME EXIF_ASCII 15106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Date time original sub-seconds 15116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// use EXIFTAGTYPE_SUBSEC_TIME_ORIGINAL as the exif_tag_type (EXIF_ASCII) 15126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count could be any 15136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SUBSEC_TIME_ORIGINAL 0x9291 15146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SUBSEC_TIME_ORIGINAL \ 15156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SUBSEC_TIME_ORIGINAL, _ID_SUBSEC_TIME_ORIGINAL) 15166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SUBSEC_TIME_ORIGINAL EXIF_ASCII 15176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Date time digitized sub-seconds 15186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// use EXIFTAGTYPE_SUBSEC_TIME_DIGITIZED as the exif_tag_type (EXIF_ASCII) 15196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count could be any 15206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SUBSEC_TIME_DIGITIZED 0x9292 15216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SUBSEC_TIME_DIGITIZED \ 15226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SUBSEC_TIME_DIGITIZED, _ID_SUBSEC_TIME_DIGITIZED) 15236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SUBSEC_TIME_DIGITIZED EXIF_ASCII 15246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Supported Flashpix version 15256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_FLASHPIX_VERSION as the exif_tag_type (EXIF_UNDEFINED) 15266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 4 15276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_FLASHPIX_VERSION 0xa000 15286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_FLASHPIX_VERSION \ 15296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_FLASHPIX_VERSION, _ID_EXIF_FLASHPIX_VERSION) 15306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_FLASHPIX_VERSION EXIF_UNDEFINED 15316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Color space information 15326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_COLOR_SPACE as the exif_tag_type (EXIF_SHORT) 15336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 15346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_COLOR_SPACE 0xa001 15356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_COLOR_SPACE \ 15366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_COLOR_SPACE, _ID_EXIF_COLOR_SPACE) 15376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_COLOR_SPACE EXIF_SHORT 15386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Valid image width 15396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_PIXEL_X_DIMENSION as the exif_tag_type (EXIF_SHORT) 15406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 15416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_PIXEL_X_DIMENSION 0xa002 15426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_PIXEL_X_DIMENSION \ 15436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_PIXEL_X_DIMENSION, _ID_EXIF_PIXEL_X_DIMENSION) 15446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_PIXEL_X_DIMENSION EXIF_SHORT 15456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Valid image height 15466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_PIXEL_Y_DIMENSION as the exif_tag_type (EXIF_SHORT) 15476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 15486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXIF_PIXEL_Y_DIMENSION 0xa003 15496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXIF_PIXEL_Y_DIMENSION \ 15506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXIF_PIXEL_Y_DIMENSION, _ID_EXIF_PIXEL_Y_DIMENSION) 15516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXIF_PIXEL_Y_DIMENSION EXIF_SHORT 15526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Related audio file 15536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_RELATED_SOUND_FILE as the exif_tag_type (EXIF_ASCII) 15546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 13 15556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_RELATED_SOUND_FILE 0xa004 15566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_RELATED_SOUND_FILE \ 15576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(RELATED_SOUND_FILE, _ID_RELATED_SOUND_FILE) 15586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_RELATED_SOUND_FILE EXIF_ASCII 15596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Interop IFD pointer (NOT INTENDED to be accessible to user) 15606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_INTEROP_IFD_PTR 0xa005 15616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_INTEROP_IFD_PTR CONSTRUCT_TAGID(INTEROP, _ID_INTEROP_IFD_PTR) 15626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_INTEROP_IFD_PTR EXIF_LONG 15636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Flash energy 15646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXIF_FLASH_ENERGY as the exif_tag_type (EXIF_RATIONAL) 15656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 15666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FLASH_ENERGY 0xa20b 15676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FLASH_ENERGY CONSTRUCT_TAGID(FLASH_ENERGY, _ID_FLASH_ENERGY) 15686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FLASH_ENERGY EXIF_RATIONAL 15696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Spatial frequency response 15706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SPATIAL_FREQ_RESPONSE as exif_tag_type (EXIF_UNDEFINED) 15716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count would be any 15726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SPATIAL_FREQ_RESPONSE 0xa20c 15736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SPATIAL_FREQ_RESPONSE \ 15746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SPATIAL_FREQ_RESPONSE, _ID_SPATIAL_FREQ_RESPONSE) 15756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SPATIAL_FREQ_RESPONSE EXIF_UNDEFINED 15766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Focal plane x resolution 15776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FOCAL_PLANE_X_RESOLUTION as exif_tag_type (EXIF_RATIONAL) 15786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 15796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FOCAL_PLANE_X_RESOLUTION 0xa20e 15806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FOCAL_PLANE_X_RESOLUTION \ 15816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(FOCAL_PLANE_X_RESOLUTION, _ID_FOCAL_PLANE_X_RESOLUTION) 15826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FOCAL_PLANE_X_RESOLUTION EXIF_RATIONAL 15836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Focal plane y resolution 15846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FOCAL_PLANE_Y_RESOLUTION as exif_tag_type (EXIF_RATIONAL) 15856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 15866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FOCAL_PLANE_Y_RESOLUTION 0xa20f 15876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FOCAL_PLANE_Y_RESOLUTION \ 15886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(FOCAL_PLANE_Y_RESOLUTION, _ID_FOCAL_PLANE_Y_RESOLUTION) 15896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FOCAL_PLANE_Y_RESOLUTION EXIF_RATIONAL 15906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Focal plane resolution unit 15916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FOCAL_PLANE_RESOLUTION_UNIT as exif_tag_type (EXIF_SHORT) 15926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 15936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FOCAL_PLANE_RESOLUTION_UNIT 0xa210 15946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FOCAL_PLANE_RESOLUTION_UNIT \ 15956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(FOCAL_PLANE_RESOLUTION_UNIT, _ID_FOCAL_PLANE_RESOLUTION_UNIT) 15966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FOCAL_PLANE_RESOLUTION_UNIT EXIF_SHORT 15976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Subject location 15986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SUBJECT_LOCATION as the exif_tag_type (EXIF_SHORT) 15996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 2 16006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SUBJECT_LOCATION 0xa214 16016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SUBJECT_LOCATION \ 16026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SUBJECT_LOCATION, _ID_SUBJECT_LOCATION) 16036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SUBJECT_LOCATION EXIF_SHORT 16046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Exposure index 16056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXPOSURE_INDEX as the exif_tag_type (EXIF_RATIONAL) 16066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXPOSURE_INDEX 0xa215 16086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXPOSURE_INDEX \ 16096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXPOSURE_INDEX, _ID_EXPOSURE_INDEX) 16106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXPOSURE_INDEX EXIF_RATIONAL 16116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Sensing method 16126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SENSING_METHOD as the exif_tag_type (EXIF_SHORT) 16136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SENSING_METHOD 0xa217 16156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SENSING_METHOD \ 16166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SENSING_METHOD, _ID_SENSING_METHOD) 16176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SENSING_METHOD EXIF_SHORT 16186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// File source 16196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FILE_SOURCE as the exif_tag_type (EXIF_UNDEFINED) 16206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FILE_SOURCE 0xa300 16226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FILE_SOURCE CONSTRUCT_TAGID(FILE_SOURCE, _ID_FILE_SOURCE) 16236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FILE_SOURCE EXIF_UNDEFINED 16246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Scene type 16256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SCENE_TYPE as the exif_tag_type (EXIF_UNDEFINED) 16266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SCENE_TYPE 0xa301 16286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SCENE_TYPE CONSTRUCT_TAGID(SCENE_TYPE, _ID_SCENE_TYPE) 16296f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SCENE_TYPE EXIF_UNDEFINED 16306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// CFA pattern 16316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_CFA_PATTERN as the exif_tag_type (EXIF_UNDEFINED) 16326f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 16336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_CFA_PATTERN 0xa302 16346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_CFA_PATTERN CONSTRUCT_TAGID(CFA_PATTERN, _ID_CFA_PATTERN) 16356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_CFA_PATTERN EXIF_UNDEFINED 16366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Custom image processing 16376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_CUSTOM_RENDERED as the exif_tag_type (EXIF_SHORT) 16386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_CUSTOM_RENDERED 0xa401 16406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_CUSTOM_RENDERED \ 16416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(CUSTOM_RENDERED, _ID_CUSTOM_RENDERED) 16426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_CUSTOM_RENDERED EXIF_SHORT 16436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Exposure mode 16446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_EXPOSURE_MODE as the exif_tag_type (EXIF_SHORT) 16456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16466f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_EXPOSURE_MODE 0xa402 16476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_EXPOSURE_MODE \ 16486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(EXPOSURE_MODE, _ID_EXPOSURE_MODE) 16496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_EXPOSURE_MODE EXIF_SHORT 16506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// White balance 16516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_WHITE_BALANCE as the exif_tag_type (EXIF_SHORT) 16526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_WHITE_BALANCE 0xa403 16546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_WHITE_BALANCE \ 16556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(WHITE_BALANCE, _ID_WHITE_BALANCE) 16566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_WHITE_BALANCE EXIF_SHORT 16576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Digital zoom ratio 16586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_DIGITAL_ZOOM_RATIO as the exif_tag_type (EXIF_RATIONAL) 16596f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_DIGITAL_ZOOM_RATIO 0xa404 16616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_DIGITAL_ZOOM_RATIO \ 16626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(DIGITAL_ZOOM_RATIO, _ID_DIGITAL_ZOOM_RATIO) 16636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_DIGITAL_ZOOM_RATIO EXIF_RATIONAL 16646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Focal length in 35mm film 16656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_FOCAL_LENGTH_35MM as the exif_tag_type (EXIF_SHORT) 16666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_FOCAL_LENGTH_35MM 0xa405 16686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_FOCAL_LENGTH_35MM CONSTRUCT_TAGID(FOCAL_LENGTH_35MM, _ID_FOCAL_LENGTH_35MM) 16696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_FOCAL_LENGTH_35MM EXIF_SHORT 16706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Scene capture type 16716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SCENE_CAPTURE_TYPE as the exif_tag_type (EXIF_SHORT) 16726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SCENE_CAPTURE_TYPE 0xa406 16746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SCENE_CAPTURE_TYPE \ 16756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SCENE_CAPTURE_TYPE, _ID_SCENE_CAPTURE_TYPE) 16766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SCENE_CAPTURE_TYPE EXIF_SHORT 16776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Gain control 16786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_GAIN_CONTROL as the exif_tag_type (EXIF_SHORT) 16796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_GAIN_CONTROL 0xa407 16816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_GAIN_CONTROL CONSTRUCT_TAGID(GAIN_CONTROL, _ID_GAIN_CONTROL) 16826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_GAIN_CONTROL EXIF_SHORT 16836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Contrast 16846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_CONTRAST as the exif_tag_type (EXIF_SHORT) 16856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16866f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_CONTRAST 0xa408 16876f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_CONTRAST CONSTRUCT_TAGID(CONTRAST, _ID_CONTRAST) 16886f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_CONTRAST EXIF_SHORT 16896f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Saturation 16906f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SATURATION as the exif_tag_type (EXIF_SHORT) 16916f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16926f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SATURATION 0xa409 16936f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SATURATION CONSTRUCT_TAGID(SATURATION, _ID_SATURATION) 16946f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SATURATION EXIF_SHORT 16956f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Sharpness 16966f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SHARPNESS as the exif_tag_type (EXIF_SHORT) 16976f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 16986f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SHARPNESS 0xa40a 16996f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SHARPNESS CONSTRUCT_TAGID(SHARPNESS, _ID_SHARPNESS) 17006f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SHARPNESS EXIF_SHORT 17016f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Device settings description 17026f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGID_DEVICE_SETTINGS_DESCRIPTION as exif_tag_type (EXIF_UNDEFINED) 17036f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count could be any 17046f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_DEVICE_SETTINGS_DESCRIPTION 0xa40b 17056f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_DEVICE_SETTINGS_DESCRIPTION \ 17066f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(DEVICE_SETTINGS_DESCRIPTION, _ID_DEVICE_SETTINGS_DESCRIPTION) 17076f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_DEVIC_SETTIGNS_DESCRIPTION EXIF_UNDEFINED 17086f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Subject distance range 17096f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_SUBJECT_DISTANCE_RANGE as the exif_tag_type (EXIF_SHORT) 17106f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 1 17116f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_SUBJECT_DISTANCE_RANGE 0xa40c 17126f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_SUBJECT_DISTANCE_RANGE \ 17136f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev CONSTRUCT_TAGID(SUBJECT_DISTANCE_RANGE, _ID_SUBJECT_DISTANCE_RANGE) 17146f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_SUBJECT_DISTANCE_RANGE EXIF_SHORT 17156f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Unique image id 17166f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAG_TYPE_IMAGE_UIDas the exif_tag_type (EXIF_ASCII) 17176f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count should be 33 17186f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_IMAGE_UID 0xa420 17196f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_IMAGE_UID CONSTRUCT_TAGID(IMAGE_UID, _ID_IMAGE_UID) 17206f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_IMAGE_UID EXIF_ASCII 17216f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// PIM tag 17226f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Use EXIFTAGTYPE_PIM_TAG as the exif_tag_type (EXIF_UNDEFINED) 17236f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev// Count can be any 17246f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define _ID_PIM 0xc4a5 17256f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGID_PIM_TAG CONSTRUCT_TAGID(PIM, _ID_PIM) 17266f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define EXIFTAGTYPE_PIM_TAG EXIF_UNDEFINED 17276f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#endif // __QEXIF_H__ 17286f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev 1729