exiftool-vendored.pl 12.45.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/Changes +84 -3
- package/bin/MANIFEST +9 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +45 -44
- package/bin/config_files/acdsee.config +2 -1
- package/bin/config_files/frameCount.config +56 -0
- package/bin/config_files/tiff_version.config +1 -1
- package/bin/exiftool +62 -54
- package/bin/lib/Image/ExifTool/Apple.pm +6 -2
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +11 -6
- package/bin/lib/Image/ExifTool/Canon.pm +20 -8
- package/bin/lib/Image/ExifTool/CanonRaw.pm +8 -1
- package/bin/lib/Image/ExifTool/Exif.pm +7 -3
- package/bin/lib/Image/ExifTool/FLAC.pm +17 -3
- package/bin/lib/Image/ExifTool/FlashPix.pm +4 -2
- package/bin/lib/Image/ExifTool/FujiFilm.pm +31 -5
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- package/bin/lib/Image/ExifTool/ICO.pm +141 -0
- package/bin/lib/Image/ExifTool/ID3.pm +5 -5
- package/bin/lib/Image/ExifTool/M2TS.pm +55 -8
- package/bin/lib/Image/ExifTool/MIE.pm +9 -3
- package/bin/lib/Image/ExifTool/MISB.pm +494 -0
- package/bin/lib/Image/ExifTool/MakerNotes.pm +3 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +34 -31
- package/bin/lib/Image/ExifTool/NikonSettings.pm +5 -3
- package/bin/lib/Image/ExifTool/Panasonic.pm +21 -4
- package/bin/lib/Image/ExifTool/PanasonicRaw.pm +12 -5
- package/bin/lib/Image/ExifTool/Photoshop.pm +29 -3
- package/bin/lib/Image/ExifTool/QuickTime.pm +34 -5
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +42 -4
- package/bin/lib/Image/ExifTool/README +1 -1
- package/bin/lib/Image/ExifTool/RIFF.pm +106 -9
- package/bin/lib/Image/ExifTool/Samsung.pm +2 -2
- package/bin/lib/Image/ExifTool/Sigma.pm +27 -1
- package/bin/lib/Image/ExifTool/SigmaRaw.pm +37 -13
- package/bin/lib/Image/ExifTool/Sony.pm +7 -3
- package/bin/lib/Image/ExifTool/TagLookup.pm +176 -6
- package/bin/lib/Image/ExifTool/TagNames.pod +4782 -4486
- package/bin/lib/Image/ExifTool/Text.pm +3 -4
- package/bin/lib/Image/ExifTool/Torrent.pm +2 -3
- package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
- package/bin/lib/Image/ExifTool/WriteExif.pl +19 -1
- package/bin/lib/Image/ExifTool/WriteRIFF.pl +359 -0
- package/bin/lib/Image/ExifTool/Writer.pl +6 -2
- package/bin/lib/Image/ExifTool/XMP.pm +70 -56
- package/bin/lib/Image/ExifTool.pm +75 -15
- package/bin/lib/Image/ExifTool.pod +55 -52
- package/bin/perl-Image-ExifTool.spec +43 -43
- package/bin/pp_build_exe.args +7 -4
- package/package.json +2 -2
package/bin/Changes
CHANGED
|
@@ -7,6 +7,87 @@ 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
|
+
|
|
10
91
|
Sept. 16, 2022 - Version 12.45
|
|
11
92
|
|
|
12
93
|
- Added new IPTC Video Metadata version 1.3 tags
|
|
@@ -304,6 +385,8 @@ Aug. 12, 2021 - Version 12.30 (production release)
|
|
|
304
385
|
currently can't be created)
|
|
305
386
|
- Patched to remove 2 GB size limit when reading Photoshop ImageSourceData
|
|
306
387
|
|
|
388
|
+
History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
|
|
389
|
+
|
|
307
390
|
July 9, 2021 - Version 12.29
|
|
308
391
|
|
|
309
392
|
- Added a few new Nikon and Olympus lenses (thanks LibRaw)
|
|
@@ -358,8 +441,6 @@ May 20, 2021 - Version 12.26 (production release)
|
|
|
358
441
|
- Fixed problem which could cause a "Wide character" warning and generate a
|
|
359
442
|
corrupted output file when writing some illegal values
|
|
360
443
|
|
|
361
|
-
History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
|
|
362
|
-
|
|
363
444
|
Apr. 22, 2021 - Version 12.25
|
|
364
445
|
|
|
365
446
|
- JPEG XL support is now official
|
|
@@ -675,7 +756,7 @@ Aug. 10, 2020 - Version 12.04
|
|
|
675
756
|
- Moved new QuckTime ItemList tags added in version 12.02 to the proper group
|
|
676
757
|
(they were incorrectly added to the Keys group)
|
|
677
758
|
- Improved QuickTime -v3 output to show default language codes
|
|
678
|
-
- Patched -lang option to work for the values of
|
|
759
|
+
- Patched -lang option to work for the values of some tags with coded
|
|
679
760
|
translations
|
|
680
761
|
- Patched the format of a number of QuickTime tags when writing for improved
|
|
681
762
|
compatibility with iTunes and AtomicParsley
|
package/bin/MANIFEST
CHANGED
|
@@ -23,6 +23,7 @@ config_files/cuepointlist.config
|
|
|
23
23
|
config_files/depthmap.config
|
|
24
24
|
config_files/example.config
|
|
25
25
|
config_files/fotoware.config
|
|
26
|
+
config_files/frameCount.config
|
|
26
27
|
config_files/gps2utm.config
|
|
27
28
|
config_files/nksc.config
|
|
28
29
|
config_files/photoshop_paths.config
|
|
@@ -84,6 +85,7 @@ html/TagNames/H264.html
|
|
|
84
85
|
html/TagNames/HP.html
|
|
85
86
|
html/TagNames/HTML.html
|
|
86
87
|
html/TagNames/ICC_Profile.html
|
|
88
|
+
html/TagNames/ICO.html
|
|
87
89
|
html/TagNames/ID3.html
|
|
88
90
|
html/TagNames/IPTC.html
|
|
89
91
|
html/TagNames/ISO.html
|
|
@@ -102,6 +104,7 @@ html/TagNames/Lytro.html
|
|
|
102
104
|
html/TagNames/M2TS.html
|
|
103
105
|
html/TagNames/MIE.html
|
|
104
106
|
html/TagNames/MIFF.html
|
|
107
|
+
html/TagNames/MISB.html
|
|
105
108
|
html/TagNames/MNG.html
|
|
106
109
|
html/TagNames/MOI.html
|
|
107
110
|
html/TagNames/MPC.html
|
|
@@ -291,6 +294,7 @@ lib/Image/ExifTool/HP.pm
|
|
|
291
294
|
lib/Image/ExifTool/HTML.pm
|
|
292
295
|
lib/Image/ExifTool/HtmlDump.pm
|
|
293
296
|
lib/Image/ExifTool/ICC_Profile.pm
|
|
297
|
+
lib/Image/ExifTool/ICO.pm
|
|
294
298
|
lib/Image/ExifTool/ID3.pm
|
|
295
299
|
lib/Image/ExifTool/IPTC.pm
|
|
296
300
|
lib/Image/ExifTool/ISO.pm
|
|
@@ -329,6 +333,7 @@ lib/Image/ExifTool/M2TS.pm
|
|
|
329
333
|
lib/Image/ExifTool/MIE.pm
|
|
330
334
|
lib/Image/ExifTool/MIEUnits.pod
|
|
331
335
|
lib/Image/ExifTool/MIFF.pm
|
|
336
|
+
lib/Image/ExifTool/MISB.pm
|
|
332
337
|
lib/Image/ExifTool/MNG.pm
|
|
333
338
|
lib/Image/ExifTool/MOI.pm
|
|
334
339
|
lib/Image/ExifTool/MPC.pm
|
|
@@ -417,6 +422,7 @@ lib/Image/ExifTool/WritePNG.pl
|
|
|
417
422
|
lib/Image/ExifTool/WritePhotoshop.pl
|
|
418
423
|
lib/Image/ExifTool/WritePostScript.pl
|
|
419
424
|
lib/Image/ExifTool/WriteQuickTime.pl
|
|
425
|
+
lib/Image/ExifTool/WriteRIFF.pl
|
|
420
426
|
lib/Image/ExifTool/WriteXMP.pl
|
|
421
427
|
lib/Image/ExifTool/Writer.pl
|
|
422
428
|
lib/Image/ExifTool/XMP.pm
|
|
@@ -792,6 +798,9 @@ t/RIFF.t
|
|
|
792
798
|
t/RIFF_2.out
|
|
793
799
|
t/RIFF_3.out
|
|
794
800
|
t/RIFF_4.out
|
|
801
|
+
t/RIFF_5.out
|
|
802
|
+
t/RIFF_6.out
|
|
803
|
+
t/RIFF_7.out
|
|
795
804
|
t/RTF.t
|
|
796
805
|
t/RTF_2.out
|
|
797
806
|
t/Radiance.t
|
package/bin/META.json
CHANGED
package/bin/META.yml
CHANGED
package/bin/README
CHANGED
|
@@ -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
|
);
|
package/bin/exiftool
CHANGED
|
@@ -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
|
BEGIN {
|
|
@@ -3254,7 +3254,7 @@ sub EncodeXML($)
|
|
|
3254
3254
|
{
|
|
3255
3255
|
my $strPt = shift;
|
|
3256
3256
|
if ($$strPt =~ /[\0-\x08\x0b\x0c\x0e-\x1f]/ or
|
|
3257
|
-
(not $altEnc and Image::ExifTool::
|
|
3257
|
+
(not $altEnc and Image::ExifTool::IsUTF8($strPt) < 0))
|
|
3258
3258
|
{
|
|
3259
3259
|
# encode binary data and non-UTF8 with special characters as base64
|
|
3260
3260
|
$$strPt = Image::ExifTool::XMP::EncodeBase64($$strPt);
|
|
@@ -3318,7 +3318,7 @@ sub EscapeJSON($;$)
|
|
|
3318
3318
|
return $str if $str =~ /^-?(\d|[1-9]\d{1,14})(\.\d{1,16})?(e[-+]?\d{1,3})?$/i;
|
|
3319
3319
|
}
|
|
3320
3320
|
# encode JSON string in base64 if necessary
|
|
3321
|
-
if ($json < 2 and defined $binaryOutput and Image::ExifTool::
|
|
3321
|
+
if ($json < 2 and defined $binaryOutput and Image::ExifTool::IsUTF8(\$str) < 0) {
|
|
3322
3322
|
return '"base64:' . Image::ExifTool::XMP::EncodeBase64($str, 1) . '"';
|
|
3323
3323
|
}
|
|
3324
3324
|
# escape special characters
|
|
@@ -3394,7 +3394,7 @@ sub FormatCSV($)
|
|
|
3394
3394
|
my $val = shift;
|
|
3395
3395
|
# check for valid encoding if the Charset option was used
|
|
3396
3396
|
if ($setCharset and ($val =~ /[^\x09\x0a\x0d\x20-\x7e\x80-\xff]/ or
|
|
3397
|
-
($setCharset eq 'UTF8' and Image::ExifTool::
|
|
3397
|
+
($setCharset eq 'UTF8' and Image::ExifTool::IsUTF8(\$val) < 0)))
|
|
3398
3398
|
{
|
|
3399
3399
|
$val = 'base64:' . Image::ExifTool::XMP::EncodeBase64($val, 1);
|
|
3400
3400
|
}
|
|
@@ -3481,7 +3481,7 @@ sub ConvertBinary($)
|
|
|
3481
3481
|
$obj = $$obj;
|
|
3482
3482
|
# encode in base64 if necessary (0xf7 allows for up to 21-bit UTF-8 code space)
|
|
3483
3483
|
if ($json == 1 and ($obj =~ /[^\x09\x0a\x0d\x20-\x7e\x80-\xf7]/ or
|
|
3484
|
-
Image::ExifTool::
|
|
3484
|
+
Image::ExifTool::IsUTF8(\$obj) < 0))
|
|
3485
3485
|
{
|
|
3486
3486
|
$obj = 'base64:' . Image::ExifTool::XMP::EncodeBase64($obj, 1);
|
|
3487
3487
|
}
|
|
@@ -3615,8 +3615,7 @@ sub CheckUTF8($$)
|
|
|
3615
3615
|
my ($file, $enc) = @_;
|
|
3616
3616
|
my $isUTF8 = 0;
|
|
3617
3617
|
if ($file =~ /[\x80-\xff]/) {
|
|
3618
|
-
|
|
3619
|
-
$isUTF8 = Image::ExifTool::XMP::IsUTF8(\$file);
|
|
3618
|
+
$isUTF8 = Image::ExifTool::IsUTF8(\$file);
|
|
3620
3619
|
if ($isUTF8 < 0) {
|
|
3621
3620
|
if ($enc) {
|
|
3622
3621
|
Warn("Invalid filename encoding for $file\n");
|
|
@@ -4529,48 +4528,48 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
|
4529
4528
|
|
|
4530
4529
|
File Types
|
|
4531
4530
|
------------+-------------+-------------+-------------+------------
|
|
4532
|
-
360 r/w |
|
|
4533
|
-
3FR r |
|
|
4534
|
-
3G2 r/w |
|
|
4535
|
-
3GP r/w |
|
|
4536
|
-
A r |
|
|
4537
|
-
AA r |
|
|
4538
|
-
AAE r |
|
|
4539
|
-
AAX r/w |
|
|
4540
|
-
ACR r |
|
|
4541
|
-
AFM r |
|
|
4542
|
-
AI r/w |
|
|
4543
|
-
AIFF r |
|
|
4544
|
-
APE r |
|
|
4545
|
-
ARQ r/w |
|
|
4546
|
-
ARW r/w |
|
|
4547
|
-
ASF r |
|
|
4548
|
-
AVI r |
|
|
4549
|
-
AVIF r/w |
|
|
4550
|
-
AZW r |
|
|
4551
|
-
BMP r |
|
|
4552
|
-
BPG r |
|
|
4553
|
-
BTF r |
|
|
4554
|
-
CHM r |
|
|
4555
|
-
COS r |
|
|
4556
|
-
CR2 r/w |
|
|
4557
|
-
CR3 r/w |
|
|
4558
|
-
CRM r/w |
|
|
4559
|
-
CRW r/w |
|
|
4560
|
-
CS1 r/w |
|
|
4561
|
-
CSV r |
|
|
4562
|
-
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
|
|
4531
|
+
360 r/w | DPX r | ITC r | NRW r/w | RAM r
|
|
4532
|
+
3FR r | DR4 r/w/c | J2C r | NUMBERS r | RAR r
|
|
4533
|
+
3G2 r/w | DSS r | JNG r/w | O r | RAW r/w
|
|
4534
|
+
3GP r/w | DV r | JP2 r/w | ODP r | RIFF r
|
|
4535
|
+
A r | DVB r/w | JPEG r/w | ODS r | RSRC r
|
|
4536
|
+
AA r | DVR-MS r | JSON r | ODT r | RTF r
|
|
4537
|
+
AAE r | DYLIB r | JXL r | OFR r | RW2 r/w
|
|
4538
|
+
AAX r/w | EIP r | K25 r | OGG r | RWL r/w
|
|
4539
|
+
ACR r | EPS r/w | KDC r | OGV r | RWZ r
|
|
4540
|
+
AFM r | EPUB r | KEY r | ONP r | RM r
|
|
4541
|
+
AI r/w | ERF r/w | LA r | OPUS r | SEQ r
|
|
4542
|
+
AIFF r | EXE r | LFP r | ORF r/w | SKETCH r
|
|
4543
|
+
APE r | EXIF r/w/c | LIF r | ORI r/w | SO r
|
|
4544
|
+
ARQ r/w | EXR r | LNK r | OTF r | SR2 r/w
|
|
4545
|
+
ARW r/w | EXV r/w/c | LRV r/w | PAC r | SRF r
|
|
4546
|
+
ASF r | F4A/V r/w | M2TS r | PAGES r | SRW r/w
|
|
4547
|
+
AVI r | FFF r/w | M4A/V r/w | PBM r/w | SVG r
|
|
4548
|
+
AVIF r/w | FITS r | MACOS r | PCD r | SWF r
|
|
4549
|
+
AZW r | FLA r | MAX r | PCX r | THM r/w
|
|
4550
|
+
BMP r | FLAC r | MEF r/w | PDB r | TIFF r/w
|
|
4551
|
+
BPG r | FLIF r/w | MIE r/w/c | PDF r/w | TORRENT r
|
|
4552
|
+
BTF r | FLV r | MIFF r | PEF r/w | TTC r
|
|
4553
|
+
CHM r | FPF r | MKA r | PFA r | TTF r
|
|
4554
|
+
COS r | FPX r | MKS r | PFB r | TXT r
|
|
4555
|
+
CR2 r/w | GIF r/w | MKV r | PFM r | VCF r
|
|
4556
|
+
CR3 r/w | GPR r/w | MNG r/w | PGF r | VRD r/w/c
|
|
4557
|
+
CRM r/w | GZ r | MOBI r | PGM r/w | VSD r
|
|
4558
|
+
CRW r/w | HDP r/w | MODD r | PLIST r | WAV r
|
|
4559
|
+
CS1 r/w | HDR r | MOI r | PICT r | WDP r/w
|
|
4560
|
+
CSV r | HEIC r/w | MOS r/w | PMP r | WEBP r/w
|
|
4561
|
+
CUR r | HEIF r/w | MOV r/w | PNG r/w | WEBM r
|
|
4562
|
+
CZI r | HTML r | MP3 r | PPM r/w | WMA r
|
|
4563
|
+
DCM r | ICC r/w/c | MP4 r/w | PPT r | WMV r
|
|
4564
|
+
DCP r/w | ICO r | MPC r | PPTX r | WTV r
|
|
4565
|
+
DCR r | ICS r | MPG r | PS r/w | WV r
|
|
4566
|
+
DFONT r | IDML r | MPO r/w | PSB r/w | X3F r/w
|
|
4567
|
+
DIVX r | IIQ r/w | MQV r/w | PSD r/w | XCF r
|
|
4568
|
+
DJVU r | IND r/w | MRC r | PSP r | XLS r
|
|
4569
|
+
DLL r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
|
|
4570
|
+
DNG r/w | INSV r | MXF r | R3D r | XMP r/w/c
|
|
4571
|
+
DOC r | INX r | NEF r/w | RA r | ZIP r
|
|
4572
|
+
DOCX r | ISO r | NKSC r/w | RAF r/w |
|
|
4574
4573
|
|
|
4575
4574
|
Meta Information
|
|
4576
4575
|
----------------------+----------------------+---------------------
|
|
@@ -5059,8 +5058,8 @@ are in the default output. By default, list items are separated by a
|
|
|
5059
5058
|
newline when extracted with the B<-b> option, but this may be changed (see
|
|
5060
5059
|
the B<-sep> option for details). May be combined with B<-j>, B<-php> or
|
|
5061
5060
|
B<-X> to extract binary data in JSON, PHP or XML format, but note that
|
|
5062
|
-
"Unsafe" tags are not extracted as binary unless they are specified
|
|
5063
|
-
the API RequestAll option is set to 3 or higher.
|
|
5061
|
+
"Unsafe" tags are not extracted as binary unless they are specified
|
|
5062
|
+
explicitly or the API RequestAll option is set to 3 or higher.
|
|
5064
5063
|
|
|
5065
5064
|
With a leading double dash (B<--b> or B<--binary>), tags which contain
|
|
5066
5065
|
binary data are suppressed in the output when reading.
|
|
@@ -5225,7 +5224,8 @@ option has no effect on date-only or time-only tags and ignores timezone
|
|
|
5225
5224
|
information if present. ExifTool adds a C<%f> format code to represent
|
|
5226
5225
|
fractional seconds, and supports an optional width to specify the number of
|
|
5227
5226
|
digits after the decimal point (eg. C<%3f> would give something like
|
|
5228
|
-
C<.437>)
|
|
5227
|
+
C<.437>), and a minus sign to drop the decimal point (eg. C<%-3f> would give
|
|
5228
|
+
C<437>). Only one B<-d> option may be used per command. Requires
|
|
5229
5229
|
POSIX::strptime or Time::Piece for the inversion conversion when writing.
|
|
5230
5230
|
|
|
5231
5231
|
=item B<-D> (B<-decimal>)
|
|
@@ -5470,7 +5470,7 @@ with this command:
|
|
|
5470
5470
|
|
|
5471
5471
|
produces output like this:
|
|
5472
5472
|
|
|
5473
|
-
-- Generated by ExifTool 12.
|
|
5473
|
+
-- Generated by ExifTool 12.49 --
|
|
5474
5474
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5475
5475
|
(f/5.6, 1/60s, ISO 100)
|
|
5476
5476
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5492,7 +5492,12 @@ warnings and leave the missing values empty. Alternatively, B<-q -q> may be
|
|
|
5492
5492
|
used to simply suppress the warning messages.
|
|
5493
5493
|
|
|
5494
5494
|
The L</Advanced formatting feature> may be used to modify the values of
|
|
5495
|
-
individual tags
|
|
5495
|
+
individual tags within the B<-p> option string.
|
|
5496
|
+
|
|
5497
|
+
Note that the API RequestTags option is automatically set for all tags used
|
|
5498
|
+
in the I<FMTFILE> or I<STR>. This allows all other tags to be ignored using
|
|
5499
|
+
B<-API IgnoreTags=all>, resulting in reduced memory usage and increased
|
|
5500
|
+
speed.
|
|
5496
5501
|
|
|
5497
5502
|
=item B<-php>
|
|
5498
5503
|
|
|
@@ -6003,6 +6008,9 @@ the values of duplicate tags are accessible only by specifying a group name
|
|
|
6003
6008
|
command when B<-execute> was used, and may be used like any other tag in the
|
|
6004
6009
|
condition (ie. "$OK").
|
|
6005
6010
|
|
|
6011
|
+
7) The API RequestTags option is automatically set for all tags used in the
|
|
6012
|
+
B<-if> condition.
|
|
6013
|
+
|
|
6006
6014
|
=item B<-m> (B<-ignoreMinorErrors>)
|
|
6007
6015
|
|
|
6008
6016
|
Ignore minor errors and warnings. This enables writing to files with minor
|
|
@@ -15,7 +15,7 @@ use vars qw($VERSION);
|
|
|
15
15
|
use Image::ExifTool::Exif;
|
|
16
16
|
use Image::ExifTool::PLIST;
|
|
17
17
|
|
|
18
|
-
$VERSION = '1.
|
|
18
|
+
$VERSION = '1.07';
|
|
19
19
|
|
|
20
20
|
# Apple iPhone metadata (ref PH)
|
|
21
21
|
%Image::ExifTool::Apple::Main = (
|
|
@@ -80,7 +80,7 @@ $VERSION = '1.06';
|
|
|
80
80
|
# 0x000e - int32s: 0,1,4,12 (Orientation? 0=landscape? 4=portrait? ref 1)
|
|
81
81
|
# 0x000f - int32s: 2,3
|
|
82
82
|
# 0x0010 - int32s: 1
|
|
83
|
-
0x0011 => {
|
|
83
|
+
0x0011 => { # (if defined, there is a live photo associated with the video, #forum13565)
|
|
84
84
|
Name => 'MediaGroupUUID', #NealKrawetz private communication
|
|
85
85
|
# (changed in 12.19 from Name => 'ContentIdentifier', #forum8750)
|
|
86
86
|
Writable => 'string',
|
|
@@ -91,6 +91,10 @@ $VERSION = '1.06';
|
|
|
91
91
|
Writable => 'string',
|
|
92
92
|
},
|
|
93
93
|
# 0x0016 - string[29]: "AXZ6pMTOh2L+acSh4Kg630XCScoO\0"
|
|
94
|
+
0x0017 => { #forum13565 (only valid if MediaGroupUUID exists)
|
|
95
|
+
Name => 'LivePhotoVideoIndex',
|
|
96
|
+
Notes => 'divide by RunTimeScale to get time in seconds',
|
|
97
|
+
},
|
|
94
98
|
# 0x0017 - int32s: 0,8192
|
|
95
99
|
# 0x0019 - int32s: 0,2,128
|
|
96
100
|
# 0x001a - string[6]: "q825s\0"
|