exiftool-vendored.pl 12.85.0 → 12.91.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/bin/Changes +87 -0
  2. package/bin/MANIFEST +1 -0
  3. package/bin/META.json +1 -1
  4. package/bin/META.yml +16 -16
  5. package/bin/README +3 -2
  6. package/bin/build_geolocation +7 -4
  7. package/bin/build_tag_lookup +29 -11
  8. package/bin/config_files/example.config +5 -0
  9. package/bin/config_files/onone.config +28 -0
  10. package/bin/exiftool +23 -15
  11. package/bin/lib/Image/ExifTool/AIFF.pm +8 -4
  12. package/bin/lib/Image/ExifTool/ASF.pm +4 -1
  13. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +14 -8
  14. package/bin/lib/Image/ExifTool/Canon.pm +102 -12
  15. package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  16. package/bin/lib/Image/ExifTool/CanonVRD.pm +5 -2
  17. package/bin/lib/Image/ExifTool/FujiFilm.pm +46 -4
  18. package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  19. package/bin/lib/Image/ExifTool/Geolocation.pm +6 -0
  20. package/bin/lib/Image/ExifTool/ID3.pm +39 -33
  21. package/bin/lib/Image/ExifTool/InDesign.pm +8 -4
  22. package/bin/lib/Image/ExifTool/Jpeg2000.pm +0 -1
  23. package/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
  24. package/bin/lib/Image/ExifTool/Matroska.pm +66 -10
  25. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  26. package/bin/lib/Image/ExifTool/Nikon.pm +36 -2
  27. package/bin/lib/Image/ExifTool/Olympus.pm +27 -17
  28. package/bin/lib/Image/ExifTool/PNG.pm +10 -2
  29. package/bin/lib/Image/ExifTool/Panasonic.pm +1 -0
  30. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -0
  31. package/bin/lib/Image/ExifTool/Pentax.pm +80 -14
  32. package/bin/lib/Image/ExifTool/QuickTime.pm +58 -13
  33. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +111 -8
  34. package/bin/lib/Image/ExifTool/RIFF.pm +20 -10
  35. package/bin/lib/Image/ExifTool/Samsung.pm +56 -19
  36. package/bin/lib/Image/ExifTool/Sony.pm +21 -11
  37. package/bin/lib/Image/ExifTool/TagLookup.pm +6808 -6788
  38. package/bin/lib/Image/ExifTool/TagNames.pod +120 -55
  39. package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  40. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +84 -15
  41. package/bin/lib/Image/ExifTool/Writer.pl +7 -4
  42. package/bin/lib/Image/ExifTool/XMP.pm +8 -8
  43. package/bin/lib/Image/ExifTool/XMP2.pl +51 -30
  44. package/bin/lib/Image/ExifTool/ZIP.pm +8 -4
  45. package/bin/lib/Image/ExifTool.pm +65 -42
  46. package/bin/lib/Image/ExifTool.pod +28 -20
  47. package/bin/perl-Image-ExifTool.spec +1 -1
  48. package/bin/pp_build_exe.args +4 -4
  49. package/package.json +3 -3
@@ -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 27859 tags, with 17442 unique tag names.
15
+ They contain a total of 27895 tags, with 17462 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
@@ -1390,6 +1390,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
1390
1390
  fpv XMP fpv
1391
1391
  GAudio XMP GAudio
1392
1392
  GCamera XMP GCamera
1393
+ GContainer XMP GContainer
1393
1394
  GCreations XMP GCreations
1394
1395
  GDepth XMP GDepth
1395
1396
  getty XMP GettyImages
@@ -4794,6 +4795,7 @@ These tags belong to the ExifTool XMP-GCamera family 1 group.
4794
4795
  BurstID string
4795
4796
  BurstPrimary string
4796
4797
  DisableAutoCreation string+
4798
+ DisableSuggestedAction string+
4797
4799
  HDRPMakerNote string
4798
4800
  HdrPlusMakernote string
4799
4801
  MicroVideo integer
@@ -4809,6 +4811,42 @@ These tags belong to the ExifTool XMP-GCamera family 1 group.
4809
4811
  ShotLogData string
4810
4812
  SpecialTypeID string+
4811
4813
 
