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 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 Pixel models
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
@@ -50,6 +50,6 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.48",
53
+ "version" : "13.49",
54
54
  "x_serialization_backend" : "JSON::PP version 4.06"
55
55
  }
package/bin/META.yml CHANGED
@@ -31,5 +31,5 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.48'
34
+ version: '13.49'
35
35
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
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.48.tar.gz | tar -xf -
115
- cd Image-ExifTool-13.48
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.48';
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.48 --
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.53';
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, 364, 444, 492, 496, 724, 748, 832, 838, 852, 880, 904, 1050 ],
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.27';
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.60';
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' => { Name => 'EmbeddedVideoFile', Groups => { 2 => 'Video' }, Binary => 1 }, #forum7161
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 29034 tags, with 18043 unique tag names.
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.48';
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 $tagInfo = $parms{TagInfo} || $self->GetTagInfo($tagTablePtr, $tag, \$val, $pfmt, $parms{Count});
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 in the GPX file
823
- or the column name in the CSV file. eg) C<Location=desc> will write the
824
- Location tag based on the value of 'desc' in the GPS log file. The tag
825
- value is taken from the nearest fix in time. Multiple tags may be specified
826
- using comma separators. Default is undef.
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
 
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.48
3
+ Version: 13.49
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exiftool-vendored.pl",
3
- "version": "13.48.0",
3
+ "version": "13.49.0",
4
4
  "description": "Vendored perl ExifTool for Node.js",
5
5
  "main": "./index.js",
6
6
  "homepage": "https://github.com/photostructure/exiftool-vendored.pl#readme",