exiftool_vendored 13.36.0 → 13.38.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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +39 -1
  3. data/bin/MANIFEST +9 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +47 -47
  7. data/bin/build_geolocation +7 -3
  8. data/bin/exiftool +65 -63
  9. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  10. data/bin/lib/Image/ExifTool/BMP.pm +2 -2
  11. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +16 -9
  12. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  13. data/bin/lib/Image/ExifTool/Canon.pm +59 -5
  14. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  15. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  16. data/bin/lib/Image/ExifTool/DJI.pm +5 -5
  17. data/bin/lib/Image/ExifTool/DSF.pm +138 -0
  18. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  19. data/bin/lib/Image/ExifTool/EXE.pm +5 -2
  20. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  21. data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  22. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  23. data/bin/lib/Image/ExifTool/FujiFilm.pm +5 -4
  24. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  25. data/bin/lib/Image/ExifTool/GM.pm +1 -1
  26. data/bin/lib/Image/ExifTool/Geolocation.pm +3 -1
  27. data/bin/lib/Image/ExifTool/Geotag.pm +13 -3
  28. data/bin/lib/Image/ExifTool/GoPro.pm +11 -8
  29. data/bin/lib/Image/ExifTool/Google.pm +814 -0
  30. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  31. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  32. data/bin/lib/Image/ExifTool/ID3.pm +14 -13
  33. data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
  34. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  35. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  36. data/bin/lib/Image/ExifTool/LNK.pm +2 -2
  37. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  38. data/bin/lib/Image/ExifTool/M2TS.pm +34 -25
  39. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  40. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  41. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  42. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  43. data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
  44. data/bin/lib/Image/ExifTool/MakerNotes.pm +30 -7
  45. data/bin/lib/Image/ExifTool/Microsoft.pm +4 -4
  46. data/bin/lib/Image/ExifTool/Nikon.pm +4 -4
  47. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  48. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  49. data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
  50. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  51. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  52. data/bin/lib/Image/ExifTool/Pentax.pm +18 -7
  53. data/bin/lib/Image/ExifTool/Protobuf.pm +12 -6
  54. data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
  55. data/bin/lib/Image/ExifTool/QuickTime.pm +30 -8
  56. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -0
  57. data/bin/lib/Image/ExifTool/README +7 -6
  58. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  59. data/bin/lib/Image/ExifTool/Reconyx.pm +375 -91
  60. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  61. data/bin/lib/Image/ExifTool/Shortcuts.pm +8 -5
  62. data/bin/lib/Image/ExifTool/Sony.pm +22 -7
  63. data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -2
  64. data/bin/lib/Image/ExifTool/TagLookup.pm +5753 -5696
  65. data/bin/lib/Image/ExifTool/TagNames.pod +707 -518
  66. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  67. data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
  68. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  69. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  70. data/bin/lib/Image/ExifTool/WavPack.pm +144 -0
  71. data/bin/lib/Image/ExifTool/XMP.pm +43 -37
  72. data/bin/lib/Image/ExifTool/XMP2.pl +0 -482
  73. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  74. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  75. data/bin/lib/Image/ExifTool.pm +42 -27
  76. data/bin/lib/Image/ExifTool.pod +60 -59
  77. data/bin/perl-Image-ExifTool.spec +46 -46
  78. data/lib/exiftool_vendored/version.rb +1 -1
  79. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48115655191684a1376bb6803a1831f0364e3561b84fef9227979c762d840a9f
4
- data.tar.gz: f8297fca14ffbfb66f8c5eca245f8096a940df011ae4a41dbe6ce4120c34b90b
3
+ metadata.gz: 41c912cc465c00eabd73bd1192f484d997d3c2b8c2dfaf3b63bb49251d53be0c
4
+ data.tar.gz: 742291182313e01c2c318ee7e9df71f4dfc4d4e9479d725e7d50eb218b6e9436
5
5
  SHA512:
