FFmpeg  4.4
tiff.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2006 Konstantin Shishkov
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 /**
22  * @file
23  * TIFF constants & data structures
24  *
25  * For more information about the TIFF format, check the official docs at:
26  * http://partners.adobe.com/public/developer/tiff/index.html
27  * @author Konstantin Shishkov
28  */
29 
30 #ifndef AVCODEC_TIFF_H
31 #define AVCODEC_TIFF_H
32 
33 #include <stdint.h>
34 #include "tiff_common.h"
35 
36 /** TIFF types in ascenting priority (last in the list is highest) */
37 enum TiffType {
38  /** TIFF image based on the TIFF 6.0 or TIFF/EP (ISO 12234-2) specifications */
40  /** Digital Negative (DNG) image */
42  /** Digital Negative (DNG) image part of an CinemaDNG image sequence */
44 };
45 
46 /** abridged list of TIFF and TIFF/EP tags */
47 enum TiffTags {
48  TIFF_SUBFILE = 0xfe,
49  TIFF_WIDTH = 0x100,
54  TIFF_FILL_ORDER = 0x10A,
57  TIFF_MAKE = 0x10F,
58  TIFF_MODEL = 0x110,
59  TIFF_STRIP_OFFS = 0x111,
63  TIFF_XRES = 0x11A,
64  TIFF_YRES = 0x11B,
65  TIFF_PLANAR = 0x11C,
66  TIFF_PAGE_NAME = 0x11D,
67  TIFF_XPOS = 0x11E,
68  TIFF_YPOS = 0x11F,
69  TIFF_T4OPTIONS = 0x124,
71  TIFF_RES_UNIT = 0x128,
74  TIFF_DATE = 0x132,
75  TIFF_ARTIST = 0x13B,
77  TIFF_PREDICTOR = 0x13D,
78  TIFF_PAL = 0x140,
79  TIFF_TILE_WIDTH = 0x142,
83  TIFF_SUB_IFDS = 0x14A,
90  TIFF_CFA_PATTERN = 0x828E,
91  TIFF_COPYRIGHT = 0x8298,
95  TIFF_ICC_PROFILE = 0x8773,
99 };
100 
101 /** abridged list of DNG tags */
102 enum DngTags {
103  DNG_VERSION = 0xC612,
106  DNG_BLACK_LEVEL = 0xC61A,
107  DNG_WHITE_LEVEL = 0xC61D,
108 };
109 
110 /** list of CinemaDNG tags */
117 };
118 
119 /** list of TIFF, TIFF/EP and DNG compression types */
120 enum TiffCompr {
121  TIFF_RAW = 1,
129  TIFF_PACKBITS = 0x8005,
130  TIFF_DEFLATE = 0x80B2,
131  TIFF_LZMA = 0x886D,
132 };
133 
180 };
181 
182 /** list of TIFF, TIFF/AP and DNG PhotometricInterpretation (TIFF_PHOTOMETRIC) values */
185  TIFF_PHOTOMETRIC_WHITE_IS_ZERO, /* mono or grayscale, 0 is white */
186  TIFF_PHOTOMETRIC_BLACK_IS_ZERO, /* mono or grayscale, 0 is black */
187  TIFF_PHOTOMETRIC_RGB, /* RGB or RGBA*/
188  TIFF_PHOTOMETRIC_PALETTE, /* Uses a palette */
189  TIFF_PHOTOMETRIC_ALPHA_MASK, /* Transparency mask */
190  TIFF_PHOTOMETRIC_SEPARATED, /* CMYK or some other ink set */
192  TIFF_PHOTOMETRIC_CIE_LAB = 8, /* 1976 CIE L*a*b* */
193  TIFF_PHOTOMETRIC_ICC_LAB, /* ICC L*a*b* */
194  TIFF_PHOTOMETRIC_ITU_LAB, /* ITU L*a*b* */
195  TIFF_PHOTOMETRIC_CFA = 32803, /* Color Filter Array (TIFF/AP and DNG) */
196  TIFF_PHOTOMETRIC_LOG_L = 32844, /* CIE Log2(L) */
197  TIFF_PHOTOMETRIC_LOG_LUV, /* CIE Log L*u*v* */
198  TIFF_PHOTOMETRIC_LINEAR_RAW = 34892, /* Linear Raw (DNG) */
199 };
200 
203  GEOTIFF_DOUBLE = 34736,
204  GEOTIFF_STRING = 34737
205 };
206 
207 typedef struct TiffGeoTag {
208  enum TiffGeoTagKey key;
209  enum TiffTags type;
210  int count;
211  int offset;
212  char *val;
213 } TiffGeoTag;
214 
215 typedef struct TiffGeoTagKeyName {
216  const enum TiffGeoTagKey key;
217  const char *const name;
219 
220 typedef struct TiffGeoTagNameType {
221  const char *const name;
222  const enum TiffGeoTagType type;
224 
225 #endif /* AVCODEC_TIFF_H */
enum TiffGeoTagKey key
Definition: tiff.h:216
const char *const name
Definition: tiff.h:217
enum TiffGeoTagType type
Definition: tiff.h:222
const char *const name
Definition: tiff.h:221
enum TiffTags type
Definition: tiff.h:209
enum TiffGeoTagKey key
Definition: tiff.h:208
int count
Definition: tiff.h:210
char * val
Definition: tiff.h:212
int offset
Definition: tiff.h:211
TiffCompr
list of TIFF, TIFF/EP and DNG compression types
Definition: tiff.h:120
@ TIFF_G4
Definition: tiff.h:124
@ TIFF_LZMA
Definition: tiff.h:131
@ TIFF_ADOBE_DEFLATE
Definition: tiff.h:128
@ TIFF_NEWJPEG
Definition: tiff.h:127
@ TIFF_RAW
Definition: tiff.h:121
@ TIFF_LZW
Definition: tiff.h:125
@ TIFF_JPEG
Definition: tiff.h:126
@ TIFF_DEFLATE
Definition: tiff.h:130
@ TIFF_PACKBITS
Definition: tiff.h:129
@ TIFF_CCITT_RLE
Definition: tiff.h:122
@ TIFF_G3
Definition: tiff.h:123
TiffTags
abridged list of TIFF and TIFF/EP tags
Definition: tiff.h:47
@ TIFF_TILE_LENGTH
Definition: tiff.h:80
@ TIFF_DOCUMENT_NAME
Definition: tiff.h:55
@ TIFF_ICC_PROFILE
Definition: tiff.h:95
@ TIFF_WIDTH
Definition: tiff.h:49
@ TIFF_GEO_DOUBLE_PARAMS
Definition: tiff.h:97
@ TIFF_HOST_COMPUTER
Definition: tiff.h:76
@ TIFF_MODEL_TRANSFORMATION
Definition: tiff.h:94
@ TIFF_ARTIST
Definition: tiff.h:75
@ TIFF_PLANAR
Definition: tiff.h:65
@ TIFF_COMPR
Definition: tiff.h:52
@ TIFF_PAL
Definition: tiff.h:78
@ TIFF_PAGE_NUMBER
Definition: tiff.h:72
@ TIFF_GEO_ASCII_PARAMS
Definition: tiff.h:98
@ TIFF_ROWSPERSTRIP
Definition: tiff.h:61
@ TIFF_TILE_WIDTH
Definition: tiff.h:79
@ TIFF_PHOTOMETRIC
Definition: tiff.h:53
@ TIFF_T6OPTIONS
Definition: tiff.h:70
@ TIFF_YCBCR_SUBSAMPLING
Definition: tiff.h:86
@ TIFF_SAMPLES_PER_PIXEL
Definition: tiff.h:60
@ TIFF_STRIP_SIZE
Definition: tiff.h:62
@ TIFF_MAKE
Definition: tiff.h:57
@ TIFF_RES_UNIT
Definition: tiff.h:71
@ TIFF_CFA_PATTERN
Definition: tiff.h:90
@ TIFF_DATE
Definition: tiff.h:74
@ TIFF_MODEL_TIEPOINT
Definition: tiff.h:92
@ TIFF_COPYRIGHT
Definition: tiff.h:91
@ TIFF_TILE_BYTE_COUNTS
Definition: tiff.h:82
@ TIFF_YRES
Definition: tiff.h:64
@ TIFF_REFERENCE_BW
Definition: tiff.h:88
@ TIFF_CFA_PATTERN_DIM
Definition: tiff.h:89
@ TIFF_GEO_KEY_DIRECTORY
Definition: tiff.h:96
@ TIFF_SUB_IFDS
Definition: tiff.h:83
@ TIFF_XRES
Definition: tiff.h:63
@ TIFF_HEIGHT
Definition: tiff.h:50
@ TIFF_SOFTWARE_NAME
Definition: tiff.h:73
@ TIFF_XPOS
Definition: tiff.h:67
@ TIFF_SUBFILE
Definition: tiff.h:48
@ TIFF_T4OPTIONS
Definition: tiff.h:69
@ TIFF_TILE_OFFSETS
Definition: tiff.h:81
@ TIFF_YCBCR_POSITIONING
Definition: tiff.h:87
@ TIFF_PREDICTOR
Definition: tiff.h:77
@ TIFF_IMAGE_DESCRIPTION
Definition: tiff.h:56
@ TIFF_EXTRASAMPLES
Definition: tiff.h:84
@ TIFF_BPP
Definition: tiff.h:51
@ TIFF_YCBCR_COEFFICIENTS
Definition: tiff.h:85
@ TIFF_MODEL_PIXEL_SCALE
Definition: tiff.h:93
@ TIFF_FILL_ORDER
Definition: tiff.h:54
@ TIFF_YPOS
Definition: tiff.h:68
@ TIFF_MODEL
Definition: tiff.h:58
@ TIFF_PAGE_NAME
Definition: tiff.h:66
@ TIFF_STRIP_OFFS
Definition: tiff.h:59
TiffGeoTagKey
Definition: tiff.h:134
@ TIFF_PROJ_FALSE_NORTHING_GEOKEY
Definition: tiff.h:163
@ TIFF_PROJ_STD_PARALLEL2_GEOKEY
Definition: tiff.h:159
@ TIFF_GEOG_ANGULAR_UNIT_SIZE_GEOKEY
Definition: tiff.h:145
@ TIFF_VERTICAL_CS_TYPE_GEOKEY
Definition: tiff.h:176
@ TIFF_PROJ_CENTER_EASTING_GEOKEY
Definition: tiff.h:170
@ TIFF_GEOG_GEODETIC_DATUM_GEOKEY
Definition: tiff.h:140
@ TIFF_GEOG_ELLIPSOID_GEOKEY
Definition: tiff.h:146
@ TIFF_PROJ_CENTER_LONG_GEOKEY
Definition: tiff.h:168
@ TIFF_GEOG_ANGULAR_UNITS_GEOKEY
Definition: tiff.h:144
@ TIFF_PROJ_STRAIGHT_VERT_POLE_LONG_GEOKEY
Definition: tiff.h:175
@ TIFF_PROJ_FALSE_ORIGIN_NORTHING_GEOKEY
Definition: tiff.h:167
@ TIFF_GT_MODEL_TYPE_GEOKEY
Definition: tiff.h:135
@ TIFF_GT_CITATION_GEOKEY
Definition: tiff.h:137
@ TIFF_PROJECTION_GEOKEY
Definition: tiff.h:154
@ TIFF_PROJ_LINEAR_UNIT_SIZE_GEOKEY
Definition: tiff.h:157
@ TIFF_PROJ_AZIMUTH_ANGLE_GEOKEY
Definition: tiff.h:174
@ TIFF_PROJ_LINEAR_UNITS_GEOKEY
Definition: tiff.h:156
@ TIFF_GT_RASTER_TYPE_GEOKEY
Definition: tiff.h:136
@ TIFF_GEOG_PRIME_MERIDIAN_GEOKEY
Definition: tiff.h:141
@ TIFF_PROJ_FALSE_ORIGIN_LONG_GEOKEY
Definition: tiff.h:164
@ TIFF_PROJ_FALSE_ORIGIN_LAT_GEOKEY
Definition: tiff.h:165
@ TIFF_PCS_CITATION_GEOKEY
Definition: tiff.h:153
@ TIFF_GEOG_INV_FLATTENING_GEOKEY
Definition: tiff.h:149
@ TIFF_PROJ_FALSE_ORIGIN_EASTING_GEOKEY
Definition: tiff.h:166
@ TIFF_GEOG_PRIME_MERIDIAN_LONG_GEOKEY
Definition: tiff.h:151
@ TIFF_VERTICAL_CITATION_GEOKEY
Definition: tiff.h:177
@ TIFF_PROJ_FALSE_EASTING_GEOKEY
Definition: tiff.h:162
@ TIFF_GEOG_AZIMUTH_UNITS_GEOKEY
Definition: tiff.h:150
@ TIFF_GEOG_LINEAR_UNITS_GEOKEY
Definition: tiff.h:142
@ TIFF_PROJ_NAT_ORIGIN_LAT_GEOKEY
Definition: tiff.h:161
@ TIFF_GEOG_CITATION_GEOKEY
Definition: tiff.h:139
@ TIFF_GEOG_SEMI_MINOR_AXIS_GEOKEY
Definition: tiff.h:148
@ TIFF_PROJ_CENTER_NORTHING_GEOKEY
Definition: tiff.h:171
@ TIFF_PROJ_STD_PARALLEL1_GEOKEY
Definition: tiff.h:158
@ TIFF_GEOGRAPHIC_TYPE_GEOKEY
Definition: tiff.h:138
@ TIFF_PROJ_CENTER_LAT_GEOKEY
Definition: tiff.h:169
@ TIFF_PROJECTED_CS_TYPE_GEOKEY
Definition: tiff.h:152
@ TIFF_VERTICAL_DATUM_GEOKEY
Definition: tiff.h:178
@ TIFF_VERTICAL_UNITS_GEOKEY
Definition: tiff.h:179
@ TIFF_PROJ_SCALE_AT_NAT_ORIGIN_GEOKEY
Definition: tiff.h:172
@ TIFF_GEOG_SEMI_MAJOR_AXIS_GEOKEY
Definition: tiff.h:147
@ TIFF_PROJ_COORD_TRANS_GEOKEY
Definition: tiff.h:155
@ TIFF_PROJ_SCALE_AT_CENTER_GEOKEY
Definition: tiff.h:173
@ TIFF_PROJ_NAT_ORIGIN_LONG_GEOKEY
Definition: tiff.h:160
@ TIFF_GEOG_LINEAR_UNIT_SIZE_GEOKEY
Definition: tiff.h:143
CinemaDngTags
list of CinemaDNG tags
Definition: tiff.h:111
@ CINEMADNG_REEL_NAME
Definition: tiff.h:115
@ CINEMADNG_TIME_CODES
Definition: tiff.h:112
@ CINEMADNG_CAMERA_LABEL
Definition: tiff.h:116
@ CINEMADNG_FRAME_RATE
Definition: tiff.h:113
@ CINEMADNG_T_STOP
Definition: tiff.h:114
TiffPhotometric
list of TIFF, TIFF/AP and DNG PhotometricInterpretation (TIFF_PHOTOMETRIC) values
Definition: tiff.h:183
@ TIFF_PHOTOMETRIC_ICC_LAB
Definition: tiff.h:193
@ TIFF_PHOTOMETRIC_SEPARATED
Definition: tiff.h:190
@ TIFF_PHOTOMETRIC_LINEAR_RAW
Definition: tiff.h:198
@ TIFF_PHOTOMETRIC_RGB
Definition: tiff.h:187
@ TIFF_PHOTOMETRIC_CIE_LAB
Definition: tiff.h:192
@ TIFF_PHOTOMETRIC_YCBCR
Definition: tiff.h:191
@ TIFF_PHOTOMETRIC_LOG_L
Definition: tiff.h:196
@ TIFF_PHOTOMETRIC_PALETTE
Definition: tiff.h:188
@ TIFF_PHOTOMETRIC_WHITE_IS_ZERO
Definition: tiff.h:185
@ TIFF_PHOTOMETRIC_LOG_LUV
Definition: tiff.h:197
@ TIFF_PHOTOMETRIC_ALPHA_MASK
Definition: tiff.h:189
@ TIFF_PHOTOMETRIC_CFA
Definition: tiff.h:195
@ TIFF_PHOTOMETRIC_NONE
Definition: tiff.h:184
@ TIFF_PHOTOMETRIC_BLACK_IS_ZERO
Definition: tiff.h:186
@ TIFF_PHOTOMETRIC_ITU_LAB
Definition: tiff.h:194
TiffGeoTagType
Definition: tiff.h:201
@ GEOTIFF_DOUBLE
Definition: tiff.h:203
@ GEOTIFF_STRING
Definition: tiff.h:204
@ GEOTIFF_SHORT
Definition: tiff.h:202
DngTags
abridged list of DNG tags
Definition: tiff.h:102
@ DNG_VERSION
Definition: tiff.h:103
@ DNG_WHITE_LEVEL
Definition: tiff.h:107
@ DNG_LINEARIZATION_TABLE
Definition: tiff.h:105
@ DNG_BLACK_LEVEL
Definition: tiff.h:106
@ DNG_BACKWARD_VERSION
Definition: tiff.h:104
TiffType
TIFF types in ascenting priority (last in the list is highest)
Definition: tiff.h:37
@ TIFF_TYPE_CINEMADNG
Digital Negative (DNG) image part of an CinemaDNG image sequence.
Definition: tiff.h:43
@ TIFF_TYPE_TIFF
TIFF image based on the TIFF 6.0 or TIFF/EP (ISO 12234-2) specifications.
Definition: tiff.h:39
@ TIFF_TYPE_DNG
Digital Negative (DNG) image.
Definition: tiff.h:41
TIFF Common Routines.