exiftool-vendored.pl 13.48.0 → 13.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 +10 -1
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/exiftool +2 -2
- package/bin/lib/Image/ExifTool/Nikon.pm +4 -4
- package/bin/lib/Image/ExifTool/QuickTime.pm +2 -1
- package/bin/lib/Image/ExifTool/Samsung.pm +18 -2
- package/bin/lib/Image/ExifTool/TagLookup.pm +2 -0
- package/bin/lib/Image/ExifTool/TagNames.pod +3 -1
- package/bin/lib/Image/ExifTool.pm +12 -2
- package/bin/lib/Image/ExifTool.pod +5 -5
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/package.json +1 -1
package/bin/Changes
CHANGED
|
@@ -7,6 +7,15 @@ RSS feed: https://exiftool.org/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 13.44. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
|
9
9
|
|
|
10
|
+
Feb. 3, 2026 - Version 13.49
|
|
11
|
+
|
|
12
|
+
- Decode a couple of new Samsung trailer tags
|
|
13
|
+
- Fixed problem where Google Photos had problems displaying ExifTool-edited
|
|
14
|
+
HEIC MotionPhoto images. Files written by older versions of ExifTool may be
|
|
15
|
+
repaired by re-writing with 13.49 or later
|
|
16
|
+
- Disable decoding of MenuSettings for the Nikon Z6III firmware 2.0 until the
|
|
17
|
+
changes can be worked through in detail
|
|
18
|
+
|
|
10
19
|
Jan. 31, 2026 - Version 13.48
|
|
11
20
|
|
|
12
21
|
- Added a new Nikon LensID (github #385)
|
|
@@ -21,7 +30,7 @@ Jan. 27, 2026 - Version 13.47
|
|
|
21
30
|
- Enhanced -fast option to avoid scanning QuickTime MediaData for metadata
|
|
22
31
|
(improves performance when reading CR3 files from slow media, github #384)
|
|
23
32
|
and -fast2 to avoid reading HDRP maker notes
|
|
24
|
-
- Fixed hang problem when reading HDRPMakerNotes from some
|
|
33
|
+
- Fixed hang problem when reading HDRPMakerNotes from some Google phones
|
|
25
34
|
- API Changes:
|
|
26
35
|
- Added CSV support to GeoUserTag option
|
|
27
36
|
|
package/bin/META.json
CHANGED
package/bin/META.yml
CHANGED
package/bin/README
CHANGED
|
@@ -111,8 +111,8 @@ your home directory, then you would type the following commands in a
|
|
|
111
111
|
terminal window to extract and run ExifTool:
|
|
112
112
|
|
|
113
113
|
cd ~/Desktop
|
|
114
|
-
gzip -dc Image-ExifTool-13.
|
|
115
|
-
cd Image-ExifTool-13.
|
|
114
|
+
gzip -dc Image-ExifTool-13.49.tar.gz | tar -xf -
|
|
115
|
+
cd Image-ExifTool-13.49
|
|
116
116
|
./exiftool t/images/ExifTool.jpg
|
|
117
117
|
|
|
118
118
|
Note: These commands extract meta information from one of the test images.
|
package/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.49';
|
|
15
15
|
|
|
16
16
|
$^W = 1; # enable global warnings
|
|
17
17
|
|
|
@@ -6136,7 +6136,7 @@ with this command:
|
|
|
6136
6136
|
|
|
6137
6137
|
produces output like this:
|
|
6138
6138
|
|
|
6139
|
-
-- Generated by ExifTool 13.
|
|
6139
|
+
-- Generated by ExifTool 13.49 --
|
|
6140
6140
|
File: a.jpg - 2003:10:31 15:44:19
|
|
6141
6141
|
(f/5.6, 1/60s, ISO 100)
|
|
6142
6142
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -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.54';
|
|
69
69
|
|
|
70
70
|
sub LensIDConv($$$);
|
|
71
71
|
sub ProcessNikonAVI($$$);
|
|
@@ -8673,8 +8673,9 @@ my %nikonFocalConversions = (
|
|
|
8673
8673
|
},
|
|
8674
8674
|
0x90 => {
|
|
8675
8675
|
Name => 'MenuOffset',
|
|
8676
|
-
Condition => '$$self{Model} =~ /^NIKON Z6_3\b/i',
|
|
8676
|
+
Condition => '$$self{Model} =~ /^NIKON Z6_3\b/i and $$self{FirmwareVersion} and $$self{FirmwareVersion} lt "02.00"',
|
|
8677
8677
|
Format => 'int32u',
|
|
8678
|
+
AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
|
|
8678
8679
|
SubDirectory => {
|
|
8679
8680
|
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ6III',
|
|
8680
8681
|
Start => '$val',
|
|
@@ -9390,7 +9391,7 @@ my %nikonFocalConversions = (
|
|
|
9390
9391
|
%binaryDataAttrs,
|
|
9391
9392
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
9392
9393
|
NOTES => 'These tags are used by the Z6III.',
|
|
9393
|
-
DATAMEMBER => [ 360,
|
|
9394
|
+
DATAMEMBER => [ 360, 444, 492, 496, 724, 748, 832, 838, 852, 880, 904, 1050 ],
|
|
9394
9395
|
IS_SUBDIR => [ 1255 ],
|
|
9395
9396
|
360 => {
|
|
9396
9397
|
Name => 'SingleFrame', #0=> Single Frame 1=> one of the continuous modes
|
|
@@ -9400,7 +9401,6 @@ my %nikonFocalConversions = (
|
|
|
9400
9401
|
364 => {
|
|
9401
9402
|
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
|
9402
9403
|
PrintConv => \%highFrameRateZ9,
|
|
9403
|
-
Hook => '$varSize += 4 if $$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
|
|
9404
9404
|
},
|
|
9405
9405
|
444 => {
|
|
9406
9406
|
Name => 'MultipleExposureMode',
|
|
@@ -49,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
49
49
|
use Image::ExifTool::Exif;
|
|
50
50
|
use Image::ExifTool::GPS;
|
|
51
51
|
|
|
52
|
-
$VERSION = '3.
|
|
52
|
+
$VERSION = '3.28';
|
|
53
53
|
|
|
54
54
|
sub ProcessMOV($$;$);
|
|
55
55
|
sub ProcessKeys($$$);
|
|
@@ -972,6 +972,7 @@ my %userDefined = (
|
|
|
972
972
|
Binary => 1,
|
|
973
973
|
# note that this may be written and/or deleted, but can't currently be added back again
|
|
974
974
|
Writable => 'undef',
|
|
975
|
+
WriteLast => 1, # (must come after mdat according to https://developer.android.com/media/platform/motion-photo-format)
|
|
975
976
|
},
|
|
976
977
|
# '35AX'? - seen "AT" (Yada RoadCam Pro 4K dashcam)
|
|
977
978
|
cust => 'CustomInfo', # 70mai A810
|
|
@@ -23,7 +23,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
23
23
|
use Image::ExifTool::Exif;
|
|
24
24
|
use Image::ExifTool::JSON;
|
|
25
25
|
|
|
26
|
-
$VERSION = '1.
|
|
26
|
+
$VERSION = '1.61';
|
|
27
27
|
|
|
28
28
|
sub WriteSTMN($$$);
|
|
29
29
|
sub ProcessINFO($$$);
|
|
@@ -1007,7 +1007,23 @@ my %formatMinMax = (
|
|
|
1007
1007
|
# the Google trailer, but keep this copy named as EmbeddedVideoFile
|
|
1008
1008
|
# for backward compatibility and to avoid confusion due to extracting
|
|
1009
1009
|
# multiple tags with the same name
|
|
1010
|
-
'0x0a30' => {
|
|
1010
|
+
'0x0a30' => [{
|
|
1011
|
+
Name => 'EmbeddedVideoOffsetSize',
|
|
1012
|
+
# (have seen 12-byte data starting with "mpv2" that contains
|
|
1013
|
+
# absolute file offset and size of embedded video)
|
|
1014
|
+
Condition => 'length $$valPt == 12',
|
|
1015
|
+
ValueConv => 'join(" ", unpack("x4N2", $val))',
|
|
1016
|
+
},{ #forum7161
|
|
1017
|
+
Name => 'EmbeddedVideoFile',
|
|
1018
|
+
Groups => { 2 => 'Video' },
|
|
1019
|
+
Binary => 1,
|
|
1020
|
+
}],
|
|
1021
|
+
# 0x0a31-name - seen MotionPhoto_Version
|
|
1022
|
+
'0x0a33' => { # seen MotionPhoto_AutoPlay
|
|
1023
|
+
Name => 'MotionPhotoAutoPlayVideo',
|
|
1024
|
+
Groups => { 2 => 'Video' },
|
|
1025
|
+
Binary => 1,
|
|
1026
|
+
},
|
|
1011
1027
|
# 0x0a41-name - seen 'BackupRestore_Data' #forum16086
|
|
1012
1028
|
# 0x0aa1-name - seen 'MCC_Data'
|
|
1013
1029
|
# 0x0aa1 - seen '204','222','234','302','429'
|
|
@@ -9491,6 +9491,7 @@ my %tagExists = (
|
|
|
9491
9491
|
'embeddedpng' => 1,
|
|
9492
9492
|
'embeddedvideo' => 1,
|
|
9493
9493
|
'embeddedvideofile' => 1,
|
|
9494
|
+
'embeddedvideooffsetsize' => 1,
|
|
9494
9495
|
'embeddedvideotype' => 1,
|
|
9495
9496
|
'emergencysos' => 1,
|
|
9496
9497
|
'emphasis' => 1,
|
|
@@ -11266,6 +11267,7 @@ my %tagExists = (
|
|
|
11266
11267
|
'moresettings' => 1,
|
|
11267
11268
|
'moresettingsoffset' => 1,
|
|
11268
11269
|
'mosaicpattern' => 1,
|
|
11270
|
+
'motionphotoautoplayvideo' => 1,
|
|
11269
11271
|
'mouthmodify' => 1,
|
|
11270
11272
|
'movableinfo' => 1,
|
|
11271
11273
|
'moveobjects' => 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 29036 tags, with 18045 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
|
|
@@ -21956,9 +21956,11 @@ HEIC images from models such as the S10+.
|
|
|
21956
21956
|
EmbeddedImage no
|
|
21957
21957
|
EmbeddedImage2 no
|
|
21958
21958
|
EmbeddedImageName no
|
|
21959
|
+
EmbeddedVideoOffsetSize no
|
|
21959
21960
|
EmbeddedVideoFile no
|
|
21960
21961
|
EmbeddedVideoType no
|
|
21961
21962
|
MCCData no
|
|
21963
|
+
MotionPhotoAutoPlayVideo no
|
|
21962
21964
|
PEg_Info Samsung PEgInfo
|
|
21963
21965
|
ReEditData Samsung ReEditData
|
|
21964
21966
|
OriginalPathHashKey no
|
|
@@ -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 $configFile @configFiles $noConfig);
|
|
31
31
|
|
|
32
|
-
$VERSION = '13.
|
|
32
|
+
$VERSION = '13.49';
|
|
33
33
|
$RELEASE = '';
|
|
34
34
|
@ISA = qw(Exporter);
|
|
35
35
|
%EXPORT_TAGS = (
|
|
@@ -9229,12 +9229,22 @@ sub HandleTag($$$$;%)
|
|
|
9229
9229
|
my ($self, $tagTablePtr, $tag, $val, %parms) = @_;
|
|
9230
9230
|
my $verbose = $$self{OPTIONS}{Verbose};
|
|
9231
9231
|
my $pfmt = $parms{Format};
|
|
9232
|
-
my $
|
|
9232
|
+
my $valPt = defined $val ? \$val : undef;
|
|
9233
|
+
my $tagInfo = $parms{TagInfo} || $self->GetTagInfo($tagTablePtr, $tag, $valPt, $pfmt, $parms{Count});
|
|
9233
9234
|
my $dataPt = $parms{DataPt};
|
|
9234
9235
|
my ($subdir, $format, $noTagInfo, $rational, $binVal);
|
|
9235
9236
|
|
|
9236
9237
|
if ($tagInfo) {
|
|
9237
9238
|
$subdir = $$tagInfo{SubDirectory};
|
|
9239
|
+
} elsif (defined $tagInfo and $dataPt) {
|
|
9240
|
+
my $start = $parms{Start} || 0;
|
|
9241
|
+
my $size = $parms{Size};
|
|
9242
|
+
$size = length($$dataPt) - $start unless defined $size;
|
|
9243
|
+
return undef if $start + $size > length($$dataPt);
|
|
9244
|
+
$size = 1024 if $size > 1024; # max 1024 bytes available for the Condition
|
|
9245
|
+
my $dat = substr($$dataPt, $start, $size);
|
|
9246
|
+
$tagInfo = $self->GetTagInfo($tagTablePtr, $tag, \$dat, $pfmt, $parms{Count});
|
|
9247
|
+
return undef unless $tagInfo;
|
|
9238
9248
|
} elsif ($parms{MakeTagInfo}) {
|
|
9239
9249
|
$self->VPrint(0, $$self{INDENT}, "[adding $tag]\n") if $verbose;
|
|
9240
9250
|
my $name = $tag;
|
|
@@ -819,11 +819,11 @@ Reference units for writing GPSSpeed when geotagging:
|
|
|
819
819
|
|
|
820
820
|
Additional user-defined tags to write when geotagging from GPX or CSV files.
|
|
821
821
|
Format is 'I<TAG>=I<TOKEN>,...' where I<TAG> is an ExifTool tag name (with
|
|
822
|
-
optional group name), and I<TOKEN> is is the property name
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
822
|
+
optional group name), and I<TOKEN> is is the GPX property name or CSV column
|
|
823
|
+
name. eg) C<Location=desc> will write the Location tag based on the value
|
|
824
|
+
of 'desc' in the GPS log file. The tag value is taken from the nearest fix
|
|
825
|
+
in time. Multiple tags may be specified using comma separators. Default is
|
|
826
|
+
undef.
|
|
827
827
|
|
|
828
828
|
=item GlobalTimeShift
|
|
829
829
|
|
package/package.json
CHANGED