4814
+ =head3 XMP GContainer Tags
4815
+
4816
+ Google Container namespace. ExifTool uses the prefix 'GContainer' instead
4817
+ of 'Container' to avoid a conflict with the Google Device Container
4818
+ namespace.
4819
+
4820
+ These tags belong to the ExifTool XMP-GContainer family 1 group.
4821
+
4822
+ Tag Name Writable
4823
+ -------- --------
4824
+ ContainerDirectory Directory Struct+
4825
+ DirectoryItem Item Struct_+
4826
+ DirectoryItemLabel string_+
4827
+ DirectoryItemLength integer_+
4828
+ DirectoryItemMime string_+
4829
+ DirectoryItemPadding integer_+
4830
+ DirectoryItemSemantic string_+
4831
+ DirectoryItemURI string_+
4832
+
4833
+ =head3 XMP Directory Struct
4834
+
4835
+ Field Name Writable
4836
+ ---------- --------
4837
+ Item Item Struct
4838
+
4839
+ =head3 XMP Item Struct
4840
+
4841
+ Field Name Writable
4842
+ ---------- --------
4843
+ Label string
4844
+ Length integer
4845
+ Mime string
4846
+ Padding integer
4847
+ Semantic string
4848
+ URI string
4849
+
4812
4850
  =head3 XMP GCreations Tags
4813
4851
 
4814
4852
  Google creations tags.
@@ -8052,19 +8090,23 @@ Flash information tags for the K10D, K20D and K200D.
8052
8090
  Index1 Tag Name Writable
8053
8091
  ------ -------- --------
8054
8092
  0.1 PowerSource int8u & 0x0f
8055
- Tag01 int8u & 0x0f
8093
+ 0.2 PowerAvailable int8u & 0xf0
8056
8094
  1.1 BodyBatteryState int8u & 0xf0
8057
- BodyBatteryState? int8u & 0xf0
8058
8095
  1.2 GripBatteryState int8u & 0x0f
8059
- GripBatteryState? int8u & 0x0f
8060
8096
  2 BodyBatteryADNoLoad int8u
8061
8097
  BodyBatteryVoltage1 int16u
8098
+ BodyBatteryState int8u
8062
8099
  3 BodyBatteryADLoad int8u
8100
+ BodyBatteryPercent int8u
8063
8101
  4 GripBatteryADNoLoad int8u
8064
8102
  BodyBatteryVoltage2 int16u
8103
+ BodyBatteryVoltage int32u
8065
8104
  5 GripBatteryADLoad int8u
8066
8105
  6 BodyBatteryVoltage3 int16u
8067
8106
  8 BodyBatteryVoltage4 int16u
8107
+ 16 GripBatteryState int8u
8108
+ 17 GripBatteryPercent int8u
8109
+ 18 GripBatteryVoltage int32u
8068
8110
 
8069
8111
  =head3 Pentax AFInfo Tags
8070
8112
 
@@ -8236,6 +8278,7 @@ Tags decoded from the electronic level information for the K-3 III.
8236
8278
 
8237
8279
  Index1 Tag Name Writable
8238
8280
  ------ -------- --------
8281
+ 1 CameraOrientation int8s
8239
8282
  3 RollAngle int16s
8240
8283
  5 PitchAngle int16s
8241
8284
 
@@ -9311,6 +9354,7 @@ Unknown only to reduce the volume of the normal output.
9311
9354
  0x4026 LogInfo Canon LogInfo
9312
9355
  0x4028 AFConfig Canon AFConfig
9313
9356
  0x403f RawBurstModeRoll Canon RawBurstInfo
9357
+ 0x4059 LevelInfo Canon LevelInfo
9314
9358
 
9315
9359
  =head3 Canon CameraSettings Tags
9316
9360
 
@@ -10197,7 +10241,7 @@ CameraInfo tags for the EOS 1000D.
10197
10241
 
10198
10242
  =head3 Canon CameraInfoR6 Tags
10199
10243
 
10200
- CameraInfo tags for the EOS R6.
10244
+ CameraInfo tags for the EOS R5 and R6.
10201
10245
 
10202
10246
  Index1 Tag Name Writable
10203
10247
  ------ -------- --------
@@ -10432,6 +10476,7 @@ WB tags for the Canon G9.
10432
10476
  21 FocusDistanceLower int16u
10433
10477
  23 ShutterMode int16s
10434
10478
  25 FlashExposureLock int16s
10479
+ 32 AntiFlicker int16s
10435
10480
  61 RFLensType int16u
10436
10481
 
10437
10482
  =head3 Canon SerialInfo Tags
@@ -11539,6 +11584,8 @@ Information about creative filter settings.
11539
11584
  17 VFDisplayIllumination int32s
11540
11585
  18 AFStatusViewfinder int32s
11541
11586
  19 InitialAFPointInServo int32s
11587
+ 20 SubjectToDetect int32s
11588
+ 24 EyeDetection int32s
11542
11589
 
11543
11590
  =head3 Canon RawBurstInfo Tags
11544
11591
 
@@ -11547,6 +11594,16 @@ Information about creative filter settings.
11547
11594
  1 RawBurstImageNum int32u
11548
11595
  2 RawBurstImageCount int32u
11549
11596
 
