exiftool-vendored.exe 12.44.0 → 12.49.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 (56) hide show
  1. package/bin/exiftool_files/Changes +112 -3
  2. package/bin/exiftool_files/README +45 -44
  3. package/bin/exiftool_files/config_files/acdsee.config +2 -1
  4. package/bin/exiftool_files/config_files/frameCount.config +56 -0
  5. package/bin/exiftool_files/config_files/tiff_version.config +1 -1
  6. package/bin/exiftool_files/exiftool.pl +77 -66
  7. package/bin/exiftool_files/fmt_files/gpx.fmt +3 -0
  8. package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +3 -0
  9. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +6 -2
  10. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +17 -9
  11. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +33 -15
  12. package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +8 -1
  13. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +7 -8
  14. package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +9 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +11 -7
  16. package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +17 -3
  17. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +4 -3
  18. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +4 -2
  19. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +31 -5
  20. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +2 -2
  21. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +3 -2
  22. package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +141 -0
  23. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +6 -6
  24. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +55 -8
  25. package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +9 -3
  26. package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +494 -0
  27. package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +3 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +24 -16
  29. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +39 -31
  30. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +5 -3
  31. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +21 -4
  32. package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +25 -5
  33. package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +29 -3
  34. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +113 -8
  35. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +44 -6
  36. package/bin/exiftool_files/lib/Image/ExifTool/README +1 -1
  37. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +106 -9
  38. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +2 -2
  39. package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +27 -1
  40. package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +37 -13
  41. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +8 -3
  42. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +188 -7
  43. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +3051 -2732
  44. package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +3 -4
  45. package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +2 -3
  46. package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +3 -3
  47. package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
  48. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +100 -23
  49. package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +2 -6
  50. package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +359 -0
  51. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +10 -3
  52. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +76 -58
  53. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +11 -4
  54. package/bin/exiftool_files/lib/Image/ExifTool.pm +75 -15
  55. package/bin/exiftool_files/lib/Image/ExifTool.pod +61 -57
  56. package/package.json +2 -2
