exiftool_vendored 13.24.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 +26 -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/Apple.pm +12 -2
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/DarwinCore.pm +22 -11
- data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- 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/PLIST.pm +2 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +37 -11
- data/bin/lib/Image/ExifTool/RIFF.pm +15 -6
- data/bin/lib/Image/ExifTool/TagLookup.pm +25 -0
- data/bin/lib/Image/ExifTool/TagNames.pod +44 -8
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -3
- data/bin/lib/Image/ExifTool/Writer.pl +9 -9
- data/bin/lib/Image/ExifTool/XMP.pm +22 -15
- data/bin/lib/Image/ExifTool/XMP2.pl +5 -1
- data/bin/lib/Image/ExifTool.pm +13 -7
- data/bin/lib/Image/ExifTool.pod +8 -41
- 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
@@ -4,9 +4,32 @@ ExifTool Version History
|
|
4
4
|
|
5
5
|
RSS feed: https://exiftool.org/rss.xml
|
6
6
|
|
7
|
-
Note: The most recent production release is Version 13.
|
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
|
+
|
23
|
+
Mar. 11, 2025 - Version 13.25 (production release)
|
24
|
+
|
25
|
+
- IMPORTANT: Fixed issue which could corrupt HEIC images from newer iPhones
|
26
|
+
under certain conditions when writing QuickTime:Rotation
|
27
|
+
- Decode more PLIST information from HEIC images
|
28
|
+
- Updated Geolocation databases from current geonames.org files
|
29
|
+
- Updated DarwinCore for the 2023 specification (thanks Herb)
|
30
|
+
- API Changes:
|
31
|
+
- Added KeepUTCTime option
|
32
|
+
|
10
33
|
Mar. 7, 2025 - Version 13.24
|
11
34
|
|
12
35
|
- Changed -listf, -listr and -listwf options to print descriptions when either
|
@@ -15,7 +38,7 @@ Mar. 7, 2025 - Version 13.24
|
|
15
38
|
|
16
39
|
Mar. 7, 2025 - Version 13.23
|
17
40
|
|
18
|
-
- Added read support for CAP, PCAP and
|
41
|
+
- Added read support for CAP, PCAP and PCAPNG files (github #318)
|
19
42
|
- Added a number of new Sony LensType2 values (thanks Jos Roost)
|
20
43
|
- Added the 2 new GPSAltitudeRef values defined by EXIF 3.0
|
21
44
|
- Decode APP4 "Qualcomm Dual Camera Attributes" metadata
|
@@ -47,7 +70,7 @@ Feb. 20, 2025 - Version 13.21
|
|
47
70
|
- Patched issue that could result in runtime warning for some video files
|
48
71
|
- Fixed a bug with the new -plot option that could generate a compiler error
|
49
72
|
|
50
|
-
Feb. 20, 2025 - Version 13.20
|
73
|
+
Feb. 20, 2025 - Version 13.20 - "SVG Plot"
|
51
74
|
|
52
75
|
- Added new -plot option for generating SVG-format plots from tag values
|
53
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
|
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
16
16
|
use Image::ExifTool::Exif;
|
17
17
|
use Image::ExifTool::PLIST;
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.15';
|
20
20
|
|
21
21
|
sub ConvertPLIST($$);
|
22
22
|
|
@@ -307,7 +307,17 @@ sub ConvertPLIST($$);
|
|
307
307
|
Name => 'Apple_0x004f',
|
308
308
|
Unknown => 1,
|
309
309
|
ValueConv => \&ConvertPLIST,
|
310
|
-
}
|
310
|
+
},
|
311
|
+
0x0054 => {
|
312
|
+
Name => 'Apple_0x0054',
|
313
|
+
Unknown => 1,
|
314
|
+
ValueConv => \&ConvertPLIST,
|
315
|
+
},
|
316
|
+
0x005a => {
|
317
|
+
Name => 'Apple_0x005a',
|
318
|
+
Unknown => 1,
|
319
|
+
ValueConv => \&ConvertPLIST,
|
320
|
+
},
|
311
321
|
);
|
312
322
|
|
313
323
|
# PLIST-format CMTime structure (ref PH)
|
@@ -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
|
|
@@ -4,6 +4,7 @@
|
|
4
4
|
# Description: Darwin Core XMP tags
|
5
5
|
#
|
6
6
|
# Revisions: 2013-01-28 - P. Harvey Created
|
7
|
+
# 2025-03-09 - Herb forum17172 changes dwc.tdwg.org 2023
|
7
8
|
#
|
8
9
|
# References: 1) http://rs.tdwg.org/dwc/index.htm
|
9
10
|
# 2) https://exiftool.org/forum/index.php/topic,4442.0/all.html
|
@@ -15,7 +16,7 @@ use strict;
|
|
15
16
|
use vars qw($VERSION);
|
16
17
|
use Image::ExifTool::XMP;
|
17
18
|
|
18
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.08';
|
19
20
|
|
20
21
|
my %dateTimeInfo = (
|
21
22
|
# NOTE: Do NOT put "Groups" here because Groups hash must not be common!
|
@@ -35,7 +36,7 @@ my %event = (
|
|
35
36
|
STRUCT_NAME => 'DarwinCore Event',
|
36
37
|
NAMESPACE => 'dwc',
|
37
38
|
day => { Writable => 'integer', Groups => { 2 => 'Time' } },
|
38
|
-
earliestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
|
39
|
+
earliestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } }, # dwc.tdwg.org removed 2023
|
39
40
|
endDayOfYear => { Writable => 'integer', Groups => { 2 => 'Time' } },
|
40
41
|
eventDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
|
41
42
|
eventID => { Avoid => 1, Notes => 'avoided in favor of XMP-iptcExt:EventID' },
|
@@ -63,7 +64,7 @@ my %event = (
|
|
63
64
|
fieldNotes => { },
|
64
65
|
fieldNumber => { },
|
65
66
|
habitat => { },
|
66
|
-
latestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
|
67
|
+
latestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } }, # dwc.tdwg.org removed 2023
|
67
68
|
month => { Writable => 'integer', Groups => { 2 => 'Time' } },
|
68
69
|
parentEventID => { },
|
69
70
|
samplingEffort => { },
|
@@ -73,6 +74,7 @@ my %event = (
|
|
73
74
|
startDayOfYear => { Writable => 'integer', Groups => { 2 => 'Time' } },
|
74
75
|
verbatimEventDate => { Groups => { 2 => 'Time' } },
|
75
76
|
year => { Writable => 'integer', Groups => { 2 => 'Time' } },
|
77
|
+
eventType => { }, # dwc.tdwg.org added 2023
|
76
78
|
);
|
77
79
|
|
78
80
|
# Darwin Core tags
|
@@ -161,6 +163,7 @@ my %event = (
|
|
161
163
|
measurementType => { },
|
162
164
|
measurementUnit => { },
|
163
165
|
measurementValue => { },
|
166
|
+
parentMeasurementID => { }, # dwc.tdwg.org added 2023
|
164
167
|
},
|
165
168
|
},
|
166
169
|
Occurrence => {
|
@@ -170,25 +173,25 @@ my %event = (
|
|
170
173
|
associatedMedia => { },
|
171
174
|
associatedOccurrences => { },
|
172
175
|
associatedReferences => { },
|
173
|
-
associatedSequences => { },
|
176
|
+
associatedSequences => { }, # dwc.tdwg.org removed 2023
|
174
177
|
associatedTaxa => { },
|
175
178
|
behavior => { },
|
176
179
|
catalogNumber => { },
|
177
|
-
disposition => { },
|
180
|
+
disposition => { }, # dwc.tdwg.org removed 2023
|
178
181
|
establishmentMeans => { },
|
179
182
|
individualCount => { },
|
180
|
-
individualID => { },
|
183
|
+
individualID => { }, # dwc.tdwg.org removed 2023
|
181
184
|
lifeStage => { },
|
182
185
|
occurrenceDetails => { },
|
183
|
-
occurrenceID => { },
|
186
|
+
occurrenceID => { }, # dwc.tdwg.org removed 2023
|
184
187
|
occurrenceRemarks => { },
|
185
188
|
occurrenceStatus => { },
|
186
189
|
organismQuantity => { },
|
187
190
|
organismQuantityType => { },
|
188
191
|
otherCatalogNumbers => { },
|
189
192
|
preparations => { },
|
190
|
-
previousIdentifications => { },
|
191
|
-
recordedBy => { },
|
193
|
+
previousIdentifications => { }, # dwc.tdwg.org removed 2023
|
194
|
+
recordedBy => { }, # dwc.tdwg.org removed 2023
|
192
195
|
recordNumber => { },
|
193
196
|
reproductiveCondition => { },
|
194
197
|
sex => { },
|
@@ -197,6 +200,8 @@ my %event = (
|
|
197
200
|
georeferenceVerificationStatus => { },
|
198
201
|
pathway => { },
|
199
202
|
recordedByID => { },
|
203
|
+
caste => { }, # dwc.tdwg.org added 2023
|
204
|
+
vitality => { }, # dwc.tdwg.org added 2023
|
200
205
|
},
|
201
206
|
},
|
202
207
|
OccurrenceOccurrenceDetails => { Name => 'OccurrenceDetails', Flat => 1 },
|
@@ -207,7 +212,7 @@ my %event = (
|
|
207
212
|
Struct => {
|
208
213
|
STRUCT_NAME => 'DarwinCore Organism',
|
209
214
|
NAMESPACE => 'dwc',
|
210
|
-
associatedOccurrences => { },
|
215
|
+
associatedOccurrences => { }, # dwc.tdwg.org removed 2023
|
211
216
|
associatedOrganisms => { },
|
212
217
|
organismID => { },
|
213
218
|
organismName => { },
|
@@ -291,6 +296,12 @@ my %event = (
|
|
291
296
|
taxonomicStatus => { },
|
292
297
|
verbatimTaxonRank => { },
|
293
298
|
vernacularName => { Writable => 'lang-alt' },
|
299
|
+
superFamily => { }, # dwc.tdwg.org added 2023
|
300
|
+
subFamily => { }, # dwc.tdwg.org added 2023
|
301
|
+
tribe => { }, # dwc.tdwg.org added 2023
|
302
|
+
subTribe => { }, # dwc.tdwg.org added 2023
|
303
|
+
genericName => { }, # dwc.tdwg.org added 2023
|
304
|
+
infragenericEpithet => { }, # dwc.tdwg.org added 2023
|
294
305
|
},
|
295
306
|
},
|
296
307
|
TaxonTaxonConceptID => { Name => 'TaxonConceptID', Flat => 1 },
|
@@ -321,7 +332,7 @@ my %event = (
|
|
321
332
|
georeferenceProtocol => { },
|
322
333
|
georeferenceRemarks => { },
|
323
334
|
georeferenceSources => { },
|
324
|
-
georeferenceVerificationStatus => { },
|
335
|
+
georeferenceVerificationStatus => { }, # dwc.tdwg.org removed 2023
|
325
336
|
higherGeography => { },
|
326
337
|
higherGeographyID => { },
|
327
338
|
island => { },
|
Binary file
|
@@ -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',
|
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
21
21
|
use Image::ExifTool::XMP;
|
22
22
|
use Image::ExifTool::GPS;
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.15';
|
25
25
|
|
26
26
|
sub ExtractObject($$;$);
|
27
27
|
sub Get24u($$);
|
@@ -352,7 +352,7 @@ sub ExtractObject($$;$)
|
|
352
352
|
my $name = $tag;
|
353
353
|
$name =~ s/([^A-Za-z])([a-z])/$1\u$2/g; # capitalize words
|
354
354
|
$name =~ tr/-_a-zA-Z0-9//dc; # remove illegal characters
|
355
|
-
$name =
|
355
|
+
$name = 'Tag'.ucfirst($name) if length($name) < 2 or $name =~ /^[-0-9]/;
|
356
356
|
$tagInfo = { Name => ucfirst($name), List => 1 };
|
357
357
|
if ($$plistInfo{DateFormat}) {
|
358
358
|
$$tagInfo{Groups}{2} = 'Time';
|
@@ -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($$$);
|
@@ -492,6 +493,8 @@ my %qtFlags = ( #12
|
|
492
493
|
%dontInherit = (
|
493
494
|
ispe => 1, # primary item must have an ispe and pixi, so no need to inherit these
|
494
495
|
pixi => 1,
|
496
|
+
irot => 1, # (tmap may have a different irot)
|
497
|
+
pasp => 1, # (NC)
|
495
498
|
hvcC => 2, # (hvcC is a property of hvc1 referred to by primary grid)
|
496
499
|
colr => 2, # (colr is a property of primary grid or hvc1 referred to by primary)
|
497
500
|
);
|
@@ -500,7 +503,7 @@ my %qtFlags = ( #12
|
|
500
503
|
# (used only to avoid warnings when Validate-ing)
|
501
504
|
my %dupTagOK = ( mdat => 1, trak => 1, free => 1, infe => 1, sgpd => 1, dimg => 1, CCDT => 1,
|
502
505
|
sbgp => 1, csgm => 1, uuid => 1, cdsc => 1, maxr => 1, '----' => 1 );
|
503
|
-
my %dupDirOK = ( ipco => 1, '----' => 1 );
|
506
|
+
my %dupDirOK = ( ipco => 1, iref => 1, '----' => 1 );
|
504
507
|
|
505
508
|
# the usual atoms required to decode timed metadata with the ExtractEmbedded option
|
506
509
|
my %eeStd = ( stco => 'stbl', co64 => 'stbl', stsz => 'stbl', stz2 => 'stbl',
|
@@ -1225,6 +1228,7 @@ my %userDefined = (
|
|
1225
1228
|
# clip - clipping --> contains crgn (clip region) (ref 12)
|
1226
1229
|
# mvex - movie extends --> contains mehd (movie extends header), trex (track extends) (ref 14)
|
1227
1230
|
# ICAT - 4 bytes: "6350" (Nikon CoolPix S6900), "6500" (Panasonic FT7)
|
1231
|
+
# ctab - color table (ref 29)
|
1228
1232
|
);
|
1229
1233
|
|
1230
1234
|
# (ref CFFMediaFormat-2_1.pdf)
|
@@ -1424,6 +1428,7 @@ my %userDefined = (
|
|
1424
1428
|
# load - track loading settings
|
1425
1429
|
# imap - track input map --> contains ' in' --> contains ' ty', obid
|
1426
1430
|
# prfl - Profile (ref 12)
|
1431
|
+
# txas - track exclude from autoselection (ref 29)
|
1427
1432
|
);
|
1428
1433
|
|
1429
1434
|
# track header data block
|
@@ -1628,6 +1633,10 @@ my %userDefined = (
|
|
1628
1633
|
Start => 4, # must skip 4-byte version number header
|
1629
1634
|
},
|
1630
1635
|
},
|
1636
|
+
tnam => { #29 (NC)
|
1637
|
+
Name => 'TrackName',
|
1638
|
+
IText => 4,
|
1639
|
+
},
|
1631
1640
|
'ptv '=> {
|
1632
1641
|
Name => 'PrintToVideo',
|
1633
1642
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Video' },
|
@@ -2799,6 +2808,8 @@ my %userDefined = (
|
|
2799
2808
|
Name => 'Unknown_grpl',
|
2800
2809
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::grpl' },
|
2801
2810
|
},
|
2811
|
+
# ctry - country list (ref 29)
|
2812
|
+
# lang - language list (ref 29)
|
2802
2813
|
);
|
2803
2814
|
|
2804
2815
|
# unknown grpl container
|
@@ -2854,6 +2865,7 @@ my %userDefined = (
|
|
2854
2865
|
%Image::ExifTool::QuickTime::ItemPropCont = (
|
2855
2866
|
PROCESS_PROC => \&ProcessMOV,
|
2856
2867
|
WRITE_PROC => \&WriteQuickTime,
|
2868
|
+
CHECK_PROC => \&CheckQTValue,
|
2857
2869
|
PERMANENT => 1, # (can't be deleted)
|
2858
2870
|
GROUPS => { 2 => 'Image' },
|
2859
2871
|
VARS => { START_INDEX => 1 }, # show verbose indices starting at 1
|
@@ -2911,6 +2923,7 @@ my %userDefined = (
|
|
2911
2923
|
Name => 'PixelAspectRatio',
|
2912
2924
|
Format => 'int32u',
|
2913
2925
|
Writable => 'int32u',
|
2926
|
+
Count => 2,
|
2914
2927
|
Protected => 1,
|
2915
2928
|
},
|
2916
2929
|
rloc => {
|
@@ -3275,21 +3288,28 @@ my %userDefined = (
|
|
3275
3288
|
%Image::ExifTool::QuickTime::TrackRef = (
|
3276
3289
|
PROCESS_PROC => \&ProcessMOV,
|
3277
3290
|
GROUPS => { 1 => 'Track#', 2 => 'Video' },
|
3278
|
-
chap => { Name => 'ChapterListTrackID',
|
3279
|
-
tmcd => { Name => '
|
3291
|
+
chap => { Name => 'ChapterListTrackID', Format => 'int32u' },
|
3292
|
+
tmcd => { Name => 'TimecodeTrack', Format => 'int32u' },
|
3280
3293
|
mpod => { #PH (FLIR MP4)
|
3281
3294
|
Name => 'ElementaryStreamTrack',
|
3282
3295
|
Format => 'int32u',
|
3283
3296
|
ValueConv => '$val =~ s/^1 //; $val', # (why 2 numbers? -- ignore the first if "1")
|
3284
3297
|
},
|
3285
|
-
# also:
|
3298
|
+
# also: iTunesInfo
|
3286
3299
|
cdsc => {
|
3287
3300
|
Name => 'ContentDescribes',
|
3288
3301
|
Format => 'int32u',
|
3289
3302
|
PrintConv => '"Track $val"',
|
3290
3303
|
},
|
3291
|
-
|
3292
|
-
|
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?)
|
3293
3313
|
);
|
3294
3314
|
|
3295
3315
|
# track aperture mode dimensions atoms
|
@@ -6578,7 +6598,6 @@ my %userDefined = (
|
|
6578
6598
|
'apple.photos.variation-identifier' => { Name => 'ApplePhotosVariationIdentifier', Writable => 'int64s' },
|
6579
6599
|
'direction.facing' => { Name => 'CameraDirection', Groups => { 2 => 'Location' } },
|
6580
6600
|
'direction.motion' => { Name => 'CameraMotion', Groups => { 2 => 'Location' } },
|
6581
|
-
'location.body' => { Name => 'LocationBody', Groups => { 2 => 'Location' } },
|
6582
6601
|
'player.version' => 'PlayerVersion',
|
6583
6602
|
'player.movie.visual.brightness'=> 'Brightness',
|
6584
6603
|
'player.movie.visual.color' => 'Color',
|
@@ -7042,6 +7061,7 @@ my %userDefined = (
|
|
7042
7061
|
Name => 'MediaInfo',
|
7043
7062
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::MediaInfo' },
|
7044
7063
|
},
|
7064
|
+
elng => 'ExtendedLanguageTag', #29 (NC) eg. "zh-CN"
|
7045
7065
|
);
|
7046
7066
|
|
7047
7067
|
# MP4 media header box (ref 5)
|
@@ -7633,6 +7653,8 @@ my %userDefined = (
|
|
7633
7653
|
mrlh => { Name => 'MarlinHeader', SubDirectory => { TagTable => 'Image::ExifTool::GM::mrlh' } },
|
7634
7654
|
mrlv => { Name => 'MarlinValues', SubDirectory => { TagTable => 'Image::ExifTool::GM::mrlv' } },
|
7635
7655
|
mrld => { Name => 'MarlinDictionary',SubDirectory => { TagTable => 'Image::ExifTool::GM::mrld' } },
|
7656
|
+
# tbox - text box (ref 29)
|
7657
|
+
# styl - subtitle style (ref 29)
|
7636
7658
|
);
|
7637
7659
|
|
7638
7660
|
# AMR decode config box (ref 3)
|
@@ -9174,7 +9196,8 @@ sub HandleItemInfo($)
|
|
9174
9196
|
$et->VPrint(0, "$$et{INDENT}Item $id) '${type}' ($len bytes$enc)\n");
|
9175
9197
|
}
|
9176
9198
|
# get ExifTool name for this item
|
9177
|
-
my $name = { Exif => 'EXIF', 'application/rdf+xml' => 'XMP', jpeg => 'PreviewImage'
|
9199
|
+
my $name = { Exif => 'EXIF', 'application/rdf+xml' => 'XMP', jpeg => 'PreviewImage',
|
9200
|
+
'uri ' => 'PLIST' }->{$type} || '';
|
9178
9201
|
my ($warn, $extent);
|
9179
9202
|
if ($$item{ContentEncoding}) {
|
9180
9203
|
if ($$item{ContentEncoding} ne 'deflate') {
|
@@ -9267,7 +9290,6 @@ sub HandleItemInfo($)
|
|
9267
9290
|
if ($name eq 'EXIF' and length $buff >= 4) {
|
9268
9291
|
if ($buff =~ /^(MM\0\x2a|II\x2a\0)/) {
|
9269
9292
|
$et->Warn('Missing Exif header');
|
9270
|
-
$start = 0;
|
9271
9293
|
} elsif ($buff =~ /^Exif\0\0/) {
|
9272
9294
|
# (haven't seen this yet, but it is just a matter of time
|
9273
9295
|
# until someone screws it up like this)
|
@@ -9302,10 +9324,14 @@ sub HandleItemInfo($)
|
|
9302
9324
|
}
|
9303
9325
|
$et->FoundTag($type => $buff);
|
9304
9326
|
next;
|
9327
|
+
} elsif ($name eq 'PLIST') {
|
9328
|
+
# extract PLIST information from 'uri ' if available
|
9329
|
+
next unless $buff =~ /^bplist00/;
|
9330
|
+
$subTable = GetTagTable('Image::ExifTool::PLIST::Main');
|
9305
9331
|
} else {
|
9306
|
-
$start = 0;
|
9307
9332
|
$subTable = GetTagTable('Image::ExifTool::XMP::Main');
|
9308
9333
|
}
|
9334
|
+
$start or $start = 0;
|
9309
9335
|
my %dirInfo = (
|
9310
9336
|
DataPt => \$buff,
|
9311
9337
|
DataLen => length $buff,
|