11597
+ =head3 Canon LevelInfo Tags
11598
+
11599
+ Index4 Tag Name Writable
11600
+ ------ -------- --------
11601
+ 4 RollAngle int32s
11602
+ 5 PitchAngle int32s
11603
+ 7 FocalLength int32s
11604
+ 8 MinFocalLength int32s
11605
+ 9 MaxFocalLength int32s
11606
+
11550
11607
  =head3 Canon CTMD Tags
11551
11608
 
11552
11609
  Canon Timed MetaData tags found in CR3 images. The ExtractEmbedded option
@@ -13316,6 +13373,15 @@ Face recognition information.
13316
13373
  Face8Category no
13317
13374
  Face8Name no
13318
13375
 
13376
+ =head3 FujiFilm RAFHeader Tags
13377
+
13378
+ Tags extracted from the header of RAF images.
13379
+
13380
+ Index1 Tag Name Writable
13381
+ ------ -------- --------
13382
+ 60 RAFVersion no
13383
+ 108 RAFCompression no
13384
+
13319
13385
  =head3 FujiFilm RAF Tags
13320
13386
 
13321
13387
  FujiFilm RAF images contain meta information stored in a proprietary
@@ -15948,7 +16014,7 @@ Tags written by some Nikon GPS-equipped cameras like the AW100.
15948
16014
  Index1 Tag Name Writable
15949
16015
  ------ -------- --------
15950
16016
  0 FirmwareVersion51 no
15951
- 10 NEFCompression int16u[0.5]
16017
+ 10 NEFCompression int16u
15952
16018
 
15953
16019
  =head3 Nikon MakerNotes0x56 Tags
15954
16020
 
@@ -19839,23 +19905,23 @@ any information found here will be extracted, even if the tag is not listed.
19839
19905
  Tag ID Tag Name Writable
19840
19906
  ------ -------- --------
19841
19907
  0x0000 ImageProcessingVersion undef[4]
19842
- 0x0100 WB_RBLevels int16u[2]
19843
- 0x0102 WB_RBLevels3000K int16u[2]
19844
- 0x0103 WB_RBLevels3300K int16u[2]
19845
- 0x0104 WB_RBLevels3600K int16u[2]
19846
- 0x0105 WB_RBLevels3900K int16u[2]
19847
- 0x0106 WB_RBLevels4000K int16u[2]
19848
- 0x0107 WB_RBLevels4300K int16u[2]
19849
- 0x0108 WB_RBLevels4500K int16u[2]
19850
- 0x0109 WB_RBLevels4800K int16u[2]
19851
- 0x010a WB_RBLevels5300K int16u[2]
19852
- 0x010b WB_RBLevels6000K int16u[2]
19853
- 0x010c WB_RBLevels6600K int16u[2]
19854
- 0x010d WB_RBLevels7500K int16u[2]
19855
- 0x010e WB_RBLevelsCWB1 int16u[2]
19856
- 0x010f WB_RBLevelsCWB2 int16u[2]
19857
- 0x0110 WB_RBLevelsCWB3 int16u[2]
19858
- 0x0111 WB_RBLevelsCWB4 int16u[2]
19908
+ 0x0100 WB_RBLevels int16u[n]
19909
+ 0x0102 WB_RBLevels3000K int16u[n]
19910
+ 0x0103 WB_RBLevels3300K int16u[n]
19911
+ 0x0104 WB_RBLevels3600K int16u[n]
19912
+ 0x0105 WB_RBLevels3900K int16u[n]
19913
+ 0x0106 WB_RBLevels4000K int16u[n]
19914
+ 0x0107 WB_RBLevels4300K int16u[n]
19915
+ 0x0108 WB_RBLevels4500K int16u[n]
19916
+ 0x0109 WB_RBLevels4800K int16u[n]
19917
+ 0x010a WB_RBLevels5300K int16u[n]
19918
+ 0x010b WB_RBLevels6000K int16u[n]
19919
+ 0x010c WB_RBLevels6600K int16u[n]
19920
+ 0x010d WB_RBLevels7500K int16u[n]
19921
+ 0x010e WB_RBLevelsCWB1 int16u[n]
19922
+ 0x010f WB_RBLevelsCWB2 int16u[n]
19923
+ 0x0110 WB_RBLevelsCWB3 int16u[n]
19924
+ 0x0111 WB_RBLevelsCWB4 int16u[n]
19859
19925
  0x0113 WB_GLevel3000K int16u
19860
19926
  0x0114 WB_GLevel3300K int16u
19861
19927
  0x0115 WB_GLevel3600K int16u
@@ -20228,6 +20294,7 @@ These tags are found in IFD0 of Panasonic/Leica RAW, RW2 and RWL images.
20228
20294
  0x0030 CropLeft int16u
20229
20295
  0x0031 CropBottom int16u
20230
20296
  0x0032 CropRight int16u