@@ -7,6 +7,115 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.42. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Oct. 19, 2022 - Version 12.49
11
+
12
+ - Added read support for Windows ICO and CUR files
13
+ - Added ability to shift EXIF OffsetTime tags (eg. "-OffsetTime+=+02:00")
14
+ - Added a few new XMP tags and print conversions
15
+ - Added a print conversion for Photoshop:PrintFlags
16
+ - Added a new SonyModelID (thanks LibRaw)
17
+ - Added a few new Canon RF LensType values (thanks Norbert Wasser)
18
+ - Added a new Canon LensType
19
+ - Added a new Nikon LensID
20
+ - Decode 'riff' metadata blocks in FLAC audio files
21
+ - Decode RIFF 'acid' chunk written by Acidizer
22
+ - Enhanced the -d option %f sub-second date/time format code to allow the
23
+ decimal point to be dropped (eg. "%-3f")
24
+ - Patched another Sigma Photo Pro incompatibility when writing X3F images
25
+ (Sigma will also fix this at their end in the next SPP release)
26
+
27
+ Oct. 13, 2022 - Version 12.48
28
+
29
+ - Added support for new XMP-photoshop:CameraProfiles structure
30
+ - Added a new SonyModelID and Sony LensType (thanks Jos Roost)
31
+ - Decode more tags for the Sony ILME-FX30 (thanks Jos Roost)
32
+ - Decode a couple of new Panasonic tags, and improved decoding of others
33
+ - Decode STANAG-4609 MISB timed metadata from M2TS videos
34
+ - Decode a new Nikon tag (thanks Warren Hatch)
35
+ - Decode a couple of new FujiFilm tags (thanks Honza Pokorny)
36
+ - Improved round-off errors when writing QuickTime:MatrixStructure via the
37
+ Composite:Rotation tag
38
+ - Increased Verbose level of "nothing changed" message added in 12.45
39
+ - Removed "Z" (Zulu) designation from some of the MS-DOC date/time tags
40
+ because they most certainly are in local time as written by Word 2011 for
41
+ Mac (while some other MS-DOC and FlashPix date/time tags extracted without a
42
+ "Z" are actually in Zulu time -- a bit of a mess really)
43
+ - Prevent dynamically-generated Unknown tags from being extracted when the
44
+ -validate option is used without -u
45
+ - Patched to better handle irregular timestamps in streaming GPS of NextBase
46
+ dashcam videos
47
+ - Fixed incompatibility with Sigma Photo Pro which could result in Sigma Photo
48
+ Pro corrupting an ExifTool-edited X3F image (the section length in the
49
+ footer needed to include the padding to a 4-byte boundary, thanks Sigma
50
+ engineer Yuki Miyahara)
51
+ - Fixed problem which could prevent ExifTool from reading all GPS points from
52
+ some INNOV M2TS videos
53
+
54
+ Oct. 3, 2022 - Version 12.47
55
+
56
+ - Added a new Nikon LensID (thanks David Puschel)
57
+ - Fixed bug introduced in 12.46 which resulted in a runtime error when -j was
58
+ combined with -b
59
+
60
+ Oct. 1, 2022 - Version 12.46 - "Write WEBP"
61
+
62
+ - Added WEBP write support
63
+ - Added the abilty to write Panasonic GH6 RW2 files
64
+ - Added a new Canon LensType
65
+ - Added a number of new Sigma LensType values (thanks LibRaw)
66
+ - Added support for BigTIFF format code 16 in Apple ProRaw maker notes
67
+ - Added config_files/frameCount.config to extract MP4 FrameCount
68
+ - Added a MIE OriginalImageSize tag
69
+ - Added some extra -validate checks for RIFF-based file formats
70
+ - Extract FrameRate from MP4 tmcd box
71
+ - Decode a new Apple tag (thanks Neal Krawetz)
72
+ - Decode more information from Nikon Z-camera videos
73
+ - Decode streaming GPS from Garmin DriveAssist 51 MP4 videos
74
+ - Changed the names of two FujiFilm FirmwareVersion tags
75
+ - Enhanced WEBP FileType identification to denote Extended WEBP
76
+ - Preserve fractional seconds when extracting Samsung TimeStamp times
77
+ - Patched to avoid reporting Photoshop:ProgressiveScans unless PhotoshopFormat
78
+ is Progressive
79
+ - Patched to test QuickTime UserData tags with default 0x0000 language code to
80
+ see if they contain UTF8 characters, and if so assume UTF8 encoding and
81
+ ignore the CharsetQuickTime setting
82
+ - Patched to avoid potential deep recursion when reading/writing malicious CRW
83
+ images
84
+ - Fixed "Invalid ID3 frame size" problem when reading ID3v2 with an extended
85
+ header (very uncommon, but Audacity uses this)
86
+ - Fixed typo in the name of a new DNG 1.6 tag
87
+ - Fixed some verbose warnings when reading Nikon Z-camera NEF files
88
+ - Fixed decoding of a couple of Nikon Z9 tags for newer firmware versions
89
+ (thanks Warren Hatch)
90
+
91
+ Sept. 16, 2022 - Version 12.45
92
+
93
+ - Added new IPTC Video Metadata version 1.3 tags
94
+ - Added a couple of new Canon lenses (thanks Norbert Wasser)
95
+ - Added a new Sony LensType (thanks Jos Roost)
96
+ - Added known Unknown value for IPTC ChromaticityColorant (thanks Herb)
97
+ - Added new Nikon WhiteBalanceFineTune tag (thanks Milos Komarcevic)
98
+ - Extract the raw thermal data from all frames of a SEQ file when -ee2 is used
99
+ - Decode individual tags in QuickTime ColorRepresentation
100
+ - Decode a new Matroska tag
101
+ - Improved verbose "nothing changed" messages when writing
102
+ - Patched -ee option to extract metadata after the first Cluster in MKV videos
103
+ (previously only -U and -v did this)
104
+ - Patched to differentiate Java bytecode .class files from Mach-O fat binaries
105
+ - Patched to avoid "Use of uninitialized value" warning when deleting GPS
106
+ coordinates via the newly writable Composite tags
107
+ - Patched to avoid duplicating raw data when writing Sony ARW images where the
108
+ raw data is double-referenced as both strips and tiles (affects ARW images
109
+ from some newer models like the ILCE-1 when SonyRawFileType is "Lossless
110
+ Compressed RAW 2")
111
+ - Patched to avoid "fixing" the order of IFD entries in TIFF-based RAW files
112
+ to improve compatibility with some RAW viewers
113
+ - Minor change to Composite FileNumber to remove "-" when -n is used
114
+ - Fixed problem extracting some timed metadata when "-api ignoretags=all" was
115
+ used with "-api requesttags" to request the specific information
116
+ - Fixed -validate feature to avoid incorrectly warning about non-capitalized
117
+ boolean values in XMP
118
+
10
119
  July 21, 2022 - Version 12.44
11
120
 
12
121
  - Added a few new Sony lenses (thanks Jos Roost)
@@ -276,6 +385,8 @@ Aug. 12, 2021 - Version 12.30 (production release)
276
385
  currently can't be created)
277
386
  - Patched to remove 2 GB size limit when reading Photoshop ImageSourceData
278
387
 
388
+ History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
389
+
279
390
  July 9, 2021 - Version 12.29
280
391
 
281
392
  - Added a few new Nikon and Olympus lenses (thanks LibRaw)
@@ -330,8 +441,6 @@ May 20, 2021 - Version 12.26 (production release)
330
441
  - Fixed problem which could cause a "Wide character" warning and generate a
331
442
  corrupted output file when writing some illegal values
332
443
 
333
- History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
334
-
335
444
  Apr. 22, 2021 - Version 12.25
336
445
 
337
446
  - JPEG XL support is now official
@@ -647,7 +756,7 @@ Aug. 10, 2020 - Version 12.04
647
756
  - Moved new QuckTime ItemList tags added in version 12.02 to the proper group
648
757
  (they were incorrectly added to the Keys group)
649
758
  - Improved QuickTime -v3 output to show default language codes
650
- - Patched -lang option to work for the values of somet tags with coded
759
+ - Patched -lang option to work for the values of some tags with coded
651
760
  translations
652
761
  - Patched the format of a number of QuickTime tags when writing for improved
653
762
  compatibility with iTunes and AtomicParsley
@@ -14,48 +14,48 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
18
- 3FR r | DSS r | JP2 r/w | ODP r | RIFF r
19
- 3G2 r/w | DV r | JPEG r/w | ODS r | RSRC r
20
- 3GP r/w | DVB r/w | JSON r | ODT r | RTF r
21
- A r | DVR-MS r | JXL r | OFR r | RW2 r/w
22
- AA r | DYLIB r | K25 r | OGG r | RWL r/w
23
- AAE r | EIP r | KDC r | OGV r | RWZ r
24
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
25
- ACR r | EPUB r | LA r | OPUS r | SEQ r
26
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
27
- AI r/w | EXE r | LIF r | ORI r/w | SO r
28
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
29
- APE r | EXR r | LRV r/w | PAC r | SRF r
30
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
31
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
32
- ASF r | FFF r/w | MACOS r | PCD r | SWF r
33
- AVI r | FITS r | MAX r | PCX r | THM r/w
34
- AVIF r/w | FLA r | MEF r/w | PDB r | TIFF r/w
35
- AZW r | FLAC r | MIE r/w/ | PDF r/w | TORRENT r
36
- BMP r | FLIF r/w | MIFF r c | PEF r/w | TTC r
37
- BPG r | FLV r | MKA r | PFA r | TTF r
38
- BTF r | FPF r | MKS r | PFB r | TXT r
39
- CHM r | FPX r | MKV r | PFM r | VCF r
40
- COS r | GIF r/w | MNG r/w | PGF r | VRD r/w/c
41
- CR2 r/w | GPR r/w | MOBI r | PGM r/w | VSD r
42
- CR3 r/w | GZ r | MODD r | PLIST r | WAV r
43
- CRM r/w | HDP r/w | MOI r | PICT r | WDP r/w
44
- CRW r/w | HDR r | MOS r/w | PMP r | WEBP r
45
- CS1 r/w | HEIC r/w | MOV r/w | PNG r/w | WEBM r
46
- CSV r | HEIF r/w | MP3 r | PPM r/w | WMA r
47
- CZI r | HTML r | MP4 r/w | PPT r | WMV r
48
- DCM r | ICC r/w/c | MPC r | PPTX r | WTV r
49
- DCP r/w | ICS r | MPG r | PS r/w | WV r
50
- DCR r | IDML r | MPO r/w | PSB r/w | X3F r/w
51
- DFONT r | IIQ r/w | MQV r/w | PSD r/w | XCF r
52
- DIVX r | IND r/w | MRC r | PSP r | XLS r
53
- DJVU r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
54
- DLL r | INSV r | MXF r | R3D r | XMP r/w/c
55
- DNG r/w | INX r | NEF r/w | RA r | ZIP r
56
- DOC r | ISO r | NKSC r/w | RAF r/w |
57
- DOCX r | ITC r | NRW r/w | RAM r |
58
- DPX r | J2C r | NUMBERS r | RAR r |
17
+ 360 r/w | DPX r | ITC r | NRW r/w | RAM r
18
+ 3FR r | DR4 r/w/c | J2C r | NUMBERS r | RAR r
19
+ 3G2 r/w | DSS r | JNG r/w | O r | RAW r/w
20
+ 3GP r/w | DV r | JP2 r/w | ODP r | RIFF r
21
+ A r | DVB r/w | JPEG r/w | ODS r | RSRC r
22
+ AA r | DVR-MS r | JSON r | ODT r | RTF r
23
+ AAE r | DYLIB r | JXL r | OFR r | RW2 r/w
24
+ AAX r/w | EIP r | K25 r | OGG r | RWL r/w
25
+ ACR r | EPS r/w | KDC r | OGV r | RWZ r
26
+ AFM r | EPUB r | KEY r | ONP r | RM r
27
+ AI r/w | ERF r/w | LA r | OPUS r | SEQ r
28
+ AIFF r | EXE r | LFP r | ORF r/w | SKETCH r
29
+ APE r | EXIF r/w/c | LIF r | ORI r/w | SO r
30
+ ARQ r/w | EXR r | LNK r | OTF r | SR2 r/w
31
+ ARW r/w | EXV r/w/c | LRV r/w | PAC r | SRF r
32
+ ASF r | F4A/V r/w | M2TS r | PAGES r | SRW r/w
33
+ AVI r | FFF r/w | M4A/V r/w | PBM r/w | SVG r
34
+ AVIF r/w | FITS r | MACOS r | PCD r | SWF r
35
+ AZW r | FLA r | MAX r | PCX r | THM r/w
36
+ BMP r | FLAC r | MEF r/w | PDB r | TIFF r/w
37
+ BPG r | FLIF r/w | MIE r/w/c | PDF r/w | TORRENT r
38
+ BTF r | FLV r | MIFF r | PEF r/w | TTC r
39
+ CHM r | FPF r | MKA r | PFA r | TTF r
40
+ COS r | FPX r | MKS r | PFB r | TXT r
41
+ CR2 r/w | GIF r/w | MKV r | PFM r | VCF r
42
+ CR3 r/w | GPR r/w | MNG r/w | PGF r | VRD r/w/c
43
+ CRM r/w | GZ r | MOBI r | PGM r/w | VSD r
44
+ CRW r/w | HDP r/w | MODD r | PLIST r | WAV r
45
+ CS1 r/w | HDR r | MOI r | PICT r | WDP r/w
46
+ CSV r | HEIC r/w | MOS r/w | PMP r | WEBP r/w
47
+ CUR r | HEIF r/w | MOV r/w | PNG r/w | WEBM r
48
+ CZI r | HTML r | MP3 r | PPM r/w | WMA r
49
+ DCM r | ICC r/w/c | MP4 r/w | PPT r | WMV r
50
+ DCP r/w | ICO r | MPC r | PPTX r | WTV r
51
+ DCR r | ICS r | MPG r | PS r/w | WV r
52
+ DFONT r | IDML r | MPO r/w | PSB r/w | X3F r/w
53
+ DIVX r | IIQ r/w | MQV r/w | PSD r/w | XCF r
54
+ DJVU r | IND r/w | MRC r | PSP r | XLS r
55
+ DLL r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
56
+ DNG r/w | INSV r | MXF r | R3D r | XMP r/w/c
57
+ DOC r | INX r | NEF r/w | RA r | ZIP r
58
+ DOCX r | ISO r | NKSC r/w | RAF r/w |
59
59
 
60
60
  Meta Information
61
61
  ----------------------+----------------------+---------------------
@@ -107,8 +107,8 @@ your home directory, then you would type the following commands in a
107
107
  terminal window to extract and run ExifTool:
108
108
 
109
109
  cd ~/Desktop
110
- gzip -dc Image-ExifTool-12.44.tar.gz | tar -xf -
111
- cd Image-ExifTool-12.44
110
+ gzip -dc Image-ExifTool-12.49.tar.gz | tar -xf -
111
+ cd Image-ExifTool-12.49
112
112
  ./exiftool t/images/ExifTool.jpg
113
113
 
114
114
  Note: These commands extract meta information from one of the test images.
@@ -199,6 +199,7 @@ distribution package:
199
199
  depthmap.config - Extract Google DepthMap images
200
200
  example.config - General example showing config features
201
201
  fotoware.config - Definitions for writing Fotoware XMP tags
202
+ frameCount.config - Extract FrameCount from MP4 videos
202
203
  gps2utm.config - Generate UTM coordinate tags from GPS info
203
204
  gpsdatetime.config - Make GPSDateTime from CreateDate+SampleTime
204
205
  nksc.config - Decode tags in Nikon ViewNX NKSC files
@@ -63,6 +63,7 @@
63
63
  # from original names to new names, for example
64
64
  # "RegionInfoACDSeeAppliedToDimensions*" -> "ACDSeeRegionAppliedToDimensions*"
65
65
  # "RegionInfoACDSeeRegionList* -> "ACDSeeRegion*"
66
+ # 2022/10/03 - PH Set group name properly to XMP-acdsee-rs
66
67
  #------------------------------------------------------------------------------
67
68
  use Data::Dumper;
68
69
 
@@ -211,7 +212,7 @@ my %sACDSeeRegionStruct = (
211
212
  );
212
213
 
213
214
  %Image::ExifTool::UserDefined::ACDSeeRegions = (
214
- GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee', 2 => 'Image' },
215
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee-rs', 2 => 'Image' },
215
216
  NAMESPACE => { 'acdsee-rs' => 'http://ns.acdsee.com/regions/' },
216
217
  WRITABLE => 'string', # (default to string-type tags)
217
218
  Regions => {
@@ -0,0 +1,56 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: frameCount.config
3
+ #
4
+ # Description: ExifTool config file to extract MP4 video FrameCount
5
+ #
6
+ # Usage: exiftool -config frameCount.config -frameCount FILE
7
+ #
8
+ # Requires: ExifTool version 7.99 or later
9
+ #
10
+ # Revisions: 2022-09-22 - P. Harvey Created
11
+ #
12
+ # Notes: Enables Unknown option to extract the required SampleSizes atom
13
+ #------------------------------------------------------------------------------
14
+
15
+ %Image::ExifTool::UserDefined = (
16
+ 'Image::ExifTool::Composite' => {
17
+ 'FrameCount' => {
18
+ Require => {
19
+ 0 => 'HandlerType',
20
+ },
21
+ Desire => {
22
+ 1 => 'SampleSizes',
23
+ 2 => 'CompactSampleSizes',
24
+ },
25
+ Groups => { 2 => 'Video' },
26
+ ValueConv => q{
27
+ my ($i, $tag, $ptr);
28
+ my $key = 'HandlerType';
29
+ # find video track number
30
+ for ($i=1; defined $val[0]; ++$i) {
31
+ last if $val[0] eq 'Video Track';
32
+ $key = "HandlerType ($i)";
33
+ $val[0] = $self->GetValue($key);
34
+ }
35
+ my $trk = $self->GetGroup($key, 1);
36
+ # search for SampleSizes or CompactSampleSizes for this track
37
+ foreach $tag ('SampleSizes', 'CompactSampleSizes') {
38
+ $key = $tag;
39
+ for ($i=1; ; ++$i) {
40
+ $ptr = $self->GetValue($key);
41
+ last unless $ptr;
42
+ last if $self->GetGroup($key, 1) eq $trk;
43
+ $key = "$tag ($i)";
44
+ }
45
+ last if $ptr;
46
+ }
47
+ return undef unless $ptr;
48
+ return unpack('x8N', $$ptr);
49
+ },
50
+ },
51
+ },
52
+ );
53
+
54
+ %Image::ExifTool::UserDefined::Options = (
55
+ Unknown => 1, # (otherwise SampleSizes won't be extracted)
56
+ );
@@ -113,7 +113,7 @@ sub has_defined {
113
113
  ],
114
114
  );
115
115
 
116
- # Must set undocumented SaveFormat option to provide access to the tag format types
116
+ # Must set SaveFormat option to provide access to the tag format types
117
117
  %Image::ExifTool::UserDefined::Options = (
118
118
  SaveFormat => 1,
119
119
  );
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.44';
14
+ my $version = '12.49';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -2305,7 +2305,7 @@ TAG: foreach $tag (@foundTags) {
2305
2305
  if (ref $val) {
2306
2306
  # happens with -X, -j or -php when combined with -b:
2307
2307
  if (defined $binaryOutput and not $binaryOutput and $$et{TAG_INFO}{$tag}{Protected}) {
2308
- # avoid extracting Protected binary tags (eg. data blocks) [insider information]
2308
+ # avoid extracting Unsafe binary tags (eg. data blocks) [insider information]
2309
2309
  my $lcTag = lc $tag;
2310
2310
  $lcTag =~ s/ .*//;
2311
2311
  next unless $$et{REQ_TAG_LOOKUP}{$lcTag} or ($$et{OPTIONS}{RequestAll} || 0) > 2;
@@ -3252,7 +3252,7 @@ sub EncodeXML($)
3252
3252
  {
3253
3253
  my $strPt = shift;
3254
3254
  if ($$strPt =~ /[\0-\x08\x0b\x0c\x0e-\x1f]/ or
3255
- (not $altEnc and Image::ExifTool::XMP::IsUTF8($strPt) < 0))
3255
+ (not $altEnc and Image::ExifTool::IsUTF8($strPt) < 0))
3256
3256
  {
3257
3257
  # encode binary data and non-UTF8 with special characters as base64
3258
3258
  $$strPt = Image::ExifTool::XMP::EncodeBase64($$strPt);
@@ -3316,7 +3316,7 @@ sub EscapeJSON($;$)
3316
3316
  return $str if $str =~ /^-?(\d|[1-9]\d{1,14})(\.\d{1,16})?(e[-+]?\d{1,3})?$/i;
3317
3317
  }
3318
3318
  # encode JSON string in base64 if necessary
3319
- if ($json < 2 and defined $binaryOutput and Image::ExifTool::XMP::IsUTF8(\$str) < 0) {
3319
+ if ($json < 2 and defined $binaryOutput and Image::ExifTool::IsUTF8(\$str) < 0) {
3320
3320
  return '"base64:' . Image::ExifTool::XMP::EncodeBase64($str, 1) . '"';
3321
3321
  }
3322
3322
  # escape special characters
@@ -3392,7 +3392,7 @@ sub FormatCSV($)
3392
3392
  my $val = shift;
3393
3393
  # check for valid encoding if the Charset option was used
3394
3394
  if ($setCharset and ($val =~ /[^\x09\x0a\x0d\x20-\x7e\x80-\xff]/ or
3395
- ($setCharset eq 'UTF8' and Image::ExifTool::XMP::IsUTF8(\$val) < 0)))
3395
+ ($setCharset eq 'UTF8' and Image::ExifTool::IsUTF8(\$val) < 0)))
3396
3396
  {
3397
3397
  $val = 'base64:' . Image::ExifTool::XMP::EncodeBase64($val, 1);
3398
3398
  }
@@ -3479,7 +3479,7 @@ sub ConvertBinary($)
3479
3479
  $obj = $$obj;
3480
3480
  # encode in base64 if necessary (0xf7 allows for up to 21-bit UTF-8 code space)
3481
3481
  if ($json == 1 and ($obj =~ /[^\x09\x0a\x0d\x20-\x7e\x80-\xf7]/ or
3482
- Image::ExifTool::XMP::IsUTF8(\$obj) < 0))
3482
+ Image::ExifTool::IsUTF8(\$obj) < 0))
3483
3483
  {
3484
3484
  $obj = 'base64:' . Image::ExifTool::XMP::EncodeBase64($obj, 1);
3485
3485
  }
@@ -3613,8 +3613,7 @@ sub CheckUTF8($$)
3613
3613
  my ($file, $enc) = @_;
3614
3614
  my $isUTF8 = 0;
3615
3615
  if ($file =~ /[\x80-\xff]/) {
3616
- require Image::ExifTool::XMP;
3617
- $isUTF8 = Image::ExifTool::XMP::IsUTF8(\$file);
3616
+ $isUTF8 = Image::ExifTool::IsUTF8(\$file);
3618
3617
  if ($isUTF8 < 0) {
3619
3618
  if ($enc) {
3620
3619
  Warn("Invalid filename encoding for $file\n");
@@ -4538,48 +4537,48 @@ DESCRIPTION
4538
4537
 
4539
4538
  File Types
4540
4539
  ------------+-------------+-------------+-------------+------------
4541
- 360 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
4542
- 3FR r | DSS r | JP2 r/w | ODP r | RIFF r
4543
- 3G2 r/w | DV r | JPEG r/w | ODS r | RSRC r
4544
- 3GP r/w | DVB r/w | JSON r | ODT r | RTF r
4545
- A r | DVR-MS r | JXL r | OFR r | RW2 r/w
4546
- AA r | DYLIB r | K25 r | OGG r | RWL r/w
4547
- AAE r | EIP r | KDC r | OGV r | RWZ r
4548
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
4549
- ACR r | EPUB r | LA r | OPUS r | SEQ r
4550
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
4551
- AI r/w | EXE r | LIF r | ORI r/w | SO r
4552
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
4553
- APE r | EXR r | LRV r/w | PAC r | SRF r
4554
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
4555
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
4556
- ASF r | FFF r/w | MACOS r | PCD r | SWF r
4557
- AVI r | FITS r | MAX r | PCX r | THM r/w
4558
- AVIF r/w | FLA r | MEF r/w | PDB r | TIFF r/w
4559
- AZW r | FLAC r | MIE r/w/ | PDF r/w | TORRENT r
4560
- BMP r | FLIF r/w | MIFF r c | PEF r/w | TTC r
4561
- BPG r | FLV r | MKA r | PFA r | TTF r
4562
- BTF r | FPF r | MKS r | PFB r | TXT r
4563
- CHM r | FPX r | MKV r | PFM r | VCF r
4564
- COS r | GIF r/w | MNG r/w | PGF r | VRD r/w/c
4565
- CR2 r/w | GPR r/w | MOBI r | PGM r/w | VSD r
4566
- CR3 r/w | GZ r | MODD r | PLIST r | WAV r
4567
- CRM r/w | HDP r/w | MOI r | PICT r | WDP r/w
4568
- CRW r/w | HDR r | MOS r/w | PMP r | WEBP r
4569
- CS1 r/w | HEIC r/w | MOV r/w | PNG r/w | WEBM r
4570
- CSV r | HEIF r/w | MP3 r | PPM r/w | WMA r
4571
- CZI r | HTML r | MP4 r/w | PPT r | WMV r
4572
- DCM r | ICC r/w/c | MPC r | PPTX r | WTV r
4573
- DCP r/w | ICS r | MPG r | PS r/w | WV r
4574
- DCR r | IDML r | MPO r/w | PSB r/w | X3F r/w
4575
- DFONT r | IIQ r/w | MQV r/w | PSD r/w | XCF r
4576
- DIVX r | IND r/w | MRC r | PSP r | XLS r
4577
- DJVU r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
4578
- DLL r | INSV r | MXF r | R3D r | XMP r/w/c
4579
- DNG r/w | INX r | NEF r/w | RA r | ZIP r
4580
- DOC r | ISO r | NKSC r/w | RAF r/w |
4581
- DOCX r | ITC r | NRW r/w | RAM r |
4582
- DPX r | J2C r | NUMBERS r | RAR r |
4540
+ 360 r/w | DPX r | ITC r | NRW r/w | RAM r
4541
+ 3FR r | DR4 r/w/c | J2C r | NUMBERS r | RAR r
4542
+ 3G2 r/w | DSS r | JNG r/w | O r | RAW r/w
4543
+ 3GP r/w | DV r | JP2 r/w | ODP r | RIFF r
4544
+ A r | DVB r/w | JPEG r/w | ODS r | RSRC r
4545
+ AA r | DVR-MS r | JSON r | ODT r | RTF r
4546
+ AAE r | DYLIB r | JXL r | OFR r | RW2 r/w
4547
+ AAX r/w | EIP r | K25 r | OGG r | RWL r/w
4548
+ ACR r | EPS r/w | KDC r | OGV r | RWZ r
4549
+ AFM r | EPUB r | KEY r | ONP r | RM r
4550
+ AI r/w | ERF r/w | LA r | OPUS r | SEQ r
4551
+ AIFF r | EXE r | LFP r | ORF r/w | SKETCH r
4552
+ APE r | EXIF r/w/c | LIF r | ORI r/w | SO r
4553
+ ARQ r/w | EXR r | LNK r | OTF r | SR2 r/w
4554
+ ARW r/w | EXV r/w/c | LRV r/w | PAC r | SRF r
4555
+ ASF r | F4A/V r/w | M2TS r | PAGES r | SRW r/w
4556
+ AVI r | FFF r/w | M4A/V r/w | PBM r/w | SVG r
4557
+ AVIF r/w | FITS r | MACOS r | PCD r | SWF r
4558
+ AZW r | FLA r | MAX r | PCX r | THM r/w
4559
+ BMP r | FLAC r | MEF r/w | PDB r | TIFF r/w
4560
+ BPG r | FLIF r/w | MIE r/w/c | PDF r/w | TORRENT r
4561
+ BTF r | FLV r | MIFF r | PEF r/w | TTC r
4562
+ CHM r | FPF r | MKA r | PFA r | TTF r
4563
+ COS r | FPX r | MKS r | PFB r | TXT r
4564
+ CR2 r/w | GIF r/w | MKV r | PFM r | VCF r
4565
+ CR3 r/w | GPR r/w | MNG r/w | PGF r | VRD r/w/c
4566
+ CRM r/w | GZ r | MOBI r | PGM r/w | VSD r
4567
+ CRW r/w | HDP r/w | MODD r | PLIST r | WAV r
4568
+ CS1 r/w | HDR r | MOI r | PICT r | WDP r/w
4569
+ CSV r | HEIC r/w | MOS r/w | PMP r | WEBP r/w
4570
+ CUR r | HEIF r/w | MOV r/w | PNG r/w | WEBM r
4571
+ CZI r | HTML r | MP3 r | PPM r/w | WMA r
4572
+ DCM r | ICC r/w/c | MP4 r/w | PPT r | WMV r
4573
+ DCP r/w | ICO r | MPC r | PPTX r | WTV r
4574
+ DCR r | ICS r | MPG r | PS r/w | WV r
4575
+ DFONT r | IDML r | MPO r/w | PSB r/w | X3F r/w
4576
+ DIVX r | IIQ r/w | MQV r/w | PSD r/w | XCF r
4577
+ DJVU r | IND r/w | MRC r | PSP r | XLS r
4578
+ DLL r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
4579
+ DNG r/w | INSV r | MXF r | R3D r | XMP r/w/c
4580
+ DOC r | INX r | NEF r/w | RA r | ZIP r
4581
+ DOCX r | ISO r | NKSC r/w | RAF r/w |
4583
4582
 
4584
4583
  Meta Information
4585
4584
  ----------------------+----------------------+---------------------
@@ -5010,12 +5009,12 @@ OPTIONS
5010
5009
 
5011
5010
  8) With the redirection feature, copying a tag directly (ie.
5012
5011
  "'-*DSTTAG*<*SRCTAG*'") is not the same as interpolating its value
5013
- inside a string (ie. "'-*DSTTAG*<$*SRCTAG*'") for list-type tags,
5014
- shortcut tags, tag names containing wildcards, or UserParam
5015
- variables. When copying directly, the values of each matching
5016
- source tag are copied individually to the destination tag (as if
5017
- they were separate assignments). However, when interpolated inside
5018
- a string, list items and the values of shortcut tags are
5012
+ inside a string (ie. "'-*DSTTAG*<$*SRCTAG*'") for source tags which
5013
+ are list-type tags, shortcut tags, tag names containing wildcards,
5014
+ or UserParam variables. When copying directly, the values of each
5015
+ matching source tag are copied individually to the destination tag
5016
+ (as if they were separate assignments). However, when interpolated
5017
+ inside a string, list items and the values of shortcut tags are
5019
5018
  concatenated (with a separator set by the -sep option), and
5020
5019
  wildcards are not allowed. Also, UserParam variables are available
5021
5020
  only when interpolated in a string. Another difference is that a
@@ -5248,7 +5247,8 @@ OPTIONS
5248
5247
  present. ExifTool adds a %f format code to represent fractional
5249
5248
  seconds, and supports an optional width to specify the number of
5250
5249
  digits after the decimal point (eg. %3f would give something like
5251
- .437). Only one -d option may be used per command. Requires
5250
+ .437), and a minus sign to drop the decimal point (eg. "%-3f" would
5251
+ give 437). Only one -d option may be used per command. Requires
5252
5252
  POSIX::strptime or Time::Piece for the inversion conversion when
5253
5253
  writing.
5254
5254
 
@@ -5338,7 +5338,9 @@ OPTIONS
5338
5338
  information (see -t for details). The JSON output is UTF-8
5339
5339
  regardless of any -L or -charset option setting, but the UTF-8
5340
5340
  validation is disabled if a character set other than UTF-8 is
5341
- specified.
5341
+ specified. Note that ExifTool quotes JSON values only if they don't
5342
+ look like numbers (regardless of the original storage format or the
5343
+ relevant metadata specification).
5342
5344
 
5343
5345
  If *JSONFILE* is specified, the file is imported and the tag
5344
5346
  definitions from the file are used to set tag values on a per-file
@@ -5381,7 +5383,7 @@ OPTIONS
5381
5383
  combined with -listx to output descriptions in one language only.
5382
5384
 
5383
5385
  By default, ExifTool uses UTF-8 encoding for special characters,
5384
- but the the -L or -charset option may be used to invoke other
5386
+ but the -L or -charset option may be used to invoke other
5385
5387
  encodings. Note that ExifTool uses Unicode::LineBreak if available
5386
5388
  to help preserve the column alignment of the plain text output for
5387
5389
  languages with a variable-width character set.
@@ -5492,7 +5494,7 @@ OPTIONS
5492
5494
 
5493
5495
  produces output like this:
5494
5496
 
5495
- -- Generated by ExifTool 12.44 --
5497
+ -- Generated by ExifTool 12.49 --
5496
5498
  File: a.jpg - 2003:10:31 15:44:19
5497
5499
  (f/5.6, 1/60s, ISO 100)
5498
5500
  File: b.jpg - 2006:05:23 11:57:38
@@ -5500,7 +5502,7 @@ OPTIONS
5500
5502
  -- end --
5501
5503
 
5502
5504
  The values of List-type tags with multiple items and Shortcut tags
5503
- representing multiple tags are joined according the the -sep option
5505
+ representing multiple tags are joined according the -sep option
5504
5506
  setting when interpolated in the string.
5505
5507
 
5506
5508
  When -ee (-extractEmbedded) is combined with -p, embedded documents
@@ -5515,7 +5517,12 @@ OPTIONS
5515
5517
  suppress the warning messages.
5516
5518
 
5517
5519
  The "Advanced formatting feature" may be used to modify the values
5518
- of individual tags with the -p option.
5520
+ of individual tags within the -p option string.
5521
+
5522
+ Note that the API RequestTags option is automatically set for all
5523
+ tags used in the *FMTFILE* or *STR*. This allows all other tags to
5524
+ be ignored using -API IgnoreTags=all, resulting in reduced memory
5525
+ usage and increased speed.
5519
5526
 
5520
5527
  -php Format output as a PHP Array. The -g, -G, -D, -H, -l, -sep and
5521
5528
  -struct options combine with -php, and duplicate tags are handled
@@ -6006,10 +6013,11 @@ OPTIONS
6006
6013
  alternative is to use the $GROUP:all syntax. (eg. Use $exif:all
6007
6014
  instead of $exif in *EXPR* to test for the existence of EXIF tags.)
6008
6015
 
6009
- 3) Tags in the string are interpolated the same way as with -p
6016
+ 3) Tags in the string are interpolated in a similar way to -p
6010
6017
  before the expression is evaluated. In this interpolation, $/ is
6011
- converted to a newline and $$ represents a single "$" symbol (so
6012
- Perl variables, if used, require a double "$").
6018
+ converted to a newline and $$ represents a single "$" symbol. So
6019
+ Perl variables, if used, require a double "$", and regular
6020
+ expressions ending in $/ must use $$/ instead.
6013
6021
 
6014
6022
  4) The condition may only test tags from the file being processed.
