exiftool_vendored 12.62.0 → 12.64.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +50 -1
  3. data/bin/MANIFEST +4 -0
  4. data/bin/META.json +4 -1
  5. data/bin/META.yml +4 -1
  6. data/bin/Makefile.PL +7 -1
  7. data/bin/README +50 -46
  8. data/bin/config_files/guano.config +161 -0
  9. data/bin/exiftool +88 -62
  10. data/bin/lib/Image/ExifTool/7Z.pm +793 -0
  11. data/bin/lib/Image/ExifTool/Apple.pm +6 -3
  12. data/bin/lib/Image/ExifTool/Canon.pm +1 -0
  13. data/bin/lib/Image/ExifTool/CanonRaw.pm +4 -4
  14. data/bin/lib/Image/ExifTool/CanonVRD.pm +4 -1
  15. data/bin/lib/Image/ExifTool/Exif.pm +31 -14
  16. data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -3
  17. data/bin/lib/Image/ExifTool/GPS.pm +5 -2
  18. data/bin/lib/Image/ExifTool/Geotag.pm +4 -1
  19. data/bin/lib/Image/ExifTool/Jpeg2000.pm +226 -28
  20. data/bin/lib/Image/ExifTool/Lang/fr.pm +1467 -202
  21. data/bin/lib/Image/ExifTool/MPF.pm +2 -1
  22. data/bin/lib/Image/ExifTool/Matroska.pm +16 -1
  23. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  24. data/bin/lib/Image/ExifTool/Nikon.pm +419 -5
  25. data/bin/lib/Image/ExifTool/NikonCustom.pm +13 -3
  26. data/bin/lib/Image/ExifTool/PDF.pm +9 -1
  27. data/bin/lib/Image/ExifTool/PLIST.pm +8 -1
  28. data/bin/lib/Image/ExifTool/PNG.pm +6 -6
  29. data/bin/lib/Image/ExifTool/PhaseOne.pm +5 -5
  30. data/bin/lib/Image/ExifTool/QuickTime.pm +74 -21
  31. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -19
  32. data/bin/lib/Image/ExifTool/README +2 -2
  33. data/bin/lib/Image/ExifTool/RIFF.pm +11 -9
  34. data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
  35. data/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  36. data/bin/lib/Image/ExifTool/Sony.pm +103 -8
  37. data/bin/lib/Image/ExifTool/TagLookup.pm +4738 -4630
  38. data/bin/lib/Image/ExifTool/TagNames.pod +249 -5
  39. data/bin/lib/Image/ExifTool/Validate.pm +17 -1
  40. data/bin/lib/Image/ExifTool/WriteExif.pl +9 -7
  41. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +21 -9
  42. data/bin/lib/Image/ExifTool/WriteXMP.pl +2 -2
  43. data/bin/lib/Image/ExifTool/Writer.pl +28 -10
  44. data/bin/lib/Image/ExifTool/XMP.pm +14 -2
  45. data/bin/lib/Image/ExifTool/XMP2.pl +32 -0
  46. data/bin/lib/Image/ExifTool/XMPStruct.pl +96 -28
  47. data/bin/lib/Image/ExifTool/ZIP.pm +5 -5
  48. data/bin/lib/Image/ExifTool.pm +67 -39
  49. data/bin/lib/Image/ExifTool.pod +83 -52
  50. data/bin/perl-Image-ExifTool.spec +44 -44
  51. data/lib/exiftool_vendored/version.rb +1 -1
  52. metadata +4 -2
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 26407 tags, with 16869 unique tag names.
15
+ They contain a total of 26591 tags, with 16966 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -798,6 +798,13 @@ for the official EXIF 2.32 specification.
798
798
  0xa433 LensMake ExifIFD string
799
799
  0xa434 LensModel ExifIFD string
800
800
  0xa435 LensSerialNumber ExifIFD string
801
+ 0xa436 Title ExifIFD string/
802
+ 0xa437 Photographer ExifIFD string
803
+ 0xa438 ImageEditor ExifIFD string
804
+ 0xa439 CameraFirmware ExifIFD string
805
+ 0xa43a RAWDevelopingSoftware ExifIFD string
806
+ 0xa43b ImageEditingSoftware ExifIFD string
807
+ 0xa43c MetadataEditingSoftware ExifIFD string
801
808
  0xa460 CompositeImage ExifIFD int16u
802
809
  0xa461 CompositeImageCount ExifIFD int16u[2]
803
810
  0xa462 CompositeImageExposureTimes ExifIFD undef
@@ -1306,6 +1313,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
1306
1313
  GPano XMP GPano
1307
1314
  GSpherical XMP GSpherical
1308
1315
  hdr XMP hdr
1316
+ hdrgm XMP hdrgm
1309
1317
  ics XMP ics
1310
1318
  iptcCore XMP iptcCore
1311
1319
  iptcExt XMP iptcExt
@@ -1319,6 +1327,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
1319
1327
  mwg-kw MWG Keywords