20297
+ 0x0037 ISO int32u
20231
20298
  0x010f Make string
20232
20299
  0x0110 Model string
20233
20300
  0x0111 StripOffsets no
@@ -20803,10 +20870,10 @@ Camera orientation information written by the Gear 360 (SM-C200).
20803
20870
 
20804
20871
  =head3 Samsung Trailer Tags
20805
20872
 
20806
- Tags extracted from the trailer of JPEG images written when using certain
20807
- features (such as "Sound & Shot" or "Shot & More") from Samsung models such
20808
- as the Galaxy S4 and Tab S, and from the 'sefd' atom in HEIC images from the
20809
- Samsung S10+.
20873
+ Tags extracted from the SEFT trailer of JPEG and PNG images written when
20874
+ using certain features (such as "Sound & Shot" or "Shot & More") from
20875
+ Samsung models such as the Galaxy S4 and Tab S, and from the 'sefd' atom in
20876
+ HEIC images from models such as the S10+.
20810
20877
 
20811
20878
  Tag Name Writable
20812
20879
  -------- --------
@@ -20824,6 +20891,9 @@ Samsung S10+.
20824
20891
  EmbeddedVideoFile no
20825
20892
  EmbeddedVideoType no
20826
20893
  MCCData no
20894
+ PEg_Info JSON
20895
+ RemasterInfo no
20896
+ SamsungCaptureInfo no
20827
20897
  SingleShotDepthMap no
20828
20898
  SingleShotMeta Samsung SingleShotMeta
20829
20899
  SurroundShotVideo no
@@ -22890,7 +22960,7 @@ E-mount models.
22890
22960
 
22891
22961
  =head3 Sony Tag9416 Tags
22892
22962
 
22893
- Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1.
22963
+ Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1/E10M2.
22894
22964
 
22895
22965
  Index1 Tag Name Writable
22896
22966
  ------ -------- --------
@@ -23188,7 +23258,8 @@ The following tags are decoded in unsupported maker notes. Use the Unknown
23188
23258
 
23189
23259
  The main DNG tags are found in the EXIF table. The tables below define only
23190
23260
  information found within structures of these main DNG tag values. See
23191
- L<http://www.adobe.com/products/dng/> for the official DNG specification.
23261
+ L<https://helpx.adobe.com/camera-raw/digital-negative.html> for the official
23262
+ DNG specification.
23192
23263
 
23193
23264
  =head3 DNG AdobeData Tags
23194
23265
 
@@ -23609,7 +23680,7 @@ These tags are used in Minolta RAW format (MRW) images.
23609
23680
  4 WBMode int8u~
23610
23681
  5 ProgramMode int8u
23611
23682
  6 ISOSetting int8u
23612
- 7 ColorMode int32u[0.25]
23683
+ 7 ColorMode int8u
23613
23684
  8 WB_RBLevelsTungsten int16u[2]
23614
23685
  12 WB_RBLevelsDaylight int16u[2]
23615
23686
  16 WB_RBLevelsCloudy int16u[2]
@@ -25750,7 +25821,7 @@ the image undisplayable.
25750
25821
  2 ColorSpecApproximation int8s!
25751
25822
  3 ICC_Profile ICC_Profile
25752
25823
  ColorSpace int32u!
25753
- ColorSpecData undef!
25824
+ ColorSpecData undef[$size-3]!
25754
25825
 
25755
25826
  =head3 Jpeg2000 FileType Tags
25756
25827
 
@@ -29146,7 +29217,7 @@ ID3 version 2.2 tags. (These are the tags written by iTunes 5.0.)
29146
29217
  'TT2' Title no
29147
29218
  'TT3' Subtitle no
29148
29219
  'TXT' Lyricist no
29149
- 'TXX' TXX ID3 UserDefined
29220
+ 'TXX' UserDefinedText no
29150
29221
  'TYE' Year no
29151
29222
  'ULT' Lyrics no
29152
29223
  'WAF' FileURL no
@@ -29155,7 +29226,7 @@ ID3 version 2.2 tags. (These are the tags written by iTunes 5.0.)
29155
29226
  'WCM' CommercialURL no
29156
29227
  'WCP' CopyrightURL no
29157
29228
  'WPB' PublisherURL no
29158
- 'WXX' WXX ID3 UserDefined
29229
+ 'WXX' UserDefinedURL no
29159
29230
 
29160
29231
  =head3 ID3 SynLyrics Tags
29161
29232
 
@@ -29167,15 +29238,6 @@ The following tags are extracted from synchronized lyrics/text frames.
29167
29238
  SynchronizedLyricsText no+
29168
29239
  SynchronizedLyricsType no
29169
29240
 
