Solving issue 466: "DNG makerNote"

This commit is contained in:
natureh 510
2013-11-02 02:35:33 +01:00
parent 78bd70ad12
commit 6fabd082d4
14 changed files with 3358 additions and 1629 deletions

View File

@@ -392,173 +392,177 @@ class UTF8BinInterpreter : public Interpreter {
UTF8BinInterpreter utf8BinInterpreter;
const TagAttrib exifAttribs[] = {
{0, 2, 0, 0, 0x0100, "ImageWidth", &stdInterpreter},
{0, 2, 0, 0, 0x0101, "ImageHeight", &stdInterpreter},
{0, 2, 0, 0, 0x0102, "BitsPerSample", &stdInterpreter},
{0, 2, 0, 0, 0x0103, "Compression", &compressionInterpreter},
{0, 1, 0, 0, 0x828d, "CFAPatternDim", &stdInterpreter},
{0, 1, 0, 0, 0x828e, "CFAPattern", &cfaInterpreter},
{0, 1, 0, 0, 0x829A, "ExposureTime", &exposureTimeInterpreter},
{0, 1, 0, 0, 0x829D, "FNumber", &fNumberInterpreter},
{0, 1, 0, 0, 0x8822, "ExposureProgram", &exposureProgramInterpreter},
{0, 1, 0, 0, 0x8824, "SpectralSensitivity", &stdInterpreter},
{0, 1, 0, 0, 0x8827, "ISOSpeedRatings", &stdInterpreter},
{0, 1, 0, 0, 0x8828, "OECF", &stdInterpreter},
{0, 1, 0, 0, 0x9000, "ExifVersion", &stdInterpreter},
{0, 1, 0, 0, 0x9003, "DateTimeOriginal", &stdInterpreter},
{0, 1, 0, 0, 0x9004, "DateTimeDigitized", &stdInterpreter},
{0, 2, 0, 0, 0x9101, "ComponentsConfiguration", &stdInterpreter},
{0, 2, 0, 0, 0x9102, "CompressedBitsPerPixel", &stdInterpreter},
{0, 1, 0, 0, 0x9201, "ShutterSpeedValue", &shutterSpeedInterpreter},
{0, 1, 0, 0, 0x9202, "ApertureValue", &apertureInterpreter},
{0, 1, 0, 0, 0x9203, "BrightnessValue", &stdInterpreter},
{0, 1, 0, 0, 0x9204, "ExposureBiasValue", &exposureBiasInterpreter},
{0, 1, 0, 0, 0x9205, "MaxApertureValue", &apertureInterpreter},
{0, 1, 0, 0, 0x9206, "SubjectDistance", &stdInterpreter},
{0, 1, 0, 0, 0x9207, "MeteringMode", &meteringModeInterpreter},
{0, 1, 0, 0, 0x9208, "LightSource", &lightSourceInterpreter},
{0, 1, 0, 0, 0x9209, "Flash", &flashInterpreter},
{0, 1, 0, 0, 0x920A, "FocalLength", &focalLengthInterpreter},
{0, 1, 0, 0, 0x9214, "SubjectArea", &stdInterpreter},
{0, 0, 0, 0, 0x9216, "TIFFEPSStandardID", &stdInterpreter},
{0, 1, 0, 0, 0x9217, "SensingMethod", &stdInterpreter},
{0, 1, 0, 0, 0x927C, "MakerNote", &stdInterpreter},
{0, 1, 1, 0, 0x9286, "UserComment", &userCommentInterpreter},
{0, 1, 0, 0, 0x9290, "SubSecTime", &stdInterpreter},
{0, 1, 0, 0, 0x9291, "SubSecTimeOriginal", &stdInterpreter},
{0, 1, 0, 0, 0x9292, "SubSecTimeDigitized", &stdInterpreter},
{0, 2, 0, 0, 0xA000, "FlashpixVersion", &stdInterpreter},
{0, 0, 0, 0, 0xA001, "ColorSpace", &colorSpaceInterpreter},
{0, 2, 0, 0, 0xA002, "PixelXDimension", &stdInterpreter},
{0, 2, 0, 0, 0xA003, "PixelYDimension", &stdInterpreter},
{1, 0, 0, 0, 0xA004, "RelatedSoundFile", &stdInterpreter},
{0, 2, 0, iopAttribs, 0xA005, "Interoperability", &stdInterpreter}, // do not enable, as it causes trouble with FUJI files
{0, 1, 0, 0, 0xA20B, "FlashEnergy", &stdInterpreter},
{0, 1, 0, 0, 0xA20C, "SpatialFrequencyResponse", &stdInterpreter},
{0, 1, 0, 0, 0xA20E, "FocalPlaneXResolution", &stdInterpreter},
{0, 1, 0, 0, 0xA20F, "FocalPlaneYResolution", &stdInterpreter},
{0, 1, 0, 0, 0xA210, "FocalPlaneResolutionUnit", &stdInterpreter},
{0, 1, 0, 0, 0xA214, "SubjectLocation", &stdInterpreter},
{0, 1, 0, 0, 0xA215, "ExposureIndex", &stdInterpreter},
{0, 1, 0, 0, 0xA217, "SensingMethod", &stdInterpreter},
{0, 1, 0, 0, 0xA300, "FileSource", &stdInterpreter},
{0, 1, 0, 0, 0xA301, "SceneType", &stdInterpreter},
{0, 0, 0, 0, 0xA302, "CFAPattern", &cfaInterpreter},
{0, 1, 0, 0, 0xA401, "CustomRendered", &stdInterpreter},
{0, 1, 0, 0, 0xA402, "ExposureMode", &exposureModeInterpreter},
{0, 1, 0, 0, 0xA403, "WhiteBalance", &whiteBalanceInterpreter},
{0, 1, 0, 0, 0xA404, "DigitalZoomRatio", &stdInterpreter},
{0, 1, 0, 0, 0xA405, "FocalLengthIn35mmFilm", &stdInterpreter},
{0, 1, 0, 0, 0xA406, "SceneCaptureType", &sceneCaptureInterpreter},
{0, 1, 0, 0, 0xA407, "GainControl", &gainControlInterpreter},
{0, 1, 0, 0, 0xA408, "Contrast", &contrastInterpreter},
{0, 1, 0, 0, 0xA409, "Saturation", &saturationInterpreter},
{0, 1, 0, 0, 0xA40A, "Sharpness", &sharpnessInterpreter},
{0, 1, 0, 0, 0xA40B, "DeviceSettingDescription", &stdInterpreter},
{0, 1, 0, 0, 0xA40C, "SubjectDistanceRange", &stdInterpreter},
{0, 1, 0, 0, 0xA420, "ImageUniqueID", &stdInterpreter},
{0, 1, 0, 0, 0xA431, "SerialNumber", &stdInterpreter},
{0, 1, 0, 0, 0xA432, "LensInfo", &stdInterpreter},
{0, 1, 0, 0, 0xA433, "LensMake", &stdInterpreter},
{0, 1, 0, 0, 0xA434, "LensModel", &stdInterpreter},
{0, 1, 0, 0, 0xA435, "LensSerialNumber", &stdInterpreter},
{0, 1, 0, 0, 0xc630, "DNGLensInfo", &stdInterpreter},
{-1, 0, 0, 0, 0, "", NULL }};
{0, AC_SYSTEM, 0, 0, 0x0100, AUTO, "ImageWidth", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0101, AUTO, "ImageHeight", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0102, AUTO, "BitsPerSample", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0103, AUTO, "Compression", &compressionInterpreter},
{0, AC_WRITE, 0, 0, 0x828d, AUTO, "CFAPatternDim", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x828e, AUTO, "CFAPattern", &cfaInterpreter},
{0, AC_WRITE, 0, 0, 0x829A, AUTO, "ExposureTime", &exposureTimeInterpreter},
{0, AC_WRITE, 0, 0, 0x829D, AUTO, "FNumber", &fNumberInterpreter},
{0, AC_WRITE, 0, 0, 0x8822, AUTO, "ExposureProgram", &exposureProgramInterpreter},
{0, AC_WRITE, 0, 0, 0x8824, AUTO, "SpectralSensitivity", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x8827, AUTO, "ISOSpeedRatings", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x8828, AUTO, "OECF", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9000, AUTO, "ExifVersion", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9003, AUTO, "DateTimeOriginal", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9004, AUTO, "DateTimeDigitized", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x9101, AUTO, "ComponentsConfiguration", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x9102, AUTO, "CompressedBitsPerPixel", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9201, AUTO, "ShutterSpeedValue", &shutterSpeedInterpreter},
{0, AC_WRITE, 0, 0, 0x9202, AUTO, "ApertureValue", &apertureInterpreter},
{0, AC_WRITE, 0, 0, 0x9203, AUTO, "BrightnessValue", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9204, AUTO, "ExposureBiasValue", &exposureBiasInterpreter},
{0, AC_WRITE, 0, 0, 0x9205, AUTO, "MaxApertureValue", &apertureInterpreter},
{0, AC_WRITE, 0, 0, 0x9206, AUTO, "SubjectDistance", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9207, AUTO, "MeteringMode", &meteringModeInterpreter},
{0, AC_WRITE, 0, 0, 0x9208, AUTO, "LightSource", &lightSourceInterpreter},
{0, AC_WRITE, 0, 0, 0x9209, AUTO, "Flash", &flashInterpreter},
{0, AC_WRITE, 0, 0, 0x920A, AUTO, "FocalLength", &focalLengthInterpreter},
{0, AC_WRITE, 0, 0, 0x9214, AUTO, "SubjectArea", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0x9216, AUTO, "TIFFEPSStandardID", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9217, AUTO, "SensingMethod", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x927C, AUTO, "MakerNote", &stdInterpreter},
{0, AC_WRITE, 1, 0, 0x9286, AUTO, "UserComment", &userCommentInterpreter},
{0, AC_WRITE, 0, 0, 0x9290, AUTO, "SubSecTime", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9291, AUTO, "SubSecTimeOriginal", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9292, AUTO, "SubSecTimeDigitized", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0xA000, AUTO, "FlashpixVersion", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0xA001, AUTO, "ColorSpace", &colorSpaceInterpreter},
{0, AC_SYSTEM, 0, 0, 0xA002, AUTO, "PixelXDimension", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0xA003, AUTO, "PixelYDimension", &stdInterpreter},
{1, AC_DONTWRITE, 0, 0, 0xA004, AUTO, "RelatedSoundFile", &stdInterpreter},
{0, AC_SYSTEM, 0, iopAttribs, 0xA005, AUTO, "Interoperability", &stdInterpreter}, // do not enable, as it causes trouble with FUJI files
{0, AC_WRITE, 0, 0, 0xA20B, AUTO, "FlashEnergy", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA20C, AUTO, "SpatialFrequencyResponse", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA20E, AUTO, "FocalPlaneXResolution", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA20F, AUTO, "FocalPlaneYResolution", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA210, AUTO, "FocalPlaneResolutionUnit", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA214, AUTO, "SubjectLocation", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA215, AUTO, "ExposureIndex", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA217, AUTO, "SensingMethod", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA300, AUTO, "FileSource", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA301, AUTO, "SceneType", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0xA302, AUTO, "CFAPattern", &cfaInterpreter},
{0, AC_WRITE, 0, 0, 0xA401, AUTO, "CustomRendered", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA402, AUTO, "ExposureMode", &exposureModeInterpreter},
{0, AC_WRITE, 0, 0, 0xA403, AUTO, "WhiteBalance", &whiteBalanceInterpreter},
{0, AC_WRITE, 0, 0, 0xA404, AUTO, "DigitalZoomRatio", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA405, AUTO, "FocalLengthIn35mmFilm", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA406, AUTO, "SceneCaptureType", &sceneCaptureInterpreter},
{0, AC_WRITE, 0, 0, 0xA407, AUTO, "GainControl", &gainControlInterpreter},
{0, AC_WRITE, 0, 0, 0xA408, AUTO, "Contrast", &contrastInterpreter},
{0, AC_WRITE, 0, 0, 0xA409, AUTO, "Saturation", &saturationInterpreter},
{0, AC_WRITE, 0, 0, 0xA40A, AUTO, "Sharpness", &sharpnessInterpreter},
{0, AC_WRITE, 0, 0, 0xA40B, AUTO, "DeviceSettingDescription", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA40C, AUTO, "SubjectDistanceRange", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA420, AUTO, "ImageUniqueID", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA431, AUTO, "SerialNumber", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA432, AUTO, "LensInfo", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA433, AUTO, "LensMake", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA434, AUTO, "LensModel", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xA435, AUTO, "LensSerialNumber", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xc630, AUTO, "DNGLensInfo", &stdInterpreter},
{-1, AC_DONTWRITE, 0, 0, 0, AUTO, "", NULL }};
const TagAttrib gpsAttribs[] = {
{0, 1, 0, 0, 0x0000, "GPSVersionID", &stdInterpreter},
{0, 1, 0, 0, 0x0001, "GPSLatitudeRef", &stdInterpreter},
{0, 1, 0, 0, 0x0002, "GPSLatitude", &stdInterpreter},
{0, 1, 0, 0, 0x0003, "GPSLongitudeRef", &stdInterpreter},
{0, 1, 0, 0, 0x0004, "GPSLongitude", &stdInterpreter},
{0, 1, 0, 0, 0x0005, "GPSAltitudeRef", &stdInterpreter},
{0, 1, 0, 0, 0x0006, "GPSAltitude", &stdInterpreter},
{0, 1, 0, 0, 0x0007, "GPSTimeStamp", &stdInterpreter},
{0, 1, 0, 0, 0x0008, "GPSSatelites", &stdInterpreter},
{0, 1, 0, 0, 0x0009, "GPSStatus", &stdInterpreter},
{0, 1, 0, 0, 0x000a, "GPSMeasureMode", &stdInterpreter},
{0, 1, 0, 0, 0x000b, "GPSDOP", &stdInterpreter},
{0, 1, 0, 0, 0x000c, "GPSSpeedRef", &stdInterpreter},
{0, 1, 0, 0, 0x000d, "GPSSpeed", &stdInterpreter},
{0, 1, 0, 0, 0x000e, "GPSTrackRef", &stdInterpreter},
{0, 1, 0, 0, 0x000f, "GPSTrack", &stdInterpreter},
{0, 1, 0, 0, 0x0010, "GPSImgDirectionRef", &stdInterpreter},
{0, 1, 0, 0, 0x0011, "GPSImgDirection", &stdInterpreter},
{0, 1, 0, 0, 0x0012, "GPSMapDatum", &stdInterpreter},
{0, 1, 0, 0, 0x0013, "GPSDestLatitudeRef", &stdInterpreter},
{0, 1, 0, 0, 0x0014, "GPSDestLatitude", &stdInterpreter},
{0, 1, 0, 0, 0x0015, "GPSDestLongitudeRef", &stdInterpreter},
{0, 1, 0, 0, 0x0016, "GPSDestLongitude", &stdInterpreter},
{0, 1, 0, 0, 0x0017, "GPSDestBearingRef", &stdInterpreter},
{0, 1, 0, 0, 0x0018, "GPSDestBearing", &stdInterpreter},
{0, 1, 0, 0, 0x0019, "GPSDestDistanceRef", &stdInterpreter},
{0, 1, 0, 0, 0x001a, "GPSDestDistance", &stdInterpreter},
{0, 1, 0, 0, 0x001b, "GPSProcessingMethod", &stdInterpreter},
{0, 1, 0, 0, 0x001c, "GPSAreaInformation", &stdInterpreter},
{0, 1, 0, 0, 0x001d, "GPSDateStamp", &stdInterpreter},
{0, 1, 0, 0, 0x001e, "GPSDifferential", &stdInterpreter},
{-1, 0, 0, 0, 0, "", NULL }};
{0, AC_WRITE, 0, 0, 0x0000, AUTO, "GPSVersionID", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0001, AUTO, "GPSLatitudeRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0002, AUTO, "GPSLatitude", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0003, AUTO, "GPSLongitudeRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0004, AUTO, "GPSLongitude", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0005, AUTO, "GPSAltitudeRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0006, AUTO, "GPSAltitude", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0007, AUTO, "GPSTimeStamp", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0008, AUTO, "GPSSatelites", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0009, AUTO, "GPSStatus", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x000a, AUTO, "GPSMeasureMode", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x000b, AUTO, "GPSDOP", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x000c, AUTO, "GPSSpeedRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x000d, AUTO, "GPSSpeed", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x000e, AUTO, "GPSTrackRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x000f, AUTO, "GPSTrack", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0010, AUTO, "GPSImgDirectionRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0011, AUTO, "GPSImgDirection", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0012, AUTO, "GPSMapDatum", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0013, AUTO, "GPSDestLatitudeRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0014, AUTO, "GPSDestLatitude", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0015, AUTO, "GPSDestLongitudeRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0016, AUTO, "GPSDestLongitude", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0017, AUTO, "GPSDestBearingRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0018, AUTO, "GPSDestBearing", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0019, AUTO, "GPSDestDistanceRef", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x001a, AUTO, "GPSDestDistance", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x001b, AUTO, "GPSProcessingMethod", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x001c, AUTO, "GPSAreaInformation", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x001d, AUTO, "GPSDateStamp", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x001e, AUTO, "GPSDifferential", &stdInterpreter},
{-1, AC_DONTWRITE, 0, 0, 0, AUTO, "", NULL }};
const TagAttrib iopAttribs[] = {
{0, 1, 0, 0, 0x0001, "InteroperabilityIndex", &stdInterpreter},
{0, 1, 0, 0, 0x0002, "InteroperabilityVersion", &stdInterpreter},
{-1, 0, 0, 0, 0, "", NULL }};
{0, AC_WRITE, 0, 0, 0x0001, AUTO, "InteroperabilityIndex", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0002, AUTO, "InteroperabilityVersion", &stdInterpreter},
{-1, AC_DONTWRITE, 0, 0, 0, AUTO, "", NULL }};
const TagAttrib ifdAttribs[] = {
{0, 2, 0, 0, 0x0017, "PanaISO", &stdInterpreter},
{0, 2, 0, 0, 0x0100, "ImageWidth", &stdInterpreter},
{0, 2, 0, 0, 0x0101, "ImageHeight", &stdInterpreter},
{0, 2, 0, 0, 0x0102, "BitsPerSample", &stdInterpreter},
{0, 2, 0, 0, 0x0103, "Compression", &compressionInterpreter},
{0, 2, 0, 0, 0x0106, "PhotometricInterpretation", &photometricInterpreter},
{0, 1, 1, 0, 0x010E, "ImageDescription", &stdInterpreter},
{0, 1, 0, 0, 0x010F, "Make", &stdInterpreter},
{0, 1, 0, 0, 0x0110, "Model", &stdInterpreter},
{1, 0, 0, 0, 0x0111, "StripOffsets", &stdInterpreter},
{0, 2, 0, 0, 0x0112, "Orientation", &orientationInterpreter},
{0, 2, 0, 0, 0x0115, "SamplesPerPixel", &stdInterpreter},
{1, 0, 0, 0, 0x0116, "RowsPerStrip", &stdInterpreter},
{1, 0, 0, 0, 0x0117, "StripByteCounts", &stdInterpreter},
{0, 2, 0, 0, 0x011A, "XResolution", &stdInterpreter},
{0, 2, 0, 0, 0x011B, "YResolution", &stdInterpreter},
{0, 2, 0, 0, 0x011C, "PlanarConfiguration", &planarConfigInterpreter},
{0, 2, 0, 0, 0x0128, "ResolutionUnit", &unitsInterpreter},
{0, 2, 0, 0, 0x012D, "TransferFunction", &stdInterpreter},
{0, 2, 0, 0, 0x0131, "Software", &stdInterpreter},
{0, 1, 0, 0, 0x0132, "DateTime", &stdInterpreter},
{0, 1, 1, 0, 0x013B, "Artist", &stdInterpreter},
{0, 2, 0, 0, 0x013E, "WhitePoint", &stdInterpreter},
{0, 2, 0, 0, 0x013F, "PriomaryChromaticities", &stdInterpreter},
{0, 1, 0, ifdAttribs, 0x014A, "SubIFD", &stdInterpreter},
{0, 2, 0, 0, 0x0201, "JPEGInterchangeFormat", &stdInterpreter},
{0, 2, 0, 0, 0x0202, "JPEGInterchangeFormatLength", &stdInterpreter},
{0, 2, 0, 0, 0x0211, "YCbCrCoefficients", &stdInterpreter},
{0, 2, 0, 0, 0x0212, "YCbCrSubSampling", &stdInterpreter},
{0, 2, 0, 0, 0x0213, "YCbCrPositioning", &stdInterpreter},
{0, 2, 0, 0, 0x0214, "ReferenceBlackWhite", &stdInterpreter},
{0, 2, 0, 0, 0x02bc, "ApplicationNotes", &utf8BinInterpreter}, // XMP
{0, 1, 0, 0, 0x4746, "Rating",&stdInterpreter},
{0, 1, 0, 0, 0x4749, "RatingPercent",&stdInterpreter},
{0, 1, 0, 0, 0x828d, "CFAPatternDim", &stdInterpreter},
{0, 1, 0, 0, 0x828e, "CFAPattern", &cfaInterpreter},
{0, 1, 1, 0, 0x8298, "Copyright", &stdInterpreter},
{0, 0, 0, 0, 0x8606, "LeafData", &stdInterpreter}, // is actually a subdir, but a proprietary format
{0, 1, 0, exifAttribs, 0x8769, "Exif", &stdInterpreter},
{0, 2, 0, 0, 0x8773, "ICCProfile", &stdInterpreter},
{0, 2, 0, 0, 0x83BB, "IPTCData", &stdInterpreter},
{0, 1, 0, gpsAttribs, 0x8825, "GPSInfo", &stdInterpreter},
{0, 1, 0, 0, 0x9003, "DateTimeOriginal", &stdInterpreter},
{0, 1, 0, 0, 0x9004, "DateTimeDigitized", &stdInterpreter},
{0, 1, 0, 0, 0x9211, "ImageNumber", &stdInterpreter},
{0, 1, 0, iopAttribs, 0xA005, "Interoperability", &stdInterpreter},
{0, 0, 0, 0, 0xC4A5, "PrintIMInformation", &stdInterpreter},
{0, 1, 0, 0, 0xc62f, "CameraSerialNumber", &stdInterpreter},
{0, 2, 0, 0, 0xc630, "DNGLensInfo", &stdInterpreter},
{0, 1, 0, 0, 0xc65d, "RawDataUniqueID", &stdInterpreter},
{0, 0, 0, 0, 0xc761, "NoiseProfile", &stdInterpreter},
{0, 2, 0, 0, 0x00fe, "NewSubFileType", &stdInterpreter},
{-1, 0, 0, 0, 0, "", NULL}};
{0, AC_SYSTEM, 0, 0, 0x0017, AUTO, "PanaISO", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0100, AUTO, "ImageWidth", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0101, AUTO, "ImageHeight", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0102, AUTO, "BitsPerSample", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0103, AUTO, "Compression", &compressionInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0106, AUTO, "PhotometricInterpretation", &photometricInterpreter},
{0, AC_WRITE, 1, 0, 0x010E, AUTO, "ImageDescription", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x010F, AUTO, "Make", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0110, AUTO, "Model", &stdInterpreter},
{1, AC_DONTWRITE, 0, 0, 0x0111, AUTO, "StripOffsets", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0112, AUTO, "Orientation", &orientationInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0115, AUTO, "SamplesPerPixel", &stdInterpreter},
{1, AC_DONTWRITE, 0, 0, 0x0116, AUTO, "RowsPerStrip", &stdInterpreter},
{1, AC_DONTWRITE, 0, 0, 0x0117, AUTO, "StripByteCounts", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x011A, AUTO, "XResolution", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x011B, AUTO, "YResolution", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x011C, AUTO, "PlanarConfiguration", &planarConfigInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0128, AUTO, "ResolutionUnit", &unitsInterpreter},
{0, AC_SYSTEM, 0, 0, 0x012D, AUTO, "TransferFunction", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0131, AUTO, "Software", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x0132, AUTO, "DateTime", &stdInterpreter},
{0, AC_WRITE, 1, 0, 0x013B, AUTO, "Artist", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x013E, AUTO, "WhitePoint", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x013F, AUTO, "PriomaryChromaticities", &stdInterpreter},
{0, AC_WRITE, 0, ifdAttribs, 0x014A, AUTO, "SubIFD", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0201, AUTO, "JPEGInterchangeFormat", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0202, AUTO, "JPEGInterchangeFormatLength", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0211, AUTO, "YCbCrCoefficients", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0212, AUTO, "YCbCrSubSampling", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0213, AUTO, "YCbCrPositioning", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x0214, AUTO, "ReferenceBlackWhite", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x02bc, AUTO, "ApplicationNotes", &utf8BinInterpreter}, // XMP
{0, AC_WRITE, 0, 0, 0x4746, AUTO, "Rating",&stdInterpreter},
{0, AC_WRITE, 0, 0, 0x4749, AUTO, "RatingPercent",&stdInterpreter},
{0, AC_WRITE, 0, 0, 0x828d, AUTO, "CFAPatternDim", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x828e, AUTO, "CFAPattern", &cfaInterpreter},
{0, AC_WRITE, 1, 0, 0x8298, AUTO, "Copyright", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0x8606, AUTO, "LeafData", &stdInterpreter}, // is actually a subdir, but a proprietary format
{0, AC_WRITE, 0, exifAttribs, 0x8769, AUTO, "Exif", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x8773, AUTO, "ICCProfile", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x83BB, AUTO, "IPTCData", &stdInterpreter},
{0, AC_WRITE, 0, gpsAttribs, 0x8825, AUTO, "GPSInfo", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9003, AUTO, "DateTimeOriginal", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9004, AUTO, "DateTimeDigitized", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0x9211, AUTO, "ImageNumber", &stdInterpreter},
{0, AC_WRITE, 0, iopAttribs, 0xA005, AUTO, "Interoperability", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0xC4A5, AUTO, "PrintIMInformation", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0xC612, AUTO, "DNGVersion", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0xC613, AUTO, "DNGBackwardVersion", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xC614, AUTO, "UniqueCameraModel", &stdInterpreter},
{0, AC_WRITE, 0, 0, 0xc62f, AUTO, "CameraSerialNumber", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0xc630, AUTO, "DNGLensInfo", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0xC634, AUTO, "MakerNote", &stdInterpreter}, //DNGPrivateData
{0, AC_WRITE, 0, 0, 0xc65d, AUTO, "RawDataUniqueID", &stdInterpreter},
{0, AC_DONTWRITE, 0, 0, 0xc761, AUTO, "NoiseProfile", &stdInterpreter},
{0, AC_SYSTEM, 0, 0, 0x00fe, AUTO, "NewSubFileType", &stdInterpreter},
{-1, AC_DONTWRITE, 0, 0, 0, AUTO, "", NULL}};
}
#endif