From c4e73831f24ce3594839465c5a722dda0f0adb1e Mon Sep 17 00:00:00 2001 From: postscript-dev Date: Thu, 16 Sep 2021 21:38:05 +0100 Subject: [PATCH 1/3] Add missing MpfInfo group to `taglist.exe Exif` --- src/tags.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tags.cpp b/src/tags.cpp index 91a179f31d..c792296420 100644 --- a/src/tags.cpp +++ b/src/tags.cpp @@ -169,6 +169,7 @@ namespace Exiv2 { const TagInfo* exif = exifTagList(); const TagInfo* gps = gpsTagList(); const TagInfo* iop = iopTagList(); + const TagInfo* mpf = mpfTagList(); for (int i=0; ifd[i].tag_ != 0xffff; ++i) { os << ifd[i] << "\n"; @@ -182,6 +183,9 @@ namespace Exiv2 { for (int i=0; gps[i].tag_ != 0xffff; ++i) { os << gps[i] << "\n"; } + for (int i=0; mpf[i].tag_ != 0xffff; ++i) { + os << mpf[i] << "\n"; + } } // ExifTags::taglist void ExifTags::taglist(std::ostream& os, const std::string& groupName) From e07451a30d9936492724609d03b19e5a9906842a Mon Sep 17 00:00:00 2001 From: postscript-dev Date: Thu, 16 Sep 2021 21:55:20 +0100 Subject: [PATCH 2/3] Add Python test for `taglist` program Check output of `taglist.exe Exif` contains the correct tag Groups --- tests/bugfixes/github/test_pr_1905.py | 402 ++++++++++++++++++++++++++ 1 file changed, 402 insertions(+) create mode 100644 tests/bugfixes/github/test_pr_1905.py diff --git a/tests/bugfixes/github/test_pr_1905.py b/tests/bugfixes/github/test_pr_1905.py new file mode 100644 index 0000000000..77b264f53f --- /dev/null +++ b/tests/bugfixes/github/test_pr_1905.py @@ -0,0 +1,402 @@ +# -*- coding: utf-8 -*- + +from system_tests import CaseMeta, path + +class TestExifTagsInTaglist(metaclass=CaseMeta): + +# The taglist program outputs lots of data on all Exif tags. +# Extract only the keys and compare + filename = "$tmp_path/TestExifTagsInTaglist.txt" + commands = ["$taglist Exif > $filename", + "cut -d, -f5 $filename"] + + stdout = ["""""", +"""Exif.Image.ProcessingSoftware +Exif.Image.NewSubfileType +Exif.Image.SubfileType +Exif.Image.ImageWidth +Exif.Image.ImageLength +Exif.Image.BitsPerSample +Exif.Image.Compression +Exif.Image.PhotometricInterpretation +Exif.Image.Thresholding +Exif.Image.CellWidth +Exif.Image.CellLength +Exif.Image.FillOrder +Exif.Image.DocumentName +Exif.Image.ImageDescription +Exif.Image.Make +Exif.Image.Model +Exif.Image.StripOffsets +Exif.Image.Orientation +Exif.Image.SamplesPerPixel +Exif.Image.RowsPerStrip +Exif.Image.StripByteCounts +Exif.Image.XResolution +Exif.Image.YResolution +Exif.Image.PlanarConfiguration +Exif.Image.PageName +Exif.Image.XPosition +Exif.Image.YPosition +Exif.Image.GrayResponseUnit +Exif.Image.GrayResponseCurve +Exif.Image.T4Options +Exif.Image.T6Options +Exif.Image.ResolutionUnit +Exif.Image.PageNumber +Exif.Image.TransferFunction +Exif.Image.Software +Exif.Image.DateTime +Exif.Image.Artist +Exif.Image.HostComputer +Exif.Image.Predictor +Exif.Image.WhitePoint +Exif.Image.PrimaryChromaticities +Exif.Image.ColorMap +Exif.Image.HalftoneHints +Exif.Image.TileWidth +Exif.Image.TileLength +Exif.Image.TileOffsets +Exif.Image.TileByteCounts +Exif.Image.SubIFDs +Exif.Image.InkSet +Exif.Image.InkNames +Exif.Image.NumberOfInks +Exif.Image.DotRange +Exif.Image.TargetPrinter +Exif.Image.ExtraSamples +Exif.Image.SampleFormat +Exif.Image.SMinSampleValue +Exif.Image.SMaxSampleValue +Exif.Image.TransferRange +Exif.Image.ClipPath +Exif.Image.XClipPathUnits +Exif.Image.YClipPathUnits +Exif.Image.Indexed +Exif.Image.JPEGTables +Exif.Image.OPIProxy +Exif.Image.JPEGProc +Exif.Image.JPEGInterchangeFormat +Exif.Image.JPEGInterchangeFormatLength +Exif.Image.JPEGRestartInterval +Exif.Image.JPEGLosslessPredictors +Exif.Image.JPEGPointTransforms +Exif.Image.JPEGQTables +Exif.Image.JPEGDCTables +Exif.Image.JPEGACTables +Exif.Image.YCbCrCoefficients +Exif.Image.YCbCrSubSampling +Exif.Image.YCbCrPositioning +Exif.Image.ReferenceBlackWhite +Exif.Image.XMLPacket +Exif.Image.Rating +Exif.Image.RatingPercent +Exif.Image.VignettingCorrParams +Exif.Image.ChromaticAberrationCorrParams +Exif.Image.DistortionCorrParams +Exif.Image.ImageID +Exif.Image.CFARepeatPatternDim +Exif.Image.CFAPattern +Exif.Image.BatteryLevel +Exif.Image.Copyright +Exif.Image.ExposureTime +Exif.Image.FNumber +Exif.Image.IPTCNAA +Exif.Image.ImageResources +Exif.Image.ExifTag +Exif.Image.InterColorProfile +Exif.Image.ExposureProgram +Exif.Image.SpectralSensitivity +Exif.Image.GPSTag +Exif.Image.ISOSpeedRatings +Exif.Image.OECF +Exif.Image.Interlace +Exif.Image.TimeZoneOffset +Exif.Image.SelfTimerMode +Exif.Image.DateTimeOriginal +Exif.Image.CompressedBitsPerPixel +Exif.Image.ShutterSpeedValue +Exif.Image.ApertureValue +Exif.Image.BrightnessValue +Exif.Image.ExposureBiasValue +Exif.Image.MaxApertureValue +Exif.Image.SubjectDistance +Exif.Image.MeteringMode +Exif.Image.LightSource +Exif.Image.Flash +Exif.Image.FocalLength +Exif.Image.FlashEnergy +Exif.Image.SpatialFrequencyResponse +Exif.Image.Noise +Exif.Image.FocalPlaneXResolution +Exif.Image.FocalPlaneYResolution +Exif.Image.FocalPlaneResolutionUnit +Exif.Image.ImageNumber +Exif.Image.SecurityClassification +Exif.Image.ImageHistory +Exif.Image.SubjectLocation +Exif.Image.ExposureIndex +Exif.Image.TIFFEPStandardID +Exif.Image.SensingMethod +Exif.Image.XPTitle +Exif.Image.XPComment +Exif.Image.XPAuthor +Exif.Image.XPKeywords +Exif.Image.XPSubject +Exif.Image.PrintImageMatching +Exif.Image.DNGVersion +Exif.Image.DNGBackwardVersion +Exif.Image.UniqueCameraModel +Exif.Image.LocalizedCameraModel +Exif.Image.CFAPlaneColor +Exif.Image.CFALayout +Exif.Image.LinearizationTable +Exif.Image.BlackLevelRepeatDim +Exif.Image.BlackLevel +Exif.Image.BlackLevelDeltaH +Exif.Image.BlackLevelDeltaV +Exif.Image.WhiteLevel +Exif.Image.DefaultScale +Exif.Image.DefaultCropOrigin +Exif.Image.DefaultCropSize +Exif.Image.ColorMatrix1 +Exif.Image.ColorMatrix2 +Exif.Image.CameraCalibration1 +Exif.Image.CameraCalibration2 +Exif.Image.ReductionMatrix1 +Exif.Image.ReductionMatrix2 +Exif.Image.AnalogBalance +Exif.Image.AsShotNeutral +Exif.Image.AsShotWhiteXY +Exif.Image.BaselineExposure +Exif.Image.BaselineNoise +Exif.Image.BaselineSharpness +Exif.Image.BayerGreenSplit +Exif.Image.LinearResponseLimit +Exif.Image.CameraSerialNumber +Exif.Image.LensInfo +Exif.Image.ChromaBlurRadius +Exif.Image.AntiAliasStrength +Exif.Image.ShadowScale +Exif.Image.DNGPrivateData +Exif.Image.MakerNoteSafety +Exif.Image.CalibrationIlluminant1 +Exif.Image.CalibrationIlluminant2 +Exif.Image.BestQualityScale +Exif.Image.RawDataUniqueID +Exif.Image.OriginalRawFileName +Exif.Image.OriginalRawFileData +Exif.Image.ActiveArea +Exif.Image.MaskedAreas +Exif.Image.AsShotICCProfile +Exif.Image.AsShotPreProfileMatrix +Exif.Image.CurrentICCProfile +Exif.Image.CurrentPreProfileMatrix +Exif.Image.ColorimetricReference +Exif.Image.CameraCalibrationSignature +Exif.Image.ProfileCalibrationSignature +Exif.Image.ExtraCameraProfiles +Exif.Image.AsShotProfileName +Exif.Image.NoiseReductionApplied +Exif.Image.ProfileName +Exif.Image.ProfileHueSatMapDims +Exif.Image.ProfileHueSatMapData1 +Exif.Image.ProfileHueSatMapData2 +Exif.Image.ProfileToneCurve +Exif.Image.ProfileEmbedPolicy +Exif.Image.ProfileCopyright +Exif.Image.ForwardMatrix1 +Exif.Image.ForwardMatrix2 +Exif.Image.PreviewApplicationName +Exif.Image.PreviewApplicationVersion +Exif.Image.PreviewSettingsName +Exif.Image.PreviewSettingsDigest +Exif.Image.PreviewColorSpace +Exif.Image.PreviewDateTime +Exif.Image.RawImageDigest +Exif.Image.OriginalRawFileDigest +Exif.Image.SubTileBlockSize +Exif.Image.RowInterleaveFactor +Exif.Image.ProfileLookTableDims +Exif.Image.ProfileLookTableData +Exif.Image.OpcodeList1 +Exif.Image.OpcodeList2 +Exif.Image.OpcodeList3 +Exif.Image.NoiseProfile +Exif.Image.TimeCodes +Exif.Image.FrameRate +Exif.Image.TStop +Exif.Image.ReelName +Exif.Image.CameraLabel +Exif.Image.OriginalDefaultFinalSize +Exif.Image.OriginalBestQualityFinalSize +Exif.Image.OriginalDefaultCropSize +Exif.Image.ProfileHueSatMapEncoding +Exif.Image.ProfileLookTableEncoding +Exif.Image.BaselineExposureOffset +Exif.Image.DefaultBlackRender +Exif.Image.NewRawImageDigest +Exif.Image.RawToPreviewGain +Exif.Image.DefaultUserCrop +Exif.Image.DepthFormat +Exif.Image.DepthNear +Exif.Image.DepthFar +Exif.Image.DepthUnits +Exif.Image.DepthMeasureType +Exif.Image.EnhanceParams +Exif.Image.ProfileGainTableMap +Exif.Image.SemanticName +Exif.Image.SemanticInstanceID +Exif.Image.CalibrationIlluminant3 +Exif.Image.CameraCalibration3 +Exif.Image.ColorMatrix3 +Exif.Image.ForwardMatrix3 +Exif.Image.IlluminantData1 +Exif.Image.IlluminantData2 +Exif.Image.IlluminantData3 +Exif.Image.ProfileHueSatMapData3 +Exif.Image.ReductionMatrix3 +Exif.Photo.ExposureTime +Exif.Photo.FNumber +Exif.Photo.ExposureProgram +Exif.Photo.SpectralSensitivity +Exif.Photo.ISOSpeedRatings +Exif.Photo.OECF +Exif.Photo.SensitivityType +Exif.Photo.StandardOutputSensitivity +Exif.Photo.RecommendedExposureIndex +Exif.Photo.ISOSpeed +Exif.Photo.ISOSpeedLatitudeyyy +Exif.Photo.ISOSpeedLatitudezzz +Exif.Photo.ExifVersion +Exif.Photo.DateTimeOriginal +Exif.Photo.DateTimeDigitized +Exif.Photo.OffsetTime +Exif.Photo.OffsetTimeOriginal +Exif.Photo.OffsetTimeDigitized +Exif.Photo.ComponentsConfiguration +Exif.Photo.CompressedBitsPerPixel +Exif.Photo.ShutterSpeedValue +Exif.Photo.ApertureValue +Exif.Photo.BrightnessValue +Exif.Photo.ExposureBiasValue +Exif.Photo.MaxApertureValue +Exif.Photo.SubjectDistance +Exif.Photo.MeteringMode +Exif.Photo.LightSource +Exif.Photo.Flash +Exif.Photo.FocalLength +Exif.Photo.SubjectArea +Exif.Photo.MakerNote +Exif.Photo.UserComment +Exif.Photo.SubSecTime +Exif.Photo.SubSecTimeOriginal +Exif.Photo.SubSecTimeDigitized +Exif.Photo.Temperature +Exif.Photo.Humidity +Exif.Photo.Pressure +Exif.Photo.WaterDepth +Exif.Photo.Acceleration +Exif.Photo.CameraElevationAngle +Exif.Photo.FlashpixVersion +Exif.Photo.ColorSpace +Exif.Photo.PixelXDimension +Exif.Photo.PixelYDimension +Exif.Photo.RelatedSoundFile +Exif.Photo.InteroperabilityTag +Exif.Photo.FlashEnergy +Exif.Photo.SpatialFrequencyResponse +Exif.Photo.FocalPlaneXResolution +Exif.Photo.FocalPlaneYResolution +Exif.Photo.FocalPlaneResolutionUnit +Exif.Photo.SubjectLocation +Exif.Photo.ExposureIndex +Exif.Photo.SensingMethod +Exif.Photo.FileSource +Exif.Photo.SceneType +Exif.Photo.CFAPattern +Exif.Photo.CustomRendered +Exif.Photo.ExposureMode +Exif.Photo.WhiteBalance +Exif.Photo.DigitalZoomRatio +Exif.Photo.FocalLengthIn35mmFilm +Exif.Photo.SceneCaptureType +Exif.Photo.GainControl +Exif.Photo.Contrast +Exif.Photo.Saturation +Exif.Photo.Sharpness +Exif.Photo.DeviceSettingDescription +Exif.Photo.SubjectDistanceRange +Exif.Photo.ImageUniqueID +Exif.Photo.CameraOwnerName +Exif.Photo.BodySerialNumber +Exif.Photo.LensSpecification +Exif.Photo.LensMake +Exif.Photo.LensModel +Exif.Photo.LensSerialNumber +Exif.Photo.CompositeImage +Exif.Photo.SourceImageNumberOfCompositeImage +Exif.Photo.SourceExposureTimesOfCompositeImage +Exif.Photo.Gamma +Exif.Iop.InteroperabilityIndex +Exif.Iop.InteroperabilityVersion +Exif.Iop.RelatedImageFileFormat +Exif.Iop.RelatedImageWidth +Exif.Iop.RelatedImageLength +Exif.GPSInfo.GPSVersionID +Exif.GPSInfo.GPSLatitudeRef +Exif.GPSInfo.GPSLatitude +Exif.GPSInfo.GPSLongitudeRef +Exif.GPSInfo.GPSLongitude +Exif.GPSInfo.GPSAltitudeRef +Exif.GPSInfo.GPSAltitude +Exif.GPSInfo.GPSTimeStamp +Exif.GPSInfo.GPSSatellites +Exif.GPSInfo.GPSStatus +Exif.GPSInfo.GPSMeasureMode +Exif.GPSInfo.GPSDOP +Exif.GPSInfo.GPSSpeedRef +Exif.GPSInfo.GPSSpeed +Exif.GPSInfo.GPSTrackRef +Exif.GPSInfo.GPSTrack +Exif.GPSInfo.GPSImgDirectionRef +Exif.GPSInfo.GPSImgDirection +Exif.GPSInfo.GPSMapDatum +Exif.GPSInfo.GPSDestLatitudeRef +Exif.GPSInfo.GPSDestLatitude +Exif.GPSInfo.GPSDestLongitudeRef +Exif.GPSInfo.GPSDestLongitude +Exif.GPSInfo.GPSDestBearingRef +Exif.GPSInfo.GPSDestBearing +Exif.GPSInfo.GPSDestDistanceRef +Exif.GPSInfo.GPSDestDistance +Exif.GPSInfo.GPSProcessingMethod +Exif.GPSInfo.GPSAreaInformation +Exif.GPSInfo.GPSDateStamp +Exif.GPSInfo.GPSDifferential +Exif.GPSInfo.GPSHPositioningError +Exif.MpfInfo.MPFVersion +Exif.MpfInfo.MPFNumberOfImages +Exif.MpfInfo.MPFImageList +Exif.MpfInfo.MPFImageUIDList +Exif.MpfInfo.MPFTotalFrames +Exif.MpfInfo.MPFIndividualNum +Exif.MpfInfo.MPFPanOrientation +Exif.MpfInfo.MPFPanOverlapH +Exif.MpfInfo.MPFPanOverlapV +Exif.MpfInfo.MPFBaseViewpointNum +Exif.MpfInfo.MPFConvergenceAngle +Exif.MpfInfo.MPFBaselineLength +Exif.MpfInfo.MPFVerticalDivergence +Exif.MpfInfo.MPFAxisDistanceX +Exif.MpfInfo.MPFAxisDistanceY +Exif.MpfInfo.MPFAxisDistanceZ +Exif.MpfInfo.MPFYawAngle +Exif.MpfInfo.MPFPitchAngle +Exif.MpfInfo.MPFRollAngle +""" + ] + stderr = ["", + ""] + retval = [0, + 0] From bb9fc4098a8e87463d2b6317d3d2cc5f41204d87 Mon Sep 17 00:00:00 2001 From: postscript-dev Date: Thu, 16 Sep 2021 22:10:02 +0100 Subject: [PATCH 3/3] Add missing Canon/Nikon/Samsung/Sony Groups to docs --- doc/templates/Makefile | 3 +++ doc/templates/tags-canon.html.in | 5 +++++ doc/templates/tags-nikon.html.in | 9 +++++++++ doc/templates/tags-samsung.html.in | 3 +++ doc/templates/tags-sony.html.in | 32 +++++++++++++++++++++++++++++- 5 files changed, 51 insertions(+), 1 deletion(-) diff --git a/doc/templates/Makefile b/doc/templates/Makefile index 5f68898a6d..04dea6a2ff 100644 --- a/doc/templates/Makefile +++ b/doc/templates/Makefile @@ -53,6 +53,7 @@ TABLES = Exif \ CanonFi \ CanonPa \ CanonPr \ + CanonTi \ Casio \ Casio2 \ Fujifilm \ @@ -89,6 +90,7 @@ TABLES = Exif \ NikonLd1 \ NikonLd2 \ NikonLd3 \ + NikonLd4 \ Olympus \ OlympusCs \ OlympusEq \ @@ -108,6 +110,7 @@ TABLES = Exif \ SonyMinolta \ Sony1Cs \ Sony1Cs2 \ + Sony2010e \ Sony1MltCs7D \ Sony1MltCsOld \ Sony1MltCsA100 \ diff --git a/doc/templates/tags-canon.html.in b/doc/templates/tags-canon.html.in index 629b5a1d49..ff2a07ce3b 100644 --- a/doc/templates/tags-canon.html.in +++ b/doc/templates/tags-canon.html.in @@ -49,6 +49,11 @@ __CanonFi__ __CanonPr__
+

Canon TimeInfo Tags

+

Click on a column header to sort the table.

+__CanonTi__ +
+ diff --git a/doc/templates/tags-nikon.html.in b/doc/templates/tags-nikon.html.in index f7559e45f6..9110c249ef 100644 --- a/doc/templates/tags-nikon.html.in +++ b/doc/templates/tags-nikon.html.in @@ -161,6 +161,15 @@ __NikonLd2__ __NikonLd3__
+

Nikon Lens Data 4 Tags

+

Click on a column header to sort the table.

+__NikonLd4__ +
+ +

Nikon Preview Tags

+

These are the same as Exif.Image.* but are accessed as Exif.NikonPv.*

+
+ diff --git a/doc/templates/tags-samsung.html.in b/doc/templates/tags-samsung.html.in index 11a86f1daf..2cb698345c 100644 --- a/doc/templates/tags-samsung.html.in +++ b/doc/templates/tags-samsung.html.in @@ -19,6 +19,9 @@ __Samsung2__ __SamsungPictureWizard__
+

Samsung Preview Tags

+

These are the same as Exif.Image.* but are accessed as Exif.SamsungPreview.*

+
diff --git a/doc/templates/tags-sony.html.in b/doc/templates/tags-sony.html.in index 4af010f76c..521a5d6c59 100644 --- a/doc/templates/tags-sony.html.in +++ b/doc/templates/tags-sony.html.in @@ -8,7 +8,7 @@ __index1__ __index2__

Sony MakerNote Tags defined in Exiv2

-

Tags found in the MakerNote of images taken with Sony cameras.

+

Tags found in the MakerNote of images taken with Sony cameras. Sony1 and Sony2 Groups share the same tagnames

Click on a column header to sort the table.

__Sony1__ @@ -31,6 +31,11 @@ __Sony1Cs__ __Sony1Cs2__
+

Sony 2010e Camera Settings Tags

+

Click on a column header to sort the table.

+__Sony2010e__ +
+

Sony Minolta Camera Settings Tags

These are the same tags as the Minolta Camera Settings in the Minolta MakerNote. In Sony images the group name is Sony1MltCsOld or Sony1MltCsNew.

@@ -50,6 +55,31 @@ __Sony1MltCs7D__ __Sony1MltCsA100__
+

Sony Focus Position 2 Tags

+

Click on a column header to sort the table.

+__Sony2Fp__ +
+ +

Sony Miscellaneous 1 Tags

+

Click on a column header to sort the table.

+__SonyMisc1__ +
+ +

Sony Miscellaneous 2b Tags

+

Click on a column header to sort the table.

+__SonyMisc2b__ +
+ +

Sony Miscellaneous 3c Tags

+

Click on a column header to sort the table.

+__SonyMisc3c__ +
+ +

Sony Shot Info 1 Tags

+

Click on a column header to sort the table.

+__SonySInfo1__ +
+