29170
- =head3 ID3 UserDefined Tags
29171
-
29172
- ID3 user-defined text and URL tags will be dynamically added to this table
29173
- by name when found.
29174
-
29175
- Tag ID Tag Name Writable
29176
- ------ -------- --------
29177
- [no tags known]
29178
-
29179
29241
  =head3 ID3 v2_3 Tags
29180
29242
 
29181
29243
  ID3 version 2.3 tags. Includes some non-standard tags written by other
@@ -29245,7 +29307,7 @@ software.
29245
29307
  'TSOC' ComposerSortOrder no
29246
29308
  'TSRC' ISRC no
29247
29309
  'TSSE' EncoderSettings no
29248
- 'TXXX' TXXX ID3 UserDefined
29310
+ 'TXXX' UserDefinedText no
29249
29311
  'TYER' Year no
29250
29312
  'USER' TermsOfUse no
29251
29313
  'USLT' Lyrics no
@@ -29258,7 +29320,7 @@ software.
29258
29320
  'WORS' InternetRadioStationURL no
29259
29321
  'WPAY' PaymentURL no
29260
29322
  'WPUB' PublisherURL no
29261
- 'WXXX' WXXX ID3 UserDefined
29323
+ 'WXXX' UserDefinedURL no
29262
29324
  'XDOR' OriginalReleaseTime no
29263
29325
  'XOLY' OlympusDSS Olympus DSS
29264
29326
  'XSOA' AlbumSortOrder no
@@ -29369,7 +29431,7 @@ software.
29369
29431
  'TSRC' ISRC no
29370
29432
  'TSSE' EncoderSettings no
29371
29433
  'TSST' SetSubtitle no
29372
- 'TXXX' TXXX ID3 UserDefined
29434
+ 'TXXX' UserDefinedText no
29373
29435
  'USER' TermsOfUse no
29374
29436
  'USLT' Lyrics no
29375
29437
  'WCOM' CommercialURL no
@@ -29381,7 +29443,7 @@ software.
29381
29443
  'WORS' InternetRadioStationURL no
29382
29444
  'WPAY' PaymentURL no
29383
29445
  'WPUB' PublisherURL no
29384
- 'WXXX' WXXX ID3 UserDefined
29446
+ 'WXXX' UserDefinedURL no
29385
29447
  'XDOR' OriginalReleaseTime no
29386
29448
  'XOLY' OlympusDSS Olympus DSS
29387
29449
  'XSOA' AlbumSortOrder no
@@ -29441,11 +29503,11 @@ parameters, as well as proprietary information written by many camera
29441
29503
  models. Tags with a question mark after their name are not extracted unless
29442
29504
  the Unknown option is set.
29443
29505
 
29444
- When writing, ExifTool creates both QuickTime and XMP tags by default, but
29445
- the group may be specified to write one or the other separately. If no
29446
- location is specified, newly created QuickTime tags are added in the
29447
- L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> location if
29448
- possible, otherwise in
29506
+ When writing video files, ExifTool creates both QuickTime and XMP tags by
29507
+ default, but the group may be specified to write one or the other
29508
+ separately. If no location is specified, newly created QuickTime tags are
29509
+ added in the L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags>
29510
+ location if possible, otherwise in
29449
29511
  L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags>, and
29450
29512
  finally in L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags>,
29451
29513
  but this order may be changed by setting the PREFERRED level of the
@@ -29496,7 +29558,7 @@ the original size by padding with nulls if necessary.
29496
29558
 
29497
29559
  See
29498
29560
  L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
29499
- for the official specification.
29561
+ for the official QuickTime specification.
29500
29562
 
29501
29563
  Tag ID Tag Name Writable
29502
29564
  ------ -------- --------
@@ -29556,7 +29618,7 @@ for the official specification.
29556
29618
  The tags below are extracted from timed metadata in QuickTime and other
29557
29619
  formats of video files when the ExtractEmbedded option is used. Although
29558
29620
  most of these tags are combined into the single table below, ExifTool
29559
- currently reads 74 different formats of timed GPS metadata from video files.
29621
+ currently reads 76 different formats of timed GPS metadata from video files.
29560
29622
 
29561
29623
  Tag Name Writable
29562
29624
  -------- --------
@@ -29568,6 +29630,7 @@ currently reads 74 different formats of timed GPS metadata from video files.
29568
29630
  CameraModel no
29569
29631
  Car no
29570
29632
  DateTimeOriginal no
29633
+ DateTimeStamp no
29571
29634
  Distance no
29572
29635
  ExposureCompensation no
29573
29636
  ExposureTime no
@@ -30765,7 +30828,7 @@ the config file.
30765
30828
  'RDTC' RicohRDTC Ricoh RDTC
30766
30829
  'RDTG' RicohRDTG Ricoh RDTG
30767
30830
  'RDTL' RicohRDTL Ricoh RDTL