1320
1328
  mwg-rs MWG Regions
1321
1329
  nine Nikon nine
1330
+ panorama XMP panorama
1322
1331
  pdf XMP pdf
1323
1332
  pdfx XMP pdfx
1324
1333
  photomech PhotoMechanic XMP
@@ -4047,6 +4056,8 @@ These tags belong to the ExifTool XMP-et family 1 group.
4047
4056
 
4048
4057
  Tag Name Writable
4049
4058
  -------- --------
4059
+ OriginalImageHash string
4060
+ OriginalImageHashType string
4050
4061
  OriginalImageMD5 string
4051
4062
 
4052
4063
  =head3 XMP exif Tags
@@ -4498,6 +4509,24 @@ These tags belong to the ExifTool XMP-hdr family 1 group.
4498
4509
  CCVWhiteXY string
4499
4510
  SceneReferred boolean
4500
4511
 
4512
+ =head3 XMP hdrgm Tags
4513
+
4514
+ Tags used in Adobe gain map images.
4515
+
4516
+ These tags belong to the ExifTool XMP-hdrgm family 1 group.
4517
+
4518
+ Tag Name Writable
4519
+ -------- --------
4520
+ BaseRenditionIsHDR boolean
4521
+ GainMapMax real+
4522
+ GainMapMin real+
4523
+ Gamma real/+
4524
+ HDRCapacityMax real
4525
+ HDRCapacityMin real
4526
+ OffsetHDR real+
4527
+ OffsetSDR real+
4528
+ Version string/
4529
+
4501
4530
  =head3 XMP ics Tags
4502
4531
 
4503
4532
  Tags used by IDimager. Nested TagStructure structures are unrolled to an
@@ -5127,6 +5156,19 @@ These tags belong to the ExifTool XMP-mediapro family 1 group.
5127
5156
  Status string
5128
5157
  UserFields string+
5129
5158
 
5159
+ =head3 XMP panorama Tags
5160
+
5161
+ Adobe Photoshop Panorama-profile tags.
5162
+
5163
+ These tags belong to the ExifTool XMP-panorama family 1 group.
5164
+
5165
+ Tag Name Writable
5166
+ -------- --------
5167
+ Transformation string
5168
+ VirtualFocalLength real
5169
+ VirtualImageXCenter real
5170
+ VirtualImageYCenter real
5171
+
5130
5172
  =head3 XMP pdf Tags
5131
5173
 
5132
5174
  Adobe PDF namespace tags. The official XMP specification defines only
@@ -7157,6 +7199,7 @@ Tags extracted from the maker notes of iPhone images.
7157
7199
  0x0025 SceneFlags? int32s
7158
7200
  0x0026 SignalToNoiseRatioType? int32s
7159
7201
  0x0027 SignalToNoiseRatio rational64s
7202
+ 0x002b PhotoIdentifier string
7160
7203
  0x002f FocusPosition int32s
7161
7204
  0x0030 HDRGain rational64s
7162
7205
  0x0038 AFMeasuredDepth int32s
@@ -14673,6 +14716,7 @@ These tags are extracted from encrypted data in images from the Z9.
14673
14716
  4 FirmwareVersion no
14674
14717
  48 SequenceOffset Nikon SeqInfoZ9
14675
14718
  88 Offset13 Nikon Offset13InfoZ9
14719
+ 128 AutoCaptureOffset Nikon AutoCaptureInfo
14676
14720
  132 OrientOffset Nikon OrientationInfo
14677
14721
  140 MenuOffset Nikon MenuInfoZ9
14678
14722
 
@@ -14692,6 +14736,21 @@ These tags are extracted from encrypted data in images from the Z9.
14692
14736
  3050 AFAreaInitialWidth no
14693
14737
  3051 AFAreaInitialHeight no
14694
14738
 
14739
+ =head3 Nikon AutoCaptureInfo Tags
14740
+
14741
+ Index1 Tag Name Writable
14742
+ ------ -------- --------
14743
+ 1 AutoCaptureCriteria int8u~
14744
+ 55 AutoCaptureRecordingTime int8u
14745
+ 56 AutoCaptureWaitTime int8u
14746
+ 74 AutoCaptureDistanceFar int8u~
14747
+ 78 AutoCaptureDistanceNear int8u~
14748
+ 95 AutoCaptureCriteriaMotionDirection int8u~
14749
+ 99 AutoCaptureCriteriaMotionSpeed int8u
14750
+ 100 AutoCaptureCriteriaMotionSize int8u
14751
+ 105 AutoCaptureCriteriaSubjectSize int8u
14752
+ 106 AutoCaptureCriteriaSubjectType int8u
14753
+
14695
14754
  =head3 Nikon MenuInfoZ9 Tags
14696
14755
 
14697
14756
  Index1 Tag Name Writable
@@ -14699,6 +14758,8 @@ These tags are extracted from encrypted data in images from the Z9.
14699
14758
  16 MenuSettingsOffsetZ9 Nikon MenuSettingsZ9
