exiftool_vendored 13.25.0 → 13.26.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.
- checksums.yaml +4 -4
- data/bin/Changes +16 -3
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/build_geolocation +1 -1
- data/bin/exiftool +3 -3
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -0
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/PCAP.pm +5 -5
- data/bin/lib/Image/ExifTool/Pentax.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +26 -8
- data/bin/lib/Image/ExifTool/RIFF.pm +15 -6
- data/bin/lib/Image/ExifTool/TagLookup.pm +11 -0
- data/bin/lib/Image/ExifTool/TagNames.pod +19 -7
- data/bin/lib/Image/ExifTool/XMP.pm +22 -15
- data/bin/lib/Image/ExifTool/XMP2.pl +5 -1
- data/bin/lib/Image/ExifTool.pm +1 -1
- data/bin/lib/Image/ExifTool.pod +2 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ade24a22d85fc4d797e0fa157ccbcab31f7ef49a375c50849f76e075e1366ea
|
4
|
+
data.tar.gz: e4f4a5da9a42324b16bc953f1f326abf2700f57e9f15d58661f3863cf359ea01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3bd7b0e0211feb8854f98a1de7956776cb7dcfc36eb4f224a333a7bf6912e50d433af4c806ca3bde62100a3eb99dd8704862da9092e06a2bc831d5bbba41b3c
|
7
|
+
data.tar.gz: c19b405e58717505f77791c5115bc67d98651b48d4872d25270ecda79ac42a00740495ec324616650c33d3c9931763a1ddb31722318b8ab9071d3476b3033361
|
data/bin/Changes
CHANGED
@@ -7,10 +7,23 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 13.25. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Mar. 31, 2025 - Version 13.26
|
11
|
+
|
12
|
+
- Added a new Olympus CameraType (thanks Herb)
|
13
|
+
- Added a new PentaxModelID (github #322)
|
14
|
+
- Added a new Nikon LensID
|
15
|
+
- Improved Duration calculation for some WAV files
|
16
|
+
- Changed a PCAP tag name and fixed typos in a few others (thanks blue-j)
|
17
|
+
- Patched to avoid VignettingCorr warning for images from some Canon cameras
|
18
|
+
- Patched to avoid some unnecessary duplicate tag warnings when -validate used
|
19
|
+
with HEIC images
|
20
|
+
- Fixed issue with XMP-xmpMM:Pantry items not exhibiting proper List-type
|
21
|
+
behaviour
|
22
|
+
|
10
23
|
Mar. 11, 2025 - Version 13.25 (production release)
|
11
24
|
|
12
25
|
- IMPORTANT: Fixed issue which could corrupt HEIC images from newer iPhones
|
13
|
-
when writing QuickTime:Rotation
|
26
|
+
under certain conditions when writing QuickTime:Rotation
|
14
27
|
- Decode more PLIST information from HEIC images
|
15
28
|
- Updated Geolocation databases from current geonames.org files
|
16
29
|
- Updated DarwinCore for the 2023 specification (thanks Herb)
|
@@ -25,7 +38,7 @@ Mar. 7, 2025 - Version 13.24
|
|
25
38
|
|
26
39
|
Mar. 7, 2025 - Version 13.23
|
27
40
|
|
28
|
-
- Added read support for CAP, PCAP and
|
41
|
+
- Added read support for CAP, PCAP and PCAPNG files (github #318)
|
29
42
|
- Added a number of new Sony LensType2 values (thanks Jos Roost)
|
30
43
|
- Added the 2 new GPSAltitudeRef values defined by EXIF 3.0
|
31
44
|
- Decode APP4 "Qualcomm Dual Camera Attributes" metadata
|
@@ -57,7 +70,7 @@ Feb. 20, 2025 - Version 13.21
|
|
57
70
|
- Patched issue that could result in runtime warning for some video files
|
58
71
|
- Fixed a bug with the new -plot option that could generate a compiler error
|
59
72
|
|
60
|
-
Feb. 20, 2025 - Version 13.20
|
73
|
+
Feb. 20, 2025 - Version 13.20 - "SVG Plot"
|
61
74
|
|
62
75
|
- Added new -plot option for generating SVG-format plots from tag values
|
63
76
|
- Added a new Olympus CameraType
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
|
|
109
109
|
terminal window to extract and run ExifTool:
|
110
110
|
|
111
111
|
cd ~/Desktop
|
112
|
-
gzip -dc Image-ExifTool-13.
|
113
|
-
cd Image-ExifTool-13.
|
112
|
+
gzip -dc Image-ExifTool-13.26.tar.gz | tar -xf -
|
113
|
+
cd Image-ExifTool-13.26
|
114
114
|
./exiftool t/images/ExifTool.jpg
|
115
115
|
|
116
116
|
Note: These commands extract meta information from one of the test images.
|
@@ -170,7 +170,7 @@ COPYRIGHT AND LICENSE
|
|
170
170
|
Copyright 2003-2025, Phil Harvey
|
171
171
|
|
172
172
|
This is free software; you can redistribute it and/or modify it under the
|
173
|
-
same terms as Perl itself.
|
173
|
+
same terms as Perl itself (either the Perl Artistic License or GPL).
|
174
174
|
|
175
175
|
DISTRIBUTION FILES
|
176
176
|
|
data/bin/build_geolocation
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
# 6 int8u - 0xf0 = population E exponent (in format "N.Fe+0E"), 0x0f = population N digit
|
41
41
|
# 7 int16u - 0xf000 = population F digit, 0x0fff = index in region list (admin1)
|
42
42
|
# 9 int16u - v1.02: 0x7fff = index in subregion (admin2), 0x8000 = high bit of time zone
|
43
|
-
# 9 int16u - v1.03: index in subregion (admin2)
|
43
|
+
# 9 int16u - v1.03: index in subregion list (admin2)
|
44
44
|
# 11 int8u - low byte of time zone index
|
45
45
|
# 12 int8u - 0x3f = feature code index (see below), v1.03: 0x80 = high bit of time zone
|
46
46
|
# 13 string - UTF8 City name, terminated by newline
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '13.
|
14
|
+
my $version = '13.26';
|
15
15
|
|
16
16
|
$^W = 1; # enable global warnings
|
17
17
|
|
@@ -5010,7 +5010,7 @@ B<exiftool> [I<OPTIONS>] [-I<TAG>...] [--I<TAG>...] I<FILE>...
|
|
5010
5010
|
|
5011
5011
|
=head2 Writing
|
5012
5012
|
|
5013
|
-
B<exiftool> [I<OPTIONS>] -I<TAG>[
|
5013
|
+
B<exiftool> [I<OPTIONS>] -I<TAG>[+-^E<lt>]=[I<VALUE>]... I<FILE>...
|
5014
5014
|
|
5015
5015
|
=head2 Copying
|
5016
5016
|
|
@@ -6053,7 +6053,7 @@ with this command:
|
|
6053
6053
|
|
6054
6054
|
produces output like this:
|
6055
6055
|
|
6056
|
-
-- Generated by ExifTool 13.
|
6056
|
+
-- Generated by ExifTool 13.26 --
|
6057
6057
|
File: a.jpg - 2003:10:31 15:44:19
|
6058
6058
|
(f/5.6, 1/60s, ISO 100)
|
6059
6059
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -2053,7 +2053,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
2053
2053
|
# 0x4014 (similar to 0x83?)
|
2054
2054
|
0x4015 => [{
|
2055
2055
|
Name => 'VignettingCorr', # (LensPacket)
|
2056
|
-
Condition => '$$valPt =~ /^\0/ and $$valPt !~
|
2056
|
+
Condition => '$$valPt =~ /^\0/ and $$valPt !~ /^(\0\0\0\0|\x00\x40\xdc\x05)/', # (data may be all zeros for 60D)
|
2057
2057
|
SubDirectory => {
|
2058
2058
|
# (the size word is at byte 2 in this structure)
|
2059
2059
|
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart+2,$size)',
|
@@ -2061,7 +2061,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
2061
2061
|
},
|
2062
2062
|
},{
|
2063
2063
|
Name => 'VignettingCorrUnknown1',
|
2064
|
-
Condition => '$$valPt =~ /^[\x01\x02\x10\x20]/ and $$valPt !~
|
2064
|
+
Condition => '$$valPt =~ /^[\x01\x02\x10\x20]/ and $$valPt !~ /^(\0\0\0\0|\x02\x50\x7c\x04)/',
|
2065
2065
|
SubDirectory => {
|
2066
2066
|
# (the size word is at byte 2 in this structure)
|
2067
2067
|
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart+2,$size)',
|
@@ -4758,6 +4758,7 @@ my %ciMaxFocal = (
|
|
4758
4758
|
Format => 'int32u',
|
4759
4759
|
Notes => 'includes electronic + mechanical shutter',
|
4760
4760
|
},
|
4761
|
+
# 0x0b5a - related to image stabilization (ref forum17239) (R5)
|
4761
4762
|
# 0x0bb7 - counts down during focus stack (ref forum16111)
|
4762
4763
|
);
|
4763
4764
|
|
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
|
|
65
65
|
use Image::ExifTool::GPS;
|
66
66
|
use Image::ExifTool::XMP;
|
67
67
|
|
68
|
-
$VERSION = '4.
|
68
|
+
$VERSION = '4.46';
|
69
69
|
|
70
70
|
sub LensIDConv($$$);
|
71
71
|
sub ProcessNikonAVI($$$);
|
@@ -552,6 +552,7 @@ sub GetAFPointGrid($$;$);
|
|
552
552
|
'21 56 8E 8E 24 24 14 00' => 'Tamron SP AF 300mm f/2.8 LD-IF (60E)',
|
553
553
|
'27 54 8E 8E 24 24 1D 02' => 'Tamron SP AF 300mm f/2.8 LD-IF (360E)',
|
554
554
|
'E1 40 19 36 2C 35 DF 4E' => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)',
|
555
|
+
'E1 40 19 36 2C 35 DF 0E' => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)', #30
|
555
556
|
'F6 3F 18 37 2C 34 84 06' => 'Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)',
|
556
557
|
'F6 3F 18 37 2C 34 DF 06' => 'Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)', #30
|
557
558
|
'00 36 1C 2D 34 3C 00 06' => 'Tamron SP AF 11-18mm f/4.5-5.6 Di II LD Aspherical (IF) (A13)',
|
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
40
40
|
use Image::ExifTool::Exif;
|
41
41
|
use Image::ExifTool::APP12;
|
42
42
|
|
43
|
-
$VERSION = '2.
|
43
|
+
$VERSION = '2.85';
|
44
44
|
|
45
45
|
sub PrintLensInfo($$$);
|
46
46
|
|
@@ -446,6 +446,7 @@ my %olympusCameraTypes = (
|
|
446
446
|
S0095 => 'OM-1', #IB
|
447
447
|
S0101 => 'OM-5', #IB
|
448
448
|
S0121 => 'OM-1MarkII', #forum15652
|
449
|
+
S0123 => 'OM-3', #forum17208
|
449
450
|
SR45 => 'D220',
|
450
451
|
SR55 => 'D320L',
|
451
452
|
SR83 => 'D340L',
|
@@ -16,7 +16,7 @@ use strict;
|
|
16
16
|
use vars qw($VERSION);
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.01';
|
20
20
|
|
21
21
|
%Image::ExifTool::PCAP::Main = (
|
22
22
|
GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Other' },
|
@@ -261,14 +261,14 @@ $VERSION = '1.00';
|
|
261
261
|
},
|
262
262
|
},
|
263
263
|
19373 => {
|
264
|
-
Name => '
|
264
|
+
Name => 'CustomOption4',
|
265
265
|
Binary => 1,
|
266
266
|
},
|
267
267
|
#
|
268
268
|
# "options" tags in Section Header Block
|
269
269
|
#
|
270
270
|
'SHB-2' => 'Hardware',
|
271
|
-
'SHB-3' => '
|
271
|
+
'SHB-3' => 'OperatingSystem',
|
272
272
|
'SHB-4' => 'UserApplication',
|
273
273
|
#
|
274
274
|
# "options" tags in Interface Description Block
|
@@ -308,8 +308,8 @@ $VERSION = '1.00';
|
|
308
308
|
Name => 'Filter',
|
309
309
|
ValueConv => 'Get8u(\$val,0) . ": " . substr($val, 1)',
|
310
310
|
},
|
311
|
-
'IDB-12' => '
|
312
|
-
'IDB-13' => { Name => '
|
311
|
+
'IDB-12' => 'OperatingSystem',
|
312
|
+
'IDB-13' => { Name => 'FrameCheckSequenceLength', Format => 'int8u' },
|
313
313
|
'IDB-14' => {
|
314
314
|
Name => 'TimeStampOffset',
|
315
315
|
Format => 'int64u',
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
58
58
|
use Image::ExifTool::GPS;
|
59
59
|
use Image::ExifTool::HP;
|
60
60
|
|
61
|
-
$VERSION = '3.
|
61
|
+
$VERSION = '3.48';
|
62
62
|
|
63
63
|
sub CryptShutterCount($$);
|
64
64
|
sub PrintFilter($$$);
|
@@ -558,6 +558,7 @@ my %pentaxModelID = (
|
|
558
558
|
0x13254 => 'K-3 Mark III', #IB (Ricoh)
|
559
559
|
0x13290 => 'WG-70', # (Ricoh)
|
560
560
|
0x1329a => 'GR IIIx', # (Ricoh)
|
561
|
+
0x132b8 => 'KF', #github322 (Ricoh)
|
561
562
|
0x132d6 => 'K-3 Mark III Monochrome', #github226 (Ricoh)
|
562
563
|
);
|
563
564
|
|
@@ -38,6 +38,7 @@
|
|
38
38
|
# 26) https://github.com/SamsungVR/android_upload_sdk/blob/master/SDKLib/src/main/java/com/samsung/msca/samsungvr/sdk/UserVideo.java
|
39
39
|
# 27) https://exiftool.org/forum/index.php?topic=11517.0
|
40
40
|
# 28) https://docs.mp3tag.de/mapping/
|
41
|
+
# 29) https://developer.apple.com/documentation/quicktime-file-format/media_data_reference_atom
|
41
42
|
#------------------------------------------------------------------------------
|
42
43
|
|
43
44
|
package Image::ExifTool::QuickTime;
|
@@ -48,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
48
49
|
use Image::ExifTool::Exif;
|
49
50
|
use Image::ExifTool::GPS;
|
50
51
|
|
51
|
-
$VERSION = '3.
|
52
|
+
$VERSION = '3.15';
|
52
53
|
|
53
54
|
sub ProcessMOV($$;$);
|
54
55
|
sub ProcessKeys($$$);
|
@@ -502,7 +503,7 @@ my %qtFlags = ( #12
|
|
502
503
|
# (used only to avoid warnings when Validate-ing)
|
503
504
|
my %dupTagOK = ( mdat => 1, trak => 1, free => 1, infe => 1, sgpd => 1, dimg => 1, CCDT => 1,
|
504
505
|
sbgp => 1, csgm => 1, uuid => 1, cdsc => 1, maxr => 1, '----' => 1 );
|
505
|
-
my %dupDirOK = ( ipco => 1, '----' => 1 );
|
506
|
+
my %dupDirOK = ( ipco => 1, iref => 1, '----' => 1 );
|
506
507
|
|
507
508
|
# the usual atoms required to decode timed metadata with the ExtractEmbedded option
|
508
509
|
my %eeStd = ( stco => 'stbl', co64 => 'stbl', stsz => 'stbl', stz2 => 'stbl',
|
@@ -1227,6 +1228,7 @@ my %userDefined = (
|
|
1227
1228
|
# clip - clipping --> contains crgn (clip region) (ref 12)
|
1228
1229
|
# mvex - movie extends --> contains mehd (movie extends header), trex (track extends) (ref 14)
|
1229
1230
|
# ICAT - 4 bytes: "6350" (Nikon CoolPix S6900), "6500" (Panasonic FT7)
|
1231
|
+
# ctab - color table (ref 29)
|
1230
1232
|
);
|
1231
1233
|
|
1232
1234
|
# (ref CFFMediaFormat-2_1.pdf)
|
@@ -1426,6 +1428,7 @@ my %userDefined = (
|
|
1426
1428
|
# load - track loading settings
|
1427
1429
|
# imap - track input map --> contains ' in' --> contains ' ty', obid
|
1428
1430
|
# prfl - Profile (ref 12)
|
1431
|
+
# txas - track exclude from autoselection (ref 29)
|
1429
1432
|
);
|
1430
1433
|
|
1431
1434
|
# track header data block
|
@@ -1630,6 +1633,10 @@ my %userDefined = (
|
|
1630
1633
|
Start => 4, # must skip 4-byte version number header
|
1631
1634
|
},
|
1632
1635
|
},
|
1636
|
+
tnam => { #29 (NC)
|
1637
|
+
Name => 'TrackName',
|
1638
|
+
IText => 4,
|
1639
|
+
},
|
1633
1640
|
'ptv '=> {
|
1634
1641
|
Name => 'PrintToVideo',
|
1635
1642
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Video' },
|
@@ -2801,6 +2808,8 @@ my %userDefined = (
|
|
2801
2808
|
Name => 'Unknown_grpl',
|
2802
2809
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::grpl' },
|
2803
2810
|
},
|
2811
|
+
# ctry - country list (ref 29)
|
2812
|
+
# lang - language list (ref 29)
|
2804
2813
|
);
|
2805
2814
|
|
2806
2815
|
# unknown grpl container
|
@@ -3279,21 +3288,28 @@ my %userDefined = (
|
|
3279
3288
|
%Image::ExifTool::QuickTime::TrackRef = (
|
3280
3289
|
PROCESS_PROC => \&ProcessMOV,
|
3281
3290
|
GROUPS => { 1 => 'Track#', 2 => 'Video' },
|
3282
|
-
chap => { Name => 'ChapterListTrackID',
|
3283
|
-
tmcd => { Name => '
|
3291
|
+
chap => { Name => 'ChapterListTrackID', Format => 'int32u' },
|
3292
|
+
tmcd => { Name => 'TimecodeTrack', Format => 'int32u' },
|
3284
3293
|
mpod => { #PH (FLIR MP4)
|
3285
3294
|
Name => 'ElementaryStreamTrack',
|
3286
3295
|
Format => 'int32u',
|
3287
3296
|
ValueConv => '$val =~ s/^1 //; $val', # (why 2 numbers? -- ignore the first if "1")
|
3288
3297
|
},
|
3289
|
-
# also:
|
3298
|
+
# also: iTunesInfo
|
3290
3299
|
cdsc => {
|
3291
3300
|
Name => 'ContentDescribes',
|
3292
3301
|
Format => 'int32u',
|
3293
3302
|
PrintConv => '"Track $val"',
|
3294
3303
|
},
|
3295
|
-
|
3296
|
-
|
3304
|
+
clcp => { Name => 'ClosedCaptionTrack', Format => 'int32u' }, #29
|
3305
|
+
fall => { Name => 'AlternateFormatTrack', Format => 'int32u' }, #29
|
3306
|
+
folw => { Name => 'SubtitleTrack', Format => 'int32u' }, #29
|
3307
|
+
forc => { Name => 'ForcedSubtitleTrack', Format => 'int32u' }, #29
|
3308
|
+
scpt => { Name => 'TranscriptTrack', Format => 'int32u' }, #29
|
3309
|
+
ssrc => { Name => 'Non-primarySourceTrack', Format => 'int32u' }, #29
|
3310
|
+
sync => { Name => 'SyncronizedTrack', Format => 'int32u' }, #29
|
3311
|
+
# hint - Original media for hint track (ref 29)
|
3312
|
+
# cdep (Structural Dependency QT tag?)
|
3297
3313
|
);
|
3298
3314
|
|
3299
3315
|
# track aperture mode dimensions atoms
|
@@ -6582,7 +6598,6 @@ my %userDefined = (
|
|
6582
6598
|
'apple.photos.variation-identifier' => { Name => 'ApplePhotosVariationIdentifier', Writable => 'int64s' },
|
6583
6599
|
'direction.facing' => { Name => 'CameraDirection', Groups => { 2 => 'Location' } },
|
6584
6600
|
'direction.motion' => { Name => 'CameraMotion', Groups => { 2 => 'Location' } },
|
6585
|
-
'location.body' => { Name => 'LocationBody', Groups => { 2 => 'Location' } },
|
6586
6601
|
'player.version' => 'PlayerVersion',
|
6587
6602
|
'player.movie.visual.brightness'=> 'Brightness',
|
6588
6603
|
'player.movie.visual.color' => 'Color',
|
@@ -7046,6 +7061,7 @@ my %userDefined = (
|
|
7046
7061
|
Name => 'MediaInfo',
|
7047
7062
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::MediaInfo' },
|
7048
7063
|
},
|
7064
|
+
elng => 'ExtendedLanguageTag', #29 (NC) eg. "zh-CN"
|
7049
7065
|
);
|
7050
7066
|
|
7051
7067
|
# MP4 media header box (ref 5)
|
@@ -7637,6 +7653,8 @@ my %userDefined = (
|
|
7637
7653
|
mrlh => { Name => 'MarlinHeader', SubDirectory => { TagTable => 'Image::ExifTool::GM::mrlh' } },
|
7638
7654
|
mrlv => { Name => 'MarlinValues', SubDirectory => { TagTable => 'Image::ExifTool::GM::mrlv' } },
|
7639
7655
|
mrld => { Name => 'MarlinDictionary',SubDirectory => { TagTable => 'Image::ExifTool::GM::mrld' } },
|
7656
|
+
# tbox - text box (ref 29)
|
7657
|
+
# styl - subtitle style (ref 29)
|
7640
7658
|
);
|
7641
7659
|
|
7642
7660
|
# AMR decode config box (ref 3)
|
@@ -30,7 +30,7 @@ use strict;
|
|
30
30
|
use vars qw($VERSION $AUTOLOAD);
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
32
32
|
|
33
|
-
$VERSION = '1.
|
33
|
+
$VERSION = '1.71';
|
34
34
|
|
35
35
|
sub ConvertTimecode($);
|
36
36
|
sub ProcessSGLT($$$);
|
@@ -547,6 +547,10 @@ my %code2charset = (
|
|
547
547
|
Name => 'ID3',
|
548
548
|
SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
|
549
549
|
},
|
550
|
+
'ID3 ' => { # (NC)
|
551
|
+
Name => 'ID3-2',
|
552
|
+
SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
|
553
|
+
},
|
550
554
|
#
|
551
555
|
# WebP-specific tags
|
552
556
|
#
|
@@ -668,6 +672,9 @@ my %code2charset = (
|
|
668
672
|
Name => 'SEAL',
|
669
673
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
|
670
674
|
},
|
675
|
+
# LGWV - written by Logic Pro
|
676
|
+
# minf, elm1, regn, umid, DGDA - written by Pro Tools
|
677
|
+
# MXrt, muma, chrp - written by Sequoia Pro
|
671
678
|
);
|
672
679
|
|
673
680
|
# the maker notes used by some digital cameras
|
@@ -1554,9 +1561,9 @@ my %code2charset = (
|
|
1554
1561
|
Name => 'Duration',
|
1555
1562
|
Require => {
|
1556
1563
|
0 => 'RIFF:AvgBytesPerSec',
|
1557
|
-
1 => 'FileSize',
|
1558
1564
|
},
|
1559
1565
|
Desire => {
|
1566
|
+
1 => 'FileSize', # (only used if 'data' length isn't available)
|
1560
1567
|
# check FrameCount because this calculation only applies
|
1561
1568
|
# to audio-only files (eg. WAV)
|
1562
1569
|
2 => 'FrameCount',
|
@@ -1564,8 +1571,9 @@ my %code2charset = (
|
|
1564
1571
|
},
|
1565
1572
|
# (can't calculate duration like this for compressed audio types)
|
1566
1573
|
RawConv => q{
|
1567
|
-
return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)
|
1568
|
-
return
|
1574
|
+
return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)$/ or $val[2] or $val[3];
|
1575
|
+
return undef unless $val[0] and ($$self{RIFFDataLen} or $val[1]);
|
1576
|
+
return(($$self{RIFFDataLen} || $val[1]) / $val[0]);
|
1569
1577
|
},
|
1570
1578
|
PrintConv => 'ConvertDuration($val)',
|
1571
1579
|
},
|
@@ -2098,8 +2106,9 @@ sub ProcessRIFF($$)
|
|
2098
2106
|
$pos += 4;
|
2099
2107
|
$tag .= "_$buff";
|
2100
2108
|
$len -= 4; # already read 4 bytes (the LIST type)
|
2101
|
-
} elsif ($tag eq 'data'
|
2102
|
-
$len = $$et{DataSize64};
|
2109
|
+
} elsif ($tag eq 'data') {
|
2110
|
+
$len = $$et{DataSize64} if $len == 0xffffffff and $$et{DataSize64};
|
2111
|
+
$$et{RIFFDataLen} = ($$et{RIFFDataLen} || 0) + $len;
|
2103
2112
|
}
|
2104
2113
|
$et->VPrint(0, "RIFF '${tag}' chunk ($len bytes of data):\n");
|
2105
2114
|
if ($len <= 0) {
|
@@ -7042,6 +7042,7 @@ my %tagLookup = (
|
|
7042
7042
|
'track' => { 412 => "\xa9trk", 420 => "\xa9trk" },
|
7043
7043
|
'trackcreatedate' => { 419 => 0x1 },
|
7044
7044
|
'trackmodifydate' => { 419 => 0x2 },
|
7045
|
+
'trackname' => { 420 => 'tnam' },
|
7045
7046
|
'tracknumber' => { 412 => 'trkn', 557 => 'trackNumber' },
|
7046
7047
|
'tracks' => { 557 => 'Tracks' },
|
7047
7048
|
'tracksframerate' => { 557 => [\'Tracks','TracksFrameRate'] },
|
@@ -7818,6 +7819,7 @@ my %tagExists = (
|
|
7818
7819
|
'alternateduotonecolors' => 1,
|
7819
7820
|
'alternateellipsoidheight' => 1,
|
7820
7821
|
'alternateellipsoidheightextended' => 1,
|
7822
|
+
'alternateformattrack' => 1,
|
7821
7823
|
'alternateheading' => 1,
|
7822
7824
|
'alternatelatitude' => 1,
|
7823
7825
|
'alternatelongitude' => 1,
|
@@ -8573,6 +8575,7 @@ my %tagExists = (
|
|
8573
8575
|
'cloneobject' => 1,
|
8574
8576
|
'clonetype' => 1,
|
8575
8577
|
'closedcaptioning' => 1,
|
8578
|
+
'closedcaptiontrack' => 1,
|
8576
8579
|
'cmddialsaperturesetting' => 1,
|
8577
8580
|
'cmddialschangemainsub' => 1,
|
8578
8581
|
'cmddialschangemainsubexposure' => 1,
|
@@ -9388,6 +9391,7 @@ my %tagExists = (
|
|
9388
9391
|
'extendedcontentdescr' => 1,
|
9389
9392
|
'extendedcontentencryption' => 1,
|
9390
9393
|
'extendedinfo' => 1,
|
9394
|
+
'extendedlanguagetag' => 1,
|
9391
9395
|
'extendedstreamprops' => 1,
|
9392
9396
|
'extendedtracktitle' => 1,
|
9393
9397
|
'extendedxmp' => 1,
|
@@ -9632,6 +9636,7 @@ my %tagExists = (
|
|
9632
9636
|
'fontweight' => 1,
|
9633
9637
|
'footerposition' => 1,
|
9634
9638
|
'footnotes' => 1,
|
9639
|
+
'forcedsubtitletrack' => 1,
|
9635
9640
|
'form' => 1,
|
9636
9641
|
'formatsdcard' => 1,
|
9637
9642
|
'formattag' => 1,
|
@@ -10022,6 +10027,7 @@ my %tagExists = (
|
|
10022
10027
|
'ics' => 1,
|
10023
10028
|
'id' => 1,
|
10024
10029
|
'id3' => 1,
|
10030
|
+
'id3-2' => 1,
|
10025
10031
|
'id3size' => 1,
|
10026
10032
|
'id3v1' => 1,
|
10027
10033
|
'id3v1_enh' => 1,
|
@@ -11116,6 +11122,7 @@ my %tagExists = (
|
|
11116
11122
|
'nominalplaytime' => 1,
|
11117
11123
|
'nominalvideobitrate' => 1,
|
11118
11124
|
'nomssmarttags' => 1,
|
11125
|
+
'non-primarysourcetrack' => 1,
|
11119
11126
|
'normallinetransfertiming' => 1,
|
11120
11127
|
'noseslimming' => 1,
|
11121
11128
|
'note' => 1,
|
@@ -12561,6 +12568,7 @@ my %tagExists = (
|
|
12561
12568
|
'subsystemversion' => 1,
|
12562
12569
|
'subtileblocksize' => 1,
|
12563
12570
|
'subtitledescription' => 1,
|
12571
|
+
'subtitletrack' => 1,
|
12564
12572
|
'suffix' => 1,
|
12565
12573
|
'suggestedpalette' => 1,
|
12566
12574
|
'summary' => 1,
|
@@ -12591,6 +12599,7 @@ my %tagExists = (
|
|
12591
12599
|
'synchronizedlyricstext' => 1,
|
12592
12600
|
'synchronizedlyricstype' => 1,
|
12593
12601
|
'synconly' => 1,
|
12602
|
+
'syncronizedtrack' => 1,
|
12594
12603
|
'syncsampletable' => 1,
|
12595
12604
|
'syncstate' => 1,
|
12596
12605
|
'synlyrics' => 1,
|
@@ -12761,6 +12770,7 @@ my %tagExists = (
|
|
12761
12770
|
'timecode' => 1,
|
12762
12771
|
'timecodeindex' => 1,
|
12763
12772
|
'timecodeindexparms' => 1,
|
12773
|
+
'timecodetrack' => 1,
|
12764
12774
|
'timeinfo' => 1,
|
12765
12775
|
'timelapse' => 1,
|
12766
12776
|
'timelineinfo' => 1,
|
@@ -12859,6 +12869,7 @@ my %tagExists = (
|
|
12859
12869
|
'trackvolume' => 1,
|
12860
12870
|
'trademark' => 1,
|
12861
12871
|
'transactionid' => 1,
|
12872
|
+
'transcripttrack' => 1,
|
12862
12873
|
'transfercharacteristic' => 1,
|
12863
12874
|
'transfercharacteristics' => 1,
|
12864
12875
|
'transferrange' => 1,
|
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
12
12
|
=head1 TAG TABLES
|
13
13
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
15
|
-
They contain a total of
|
15
|
+
They contain a total of 28431 tags, with 17665 unique tag names.
|
16
16
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
@@ -6366,7 +6366,9 @@ These tags belong to the ExifTool XMP-xmpBJ family 1 group.
|
|
6366
6366
|
|
6367
6367
|
=head3 XMP xmpDM Tags
|
6368
6368
|
|
6369
|
-
XMP Dynamic Media namespace tags.
|
6369
|
+
XMP Dynamic Media namespace tags. See
|
6370
|
+
L<https://developer.adobe.com/xmp/docs/XMPNamespaces/xmpDM/> for the
|
6371
|
+
specification.
|
6370
6372
|
|
6371
6373
|
These tags belong to the ExifTool XMP-xmpDM family 1 group.
|
6372
6374
|
|
@@ -31157,6 +31159,7 @@ MP4 media box.
|
|
31157
31159
|
|
31158
31160
|
Tag ID Tag Name Writable
|
31159
31161
|
------ -------- --------
|
31162
|
+
'elng' ExtendedLanguageTag no
|
31160
31163
|
'hdlr' Handler QuickTime Handler
|
31161
31164
|
'mdhd' MediaHeader QuickTime MediaHeader
|
31162
31165
|
'minf' MediaInfo QuickTime MediaInfo
|
@@ -31556,8 +31559,15 @@ MP4 video media header.
|
|
31556
31559
|
------ -------- --------
|
31557
31560
|
'cdsc' ContentDescribes no
|
31558
31561
|
'chap' ChapterListTrackID no
|
31562
|
+
'clcp' ClosedCaptionTrack no
|
31563
|
+
'fall' AlternateFormatTrack no
|
31564
|
+
'folw' SubtitleTrack no
|
31565
|
+
'forc' ForcedSubtitleTrack no
|
31559
31566
|
'mpod' ElementaryStreamTrack no
|
31560
|
-
'
|
31567
|
+
'scpt' TranscriptTrack no
|
31568
|
+
'ssrc' Non-primarySourceTrack no
|
31569
|
+
'sync' SyncronizedTrack no
|
31570
|
+
'tmcd' TimecodeTrack no
|
31561
31571
|
|
31562
31572
|
=head3 QuickTime UserData Tags
|
31563
31573
|
|
@@ -31705,6 +31715,7 @@ the config file.
|
|
31705
31715
|
UnknownThumbnail string
|
31706
31716
|
'time' TimeStamp no
|
31707
31717
|
'titl' Title string/
|
31718
|
+
'tnam' TrackName string
|
31708
31719
|
'urat' UserRating undef/
|
31709
31720
|
'uuid' GarminSoftware string
|
31710
31721
|
GarminModel no
|
@@ -32120,6 +32131,7 @@ metadata to WEBP images, but can't yet write to other RIFF-based formats.
|
|
32120
32131
|
'EXIF' EXIF EXIF
|
32121
32132
|
UnknownEXIF no
|
32122
32133
|
'ICCP' ICC_Profile ICC_Profile
|
32134
|
+
'ID3 ' ID3-2 ID3
|
32123
32135
|
'IDIT' DateTimeOriginal no
|
32124
32136
|
'JUNK' OlympusJunk Olympus AVI
|
32125
32137
|
CasioJunk EXIF
|
@@ -40185,7 +40197,7 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
|
|
40185
40197
|
0x0bac CustomOption1 no
|
40186
40198
|
0x0bad CustomOption2 no
|
40187
40199
|
0x4bac CustomOption3 no
|
40188
|
-
0x4bad
|
40200
|
+
0x4bad CustomOption4 no
|
40189
40201
|
'ByteOrder' ByteOrder no
|
40190
40202
|
'IDB-2' DeviceName no
|
40191
40203
|
'IDB-3' Description no
|
@@ -40197,8 +40209,8 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
|
|
40197
40209
|
'IDB-9' TimeStampResolution no
|
40198
40210
|
'IDB-10' TimeZone no
|
40199
40211
|
'IDB-11' Filter no
|
40200
|
-
'IDB-12'
|
40201
|
-
'IDB-13'
|
40212
|
+
'IDB-12' OperatingSystem no
|
40213
|
+
'IDB-13' FrameCheckSequenceLength no
|
40202
40214
|
'IDB-14' TimeStampOffset no
|
40203
40215
|
'IDB-15' Hardware no
|
40204
40216
|
'IDB-16' TXSpeed no
|
@@ -40207,7 +40219,7 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
|
|
40207
40219
|
'LinkType' LinkType no
|
40208
40220
|
'PCAPVersion' PCAPVersion no
|
40209
40221
|
'SHB-2' Hardware no
|
40210
|
-
'SHB-3'
|
40222
|
+
'SHB-3' OperatingSystem no
|
40211
40223
|
'SHB-4' UserApplication no
|
40212
40224
|
'TimeStamp' TimeStamp no
|
40213
40225
|
|
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
|
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
require Exporter;
|
52
52
|
|
53
|
-
$VERSION = '3.
|
53
|
+
$VERSION = '3.73';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -3539,14 +3539,19 @@ NoLoop:
|
|
3539
3539
|
}
|
3540
3540
|
last unless $sti;
|
3541
3541
|
}
|
3542
|
-
#
|
3543
|
-
|
3544
|
-
|
3545
|
-
|
3546
|
-
|
3547
|
-
|
3548
|
-
|
3549
|
-
|
3542
|
+
# use existing definition if we already added this tag
|
3543
|
+
if ($$tagTablePtr{$tagID}) {
|
3544
|
+
$tagInfo = $$tagTablePtr{$tagID};
|
3545
|
+
} else {
|
3546
|
+
# generate new tagInfo hash based on existing top-level tag
|
3547
|
+
$tagInfo = { %$sti, Name => $flat . $$sti{Name} };
|
3548
|
+
# be careful not to copy elements we shouldn't...
|
3549
|
+
delete $$tagInfo{Description}; # Description will be different
|
3550
|
+
# can't copy group hash because group 1 will be different and
|
3551
|
+
# we need to check this when writing tag to a specific group
|
3552
|
+
delete $$tagInfo{Groups};
|
3553
|
+
$$tagInfo{Groups}{2} = $$sti{Groups}{2} if $$sti{Groups};
|
3554
|
+
}
|
3550
3555
|
last;
|
3551
3556
|
}
|
3552
3557
|
}
|
@@ -3592,13 +3597,15 @@ NoLoop:
|
|
3592
3597
|
#} elsif (grep / /, @$props) {
|
3593
3598
|
# $$tagInfo{List} = 1;
|
3594
3599
|
}
|
3595
|
-
|
3596
|
-
|
3597
|
-
|
3598
|
-
|
3599
|
-
$$
|
3600
|
+
unless ($$tagTablePtr{$tagID} and $$tagTablePtr{$tagID} eq $tagInfo) {
|
3601
|
+
# save property list for verbose "adding" message unless this tag already exists
|
3602
|
+
$added = \@tagList unless $$tagTablePtr{$tagID};
|
3603
|
+
# if this is an empty structure, we must add a Struct field
|
3604
|
+
if (not length $val and $$attrs{'rdf:parseType'} and $$attrs{'rdf:parseType'} eq 'Resource') {
|
3605
|
+
$$tagInfo{Struct} = { STRUCT_NAME => 'XMP Unknown' } unless $$tagInfo{Struct};
|
3606
|
+
}
|
3607
|
+
AddTagToTable($tagTablePtr, $tagID, $tagInfo);
|
3600
3608
|
}
|
3601
|
-
AddTagToTable($tagTablePtr, $tagID, $tagInfo);
|
3602
3609
|
last;
|
3603
3610
|
}
|
3604
3611
|
# decode value if necessary (et:encoding was used before exiftool 7.71)
|
@@ -170,7 +170,11 @@ my %sAppInfo = (
|
|
170
170
|
%xmpTableDefaults,
|
171
171
|
GROUPS => { 1 => 'XMP-xmpDM', 2 => 'Image' },
|
172
172
|
NAMESPACE => 'xmpDM',
|
173
|
-
NOTES =>
|
173
|
+
NOTES => q{
|
174
|
+
XMP Dynamic Media namespace tags. See
|
175
|
+
L<https://developer.adobe.com/xmp/docs/XMPNamespaces/xmpDM/> for the
|
176
|
+
specification.
|
177
|
+
},
|
174
178
|
absPeakAudioFilePath=> { },
|
175
179
|
album => { },
|
176
180
|
altTapeName => { },
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
|
30
30
|
%static_vars $advFmtSelf);
|
31
31
|
|
32
|
-
$VERSION = '13.
|
32
|
+
$VERSION = '13.26';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -895,7 +895,8 @@ Supported options are 'MD5', 'SHA256', and 'SHA512'. Default is 'MD5'.
|
|
895
895
|
=item KeepUTCTime
|
896
896
|
|
897
897
|
Flag to keep UTC times in Zulu time zone instead of converting to local
|
898
|
-
time.
|
898
|
+
time. Affects only times which are stored as seconds since the UTC epoch.
|
899
|
+
Default is undef.
|
899
900
|
|
900
901
|
=item Lang
|
901
902
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exiftool_vendored
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 13.
|
4
|
+
version: 13.26.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew McEachen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-
|
12
|
+
date: 2025-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|