libopenraw  0.3.7
exif.h
1 /* -*- mode:c++; tab-width:4; c-basic-offset:4; indent-tabs-mode:t; -*- */
2 /*
3  * libopenraw - exif.h
4  *
5  * Copyright (C) 2007-2020 Hubert Figuière
6  *
7  * This library is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public License
9  * as published by the Free Software Foundation, either version 3 of
10  * the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library. If not, see
19  * <http://www.gnu.org/licenses/>.
20  */
21 
22 
23 #ifndef INCLUDE_EXIF_
24 #error Cannot include exif.h directly
25 #endif
26 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 
38 typedef enum {
39  EXIF_TAG_INTEROPERABILITY_INDEX = 0x0001,
40  EXIF_TAG_INTEROPERABILITY_VERSION = 0x0002,
41  EXIF_TAG_NEW_SUBFILE_TYPE = 0x00fe,
42  EXIF_TAG_IMAGE_WIDTH = 0x0100,
43  EXIF_TAG_IMAGE_LENGTH = 0x0101,
44  EXIF_TAG_BITS_PER_SAMPLE = 0x0102,
45  EXIF_TAG_COMPRESSION = 0x0103,
46  EXIF_TAG_PHOTOMETRIC_INTERPRETATION = 0x0106,
47  EXIF_TAG_FILL_ORDER = 0x010a,
48  EXIF_TAG_DOCUMENT_NAME = 0x010d,
49  EXIF_TAG_IMAGE_DESCRIPTION = 0x010e,
50  EXIF_TAG_MAKE = 0x010f,
51  EXIF_TAG_MODEL = 0x0110,
52  EXIF_TAG_STRIP_OFFSETS = 0x0111,
53  EXIF_TAG_ORIENTATION = 0x0112,
54  EXIF_TAG_SAMPLES_PER_PIXEL = 0x0115,
55  EXIF_TAG_ROWS_PER_STRIP = 0x0116,
56  EXIF_TAG_STRIP_BYTE_COUNTS = 0x0117,
57  EXIF_TAG_X_RESOLUTION = 0x011a,
58  EXIF_TAG_Y_RESOLUTION = 0x011b,
59  EXIF_TAG_PLANAR_CONFIGURATION = 0x011c,
60  EXIF_TAG_RESOLUTION_UNIT = 0x0128,
61  EXIF_TAG_TRANSFER_FUNCTION = 0x012d,
62  EXIF_TAG_SOFTWARE = 0x0131,
63  EXIF_TAG_DATE_TIME = 0x0132,
64  EXIF_TAG_ARTIST = 0x013b,
65  EXIF_TAG_WHITE_POINT = 0x013e,
66  EXIF_TAG_PRIMARY_CHROMATICITIES = 0x013f,
67  TIFF_TAG_TILE_WIDTH = 0x0142,
68  TIFF_TAG_TILE_LENGTH = 0x0143,
69  TIFF_TAG_TILE_OFFSETS = 0x0144,
70  TIFF_TAG_TILE_BYTECOUNTS = 0x0145,
71  EXIF_TAG_TRANSFER_RANGE = 0x0156,
72  EXIF_TAG_SUB_IFDS = 0x014a,
73  EXIF_TAG_JPEG_PROC = 0x0200,
74  EXIF_TAG_JPEG_INTERCHANGE_FORMAT = 0x0201,
75  EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = 0x0202,
76  EXIF_TAG_YCBCR_COEFFICIENTS = 0x0211,
77  EXIF_TAG_YCBCR_SUB_SAMPLING = 0x0212,
78  EXIF_TAG_YCBCR_POSITIONING = 0x0213,
79  EXIF_TAG_REFERENCE_BLACK_WHITE = 0x0214,
80  EXIF_TAG_XML_PACKET = 0x02bc,
81  EXIF_TAG_RELATED_IMAGE_FILE_FORMAT = 0x1000,
82  EXIF_TAG_RELATED_IMAGE_WIDTH = 0x1001,
83  EXIF_TAG_RELATED_IMAGE_LENGTH = 0x1002,
84  EXIF_TAG_CFA_REPEAT_PATTERN_DIM = 0x828d,
85  EXIF_TAG_CFA_PATTERN = 0x828e,
86  EXIF_TAG_BATTERY_LEVEL = 0x828f,
87  EXIF_TAG_COPYRIGHT = 0x8298,
88  EXIF_TAG_EXPOSURE_TIME = 0x829a,
89  EXIF_TAG_FNUMBER = 0x829d,
90  EXIF_TAG_IPTC_NAA = 0x83bb,
91  EXIF_TAG_IMAGE_RESOURCES = 0x8649,
92  EXIF_TAG_EXIF_IFD_POINTER = 0x8769,
93  EXIF_TAG_INTER_COLOR_PROFILE = 0x8773,
94  EXIF_TAG_EXPOSURE_PROGRAM = 0x8822,
95  EXIF_TAG_SPECTRAL_SENSITIVITY = 0x8824,
96  EXIF_TAG_GPS_INFO_IFD_POINTER = 0x8825,
97  EXIF_TAG_ISO_SPEED_RATINGS = 0x8827,
98  EXIF_TAG_OECF = 0x8828,
99  EXIF_TAG_EXIF_VERSION = 0x9000,
100  EXIF_TAG_DATE_TIME_ORIGINAL = 0x9003,
101  EXIF_TAG_DATE_TIME_DIGITIZED = 0x9004,
102  EXIF_TAG_COMPONENTS_CONFIGURATION = 0x9101,
103  EXIF_TAG_COMPRESSED_BITS_PER_PIXEL = 0x9102,
104  EXIF_TAG_SHUTTER_SPEED_VALUE = 0x9201,
105  EXIF_TAG_APERTURE_VALUE = 0x9202,
106  EXIF_TAG_BRIGHTNESS_VALUE = 0x9203,
107  EXIF_TAG_EXPOSURE_BIAS_VALUE = 0x9204,
108  EXIF_TAG_MAX_APERTURE_VALUE = 0x9205,
109  EXIF_TAG_SUBJECT_DISTANCE = 0x9206,
110  EXIF_TAG_METERING_MODE = 0x9207,
111  EXIF_TAG_LIGHT_SOURCE = 0x9208,
112  EXIF_TAG_FLASH = 0x9209,
113  EXIF_TAG_FOCAL_LENGTH = 0x920a,
114  EXIF_TAG_SUBJECT_AREA = 0x9214,
115  EXIF_TAG_TIFF_EP_STANDARD_ID = 0x9216,
116  EXIF_TAG_MAKER_NOTE = 0x927c,
117  EXIF_TAG_USER_COMMENT = 0x9286,
118  EXIF_TAG_SUB_SEC_TIME = 0x9290,
119  EXIF_TAG_SUB_SEC_TIME_ORIGINAL = 0x9291,
120  EXIF_TAG_SUB_SEC_TIME_DIGITIZED = 0x9292,
121  EXIF_TAG_FLASH_PIX_VERSION = 0xa000,
122  EXIF_TAG_COLOR_SPACE = 0xa001,
123  EXIF_TAG_PIXEL_X_DIMENSION = 0xa002,
124  EXIF_TAG_PIXEL_Y_DIMENSION = 0xa003,
125  EXIF_TAG_RELATED_SOUND_FILE = 0xa004,
126  EXIF_TAG_INTEROPERABILITY_IFD_POINTER = 0xa005,
127  EXIF_TAG_FLASH_ENERGY = 0xa20b,
128  EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE = 0xa20c,
129  EXIF_TAG_FOCAL_PLANE_X_RESOLUTION = 0xa20e,
130  EXIF_TAG_FOCAL_PLANE_Y_RESOLUTION = 0xa20f,
131  EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT = 0xa210,
132  EXIF_TAG_SUBJECT_LOCATION = 0xa214,
133  EXIF_TAG_EXPOSURE_INDEX = 0xa215,
134  EXIF_TAG_SENSING_METHOD = 0xa217,
135  EXIF_TAG_FILE_SOURCE = 0xa300,
136  EXIF_TAG_SCENE_TYPE = 0xa301,
137  EXIF_TAG_NEW_CFA_PATTERN = 0xa302,
138  EXIF_TAG_CUSTOM_RENDERED = 0xa401,
139  EXIF_TAG_EXPOSURE_MODE = 0xa402,
140  EXIF_TAG_WHITE_BALANCE = 0xa403,
141  EXIF_TAG_DIGITAL_ZOOM_RATIO = 0xa404,
142  EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM = 0xa405,
143  EXIF_TAG_SCENE_CAPTURE_TYPE = 0xa406,
144  EXIF_TAG_GAIN_CONTROL = 0xa407,
145  EXIF_TAG_CONTRAST = 0xa408,
146  EXIF_TAG_SATURATION = 0xa409,
147  EXIF_TAG_SHARPNESS = 0xa40a,
148  EXIF_TAG_DEVICE_SETTING_DESCRIPTION = 0xa40b,
149  EXIF_TAG_SUBJECT_DISTANCE_RANGE = 0xa40c,
150  EXIF_TAG_IMAGE_UNIQUE_ID = 0xa420,
151  EXIF_TAG_CAMERA_OWNER_NAME = 0xa430,
152  EXIF_TAG_BODY_SERIAL_NUMBER = 0xa431,
153  EXIF_TAG_BODY_LENS_MAKE = 0xa433,
154  EXIF_TAG_BODY_LENS_MODEL = 0xa434,
155  EXIF_TAG_GAMMA = 0xa500,
156  EXIF_TAG_UNKNOWN_C4A5 = 0xc4a5,
157  /* DNG tags */
158  TIFF_TAG_DNG_VERSION = 0xc612,
159  DNG_TAG_UNIQUE_CAMERA_MODEL = 0xc614,
160  DNG_TAG_DEFAULT_CROP_ORIGIN = 0xc61f,
161  DNG_TAG_DEFAULT_CROP_SIZE = 0xc620,
162  DNG_TAG_COLORMATRIX1 = 0xc621,
163  DNG_TAG_COLORMATRIX2 = 0xc622,
164  DNG_TAG_CAMERA_CALIBRATION1 = 0xc623,
165  DNG_TAG_CAMERA_CALIBRATION2 = 0xc624,
166  DNG_TAG_REDUCTION_MATRIX1 = 0xc625,
167  DNG_TAG_REDUCTION_MATRIX2 = 0xc626,
168  DNG_TAG_ANALOG_BALANCE = 0xc627,
169  DNG_TAG_AS_SHOT_NEUTRAL = 0xc628,
170  DNG_TAG_AS_SHOT_WHITE_XY = 0xc629,
171  DNG_TAG_CALIBRATION_ILLUMINANT1 = 0xc65a,
172  DNG_TAG_CALIBRATION_ILLUMINANT2 = 0xc65b,
173  DNG_TAG_ORIGINAL_RAW_FILE_NAME = 0xc68b,
174  DNG_TAG_ACTIVE_AREA = 0xc68d,
175 
176  /* ERF tags */
177  ERF_TAG_PREVIEW_IMAGE = 0x280,
178 
179  /* ERF MakerNote */
180  MNOTE_EPSON_SENSORAREA = 0x400,
181 
182  /* ORF tags */
183  ORF_TAG_THUMBNAIL_IMAGE = 0x100,
184  ORF_TAG_CAMERA_SETTINGS = 0x2020,
185  /* Camera Settings */
186  ORF_TAG_CS_PREVIEW_IMAGE_VALID = 0x100,
187  ORF_TAG_CS_PREVIEW_IMAGE_START = 0x101,
188  ORF_TAG_CS_PREVIEW_IMAGE_LENGTH = 0x102,
189 
190  /* CR2 tags */
191  CR2_TAG_c5d9 = 0xc5d9,
192  CR2_TAG_SLICE = 0xc640,
193  CR2_TAG_SRAW_TYPE = 0xc6c5,
194  CR2_TAG_c6d6 = 0xc6d6,
195 
196  /* RW2 tags */
197  RW2_TAG_SENSOR_WIDTH = 0x0002,
198  RW2_TAG_SENSOR_HEIGHT = 0x0003,
199  RW2_TAG_SENSOR_TOPBORDER = 0x0004,
200  RW2_TAG_SENSOR_LEFTBORDER = 0x0005,
201  RW2_TAG_SENSOR_BOTTOMBORDER = 0x0006,
202  RW2_TAG_SENSOR_RIGHTBORDER = 0x0007,
203  RW2_TAG_IMAGE_CFAPATTERN = 0x0009,
204  RW2_TAG_IMAGE_BITSPERSAMPLE = 0x000a,
205  RW2_TAG_IMAGE_COMPRESSION = 0x000b,
206  RW2_TAG_IMAGE_RAWFORMAT = 0x002d,
207  RW2_TAG_JPEG_FROM_RAW = 0x002e,
208  RW2_TAG_STRIP_OFFSETS = 0x0118,
209 
210  /* Pentax MakerNote tags */
211  MNOTE_PENTAX_PREVIEW_IMAGE_SIZE = 0x02,
212  MNOTE_PENTAX_PREVIEW_IMAGE_LENGTH = 0x03,
213  MNOTE_PENTAX_PREVIEW_IMAGE_START = 0x04,
214  MNOTE_PENTAX_MODEL_ID = 0x05,
215  MNOTE_PENTAX_IMAGEAREAOFFSET = 0x38,
216  MNOTE_PENTAX_RAWIMAGESIZE = 0x39,
217  MNOTE_PENTAX_WHITELEVEL = 0x7e,
218 
219  /* Canon MakerNote tags */
220  MNOTE_CANON_MODEL_ID = 0x0010,
221  MNOTE_CANON_RAW_DATA_OFFSET = 0x0081,
222  MNOTE_CANON_RAW_DATA_LENGTH = 0x0082,
223  MNOTE_CANON_SENSORINFO = 0x00e0,
224 
225  /* Leica MakerNote tags */
226  MNOTE_LEICA_PREVIEW_IMAGE = 0x300,
227 
228  /* Nikon MakerNote tags */
229  MNOTE_NIKON_QUALITY = 0x04,
230  MNOTE_NIKON_PREVIEW_IFD = 0x11,
231  MNOTE_NIKON_NEFDECODETABLE2 = 0x96,
232 
233  /* Nikon MakerNote Preview IFD tags */
234  MNOTE_NIKON_PREVIEWIFD_START = 0x201,
235  MNOTE_NIKON_PREVIEWIFD_LENGTH = 0x202,
236 
237  /* Sony MakerNode */
238  MNOTE_SONY_MODEL_ID = 0xb001,
239 
240  _EXIF_TAG_LAST
241 } ExifTag;
242 
243 typedef enum {
244  EV_PI_BLACKISZERO = 1,
245  EV_PI_RGB = 2,
246  EV_PI_YCBCR = 6,
247 
248  /* RAW only */
249  EV_PI_CFA = 32803,
250  EV_PI_LINEAR_RAW = 34892
251 } ExifPhotometricInterpretation;
252 
253 typedef enum {
254  EV_LIGHTSOURCE_UNKNOWN = 0,
255  EV_LIGHTSOURCE_DAYLIGHT = 1,
256  EV_LIGHTSOURCE_FLUORESCENT = 2,
257  EV_LIGHTSOURCE_TUNGSTEN = 3,
258  EV_LIGHTSOURCE_STANDARD_A = 17,
259  EV_LIGHTSOURCE_STANDARD_B = 18,
260  EV_LIGHTSOURCE_STANDARD_C = 19,
261  EV_LIGHTSOURCE_D55 = 20,
262  EV_LIGHTSOURCE_D65 = 21,
263  EV_LIGHTSOURCE_D75 = 22,
264  /* 23...254 reserved */
265  EV_LIGHTSOURCE_OTHER = 255
266 } ExifLightsourceValue;
267 
271 typedef enum {
272  EXIF_FORMAT_BYTE = 1,
273  EXIF_FORMAT_ASCII = 2,
274  EXIF_FORMAT_SHORT = 3,
275  EXIF_FORMAT_LONG = 4,
276  EXIF_FORMAT_RATIONAL = 5,
277  EXIF_FORMAT_SBYTE = 6,
278  EXIF_FORMAT_UNDEFINED = 7,
279  EXIF_FORMAT_SSHORT = 8,
280  EXIF_FORMAT_SLONG = 9,
281  EXIF_FORMAT_SRATIONAL = 10,
282  EXIF_FORMAT_FLOAT = 11,
283  EXIF_FORMAT_DOUBLE = 12,
284  EXIF_FORMAT_INVALID = 13
285 } ExifTagType;
286 
288 struct ORRational {
289 #ifdef __cplusplus
290  ORRational() : num(0), denom(0) {}
291 #endif
292  uint32_t num;
293  uint32_t denom;
294 };
295 
297 struct ORSRational {
298 #ifdef __cplusplus
299  ORSRational() : num(0), denom(0) {}
300 #endif
301  int32_t num;
302  uint32_t denom;
303 };
304 
305 #ifdef __cplusplus
306 }
307 #endif
308 
ExifTag
Definition: exif.h:38
ExifTagType
Definition: exif.h:271
@ CR2_TAG_SLICE
Definition: exif.h:192
Unsigned rational as a fraction.
Definition: exif.h:288
uint32_t num
Definition: exif.h:292
uint32_t denom
Definition: exif.h:293
Signed rational as a fraction.
Definition: exif.h:297
int32_t num
Definition: exif.h:301
uint32_t denom
Definition: exif.h:302