14700
14759
  MenuSettingsOffsetZ9v3 -
14701
14760
  Nikon MenuSettingsZ9v3
14761
+ -
14762
+ Nikon MenuSettingsZ9v4
14702
14763
 
14703
14764
  =head3 Nikon MenuSettingsZ9 Tags
14704
14765
 
@@ -14858,6 +14919,144 @@ These tags are used by the Z9 firmware 3.00.
14858
14919
  1810 PreReleaseBurstLength int8u
14859
14920
  1812 PostReleaseBurstLength int8u
14860
14921
 
14922
+ =head3 Nikon MenuSettingsZ9v4 Tags
14923
+
14924
+ These tags are used by the Z9 firmware 3.00.
14925
+
14926
+ Index1 Tag Name Writable
14927
+ --------------- --------
14928
+ 72 HighFrameRate int8u
14929
+ 154 MultipleExposureMode int8u
14930
+ 156 MultiExposureShots int8u
14931
+ 204 Intervals int32u
14932
+ 208 ShotsPerInterval int32u
14933
+ 248 FocusShiftNumberShots int8u
14934
+ 252 FocusShiftStepWidth int8u
14935
+ 256 FocusShiftInterval int8u~
14936
+ 260 FocusShiftExposureLock? int8u
14937
+ 290 PhotoShootingMenuBank int8u
14938
+ 292 ExtendedMenuBanks int8u
14939
+ 328 PhotoShootingMenuBankImageArea int8u
14940
+ 342 AutoISO int8u
14941
+ 344 ISOAutoHiLimit? int16u
14942
+ 346 ISOAutoFlashLimit? int16u
14943
+ 354 ISOAutoShutterTime no
14944
+ 436 MovieVignetteControl? int8u
14945
+ 438 DiffractionCompensation int8u
14946
+ 440 FlickerReductionShooting int8u
14947
+ 444 FlashControlMode int8u
14948
+ 446 FlashMasterCompensation? int8s
14949
+ 450 FlashGNDistance? no
14950
+ 454 FlashOutput? int8u
14951
+ 548 AFAreaMode int8u
14952
+ 550 VRMode int8u
14953
+ 554 BracketSet int8u
14954
+ 556 BracketProgram int8u
14955
+ 558 BracketIncrement int8u
14956
+ 576 SecondarySlotFunction int8u
14957
+ 586 Slot2JpgSize? int8u
14958
+ 592 DXCropAlert int8u
14959
+ 594 SubjectDetection int8u
14960
+ 596 DynamicAFAreaSize int8u
14961
+ 636 HighFrequencyFlickerReductionShooting? int8u
14962
+ 646 MovieImageArea? int8u & 0x01
14963
+ 656 MovieType? int8u
14964
+ 658 MovieISOAutoHiLimit? int16u
14965
+ 660 MovieISOAutoControlManualMode? int8u
14966
+ 662 MovieISOAutoManualMode? int16u
14967
+ 736 MovieActiveD-Lighting? int8u
14968
+ 738 MovieHighISONoiseReduction? int8u
14969
+ 744 MovieFlickerReduction int8u
14970
+ 746 MovieMeteringMode? int8u
14971
+ 748 MovieFocusMode? int8u
14972
+ 750 MovieAFAreaMode int8u
14973
+ 752 MovieVRMode? int8u
14974
+ 756 MovieElectronicVR? int8u
14975
+ 758 MovieSoundRecording? int8u
14976
+ 760 MicrophoneSensitivity? int8u
14977
+ 762 MicrophoneAttenuator? int8u
14978
+ 764 MicrophoneFrequencyResponse? int8u
14979
+ 766 WindNoiseReduction? int8u
14980
+ 788 MovieToneMap? int8u
14981
+ 794 MovieFrameSize? int8u
14982
+ 796 MovieFrameRate? int8u
14983
+ 802 MicrophoneJackPower? int8u
14984
+ 803 MovieDXCropAlert? int8u
14985
+ 804 MovieSubjectDetection? int8u
14986
+ 812 MovieHighResZoom? int8u
14987
+ 847 CustomSettingsZ9 NikonCustom SettingsZ9
14988
+ 1474 Language? int8u
14989
+ 1476 TimeZone int8u
14990
+ 1482 MonitorBrightness? int8u
14991
+ 1504 AFFineTune? int8u
14992
+ 1532 NonCPULens1FocalLength? int16s~
14993
+ 1536 NonCPULens2FocalLength? int16s~
14994
+ 1540 NonCPULens3FocalLength? int16s~
14995
+ 1544 NonCPULens4FocalLength? int16s~
14996
+ 1548 NonCPULens5FocalLength? int16s~
14997
+ 1552 NonCPULens6FocalLength? int16s~
14998
+ 1556 NonCPULens7FocalLength? int16s~
14999
+ 1560 NonCPULens8FocalLength? int16s~
15000
+ 1564 NonCPULens9FocalLength? int16s~
15001
+ 1568 NonCPULens10FocalLength? int16s~
15002
+ 1572 NonCPULens11FocalLength? int16s~
15003
+ 1576 NonCPULens21FocalLength? int16s~
15004
+ 1580 NonCPULens13FocalLength? int16s~
15005
+ 1584 NonCPULens14FocalLength? int16s~
15006
+ 1588 NonCPULens15FocalLength? int16s~
15007
+ 1592 NonCPULens16FocalLength? int16s~
15008
+ 1596 NonCPULens17FocalLength? int16s~
15009
+ 1600 NonCPULens18FocalLength? int16s~
15010
+ 1604 NonCPULens19FocalLength? int16s~
15011
+ 1608 NonCPULens20FocalLength? int16s~
15012
+ 1612 NonCPULens1MaxAperture? int16s~
15013
+ 1616 NonCPULens2MaxAperture? int16s~
15014
+ 1620 NonCPULens3MaxAperture? int16s~
15015
+ 1624 NonCPULens4MaxAperture? int16s~
15016
+ 1628 NonCPULens5MaxAperture? int16s~
15017
+ 1632 NonCPULens6MaxAperture? int16s~
15018
+ 1636 NonCPULens7MaxAperture? int16s~
15019
+ 1640 NonCPULens8MaxAperture? int16s~
15020
+ 1644 NonCPULens9MaxAperture? int16s~
15021
+ 1648 NonCPULens10MaxAperture? int16s~
15022
+ 1652 NonCPULens11MaxAperture? int16s~
15023
+ 1656 NonCPULens12MaxAperture? int16s~
15024
+ 1660 NonCPULens13MaxAperture? int16s~
15025
+ 1664 NonCPULens14MaxAperture? int16s~
15026
+ 1668 NonCPULens15MaxAperture? int16s~
15027
+ 1672 NonCPULens16MaxAperture? int16s~
15028
+ 1676 NonCPULens17MaxAperture? int16s~
15029
+ 1680 NonCPULens18MaxAperture? int16s~
15030
+ 1684 NonCPULens19MaxAperture? int16s~
15031
+ 1688 NonCPULens20MaxAperture? int16s~
15032
+ 1704 HDMIOutputResolution int8u
15033
+ 1717 SetClockFromLocationData? int8u
15034
+ 1724 AirplaneMode? int8u
15035
+ 1725 EmptySlotRelease? int8u
15036
+ 1760 EnergySavingMode? int8u
15037
+ 1784 RecordLocationData? int8u
15038
+ 1788 USBPowerDelivery? int8u
15039
+ 1797 SensorShield? int8u
15040
+ 1862 AutoCapturePreset int8u
15041
+ 1864 FocusShiftAutoReset? int8u
15042
+ 1922 PreReleaseBurstLength int8u
15043
+ 1924 PostReleaseBurstLength int8u
15044
+ 1938 VerticalISOButton int8u
15045
+ 1940 ExposureCompensationButton int8u
15046
+ 1942 ISOButton int8u
15047
+ 2002 ViewModeShowEffectsOfSettings? int8u
15048
+ 2004 DispButton int8u
15049
+ 2048 ExposureDelay fixed32u~
15050
+ 2056 PlaybackButton int8u
15051
+ 2058 WBButton int8u
15052
+ 2060 BracketButton int8u
15053
+ 2062 FlashModeButton int8u
15054
+ 2064 LensFunc1ButtonPlaybackMode int8u
15055
+ 2066 LensFunc2ButtonPlaybackMode int8u
15056
+ 2068 PlaybackButtonPlaybackMode int8u
15057
+ 2070 BracketButtonPlaybackMode int8u
15058
+ 2072 FlashModeButtonPlaybackMode int8u
15059
+
14861
15060
  =head3 Nikon ShotInfo Tags
