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