diff options
author | Hubert Figuière <hub@figuiere.net> | 2020-07-25 21:51:25 -0400 |
---|---|---|
committer | Hubert Figuière <hub@figuiere.net> | 2020-07-26 20:27:56 -0400 |
commit | fdbcc20c78eef71d3688926c3572d3db64e84883 (patch) | |
tree | b461ccf51a1897b41dcfe1df1cf0886109ed1ef4 /tools | |
parent | 73b3ea77e93ab47b269871d0300dbf27b0681b17 (diff) |
exif: Move the tag name mapping to the IDFDir
- Added the Nikon2 tags
- Added the Minolta tags
- The iterator return the IDFDir with the entry
- exifdump now calls the new API
Diffstat (limited to 'tools')
-rw-r--r-- | tools/Makefile.am | 7 | ||||
-rwxr-xr-x | tools/exif-tags.pl | 53 | ||||
-rw-r--r-- | tools/exif_tags.cpp | 1329 | ||||
-rw-r--r-- | tools/exif_tags.hpp | 36 | ||||
-rw-r--r-- | tools/exifdump.cpp | 59 |
5 files changed, 8 insertions, 1476 deletions
diff --git a/tools/Makefile.am b/tools/Makefile.am index b021a41..87468be 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -7,10 +7,5 @@ noinst_PROGRAMS = ordiag exifdump ordiag_SOURCES = ordiag.cpp dumputils.cpp ordiag_LDADD = $(top_builddir)/lib/libopenraw.la -ljpeg -exifdump_SOURCES = exifdump.cpp dumputils.cpp exif_tags.cpp exif_tags.hpp +exifdump_SOURCES = exifdump.cpp dumputils.cpp exifdump_LDADD = $(top_builddir)/lib/libopenraw.la -ljpeg - -EXTRA_DIST = exif-tags.pl - -update_tags: - $(srcdir)/exif-tags.pl > $(srcdir)/exif_tags.cpp diff --git a/tools/exif-tags.pl b/tools/exif-tags.pl deleted file mode 100755 index 7066d98..0000000 --- a/tools/exif-tags.pl +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/perl - - -use Image::ExifTool::Exif; -use Image::ExifTool::Canon; -use Image::ExifTool::FujiFilm; -use Image::ExifTool::Nikon; -use Image::ExifTool::Olympus; -use Image::ExifTool::Panasonic; -use Image::ExifTool::PanasonicRaw; -use Image::ExifTool::Pentax; -use Image::ExifTool::Sony; - -# -# Output the tag table -# -sub output_table($$) { - my ($table, $table_name) = @_; - my @keys = grep { /^[\d]*$/ } keys(%$table); - - printf "\n\nstd::map<uint32_t, const char*> %s = {\n", $table_name; - foreach $tag (sort { $a <=> $b } @keys) { - - my $value = %$table{$tag}; - - my $name; - if (ref $value eq ref {}) { - $name = %$value{'Name'}; - } elsif (ref $value eq ref []) { - $item = @$value[0]; - $name = %$item{'Name'}; - } else { - $name = $value; - } - printf " { 0x%x, \"%s\" },\n", $tag, $name; - } - print "};"; -} - -printf "// AUTOGENERATED with ExifTool %s (%s)\n\n", $Image::ExifTool::VERSION, $Image::ExifTool::RELEASE; -print "#include <stdint.h>\n"; -print "#include <map>\n"; - -output_table(\%Image::ExifTool::Exif::Main, "exif_tag_names"); -output_table(\%Image::ExifTool::Canon::Main, "mnote_canon_tag_names"); -output_table(\%Image::ExifTool::FujiFilm::Main, "mnote_fujifilm_tag_names"); -output_table(\%Image::ExifTool::Nikon::Main, "mnote_nikon_tag_names"); -output_table(\%Image::ExifTool::Olympus::Main, "mnote_olympus_tag_names"); -output_table(\%Image::ExifTool::Panasonic::Main, "mnote_panasonic_tag_names"); -output_table(\%Image::ExifTool::Pentax::Main, "mnote_pentax_tag_names"); -output_table(\%Image::ExifTool::Sony::Main, "mnote_sony_tag_names"); - -output_table(\%Image::ExifTool::PanasonicRaw::Main, "raw_panasonic_tag_names"); diff --git a/tools/exif_tags.cpp b/tools/exif_tags.cpp deleted file mode 100644 index abdb44a..0000000 --- a/tools/exif_tags.cpp +++ /dev/null @@ -1,1329 +0,0 @@ -// AUTOGENERATED with ExifTool 12.00 () - -#include <stdint.h> -#include <map> - - -std::map<uint32_t, const char*> exif_tag_names = { - { 0x1, "InteropIndex" }, - { 0x2, "InteropVersion" }, - { 0xb, "ProcessingSoftware" }, - { 0xfe, "SubfileType" }, - { 0xff, "OldSubfileType" }, - { 0x100, "ImageWidth" }, - { 0x101, "ImageHeight" }, - { 0x102, "BitsPerSample" }, - { 0x103, "Compression" }, - { 0x106, "PhotometricInterpretation" }, - { 0x107, "Thresholding" }, - { 0x108, "CellWidth" }, - { 0x109, "CellLength" }, - { 0x10a, "FillOrder" }, - { 0x10d, "DocumentName" }, - { 0x10e, "ImageDescription" }, - { 0x10f, "Make" }, - { 0x110, "Model" }, - { 0x111, "StripOffsets" }, - { 0x112, "Orientation" }, - { 0x115, "SamplesPerPixel" }, - { 0x116, "RowsPerStrip" }, - { 0x117, "StripByteCounts" }, - { 0x118, "MinSampleValue" }, - { 0x119, "MaxSampleValue" }, - { 0x11a, "XResolution" }, - { 0x11b, "YResolution" }, - { 0x11c, "PlanarConfiguration" }, - { 0x11d, "PageName" }, - { 0x11e, "XPosition" }, - { 0x11f, "YPosition" }, - { 0x120, "FreeOffsets" }, - { 0x121, "FreeByteCounts" }, - { 0x122, "GrayResponseUnit" }, - { 0x123, "GrayResponseCurve" }, - { 0x124, "T4Options" }, - { 0x125, "T6Options" }, - { 0x128, "ResolutionUnit" }, - { 0x129, "PageNumber" }, - { 0x12c, "ColorResponseUnit" }, - { 0x12d, "TransferFunction" }, - { 0x131, "Software" }, - { 0x132, "ModifyDate" }, - { 0x13b, "Artist" }, - { 0x13c, "HostComputer" }, - { 0x13d, "Predictor" }, - { 0x13e, "WhitePoint" }, - { 0x13f, "PrimaryChromaticities" }, - { 0x140, "ColorMap" }, - { 0x141, "HalftoneHints" }, - { 0x142, "TileWidth" }, - { 0x143, "TileLength" }, - { 0x144, "TileOffsets" }, - { 0x145, "TileByteCounts" }, - { 0x146, "BadFaxLines" }, - { 0x147, "CleanFaxData" }, - { 0x148, "ConsecutiveBadFaxLines" }, - { 0x14a, "SubIFD" }, - { 0x14c, "InkSet" }, - { 0x14d, "InkNames" }, - { 0x14e, "NumberofInks" }, - { 0x150, "DotRange" }, - { 0x151, "TargetPrinter" }, - { 0x152, "ExtraSamples" }, - { 0x153, "SampleFormat" }, - { 0x154, "SMinSampleValue" }, - { 0x155, "SMaxSampleValue" }, - { 0x156, "TransferRange" }, - { 0x157, "ClipPath" }, - { 0x158, "XClipPathUnits" }, - { 0x159, "YClipPathUnits" }, - { 0x15a, "Indexed" }, - { 0x15b, "JPEGTables" }, - { 0x15f, "OPIProxy" }, - { 0x190, "GlobalParametersIFD" }, - { 0x191, "ProfileType" }, - { 0x192, "FaxProfile" }, - { 0x193, "CodingMethods" }, - { 0x194, "VersionYear" }, - { 0x195, "ModeNumber" }, - { 0x1b1, "Decode" }, - { 0x1b2, "DefaultImageColor" }, - { 0x1b3, "T82Options" }, - { 0x1b5, "JPEGTables" }, - { 0x200, "JPEGProc" }, - { 0x201, "ThumbnailOffset" }, - { 0x202, "ThumbnailLength" }, - { 0x203, "JPEGRestartInterval" }, - { 0x205, "JPEGLosslessPredictors" }, - { 0x206, "JPEGPointTransforms" }, - { 0x207, "JPEGQTables" }, - { 0x208, "JPEGDCTables" }, - { 0x209, "JPEGACTables" }, - { 0x211, "YCbCrCoefficients" }, - { 0x212, "YCbCrSubSampling" }, - { 0x213, "YCbCrPositioning" }, - { 0x214, "ReferenceBlackWhite" }, - { 0x22f, "StripRowCounts" }, - { 0x2bc, "ApplicationNotes" }, - { 0x3e7, "USPTOMiscellaneous" }, - { 0x1000, "RelatedImageFileFormat" }, - { 0x1001, "RelatedImageWidth" }, - { 0x1002, "RelatedImageHeight" }, - { 0x4746, "Rating" }, - { 0x4747, "XP_DIP_XML" }, - { 0x4748, "StitchInfo" }, - { 0x4749, "RatingPercent" }, - { 0x7000, "SonyRawFileType" }, - { 0x7010, "SonyToneCurve" }, - { 0x7031, "VignettingCorrection" }, - { 0x7032, "VignettingCorrParams" }, - { 0x7034, "ChromaticAberrationCorrection" }, - { 0x7035, "ChromaticAberrationCorrParams" }, - { 0x7036, "DistortionCorrection" }, - { 0x7037, "DistortionCorrParams" }, - { 0x74c7, "SonyCropTopLeft" }, - { 0x74c8, "SonyCropSize" }, - { 0x800d, "ImageID" }, - { 0x80a3, "WangTag1" }, - { 0x80a4, "WangAnnotation" }, - { 0x80a5, "WangTag3" }, - { 0x80a6, "WangTag4" }, - { 0x80b9, "ImageReferencePoints" }, - { 0x80ba, "RegionXformTackPoint" }, - { 0x80bb, "WarpQuadrilateral" }, - { 0x80bc, "AffineTransformMat" }, - { 0x80e3, "Matteing" }, - { 0x80e4, "DataType" }, - { 0x80e5, "ImageDepth" }, - { 0x80e6, "TileDepth" }, - { 0x8214, "ImageFullWidth" }, - { 0x8215, "ImageFullHeight" }, - { 0x8216, "TextureFormat" }, - { 0x8217, "WrapModes" }, - { 0x8218, "FovCot" }, - { 0x8219, "MatrixWorldToScreen" }, - { 0x821a, "MatrixWorldToCamera" }, - { 0x827d, "Model2" }, - { 0x828d, "CFARepeatPatternDim" }, - { 0x828e, "CFAPattern2" }, - { 0x828f, "BatteryLevel" }, - { 0x8290, "KodakIFD" }, - { 0x8298, "Copyright" }, - { 0x829a, "ExposureTime" }, - { 0x829d, "FNumber" }, - { 0x82a5, "MDFileTag" }, - { 0x82a6, "MDScalePixel" }, - { 0x82a7, "MDColorTable" }, - { 0x82a8, "MDLabName" }, - { 0x82a9, "MDSampleInfo" }, - { 0x82aa, "MDPrepDate" }, - { 0x82ab, "MDPrepTime" }, - { 0x82ac, "MDFileUnits" }, - { 0x830e, "PixelScale" }, - { 0x8335, "AdventScale" }, - { 0x8336, "AdventRevision" }, - { 0x835c, "UIC1Tag" }, - { 0x835d, "UIC2Tag" }, - { 0x835e, "UIC3Tag" }, - { 0x835f, "UIC4Tag" }, - { 0x83bb, "IPTC-NAA" }, - { 0x847e, "IntergraphPacketData" }, - { 0x847f, "IntergraphFlagRegisters" }, - { 0x8480, "IntergraphMatrix" }, - { 0x8481, "INGRReserved" }, - { 0x8482, "ModelTiePoint" }, - { 0x84e0, "Site" }, - { 0x84e1, "ColorSequence" }, - { 0x84e2, "IT8Header" }, - { 0x84e3, "RasterPadding" }, - { 0x84e4, "BitsPerRunLength" }, - { 0x84e5, "BitsPerExtendedRunLength" }, - { 0x84e6, "ColorTable" }, - { 0x84e7, "ImageColorIndicator" }, - { 0x84e8, "BackgroundColorIndicator" }, - { 0x84e9, "ImageColorValue" }, - { 0x84ea, "BackgroundColorValue" }, - { 0x84eb, "PixelIntensityRange" }, - { 0x84ec, "TransparencyIndicator" }, - { 0x84ed, "ColorCharacterization" }, - { 0x84ee, "HCUsage" }, - { 0x84ef, "TrapIndicator" }, - { 0x84f0, "CMYKEquivalent" }, - { 0x8546, "SEMInfo" }, - { 0x8568, "AFCP_IPTC" }, - { 0x85b8, "PixelMagicJBIGOptions" }, - { 0x85d7, "JPLCartoIFD" }, - { 0x85d8, "ModelTransform" }, - { 0x8602, "WB_GRGBLevels" }, - { 0x8606, "LeafData" }, - { 0x8649, "PhotoshopSettings" }, - { 0x8769, "ExifOffset" }, - { 0x8773, "ICC_Profile" }, - { 0x877f, "TIFF_FXExtensions" }, - { 0x8780, "MultiProfiles" }, - { 0x8781, "SharedData" }, - { 0x8782, "T88Options" }, - { 0x87ac, "ImageLayer" }, - { 0x87af, "GeoTiffDirectory" }, - { 0x87b0, "GeoTiffDoubleParams" }, - { 0x87b1, "GeoTiffAsciiParams" }, - { 0x87be, "JBIGOptions" }, - { 0x8822, "ExposureProgram" }, - { 0x8824, "SpectralSensitivity" }, - { 0x8825, "GPSInfo" }, - { 0x8827, "ISO" }, - { 0x8828, "Opto-ElectricConvFactor" }, - { 0x8829, "Interlace" }, - { 0x882a, "TimeZoneOffset" }, - { 0x882b, "SelfTimerMode" }, - { 0x8830, "SensitivityType" }, - { 0x8831, "StandardOutputSensitivity" }, - { 0x8832, "RecommendedExposureIndex" }, - { 0x8833, "ISOSpeed" }, - { 0x8834, "ISOSpeedLatitudeyyy" }, - { 0x8835, "ISOSpeedLatitudezzz" }, - { 0x885c, "FaxRecvParams" }, - { 0x885d, "FaxSubAddress" }, - { 0x885e, "FaxRecvTime" }, - { 0x8871, "FedexEDR" }, - { 0x888a, "LeafSubIFD" }, - { 0x9000, "ExifVersion" }, - { 0x9003, "DateTimeOriginal" }, - { 0x9004, "CreateDate" }, - { 0x9009, "GooglePlusUploadCode" }, - { 0x9010, "OffsetTime" }, - { 0x9011, "OffsetTimeOriginal" }, - { 0x9012, "OffsetTimeDigitized" }, - { 0x9101, "ComponentsConfiguration" }, - { 0x9102, "CompressedBitsPerPixel" }, - { 0x9201, "ShutterSpeedValue" }, - { 0x9202, "ApertureValue" }, - { 0x9203, "BrightnessValue" }, - { 0x9204, "ExposureCompensation" }, - { 0x9205, "MaxApertureValue" }, - { 0x9206, "SubjectDistance" }, - { 0x9207, "MeteringMode" }, - { 0x9208, "LightSource" }, - { 0x9209, "Flash" }, - { 0x920a, "FocalLength" }, - { 0x920b, "FlashEnergy" }, - { 0x920c, "SpatialFrequencyResponse" }, - { 0x920d, "Noise" }, - { 0x920e, "FocalPlaneXResolution" }, - { 0x920f, "FocalPlaneYResolution" }, - { 0x9210, "FocalPlaneResolutionUnit" }, - { 0x9211, "ImageNumber" }, - { 0x9212, "SecurityClassification" }, - { 0x9213, "ImageHistory" }, - { 0x9214, "SubjectArea" }, - { 0x9215, "ExposureIndex" }, - { 0x9216, "TIFF-EPStandardID" }, - { 0x9217, "SensingMethod" }, - { 0x923a, "CIP3DataFile" }, - { 0x923b, "CIP3Sheet" }, - { 0x923c, "CIP3Side" }, - { 0x923f, "StoNits" }, - { 0x927c, "MakerNoteApple" }, - { 0x9286, "UserComment" }, - { 0x9290, "SubSecTime" }, - { 0x9291, "SubSecTimeOriginal" }, - { 0x9292, "SubSecTimeDigitized" }, - { 0x932f, "MSDocumentText" }, - { 0x9330, "MSPropertySetStorage" }, - { 0x9331, "MSDocumentTextPosition" }, - { 0x935c, "ImageSourceData" }, - { 0x9400, "AmbientTemperature" }, - { 0x9401, "Humidity" }, - { 0x9402, "Pressure" }, - { 0x9403, "WaterDepth" }, - { 0x9404, "Acceleration" }, - { 0x9405, "CameraElevationAngle" }, - { 0x9c9b, "XPTitle" }, - { 0x9c9c, "XPComment" }, - { 0x9c9d, "XPAuthor" }, - { 0x9c9e, "XPKeywords" }, - { 0x9c9f, "XPSubject" }, - { 0xa000, "FlashpixVersion" }, - { 0xa001, "ColorSpace" }, - { 0xa002, "ExifImageWidth" }, - { 0xa003, "ExifImageHeight" }, - { 0xa004, "RelatedSoundFile" }, - { 0xa005, "InteropOffset" }, - { 0xa010, "SamsungRawPointersOffset" }, - { 0xa011, "SamsungRawPointersLength" }, - { 0xa101, "SamsungRawByteOrder" }, - { 0xa102, "SamsungRawUnknown" }, - { 0xa20b, "FlashEnergy" }, - { 0xa20c, "SpatialFrequencyResponse" }, - { 0xa20d, "Noise" }, - { 0xa20e, "FocalPlaneXResolution" }, - { 0xa20f, "FocalPlaneYResolution" }, - { 0xa210, "FocalPlaneResolutionUnit" }, - { 0xa211, "ImageNumber" }, - { 0xa212, "SecurityClassification" }, - { 0xa213, "ImageHistory" }, - { 0xa214, "SubjectLocation" }, - { 0xa215, "ExposureIndex" }, - { 0xa216, "TIFF-EPStandardID" }, - { 0xa217, "SensingMethod" }, - { 0xa300, "FileSource" }, - { 0xa301, "SceneType" }, - { 0xa302, "CFAPattern" }, - { 0xa401, "CustomRendered" }, - { 0xa402, "ExposureMode" }, - { 0xa403, "WhiteBalance" }, - { 0xa404, "DigitalZoomRatio" }, - { 0xa405, "FocalLengthIn35mmFormat" }, - { 0xa406, "SceneCaptureType" }, - { 0xa407, "GainControl" }, - { 0xa408, "Contrast" }, - { 0xa409, "Saturation" }, - { 0xa40a, "Sharpness" }, - { 0xa40b, "DeviceSettingDescription" }, - { 0xa40c, "SubjectDistanceRange" }, - { 0xa420, "ImageUniqueID" }, - { 0xa430, "OwnerName" }, - { 0xa431, "SerialNumber" }, - { 0xa432, "LensInfo" }, - { 0xa433, "LensMake" }, - { 0xa434, "LensModel" }, - { 0xa435, "LensSerialNumber" }, - { 0xa460, "CompositeImage" }, - { 0xa461, "CompositeImageCount" }, - { 0xa462, "CompositeImageExposureTimes" }, - { 0xa480, "GDALMetadata" }, - { 0xa481, "GDALNoData" }, - { 0xa500, "Gamma" }, - { 0xafc0, "ExpandSoftware" }, - { 0xafc1, "ExpandLens" }, - { 0xafc2, "ExpandFilm" }, - { 0xafc3, "ExpandFilterLens" }, - { 0xafc4, "ExpandScanner" }, - { 0xafc5, "ExpandFlashLamp" }, - { 0xb4c3, "HasselbladRawImage" }, - { 0xbc01, "PixelFormat" }, - { 0xbc02, "Transformation" }, - { 0xbc03, "Uncompressed" }, - { 0xbc04, "ImageType" }, - { 0xbc80, "ImageWidth" }, - { 0xbc81, "ImageHeight" }, - { 0xbc82, "WidthResolution" }, - { 0xbc83, "HeightResolution" }, - { 0xbcc0, "ImageOffset" }, - { 0xbcc1, "ImageByteCount" }, - { 0xbcc2, "AlphaOffset" }, - { 0xbcc3, "AlphaByteCount" }, - { 0xbcc4, "ImageDataDiscard" }, - { 0xbcc5, "AlphaDataDiscard" }, - { 0xc427, "OceScanjobDesc" }, - { 0xc428, "OceApplicationSelector" }, - { 0xc429, "OceIDNumber" }, - { 0xc42a, "OceImageLogic" }, - { 0xc44f, "Annotations" }, - { 0xc4a5, "PrintIM" }, - { 0xc51b, "HasselbladExif" }, - { 0xc573, "OriginalFileName" }, - { 0xc580, "USPTOOriginalContentType" }, - { 0xc5e0, "CR2CFAPattern" }, - { 0xc612, "DNGVersion" }, - { 0xc613, "DNGBackwardVersion" }, - { 0xc614, "UniqueCameraModel" }, - { 0xc615, "LocalizedCameraModel" }, - { 0xc616, "CFAPlaneColor" }, - { 0xc617, "CFALayout" }, - { 0xc618, "LinearizationTable" }, - { 0xc619, "BlackLevelRepeatDim" }, - { 0xc61a, "BlackLevel" }, - { 0xc61b, "BlackLevelDeltaH" }, - { 0xc61c, "BlackLevelDeltaV" }, - { 0xc61d, "WhiteLevel" }, - { 0xc61e, "DefaultScale" }, - { 0xc61f, "DefaultCropOrigin" }, - { 0xc620, "DefaultCropSize" }, - { 0xc621, "ColorMatrix1" }, - { 0xc622, "ColorMatrix2" }, - { 0xc623, "CameraCalibration1" }, - { 0xc624, "CameraCalibration2" }, - { 0xc625, "ReductionMatrix1" }, - { 0xc626, "ReductionMatrix2" }, - { 0xc627, "AnalogBalance" }, - { 0xc628, "AsShotNeutral" }, - { 0xc629, "AsShotWhiteXY" }, - { 0xc62a, "BaselineExposure" }, - { 0xc62b, "BaselineNoise" }, - { 0xc62c, "BaselineSharpness" }, - { 0xc62d, "BayerGreenSplit" }, - { 0xc62e, "LinearResponseLimit" }, - { 0xc62f, "CameraSerialNumber" }, - { 0xc630, "DNGLensInfo" }, - { 0xc631, "ChromaBlurRadius" }, - { 0xc632, "AntiAliasStrength" }, - { 0xc633, "ShadowScale" }, - { 0xc634, "SR2Private" }, - { 0xc635, "MakerNoteSafety" }, - { 0xc640, "RawImageSegmentation" }, - { 0xc65a, "CalibrationIlluminant1" }, - { 0xc65b, "CalibrationIlluminant2" }, - { 0xc65c, "BestQualityScale" }, - { 0xc65d, "RawDataUniqueID" }, - { 0xc660, "AliasLayerMetadata" }, - { 0xc68b, "OriginalRawFileName" }, - { 0xc68c, "OriginalRawFileData" }, - { 0xc68d, "ActiveArea" }, - { 0xc68e, "MaskedAreas" }, - { 0xc68f, "AsShotICCProfile" }, - { 0xc690, "AsShotPreProfileMatrix" }, - { 0xc691, "CurrentICCProfile" }, - { 0xc692, "CurrentPreProfileMatrix" }, - { 0xc6bf, "ColorimetricReference" }, - { 0xc6c5, "SRawType" }, - { 0xc6d2, "PanasonicTitle" }, - { 0xc6d3, "PanasonicTitle2" }, - { 0xc6f3, "CameraCalibrationSig" }, - { 0xc6f4, "ProfileCalibrationSig" }, - { 0xc6f5, "ProfileIFD" }, - { 0xc6f6, "AsShotProfileName" }, - { 0xc6f7, "NoiseReductionApplied" }, - { 0xc6f8, "ProfileName" }, - { 0xc6f9, "ProfileHueSatMapDims" }, - { 0xc6fa, "ProfileHueSatMapData1" }, - { 0xc6fb, "ProfileHueSatMapData2" }, - { 0xc6fc, "ProfileToneCurve" }, - { 0xc6fd, "ProfileEmbedPolicy" }, - { 0xc6fe, "ProfileCopyright" }, - { 0xc714, "ForwardMatrix1" }, - { 0xc715, "ForwardMatrix2" }, - { 0xc716, "PreviewApplicationName" }, - { 0xc717, "PreviewApplicationVersion" }, - { 0xc718, "PreviewSettingsName" }, - { 0xc719, "PreviewSettingsDigest" }, - { 0xc71a, "PreviewColorSpace" }, - { 0xc71b, "PreviewDateTime" }, - { 0xc71c, "RawImageDigest" }, - { 0xc71d, "OriginalRawFileDigest" }, - { 0xc71e, "SubTileBlockSize" }, - { 0xc71f, "RowInterleaveFactor" }, - { 0xc725, "ProfileLookTableDims" }, - { 0xc726, "ProfileLookTableData" }, - { 0xc740, "OpcodeList1" }, - { 0xc741, "OpcodeList2" }, - { 0xc74e, "OpcodeList3" }, - { 0xc761, "NoiseProfile" }, - { 0xc763, "TimeCodes" }, - { 0xc764, "FrameRate" }, - { 0xc772, "TStop" }, - { 0xc789, "ReelName" }, - { 0xc791, "OriginalDefaultFinalSize" }, - { 0xc792, "OriginalBestQualitySize" }, - { 0xc793, "OriginalDefaultCropSize" }, - { 0xc7a1, "CameraLabel" }, - { 0xc7a3, "ProfileHueSatMapEncoding" }, - { 0xc7a4, "ProfileLookTableEncoding" }, - { 0xc7a5, "BaselineExposureOffset" }, - { 0xc7a6, "DefaultBlackRender" }, - { 0xc7a7, "NewRawImageDigest" }, - { 0xc7a8, "RawToPreviewGain" }, - { 0xc7aa, "CacheVersion" }, - { 0xc7b5, "DefaultUserCrop" }, - { 0xc7d5, "NikonNEFInfo" }, - { 0xc7e9, "DepthFormat" }, - { 0xc7ea, "DepthNear" }, - { 0xc7eb, "DepthFar" }, - { 0xc7ec, "DepthUnits" }, - { 0xc7ed, "DepthMeasureType" }, - { 0xc7ee, "EnhanceParams" }, - { 0xea1c, "Padding" }, - { 0xea1d, "OffsetSchema" }, - { 0xfde8, "OwnerName" }, - { 0xfde9, "SerialNumber" }, - { 0xfdea, "Lens" }, - { 0xfe00, "KDC_IFD" }, - { 0xfe4c, "RawFile" }, - { 0xfe4d, "Converter" }, - { 0xfe4e, "WhiteBalance" }, - { 0xfe51, "Exposure" }, - { 0xfe52, "Shadows" }, - { 0xfe53, "Brightness" }, - { 0xfe54, "Contrast" }, - { 0xfe55, "Saturation" }, - { 0xfe56, "Sharpness" }, - { 0xfe57, "Smoothness" }, - { 0xfe58, "MoireFilter" }, -}; - -std::map<uint32_t, const char*> mnote_canon_tag_names = { - { 0x1, "CanonCameraSettings" }, - { 0x2, "CanonFocalLength" }, - { 0x3, "CanonFlashInfo" }, - { 0x4, "CanonShotInfo" }, - { 0x5, "CanonPanorama" }, - { 0x6, "CanonImageType" }, - { 0x7, "CanonFirmwareVersion" }, - { 0x8, "FileNumber" }, - { 0x9, "OwnerName" }, - { 0xa, "UnknownD30" }, - { 0xc, "SerialNumber" }, - { 0xd, "CanonCameraInfo1D" }, - { 0xe, "CanonFileLength" }, - { 0xf, "CustomFunctions1D" }, - { 0x10, "CanonModelID" }, - { 0x11, "MovieInfo" }, - { 0x12, "CanonAFInfo" }, - { 0x13, "ThumbnailImageValidArea" }, - { 0x15, "SerialNumberFormat" }, - { 0x1a, "SuperMacro" }, - { 0x1c, "DateStampMode" }, - { 0x1d, "MyColors" }, - { 0x1e, "FirmwareRevision" }, - { 0x23, "Categories" }, - { 0x24, "FaceDetect1" }, - { 0x25, "FaceDetect2" }, - { 0x26, "CanonAFInfo2" }, - { 0x27, "ContrastInfo" }, - { 0x28, "ImageUniqueID" }, - { 0x29, "WBInfo" }, - { 0x2f, "FaceDetect3" }, - { 0x35, "TimeInfo" }, - { 0x38, "BatteryType" }, - { 0x3c, "AFInfo3" }, - { 0x81, "RawDataOffset" }, - { 0x83, "OriginalDecisionDataOffset" }, - { 0x90, "CustomFunctions1D" }, - { 0x91, "PersonalFunctions" }, - { 0x92, "PersonalFunctionValues" }, - { 0x93, "CanonFileInfo" }, - { 0x94, "AFPointsInFocus1D" }, - { 0x95, "LensModel" }, - { 0x96, "SerialInfo" }, - { 0x97, "DustRemovalData" }, - { 0x98, "CropInfo" }, - { 0x99, "CustomFunctions2" }, - { 0x9a, "AspectInfo" }, - { 0xa0, "ProcessingInfo" }, - { 0xa1, "ToneCurveTable" }, - { 0xa2, "SharpnessTable" }, - { 0xa3, "SharpnessFreqTable" }, - { 0xa4, "WhiteBalanceTable" }, - { 0xa9, "ColorBalance" }, - { 0xaa, "MeasuredColor" }, - { 0xae, "ColorTemperature" }, - { 0xb0, "CanonFlags" }, - { 0xb1, "ModifiedInfo" }, - { 0xb2, "ToneCurveMatching" }, - { 0xb3, "WhiteBalanceMatching" }, - { 0xb4, "ColorSpace" }, - { 0xb6, "PreviewImageInfo" }, - { 0xd0, "VRDOffset" }, - { 0xe0, "SensorInfo" }, - { 0x4001, "ColorData1" }, - { 0x4002, "CRWParam" }, - { 0x4003, "ColorInfo" }, - { 0x4005, "Flavor" }, - { 0x4008, "PictureStyleUserDef" }, - { 0x4009, "PictureStylePC" }, - { 0x4010, "CustomPictureStyleFileName" }, - { 0x4013, "AFMicroAdj" }, - { 0x4015, "VignettingCorr" }, - { 0x4016, "VignettingCorr2" }, - { 0x4018, "LightingOpt" }, - { 0x4019, "LensInfo" }, - { 0x4020, "AmbienceInfo" }, - { 0x4021, "MultiExp" }, - { 0x4024, "FilterInfo" }, - { 0x4025, "HDRInfo" }, - { 0x4028, "AFConfig" }, - { 0x403f, "RawBurstModeRoll" }, -}; - -std::map<uint32_t, const char*> mnote_fujifilm_tag_names = { - { 0x0, "Version" }, - { 0x10, "InternalSerialNumber" }, - { 0x1000, "Quality" }, - { 0x1001, "Sharpness" }, - { 0x1002, "WhiteBalance" }, - { 0x1003, "Saturation" }, - { 0x1004, "Contrast" }, - { 0x1005, "ColorTemperature" }, - { 0x1006, "Contrast" }, - { 0x100a, "WhiteBalanceFineTune" }, - { 0x100b, "NoiseReduction" }, - { 0x100e, "NoiseReduction" }, - { 0x1010, "FujiFlashMode" }, - { 0x1011, "FlashExposureComp" }, - { 0x1020, "Macro" }, - { 0x1021, "FocusMode" }, - { 0x1022, "AFMode" }, - { 0x1023, "FocusPixel" }, - { 0x102b, "PrioritySettings" }, - { 0x102d, "FocusSettings" }, - { 0x102e, "AFCSettings" }, - { 0x1030, "SlowSync" }, - { 0x1031, "PictureMode" }, - { 0x1032, "ExposureCount" }, - { 0x1033, "EXRAuto" }, - { 0x1034, "EXRMode" }, - { 0x1040, "ShadowTone" }, - { 0x1041, "HighlightTone" }, - { 0x1044, "DigitalZoom" }, - { 0x1045, "LensModulationOptimizer" }, - { 0x1047, "GrainEffect" }, - { 0x1048, "ColorChromeEffect" }, - { 0x1049, "BWAdjustment" }, - { 0x104d, "CropMode" }, - { 0x104e, "ColorChromeFXBlue" }, - { 0x1050, "ShutterType" }, - { 0x1100, "AutoBracketing" }, - { 0x1101, "SequenceNumber" }, - { 0x1103, "DriveSettings" }, - { 0x1153, "PanoramaAngle" }, - { 0x1154, "PanoramaDirection" }, - { 0x1201, "AdvancedFilter" }, - { 0x1210, "ColorMode" }, - { 0x1300, "BlurWarning" }, - { 0x1301, "FocusWarning" }, - { 0x1302, "ExposureWarning" }, - { 0x1304, "GEImageSize" }, - { 0x1400, "DynamicRange" }, - { 0x1401, "FilmMode" }, - { 0x1402, "DynamicRangeSetting" }, - { 0x1403, "DevelopmentDynamicRange" }, - { 0x1404, "MinFocalLength" }, - { 0x1405, "MaxFocalLength" }, - { 0x1406, "MaxApertureAtMinFocal" }, - { 0x1407, "MaxApertureAtMaxFocal" }, - { 0x140b, "AutoDynamicRange" }, - { 0x1422, "ImageStabilization" }, - { 0x1425, "SceneRecognition" }, - { 0x1431, "Rating" }, - { 0x1436, "ImageGeneration" }, - { 0x1438, "ImageCount" }, - { 0x1443, "DRangePriority" }, - { 0x1444, "DRangePriorityAuto" }, - { 0x1445, "DRangePriorityFixed" }, - { 0x1446, "FlickerReduction" }, - { 0x3803, "VideoRecordingMode" }, - { 0x3804, "PeripheralLighting" }, - { 0x3806, "VideoCompression" }, - { 0x3820, "FrameRate" }, - { 0x3821, "FrameWidth" }, - { 0x3822, "FrameHeight" }, - { 0x3824, "FullHDHighSpeedRec" }, - { 0x4005, "FaceElementSelected" }, - { 0x4100, "FacesDetected" }, - { 0x4103, "FacePositions" }, - { 0x4200, "NumFaceElements" }, - { 0x4201, "FaceElementTypes" }, - { 0x4203, "FaceElementPositions" }, - { 0x4282, "FaceRecInfo" }, - { 0x8000, "FileSource" }, - { 0x8002, "OrderNumber" }, - { 0x8003, "FrameNumber" }, - { 0xb211, "Parallax" }, -}; - -std::map<uint32_t, const char*> mnote_nikon_tag_names = { - { 0x1, "MakerNoteVersion" }, - { 0x2, "ISO" }, - { 0x3, "ColorMode" }, - { 0x4, "Quality" }, - { 0x5, "WhiteBalance" }, - { 0x6, "Sharpness" }, - { 0x7, "FocusMode" }, - { 0x8, "FlashSetting" }, - { 0x9, "FlashType" }, - { 0xb, "WhiteBalanceFineTune" }, - { 0xc, "WB_RBLevels" }, - { 0xd, "ProgramShift" }, - { 0xe, "ExposureDifference" }, - { 0xf, "ISOSelection" }, - { 0x10, "DataDump" }, - { 0x11, "PreviewIFD" }, - { 0x12, "FlashExposureComp" }, - { 0x13, "ISOSetting" }, - { 0x14, "ColorBalanceA" }, - { 0x16, "ImageBoundary" }, - { 0x17, "ExternalFlashExposureComp" }, - { 0x18, "FlashExposureBracketValue" }, - { 0x19, "ExposureBracketValue" }, - { 0x1a, "ImageProcessing" }, - { 0x1b, "CropHiSpeed" }, - { 0x1c, "ExposureTuning" }, - { 0x1d, "SerialNumber" }, - { 0x1e, "ColorSpace" }, - { 0x1f, "VRInfo" }, - { 0x20, "ImageAuthentication" }, - { 0x21, "FaceDetect" }, - { 0x22, "ActiveD-Lighting" }, - { 0x23, "PictureControlData" }, - { 0x24, "WorldTime" }, - { 0x25, "ISOInfo" }, - { 0x2a, "VignetteControl" }, - { 0x2b, "DistortInfo" }, - { 0x2c, "UnknownInfo" }, - { 0x32, "UnknownInfo2" }, - { 0x34, "ShutterMode" }, - { 0x35, "HDRInfo" }, - { 0x37, "MechanicalShutterCount" }, - { 0x39, "LocationInfo" }, - { 0x3d, "BlackLevel" }, - { 0x45, "CropArea" }, - { 0x4f, "ColorTemperatureAuto" }, - { 0x80, "ImageAdjustment" }, - { 0x81, "ToneComp" }, - { 0x82, "AuxiliaryLens" }, - { 0x83, "LensType" }, - { 0x84, "Lens" }, - { 0x85, "ManualFocusDistance" }, - { 0x86, "DigitalZoom" }, - { 0x87, "FlashMode" }, - { 0x88, "AFInfo" }, - { 0x89, "ShootingMode" }, - { 0x8b, "LensFStops" }, - { 0x8c, "ContrastCurve" }, - { 0x8d, "ColorHue" }, - { 0x8f, "SceneMode" }, - { 0x90, "LightSource" }, - { 0x91, "ShotInfoD40" }, - { 0x92, "HueAdjustment" }, - { 0x93, "NEFCompression" }, - { 0x94, "SaturationAdj" }, - { 0x95, "NoiseReduction" }, - { 0x96, "NEFLinearizationTable" }, - { 0x97, "ColorBalance0100" }, - { 0x98, "LensData0100" }, - { 0x99, "RawImageCenter" }, - { 0x9a, "SensorPixelSize" }, - { 0x9c, "SceneAssist" }, - { 0x9d, "DateStampMode" }, - { 0x9e, "RetouchHistory" }, - { 0xa0, "SerialNumber" }, - { 0xa2, "ImageDataSize" }, - { 0xa5, "ImageCount" }, - { 0xa6, "DeletedImageCount" }, - { 0xa7, "ShutterCount" }, - { 0xa8, "FlashInfo0100" }, - { 0xa9, "ImageOptimization" }, - { 0xaa, "Saturation" }, - { 0xab, "VariProgram" }, - { 0xac, "ImageStabilization" }, - { 0xad, "AFResponse" }, - { 0xb0, "MultiExposure" }, - { 0xb1, "HighISONoiseReduction" }, - { 0xb3, "ToningEffect" }, - { 0xb6, "PowerUpTime" }, - { 0xb7, "AFInfo2" }, - { 0xb8, "FileInfo" }, - { 0xb9, "AFTune" }, - { 0xbb, "RetouchInfo" }, - { 0xbd, "PictureControlData" }, - { 0xc3, "BarometerInfo" }, - { 0xe00, "PrintIM" }, - { 0xe01, "NikonCaptureData" }, - { 0xe09, "NikonCaptureVersion" }, - { 0xe0e, "NikonCaptureOffsets" }, - { 0xe10, "NikonScanIFD" }, - { 0xe13, "NikonCaptureEditVersions" }, - { 0xe1d, "NikonICCProfile" }, - { 0xe1e, "NikonCaptureOutput" }, - { 0xe22, "NEFBitDepth" }, -}; - -std::map<uint32_t, const char*> mnote_olympus_tag_names = { - { 0x0, "MakerNoteVersion" }, - { 0x1, "MinoltaCameraSettingsOld" }, - { 0x3, "MinoltaCameraSettings" }, - { 0x40, "CompressedImageSize" }, - { 0x81, "PreviewImageData" }, - { 0x88, "PreviewImageStart" }, - { 0x89, "PreviewImageLength" }, - { 0x100, "ThumbnailImage" }, - { 0x104, "BodyFirmwareVersion" }, - { 0x200, "SpecialMode" }, - { 0x201, "Quality" }, - { 0x202, "Macro" }, - { 0x203, "BWMode" }, - { 0x204, "DigitalZoom" }, - { 0x205, "FocalPlaneDiagonal" }, - { 0x206, "LensDistortionParams" }, - { 0x207, "CameraType" }, - { 0x208, "TextInfo" }, - { 0x209, "CameraID" }, - { 0x20b, "EpsonImageWidth" }, - { 0x20c, "EpsonImageHeight" }, - { 0x20d, "EpsonSoftware" }, - { 0x280, "PreviewImage" }, - { 0x300, "PreCaptureFrames" }, - { 0x301, "WhiteBoard" }, - { 0x302, "OneTouchWB" }, - { 0x303, "WhiteBalanceBracket" }, - { 0x304, "WhiteBalanceBias" }, - { 0x400, "SensorArea" }, - { 0x401, "BlackLevel" }, - { 0x403, "SceneMode" }, - { 0x404, "SerialNumber" }, - { 0x405, "Firmware" }, - { 0xe00, "PrintIM" }, - { 0xf00, "DataDump" }, - { 0xf01, "DataDump2" }, - { 0xf04, "ZoomedPreviewStart" }, - { 0xf05, "ZoomedPreviewLength" }, - { 0xf06, "ZoomedPreviewSize" }, - { 0x1000, "ShutterSpeedValue" }, - { 0x1001, "ISOValue" }, - { 0x1002, "ApertureValue" }, - { 0x1003, "BrightnessValue" }, - { 0x1004, "FlashMode" }, - { 0x1005, "FlashDevice" }, - { 0x1006, "ExposureCompensation" }, - { 0x1007, "SensorTemperature" }, - { 0x1008, "LensTemperature" }, - { 0x1009, "LightCondition" }, - { 0x100a, "FocusRange" }, - { 0x100b, "FocusMode" }, - { 0x100c, "ManualFocusDistance" }, - { 0x100d, "ZoomStepCount" }, - { 0x100e, "FocusStepCount" }, - { 0x100f, "Sharpness" }, - { 0x1010, "FlashChargeLevel" }, - { 0x1011, "ColorMatrix" }, - { 0x1012, "BlackLevel" }, - { 0x1013, "ColorTemperatureBG" }, - { 0x1014, "ColorTemperatureRG" }, - { 0x1015, "WBMode" }, - { 0x1017, "RedBalance" }, - { 0x1018, "BlueBalance" }, - { 0x1019, "ColorMatrixNumber" }, - { 0x101a, "SerialNumber" }, - { 0x101b, "ExternalFlashAE1_0" }, - { 0x101c, "ExternalFlashAE2_0" }, - { 0x101d, "InternalFlashAE1_0" }, - { 0x101e, "InternalFlashAE2_0" }, - { 0x101f, "ExternalFlashAE1" }, - { 0x1020, "ExternalFlashAE2" }, - { 0x1021, "InternalFlashAE1" }, - { 0x1022, "InternalFlashAE2" }, - { 0x1023, "FlashExposureComp" }, - { 0x1024, "InternalFlashTable" }, - { 0x1025, "ExternalFlashGValue" }, - { 0x1026, "ExternalFlashBounce" }, - { 0x1027, "ExternalFlashZoom" }, - { 0x1028, "ExternalFlashMode" }, - { 0x1029, "Contrast" }, - { 0x102a, "SharpnessFactor" }, - { 0x102b, "ColorControl" }, - { 0x102c, "ValidBits" }, - { 0x102d, "CoringFilter" }, - { 0x102e, "OlympusImageWidth" }, - { 0x102f, "OlympusImageHeight" }, - { 0x1030, "SceneDetect" }, - { 0x1031, "SceneArea" }, - { 0x1033, "SceneDetectData" }, - { 0x1034, "CompressionRatio" }, - { 0x1035, "PreviewImageValid" }, - { 0x1036, "PreviewImageStart" }, - { 0x1037, "PreviewImageLength" }, - { 0x1038, "AFResult" }, - { 0x1039, "CCDScanMode" }, - { 0x103a, "NoiseReduction" }, - { 0x103b, "FocusStepInfinity" }, - { 0x103c, "FocusStepNear" }, - { 0x103d, "LightValueCenter" }, - { 0x103e, "LightValuePeriphery" }, - { 0x103f, "FieldCount" }, - { 0x2010, "Equipment" }, - { 0x2020, "CameraSettings" }, - { 0x2030, "RawDevelopment" }, - { 0x2031, "RawDev2" }, - { 0x2040, "ImageProcessing" }, - { 0x2050, "FocusInfo" }, - { 0x2100, "Olympus2100" }, - { 0x2200, "Olympus2200" }, - { 0x2300, "Olympus2300" }, - { 0x2400, "Olympus2400" }, - { 0x2500, "Olympus2500" }, - { 0x2600, "Olympus2600" }, - { 0x2700, "Olympus2700" }, - { 0x2800, "Olympus2800" }, - { 0x2900, "Olympus2900" }, - { 0x3000, "RawInfo" }, - { 0x4000, "MainInfo" }, - { 0x5000, "UnknownInfo" }, -}; - -std::map<uint32_t, const char*> mnote_panasonic_tag_names = { - { 0x1, "ImageQuality" }, - { 0x2, "FirmwareVersion" }, - { 0x3, "WhiteBalance" }, - { 0x7, "FocusMode" }, - { 0xf, "AFAreaMode" }, - { 0x1a, "ImageStabilization" }, - { 0x1c, "MacroMode" }, - { 0x1f, "ShootingMode" }, - { 0x20, "Audio" }, - { 0x21, "DataDump" }, - { 0x23, "WhiteBalanceBias" }, - { 0x24, "FlashBias" }, - { 0x25, "InternalSerialNumber" }, - { 0x26, "PanasonicExifVersion" }, - { 0x28, "ColorEffect" }, - { 0x29, "TimeSincePowerOn" }, - { 0x2a, "BurstMode" }, - { 0x2b, "SequenceNumber" }, - { 0x2c, "ContrastMode" }, - { 0x2d, "NoiseReduction" }, - { 0x2e, "SelfTimer" }, - { 0x30, "Rotation" }, - { 0x31, "AFAssistLamp" }, - { 0x32, "ColorMode" }, - { 0x33, "BabyAge" }, - { 0x34, "OpticalZoomMode" }, - { 0x35, "ConversionLens" }, - { 0x36, "TravelDay" }, - { 0x39, "Contrast" }, - { 0x3a, "WorldTimeLocation" }, - { 0x3b, "TextStamp" }, - { 0x3c, "ProgramISO" }, - { 0x3d, "AdvancedSceneType" }, - { 0x3e, "TextStamp" }, - { 0x3f, "FacesDetected" }, - { 0x40, "Saturation" }, - { 0x41, "Sharpness" }, - { 0x42, "FilmMode" }, - { 0x43, "JPEGQuality" }, - { 0x44, "ColorTempKelvin" }, - { 0x45, "BracketSettings" }, - { 0x46, "WBShiftAB" }, - { 0x47, "WBShiftGM" }, - { 0x48, "FlashCurtain" }, - { 0x49, "LongExposureNoiseReduction" }, - { 0x4b, "PanasonicImageWidth" }, - { 0x4c, "PanasonicImageHeight" }, - { 0x4d, "AFPointPosition" }, - { 0x4e, "FaceDetInfo" }, - { 0x51, "LensType" }, - { 0x52, "LensSerialNumber" }, - { 0x53, "AccessoryType" }, - { 0x54, "AccessorySerialNumber" }, - { 0x59, "Transform" }, - { 0x5d, "IntelligentExposure" }, - { 0x60, "LensFirmwareVersion" }, - { 0x61, "FaceRecInfo" }, - { 0x62, "FlashWarning" }, - { 0x63, "RecognizedFaceFlags" }, - { 0x65, "Title" }, - { 0x66, "BabyName" }, - { 0x67, "Location" }, - { 0x69, "Country" }, - { 0x6b, "State" }, - { 0x6d, "City" }, - { 0x6f, "Landmark" }, - { 0x70, "IntelligentResolution" }, - { 0x76, "HDRShot" }, - { 0x77, "BurstSpeed" }, - { 0x79, "IntelligentD-Range" }, - { 0x7c, "ClearRetouch" }, - { 0x80, "City2" }, - { 0x86, "ManometerPressure" }, - { 0x89, "PhotoStyle" }, - { 0x8a, "ShadingCompensation" }, - { 0x8b, "WBShiftIntelligentAuto" }, - { 0x8c, "AccelerometerZ" }, - { 0x8d, "AccelerometerX" }, - { 0x8e, "AccelerometerY" }, - { 0x8f, "CameraOrientation" }, - { 0x90, "RollAngle" }, - { 0x91, "PitchAngle" }, - { 0x92, "WBShiftCreativeControl" }, - { 0x93, "SweepPanoramaDirection" }, - { 0x94, "SweepPanoramaFieldOfView" }, - { 0x96, "TimerRecording" }, - { 0x9d, "InternalNDFilter" }, - { 0x9e, "HDR" }, - { 0x9f, "ShutterType" }, - { 0xa1, "FilterEffect" }, - { 0xa3, "ClearRetouchValue" }, - { 0xa7, "OutputLUT" }, - { 0xab, "TouchAE" }, - { 0xac, "MonochromeFilterEffect" }, - { 0xad, "HighlightShadow" }, - { 0xaf, "TimeStamp" }, - { 0xb3, "VideoBurstResolution" }, - { 0xb4, "MultiExposure" }, - { 0xb9, "RedEyeRemoval" }, - { 0xbb, "VideoBurstMode" }, - { 0xbc, "DiffractionCorrection" }, - { 0xbd, "FocusBracket" }, - { 0xbe, "LongExposureNRUsed" }, - { 0xbf, "PostFocusMerging" }, - { 0xc1, "VideoPreburst" }, - { 0xc4, "LensTypeMake" }, - { 0xc5, "LensTypeModel" }, - { 0xd1, "ISO" }, - { 0xd2, "MonochromeGrainEffect" }, - { 0xd6, "NoiseReductionStrength" }, - { 0xe00, "PrintIM" }, - { 0x2003, "TimeInfo" }, - { 0x8000, "MakerNoteVersion" }, - { 0x8001, "SceneMode" }, - { 0x8002, "HighlightWarning" }, - { 0x8003, "DarkFocusEnvironment" }, - { 0x8004, "WBRedLevel" }, - { 0x8005, "WBGreenLevel" }, - { 0x8006, "WBBlueLevel" }, - { 0x8008, "TextStamp" }, - { 0x8009, "TextStamp" }, - { 0x8010, "BabyAge" }, - { 0x8012, "Transform" }, -}; - -std::map<uint32_t, const char*> mnote_pentax_tag_names = { - { 0x0, "PentaxVersion" }, - { 0x1, "PentaxModelType" }, - { 0x2, "PreviewImageSize" }, - { 0x3, "PreviewImageLength" }, - { 0x4, "PreviewImageStart" }, - { 0x5, "PentaxModelID" }, - { 0x6, "Date" }, - { 0x7, "Time" }, - { 0x8, "Quality" }, - { 0x9, "PentaxImageSize" }, - { 0xb, "PictureMode" }, - { 0xc, "FlashMode" }, - { 0xd, "FocusMode" }, - { 0xe, "AFPointSelected" }, - { 0xf, "AFPointsInFocus" }, - { 0x10, "FocusPosition" }, - { 0x12, "ExposureTime" }, - { 0x13, "FNumber" }, - { 0x14, "ISO" }, - { 0x15, "LightReading" }, - { 0x16, "ExposureCompensation" }, - { 0x17, "MeteringMode" }, - { 0x18, "AutoBracketing" }, - { 0x19, "WhiteBalance" }, - { 0x1a, "WhiteBalanceMode" }, - { 0x1b, "BlueBalance" }, - { 0x1c, "RedBalance" }, - { 0x1d, "FocalLength" }, - { 0x1e, "DigitalZoom" }, - { 0x1f, "Saturation" }, - { 0x20, "Contrast" }, - { 0x21, "Sharpness" }, - { 0x22, "WorldTimeLocation" }, - { 0x23, "HometownCity" }, - { 0x24, "DestinationCity" }, - { 0x25, "HometownDST" }, - { 0x26, "DestinationDST" }, - { 0x27, "DSPFirmwareVersion" }, - { 0x28, "CPUFirmwareVersion" }, - { 0x29, "FrameNumber" }, - { 0x2d, "EffectiveLV" }, - { 0x32, "ImageEditing" }, - { 0x33, "PictureMode" }, - { 0x34, "DriveMode" }, - { 0x35, "SensorSize" }, - { 0x37, "ColorSpace" }, - { 0x38, "ImageAreaOffset" }, - { 0x39, "RawImageSize" }, - { 0x3c, "AFPointsInFocus" }, - { 0x3d, "DataScaling" }, - { 0x3e, "PreviewImageBorders" }, - { 0x3f, "LensRec" }, - { 0x40, "SensitivityAdjust" }, - { 0x41, "ImageEditCount" }, - { 0x47, "CameraTemperature" }, - { 0x48, "AELock" }, - { 0x49, "NoiseReduction" }, - { 0x4d, "FlashExposureComp" }, - { 0x4f, "ImageTone" }, - { 0x50, "ColorTemperature" }, - { 0x53, "ColorTempDaylight" }, - { 0x54, "ColorTempShade" }, - { 0x55, "ColorTempCloudy" }, - { 0x56, "ColorTempTungsten" }, - { 0x57, "ColorTempFluorescentD" }, - { 0x58, "ColorTempFluorescentN" }, - { 0x59, "ColorTempFluorescentW" }, - { 0x5a, "ColorTempFlash" }, - { 0x5c, "ShakeReductionInfo" }, - { 0x5d, "ShutterCount" }, - { 0x60, "FaceInfo" }, - { 0x62, "RawDevelopmentProcess" }, - { 0x67, "Hue" }, - { 0x68, "AWBInfo" }, - { 0x69, "DynamicRangeExpansion" }, - { 0x6b, "TimeInfo" }, - { 0x6c, "HighLowKeyAdj" }, - { 0x6d, "ContrastHighlight" }, - { 0x6e, "ContrastShadow" }, - { 0x6f, "ContrastHighlightShadowAdj" }, - { 0x70, "FineSharpness" }, - { 0x71, "HighISONoiseReduction" }, - { 0x72, "AFAdjustment" }, - { 0x73, "MonochromeFilterEffect" }, - { 0x74, "MonochromeToning" }, - { 0x76, "FaceDetect" }, - { 0x77, "FaceDetectFrameSize" }, - { 0x79, "ShadowCorrection" }, - { 0x7a, "ISOAutoParameters" }, - { 0x7b, "CrossProcess" }, - { 0x7d, "LensCorr" }, - { 0x7e, "WhiteLevel" }, - { 0x7f, "BleachBypassToning" }, - { 0x80, "AspectRatio" }, - { 0x82, "BlurControl" }, - { 0x85, "HDR" }, - { 0x87, "ShutterType" }, - { 0x88, "NeutralDensityFilter" }, - { 0x8b, "ISO" }, - { 0x92, "IntervalShooting" }, - { 0x95, "SkinToneCorrection" }, - { 0x96, "ClarityControl" }, - { 0x200, "BlackPoint" }, - { 0x201, "WhitePoint" }, - { 0x203, "ColorMatrixA" }, - { 0x204, "ColorMatrixB" }, - { 0x205, "CameraSettings" }, - { 0x206, "AEInfo" }, - { 0x207, "LensInfo" }, - { 0x208, "FlashInfo" }, - { 0x209, "AEMeteringSegments" }, - { 0x20a, "FlashMeteringSegments" }, - { 0x20b, "SlaveFlashMeteringSegments" }, - { 0x20d, "WB_RGGBLevelsDaylight" }, - { 0x20e, "WB_RGGBLevelsShade" }, - { 0x20f, "WB_RGGBLevelsCloudy" }, - { 0x210, "WB_RGGBLevelsTungsten" }, - { 0x211, "WB_RGGBLevelsFluorescentD" }, - { 0x212, "WB_RGGBLevelsFluorescentN" }, - { 0x213, "WB_RGGBLevelsFluorescentW" }, - { 0x214, "WB_RGGBLevelsFlash" }, - { 0x215, "CameraInfo" }, - { 0x216, "BatteryInfo" }, - { 0x21b, "SaturationInfo" }, - { 0x21f, "AFInfo" }, - { 0x220, "HuffmanTable" }, - { 0x221, "KelvinWB" }, - { 0x222, "ColorInfo" }, - { 0x224, "EVStepInfo" }, - { 0x226, "ShotInfo" }, - { 0x227, "FacePos" }, - { 0x228, "FaceSize" }, - { 0x229, "SerialNumber" }, - { 0x22a, "FilterInfo" }, - { 0x22b, "LevelInfo" }, - { 0x22d, "WBLevels" }, - { 0x22e, "Artist" }, - { 0x22f, "Copyright" }, - { 0x230, "FirmwareVersion" }, - { 0x231, "ContrastDetectAFArea" }, - { 0x235, "CrossProcessParams" }, - { 0x239, "LensInfoQ" }, - { 0x23f, "Model" }, - { 0x243, "PixelShiftInfo" }, - { 0x245, "AFPointInfo" }, - { 0x3fe, "DataDump" }, - { 0x3ff, "TempInfo" }, - { 0x402, "ToneCurve" }, - { 0x403, "ToneCurves" }, - { 0x405, "UnknownBlock" }, - { 0xe00, "PrintIM" }, -}; - -std::map<uint32_t, const char*> mnote_sony_tag_names = { - { 0x10, "CameraInfo" }, - { 0x20, "FocusInfo" }, - { 0x102, "Quality" }, - { 0x104, "FlashExposureComp" }, - { 0x105, "Teleconverter" }, - { 0x112, "WhiteBalanceFineTune" }, - { 0x114, "CameraSettings" }, - { 0x115, "WhiteBalance" }, - { 0x116, "ExtraInfo" }, - { 0xe00, "PrintIM" }, - { 0x1000, "MultiBurstMode" }, - { 0x1001, "MultiBurstImageWidth" }, - { 0x1002, "MultiBurstImageHeight" }, - { 0x1003, "Panorama" }, - { 0x2001, "PreviewImage" }, - { 0x2002, "Rating" }, - { 0x2004, "Contrast" }, - { 0x2005, "Saturation" }, - { 0x2006, "Sharpness" }, - { 0x2007, "Brightness" }, - { 0x2008, "LongExposureNoiseReduction" }, - { 0x2009, "HighISONoiseReduction" }, - { 0x200a, "HDR" }, - { 0x200b, "MultiFrameNoiseReduction" }, - { 0x200e, "PictureEffect" }, - { 0x200f, "SoftSkinEffect" }, - { 0x2010, "Tag2010a" }, - { 0x2011, "VignettingCorrection" }, - { 0x2012, "LateralChromaticAberration" }, - { 0x2013, "DistortionCorrectionSetting" }, - { 0x2014, "WBShiftAB_GM" }, - { 0x2016, "AutoPortraitFramed" }, - { 0x2017, "FlashAction" }, - { 0x201a, "ElectronicFrontCurtainShutter" }, - { 0x201b, "FocusMode" }, - { 0x201c, "AFAreaModeSetting" }, - { 0x201d, "FlexibleSpotPosition" }, - { 0x201e, "AFPointSelected" }, - { 0x2020, "AFPointsUsed" }, - { 0x2021, "AFTracking" }, - { 0x2022, "FocalPlaneAFPointsUsed" }, - { 0x2023, "MultiFrameNREffect" }, - { 0x2026, "WBShiftAB_GM_Precise" }, - { 0x2027, "FocusLocation" }, - { 0x2028, "VariableLowPassFilter" }, - { 0x2029, "RAWFileType" }, - { 0x202a, "Tag202a" }, - { 0x202b, "PrioritySetInAWB" }, - { 0x202c, "MeteringMode2" }, - { 0x202d, "ExposureStandardAdjustment" }, - { 0x202e, "Quality" }, - { 0x202f, "PixelShiftInfo" }, - { 0x2031, "SerialNumber" }, - { 0x3000, "ShotInfo" }, - { 0x900b, "Tag900b" }, - { 0x9050, "Tag9050a" }, - { 0x9400, "Tag9400a" }, - { 0x9401, "Tag9401" }, - { 0x9402, "Tag9402" }, - { 0x9403, "Tag9403" }, - { 0x9404, "Tag9404a" }, - { 0x9405, "Tag9405a" }, - { 0x9406, "Tag9406" }, - { 0x9407, "Sony_0x9407" }, - { 0x9408, "Sony_0x9408" }, - { 0x9409, "Sony_0x9409" }, - { 0x940a, "Tag940a" }, - { 0x940b, "Sony_0x940b" }, - { 0x940c, "Tag940c" }, - { 0x940d, "Sony_0x940d" }, - { 0x940e, "AFInfo" }, - { 0x940f, "Sony_0x940f" }, - { 0x9411, "Sony_0x9411" }, - { 0xb000, "FileFormat" }, - { 0xb001, "SonyModelID" }, - { 0xb020, "CreativeStyle" }, - { 0xb021, "ColorTemperature" }, - { 0xb022, "ColorCompensationFilter" }, - { 0xb023, "SceneMode" }, - { 0xb024, "ZoneMatching" }, - { 0xb025, "DynamicRangeOptimizer" }, - { 0xb026, "ImageStabilization" }, - { 0xb027, "LensType" }, - { 0xb028, "MinoltaMakerNote" }, - { 0xb029, "ColorMode" }, - { 0xb02a, "LensSpec" }, - { 0xb02b, "FullImageSize" }, - { 0xb02c, "PreviewImageSize" }, - { 0xb040, "Macro" }, - { 0xb041, "ExposureMode" }, - { 0xb042, "FocusMode" }, - { 0xb043, "AFAreaMode" }, - { 0xb044, "AFIlluminator" }, - { 0xb047, "JPEGQuality" }, - { 0xb048, "FlashLevel" }, - { 0xb049, "ReleaseMode" }, - { 0xb04a, "SequenceNumber" }, - { 0xb04b, "Anti-Blur" }, - { 0xb04e, "FocusMode" }, - { 0xb04f, "DynamicRangeOptimizer" }, - { 0xb050, "HighISONoiseReduction2" }, - { 0xb052, "IntelligentAuto" }, - { 0xb054, "WhiteBalance" }, -}; - -std::map<uint32_t, const char*> raw_panasonic_tag_names = { - { 0x1, "PanasonicRawVersion" }, - { 0x2, "SensorWidth" }, - { 0x3, "SensorHeight" }, - { 0x4, "SensorTopBorder" }, - { 0x5, "SensorLeftBorder" }, - { 0x6, "SensorBottomBorder" }, - { 0x7, "SensorRightBorder" }, - { 0x8, "SamplesPerPixel" }, - { 0x9, "CFAPattern" }, - { 0xa, "BitsPerSample" }, - { 0xb, "Compression" }, - { 0xe, "LinearityLimitRed" }, - { 0xf, "LinearityLimitGreen" }, - { 0x10, "LinearityLimitBlue" }, - { 0x11, "RedBalance" }, - { 0x12, "BlueBalance" }, - { 0x13, "WBInfo" }, - { 0x17, "ISO" }, - { 0x18, "HighISOMultiplierRed" }, - { 0x19, "HighISOMultiplierGreen" }, - { 0x1a, "HighISOMultiplierBlue" }, - { 0x1b, "NoiseReductionParams" }, - { 0x1c, "BlackLevelRed" }, - { 0x1d, "BlackLevelGreen" }, - { 0x1e, "BlackLevelBlue" }, - { 0x24, "WBRedLevel" }, - { 0x25, "WBGreenLevel" }, - { 0x26, "WBBlueLevel" }, - { 0x27, "WBInfo2" }, - { 0x2d, "RawFormat" }, - { 0x2e, "JpgFromRaw" }, - { 0x2f, "CropTop" }, - { 0x30, "CropLeft" }, - { 0x31, "CropBottom" }, - { 0x32, "CropRight" }, - { 0x10f, "Make" }, - { 0x110, "Model" }, - { 0x111, "StripOffsets" }, - { 0x112, "Orientation" }, - { 0x116, "RowsPerStrip" }, - { 0x117, "StripByteCounts" }, - { 0x118, "RawDataOffset" }, - { 0x119, "DistortionInfo" }, - { 0x11c, "Gamma" }, - { 0x120, "CameraIFD" }, - { 0x121, "Multishot" }, - { 0x2bc, "ApplicationNotes" }, - { 0x83bb, "IPTC-NAA" }, - { 0x8769, "ExifOffset" }, - { 0x8825, "GPSInfo" }, -};
\ No newline at end of file diff --git a/tools/exif_tags.hpp b/tools/exif_tags.hpp deleted file mode 100644 index ad36bdf..0000000 --- a/tools/exif_tags.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * libopenraw - exif_tags.hpp - * - * Copyright (C) 2020 Hubert Figuière - * - * This library is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation, either version 3 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see - * <http://www.gnu.org/licenses/>. - */ - -#include <stdint.h> -#include <map> - -#pragma once - -extern std::map<uint32_t, const char*> exif_tag_names; - -extern std::map<uint32_t, const char*> mnote_canon_tag_names; -extern std::map<uint32_t, const char*> mnote_fujifilm_tag_names; -extern std::map<uint32_t, const char*> mnote_nikon_tag_names; -extern std::map<uint32_t, const char*> mnote_olympus_tag_names; -extern std::map<uint32_t, const char*> mnote_panasonic_tag_names; -extern std::map<uint32_t, const char*> mnote_pentax_tag_names; -extern std::map<uint32_t, const char*> mnote_sony_tag_names; - -extern std::map<uint32_t, const char*> raw_panasonic_tag_names; diff --git a/tools/exifdump.cpp b/tools/exifdump.cpp index a27846b..68f612e 100644 --- a/tools/exifdump.cpp +++ b/tools/exifdump.cpp @@ -31,7 +31,7 @@ #include <libopenraw/libopenraw.h> #include "dumputils.hpp" -#include "exif_tags.hpp" +#include "exif/exif_tags.hpp" const char* map_ifd_type(or_ifd_dir_type type) { @@ -50,52 +50,6 @@ const char* map_ifd_type(or_ifd_dir_type type) return "INVALID"; } -// XXX move this somewhere to reuse. -// XXX make a remapper with a state to not have to reset it every time -std::string get_name(or_rawfile_type file_type, or_ifd_dir_type type, uint32_t tag) -{ - auto map = &exif_tag_names; - - if (type == OR_IFD_MNOTE) { - switch (file_type) { - case OR_RAWFILE_TYPE_CR2: - case OR_RAWFILE_TYPE_CR3: - case OR_RAWFILE_TYPE_CRW: - map = &mnote_canon_tag_names; - break; - case OR_RAWFILE_TYPE_RW2: - map = &mnote_panasonic_tag_names; - break; - case OR_RAWFILE_TYPE_NEF: - map = &mnote_nikon_tag_names; - break; - case OR_RAWFILE_TYPE_PEF: - map = &mnote_pentax_tag_names; - break; - case OR_RAWFILE_TYPE_ERF: // EPSON uses Olympus. - case OR_RAWFILE_TYPE_ORF: - map = &mnote_olympus_tag_names; - break; - case OR_RAWFILE_TYPE_ARW: - map = &mnote_sony_tag_names; - break; - default: - map = nullptr; - } - if (!map) { - return str(boost::format("MNote 0x%1$x") % tag); - } - } - if (type == OR_IFD_MAIN && file_type == OR_RAWFILE_TYPE_RW2) { - map = &raw_panasonic_tag_names; - } - auto iter = map->find(tag); - if (iter != map->end()) { - return iter->second; - } - return str(boost::format("0x%1$x") % tag); -} - const char* map_exif_type(ExifTagType type) { switch(type) { @@ -147,23 +101,23 @@ public: } else { dump_file_info(m_out, rf, false); - or_rawfile_type file_type = or_rawfile_get_type(rf); - ORMetadataIteratorRef iter = or_rawfile_get_metadata_iterator(rf); or_ifd_dir_type last_ifd_type = OR_IFD_OTHER; while (or_metadata_iterator_next(iter)) { - or_ifd_dir_type ifd_type; + ORIfdDirRef ifd = nullptr; uint16_t id; ExifTagType type; ORMetaValueRef value = nullptr; - if (or_metadata_iterator_get_entry(iter, &ifd_type, &id, &type, &value)) { + if (or_metadata_iterator_get_entry(iter, &ifd, &id, &type, &value)) { + or_ifd_dir_type ifd_type = or_ifd_get_type(ifd); if (ifd_type != last_ifd_type) { m_out << boost::format("%1%\n") % map_ifd_type(ifd_type); last_ifd_type = ifd_type; } + const char* tagname = or_ifd_get_tag_name(ifd, id); m_out << boost::format("\t%1% = %2%\n") % - get_name(file_type, ifd_type, id) % + (tagname ? std::string(tagname) : str(boost::format("0x%1$x") % id)) % map_exif_type(type); if (value) { switch (type) { @@ -179,6 +133,7 @@ public: } or_metavalue_release(value); } + or_ifd_release(ifd); } } |