14862
15061
 
14863
15062
  This information is encrypted for ShotInfoVersion 02xx, and some tags are
@@ -20439,6 +20638,8 @@ WX300, but not for panorama images.
20439
20638
  6294 LensType int16u
20440
20639
  6296 DistortionCorrParamsPresent int8u
20441
20640
  6297 DistortionCorrParamsNumber int8u
20641
+ 6444 AspectRatio int8u
20642
+ 6792 AspectRatio int8u
20442
20643
 
20443
20644
  =head3 Sony Tag2010f Tags
20444
20645
 
@@ -20469,6 +20670,7 @@ Valid for DSC-RX100M2, DSC-QX10/QX100.
20469
20670
  4406 MinFocalLength int16u
20470
20671
  4408 MaxFocalLength int16u
20471
20672
  4412 SonyISO int16u
20673
+ 6444 AspectRatio int8u
20472
20674
 
20473
20675
  =head3 Sony Tag2010g Tags
20474
20676
 
@@ -20507,6 +20709,7 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.
20507
20709
  6338 LensType int16u
20508
20710
  6340 DistortionCorrParamsPresent int8u
20509
20711
  6341 DistortionCorrParamsNumber int8u
20712
+ 6488 AspectRatio int8u
20510
20713
 
20511
20714
  =head3 Sony Tag2010h Tags