6015
6023
  To process one file based on tags from another, two steps are
@@ -6028,6 +6036,9 @@ OPTIONS
6028
6036
  previous command when -execute was used, and may be used like any
6029
6037
  other tag in the condition (ie. "$OK").
6030
6038
 
6039
+ 7) The API RequestTags option is automatically set for all tags
6040
+ used in the -if condition.
6041
+
6031
6042
  -m (-ignoreMinorErrors)
6032
6043
  Ignore minor errors and warnings. This enables writing to files
6033
6044
  with minor errors and disables some validation checks which could
@@ -7136,7 +7147,7 @@ GEOTAGGING EXAMPLES
7136
7147
  exiftool -geotag "tracks/*.log" -r dir
7137
7148
  Read all track logs from the "tracks" directory.
7138
7149
 
7139
- exiftool -p gpx.fmt -d %Y-%m-%dT%H:%M:%SZ dir > out.gpx
7150
+ exiftool -p gpx.fmt dir > out.gpx
7140
7151
  Generate a GPX track log from all images in directory "dir". This
7141
7152
  example uses the "gpx.fmt" file included in the full ExifTool
7142
7153
  distribution package and assumes that the images in "dir" have all
@@ -16,6 +16,9 @@
16
16
  # 2) The -ee3 option is to extract the full track from video files.
17
17
  # 3) The -fileOrder option may be used to control the order of the
18
18
  # generated track points when processing multiple files.
19
+ # 4) Coordinates are written at full resolution. To change this,
20
+ # remove the "#" from the GPSLatitude/Longitude tag names below
21
+ # and use the -c option to set the desired precision.
19
22
  #------------------------------------------------------------------------------
20
23
  #[HEAD]<?xml version="1.0" encoding="utf-8"?>
21
24
  #[HEAD]<gpx version="1.0"
@@ -17,6 +17,9 @@
17
17
  # 2) The -ee3 option is to extract the full track from video files.
18
18
  # 3) The -fileOrder option may be used to control the order of the
19
19
  # generated track points when processing multiple files.
20
+ # 4) Coordinates are written at full resolution. To change this,
21
+ # remove the "#" from the GPSLatitude/Longitude tag names below
22
+ # and use the -c option to set the desired precision.
20
23
  #------------------------------------------------------------------------------
21
24
  #[HEAD]<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
22
25
  #[HEAD]<gpx version="1.1"