6
- metadata.gz: 3a122b46c9c3a876d70c732db1e2e5c7e039c7d1c7cf4735c41a1ceac1384a4ce4f9f42a04c7156932e105fbc8bfa3cef366f9fd17452ecb6fab41f78247f2f3
7
- data.tar.gz: 6b105de18581c29ea2c56882113ada5e8519861f575e37be65282db903a6d49812c6b0b544d1bf3c3e1f35fb34bc9633bfd798b852e79c6020a113767c2db65d
6
+ metadata.gz: 5c31b6b771b02395a5a78d86f0c531ba82c21f491811c2d1f181f6445fe878a8a59b32f4eeb6fa9874b12309a6ea69098d77f5635859fef2a092004b35d72b9c
7
+ data.tar.gz: 1537c480de198d70e14d832dc48d4f9591016cbec09c99ee0d9fab69327236819040c37756478a796ad4483da1e149ada4addfcd1bb0a148c4dc4ecb864de59e
data/bin/Changes CHANGED
@@ -7,6 +7,44 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 13.36. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Sept. 30, 2025 - Version 13.38
11
+
12
+ - Added read support for DSF audio files (github #331)
13
+ - Decode a couple more GoPro tags
14
+ - Improved WavPack audio file support to recognize the WVP extension and
15
+ extract more than just RIFF metadata
16
+ - Updated Sony decoding for the ILCE-6400A (thanks Jos Roost)
17
+ - Set family 0 group name to "Composite" for approximated GPSDateTime in timed
18
+ video metadata
19
+ - Patched to recognize M2TS videos which begin in the middle of a packet
20
+ - Patched to attempt reading XMP which has an invalid encoding (github #348)
21
+ - Patched to avoid possible runtime warning when reading a EXE file with
22
+ corrupt resources (github #354)
23
+ - Fixed typo in a GoPro tag name
24
+
25
+ Sept. 22, 2025 - Version 13.37
26
+
27
+ - Added support for geotagging from Columbus GPS logger CSV files
28
+ - Added some new Canon, Sony and Olympus lenses (thanks Hubert Figuiere,
29
+ github #352 and Jos Roost)
30
+ - Added new Canon RFLensType and CanonModelID values (thanks Norbert Wasser
31
+ and Hubert Figuiere, github #350)
32
+ - Added a new FujiFilm FaceElementType value
33
+ - Decode Google HDRP maker notes (both text and Protobuf formats)
34
+ - Decode Reconyx MicroFire and Hyperfire 4K maker notes (thanks Reconyx)
35
+ - Decode a number of new Canon and Pentax tags and add a number of new values
36
+ (thanks Karsten Gieselmann)
37
+ - Decode maker notes from Ricoh GR III videos
38
+ - Decode a new Sony tag (thanks Jos Roost)
39
+ - Raised size limit on QuickTime atoms extracted for the -ee option, and added
40
+ a minor warning and allow bypassing with the -m option if over this limit
41
+ - Minor change to verbose output for XMP metadata
42
+ - Fixed possible hang/crash when reading Windows executables (github #351)
43
+ - Fixed incorrect FujiFilm PanoramaDirection values
44
+ - API Changes:
45
+ - Fixed GeoDir option so alternate languages are loaded properly when a
46
+ relative path is specified
47
+
10
48
  Sept. 9, 2025 - Version 13.36 (production release)
11
49
 
12
50
  - Added a new Nikon LensID (thanks Max, github #345)
@@ -3068,7 +3106,7 @@ Feb. 14, 2019 - Version 11.27
3068
3106
  Jan. 21, 2019 - Version 11.26
3069
3107
 
3070
3108
  - Added a new Nikon LensID (thanks LibRaw)
3071
- - Decode more tags for the Sony ICLE-6400 (thanks Jos Roost and LibRaw)
3109
+ - Decode more tags for the Sony ILCE-6400 (thanks Jos Roost and LibRaw)
3072
3110
  - Enhanced -htmldump feature to highlight IFD when mousing over IFD offset
3073
3111
 
3074
3112
  Jan. 15, 2019 - Version 11.25
data/bin/MANIFEST CHANGED
@@ -65,6 +65,7 @@ html/TagNames/DICOM.html
65
65
  html/TagNames/DJI.html
66
66
  html/TagNames/DNG.html
67
67
  html/TagNames/DPX.html
68
+ html/TagNames/DSF.html
68
69
  html/TagNames/DV.html
69
70
  html/TagNames/DarwinCore.html
70
71
  html/TagNames/DjVu.html
@@ -87,6 +88,7 @@ html/TagNames/GM.html
87
88
  html/TagNames/GPS.html
88
89
  html/TagNames/GeoTiff.html
89
90
  html/TagNames/GoPro.html
91
+ html/TagNames/Google.html
90
92
  html/TagNames/H264.html
91
93
  html/TagNames/HP.html
92
94
  html/TagNames/HTML.html
@@ -187,6 +189,7 @@ html/TagNames/VCard.html
187
189
  html/TagNames/Vorbis.html
188
190
  html/TagNames/WPG.html
189
191
  html/TagNames/WTV.html
192
+ html/TagNames/WavPack.html
190
193
  html/TagNames/XISF.html
191
194
  html/TagNames/XMP.html
192
195
  html/TagNames/ZIP.html
@@ -290,6 +293,7 @@ lib/Image/ExifTool/DICOM.pm
290
293
  lib/Image/ExifTool/DJI.pm
291
294
  lib/Image/ExifTool/DNG.pm
292
295
  lib/Image/ExifTool/DPX.pm
296
+ lib/Image/ExifTool/DSF.pm
293
297
  lib/Image/ExifTool/DV.pm
294
298
  lib/Image/ExifTool/DarwinCore.pm
295
299
  lib/Image/ExifTool/DjVu.pm
@@ -308,6 +312,7 @@ lib/Image/ExifTool/FujiFilm.pm
308
312
  lib/Image/ExifTool/GE.pm
309
313
  lib/Image/ExifTool/GIF.pm
310
314
  lib/Image/ExifTool/GIMP.pm
315
+ lib/Image/ExifTool/Google.pm
311
316
  lib/Image/ExifTool/GM.pm
312
317
  lib/Image/ExifTool/GPS.pm
313
318
  lib/Image/ExifTool/GeoTiff.pm
@@ -449,6 +454,7 @@ lib/Image/ExifTool/Validate.pm
449
454
  lib/Image/ExifTool/Vorbis.pm
450
455
  lib/Image/ExifTool/WPG.pm
451
456
  lib/Image/ExifTool/WTV.pm
457
+ lib/Image/ExifTool/WavPack.pm
452
458
  lib/Image/ExifTool/WriteCanonRaw.pl
453
459
  lib/Image/ExifTool/WriteExif.pl
454
460
  lib/Image/ExifTool/WriteIPTC.pl
@@ -645,6 +651,8 @@ t/Geotag_8.out
645
651
  t/Geotag_9.out
646
652
  t/GoPro.t
647
653
  t/GoPro_2.out
654
+ t/Google.t
655
+ t/Google_2.out
648
656
  t/HTML.t
649
657
  t/HTML_2.out
650
658
  t/ICO.t
@@ -1095,6 +1103,7 @@ t/images/Geotag2.log
1095
1103
  t/images/Geotag3.log
1096
1104
  t/images/Geotag_DJI_2020-12-02_[07-50-31].csv
1097
1105
  t/images/GoPro.jpg
1106
+ t/images/Google.jpg
1098
1107
  t/images/HTML.html
1099
1108
  t/images/ICC_Profile.icc
1100
1109
  t/images/ICO.ico
data/bin/META.json CHANGED
@@ -50,6 +50,6 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.36",
53
+ "version" : "13.38",
54
54
  "x_serialization_backend" : "JSON::PP version 4.06"
55
55
  }
data/bin/META.yml CHANGED
@@ -31,5 +31,5 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.36'
34
+ version: '13.38'
35
35
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
data/bin/README CHANGED
@@ -14,51 +14,51 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DPX r | JNG r/w | ODP r | RSRC r
18
- 3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
19
- 3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
20
- 3GP r/w | DV r | JSON r | OFR r | RWL r/w
21
- 7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
22
- A r | DVR-MS r | K25 r | OGV r | RM r
23
- AA r | DYLIB r | KDC r | ONP r | SEQ r
24
- AAC r | EIP r | KEY r | OPUS r | SKETCH r
25
- AAE r | EPS r/w | LA r | ORF r/w | SO r
26
- AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
27
- ACR r | ERF r/w | LIF r | OTF r | SRF r
28
- AFM r | EXE r | LNK r | PAC r | SRW r/w
29
- AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
30
- AIFF r | EXR r | M2TS r | PBM r/w | SWF r
31
- APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
32
- ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
33
- ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
34
- ASF r | FITS r | MEF r/w | PCX r | TORRENT r
35
- AVI r | FLA r | MIE r/w/c | PDB r | TTC r
36
- AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
37
- AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
38
- BMP r | FLV r | MKS r | PFA r | VCF r
39
- BPG r | FPF r | MKV r | PFB r | VNT r
40
- BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
41
- C2PA r | GIF r/w | MOBI r | PGF r | VSD r
42
- CHM r | GLV r/w | MODD r | PGM r/w | WAV r
43
- COS r | GPR r/w | MOI r | PLIST r | WDP r/w
44
- CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
45
- CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
46
- CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
47
- CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
48
- CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
49
- CSV r | HTML r | MPG r | PPTX r | WTV r
50
- CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
51
- CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
52
- DCM r | ICS r | MRC r | PSD r/w | XCF r
53
- DCP r/w | IDML r | MRW r/w | PSP r | XISF r
54
- DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
55
- DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
56
- DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
57
- DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
58
- DLL r | INX r | NRW r/w | RAM r |
59
- DNG r/w | ISO r | NUMBERS r | RAR r |
60
- DOC r | ITC r | NXD r | RAW r/w |
61
- DOCX r | J2C r | O r | RIFF r |
17
+ 360 r/w | DPX r | J2C r | O r | RIFF r
18
+ 3FR r | DR4 r/w/c | JNG r/w | ODP r | RSRC r
19
+ 3G2 r/w | DSF r | JP2 r/w | ODS r | RTF r
20
+ 3GP r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
21
+ 7Z r | DV r | JSON r | OFR r | RWL r/w
22
+ A r | DVB r/w | JXL r/w | OGG r | RWZ r
23
+ AA r | DVR-MS r | K25 r | OGV r | RM r
24
+ AAC r | DYLIB r | KDC r | ONP r | SEQ r
25
+ AAE r | EIP r | KEY r | OPUS r | SKETCH r
26
+ AAX r/w | EPS r/w | LA r | ORF r/w | SO r
27
+ ACR r | EPUB r | LFP r | ORI r/w | SR2 r/w
28
+ AFM r | ERF r/w | LIF r | OTF r | SRF r
29
+ AI r/w | EXE r | LNK r | PAC r | SRW r/w
30
+ AIFF r | EXIF r/w/c | LRV r/w | PAGES r | SVG r
31
+ APE r | EXR r | M2TS r | PBM r/w | SWF r
32
+ ARQ r/w | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
33
+ ARW r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
34
+ ASF r | FFF r/w | MAX r | PCD r | TNEF r
35
+ AVI r | FITS r | MEF r/w | PCX r | TORRENT r
36
+ AVIF r/w | FLA r | MIE r/w/c | PDB r | TTC r
37
+ AZW r | FLAC r | MIFF r | PDF r/w | TTF r
38
+ BMP r | FLIF r/w | MKA r | PEF r/w | TXT r
39
+ BPG r | FLV r | MKS r | PFA r | VCF r
40
+ BTF r | FPF r | MKV r | PFB r | VNT r
41
+ C2PA r | FPX r | MNG r/w | PFM r | VRD r/w/c
42
+ CHM r | GIF r/w | MOBI r | PGF r | VSD r
43
+ COS r | GLV r/w | MODD r | PGM r/w | WAV r
44
+ CR2 r/w | GPR r/w | MOI r | PLIST r | WDP r/w
45
+ CR3 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
46
+ CRM r/w | HDP r/w | MOV r/w | PMP r | WEBM r
47
+ CRW r/w | HDR r | MP3 r | PNG r/w | WMA r
48
+ CS1 r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
49
+ CSV r | HEIF r/w | MPC r | PPT r | WPG r
50
+ CUR r | HTML r | MPG r | PPTX r | WTV r
51
+ CZI r | ICC r/w/c | MPO r/w | PS r/w | WV r
52
+ DCM r | ICO r | MQV r/w | PSB r/w | X3F r/w
53
+ DCP r/w | ICS r | MRC r | PSD r/w | XCF r
54
+ DCR r | IDML r | MRW r/w | PSP r | XISF r
55
+ DFONT r | IIQ r/w | MXF r | QTIF r/w | XLS r
56
+ DIVX r | IND r/w | NEF r/w | R3D r | XLSX r
57
+ DJVU r | INSP r/w | NKA r | RA r | XMP r/w/c
58
+ DLL r | INSV r | NKSC r/w | RAF r/w | ZIP r
59
+ DNG r/w | INX r | NRW r/w | RAM r |
60
+ DOC r | ISO r | NUMBERS r | RAR r |
61
+ DOCX r | ITC r | NXD r | RAW r/w |
62
62
 
63
63
  Meta Information
64
64
  ----------------------+----------------------+---------------------
@@ -110,8 +110,8 @@ your home directory, then you would type the following commands in a
110
110
  terminal window to extract and run ExifTool:
111
111
 
112
112
  cd ~/Desktop
113
- gzip -dc Image-ExifTool-13.36.tar.gz | tar -xf -
114
- cd Image-ExifTool-13.36
113
+ gzip -dc Image-ExifTool-13.38.tar.gz | tar -xf -
114
+ cd Image-ExifTool-13.38
115
115
  ./exiftool t/images/ExifTool.jpg
116
116
 
117
117
  Note: These commands extract meta information from one of the test images.
@@ -16,6 +16,9 @@
16
16
  # under ActivePerl
17
17
  # 2024-04-29 - PH Added feature types and default to db v1.03
18
18
  # 2024-06-13 - PH Tweaked case of imported feature types
19
+ # 2025-09-11 - PH Changed priority of alternate-language names to
20
+ # use the preferred name if available and fixed
21
+ # flag counts in verbose output
19
22
  #
20
23
  # Notes: Requires these files from https://download.geonames.org/export/
21
24
  #
@@ -564,7 +567,8 @@ if (not $noLang and open INFILE, '<', "$dbdir/$altNamesFile") {
564
567
  $items[$_] and $flags |= (1<<($_-4)) foreach 4,5,6,7;
565
568
  $flags{$items[1]} = ( $flags{$items[1]} || 0 ) | $flags;
566
569
  next if $items[6] or $items[7]; # ignore colloquial and historic names
567
- my $pri = $items[5] ? 0 : ($items[4] ? 1 : 2); # priority for best type of name
570
+ # give more weight to preferred name and less weight to short name
571
+ my $pri = ($items[4] ? 2 : 0) + ($items[5] ? 0 : 1);
568
572
  my $langPri = $bestPri{$lng};
569
573
  $langPri or $langPri = $bestPri{$lng} = { };
570
574
  next if $$langPri{$items[1]} and $$langPri{$items[1]} > $pri;
@@ -930,9 +934,9 @@ if ($noLang) {
930
934
  print "$type flags:\n";
931
935
  printf(" 0x%.2x - %d\n", 0, $$flags{0} || 0);
932
936
  my @label = qw(preferred short colloquial historic);
933
- foreach my $bit (0..5) {
937
+ foreach my $bit (0..3) {
934
938
  my $n = 0;
935
- $_ & (1<<$bit) and ++$n foreach keys %$flags;
939
+ $_ & (1<<$bit) and $n += $$flags{$_} foreach keys %$flags;
936
940
  printf(" 0x%.2x - %d (%s)\n", (1<<$bit), $n, shift(@label)) if $n;
937
941
  }
938
942
  }
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '13.36';
14
+ my $version = '13.38';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -5079,51 +5079,51 @@ supported by ExifTool (r = read, w = write, c = create):
5079
5079
 
5080
5080
  File Types
5081
5081
  ------------+-------------+-------------+-------------+------------
5082
- 360 r/w | DPX r | JNG r/w | ODP r | RSRC r
5083
- 3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
5084
- 3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
5085
- 3GP r/w | DV r | JSON r | OFR r | RWL r/w
5086
- 7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
5087
- A r | DVR-MS r | K25 r | OGV r | RM r
5088
- AA r | DYLIB r | KDC r | ONP r | SEQ r
5089
- AAC r | EIP r | KEY r | OPUS r | SKETCH r
5090
- AAE r | EPS r/w | LA r | ORF r/w | SO r
5091
- AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
5092
- ACR r | ERF r/w | LIF r | OTF r | SRF r
5093
- AFM r | EXE r | LNK r | PAC r | SRW r/w
5094
- AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
5095
- AIFF r | EXR r | M2TS r | PBM r/w | SWF r
5096
- APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
5097
- ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
5098
- ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
5099
- ASF r | FITS r | MEF r/w | PCX r | TORRENT r
5100
- AVI r | FLA r | MIE r/w/c | PDB r | TTC r
5101
- AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
5102
- AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
5103
- BMP r | FLV r | MKS r | PFA r | VCF r
5104
- BPG r | FPF r | MKV r | PFB r | VNT r
5105
- BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
5106
- C2PA r | GIF r/w | MOBI r | PGF r | VSD r
5107
- CHM r | GLV r/w | MODD r | PGM r/w | WAV r
5108
- COS r | GPR r/w | MOI r | PLIST r | WDP r/w
5109
- CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
5110
- CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
5111
- CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
5112
- CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
5113
- CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
5114
- CSV r | HTML r | MPG r | PPTX r | WTV r
5115
- CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
5116
- CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
5117
- DCM r | ICS r | MRC r | PSD r/w | XCF r
5118
- DCP r/w | IDML r | MRW r/w | PSP r | XISF r
5119
- DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
5120
- DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
5121
- DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
5122
- DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
5123
- DLL r | INX r | NRW r/w | RAM r |
5124
- DNG r/w | ISO r | NUMBERS r | RAR r |
5125
- DOC r | ITC r | NXD r | RAW r/w |
5126
- DOCX r | J2C r | O r | RIFF r |
5082
+ 360 r/w | DPX r | J2C r | O r | RIFF r
5083
+ 3FR r | DR4 r/w/c | JNG r/w | ODP r | RSRC r
5084
+ 3G2 r/w | DSF r | JP2 r/w | ODS r | RTF r
5085
+ 3GP r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
5086
+ 7Z r | DV r | JSON r | OFR r | RWL r/w
5087
+ A r | DVB r/w | JXL r/w | OGG r | RWZ r
5088
+ AA r | DVR-MS r | K25 r | OGV r | RM r
5089
+ AAC r | DYLIB r | KDC r | ONP r | SEQ r
5090
+ AAE r | EIP r | KEY r | OPUS r | SKETCH r
5091
+ AAX r/w | EPS r/w | LA r | ORF r/w | SO r
5092
+ ACR r | EPUB r | LFP r | ORI r/w | SR2 r/w
5093
+ AFM r | ERF r/w | LIF r | OTF r | SRF r
5094
+ AI r/w | EXE r | LNK r | PAC r | SRW r/w
5095
+ AIFF r | EXIF r/w/c | LRV r/w | PAGES r | SVG r
5096
+ APE r | EXR r | M2TS r | PBM r/w | SWF r
5097
+ ARQ r/w | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
5098
+ ARW r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
5099
+ ASF r | FFF r/w | MAX r | PCD r | TNEF r
5100
+ AVI r | FITS r | MEF r/w | PCX r | TORRENT r
5101
+ AVIF r/w | FLA r | MIE r/w/c | PDB r | TTC r
5102
+ AZW r | FLAC r | MIFF r | PDF r/w | TTF r
5103
+ BMP r | FLIF r/w | MKA r | PEF r/w | TXT r
5104
+ BPG r | FLV r | MKS r | PFA r | VCF r
5105
+ BTF r | FPF r | MKV r | PFB r | VNT r
5106
+ C2PA r | FPX r | MNG r/w | PFM r | VRD r/w/c
5107
+ CHM r | GIF r/w | MOBI r | PGF r | VSD r
5108
+ COS r | GLV r/w | MODD r | PGM r/w | WAV r
5109
+ CR2 r/w | GPR r/w | MOI r | PLIST r | WDP r/w
5110
+ CR3 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
5111
+ CRM r/w | HDP r/w | MOV r/w | PMP r | WEBM r
5112
+ CRW r/w | HDR r | MP3 r | PNG r/w | WMA r
5113
+ CS1 r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
5114
+ CSV r | HEIF r/w | MPC r | PPT r | WPG r
5115
+ CUR r | HTML r | MPG r | PPTX r | WTV r
5116
+ CZI r | ICC r/w/c | MPO r/w | PS r/w | WV r
5117
+ DCM r | ICO r | MQV r/w | PSB r/w | X3F r/w
5118
+ DCP r/w | ICS r | MRC r | PSD r/w | XCF r
5119
+ DCR r | IDML r | MRW r/w | PSP r | XISF r
5120
+ DFONT r | IIQ r/w | MXF r | QTIF r/w | XLS r
5121
+ DIVX r | IND r/w | NEF r/w | R3D r | XLSX r
5122
+ DJVU r | INSP r/w | NKA r | RA r | XMP r/w/c
5123
+ DLL r | INSV r | NKSC r/w | RAF r/w | ZIP r
5124
+ DNG r/w | INX r | NRW r/w | RAM r |
5125
+ DOC r | ISO r | NUMBERS r | RAR r |
5126
+ DOCX r | ITC r | NXD r | RAW r/w |
5127
5127
 
5128
5128
  Meta Information
5129
5129
  ----------------------+----------------------+---------------------
@@ -5722,10 +5722,12 @@ as the exported file. The first row of the I<CSVFILE> must be the ExifTool
5722
5722
  tag names (with optional group names) for each column of the file, and
5723
5723
  values must be separated by commas. A special "SourceFile" column specifies
5724
5724
  the files associated with each row of information (and a SourceFile of "*"
5725
- may be used to define default tags to be imported for all files which are
5726
- combined with any tags specified for the specific SourceFile processed). The
5727
- B<-csvDelim> option may be used to change the input/output field delimiter
5728
- if something other than a comma is required.
5725
+ may be used to define default tags to be imported for all files, which are
5726
+ then combined with any tags specified for the specific SourceFile
5727
+ processed). To be clear, the imported CSV file acts as a lookup table to
5728
+ obtain the tags for import based on the files/directories and tags specified
5729
+ on the command line. The B<-csvDelim> option may be used to change the
5730
+ input/output field delimiter if something other than a comma is required.
5729
5731
 
5730
5732
  The following examples demonstrate basic use of the B<-csv> option:
5731
5733
 
@@ -5924,18 +5926,18 @@ convert arrays into strings. For example:
5924
5926
 
5925
5927
  exiftool -j -api structformat=jsonq -sep ", " ...
5926
5928
 
5927
- If I<JSONFILE> is specified, the file is imported and the tag definitions
5928
- from the file are used to set tag values on a per-file basis. The special
5929
- "SourceFile" entry in each JSON object associates the information with a
5930
- specific target file. An object with a missing SourceFile or a SourceFile
5931
- of "*" defines default tags for all target files which are combined with any
5932
- tags specified for the specific SourceFile processed. The imported JSON
5933
- file must have the same format as the exported JSON files with the exception
5934
- that options exporting JSON objects instead of simple values are not
5935
- compatible with the import file format (ie. export with B<-D>, B<-H>, B<-l>,
5936
- or B<-T> is not compatible, and use B<-G> instead of B<-g>). Additionally,
5937
- tag names in the input JSON file may be suffixed with a C<#> to disable
5938
- print conversion.
5929
+ If I<JSONFILE> is specified, the JSON file is imported and the tag
5930
+ definitions from the JSON are used to set tag values on a per-file basis for
5931
+ each file specified on the command line. A special "SourceFile" entry in
5932
+ each JSON object associates the information with a specific target file. An
5933
+ object with a missing SourceFile or a SourceFile of "*" defines default tags
5934
+ for all target files which are combined with any tags specified for the
5935
+ specific SourceFile processed. The imported JSON file must have the same
5936
+ format as the exported JSON files with the exception that options exporting
5937
+ JSON objects instead of simple values are not compatible with the import
5938
+ file format (ie. export with B<-D>, B<-H>, B<-l>, or B<-T> is not
5939
+ compatible, and use B<-G> instead of B<-g>). Additionally, tag names in the
5940
+ input JSON file may be suffixed with a C<#> to disable print conversion.
5939
5941
 
5940
5942
  Specific tags may be imported from the JSON database by adding B<->I<TAG>
5941
5943
  options to the command, or excluded with B<-->I<TAG>, with exclusions taking
@@ -6082,7 +6084,7 @@ with this command:
6082
6084
 
6083
6085
  produces output like this:
6084
6086
 
6085
- -- Generated by ExifTool 13.36 --
6087
+ -- Generated by ExifTool 13.38 --
6086
6088
  File: a.jpg - 2003:10:31 15:44:19
6087
6089
  (f/5.6, 1/60s, ISO 100)
6088
6090
  File: b.jpg - 2006:05:23 11:57:38
@@ -88,7 +88,7 @@ sub ProcessAudible_cvrx($$$);
88
88
  PROCESS_PROC => \&ProcessAudible_cvrx,
89
89
  GROUPS => { 0 => 'QuickTime', 2 => 'Audio' },
90
90
  NOTES => 'Audible cover art information in M4B audio books.',
91
- VARS => { NO_ID => 1 },
91
+ VARS => { ID_FMT => 'none' },
92
92
  CoverArtType => 'CoverArtType',
93
93
  CoverArt => {
94
94
  Name => 'CoverArt',
@@ -234,7 +234,7 @@ my %fixed2_30 = (
234
234
  %Image::ExifTool::BMP::Extra = (
235
235
  GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
236
236
  NOTES => 'Extra information extracted from some BMP images.',
237
- VARS => { NO_ID => 1 },
237
+ VARS => { ID_FMT => 'none' },
238
238
  LinkedProfileName => { },
239
239
  ICC_Profile => { SubDirectory => { TagTable => 'Image::ExifTool::ICC_Profile::Main' } },
240
240
  EmbeddedJPG => {
@@ -248,7 +248,7 @@ my %fixed2_30 = (
248
248
  );
249
249
 
250
250
  #------------------------------------------------------------------------------
251
- # Extract EXIF information from a BMP image
251
+ # Extract metadata from a BMP image
252
252
  # Inputs: 0) ExifTool object reference, 1) dirInfo reference
253
253
  # Returns: 1 on success, 0 if this wasn't a valid BMP file
254
254
  sub ProcessBMP($$)
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
35
35
  use Image::ExifTool::Validate;
36
36
  use Image::ExifTool::MacOS;
37
37
 
38
- $VERSION = '3.62';
38
+ $VERSION = '3.63';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -74,7 +74,8 @@ my %tweakOrder = (
74
74
  DJI => 'Casio',
75
75
  FLIR => 'DJI',
76
76
  FujiFilm => 'FLIR',
77
- GoPro => 'GE',
77
+ Google => 'GE',
78
+ GoPro => 'Google',
78
79
  Kodak => 'JVC',
79
80
  Leaf => 'Kodak',
80
81
  Lytro => 'Leaf',
@@ -867,15 +868,15 @@ sub new
867
868
  $longID{$tableName} = 0;
868
869
  $longName{$tableName} = 0;
869
870
  # save all tag names
870
- my ($tagID, $binaryTable, $noID, $hexID, $isIPTC, $isXMP);
871
+ my ($tagID, $binaryTable, $noID, $prtID, $isIPTC, $isXMP);
871
872
  $isIPTC = 1 if $writeProc and $writeProc eq \&Image::ExifTool::IPTC::WriteIPTC;
872
873
  # generate flattened tag names for structure fields if this is an XMP table
873
874
  if ($$table{GROUPS} and $$table{GROUPS}{0} eq 'XMP' or $$vars{ADD_FLATTENED}) {
874
875
  Image::ExifTool::XMP::AddFlattenedTags($table);
875
876
  $isXMP = 1;
876
877
  }
877
- $noID = 1 if $isXMP or $short =~ /^(Shortcuts|ASF.*)$/ or $$vars{NO_ID};
878
- $hexID = $$vars{HEX_ID};
878
+ $prtID = $$vars{ID_FMT};
879
+ $noID = 1 if $isXMP or $short =~ /^(Shortcuts|ASF.*)$/ or $prtID and $prtID eq 'none';
879
880
  if ($$table{WRITE_PROC} and $$table{WRITE_PROC} eq \&Image::ExifTool::WriteBinaryData
880
881
  and not $$table{CHECK_PROC})
881
882
  {
@@ -1104,7 +1105,7 @@ TagID: foreach $tagID (@keys) {
1104
1105
  $note = 'NOT a flattened tag!';
1105
1106
  } else {
1106
1107
  # add note about different XMP Tag ID
1107
- $note = $$tagInfo{RootTagInfo} ? $tagID : "called $tagID by the spec";
1108
+ $note = $$tagInfo{RootTagInfo} ? $tagID : "tag ID is '${tagID}'";
1108
1109
  }
1109
1110
  if ($$tagInfo{Notes}) {
1110
1111
  $values[-1] =~ s/^\(/($note; /;
@@ -1492,8 +1493,14 @@ TagID: foreach $tagID (@keys) {
1492
1493
  if ($tagID =~ /^(-)?\d+(\.\d+)?$/) {
1493
1494
  if ($1) {
1494
1495
  $tagIDstr = $tagID;
1495
- } elsif (defined $hexID) {
1496
- $tagIDstr = $hexID ? sprintf('0x%.4x',$tagID) : $tagID;
1496
+ } elsif (defined $prtID) {
1497
+ if ($prtID eq 'hex') {
1498
+ $tagIDstr = sprintf('0x%.4x',$tagID);
1499
+ } elsif ($prtID eq 'str') {
1500
+ $tagIDstr = "'${tagID}'";
1501
+ } else {
1502
+ $tagIDstr = $tagID;
1503
+ }
1497
1504
  } elsif (not $2 and not $binaryTable and not $isIPTC and
1498
1505
  not ($short =~ /^CanonCustom/ and $tagID < 256))
1499
1506
  {
@@ -1911,7 +1918,7 @@ sub SortedTagTableKeys($)
1911
1918
  my $table = shift;
1912
1919
  my $vars = $$table{VARS} || { };
1913
1920
  my @keys = TagTableKeys($table);
1914
- if ($$vars{NO_ID}) {
1921
+ if ($$vars{ID_FMT} and $$vars{ID_FMT} eq 'none') {
1915
1922
  # sort by tag name if ID not shown
1916
1923
  my ($key, %name);
1917
1924
  foreach $key (@keys) {
@@ -62,7 +62,7 @@ my %cborType7 = (
62
62
 
63
63
  %Image::ExifTool::CBOR::Main = (
64
64
  GROUPS => { 0 => 'JUMBF', 1 => 'CBOR', 2 => 'Other' },
65
- VARS => { NO_ID => 1 },
65
+ VARS => { ID_FMT => 'none' },
66
66
  PROCESS_PROC => \&ProcessCBOR,
67
67
  NOTES => q{
68
68
  The tags below are extracted from CBOR (Concise Binary Object