20512
20715
 
@@ -20546,6 +20749,7 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.
20546
20749
  6386 LensType int16u
20547
20750
  6388 DistortionCorrParamsPresent int8u
20548
20751
  6389 DistortionCorrParamsNumber int8u
20752
+ 6444 AspectRatio int8u
20549
20753
 
20550
20754
  =head3 Sony Tag2010i Tags
20551
20755
 
@@ -20584,6 +20788,7 @@ RX100M5A/RX100M7/HX99.
20584
20788
  6134 LensType int16u
20585
20789
  6136 DistortionCorrParamsPresent int8u
20586
20790
  6137 DistortionCorrParamsNumber int8u
20791
+ 6284 AspectRatio int8u
20587
20792
 
20588
20793
  =head3 Sony MeterInfo9 Tags
20589
20794
 
@@ -20825,6 +21030,9 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
20825
21030
  42 Quality2 int8u
20826
21031
  71 SonyImageHeight int16u~
20827
21032
  83 ModelReleaseYear int8u~
21033
+ 307 ShutterType int8u
21034
+ 313 ShutterType int8u
21035
+ 319 ShutterType int8u
20828
21036
 
20829
21037
  =head3 Sony Tag9401 Tags
20830
21038
 
@@ -20836,6 +21044,7 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
20836
21044
  1181 ISOInfo Sony ISOInfo
20837
21045
  1185 ISOInfo Sony ISOInfo
20838
21046
  1186 ISOInfo Sony ISOInfo
21047
+ 1210 ISOInfo Sony ISOInfo
20839
21048
  1437 ISOInfo Sony ISOInfo
20840
21049
  1588 ISOInfo Sony ISOInfo
20841
21050
  1590 ISOInfo Sony ISOInfo
@@ -24104,7 +24313,10 @@ chunk.
24104
24313
 
24105
24314
  The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
24106
24315
  images, but not all of these are extracted. Note that ExifTool currently
24107
- writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
24316
+ writes only EXIF, IPTC and XMP tags in Jpeg2000 images, and EXIF and XMP in
24317
+ JXL images. ExifTool will read/write Brotli-compressed EXIF and XMP in JXL
24318
+ images, but the API Compress option must be set to create new EXIF and XMP
24319
+ in compressed format.
24108
24320
 
24109
24321
  Tag ID Tag Name Writable
24110
24322
  ------ -------- --------
@@ -24114,6 +24326,9 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
24114
24326
  'bfil' BinaryFilter no
24115
24327
  'bidb' BinaryData no
24116
24328
  'bpcc' BitsPerComponent no
24329
+ 'brob' BrotliXMP XMP
24330
+ BrotliEXIF EXIF
24331
+ BrotliJUMB Jpeg2000
24117
24332
  'c2sh' C2PASaltHash no
24118
24333
  'cbor' CBORData CBOR
24119
24334
  'cdef' ComponentDefinition no
@@ -24132,6 +24347,7 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
24132
24347
  'ftbl' FragmentTable no
24133
24348
  'ftyp' FileType Jpeg2000 FileType
24134
24349
  'gtso' GraphicsTechnologyStandardOutput no
24350
+ 'hrgm' GainMapImage no
24135
24351
  'ihdr' ImageHeader Jpeg2000 ImageHeader
24136
24352
  'inst' InstructionSet no
24137
24353
  'jP ' JP2Signature no
@@ -24145,6 +24361,7 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
24145
24361
  'jumb' JUMBFBox Jpeg2000
24146
24362
  'jumd' JUMBFDescr Jpeg2000 JUMD
24147
24363
  'jxlc' JXLCodestream no
24364
+ 'jxlp' PartialJXLCodestream no
24148
24365
  'lbl ' Label no
24149
24366
  'mdat' MediaData no
24150
24367
  'mp7b' MPEG7Binary no
@@ -28588,6 +28805,7 @@ and are not currently writable.
28588
28805
  'auxC' AuxiliaryImageType no
28589
28806
  'av1C' AV1Configuration QuickTime AV1Config
28590
28807
  'clap' CleanAperture no
28808
+ 'clli' ContentLightLevel QuickTime ContentLightLevel
28591
28809
  'colr' ICC_Profile ICC_Profile
28592
28810
  ColorRepresentation QuickTime ColorRep
28593
28811
  'hvcC' HEVCConfiguration QuickTime HEVCConfig
@@ -28611,6 +28829,13 @@ and are not currently writable.
28611
28829
  2.4 ChromaSamplePosition no
28612
28830
  3 InitialDelaySamples? no
28613
28831
 
28832
+ =head3 QuickTime ContentLightLevel Tags
28833
+
28834
+ Index2 Tag Name Writable
28835
+ ------ -------- --------
28836
+ 0 MaxContentLightLevel no
28837
+ 1 MaxPicAverageLightLevel no
28838
+
28614
28839
  =head3 QuickTime ColorRep Tags
