Home | History | Annotate | Download | only in img_utils
      1 /*
      2  * Copyright 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef IMG_UTILS_TIFF_TAG_DEFINITION_H
     18 #define IMG_UTILS_TIFF_TAG_DEFINITION_H
     19 
     20 #include <img_utils/TiffEntry.h>
     21 #include <img_utils/Output.h>
     22 #include <img_utils/TiffHelpers.h>
     23 #include <stdint.h>
     24 
     25 namespace android {
     26 namespace img_utils {
     27 
     28 /**
     29  * Tag definitions contain information about standard TIFF compatible tags.
     30  */
     31 typedef struct TagDefinition {
     32     // The tag name.
     33     const char* tagName;
     34     // The specified tag ID.
     35     const uint16_t tagId;
     36     // The default type for this tag.  This must be a valid TIFF type.
     37     const TagType defaultType;
     38     // The default Image File Directory (IFD) for this tag.
     39     const uint32_t defaultIfd;
     40     // The valid count for this tag, or 0 if the count is not fixed.
     41     const uint32_t fixedCount;
     42     // The endianness of the tag value, or UNDEFINED_ENDIAN if there is no fixed endian
     43     const Endianness fixedEndian;
     44 } TagDefinition_t;
     45 
     46 /**
     47  * Convenience defines for tag ids.
     48  */
     49 enum {
     50     TAG_RAWTOPREVIEWGAIN = 0xC7A8u,
     51     TAG_NEWRAWIMAGEDIGEST = 0xC7A7u,
     52     TAG_ORIGINALDEFAULTCROPSIZE = 0xC793u,
     53     TAG_ORIGINALBESTQUALITYFINALSIZE = 0xC792u,
     54     TAG_ORIGINALDEFAULTFINALSIZE = 0xC791u,
     55     TAG_PROFILEHUESATMAPENCODING = 0xC7A3u,
     56     TAG_PROFILELOOKTABLEENCODING = 0xC7A4u,
     57     TAG_BASELINEEXPOSUREOFFSET = 0xC7A5u,
     58     TAG_DEFAULTBLACKRENDER = 0xC7A6u,
     59     TAG_DEFAULTUSERCROP = 0xC7B5u,
     60     TAG_NOISEPROFILE = 0xC761u,
     61     TAG_OPCODELIST3 = 0xC74Eu,
     62     TAG_OPCODELIST2 = 0xC741u,
     63     TAG_OPCODELIST1 = 0xC740u,
     64     TAG_PROFILELOOKTABLEDATA = 0xC726u,
     65     TAG_PROFILELOOKTABLEDIMS = 0xC725u,
     66     TAG_ROWINTERLEAVEFACTOR = 0xC71Fu,
     67     TAG_SUBTILEBLOCKSIZE = 0xC71Eu,
     68     TAG_ORIGINALRAWFILEDIGEST = 0xC71Du,
     69     TAG_RAWIMAGEDIGEST = 0xC71Cu,
     70     TAG_PREVIEWDATETIME = 0xC71Bu,
     71     TAG_PREVIEWCOLORSPACE = 0xC71Au,
     72     TAG_PREVIEWSETTINGSDIGEST = 0xC719u,
     73     TAG_PREVIEWSETTINGSNAME = 0xC718u,
     74     TAG_PREVIEWAPPLICATIONVERSION = 0xC717u,
     75     TAG_PREVIEWAPPLICATIONNAME = 0xC716u,
     76     TAG_FORWARDMATRIX2 = 0xC715u,
     77     TAG_FORWARDMATRIX1 = 0xC714u,
     78     TAG_PROFILECOPYRIGHT = 0xC6FEu,
     79     TAG_PROFILEEMBEDPOLICY = 0xC6FDu,
     80     TAG_PROFILETONECURVE = 0xC6FCu,
     81     TAG_PROFILEHUESATMAPDATA2 = 0xC6FBu,
     82     TAG_PROFILEHUESATMAPDATA1 = 0xC6FAu,
     83     TAG_PROFILEHUESATMAPDIMS = 0xC6F9u,
     84     TAG_PROFILENAME = 0xC6F8u,
     85     TAG_NOISEREDUCTIONAPPLIED = 0xC6F7u,
     86     TAG_ASSHOTPROFILENAME = 0xC6F6u,
     87     TAG_EXTRACAMERAPROFILES = 0xC6F5u,
     88     TAG_PROFILECALIBRATIONSIGNATURE = 0xC6F4u,
     89     TAG_CAMERACALIBRATIONSIGNATURE = 0xC6F3u,
     90     TAG_COLORIMETRICREFERENCE = 0xC6BFu,
     91     TAG_CURRENTPREPROFILEMATRIX = 0xC692u,
     92     TAG_CURRENTICCPROFILE = 0xC691u,
     93     TAG_ASSHOTPREPROFILEMATRIX = 0xC690u,
     94     TAG_ASSHOTICCPROFILE = 0xC68Fu,
     95     TAG_MASKEDAREAS = 0xC68Eu,
     96     TAG_ACTIVEAREA = 0xC68Du,
     97     TAG_ORIGINALRAWFILEDATA = 0xC68Cu,
     98     TAG_ORIGINALRAWFILENAME = 0xC68Bu,
     99     TAG_RAWDATAUNIQUEID = 0xC65Du,
    100     TAG_MAKERNOTESAFETY = 0xC635u,
    101     TAG_DNGPRIVATEDATA = 0xC634u,
    102     TAG_SHADOWSCALE = 0xC633u,
    103     TAG_ANTIALIASSTRENGTH = 0xC632u,
    104     TAG_CHROMABLURRADIUS = 0xC631u,
    105     TAG_LENSINFO = 0xC630u,
    106     TAG_CAMERASERIALNUMBER = 0xC62Fu,
    107     TAG_LINEARRESPONSELIMIT = 0xC62Eu,
    108     TAG_BAYERGREENSPLIT = 0xC62Du,
    109     TAG_BASELINESHARPNESS = 0xC62Cu,
    110     TAG_BASELINENOISE = 0xC62Bu,
    111     TAG_BASELINEEXPOSURE = 0xC62Au,
    112     TAG_ASSHOTWHITEXY = 0xC629u,
    113     TAG_ASSHOTNEUTRAL = 0xC628u,
    114     TAG_ANALOGBALANCE = 0xC627u,
    115     TAG_REDUCTIONMATRIX2 = 0xC626u,
    116     TAG_REDUCTIONMATRIX1 = 0xC625u,
    117     TAG_CAMERACALIBRATION2 = 0xC624u,
    118     TAG_CAMERACALIBRATION1 = 0xC623u,
    119     TAG_COLORMATRIX2 = 0xC622u,
    120     TAG_COLORMATRIX1 = 0xC621u,
    121     TAG_CALIBRATIONILLUMINANT2 = 0xC65Bu,
    122     TAG_CALIBRATIONILLUMINANT1 = 0xC65Au,
    123     TAG_DEFAULTCROPSIZE = 0xC620u,
    124     TAG_DEFAULTCROPORIGIN = 0xC61Fu,
    125     TAG_BESTQUALITYSCALE = 0xC65Cu,
    126     TAG_DEFAULTSCALE = 0xC61Eu,
    127     TAG_WHITELEVEL = 0xC61Du,
    128     TAG_BLACKLEVELDELTAV = 0xC61Cu,
    129     TAG_BLACKLEVELDELTAH = 0xC61Bu,
    130     TAG_BLACKLEVEL = 0xC61Au,
    131     TAG_BLACKLEVELREPEATDIM = 0xC619u,
    132     TAG_LINEARIZATIONTABLE = 0xC618u,
    133     TAG_CFALAYOUT = 0xC617u,
    134     TAG_CFAPLANECOLOR = 0xC616u,
    135     TAG_LOCALIZEDCAMERAMODEL = 0xC615u,
    136     TAG_UNIQUECAMERAMODEL = 0xC614u,
    137     TAG_DNGBACKWARDVERSION = 0xC613u,
    138     TAG_DNGVERSION = 0xC612u,
    139     TAG_SUBFILETYPE = 0x00FFu,
    140     TAG_YRESOLUTION = 0x011Bu,
    141     TAG_XRESOLUTION = 0x011Au,
    142     TAG_THRESHHOLDING = 0x0107u,
    143     TAG_STRIPOFFSETS = 0x0111u,
    144     TAG_STRIPBYTECOUNTS = 0x0117u,
    145     TAG_SOFTWARE = 0x0131u,
    146     TAG_SAMPLESPERPIXEL = 0x0115u,
    147     TAG_ROWSPERSTRIP = 0x0116u,
    148     TAG_RESOLUTIONUNIT = 0x0128u,
    149     TAG_PLANARCONFIGURATION = 0x011Cu,
    150     TAG_PHOTOMETRICINTERPRETATION = 0x0106u,
    151     TAG_ORIENTATION = 0x0112u,
    152     TAG_NEWSUBFILETYPE = 0x00FEu,
    153     TAG_MODEL = 0x0110u,
    154     TAG_MINSAMPLEVALUE = 0x0118u,
    155     TAG_MAXSAMPLEVALUE = 0x0119u,
    156     TAG_MAKE = 0x010Fu,
    157     TAG_IMAGEWIDTH = 0x0100u,
    158     TAG_IMAGELENGTH = 0x0101u,
    159     TAG_IMAGEDESCRIPTION = 0x010Eu,
    160     TAG_HOSTCOMPUTER = 0x013Cu,
    161     TAG_GRAYRESPONSEUNIT = 0x0122u,
    162     TAG_GRAYRESPONSECURVE = 0x0123u,
    163     TAG_FREEOFFSETS = 0x0120u,
    164     TAG_FREEBYTECOUNTS = 0x0121u,
    165     TAG_FILLORDER = 0x010Au,
    166     TAG_EXTRASAMPLES = 0x0152u,
    167     TAG_DATETIME = 0x0132u,
    168     TAG_COPYRIGHT = 0x8298u,
    169     TAG_COMPRESSION = 0x0103u,
    170     TAG_COLORMAP = 0x0140u,
    171     TAG_CELLWIDTH = 0x0108u,
    172     TAG_CELLLENGTH = 0x0109u,
    173     TAG_BITSPERSAMPLE = 0x0102u,
    174     TAG_ARTIST = 0x013Bu,
    175     TAG_EXIFVERSION = 0x9000u,
    176     TAG_CFAREPEATPATTERNDIM = 0x828Du,
    177     TAG_DATETIMEORIGINAL = 0x9003u,
    178     TAG_CFAPATTERN = 0x828Eu,
    179     TAG_SUBIFDS = 0x014Au,
    180     TAG_TIFFEPSTANDARDID = 0x9216u,
    181     TAG_EXPOSURETIME = 0x829Au,
    182     TAG_ISOSPEEDRATINGS = 0x8827u,
    183     TAG_FOCALLENGTH = 0x920Au,
    184     TAG_FNUMBER = 0x829Du,
    185     TAG_GPSINFO = 0x8825u,
    186     TAG_GPSVERSIONID = 0x0u,
    187     TAG_GPSLATITUDEREF = 0x1u,
    188     TAG_GPSLATITUDE = 0x2u,
    189     TAG_GPSLONGITUDEREF = 0x3u,
    190     TAG_GPSLONGITUDE = 0x4u,
    191     TAG_GPSTIMESTAMP = 0x7u,
    192     TAG_GPSDATESTAMP = 0x001Du,
    193 };
    194 
    195 /**
    196  * TIFF_EP_TAG_DEFINITIONS contains tags defined in the TIFF EP spec
    197  */
    198 const TagDefinition_t TIFF_EP_TAG_DEFINITIONS[] =  {
    199     { // PhotometricInterpretation
    200         "PhotometricInterpretation",
    201         0x0106u,
    202         SHORT,
    203         IFD_0,
    204         1,
    205         UNDEFINED_ENDIAN
    206     },
    207     { // SubIfds
    208         "SubIfds",
    209         0x014Au,
    210         LONG,
    211         IFD_0,
    212         0,
    213         UNDEFINED_ENDIAN
    214     },
    215     { // CFAPattern
    216         "CFAPattern",
    217         0x828Eu,
    218         BYTE,
    219         IFD_0,
    220         0,
    221         UNDEFINED_ENDIAN
    222     },
    223     { // CFARepeatPatternDim
    224         "CFARepeatPatternDim",
    225         0x828Du,
    226         SHORT,
    227         IFD_0,
    228         2,
    229         UNDEFINED_ENDIAN
    230     },
    231     { // DateTimeOriginal
    232         "DateTimeOriginal",
    233         0x9003u,
    234         ASCII,
    235         IFD_0,
    236         20,
    237         UNDEFINED_ENDIAN
    238     },
    239     { // Tiff/EPStandardID
    240         "Tiff",
    241         0x9216u,
    242         BYTE,
    243         IFD_0,
    244         4,
    245         UNDEFINED_ENDIAN
    246     },
    247     { // ExposureTime
    248         "ExposureTime",
    249         0x829Au,
    250         RATIONAL,
    251         IFD_0,
    252         0,
    253         UNDEFINED_ENDIAN
    254     },
    255     { // ISOSpeedRatings
    256         "ISOSpeedRatings",
    257         0x8827u,
    258         SHORT,
    259         IFD_0,
    260         0,
    261         UNDEFINED_ENDIAN
    262     },
    263     { // FocalLength
    264         "FocalLength",
    265         0x920Au,
    266         RATIONAL,
    267         IFD_0,
    268         0,
    269         UNDEFINED_ENDIAN
    270     },
    271     { // FNumber
    272         "FNumber",
    273         0x829Du,
    274         RATIONAL,
    275         IFD_0,
    276         0,
    277         UNDEFINED_ENDIAN
    278     },
    279     { // GPSInfo
    280         "GPSInfo",
    281         0x8825u,
    282         LONG,
    283         IFD_0,
    284         1,
    285         UNDEFINED_ENDIAN
    286     },
    287     { // GPSVersionID
    288         "GPSVersionID",
    289         0x0u,
    290         BYTE,
    291         IFD_0,
    292         4,
    293         UNDEFINED_ENDIAN
    294     },
    295     { // GPSLatitudeRef
    296         "GPSLatitudeRef",
    297         0x1u,
    298         ASCII,
    299         IFD_0,
    300         2,
    301         UNDEFINED_ENDIAN
    302     },
    303     { // GPSLatitude
    304         "GPSLatitude",
    305         0x2u,
    306         RATIONAL,
    307         IFD_0,
    308         3,
    309         UNDEFINED_ENDIAN
    310     },
    311     { // GPSLongitudeRef
    312         "GPSLongitudeRef",
    313         0x3u,
    314         ASCII,
    315         IFD_0,
    316         2,
    317         UNDEFINED_ENDIAN
    318     },
    319     { // GPSLongitude
    320         "GPSLongitude",
    321         0x4u,
    322         RATIONAL,
    323         IFD_0,
    324         3,
    325         UNDEFINED_ENDIAN
    326     },
    327     { // GPSTimeStamp
    328         "GPSTimeStamp",
    329         0x7u,
    330         RATIONAL,
    331         IFD_0,
    332         3,
    333         UNDEFINED_ENDIAN
    334     },
    335     /*TODO: Remaining TIFF EP tags*/
    336 };
    337 
    338 /**
    339  * EXIF_2_3_TAG_DEFINITIONS contains tags defined in the Jeita EXIF 2.3 spec
    340  */
    341 const TagDefinition_t EXIF_2_3_TAG_DEFINITIONS[] = {
    342     { // ExifVersion
    343         "ExifVersion",
    344         0x9000u,
    345         UNDEFINED,
    346         IFD_0,
    347         4,
    348         UNDEFINED_ENDIAN
    349     },
    350     { // GPSDateStamp
    351         "GPSDateStamp",
    352         0x001Du,
    353         ASCII,
    354         IFD_0,
    355         11,
    356         UNDEFINED_ENDIAN
    357     },
    358     /*TODO: Remaining EXIF 2.3 tags*/
    359 };
    360 
    361 /**
    362  * TIFF_6_TAG_DEFINITIONS contains tags defined in the TIFF 6.0 spec
    363  */
    364 const TagDefinition_t TIFF_6_TAG_DEFINITIONS[] = {
    365     { // SubFileType
    366         "SubFileType",
    367         0x00FFu,
    368         SHORT,
    369         IFD_0,
    370         1,
    371         UNDEFINED_ENDIAN
    372     },
    373     { // Artist
    374         "Artist",
    375         0x013Bu,
    376         ASCII,
    377         IFD_0,
    378         0,
    379         UNDEFINED_ENDIAN
    380     },
    381     { // BitsPerSample
    382         "BitsPerSample",
    383         0x0102u,
    384         SHORT,
    385         IFD_0,
    386         0,
    387         UNDEFINED_ENDIAN
    388     },
    389     { // CellLength
    390         "CellLength",
    391         0x0109u,
    392         SHORT,
    393         IFD_0,
    394         1,
    395         UNDEFINED_ENDIAN
    396     },
    397     { // CellWidth
    398         "CellWidth",
    399         0x0108u,
    400         SHORT,
    401         IFD_0,
    402         1,
    403         UNDEFINED_ENDIAN
    404     },
    405     { // ColorMap
    406         "ColorMap",
    407         0x0140u,
    408         SHORT,
    409         IFD_0,
    410         0,
    411         UNDEFINED_ENDIAN
    412     },
    413     { // Compression
    414         "Compression",
    415         0x0103u,
    416         SHORT,
    417         IFD_0,
    418         1,
    419         UNDEFINED_ENDIAN
    420     },
    421     { // Copyright
    422         "Copyright",
    423         0x8298u,
    424         ASCII,
    425         IFD_0,
    426         0,
    427         UNDEFINED_ENDIAN
    428     },
    429     { // DateTime
    430         "DateTime",
    431         0x0132u,
    432         ASCII,
    433         IFD_0,
    434         20,
    435         UNDEFINED_ENDIAN
    436     },
    437     { // ExtraSamples
    438         "ExtraSamples",
    439         0x0152u,
    440         SHORT,
    441         IFD_0,
    442         0,
    443         UNDEFINED_ENDIAN
    444     },
    445     { // FillOrder
    446         "FillOrder",
    447         0x010Au,
    448         SHORT,
    449         IFD_0,
    450         1,
    451         UNDEFINED_ENDIAN
    452     },
    453     { // FreeByteCounts
    454         "FreeByteCounts",
    455         0x0121u,
    456         LONG,
    457         IFD_0,
    458         1,
    459         UNDEFINED_ENDIAN
    460     },
    461     { // FreeOffsets
    462         "FreeOffsets",
    463         0x0120u,
    464         LONG,
    465         IFD_0,
    466         1,
    467         UNDEFINED_ENDIAN
    468     },
    469     { // GrayResponseCurve
    470         "GrayResponseCurve",
    471         0x0123u,
    472         SHORT,
    473         IFD_0,
    474         0,
    475         UNDEFINED_ENDIAN
    476     },
    477     { // GrayResponseUnit
    478         "GrayResponseUnit",
    479         0x0122u,
    480         SHORT,
    481         IFD_0,
    482         1,
    483         UNDEFINED_ENDIAN
    484     },
    485     { // HostComputer
    486         "HostComputer",
    487         0x013Cu,
    488         ASCII,
    489         IFD_0,
    490         0,
    491         UNDEFINED_ENDIAN
    492     },
    493     { // ImageDescription
    494         "ImageDescription",
    495         0x010Eu,
    496         ASCII,
    497         IFD_0,
    498         0,
    499         UNDEFINED_ENDIAN
    500     },
    501     { // ImageLength
    502         "ImageLength",
    503         0x0101u,
    504         LONG,
    505         IFD_0,
    506         1,
    507         UNDEFINED_ENDIAN
    508     },
    509     { // ImageWidth
    510         "ImageWidth",
    511         0x0100u,
    512         LONG,
    513         IFD_0,
    514         1,
    515         UNDEFINED_ENDIAN
    516     },
    517     { // Make
    518         "Make",
    519         0x010Fu,
    520         ASCII,
    521         IFD_0,
    522         0,
    523         UNDEFINED_ENDIAN
    524     },
    525     { // MaxSampleValue
    526         "MaxSampleValue",
    527         0x0119u,
    528         SHORT,
    529         IFD_0,
    530         0,
    531         UNDEFINED_ENDIAN
    532     },
    533     { // MinSampleValue
    534         "MinSampleValue",
    535         0x0118u,
    536         SHORT,
    537         IFD_0,
    538         0,
    539         UNDEFINED_ENDIAN
    540     },
    541     { // Model
    542         "Model",
    543         0x0110u,
    544         ASCII,
    545         IFD_0,
    546         0,
    547         UNDEFINED_ENDIAN
    548     },
    549     { // NewSubfileType
    550         "NewSubfileType",
    551         0x00FEu,
    552         LONG,
    553         IFD_0,
    554         1,
    555         UNDEFINED_ENDIAN
    556     },
    557     { // Orientation
    558         "Orientation",
    559         0x0112u,
    560         SHORT,
    561         IFD_0,
    562         1,
    563         UNDEFINED_ENDIAN
    564     },
    565     { // PhotoMetricInterpretation
    566         "PhotoMetricInterpretation",
    567         0x0106u,
    568         SHORT,
    569         IFD_0,
    570         1,
    571         UNDEFINED_ENDIAN
    572     },
    573     { // PlanarConfiguration
    574         "PlanarConfiguration",
    575         0x011Cu,
    576         SHORT,
    577         IFD_0,
    578         1,
    579         UNDEFINED_ENDIAN
    580     },
    581     { // ResolutionUnit
    582         "ResolutionUnit",
    583         0x0128u,
    584         SHORT,
    585         IFD_0,
    586         1,
    587         UNDEFINED_ENDIAN
    588     },
    589     { // RowsPerStrip
    590         "RowsPerStrip",
    591         0x0116u,
    592         LONG,
    593         IFD_0,
    594         1,
    595         UNDEFINED_ENDIAN
    596     },
    597     { // SamplesPerPixel
    598         "SamplesPerPixel",
    599         0x0115u,
    600         SHORT,
    601         IFD_0,
    602         1,
    603         UNDEFINED_ENDIAN
    604     },
    605     { // Software
    606         "Software",
    607         0x0131u,
    608         ASCII,
    609         IFD_0,
    610         0,
    611         UNDEFINED_ENDIAN
    612     },
    613     { // StripByteCounts
    614         "StripByteCounts",
    615         0x0117u,
    616         LONG,
    617         IFD_0,
    618         0,
    619         UNDEFINED_ENDIAN
    620     },
    621     { // StripOffsets
    622         "StripOffsets",
    623         0x0111u,
    624         LONG,
    625         IFD_0,
    626         0,
    627         UNDEFINED_ENDIAN
    628     },
    629     { // SubfileType
    630         "SubfileType",
    631         0x00FFu,
    632         SHORT,
    633         IFD_0,
    634         1,
    635         UNDEFINED_ENDIAN
    636     },
    637     { // Threshholding
    638         "Threshholding",
    639         0x0107u,
    640         SHORT,
    641         IFD_0,
    642         1,
    643         UNDEFINED_ENDIAN
    644     },
    645     { // XResolution
    646         "XResolution",
    647         0x011Au,
    648         RATIONAL,
    649         IFD_0,
    650         1,
    651         UNDEFINED_ENDIAN
    652     },
    653     { // YResolution
    654         "YResolution",
    655         0x011Bu,
    656         RATIONAL,
    657         IFD_0,
    658         1,
    659         UNDEFINED_ENDIAN
    660     },
    661 };
    662 
    663 /**
    664  * DNG_TAG_DEFINITIONS contains tags defined in the DNG 1.4 spec
    665  */
    666 const TagDefinition_t DNG_TAG_DEFINITIONS[] = {
    667     { // DNGVersion
    668         "DNGVersion",
    669         0xC612u,
    670         BYTE,
    671         IFD_0,
    672         4,
    673         UNDEFINED_ENDIAN
    674     },
    675     { // DNGBackwardVersion
    676         "DNGBackwardVersion",
    677         0xC613u,
    678         BYTE,
    679         IFD_0,
    680         4,
    681         UNDEFINED_ENDIAN
    682     },
    683     { // UniqueCameraModel
    684         "UniqueCameraModel",
    685         0xC614u,
    686         ASCII,
    687         IFD_0,
    688         0,
    689         UNDEFINED_ENDIAN
    690     },
    691     { // LocalizedCameraModel
    692         "LocalizedCameraModel",
    693         0xC615u,
    694         ASCII,
    695         IFD_0,
    696         0,
    697         UNDEFINED_ENDIAN
    698     },
    699     { // CFAPlaneColor
    700         "CFAPlaneColor",
    701         0xC616u,
    702         BYTE,
    703         RAW_IFD,
    704         0,
    705         UNDEFINED_ENDIAN
    706     },
    707     { // CFALayout
    708         "CFALayout",
    709         0xC617u,
    710         SHORT,
    711         RAW_IFD,
    712         1,
    713         UNDEFINED_ENDIAN
    714     },
    715     { // LinearizationTable
    716         "LinearizationTable",
    717         0xC618u,
    718         SHORT,
    719         RAW_IFD,
    720         0,
    721         UNDEFINED_ENDIAN
    722     },
    723     { // BlackLevelRepeatDim
    724         "BlackLevelRepeatDim",
    725         0xC619u,
    726         SHORT,
    727         RAW_IFD,
    728         2,
    729         UNDEFINED_ENDIAN
    730     },
    731     { // BlackLevel
    732         "BlackLevel",
    733         0xC61Au,
    734         LONG,
    735         RAW_IFD,
    736         0,
    737         UNDEFINED_ENDIAN
    738     },
    739     { // BlackLevelDeltaH
    740         "BlackLevelDeltaH",
    741         0xC61Bu,
    742         SRATIONAL,
    743         RAW_IFD,
    744         0,
    745         UNDEFINED_ENDIAN
    746     },
    747     { // BlackLevelDeltaV
    748         "BlackLevelDeltaV",
    749         0xC61Cu,
    750         SRATIONAL,
    751         RAW_IFD,
    752         0,
    753         UNDEFINED_ENDIAN
    754     },
    755     { // WhiteLevel
    756         "WhiteLevel",
    757         0xC61Du,
    758         LONG,
    759         RAW_IFD,
    760         0,
    761         UNDEFINED_ENDIAN
    762     },
    763     { // DefaultScale
    764         "DefaultScale",
    765         0xC61Eu,
    766         RATIONAL,
    767         RAW_IFD,
    768         2,
    769         UNDEFINED_ENDIAN
    770     },
    771     { // BestQualityScale
    772         "BestQualityScale",
    773         0xC65Cu,
    774         RATIONAL,
    775         RAW_IFD,
    776         1,
    777         UNDEFINED_ENDIAN
    778     },
    779     { // DefaultCropOrigin
    780         "DefaultCropOrigin",
    781         0xC61Fu,
    782         LONG,
    783         RAW_IFD,
    784         2,
    785         UNDEFINED_ENDIAN
    786     },
    787     { // DefaultCropSize
    788         "DefaultCropSize",
    789         0xC620u,
    790         LONG,
    791         RAW_IFD,
    792         2,
    793         UNDEFINED_ENDIAN
    794     },
    795     { // CalibrationIlluminant1
    796         "CalibrationIlluminant1",
    797         0xC65Au,
    798         SHORT,
    799         PROFILE_IFD,
    800         1,
    801         UNDEFINED_ENDIAN
    802     },
    803     { // CalibrationIlluminant2
    804         "CalibrationIlluminant2",
    805         0xC65Bu,
    806         SHORT,
    807         PROFILE_IFD,
    808         1,
    809         UNDEFINED_ENDIAN
    810     },
    811     { // ColorMatrix1
    812         "ColorMatrix1",
    813         0xC621u,
    814         SRATIONAL,
    815         PROFILE_IFD,
    816         0,
    817         UNDEFINED_ENDIAN
    818     },
    819     { // ColorMatrix2
    820         "ColorMatrix2",
    821         0xC622u,
    822         SRATIONAL,
    823         PROFILE_IFD,
    824         0,
    825         UNDEFINED_ENDIAN
    826     },
    827     { // CameraCalibration1
    828         "CameraCalibration1",
    829         0xC623u,
    830         SRATIONAL,
    831         IFD_0,
    832         0,
    833         UNDEFINED_ENDIAN
    834     },
    835     { // CameraCalibration2
    836         "CameraCalibration2",
    837         0xC624u,
    838         SRATIONAL,
    839         IFD_0,
    840         0,
    841         UNDEFINED_ENDIAN
    842     },
    843     { // ReductionMatrix1
    844         "ReductionMatrix1",
    845         0xC625u,
    846         SRATIONAL,
    847         PROFILE_IFD,
    848         0,
    849         UNDEFINED_ENDIAN
    850     },
    851     { // ReductionMatrix2
    852         "ReductionMatrix2",
    853         0xC626u,
    854         SRATIONAL,
    855         PROFILE_IFD,
    856         0,
    857         UNDEFINED_ENDIAN
    858     },
    859     { // AnalogBalance
    860         "AnalogBalance",
    861         0xC627u,
    862         RATIONAL,
    863         IFD_0,
    864         0,
    865         UNDEFINED_ENDIAN
    866     },
    867     { // AsShotNeutral
    868         "AsShotNeutral",
    869         0xC628u,
    870         RATIONAL,
    871         IFD_0,
    872         0,
    873         UNDEFINED_ENDIAN
    874     },
    875     { // AsShotWhiteXY
    876         "AsShotWhiteXY",
    877         0xC629u,
    878         RATIONAL,
    879         IFD_0,
    880         2,
    881         UNDEFINED_ENDIAN
    882     },
    883     { // BaselineExposure
    884         "BaselineExposure",
    885         0xC62Au,
    886         SRATIONAL,
    887         IFD_0,
    888         1,
    889         UNDEFINED_ENDIAN
    890     },
    891     { // BaselineNoise
    892         "BaselineNoise",
    893         0xC62Bu,
    894         RATIONAL,
    895         IFD_0,
    896         1,
    897         UNDEFINED_ENDIAN
    898     },
    899     { // BaselineSharpness
    900         "BaselineSharpness",
    901         0xC62Cu,
    902         RATIONAL,
    903         IFD_0,
    904         1,
    905         UNDEFINED_ENDIAN
    906     },
    907     { // BayerGreenSplit
    908         "BayerGreenSplit",
    909         0xC62Du,
    910         LONG,
    911         RAW_IFD,
    912         1,
    913         UNDEFINED_ENDIAN
    914     },
    915     { // LinearResponseLimit
    916         "LinearResponseLimit",
    917         0xC62Eu,
    918         RATIONAL,
    919         IFD_0,
    920         1,
    921         UNDEFINED_ENDIAN
    922     },
    923     { // CameraSerialNumber
    924         "CameraSerialNumber",
    925         0xC62Fu,
    926         ASCII,
    927         IFD_0,
    928         0,
    929         UNDEFINED_ENDIAN
    930     },
    931     { // LensInfo
    932         "LensInfo",
    933         0xC630u,
    934         RATIONAL,
    935         IFD_0,
    936         4,
    937         UNDEFINED_ENDIAN
    938     },
    939     { // ChromaBlurRadius
    940         "ChromaBlurRadius",
    941         0xC631u,
    942         RATIONAL,
    943         RAW_IFD,
    944         1,
    945         UNDEFINED_ENDIAN
    946     },
    947     { // AntiAliasStrength
    948         "AntiAliasStrength",
    949         0xC632u,
    950         RATIONAL,
    951         RAW_IFD,
    952         1,
    953         UNDEFINED_ENDIAN
    954     },
    955     { // ShadowScale
    956         "ShadowScale",
    957         0xC633u,
    958         RATIONAL,
    959         IFD_0,
    960         1,
    961         UNDEFINED_ENDIAN
    962     },
    963     { // DNGPrivateData
    964         "DNGPrivateData",
    965         0xC634u,
    966         BYTE,
    967         IFD_0,
    968         0,
    969         UNDEFINED_ENDIAN
    970     },
    971     { // MakerNoteSafety
    972         "MakerNoteSafety",
    973         0xC635u,
    974         SHORT,
    975         IFD_0,
    976         1,
    977         UNDEFINED_ENDIAN
    978     },
    979     { // RawDataUniqueID
    980         "RawDataUniqueID",
    981         0xC65Du,
    982         BYTE,
    983         IFD_0,
    984         16,
    985         UNDEFINED_ENDIAN
    986     },
    987     { // OriginalRawFileName
    988         "OriginalRawFileName",
    989         0xC68Bu,
    990         ASCII,
    991         IFD_0,
    992         0,
    993         UNDEFINED_ENDIAN
    994     },
    995     { // OriginalRawFileData
    996         "OriginalRawFileData",
    997         0xC68Cu,
    998         UNDEFINED,
    999         IFD_0,
   1000         0,
   1001         BIG
   1002     },
   1003     { // ActiveArea
   1004         "ActiveArea",
   1005         0xC68Du,
   1006         LONG,
   1007         RAW_IFD,
   1008         4,
   1009         UNDEFINED_ENDIAN
   1010     },
   1011     { // MaskedAreas
   1012         "MaskedAreas",
   1013         0xC68Eu,
   1014         LONG,
   1015         RAW_IFD,
   1016         0,
   1017         UNDEFINED_ENDIAN
   1018     },
   1019     { // AsShotICCProfile
   1020         "AsShotICCProfile",
   1021         0xC68Fu,
   1022         UNDEFINED,
   1023         IFD_0,
   1024         0,
   1025         UNDEFINED_ENDIAN
   1026     },
   1027     { // AsShotPreProfileMatrix
   1028         "AsShotPreProfileMatrix",
   1029         0xC690u,
   1030         SRATIONAL,
   1031         IFD_0,
   1032         0,
   1033         UNDEFINED_ENDIAN
   1034     },
   1035     { // CurrentICCProfile
   1036         "CurrentICCProfile",
   1037         0xC691u,
   1038         UNDEFINED,
   1039         IFD_0,
   1040         0,
   1041         UNDEFINED_ENDIAN
   1042     },
   1043     { // CurrentICCProfile
   1044         "CurrentICCProfile",
   1045         0xC691u,
   1046         UNDEFINED,
   1047         IFD_0,
   1048         0,
   1049         UNDEFINED_ENDIAN
   1050     },
   1051     { // CurrentPreProfileMatrix
   1052         "CurrentPreProfileMatrix",
   1053         0xC692u,
   1054         SRATIONAL,
   1055         IFD_0,
   1056         0,
   1057         UNDEFINED_ENDIAN
   1058     },
   1059     { // ColorimetricReference
   1060         "ColorimetricReference",
   1061         0xC6BFu,
   1062         SHORT,
   1063         IFD_0,
   1064         1,
   1065         UNDEFINED_ENDIAN
   1066     },
   1067     { // CameraCalibrationSignature
   1068         "CameraCalibrationSignature",
   1069         0xC6F3u,
   1070         ASCII,
   1071         IFD_0,
   1072         0,
   1073         UNDEFINED_ENDIAN
   1074     },
   1075     { // ProfileCalibrationSignature
   1076         "ProfileCalibrationSignature",
   1077         0xC6F4u,
   1078         ASCII,
   1079         PROFILE_IFD,
   1080         0,
   1081         UNDEFINED_ENDIAN
   1082     },
   1083     { // ExtraCameraProfiles
   1084         "ExtraCameraProfiles",
   1085         0xC6F5u,
   1086         LONG,
   1087         IFD_0,
   1088         0,
   1089         UNDEFINED_ENDIAN
   1090     },
   1091     { // AsShotProfileName
   1092         "AsShotProfileName",
   1093         0xC6F6u,
   1094         ASCII,
   1095         IFD_0,
   1096         0,
   1097         UNDEFINED_ENDIAN
   1098     },
   1099     { // NoiseReductionApplied
   1100         "NoiseReductionApplied",
   1101         0xC6F7u,
   1102         RATIONAL,
   1103         RAW_IFD,
   1104         1,
   1105         UNDEFINED_ENDIAN
   1106     },
   1107     { // ProfileName
   1108         "ProfileName",
   1109         0xC6F8u,
   1110         ASCII,
   1111         PROFILE_IFD,
   1112         0,
   1113         UNDEFINED_ENDIAN
   1114     },
   1115     { // ProfileHueSatMapDims
   1116         "ProfileHueSatMapDims",
   1117         0xC6F9u,
   1118         LONG,
   1119         PROFILE_IFD,
   1120         3,
   1121         UNDEFINED_ENDIAN
   1122     },
   1123     { // ProfileHueSatMapData1
   1124         "ProfileHueSatMapData1",
   1125         0xC6FAu,
   1126         FLOAT,
   1127         PROFILE_IFD,
   1128         0,
   1129         UNDEFINED_ENDIAN
   1130     },
   1131     { // ProfileHueSatMapData2
   1132         "ProfileHueSatMapData2",
   1133         0xC6FBu,
   1134         FLOAT,
   1135         PROFILE_IFD,
   1136         0,
   1137         UNDEFINED_ENDIAN
   1138     },
   1139     { // ProfileToneCurve
   1140         "ProfileToneCurve",
   1141         0xC6FCu,
   1142         FLOAT,
   1143         PROFILE_IFD,
   1144         0,
   1145         UNDEFINED_ENDIAN
   1146     },
   1147     { // ProfileEmbedPolicy
   1148         "ProfileEmbedPolicy",
   1149         0xC6FDu,
   1150         LONG,
   1151         PROFILE_IFD,
   1152         1,
   1153         UNDEFINED_ENDIAN
   1154     },
   1155     { // ProfileCopyright
   1156         "ProfileCopyright",
   1157         0xC6FEu,
   1158         ASCII,
   1159         PROFILE_IFD,
   1160         0,
   1161         UNDEFINED_ENDIAN
   1162     },
   1163     { // ForwardMatrix1
   1164         "ForwardMatrix1",
   1165         0xC714u,
   1166         SRATIONAL,
   1167         PROFILE_IFD,
   1168         0,
   1169         UNDEFINED_ENDIAN
   1170     },
   1171     { // ForwardMatrix2
   1172         "ForwardMatrix2",
   1173         0xC715u,
   1174         SRATIONAL,
   1175         PROFILE_IFD,
   1176         0,
   1177         UNDEFINED_ENDIAN
   1178     },
   1179     { // PreviewApplicationName
   1180         "PreviewApplicationName",
   1181         0xC716u,
   1182         ASCII,
   1183         PREVIEW_IFD,
   1184         0,
   1185         UNDEFINED_ENDIAN
   1186     },
   1187     { // PreviewApplicationVersion
   1188         "PreviewApplicationVersion",
   1189         0xC717u,
   1190         ASCII,
   1191         PREVIEW_IFD,
   1192         0,
   1193         UNDEFINED_ENDIAN
   1194     },
   1195     { // PreviewSettingsName
   1196         "PreviewSettingsName",
   1197         0xC718u,
   1198         ASCII,
   1199         PREVIEW_IFD,
   1200         0,
   1201         UNDEFINED_ENDIAN
   1202     },
   1203     { // PreviewSettingsDigest
   1204         "PreviewSettingsDigest",
   1205         0xC719u,
   1206         BYTE,
   1207         PREVIEW_IFD,
   1208         16,
   1209         UNDEFINED_ENDIAN
   1210     },
   1211     { // PreviewColorSpace
   1212         "PreviewColorSpace",
   1213         0xC71Au,
   1214         LONG,
   1215         PREVIEW_IFD,
   1216         1,
   1217         UNDEFINED_ENDIAN
   1218     },
   1219     { // PreviewDateTime
   1220         "PreviewDateTime",
   1221         0xC71Bu,
   1222         ASCII,
   1223         PREVIEW_IFD,
   1224         0,
   1225         UNDEFINED_ENDIAN
   1226     },
   1227     { // RawImageDigest
   1228         "RawImageDigest",
   1229         0xC71Cu,
   1230         BYTE,
   1231         IFD_0,
   1232         16,
   1233         UNDEFINED_ENDIAN
   1234     },
   1235     { // OriginalRawFileDigest
   1236         "OriginalRawFileDigest",
   1237         0xC71Du,
   1238         BYTE,
   1239         IFD_0,
   1240         16,
   1241         UNDEFINED_ENDIAN
   1242     },
   1243     { // SubTileBlockSize
   1244         "SubTileBlockSize",
   1245         0xC71Eu,
   1246         LONG,
   1247         RAW_IFD,
   1248         2,
   1249         UNDEFINED_ENDIAN
   1250     },
   1251     { // RowInterleaveFactor
   1252         "RowInterleaveFactor",
   1253         0xC71Fu,
   1254         LONG,
   1255         RAW_IFD,
   1256         1,
   1257         UNDEFINED_ENDIAN
   1258     },
   1259     { // ProfileLookTableDims
   1260         "ProfileLookTableDims",
   1261         0xC725u,
   1262         LONG,
   1263         PROFILE_IFD,
   1264         3,
   1265         UNDEFINED_ENDIAN
   1266     },
   1267     { // ProfileLookTableData
   1268         "ProfileLookTableData",
   1269         0xC726u,
   1270         FLOAT,
   1271         PROFILE_IFD,
   1272         0,
   1273         UNDEFINED_ENDIAN
   1274     },
   1275     { // OpcodeList1
   1276         "OpcodeList1",
   1277         0xC740u,
   1278         UNDEFINED,
   1279         RAW_IFD,
   1280         0,
   1281         BIG
   1282     },
   1283     { // OpcodeList2
   1284         "OpcodeList2",
   1285         0xC741u,
   1286         UNDEFINED,
   1287         RAW_IFD,
   1288         0,
   1289         BIG
   1290     },
   1291     { // OpcodeList3
   1292         "OpcodeList3",
   1293         0xC74Eu,
   1294         UNDEFINED,
   1295         RAW_IFD,
   1296         0,
   1297         BIG
   1298     },
   1299     { // NoiseProfile
   1300         "NoiseProfile",
   1301         0xC761u,
   1302         DOUBLE,
   1303         RAW_IFD,
   1304         0,
   1305         UNDEFINED_ENDIAN
   1306     },
   1307     { // DefaultUserCrop
   1308         "DefaultUserCrop",
   1309         0xC7B5u,
   1310         RATIONAL,
   1311         RAW_IFD,
   1312         4,
   1313         UNDEFINED_ENDIAN
   1314     },
   1315     { // DefaultBlackRender
   1316         "DefaultBlackRender",
   1317         0xC7A6u,
   1318         LONG,
   1319         PROFILE_IFD,
   1320         1,
   1321         UNDEFINED_ENDIAN
   1322     },
   1323     { // BaselineExposureOffset
   1324         "BaselineExposureOffset",
   1325         0xC7A5u,
   1326         RATIONAL,
   1327         PROFILE_IFD,
   1328         1,
   1329         UNDEFINED_ENDIAN
   1330     },
   1331     { // ProfileLookTableEncoding
   1332         "ProfileLookTableEncoding",
   1333         0xC7A4u,
   1334         LONG,
   1335         PROFILE_IFD,
   1336         1,
   1337         UNDEFINED_ENDIAN
   1338     },
   1339     { // ProfileHueSatMapEncoding
   1340         "ProfileHueSatMapEncoding",
   1341         0xC7A3u,
   1342         LONG,
   1343         PROFILE_IFD,
   1344         1,
   1345         UNDEFINED_ENDIAN
   1346     },
   1347     { // OriginalDefaultFinalSize
   1348         "OriginalDefaultFinalSize",
   1349         0xC791u,
   1350         LONG,
   1351         IFD_0,
   1352         2,
   1353         UNDEFINED_ENDIAN
   1354     },
   1355     { // OriginalBestQualityFinalSize
   1356         "OriginalBestQualityFinalSize",
   1357         0xC792u,
   1358         LONG,
   1359         IFD_0,
   1360         2,
   1361         UNDEFINED_ENDIAN
   1362     },
   1363     { // OriginalDefaultCropSize
   1364         "OriginalDefaultCropSize",
   1365         0xC793u,
   1366         LONG,
   1367         IFD_0,
   1368         2,
   1369         UNDEFINED_ENDIAN
   1370     },
   1371     { // NewRawImageDigest
   1372         "NewRawImageDigest",
   1373         0xC7A7u,
   1374         BYTE,
   1375         IFD_0,
   1376         16,
   1377         UNDEFINED_ENDIAN
   1378     },
   1379     { // RawToPreviewGain
   1380         "RawToPreviewGain",
   1381         0xC7A8u,
   1382         DOUBLE,
   1383         PREVIEW_IFD,
   1384         1,
   1385         UNDEFINED_ENDIAN
   1386     },
   1387 };
   1388 
   1389 } /*namespace img_utils*/
   1390 } /*namespace android*/
   1391 
   1392 #endif /*IMG_UTILS_TIFF_TAG_DEFINITION_H*/
   1393