File indexing completed on 2024-05-12 15:59:17

0001 // Extracted from Exiv2 v0.27.4 webpage
0002 // Last modified 2021-06-15 15:45 BST
0003 // SPDX-FileCopyrightText: 2021 L. E. Segovia <amy@amyspark.me>
0004 // SPDX-LicenseIdentifier: GPL-2.0-or-later
0005 
0006 #include <cstdint>
0007 
0008 namespace Exif
0009 {
0010 namespace Image
0011 {
0012 /**
0013  * The name and version of the software used to post-process the picture.
0014  */
0015 const uint16_t ProcessingSoftware = 0x000b;
0016 /**
0017  * A general indication of the kind of data contained in this subfile.
0018  */
0019 const uint16_t NewSubfileType = 0x00fe;
0020 /**
0021  * A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead.
0022  */
0023 const uint16_t SubfileType = 0x00ff;
0024 /**
0025  * The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag.
0026  */
0027 const uint16_t ImageWidth = 0x0100;
0028 /**
0029  * The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag.
0030  */
0031 const uint16_t ImageLength = 0x0101;
0032 /**
0033  * The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also <SamplesPerPixel>.
0034  * In JPEG compressed data a JPEG marker is used instead of this tag.
0035  */
0036 const uint16_t BitsPerSample = 0x0102;
0037 /**
0038  * The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails
0039  * use JPEG compression, this tag value is set to 6.
0040  */
0041 const uint16_t Compression = 0x0103;
0042 /**
0043  * The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag.
0044  */
0045 const uint16_t PhotometricInterpretation = 0x0106;
0046 /**
0047  * For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels.
0048  */
0049 const uint16_t Thresholding = 0x0107;
0050 /**
0051  * The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.
0052  */
0053 const uint16_t CellWidth = 0x0108;
0054 /**
0055  * The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.
0056  */
0057 const uint16_t CellLength = 0x0109;
0058 /**
0059  * The logical order of bits within a byte
0060  */
0061 const uint16_t FillOrder = 0x010a;
0062 /**
0063  * The name of the document from which this image was scanned
0064  */
0065 const uint16_t DocumentName = 0x010d;
0066 /**
0067  * A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used.
0068  * When a 2-bytes code is necessary, the Exif Private tag <UserComment> is to be used.
0069  */
0070 const uint16_t ImageDescription = 0x010e;
0071 /**
0072  * The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When
0073  * the field is left blank, it is treated as unknown.
0074  */
0075 const uint16_t Make = 0x010f;
0076 /**
0077  * The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the
0078  * image. When the field is left blank, it is treated as unknown.
0079  */
0080 const uint16_t Model = 0x0110;
0081 /**
0082  * For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG
0083  * compressed data this designation is not needed and is omitted. See also <RowsPerStrip> and <StripByteCounts>.
0084  */
0085 const uint16_t StripOffsets = 0x0111;
0086 /**
0087  * The image orientation viewed in terms of rows and columns.
0088  */
0089 const uint16_t Orientation = 0x0112;
0090 /**
0091  * The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG
0092  * marker is used instead of this tag.
0093  */
0094 const uint16_t SamplesPerPixel = 0x0115;
0095 /**
0096  * The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this
0097  * designation is not needed and is omitted. See also <StripOffsets> and <StripByteCounts>.
0098  */
0099 const uint16_t RowsPerStrip = 0x0116;
0100 /**
0101  * The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted.
0102  */
0103 const uint16_t StripByteCounts = 0x0117;
0104 /**
0105  * The number of pixels per <ResolutionUnit> in the <ImageWidth> direction. When the image resolution is unknown, 72 [dpi] is designated.
0106  */
0107 const uint16_t XResolution = 0x011a;
0108 /**
0109  * The number of pixels per <ResolutionUnit> in the <ImageLength> direction. The same value as <XResolution> is designated.
0110  */
0111 const uint16_t YResolution = 0x011b;
0112 /**
0113  * Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this
0114  * field does not exist, the TIFF default of 1 (chunky) is assumed.
0115  */
0116 const uint16_t PlanarConfiguration = 0x011c;
0117 /**
0118  * The precision of the information contained in the GrayResponseCurve.
0119  */
0120 const uint16_t GrayResponseUnit = 0x0122;
0121 /**
0122  * For grayscale data, the optical density of each possible pixel value.
0123  */
0124 const uint16_t GrayResponseCurve = 0x0123;
0125 /**
0126  * T.4-encoding options.
0127  */
0128 const uint16_t T4Options = 0x0124;
0129 /**
0130  * T.6-encoding options.
0131  */
0132 const uint16_t T6Options = 0x0125;
0133 /**
0134  * The unit for measuring <XResolution> and <YResolution>. The same unit is used for both <XResolution> and <YResolution>. If the image resolution is unknown, 2
0135  * (inches) is designated.
0136  */
0137 const uint16_t ResolutionUnit = 0x0128;
0138 /**
0139  * The page number of the page from which this image was scanned.
0140  */
0141 const uint16_t PageNumber = 0x0129;
0142 /**
0143  * A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space
0144  * information tag (<ColorSpace>).
0145  */
0146 const uint16_t TransferFunction = 0x012d;
0147 /**
0148  * This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not
0149  * specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown.
0150  */
0151 const uint16_t Software = 0x0131;
0152 /**
0153  * The date and time of image creation. In Exif standard, it is the date and time the file was changed.
0154  */
0155 const uint16_t DateTime = 0x0132;
0156 /**
0157  * This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the
0158  * information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John
0159  * Smith; Photographer, Michael Brown; Image creator, Ken James"
0160  */
0161 const uint16_t Artist = 0x013b;
0162 /**
0163  * This tag records information about the host computer used to generate the image.
0164  */
0165 const uint16_t HostComputer = 0x013c;
0166 /**
0167  * A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied.
0168  */
0169 const uint16_t Predictor = 0x013d;
0170 /**
0171  * The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag
0172  * (<ColorSpace>).
0173  */
0174 const uint16_t WhitePoint = 0x013e;
0175 /**
0176  * The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information
0177  * tag (<ColorSpace>).
0178  */
0179 const uint16_t PrimaryChromaticities = 0x013f;
0180 /**
0181  * A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a
0182  * palette-color image, a pixel value is used to index into an RGB lookup table.
0183  */
0184 const uint16_t ColorMap = 0x0140;
0185 /**
0186  * The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should
0187  * retain tonal detail.
0188  */
0189 const uint16_t HalftoneHints = 0x0141;
0190 /**
0191  * The tile width in pixels. This is the number of columns in each tile.
0192  */
0193 const uint16_t TileWidth = 0x0142;
0194 /**
0195  * The tile length (height) in pixels. This is the number of rows in each tile.
0196  */
0197 const uint16_t TileLength = 0x0143;
0198 /**
0199  * For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note
0200  * that this implies that each tile has a location independent of the locations of other tiles.
0201  */
0202 const uint16_t TileOffsets = 0x0144;
0203 /**
0204  * For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered.
0205  */
0206 const uint16_t TileByteCounts = 0x0145;
0207 /**
0208  * Defined by Adobe Corporation to enable TIFF Trees within a TIFF file.
0209  */
0210 const uint16_t SubIFDs = 0x014a;
0211 /**
0212  * The set of inks used in a separated (PhotometricInterpretation=5) image.
0213  */
0214 const uint16_t InkSet = 0x014c;
0215 /**
0216  * The name of each ink used in a separated (PhotometricInterpretation=5) image.
0217  */
0218 const uint16_t InkNames = 0x014d;
0219 /**
0220  * The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples.
0221  */
0222 const uint16_t NumberOfInks = 0x014e;
0223 /**
0224  * The component values that correspond to a 0% dot and 100% dot.
0225  */
0226 const uint16_t DotRange = 0x0150;
0227 /**
0228  * A description of the printing environment for which this separation is intended.
0229  */
0230 const uint16_t TargetPrinter = 0x0151;
0231 /**
0232  * Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below.
0233  */
0234 const uint16_t ExtraSamples = 0x0152;
0235 /**
0236  * This field specifies how to interpret each data sample in a pixel.
0237  */
0238 const uint16_t SampleFormat = 0x0153;
0239 /**
0240  * This field specifies the minimum sample value.
0241  */
0242 const uint16_t SMinSampleValue = 0x0154;
0243 /**
0244  * This field specifies the maximum sample value.
0245  */
0246 const uint16_t SMaxSampleValue = 0x0155;
0247 /**
0248  * Expands the range of the TransferFunction
0249  */
0250 const uint16_t TransferRange = 0x0156;
0251 /**
0252  * A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality.
0253  */
0254 const uint16_t ClipPath = 0x0157;
0255 /**
0256  * The number of units that span the width of the image, in terms of integer ClipPath coordinates.
0257  */
0258 const uint16_t XClipPathUnits = 0x0158;
0259 /**
0260  * The number of units that span the height of the image, in terms of integer ClipPath coordinates.
0261  */
0262 const uint16_t YClipPathUnits = 0x0159;
0263 /**
0264  * Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap.
0265  */
0266 const uint16_t Indexed = 0x015a;
0267 /**
0268  * This optional tag may be used to encode the JPEG quantization and Huffman tables for subsequent use by the JPEG decompression process.
0269  */
0270 const uint16_t JPEGTables = 0x015b;
0271 /**
0272  * OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI).
0273  */
0274 const uint16_t OPIProxy = 0x015f;
0275 /**
0276  * This field indicates the process used to produce the compressed data
0277  */
0278 const uint16_t JPEGProc = 0x0200;
0279 /**
0280  * The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data.
0281  */
0282 const uint16_t JPEGInterchangeFormat = 0x0201;
0283 /**
0284  * The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a
0285  * continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes,
0286  * including all other data to be recorded in APP1.
0287  */
0288 const uint16_t JPEGInterchangeFormatLength = 0x0202;
0289 /**
0290  * This Field indicates the length of the restart interval used in the compressed image data.
0291  */
0292 const uint16_t JPEGRestartInterval = 0x0203;
0293 /**
0294  * This Field points to a list of lossless predictor-selection values, one per component.
0295  */
0296 const uint16_t JPEGLosslessPredictors = 0x0205;
0297 /**
0298  * This Field points to a list of point transform values, one per component.
0299  */
0300 const uint16_t JPEGPointTransforms = 0x0206;
0301 /**
0302  * This Field points to a list of offsets to the quantization tables, one per component.
0303  */
0304 const uint16_t JPEGQTables = 0x0207;
0305 /**
0306  * This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component.
0307  */
0308 const uint16_t JPEGDCTables = 0x0208;
0309 /**
0310  * This Field points to a list of offsets to the Huffman AC tables, one per component.
0311  */
0312 const uint16_t JPEGACTables = 0x0209;
0313 /**
0314  * The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space
0315  * Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal
0316  * image characteristics Interoperability this condition.
0317  */
0318 const uint16_t YCbCrCoefficients = 0x0211;
0319 /**
0320  * The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag.
0321  */
0322 const uint16_t YCbCrSubSampling = 0x0212;
0323 /**
0324  * The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr
0325  * data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to
0326  * improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr =
0327  * 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of <YCbCrPositioning>, it shall follow
0328  * the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning.
0329  */
0330 const uint16_t YCbCrPositioning = 0x0213;
0331 /**
0332  * The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color
0333  * space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these
0334  * conditions.
0335  */
0336 const uint16_t ReferenceBlackWhite = 0x0214;
0337 /**
0338  * XMP Metadata (Adobe technote 9-14-02)
0339  */
0340 const uint16_t XMLPacket = 0x02bc;
0341 /**
0342  * Rating tag used by Windows
0343  */
0344 const uint16_t Rating = 0x4746;
0345 /**
0346  * Rating tag used by Windows, value in percent
0347  */
0348 const uint16_t RatingPercent = 0x4749;
0349 /**
0350  * Sony vignetting correction parameters
0351  */
0352 const uint16_t VignettingCorrParams = 0x7032;
0353 /**
0354  * Sony chromatic aberration correction parameters
0355  */
0356 const uint16_t ChromaticAberrationCorrParams = 0x7035;
0357 /**
0358  * Sony distortion correction parameters
0359  */
0360 const uint16_t DistortionCorrParams = 0x7037;
0361 /**
0362  * ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI).
0363  */
0364 const uint16_t ImageID = 0x800d;
0365 /**
0366  * Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array
0367  */
0368 const uint16_t CFARepeatPatternDim = 0x828d;
0369 /**
0370  * Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing
0371  * methods
0372  */
0373 const uint16_t CFAPattern = 0x828e;
0374 /**
0375  * Contains a value of the battery level as a fraction or string
0376  */
0377 const uint16_t BatteryLevel = 0x828f;
0378 /**
0379  * Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or
0380  * organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g.,
0381  * "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a
0382  * separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of
0383  * photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only
0384  * the photographer copyright is given, it is terminated by one NULL code. When only the editor copyright is given, the photographer copyright part consists of
0385  * one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown.
0386  */
0387 const uint16_t Copyright = 0x8298;
0388 /**
0389  * Exposure time, given in seconds.
0390  */
0391 const uint16_t ExposureTime = 0x829a;
0392 /**
0393  * The F number.
0394  */
0395 const uint16_t FNumber = 0x829d;
0396 /**
0397  * Contains an IPTC/NAA record
0398  */
0399 const uint16_t IPTCNAA = 0x83bb;
0400 /**
0401  * Contains information embedded by the Adobe Photoshop application
0402  */
0403 const uint16_t ImageResources = 0x8649;
0404 /**
0405  * A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain
0406  * image data as in the case of TIFF.
0407  */
0408 const uint16_t ExifTag = 0x8769;
0409 /**
0410  * Contains an InterColor Consortium (ICC) format color space characterization/profile
0411  */
0412 const uint16_t InterColorProfile = 0x8773;
0413 /**
0414  * The class of the program used by the camera to set exposure when the picture is taken.
0415  */
0416 const uint16_t ExposureProgram = 0x8822;
0417 /**
0418  * Indicates the spectral sensitivity of each channel of the camera used.
0419  */
0420 const uint16_t SpectralSensitivity = 0x8824;
0421 /**
0422  * A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data.
0423  */
0424 const uint16_t GPSTag = 0x8825;
0425 /**
0426  * Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232.
0427  */
0428 const uint16_t ISOSpeedRatings = 0x8827;
0429 /**
0430  * Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524.
0431  */
0432 const uint16_t OECF = 0x8828;
0433 /**
0434  * Indicates the field number of multifield images.
0435  */
0436 const uint16_t Interlace = 0x8829;
0437 /**
0438  * This optional tag encodes the time zone of the camera clock (relative to Greenwich Mean Time) used to create the DataTimeOriginal tag-value when the picture
0439  * was taken. It may also contain the time zone offset of the clock used to create the DateTime tag-value when the image was modified.
0440  */
0441 const uint16_t TimeZoneOffset = 0x882a;
0442 /**
0443  * Number of seconds image capture was delayed from button press.
0444  */
0445 const uint16_t SelfTimerMode = 0x882b;
0446 /**
0447  * The date and time when the original image data was generated.
0448  */
0449 const uint16_t DateTimeOriginal = 0x9003;
0450 /**
0451  * Specific to compressed data; states the compressed bits per pixel.
0452  */
0453 const uint16_t CompressedBitsPerPixel = 0x9102;
0454 /**
0455  * Shutter speed.
0456  */
0457 const uint16_t ShutterSpeedValue = 0x9201;
0458 /**
0459  * The lens aperture.
0460  */
0461 const uint16_t ApertureValue = 0x9202;
0462 /**
0463  * The value of brightness.
0464  */
0465 const uint16_t BrightnessValue = 0x9203;
0466 /**
0467  * The exposure bias.
0468  */
0469 const uint16_t ExposureBiasValue = 0x9204;
0470 /**
0471  * The smallest F number of the lens.
0472  */
0473 const uint16_t MaxApertureValue = 0x9205;
0474 /**
0475  * The distance to the subject, given in meters.
0476  */
0477 const uint16_t SubjectDistance = 0x9206;
0478 /**
0479  * The metering mode.
0480  */
0481 const uint16_t MeteringMode = 0x9207;
0482 /**
0483  * The kind of light source.
0484  */
0485 const uint16_t LightSource = 0x9208;
0486 /**
0487  * Indicates the status of flash when the image was shot.
0488  */
0489 const uint16_t Flash = 0x9209;
0490 /**
0491  * The actual focal length of the lens, in mm.
0492  */
0493 const uint16_t FocalLength = 0x920a;
0494 /**
0495  * Amount of flash energy (BCPS).
0496  */
0497 const uint16_t FlashEnergy = 0x920b;
0498 /**
0499  * SFR of the camera.
0500  */
0501 const uint16_t SpatialFrequencyResponse = 0x920c;
0502 /**
0503  * Noise measurement values.
0504  */
0505 const uint16_t Noise = 0x920d;
0506 /**
0507  * Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image.
0508  */
0509 const uint16_t FocalPlaneXResolution = 0x920e;
0510 /**
0511  * Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image.
0512  */
0513 const uint16_t FocalPlaneYResolution = 0x920f;
0514 /**
0515  * Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391).
0516  */
0517 const uint16_t FocalPlaneResolutionUnit = 0x9210;
0518 /**
0519  * Number assigned to an image, e.g., in a chained image burst.
0520  */
0521 const uint16_t ImageNumber = 0x9211;
0522 /**
0523  * Security classification assigned to the image.
0524  */
0525 const uint16_t SecurityClassification = 0x9212;
0526 /**
0527  * Record of what has been done to the image.
0528  */
0529 const uint16_t ImageHistory = 0x9213;
0530 /**
0531  * Indicates the location and area of the main subject in the overall scene.
0532  */
0533 const uint16_t SubjectLocation = 0x9214;
0534 /**
0535  * Encodes the camera exposure index setting when image was captured.
0536  */
0537 const uint16_t ExposureIndex = 0x9215;
0538 /**
0539  * Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0'
0540  */
0541 const uint16_t TIFFEPStandardID = 0x9216;
0542 /**
0543  * Type of image sensor.
0544  */
0545 const uint16_t SensingMethod = 0x9217;
0546 /**
0547  * Title tag used by Windows, encoded in UCS2
0548  */
0549 const uint16_t XPTitle = 0x9c9b;
0550 /**
0551  * Comment tag used by Windows, encoded in UCS2
0552  */
0553 const uint16_t XPComment = 0x9c9c;
0554 /**
0555  * Author tag used by Windows, encoded in UCS2
0556  */
0557 const uint16_t XPAuthor = 0x9c9d;
0558 /**
0559  * Keywords tag used by Windows, encoded in UCS2
0560  */
0561 const uint16_t XPKeywords = 0x9c9e;
0562 /**
0563  * Subject tag used by Windows, encoded in UCS2
0564  */
0565 const uint16_t XPSubject = 0x9c9f;
0566 /**
0567  * Print Image Matching, description needed.
0568  */
0569 const uint16_t PrintImageMatching = 0xc4a5;
0570 /**
0571  * This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1,
0572  * 1, 0, 0.
0573  */
0574 const uint16_t DNGVersion = 0xc612;
0575 /**
0576  * This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this
0577  * tag specifies a version number that is higher than the version number of the specification the reader was based on.  In addition to checking the version
0578  * tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file.
0579  */
0580 const uint16_t DNGBackwardVersion = 0xc613;
0581 /**
0582  * Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid
0583  * conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used
0584  * by reader software to index into per-model preferences and replacement profiles.
0585  */
0586 const uint16_t UniqueCameraModel = 0xc614;
0587 /**
0588  * Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name.
0589  */
0590 const uint16_t LocalizedCameraModel = 0xc615;
0591 /**
0592  * Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images.
0593  */
0594 const uint16_t CFAPlaneColor = 0xc616;
0595 /**
0596  * Describes the spatial layout of the CFA.
0597  */
0598 const uint16_t CFALayout = 0xc617;
0599 /**
0600  * Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a
0601  * non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the
0602  * samples for each pixel.
0603  */
0604 const uint16_t LinearizationTable = 0xc618;
0605 /**
0606  * Specifies repeat pattern size for the BlackLevel tag.
0607  */
0608 const uint16_t BlackLevelRepeatDim = 0xc619;
0609 /**
0610  * Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of
0611  * the ActiveArea rectangle. The values are stored in row-column-sample scan order.
0612  */
0613 const uint16_t BlackLevel = 0xc61a;
0614 /**
0615  * If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each
0616  * column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel.
0617  */
0618 const uint16_t BlackLevelDeltaH = 0xc61b;
0619 /**
0620  * If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the
0621  * baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel.
0622  */
0623 const uint16_t BlackLevelDeltaV = 0xc61c;
0624 /**
0625  * This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear
0626  * in response, or by the camera's analog to digital converter clipping.
0627  */
0628 const uint16_t WhiteLevel = 0xc61d;
0629 /**
0630  * DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels.
0631  * Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the
0632  * Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0.
0633  */
0634 const uint16_t DefaultScale = 0xc61e;
0635 /**
0636  * Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final
0637  * image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to
0638  * the top-left corner of the ActiveArea rectangle.
0639  */
0640 const uint16_t DefaultCropOrigin = 0xc61f;
0641 /**
0642  * Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final
0643  * image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied).
0644  */
0645 const uint16_t DefaultCropSize = 0xc620;
0646 /**
0647  * ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant.
0648  * The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files.
0649  */
0650 const uint16_t ColorMatrix1 = 0xc621;
0651 /**
0652  * ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant.
0653  * The matrix values are stored in row scan order.
0654  */
0655 const uint16_t ColorMatrix2 = 0xc622;
0656 /**
0657  * CameraCalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first
0658  * calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow
0659  * raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration
0660  * performed by the camera manufacturer.
0661  */
0662 const uint16_t CameraCalibration1 = 0xc623;
0663 /**
0664  * CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the
0665  * second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to
0666  * allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera
0667  * calibration performed by the camera manufacturer.
0668  */
0669 const uint16_t CameraCalibration2 = 0xc624;
0670 /**
0671  * ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the
0672  * first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order.
0673  */
0674 const uint16_t ReductionMatrix1 = 0xc625;
0675 /**
0676  * ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the
0677  * second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order.
0678  */
0679 const uint16_t ReductionMatrix2 = 0xc626;
0680 /**
0681  * Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides
0682  * to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can
0683  * improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied
0684  * the stored raw values.
0685  */
0686 const uint16_t AnalogBalance = 0xc627;
0687 /**
0688  * Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The
0689  * inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag.
0690  */
0691 const uint16_t AsShotNeutral = 0xc628;
0692 /**
0693  * Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the
0694  * AsShotNeutral tag.
0695  */
0696 const uint16_t AsShotWhiteXY = 0xc629;
0697 /**
0698  * Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a
0699  * normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain
0700  * more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow
0701  * noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to
0702  * model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values
0703  * result in darker default results.
0704  */
0705 const uint16_t BaselineExposure = 0xc62a;
0706 /**
0707  * Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary
0708  * approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level
0709  * of the current image.
0710  */
0711 const uint16_t BaselineNoise = 0xc62b;
0712 /**
0713  * Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of
0714  * their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters.
0715  */
0716 const uint16_t BaselineSharpness = 0xc62c;
0717 /**
0718  * Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the
0719  * blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a
0720  * non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence).
0721  */
0722 const uint16_t BayerGreenSplit = 0xc62d;
0723 /**
0724  * Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color
0725  * shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the
0726  * encoding range above which the response may become significantly non-linear.
0727  */
0728 const uint16_t LinearResponseLimit = 0xc62e;
0729 /**
0730  * CameraSerialNumber contains the serial number of the camera or camera body that captured the image.
0731  */
0732 const uint16_t CameraSerialNumber = 0xc62f;
0733 /**
0734  * Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0.
0735  */
0736 const uint16_t LensInfo = 0xc630;
0737 /**
0738  * ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its
0739  * default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is
0740  * highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm.
0741  */
0742 const uint16_t ChromaBlurRadius = 0xc631;
0743 /**
0744  * Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to
0745  * aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts).
0746  */
0747 const uint16_t AntiAliasStrength = 0xc632;
0748 /**
0749  * This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider.
0750  */
0751 const uint16_t ShadowScale = 0xc633;
0752 /**
0753  * Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by
0754  * programs that edit DNG files.
0755  */
0756 const uint16_t DNGPrivateData = 0xc634;
0757 /**
0758  * MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other
0759  * image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and
0760  * may not reflect the current state of the full size image.
0761  */
0762 const uint16_t MakerNoteSafety = 0xc635;
0763 /**
0764  * The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the
0765  * same as the legal values for the LightSource EXIF tag. If set to 255 (Other), then the IFD must also include a IlluminantData1 tag to specify the x-y
0766  * chromaticity or spectral power distribution function for this illuminant.
0767  */
0768 const uint16_t CalibrationIlluminant1 = 0xc65a;
0769 /**
0770  * The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag
0771  * are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). If set
0772  * to 255 (Other), then the IFD must also include a IlluminantData2 tag to specify the x-y chromaticity or spectral power distribution function for this
0773  * illuminant.
0774  */
0775 const uint16_t CalibrationIlluminant2 = 0xc65b;
0776 /**
0777  * For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD
0778  * images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be
0779  * multiplied to achieve the best quality image size.
0780  */
0781 const uint16_t BestQualityScale = 0xc65c;
0782 /**
0783  * This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even
0784  * if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm
0785  * that will ensure that it is very unlikely two different images will end up having the same identifier.
0786  */
0787 const uint16_t RawDataUniqueID = 0xc65d;
0788 /**
0789  * If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file.
0790  */
0791 const uint16_t OriginalRawFileName = 0xc68b;
0792 /**
0793  * If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag
0794  * always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks,
0795  * so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the
0796  * sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks.
0797  */
0798 const uint16_t OriginalRawFileData = 0xc68c;
0799 /**
0800  * This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right.
0801  */
0802 const uint16_t ActiveArea = 0xc68d;
0803 /**
0804  * This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black
0805  * encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level
0806  * subtracted, then this tag should not be used, since the masked pixels are no longer useful.
0807  */
0808 const uint16_t MaskedAreas = 0xc68e;
0809 /**
0810  * This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default
0811  * color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an
0812  * output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means
0813  * that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred
0814  * values.
0815  */
0816 const uint16_t AsShotICCProfile = 0xc68f;
0817 /**
0818  * This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before
0819  * processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater
0820  * than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the
0821  * AsShotICCProfile should have three rather than ColorPlanes input components.
0822  */
0823 const uint16_t AsShotPreProfileMatrix = 0xc690;
0824 /**
0825  * This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage
0826  * as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers.
0827  */
0828 const uint16_t CurrentICCProfile = 0xc691;
0829 /**
0830  * This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the
0831  * AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers.
0832  */
0833 const uint16_t CurrentPreProfileMatrix = 0xc692;
0834 /**
0835  * The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 =
0836  * The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred
0837  * data to be stored in DNG files and still processed correctly by DNG readers.
0838  */
0839 const uint16_t ColorimetricReference = 0xc6bf;
0840 /**
0841  * A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be
0842  * used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the
0843  * ProfileCalibrationSignature tag for the selected camera profile.
0844  */
0845 const uint16_t CameraCalibrationSignature = 0xc6f3;
0846 /**
0847  * A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color
0848  * transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected
0849  * camera profile.
0850  */
0851 const uint16_t ProfileCalibrationSignature = 0xc6f4;
0852 /**
0853  * A list of file offsets to extra Camera Profile IFDs. Note that the primary camera profile tags should be stored in IFD 0, and the ExtraCameraProfiles tag
0854  * should only be used if there is more than one camera profile stored in the DNG file.
0855  */
0856 const uint16_t ExtraCameraProfiles = 0xc6f5;
0857 /**
0858  * A UTF-8 encoded string containing the name of the "as shot" camera profile, if any.
0859  */
0860 const uint16_t AsShotProfileName = 0xc6f6;
0861 /**
0862  * This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been
0863  * applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise
0864  * reduction by default. A value of 0/0 indicates that this parameter is unknown.
0865  */
0866 const uint16_t NoiseReductionApplied = 0xc6f7;
0867 /**
0868  * A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is
0869  * required for all camera profiles if there is more than one camera profile stored in the file.
0870  */
0871 const uint16_t ProfileName = 0xc6f8;
0872 /**
0873  * This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in
0874  * ProfileHueSatMapData1, ProfileHueSatMapData2 and ProfileHueSatMapData3 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation
0875  * are used as inputs to the mapping table.
0876  */
0877 const uint16_t ProfileHueSatMapDims = 0xc6f9;
0878 /**
0879  * This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The
0880  * first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored
0881  * in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner
0882  * loop. All zero input saturation entries are required to have a value scale factor of 1.0.
0883  */
0884 const uint16_t ProfileHueSatMapData1 = 0xc6fa;
0885 /**
0886  * This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The
0887  * first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored
0888  * in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner
0889  * loop. All zero input saturation entries are required to have a value scale factor of 1.0.
0890  */
0891 const uint16_t ProfileHueSatMapData2 = 0xc6fb;
0892 /**
0893  * This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a
0894  * list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range
0895  * of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline.
0896  */
0897 const uint16_t ProfileToneCurve = 0xc6fc;
0898 /**
0899  * This tag contains information about the usage rules for the associated camera profile.
0900  */
0901 const uint16_t ProfileEmbedPolicy = 0xc6fd;
0902 /**
0903  * A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera
0904  * profile tags.
0905  */
0906 const uint16_t ProfileCopyright = 0xc6fe;
0907 /**
0908  * This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors.
0909  */
0910 const uint16_t ForwardMatrix1 = 0xc714;
0911 /**
0912  * This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors.
0913  */
0914 const uint16_t ForwardMatrix2 = 0xc715;
0915 /**
0916  * A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD.
0917  */
0918 const uint16_t PreviewApplicationName = 0xc716;
0919 /**
0920  * A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD.
0921  */
0922 const uint16_t PreviewApplicationVersion = 0xc717;
0923 /**
0924  * A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD.
0925  */
0926 const uint16_t PreviewSettingsName = 0xc718;
0927 /**
0928  * A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD.
0929  */
0930 const uint16_t PreviewSettingsDigest = 0xc719;
0931 /**
0932  * This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray
0933  * Gamma 2.2 for monochrome previews.
0934  */
0935 const uint16_t PreviewColorSpace = 0xc71a;
0936 /**
0937  * This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601
0938  * format.
0939  */
0940 const uint16_t PreviewDateTime = 0xc71b;
0941 /**
0942  * This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep
0943  * (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order.
0944  */
0945 const uint16_t RawImageDigest = 0xc71c;
0946 /**
0947  * This tag is an MD5 digest of the data stored in the OriginalRawFileData tag.
0948  */
0949 const uint16_t OriginalRawFileDigest = 0xc71d;
0950 /**
0951  * Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into
0952  * rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a
0953  * non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0.
0954  */
0955 const uint16_t SubTileBlockSize = 0xc71e;
0956 /**
0957  * This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a
0958  * non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0.
0959  */
0960 const uint16_t RowInterleaveFactor = 0xc71f;
0961 /**
0962  * This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData
0963  * tag.
0964  */
0965 const uint16_t ProfileLookTableDims = 0xc725;
0966 /**
0967  * This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same
0968  * format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be
0969  * applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table
0970  * contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry
0971  * is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the
0972  * middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0.
0973  */
0974 const uint16_t ProfileLookTableData = 0xc726;
0975 /**
0976  * Specifies the list of opcodes that should be applied to the raw image, as read directly from the file.
0977  */
0978 const uint16_t OpcodeList1 = 0xc740;
0979 /**
0980  * Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values.
0981  */
0982 const uint16_t OpcodeList2 = 0xc741;
0983 /**
0984  * Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced.
0985  */
0986 const uint16_t OpcodeList3 = 0xc74e;
0987 /**
0988  * NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and
0989  * signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent,
0990  * ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.).
0991  */
0992 const uint16_t NoiseProfile = 0xc761;
0993 /**
0994  * The optional TimeCodes tag shall contain an ordered array of time codes. All time codes shall be 8 bytes long and in binary format. The tag may contain from
0995  * 1 to 10 time codes. When the tag contains more than one time code, the first one shall be the default time code. This specification does not prescribe how to
0996  * use multiple time codes. Each time code shall be as defined for the 8-byte time code structure in SMPTE 331M-2004, Section 8.3. See also SMPTE 12-1-2008 and
0997  * SMPTE 309-1999.
0998  */
0999 const uint16_t TimeCodes = 0xc763;
1000 /**
1001  * The optional FrameRate tag shall specify the video frame rate in number of image frames per second, expressed as a signed rational number. The numerator
1002  * shall be non-negative and the denominator shall be positive. This field value is identical to the sample rate field in SMPTE 377-1-2009.
1003  */
1004 const uint16_t FrameRate = 0xc764;
1005 /**
1006  * The optional TStop tag shall specify the T-stop of the actual lens, expressed as an unsigned rational number. T-stop is also known as T-number or the
1007  * photometric aperture of the lens. (F-number is the geometric aperture of the lens.) When the exact value is known, the T-stop shall be specified using a
1008  * single number. Alternately, two numbers shall be used to indicate a T-stop range, in which case the first number shall be the minimum T-stop and the second
1009  * number shall be the maximum T-stop.
1010  */
1011 const uint16_t TStop = 0xc772;
1012 /**
1013  * The optional ReelName tag shall specify a name for a sequence of images, where each image in the sequence has a unique image identifier (including but not
1014  * limited to file name, frame number, date time, time code).
1015  */
1016 const uint16_t ReelName = 0xc789;
1017 /**
1018  * The optional CameraLabel tag shall specify a text label for how the camera is used or assigned in this clip. This tag is similar to CameraLabel in XMP.
1019  */
1020 const uint16_t CameraLabel = 0xc7a1;
1021 /**
1022  * If this file is a proxy for a larger original DNG file, this tag specifics the default final size of the larger original file from which this proxy was
1023  * generated. The default value for this tag is default final size of the current DNG file, which is DefaultCropSize * DefaultScale.
1024  */
1025 const uint16_t OriginalDefaultFinalSize = 0xc791;
1026 /**
1027  * If this file is a proxy for a larger original DNG file, this tag specifics the best quality final size of the larger original file from which this proxy was
1028  * generated. The default value for this tag is the OriginalDefaultFinalSize, if specified. Otherwise the default value for this tag is the best quality size of
1029  * the current DNG file, which is DefaultCropSize * DefaultScale * BestQualityScale.
1030  */
1031 const uint16_t OriginalBestQualityFinalSize = 0xc792;
1032 /**
1033  * If this file is a proxy for a larger original DNG file, this tag specifics the DefaultCropSize of the larger original file from which this proxy was
1034  * generated. The default value for this tag is OriginalDefaultFinalSize, if specified. Otherwise, the default value for this tag is the DefaultCropSize of the
1035  * current DNG file.
1036  */
1037 const uint16_t OriginalDefaultCropSize = 0xc793;
1038 /**
1039  * Provides a way for color profiles to specify how indexing into a 3D HueSatMap is performed during raw conversion. This tag is not applicable to 2.5D
1040  * HueSatMap tables (i.e., where the Value dimension is 1).
1041  */
1042 const uint16_t ProfileHueSatMapEncoding = 0xc7a3;
1043 /**
1044  * Provides a way for color profiles to specify how indexing into a 3D LookTable is performed during raw conversion. This tag is not applicable to a 2.5D
1045  * LookTable (i.e., where the Value dimension is 1).
1046  */
1047 const uint16_t ProfileLookTableEncoding = 0xc7a4;
1048 /**
1049  * Provides a way for color profiles to increase or decrease exposure during raw conversion. BaselineExposureOffset specifies the amount (in EV units) to add to
1050  * the BaselineExposure tag during image rendering. For example, if the BaselineExposure value for a given camera model is +0.3, and the BaselineExposureOffset
1051  * value for a given camera profile used to render an image for that camera model is -0.7, then the actual default exposure value used during rendering will be
1052  * +0.3 - 0.7 = -0.4.
1053  */
1054 const uint16_t BaselineExposureOffset = 0xc7a5;
1055 /**
1056  * This optional tag in a color profile provides a hint to the raw converter regarding how to handle the black point (e.g., flare subtraction) during rendering.
1057  * If set to Auto, the raw converter should perform black subtraction during rendering. If set to None, the raw converter should not perform any black
1058  * subtraction during rendering.
1059  */
1060 const uint16_t DefaultBlackRender = 0xc7a6;
1061 /**
1062  * This tag is a modified MD5 digest of the raw image data. It has been updated from the algorithm used to compute the RawImageDigest tag be more
1063  * multi-processor friendly, and to support lossy compression algorithms.
1064  */
1065 const uint16_t NewRawImageDigest = 0xc7a7;
1066 /**
1067  * The gain (what number the sample values are multiplied by) between the main raw IFD and the preview IFD containing this tag.
1068  */
1069 const uint16_t RawToPreviewGain = 0xc7a8;
1070 /**
1071  * Specifies a default user crop rectangle in relative coordinates. The values must satisfy: 0.0 <= top < bottom <= 1.0, 0.0 <= left < right <= 1.0.The default
1072  * values of (top = 0, left = 0, bottom = 1, right = 1) correspond exactly to the default crop rectangle (as specified by the DefaultCropOrigin and
1073  * DefaultCropSize tags).
1074  */
1075 const uint16_t DefaultUserCrop = 0xc7b5;
1076 /**
1077  * Specifies the encoding of any depth data in the file. Can be unknown (apart from nearer distances being closer to zero, and farther distances being closer to
1078  * the maximum value), linear (values vary linearly from zero representing DepthNear to the maximum value representing DepthFar), or inverse (values are stored
1079  * inverse linearly, with zero representing DepthNear and the maximum value representing DepthFar).
1080  */
1081 const uint16_t DepthFormat = 0xc7e9;
1082 /**
1083  * Specifies distance from the camera represented by the zero value in the depth map. 0/0 means unknown.
1084  */
1085 const uint16_t DepthNear = 0xc7ea;
1086 /**
1087  * Specifies distance from the camera represented by the maximum value in the depth map. 0/0 means unknown. 1/0 means infinity, which is valid for unknown and
1088  * inverse depth formats.
1089  */
1090 const uint16_t DepthFar = 0xc7eb;
1091 /**
1092  * Specifies the measurement units for the DepthNear and DepthFar tags.
1093  */
1094 const uint16_t DepthUnits = 0xc7ec;
1095 /**
1096  * Specifies the measurement geometry for the depth map. Can be unknown, measured along the optical axis, or measured along the optical ray passing through each
1097  * pixel.
1098  */
1099 const uint16_t DepthMeasureType = 0xc7ed;
1100 /**
1101  * A string that documents how the enhanced image data was processed.
1102  */
1103 const uint16_t EnhanceParams = 0xc7ee;
1104 /**
1105  * Contains spatially varying gain tables that can be applied while processing the image as a starting point for user adjustments.
1106  */
1107 const uint16_t ProfileGainTableMap = 0xcd2d;
1108 /**
1109  * A string that identifies the semantic mask.
1110  */
1111 const uint16_t SemanticName = 0xcd2e;
1112 /**
1113  * A string that identifies a specific instance in a semantic mask.
1114  */
1115 const uint16_t SemanticInstanceID = 0xcd30;
1116 /**
1117  * The illuminant used for an optional thrid set of color calibration tags (ColorMatrix3, CameraCalibration3, ReductionMatrix3). The legal values for this tag
1118  * are the same as the legal values for the LightSource EXIF tag; CalibrationIlluminant1 and CalibrationIlluminant2 must also be present. If set to 255 (Other),
1119  * then the IFD must also include a IlluminantData3 tag to specify the x-y chromaticity or spectral power distribution function for this illuminant.
1120  */
1121 const uint16_t CalibrationIlluminant3 = 0xcd31;
1122 /**
1123  * CameraCalibration3 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the third
1124  * calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix3 tag to allow
1125  * raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration
1126  * performed by the camera manufacturer.
1127  */
1128 const uint16_t CameraCalibration3 = 0xcd32;
1129 /**
1130  * ColorMatrix3 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the third calibration illuminant.
1131  * The matrix values are stored in row scan order.
1132  */
1133 const uint16_t ColorMatrix3 = 0xcd33;
1134 /**
1135  * This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors.
1136  */
1137 const uint16_t ForwardMatrix3 = 0xcd34;
1138 /**
1139  * When the CalibrationIlluminant1 tag is set to 255 (Other), then the IlluminantData1 tag is required and specifies the data for the first illuminant.
1140  * Otherwise, this tag is ignored. The illuminant data may be specified as either a x-y chromaticity coordinate or as a spectral power distribution function.
1141  */
1142 const uint16_t IlluminantData1 = 0xcd35;
1143 /**
1144  * When the CalibrationIlluminant2 tag is set to 255 (Other), then the IlluminantData2 tag is required and specifies the data for the second illuminant.
1145  * Otherwise, this tag is ignored. The format of the data is the same as IlluminantData1.
1146  */
1147 const uint16_t IlluminantData2 = 0xcd36;
1148 /**
1149  * When the CalibrationIlluminant3 tag is set to 255 (Other), then the IlluminantData3 tag is required and specifies the data for the third illuminant.
1150  * Otherwise, this tag is ignored. The format of the data is the same as IlluminantData1.
1151  */
1152 const uint16_t IlluminantData3 = 0xcd37;
1153 /**
1154  * This tag contains the data for the third hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The
1155  * first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored
1156  * in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner
1157  * loop. All zero input saturation entries are required to have a value scale factor of 1.0.
1158  */
1159 const uint16_t ProfileHueSatMapData3 = 0xcd39;
1160 /**
1161  * ReductionMatrix3 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the
1162  * third calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order.
1163  */
1164 const uint16_t ReductionMatrix3 = 0xcd3a;
1165 } // namespace Image
1166 namespace Photo
1167 {
1168 /**
1169  * Exposure time, given in seconds (sec).
1170  */
1171 const uint16_t ExposureTime = 0x829a;
1172 /**
1173  * The F number.
1174  */
1175 const uint16_t FNumber = 0x829d;
1176 /**
1177  * The class of the program used by the camera to set exposure when the picture is taken.
1178  */
1179 const uint16_t ExposureProgram = 0x8822;
1180 /**
1181  * Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM
1182  * Technical Committee.
1183  */
1184 const uint16_t SpectralSensitivity = 0x8824;
1185 /**
1186  * Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232.
1187  */
1188 const uint16_t ISOSpeedRatings = 0x8827;
1189 /**
1190  * Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. <OECF> is the relationship between the camera optical input and the image
1191  * values.
1192  */
1193 const uint16_t OECF = 0x8828;
1194 /**
1195  * The SensitivityType tag indicates which one of the parameters of ISO12232 is the PhotographicSensitivity tag. Although it is an optional tag, it should be
1196  * recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same.
1197  */
1198 const uint16_t SensitivityType = 0x8830;
1199 /**
1200  * This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the
1201  * PhotographicSensitivity and SensitivityType tags shall also be recorded.
1202  */
1203 const uint16_t StandardOutputSensitivity = 0x8831;
1204 /**
1205  * This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the
1206  * PhotographicSensitivity and SensitivityType tags shall also be recorded.
1207  */
1208 const uint16_t RecommendedExposureIndex = 0x8832;
1209 /**
1210  * This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and
1211  * SensitivityType tags shall also be recorded.
1212  */
1213 const uint16_t ISOSpeed = 0x8833;
1214 /**
1215  * This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without
1216  * ISOSpeed and ISOSpeedLatitudezzz.
1217  */
1218 const uint16_t ISOSpeedLatitudeyyy = 0x8834;
1219 /**
1220  * This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without
1221  * ISOSpeed and ISOSpeedLatitudeyyy.
1222  */
1223 const uint16_t ISOSpeedLatitudezzz = 0x8835;
1224 /**
1225  * The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard.
1226  */
1227 const uint16_t ExifVersion = 0x9000;
1228 /**
1229  * The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded.
1230  */
1231 const uint16_t DateTimeOriginal = 0x9003;
1232 /**
1233  * The date and time when the image was stored as digital data.
1234  */
1235 const uint16_t DateTimeDigitized = 0x9004;
1236 /**
1237  * Time difference from Universal Time Coordinated including daylight saving time of DateTime tag.
1238  */
1239 const uint16_t OffsetTime = 0x9010;
1240 /**
1241  * Time difference from Universal Time Coordinated including daylight saving time of DateTimeOriginal tag.
1242  */
1243 const uint16_t OffsetTimeOriginal = 0x9011;
1244 /**
1245  * Time difference from Universal Time Coordinated including daylight saving time of DateTimeDigitized tag.
1246  */
1247 const uint16_t OffsetTimeDigitized = 0x9012;
1248 /**
1249  * Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the
1250  * data arrangement is given in the <PhotometricInterpretation> tag. However, since <PhotometricInterpretation> can only express the order of Y, Cb and Cr, this
1251  * tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences.
1252  */
1253 const uint16_t ComponentsConfiguration = 0x9101;
1254 /**
1255  * Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel.
1256  */
1257 const uint16_t CompressedBitsPerPixel = 0x9102;
1258 /**
1259  * Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting.
1260  */
1261 const uint16_t ShutterSpeedValue = 0x9201;
1262 /**
1263  * The lens aperture. The unit is the APEX value.
1264  */
1265 const uint16_t ApertureValue = 0x9202;
1266 /**
1267  * The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99.
1268  */
1269 const uint16_t BrightnessValue = 0x9203;
1270 /**
1271  * The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99.
1272  */
1273 const uint16_t ExposureBiasValue = 0x9204;
1274 /**
1275  * The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range.
1276  */
1277 const uint16_t MaxApertureValue = 0x9205;
1278 /**
1279  * The distance to the subject, given in meters.
1280  */
1281 const uint16_t SubjectDistance = 0x9206;
1282 /**
1283  * The metering mode.
1284  */
1285 const uint16_t MeteringMode = 0x9207;
1286 /**
1287  * The kind of light source.
1288  */
1289 const uint16_t LightSource = 0x9208;
1290 /**
1291  * This tag is recorded when an image is taken using a strobe light (flash).
1292  */
1293 const uint16_t Flash = 0x9209;
1294 /**
1295  * The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera.
1296  */
1297 const uint16_t FocalLength = 0x920a;
1298 /**
1299  * This tag indicates the location and area of the main subject in the overall scene.
1300  */
1301 const uint16_t SubjectArea = 0x9214;
1302 /**
1303  * A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer.
1304  */
1305 const uint16_t MakerNote = 0x927c;
1306 /**
1307  * A tag for Exif users to write keywords or comments on the image besides those in <ImageDescription>, and without the character code limitations of the
1308  * <ImageDescription> tag.
1309  */
1310 const uint16_t UserComment = 0x9286;
1311 /**
1312  * A tag used to record fractions of seconds for the <DateTime> tag.
1313  */
1314 const uint16_t SubSecTime = 0x9290;
1315 /**
1316  * A tag used to record fractions of seconds for the <DateTimeOriginal> tag.
1317  */
1318 const uint16_t SubSecTimeOriginal = 0x9291;
1319 /**
1320  * A tag used to record fractions of seconds for the <DateTimeDigitized> tag.
1321  */
1322 const uint16_t SubSecTimeDigitized = 0x9292;
1323 /**
1324  * Temperature as the ambient situation at the shot, for example the room temperature where the photographer was holding the camera. The unit is degrees C.
1325  */
1326 const uint16_t Temperature = 0x9400;
1327 /**
1328  * Humidity as the ambient situation at the shot, for example the room humidity where the photographer was holding the camera. The unit is %.
1329  */
1330 const uint16_t Humidity = 0x9401;
1331 /**
1332  * Pressure as the ambient situation at the shot, for example the room atmosphere where the photographer was holding the camera or the water pressure under the
1333  * sea. The unit is hPa.
1334  */
1335 const uint16_t Pressure = 0x9402;
1336 /**
1337  * Water depth as the ambient situation at the shot, for example the water depth of the camera at underwater photography. The unit is m.
1338  */
1339 const uint16_t WaterDepth = 0x9403;
1340 /**
1341  * Acceleration (a scalar regardless of direction) as the ambient situation at the shot, for example the driving acceleration of the vehicle which the
1342  * photographer rode on at the shot. The unit is mGal (10e-5 m/s^2).
1343  */
1344 const uint16_t Acceleration = 0x9404;
1345 /**
1346  * Elevation/depression. angle of the orientation of the camera(imaging optical axis) as the ambient situation at the shot. The unit is degrees.
1347  */
1348 const uint16_t CameraElevationAngle = 0x9405;
1349 /**
1350  * The FlashPix format version supported by a FPXR file.
1351  */
1352 const uint16_t FlashpixVersion = 0xa000;
1353 /**
1354  * The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor
1355  * conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it
1356  * is converted to FlashPix.
1357  */
1358 const uint16_t ColorSpace = 0xa001;
1359 /**
1360  * Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or
1361  * not there is padding data or a restart marker. This tag should not exist in an uncompressed file.
1362  */
1363 const uint16_t PixelXDimension = 0xa002;
1364 /**
1365  * Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether
1366  * or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical
1367  * direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF.
1368  */
1369 const uint16_t PixelYDimension = 0xa003;
1370 /**
1371  * This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and
1372  * extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded.
1373  */
1374 const uint16_t RelatedSoundFile = 0xa004;
1375 /**
1376  * Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD.
1377  * The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically
1378  * compared with normal TIFF IFD.
1379  */
1380 const uint16_t InteroperabilityTag = 0xa005;
1381 /**
1382  * Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS).
1383  */
1384 const uint16_t FlashEnergy = 0xa20b;
1385 /**
1386  * This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as
1387  * specified in ISO 12233.
1388  */
1389 const uint16_t SpatialFrequencyResponse = 0xa20c;
1390 /**
1391  * Indicates the number of pixels in the image width (X) direction per <FocalPlaneResolutionUnit> on the camera focal plane.
1392  */
1393 const uint16_t FocalPlaneXResolution = 0xa20e;
1394 /**
1395  * Indicates the number of pixels in the image height (V) direction per <FocalPlaneResolutionUnit> on the camera focal plane.
1396  */
1397 const uint16_t FocalPlaneYResolution = 0xa20f;
1398 /**
1399  * Indicates the unit for measuring <FocalPlaneXResolution> and <FocalPlaneYResolution>. This value is the same as the <ResolutionUnit>.
1400  */
1401 const uint16_t FocalPlaneResolutionUnit = 0xa210;
1402 /**
1403  * Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left
1404  * edge, prior to rotation processing as per the <Rotation> tag. The first value indicates the X column number and second indicates the Y row number.
1405  */
1406 const uint16_t SubjectLocation = 0xa214;
1407 /**
1408  * Indicates the exposure index selected on the camera or input device at the time the image is captured.
1409  */
1410 const uint16_t ExposureIndex = 0xa215;
1411 /**
1412  * Indicates the image sensor type on the camera or input device.
1413  */
1414 const uint16_t SensingMethod = 0xa217;
1415 /**
1416  * Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC.
1417  */
1418 const uint16_t FileSource = 0xa300;
1419 /**
1420  * Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed.
1421  */
1422 const uint16_t SceneType = 0xa301;
1423 /**
1424  * Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing
1425  * methods.
1426  */
1427 const uint16_t CFAPattern = 0xa302;
1428 /**
1429  * This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is
1430  * expected to disable or minimize any further processing.
1431  */
1432 const uint16_t CustomRendered = 0xa401;
1433 /**
1434  * This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at
1435  * different exposure settings.
1436  */
1437 const uint16_t ExposureMode = 0xa402;
1438 /**
1439  * This tag indicates the white balance mode set when the image was shot.
1440  */
1441 const uint16_t WhiteBalance = 0xa403;
1442 /**
1443  * This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not
1444  * used.
1445  */
1446 const uint16_t DigitalZoomRatio = 0xa404;
1447 /**
1448  * This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs
1449  * from the <FocalLength> tag.
1450  */
1451 const uint16_t FocalLengthIn35mmFilm = 0xa405;
1452 /**
1453  * This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the
1454  * <SceneType> tag.
1455  */
1456 const uint16_t SceneCaptureType = 0xa406;
1457 /**
1458  * This tag indicates the degree of overall image gain adjustment.
1459  */
1460 const uint16_t GainControl = 0xa407;
1461 /**
1462  * This tag indicates the direction of contrast processing applied by the camera when the image was shot.
1463  */
1464 const uint16_t Contrast = 0xa408;
1465 /**
1466  * This tag indicates the direction of saturation processing applied by the camera when the image was shot.
1467  */
1468 const uint16_t Saturation = 0xa409;
1469 /**
1470  * This tag indicates the direction of sharpness processing applied by the camera when the image was shot.
1471  */
1472 const uint16_t Sharpness = 0xa40a;
1473 /**
1474  * This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions
1475  * in the reader.
1476  */
1477 const uint16_t DeviceSettingDescription = 0xa40b;
1478 /**
1479  * This tag indicates the distance to the subject.
1480  */
1481 const uint16_t SubjectDistanceRange = 0xa40c;
1482 /**
1483  * This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed
1484  * length.
1485  */
1486 const uint16_t ImageUniqueID = 0xa420;
1487 /**
1488  * This tag records the owner of a camera used in photography as an ASCII string.
1489  */
1490 const uint16_t CameraOwnerName = 0xa430;
1491 /**
1492  * This tag records the serial number of the body of the camera that was used in photography as an ASCII string.
1493  */
1494 const uint16_t BodySerialNumber = 0xa431;
1495 /**
1496  * This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length,
1497  * which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0
1498  */
1499 const uint16_t LensSpecification = 0xa432;
1500 /**
1501  * This tag records the lens manufactor as an ASCII string.
1502  */
1503 const uint16_t LensMake = 0xa433;
1504 /**
1505  * This tag records the lens's model name and model number as an ASCII string.
1506  */
1507 const uint16_t LensModel = 0xa434;
1508 /**
1509  * This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string.
1510  */
1511 const uint16_t LensSerialNumber = 0xa435;
1512 /**
1513  * Indicates whether the recorded image is a composite image or not.
1514  */
1515 const uint16_t CompositeImage = 0xa460;
1516 /**
1517  * Indicates the number of the source images (tentatively recorded images) captured for a composite Image.
1518  */
1519 const uint16_t SourceImageNumberOfCompositeImage = 0xa461;
1520 /**
1521  * For a composite image, records the parameters relating exposure time of the exposures for generating the said composite image, such as respective exposure
1522  * times of captured source images (tentatively recorded images).
1523  */
1524 const uint16_t SourceExposureTimesOfCompositeImage = 0xa462;
1525 } // namespace Photo
1526 namespace Iop
1527 {
1528 /**
1529  * Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see
1530  * the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98.
1531  */
1532 const uint16_t InteroperabilityIndex = 0x0001;
1533 /**
1534  * Interoperability version
1535  */
1536 const uint16_t InteroperabilityVersion = 0x0002;
1537 /**
1538  * File format of image file
1539  */
1540 const uint16_t RelatedImageFileFormat = 0x1000;
1541 /**
1542  * Image width
1543  */
1544 const uint16_t RelatedImageWidth = 0x1001;
1545 /**
1546  * Image height
1547  */
1548 const uint16_t RelatedImageLength = 0x1002;
1549 } // namespace Iop
1550 namespace GPSInfo
1551 {
1552 /**
1553  * Indicates the version of <GPSInfoIFD>. The version is given as 2.0.0.0. This tag is mandatory when <GPSInfo> tag is present. (Note: The <GPSVersionID> tag is
1554  * given in bytes, unlike the <ExifVersion> tag. When the version is 2.0.0.0, the tag value is 02000000.H).
1555  */
1556 const uint16_t GPSVersionID = 0x0000;
1557 /**
1558  * Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude.
1559  */
1560 const uint16_t GPSLatitudeRef = 0x0001;
1561 /**
1562  * Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and
1563  * seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal
1564  * places, the format is dd/1,mmmm/100,0/1.
1565  */
1566 const uint16_t GPSLatitude = 0x0002;
1567 /**
1568  * Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude.
1569  */
1570 const uint16_t GPSLongitudeRef = 0x0003;
1571 /**
1572  * Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes
1573  * and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two
1574  * decimal places, the format is ddd/1,mmmm/100,0/1.
1575  */
1576 const uint16_t GPSLongitude = 0x0004;
1577 /**
1578  * Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is
1579  * below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that
1580  * this tag is BYTE type, unlike other reference tags.
1581  */
1582 const uint16_t GPSAltitudeRef = 0x0005;
1583 /**
1584  * Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters.
1585  */
1586 const uint16_t GPSAltitude = 0x0006;
1587 /**
1588  * Indicates the time as UTC (Coordinated Universal Time). <TimeStamp> is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock).
1589  */
1590 const uint16_t GPSTimeStamp = 0x0007;
1591 /**
1592  * Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth,
1593  * SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to
1594  * NULL.
1595  */
1596 const uint16_t GPSSatellites = 0x0008;
1597 /**
1598  * Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability.
1599  */
1600 const uint16_t GPSStatus = 0x0009;
1601 /**
1602  * Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress.
1603  */
1604 const uint16_t GPSMeasureMode = 0x000a;
1605 /**
1606  * Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement.
1607  */
1608 const uint16_t GPSDOP = 0x000b;
1609 /**
1610  * Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots.
1611  */
1612 const uint16_t GPSSpeedRef = 0x000c;
1613 /**
1614  * Indicates the speed of GPS receiver movement.
1615  */
1616 const uint16_t GPSSpeed = 0x000d;
1617 /**
1618  * Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction.
1619  */
1620 const uint16_t GPSTrackRef = 0x000e;
1621 /**
1622  * Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99.
1623  */
1624 const uint16_t GPSTrack = 0x000f;
1625 /**
1626  * Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction.
1627  */
1628 const uint16_t GPSImgDirectionRef = 0x0010;
1629 /**
1630  * Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99.
1631  */
1632 const uint16_t GPSImgDirection = 0x0011;
1633 /**
1634  * Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84".
1635  */
1636 const uint16_t GPSMapDatum = 0x0012;
1637 /**
1638  * Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude.
1639  */
1640 const uint16_t GPSDestLatitudeRef = 0x0013;
1641 /**
1642  * Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively.
1643  * If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example,
1644  * fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1.
1645  */
1646 const uint16_t GPSDestLatitude = 0x0014;
1647 /**
1648  * Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude.
1649  */
1650 const uint16_t GPSDestLongitudeRef = 0x0015;
1651 /**
1652  * Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively.
1653  * If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example,
1654  * fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1.
1655  */
1656 const uint16_t GPSDestLongitude = 0x0016;
1657 /**
1658  * Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction.
1659  */
1660 const uint16_t GPSDestBearingRef = 0x0017;
1661 /**
1662  * Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99.
1663  */
1664 const uint16_t GPSDestBearing = 0x0018;
1665 /**
1666  * Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots.
1667  */
1668 const uint16_t GPSDestDistanceRef = 0x0019;
1669 /**
1670  * Indicates the distance to the destination point.
1671  */
1672 const uint16_t GPSDestDistance = 0x001a;
1673 /**
1674  * A character string recording the name of the method used for location finding. The string encoding is defined using the same scheme as UserComment.
1675  */
1676 const uint16_t GPSProcessingMethod = 0x001b;
1677 /**
1678  * A character string recording the name of the GPS area.The string encoding is defined using the same scheme as UserComment.
1679  */
1680 const uint16_t GPSAreaInformation = 0x001c;
1681 /**
1682  * A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.".
1683  */
1684 const uint16_t GPSDateStamp = 0x001d;
1685 /**
1686  * Indicates whether differential correction is applied to the GPS receiver.
1687  */
1688 const uint16_t GPSDifferential = 0x001e;
1689 /**
1690  * This tag indicates horizontal positioning errors in meters.
1691  */
1692 const uint16_t GPSHPositioningError = 0x001f;
1693 } // namespace GPSInfo
1694 } // namespace Exif