28615
28840
 
28616
28841
  Index1 Tag Name Writable
@@ -28846,12 +29071,27 @@ atoms.
28846
29071
  24 AudioChannels no
28847
29072
  26 AudioBitsPerSample no
28848
29073
  32 AudioSampleRate no
29074
+ 'SA3D' SpatialAudio QuickTime SpatialAudio
28849
29075
  'chan' AudioChannelLayout QuickTime ChannelLayout
28850
29076
  'damr' DecodeConfig QuickTime DecodeConfig
28851
29077
  'pinf' PurchaseInfo QuickTime ProtectionInfo
28852
29078
  'sinf' ProtectionInfo QuickTime ProtectionInfo
28853
29079
  'wave' Wave QuickTime Wave
28854
29080
 
29081
+ =head3 QuickTime SpatialAudio Tags
29082
+
29083
+ Spatial Audio tags.
29084
+
29085
+ Index1 Tag Name Writable
29086
+ ------ -------- --------
29087
+ 0 SpatialAudioVersion no
29088
+ 1 AmbisonicType no
29089
+ 2 AmbisonicOrder no
29090
+ 6 AmbisonicChannelOrdering no
29091
+ 7 AmbisonicNormalization no
29092
+ 8 AmbisonicChannels no
29093
+ 12 AmbisonicChannelMap no
29094
+
28855
29095
  =head3 QuickTime ChannelLayout Tags
28856
29096
 
28857
29097
  Audio channel layout.
@@ -29607,6 +29847,7 @@ metadata to WEBP images, but can't yet write to other RIFF-based formats.
29607
29847
  'fmt ' AudioFormat RIFF AudioFormat
29608
29848
  'gps0' GPSTrack QuickTime Stream
29609
29849
  'gsen' GSensor QuickTime Stream
29850
+ 'guan' Guano no
29610
29851
  'iXML' IXML XMP XML
29611
29852
  'id3 ' ID3 ID3
29612
29853
  'inst' Instrument RIFF Instrument
@@ -31129,6 +31370,7 @@ L<https://www.matroska.org/technical/tagging.html>).
31129
31370
  'SCREENPLAY_BY' ScreenplayBy no
31130
31371
  'SORT_WITH' SortWith no
31131
31372
  'SOUND_ENGINEER' SoundEngineer no
31373
+ 'SPHERICAL-VIDEO' SphericalVideoXML XMP
31132
31374
  'SUBJECT' Subject no
31133
31375
  'SUBTITLE' Subtitle no
31134
31376
  'SUMMARY' Summary no
@@ -31142,6 +31384,7 @@ L<https://www.matroska.org/technical/tagging.html>).
31142
31384
  'TVDB' TVDB no
31143
31385
  'URL' URL no
31144
31386
  'WRITTEN_BY' WrittenBy no
31387
+ 'spherical-video' SphericalVideoXML XMP
31145
31388
 
31146
31389
  =head2 MOI Tags
31147
31390
 
@@ -37740,15 +37983,15 @@ These tags are extracted from RAR archive files.
37740
37983
 
37741
37984
  =head3 ZIP RAR5 Tags
37742
37985
 
37743
- These tags are extracted from RAR v5 archive files.
37986
+ These tags are extracted from RAR v5 and 7z archive files.
37744
37987
 
37745
37988
  Tag Name Writable
37746
37989
  -------- --------
37747
37990
  ArchivedFileName no
37748
37991
  CompressedSize no
37992
+ FileVersion no
37749
37993
  ModifyDate no
37750
37994
  OperatingSystem no
37751
- RARVersion no
37752
37995
  UncompressedSize no
37753
37996
 
37754
37997
  =head2 RTF Tags
@@ -38167,7 +38410,7 @@ FileName.
38167
38410
  ICC_Profile ICC_Profile yes!
38168
38411
  ID3Size File no
38169
38412
  IPTC IPTC yes!
38170
- ImageDataMD5 File no
38413
+ ImageDataHash File no
38171
38414
  ImageHeight File no
38172
38415
  ImageWidth File no
38173
38416
  JPEGDigest File no
@@ -38627,6 +38870,7 @@ for more details.
38627
38870
  IFD0:XPAuthor
38628
38871
  IFD0:XPKeywords
38629
38872
  IFD0:XPSubject
38873
+ ImageDataMD5 ImageDataHash yes
38630
38874
  LargeTags CanonVRD yes
38631
38875
  DLOData
38632
38876
  EXIF
@@ -17,7 +17,7 @@ package Image::ExifTool::Validate;
17
17
  use strict;
18
18
  use vars qw($VERSION %exifSpec);
19
19
 
20
- $VERSION = '1.20';
20
+ $VERSION = '1.21';
21
21
 
22
22
  use Image::ExifTool qw(:Utils);