30768
- 'RICO' RicohInfo EXIF
30831
+ 'RICO' RicohInfo JPEG
30769
30832
  'RMKN' RicohRMKN EXIF
30770
30833
  'RTHU' PreviewImage no
30771
30834
  'SDLN' PlayMode string
@@ -32678,7 +32741,8 @@ Other tags are extracted with the Unknown option.
32678
32741
 
32679
32742
  The following tags are extracted from Matroska multimedia container files.
32680
32743
  This container format is used by file types such as MKA, MKV, MKS and WEBM.
32681
- For speed, by default ExifTool extracts tags only up to the first Cluster.
32744
+ For speed, by default ExifTool extracts tags only up to the first Cluster
32745
+ unless a Seek element specifies the position of a Tags element after this.
32682
32746
  However, the Verbose (-v) and Unknown = 2 (-U) options force processing of
32683
32747
  Cluster data, and the ExtractEmbedded (-ee) option skips over Clusters to
32684
32748
  read subsequent tags. See
@@ -40126,6 +40190,7 @@ FileName.
40126
40190
  PreviewTIFF File no
40127
40191
  PreviewWMF File no
40128
40192
  ProcessingTime ExifTool no
40193
+ RAFCompression File no
40129
40194
  RAFVersion File no
40130
40195
  ResourceForkSize System no
40131
40196
  SphericalVideoXML GSpherical yes!
@@ -215,7 +215,7 @@ sub FormatIPTC($$$$$;$)
215
215
  sub IptcDate($)
