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.
- package/bin/exiftool_files/Changes +112 -3
- package/bin/exiftool_files/README +45 -44
- package/bin/exiftool_files/config_files/acdsee.config +2 -1
- package/bin/exiftool_files/config_files/frameCount.config +56 -0
- package/bin/exiftool_files/config_files/tiff_version.config +1 -1
- package/bin/exiftool_files/exiftool.pl +77 -66
- package/bin/exiftool_files/fmt_files/gpx.fmt +3 -0
- package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +3 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +6 -2
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +17 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +33 -15
- package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +8 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +7 -8
- package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +9 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +11 -7
- package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +17 -3
- package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +4 -3
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +4 -2
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +31 -5
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +141 -0
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +55 -8
- package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +9 -3
- package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +494 -0
- package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +24 -16
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +39 -31
- package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +5 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +21 -4
- package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +25 -5
- package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +29 -3
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +113 -8
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +44 -6
- package/bin/exiftool_files/lib/Image/ExifTool/README +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +106 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +27 -1
- package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +37 -13
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +8 -3
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +188 -7
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +3051 -2732
- package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +3 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +2 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +100 -23
- package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +2 -6
- package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +359 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +10 -3
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +76 -58
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +11 -4
- package/bin/exiftool_files/lib/Image/ExifTool.pm +75 -15
- package/bin/exiftool_files/lib/Image/ExifTool.pod +61 -57
- 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
|
|
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 |
|
|
18
|
-
3FR r |
|
|
19
|
-
3G2 r/w |
|
|
20
|
-
3GP r/w |
|
|
21
|
-
A r |
|
|
22
|
-
AA r |
|
|
23
|
-
AAE r |
|
|
24
|
-
AAX r/w |
|
|
25
|
-
ACR r |
|
|
26
|
-
AFM r |
|
|
27
|
-
AI r/w |
|
|
28
|
-
AIFF r |
|
|
29
|
-
APE r |
|
|
30
|
-
ARQ r/w |
|
|
31
|
-
ARW r/w |
|
|
32
|
-
ASF r |
|
|
33
|
-
AVI r |
|
|
34
|
-
AVIF r/w |
|
|
35
|
-
AZW r |
|
|
36
|
-
BMP r |
|
|
37
|
-
BPG r |
|
|
38
|
-
BTF r |
|
|
39
|
-
CHM r |
|
|
40
|
-
COS r |
|
|
41
|
-
CR2 r/w |
|
|
42
|
-
CR3 r/w |
|
|
43
|
-
CRM r/w |
|
|
44
|
-
CRW r/w |
|
|
45
|
-
CS1 r/w |
|
|
46
|
-
CSV r |
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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.
|
|
111
|
-
cd Image-ExifTool-12.
|
|
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
|
|
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.
|
|
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
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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
|
-
|
|
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 |
|
|
4542
|
-
3FR r |
|
|
4543
|
-
3G2 r/w |
|
|
4544
|
-
3GP r/w |
|
|
4545
|
-
A r |
|
|
4546
|
-
AA r |
|
|
4547
|
-
AAE r |
|
|
4548
|
-
AAX r/w |
|
|
4549
|
-
ACR r |
|
|
4550
|
-
AFM r |
|
|
4551
|
-
AI r/w |
|
|
4552
|
-
AIFF r |
|
|
4553
|
-
APE r |
|
|
4554
|
-
ARQ r/w |
|
|
4555
|
-
ARW r/w |
|
|
4556
|
-
ASF r |
|
|
4557
|
-
AVI r |
|
|
4558
|
-
AVIF r/w |
|
|
4559
|
-
AZW r |
|
|
4560
|
-
BMP r |
|
|
4561
|
-
BPG r |
|
|
4562
|
-
BTF r |
|
|
4563
|
-
CHM r |
|
|
4564
|
-
COS r |
|
|
4565
|
-
CR2 r/w |
|
|
4566
|
-
CR3 r/w |
|
|
4567
|
-
CRM r/w |
|
|
4568
|
-
CRW r/w |
|
|
4569
|
-
CS1 r/w |
|
|
4570
|
-
CSV r |
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
|
|
4574
|
-
|
|
4575
|
-
|
|
4576
|
-
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
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
|
|
5014
|
-
shortcut tags, tag names containing wildcards,
|
|
5015
|
-
variables. When copying directly, the values of each
|
|
5016
|
-
source tag are copied individually to the destination tag
|
|
5017
|
-
they were separate assignments). However, when interpolated
|
|
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)
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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"
|