23
23
  use Image::ExifTool::Exif;
@@ -56,6 +56,15 @@ use Image::ExifTool::Exif;
56
56
  0x212 => 1, 0x9204 => 1, 0xa210 => 1, 0xa500 => 221,
57
57
  0x213 => 1, 0x9205 => 1, 0xa214 => 1,
58
58
  0x214 => 1, 0x9206 => 1, 0xa215 => 1,
59
+
60
+ # new Exif 3.0 tags
61
+ 0xa436 => 300,
62
+ 0xa437 => 300,
63
+ 0xa438 => 300,
64
+ 0xa439 => 300,
65
+ 0xa43a => 300,
66
+ 0xa43b => 300,
67
+ 0xa43c => 300,
59
68
  );
60
69
 
61
70
  # GPSVersionID numbers when each tag was introduced
@@ -147,6 +156,13 @@ my %stdFormat = (
147
156
  0xc68d => 'int(16|32)u', 0xc791 => 'int(16|32)u',
148
157
  0xc68e => 'int(16|32)u', 0xc792 => 'int(16|32)u',
149
158
  0xc6d2 => '', 0xc793 => '(int16u|int32u|rational64u)',
159
+ # Exif 3.0 spec
160
+ 0x10e => 'string|utf8', 0xa430 => 'string|utf8', 0xa439 => 'string|utf8',
161
+ 0x10f => 'string|utf8', 0xa433 => 'string|utf8', 0xa43a => 'string|utf8',
162
+ 0x110 => 'string|utf8', 0xa434 => 'string|utf8', 0xa43b => 'string|utf8',
163
+ 0x131 => 'string|utf8', 0xa436 => 'string|utf8', 0xa43c => 'string|utf8',
164
+ 0x13b => 'string|utf8', 0xa437 => 'string|utf8', 0xa43a => 'string|utf8',
165
+ 0x8298 => 'string|utf8', 0xa438 => 'string|utf8',
150
166
  },
151
167
  );
152
168
 
@@ -420,15 +420,15 @@ sub ValidateImageData($$$;$)
420
420
  }
421
421
 
422
422
  #------------------------------------------------------------------------------
423
- # Add specified image data to ImageDataMD5 hash
423
+ # Add specified image data to ImageDataHash hash
424
424
  # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) lookup for [tagInfo,value] based on tagID
425
- sub AddImageDataMD5($$$)
425
+ sub AddImageDataHash($$$)
426
426
  {
427
427
  my ($et, $dirInfo, $offsetInfo) = @_;
428
428
  my ($tagID, $offset, $buff);
429
429
 
430
430
  my $verbose = $et->Options('Verbose');
431
- my $md5 = $$et{ImageDataMD5};
431
+ my $hash = $$et{ImageDataHash};
432
432
  my $raf = $$dirInfo{RAF};
433
433
 
434
434
  foreach $tagID (sort keys %$offsetInfo) {
@@ -451,12 +451,12 @@ sub AddImageDataMD5($$$)
451
451
  my $size = shift @sizes;
452
452
  next unless $offset =~ /^\d+$/ and $size and $size =~ /^\d+$/ and $size;
453
453
  next unless $raf->Seek($offset, 0); # (offset is absolute)
454
- $total += $et->ImageDataMD5($raf, $size);
454
+ $total += $et->ImageDataHash($raf, $size);
455
455
  }
456
456
  if ($verbose) {
457
457
  my $name = "$$dirInfo{DirName}:$$tagInfo{Name}";
458
458
  $name =~ s/Offsets?|Start$//;
459
- $et->VPrint(0, "$$et{INDENT}(ImageDataMD5: $total bytes of $name data)\n");
459
+ $et->VPrint(0, "$$et{INDENT}(ImageDataHash: $total bytes of $name data)\n");
460
460
  }
461
461
  }
462
462
  }