216
216
  {
217
217
  my $val = shift;
218
- unless ($val =~ s{^.*(\d{4})[-:/.]?(\d{2})[-:/.]?(\d{2}).*}{$1$2$3}s) {
218
+ unless ($val =~ s{^.*?(\d{4})[-:/.]?(\d{2})[-:/.]?(\d{2}).*}{$1$2$3}s) {
219
219
  warn "Invalid date format (use YYYY:mm:dd)\n";
220
220
  undef $val;
221
221
  }
@@ -507,10 +507,16 @@ sub WriteItemInfo($$$)
507
507
  my ($warn, $extent, $buff, @edit);
508
508
  $warn = 'Missing iloc box' unless $$boxPos{iloc};
509
509
  $warn = "No Extents for $type item" unless $$item{Extents} and @{$$item{Extents}};
510
- $warn = "Can't currently decode encoded $type metadata" if $$item{ContentEncoding};
510
+ if ($$item{ContentEncoding}) {
511
+ if ($$item{ContentEncoding} ne 'deflate') {
512
+ $warn = "Can't currently decode $$item{ContentEncoding} encoded $type metadata";
513
+ } elsif (not eval { require Compress::Zlib }) {
514
+ $warn = "Install Compress::Zlib to decode deflated $type metadata";
515
+ }
516
+ }
511
517
  $warn = "Can't currently decode protected $type metadata" if $$item{ProtectionIndex};
512
518
  $warn = "Can't currently extract $type with construction method $$item{ConstructionMethod}" if $$item{ConstructionMethod};
513
- $warn = "$type metadata is not this file" if $$item{DataReferenceIndex};
519
+ $warn = "$type metadata is not in this file" if $$item{DataReferenceIndex};
514
520
  $warn and $et->Warn($warn), next;
515
521
  my $base = $$item{BaseOffset} || 0;
516
522
  my $val = '';
@@ -527,6 +533,25 @@ sub WriteItemInfo($$$)
527
533
  }
528
534
  next unless defined $buff;
529
535
  $buff = $val . $buff if length $val;
536
+ my $comp = $et->Options('Compress');
537
+ if (defined $comp and ($comp xor $$item{ContentEncoding})) {
538
+ #TODO: add ability to edit infe entry in iinf to change encoding according to Compress option if set
539
+ $et->Warn("Can't currently change compression when rewriting $name in HEIC",1);
540
+ }
541
+ my $wasDeflated;
542
+ if ($$item{ContentEncoding}) {
543
+ my ($v2, $stat);
544
+ my $inflate = Compress::Zlib::inflateInit();
545
+ $inflate and ($v2, $stat) = $inflate->inflate($buff);
546
+ $et->VPrint(0, " (Inflating stored $name metadata)\n");
547
+ if ($inflate and $stat == Compress::Zlib::Z_STREAM_END()) {
548
+ $buff = $v2;
549
+ $wasDeflated = 1;
550
+ } else {
551
+ $et->WarnOnce("Error inflating $name metadata");
552
+ next;
553
+ }
554
+ }
530
555
  my ($hdr, $subTable, $proc);
531
556
  if ($name eq 'EXIF') {
532
557
  if (not length $buff) {
@@ -560,6 +585,17 @@ sub WriteItemInfo($$$)
560
585
  ($dirInfo{DirLen} or length $newVal))
561
586
  {
562
587
  $newVal = $hdr . $newVal if length $hdr and length $newVal;
588
+ if ($wasDeflated) {
589
+ my $deflate = Compress::Zlib::deflateInit();
590
+ if ($deflate) {
591
+ $et->VPrint(0, " (Re-deflating new $name metadata)\n");
592
+ $buff = $deflate->deflate($newVal);
593
+ if (defined $buff) {
594
+ $buff .= $deflate->flush();
595
+ $newVal = $buff;
596
+ }
597
+ }
598
+ }
563
599
  $edit[0][2] = \$newVal; # replace the old chunk with the new data
564
600
  $edit[0][3] = $id; # mark this chunk with the item ID
565
601
  push @mdatEdit, @edit;
@@ -640,21 +676,38 @@ sub WriteItemInfo($$$)
640
676
  # add new infe to iinf
641
677
  $add{iinf} = $add{iref} = $add{iloc} = '' unless defined $add{iinf};
642
678
  my ($type, $mime);
679
+ my $enc = '';
643
680
  if ($name eq 'XMP') {
644
681
  $type = "mime\0";
645
682
  $mime = "application/rdf+xml\0";
683
+ # write compressed XMP if Compress option is set
684
+ if ($et->Options('Compress') and length $newVal) {
685
+ if (not eval { require Compress::Zlib }) {
686
+ $et->WarnOnce('Install Compress::Zlib to write compressed metadata');
687
+ } else {
688
+ my $deflate = Compress::Zlib::deflateInit();
689
+ if ($deflate) {
690
+ $et->VPrint(0, " (Deflating new $name metadata)\n");
691
+ my $buff = $deflate->deflate($newVal);
692
+ if (defined $buff) {
693
+ $newVal = $buff . $deflate->flush();
694
+ $enc = "deflate\0";
695
+ }
696
+ }
697
+ }
698
+ }
646
699
  } else {
647
700
  $type = "Exif\0";
648
701
  $mime = '';
649
702
  }
650
703
  my $id = 1;
651
704
  ++$id while $$items{$id} or $usedID{$id}; # find next unused item ID
652
- my $n = length($type) + length($mime) + 16;
705
+ my $n = length($type) + length($mime) + length($enc) + 16;
653
706
  if ($id < 0x10000) {
654
- $add{iinf} .= pack('Na4CCCCnn', $n, 'infe', 2, 0, 0, 1, $id, 0) . $type . $mime;
707
+ $add{iinf} .= pack('Na4CCCCnn', $n, 'infe', 2, 0, 0, 1, $id, 0) . $type . $mime . $enc;
655
708
  } else {
656
709
  $n += 2;
657
- $add{iinf} .= pack('Na4CCCCNn', $n, 'infe', 3, 0, 0, 1, $id, 0) . $type . $mime;
710
+ $add{iinf} .= pack('Na4CCCCNn', $n, 'infe', 3, 0, 0, 1, $id, 0) . $type . $mime . $enc;
658
711
  }
659
712
  # add new cdsc to iref
660
713
  if ($irefVer) {
@@ -733,28 +786,36 @@ sub WriteItemInfo($$$)
733
786
  $add{$tag} = Set32u(12 + length $add{$tag}) . $tag .
734
787
  Set8u($$boxPos{$tag}[2]) . "\0\0\0" . $add{$tag};
735
788
  } elsif ($tag ne 'hdlr') {
736
- my $n = Get32u($outfile, $pos);
737
- Set32u($n + length($add{$tag}), $outfile, $pos); # increase box size
789
+ my $n = Get32u($outfile, $pos) + length($add{$tag});
790
+ Set32u($n, $outfile, $pos); # increase box size
738
791
  }
739
792
  if ($tag eq 'iinf') {
740
793
  my $iinfVer = Get8u($outfile, $pos + 8);
741
794
  if ($iinfVer == 0) {
742
- my $n = Get16u($outfile, $pos + 12);
743
- Set16u($n + $countNew, $outfile, $pos + 12); # incr count
795
+ my $n = Get16u($outfile, $pos + 12) + $countNew;
796
+ if ($n > 0xffff) {
797
+ $et->Error("Can't currently handle rollover to long item count");
798
+ return undef;
799
+ }
800
+ Set16u($n, $outfile, $pos + 12); # incr count
744
801
  } else {
745
- my $n = Get32u($outfile, $pos + 12);
746
- Set32u($n + $countNew, $outfile, $pos + 12); # incr count
802
+ my $n = Get32u($outfile, $pos + 12) + $countNew;
803
+ Set32u($n, $outfile, $pos + 12); # incr count
747
804
  }
748
805
  } elsif ($tag eq 'iref') {
749
806
  # nothing more to do
750
807
  } elsif ($tag eq 'iloc') {
751
808
  my $ilocVer = Get8u($outfile, $pos + 8);
752
809
  if ($ilocVer < 2) {
753
- my $n = Get16u($outfile, $pos + 14);
754
- Set16u($n + $countNew, $outfile, $pos + 14); # incr count
810
+ my $n = Get16u($outfile, $pos + 14) + $countNew;
811
+ Set16u($n, $outfile, $pos + 14); # incr count
812
+ if ($n > 0xffff) {
813
+ $et->Error("Can't currently handle rollover to long item count");
814
+ return undef;
815
+ }
755
816
  } else {
756
- my $n = Get32u($outfile, $pos + 14);
757
- Set32u($n + $countNew, $outfile, $pos + 14); # incr count
817
+ my $n = Get32u($outfile, $pos + 14) + $countNew;
818
+ Set32u($n, $outfile, $pos + 14); # incr count
758
819
  }
759
820
  # must also update pointer locations in this box
760
821
  if ($added) {
@@ -895,6 +956,8 @@ sub WriteQuickTime($$$)
895
956
  } elsif (not $et->Options('LargeFileSupport')) {
896
957
  $et->Error('End of processing at large atom (LargeFileSupport not enabled)');
897
958
  last;
959
+ } elsif ($et->Options('LargeFileSupport') eq '2') {
960
+ $et->WarnOnce('Processing large atom (LargeFileSupport is 2)');
898
961
  }
899
962
  }
900
963
  $size = $hi * 4294967296 + $lo - 16;
@@ -1447,7 +1510,13 @@ sub WriteQuickTime($$$)
1447
1510
  $writeLast = ($writeLast || '') . $hdr . $buff;
1448
1511
  } else {
1449
1512
  # save position of this box in the output buffer
1513
+ #TODO do this:
1514
+ #TODO my $bp = $boxPos{$tag} || ($boxPos{$tag} = [ ]);
1515
+ #TODO push @$bp, length($$outfile), length($hdr) + length($buff);
1516
+ #TODO instead of this:
1450
1517
  $boxPos{$tag} = [ length($$outfile), length($hdr) + length($buff) ];
1518
+ #TODO then we have the positions of all the infe boxes -- we then only need
1519
+ #TODO to know the index of the box to edit if the encoding changes for one of them
1451
1520
  # copy the existing atom
1452
1521
  Write($outfile, $hdr, $buff) or $rtnVal=$rtnErr, $err=1, last;
1453
1522
  }
@@ -3844,7 +3844,6 @@ sub GetGeolocateTags($$;$)
3844
3844
  'iptc' => [ qw(City Province-State Country-PrimaryLocationCode Country-PrimaryLocationName) ],
3845
3845
  'gps' => [ qw(GPSLatitude GPSLongitude GPSLatitudeRef GPSLongitudeRef) ],
3846
3846
  'xmp-exif' => [ qw(GPSLatitude GPSLongitude) ],
3847
- 'keys' => [ 'GPSCoordinates', 'LocationName' ],
3848
3847
  'itemlist' => [ 'GPSCoordinates' ],
3849
3848
  'userdata' => [ 'GPSCoordinates' ],
3850
3849
  # more general groups not in this lookup: XMP and QuickTime
@@ -3855,12 +3854,16 @@ sub GetGeolocateTags($$;$)
3855
3854
  $tagGroups{$grp} and push @tags, map("$grp:$_", @{$tagGroups{$grp}});
3856
3855
  }
3857
3856
  # set default XMP City tags if necessary
3858
- if (not $writeGPS and ($grps{xmp} or (not @tags and not $grps{quicktime}))) {
3859
- push @tags, qw(XMP:City XMP:State XMP:CountryCode XMP:Country Keys:LocationName);
3857
+ if (not $writeGPS) {
3858
+ push @tags, 'Keys:LocationName' if $grps{'keys'};
3859
+ if ($grps{xmp} or (not @tags and not $grps{quicktime})) {
3860
+ push @tags, qw(XMP:City XMP:State XMP:CountryCode XMP:Country Keys:LocationName);
3861
+ }
3860
3862
  }
3861
3863
  $writeGPS = 1 unless defined $writeGPS; # (delete both City and GPS)
3864
+ push @tags, 'Keys:GPSCoordinates' if $writeGPS and $grps{'keys'};
3862
3865
  # set default QuickTime tag if necessary
3863
- my $didQT = grep /Coordinates$/, @tags;
3866
+ my $didQT = grep /GPSCoordinates$/, @tags;
3864
3867
  if (($grps{quicktime} and not $didQT) or ($writeGPS and not @tags and not $grps{xmp})) {
3865
3868
  push @tags, 'QuickTime:GPSCoordinates';
3866
3869
  }