@@ -780,7 +780,7 @@ Entry: for (;;) {
780
780
  $readFormat = $oldFormat = Get16u($dataPt, $entry+2);
781
781
  $readCount = $oldCount = Get32u($dataPt, $entry+4);
782
782
  undef $oldImageData;
783
- if ($oldFormat < 1 or $oldFormat > 13 and not ($oldFormat == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
783
+ if (($oldFormat < 1 or $oldFormat > 13) and $oldFormat != 129 and not ($oldFormat == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
784
784
  my $msg = "Bad format ($oldFormat) for $name entry $index";
785
785
  # patch to preserve invalid directory entries in SubIFD3 of
786
786
  # various Kodak Z-series cameras (Z812, Z1085IS, Z1275)
@@ -1277,7 +1277,9 @@ NoWrite: next if $isNew > 0;
1277
1277
  $et->Warn("Writing large value for $name",1);
1278
1278
  }
1279
1279
  # re-code if necessary
1280
- if ($strEnc and $newFormName eq 'string') {
1280
+ if ($newFormName eq 'utf8') {
1281
+ $newValue = $et->Encode($newValue, 'UTF8');
1282
+ } elsif ($strEnc and $newFormName eq 'string') {
1281
1283
  $newValue = $et->Encode($newValue, $strEnc);
1282
1284
  }
1283
1285
  } else {
@@ -973,16 +973,14 @@ sub WriteQuickTime($$$)
973
973
  }
974
974
  } elsif ($tag eq 'CTBO' or $tag eq 'uuid') { # hack for updating CR3 CTBO offsets
975
975
  push @{$$dirInfo{ChunkOffset}}, [ $tag, length($$outfile), length($hdr) + $size ];
976
- } elsif (not $flg) {
977
- my $grp = $$et{CUR_WRITE_GROUP} || $parent;
978
- $et->Error("Can't locate data reference to update offsets for $grp");
979
- return $rtnVal;
976
+ } elsif (not $flg or $flg == 1) {
977
+ # assume "1" if stsd is yet to be read
978
+ $flg or $$et{AssumedDataRef} = 1;
979
+ # must update offsets since the data is in this file
980
+ push @{$$dirInfo{ChunkOffset}}, [ $tag, length($$outfile) + length($hdr), $size ];
980
981
  } elsif ($flg == 3) {
981
982
  $et->Error("Can't write files with mixed internal/external media data");
982
983
  return $rtnVal;
983
- } elsif ($flg == 1) {
984
- # must update offsets since the data is in this file
985
- push @{$$dirInfo{ChunkOffset}}, [ $tag, length($$outfile) + length($hdr), $size ];
986
984
  }
987
985
  }
988
986
 
@@ -1036,8 +1034,10 @@ sub WriteQuickTime($$$)
1036
1034
 
1037
1035
  if ($subdir) { # process atoms in this container from a buffer in memory
1038
1036
 
1039
- undef $$et{HandlerType} if $tag eq 'trak'; # init handler type for this track
1040
-
1037
+ if ($tag eq 'trak') {
1038
+ undef $$et{HandlerType}; # init handler type for this track
1039
+ delete $$et{AssumedDataRef};
1040
+ }
1041
1041
  my $subName = $$subdir{DirName} || $$tagInfo{Name};
1042
1042
  my $start = $$subdir{Start} || 0;
1043
1043
  my $base = ($$dirInfo{Base} || 0) + $raf->Tell() - $size;
@@ -1103,6 +1103,11 @@ sub WriteQuickTime($$$)
1103
1103
  $$et{CHANGED} = $oldChanged;
1104
1104
  undef $newData;
1105
1105
  }
1106
+ if ($tag eq 'trak' and $$et{AssumedDataRef}) {
1107
+ my $grp = $$et{CUR_WRITE_GROUP} || $dirName;
1108
+ $et->Error("Can't locate data reference to update offsets for $grp");
1109
+ delete $$et{AssumedDataRef};
1110
+ }
1106
1111
  $$et{CUR_WRITE_GROUP} = $oldWriteGroup;
1107
1112
  SetByteOrder('MM');
1108
1113
  # add back header if necessary
@@ -1405,6 +1410,13 @@ sub WriteQuickTime($$$)
1405
1410
  $flg = 1; # (this seems to be the case)
1406
1411
  }
1407
1412
  $$et{QtDataFlg} = $flg;
1413
+ if ($$et{AssumedDataRef}) {
1414
+ if ($flg != $$et{AssumedDataRef}) {
1415
+ my $grp = $$et{CUR_WRITE_GROUP} || $parent;
1416
+ $et->Error("Assumed incorrect data reference for $grp (was $flg)");
1417
+ }
1418
+ delete $$et{AssumedDataRef};
1419
+ }
1408
1420
  }
1409
1421
  if ($tagInfo and $$tagInfo{WriteLast}) {
1410
1422
  $writeLast = ($writeLast || '') . $hdr . $buff;
@@ -176,7 +176,7 @@ sub CheckXMP($$$;$)
176
176
  require 'Image/ExifTool/XMPStruct.pl';
177
177
  my ($item, $err, $w, $warn);
178
178
  unless (ref $$valPtr) {
179
- ($$valPtr, $warn) = InflateStruct($valPtr);
179
+ ($$valPtr, $warn) = InflateStruct($et, $valPtr);
180
180
  # expect a structure HASH ref or ARRAY of structures
181
181
  unless (ref $$valPtr) {
182
182
  $$valPtr eq '' and $$valPtr = { }, return undef; # allow empty structures
@@ -189,7 +189,7 @@ sub CheckXMP($$$;$)
189
189
  $$valPtr = \@copy; # return the copy
190
190
  foreach $item (@copy) {
191
191
  unless (ref $item eq 'HASH') {
192
- ($item, $w) = InflateStruct(\$item); # deserialize structure
192
+ ($item, $w) = InflateStruct($et, \$item); # deserialize structure
193
193
  $w and $warn = $w;
194
194
  next if ref $item eq 'HASH';
195
195
  $err = 'Improperly formed structure';