exiftool_vendored 13.18.0 → 13.19.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 28442 tags, with 17565 unique tag names.
15
+ They contain a total of 28469 tags, with 17576 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
@@ -5752,14 +5752,14 @@ These tags belong to the ExifTool XMP-pdf family 1 group.
5752
5752
  =head3 XMP pdfx Tags
5753
5753
 
5754
5754
  PDF extension tags. This namespace is used to store application-defined PDF
5755
- information, so there are no pre-defined tags. User-defined tags must be
5756
- created to enable writing of XMP-pdfx information.
5755
+ information, so there are few pre-defined tags. User-defined tags must be
5756
+ created to enable writing of other XMP-pdfx information.
5757
5757
 
5758
5758
  These tags belong to the ExifTool XMP-pdfx family 1 group.
5759
5759
 
5760
5760
  Tag Name Writable
5761
5761
  -------- --------
5762
- [no tags known]
5762
+ SourceModified string
5763
5763
 
5764
5764
  =head3 XMP photoshop Tags
5765
5765
 
@@ -11520,48 +11520,68 @@ file name combined with the hierarchical protobuf field numbers.
11520
11520
 
11521
11521
  ExifTool currently extracts timed GPS plus a few other tags from DJI devices
11522
11522
  which use the following protocols: dvtm_AVATA2.proto (Avanta 2),
11523
- dvtm_ac203.proto (Osmo Action 4), dvtm_ac204.proto (Osmo Action 5) and
11524
- dvtm_wm265e.proto (Mavic 3).
11523
+ dvtm_ac203.proto (Osmo Action 4), dvtm_ac204.proto (Osmo Action 5),
11524
+ dvtm_wm265e.proto (Mavic 3), dvtm_pm320.proto (Matrice 30) and
11525
+ dvtm_pm320.proto (Mini 4 Pro).
11525
11526
 
11526
11527
  Note that with the protobuf format, numerical tags missing from the output
11527
11528
  for a given protocol should be considered to have the default value of 0.
11528
11529
 
11529
- Tag ID Tag Name Writable
11530
- ------ -------- --------
11531
- 'Protocol' Protocol no
11532
- 'dvtm_AVATA2_1-1-5' SerialNumber no
11533
- 'dvtm_AVATA2_1-1-10' Model no
11534
- 'dvtm_AVATA2_2-2-3-1' SerialNumber2 no
11535
- 'dvtm_AVATA2_2-3' FrameInfo DJI FrameInfo
11536
- 'dvtm_AVATA2_3-1-2' TimeStamp no
11537
- 'dvtm_AVATA2_3-4-4-1' GPSInfo DJI GPSInfo
11538
- 'dvtm_ac203_1-1-5' SerialNumber no
11539
- 'dvtm_ac203_1-1-10' Model no
11540
- 'dvtm_ac203_2-3' FrameInfo DJI FrameInfo
11541
- 'dvtm_ac203_3-4-2-1' GPSInfo DJI GPSInfo
11542
- 'dvtm_ac203_3-4-2-2' GPSAltitude no
11543
- 'dvtm_ac203_3-4-2-6-1' GPSDateTime no
11544
- 'dvtm_ac204_1-1-5' SerialNumber no
11545
- 'dvtm_ac204_1-1-10' Model no
11546
- 'dvtm_ac204_2-3' FrameInfo DJI FrameInfo
11547
- 'dvtm_ac204_3-4-2-1' GPSInfo DJI GPSInfo
11548
- 'dvtm_ac204_3-4-2-2' GPSAltitude no
11549
- 'dvtm_ac204_3-4-2-6-1' GPSDateTime no
11550
- 'dvtm_wm265e_1-1-5' SerialNumber no
11551
- 'dvtm_wm265e_1-1-10' Model no
11552
- 'dvtm_wm265e_2-2' FrameInfo DJI FrameInfo
11553
- 'dvtm_wm265e_3-2-2-1' ISO no
11554
- 'dvtm_wm265e_3-2-3-1' ShutterSpeed no
11555
- 'dvtm_wm265e_3-2-6-1' DigitalZoom no
11556
- 'dvtm_wm265e_3-3-3-1' DroneRoll no
11557
- 'dvtm_wm265e_3-3-3-2' DronePitch no
11558
- 'dvtm_wm265e_3-3-3-3' DroneYaw no
11559
- 'dvtm_wm265e_3-3-4-1' GPSInfo DJI GPSInfo
11560
- 'dvtm_wm265e_3-3-4-2' AbsoluteAltitude no
11561
- 'dvtm_wm265e_3-3-5-1' RelativeAltitude no
11562
- 'dvtm_wm265e_3-4-3-1' GimbalPitch no
11563
- 'dvtm_wm265e_3-4-3-2' GimbalRoll no
11564
- 'dvtm_wm265e_3-4-3-3' GimbalYaw no
11530
+ Tag ID Tag Name Writable
11531
+ ------ -------- --------
11532
+ 'Protocol' Protocol no
11533
+ 'dvtm_AVATA2_1-1-5' SerialNumber no
11534
+ 'dvtm_AVATA2_1-1-10' Model no
11535
+ 'dvtm_AVATA2_2-2-3-1' SerialNumber2 no
11536
+ 'dvtm_AVATA2_2-3' FrameInfo DJI FrameInfo
11537
+ 'dvtm_AVATA2_3-1-2' TimeStamp no
11538
+ 'dvtm_AVATA2_3-4-4-1' GPSInfo DJI GPSInfo
11539
+ 'dvtm_Mini4_Pro_1-1-5' SerialNumber no
11540
+ 'dvtm_Mini4_Pro_1-1-10' Model no
11541
+ 'dvtm_Mini4_Pro_2-3' FrameInfo DJI FrameInfo
11542
+ 'dvtm_Mini4_Pro_3-2-7-1' ISO no
11543
+ 'dvtm_Mini4_Pro_3-3-3' DroneInfo DJI DroneInfo
11544
+ 'dvtm_Mini4_Pro_3-3-4-1' GPSInfo DJI GPSInfo
11545
+ 'dvtm_Mini4_Pro_3-3-4-2' AbsoluteAltitude no
11546
+ 'dvtm_Mini4_Pro_3-3-5-1' RelativeAltitude no
11547
+ 'dvtm_Mini4_Pro_3-4-3' GimbalInfo DJI GimbalInfo
11548
+ 'dvtm_Mini4_Pro_3-2-10-1' ShutterSpeed no
11549
+ 'dvtm_Mini4_Pro_3-2-11-1' FNumber no
11550
+ 'dvtm_Mini4_Pro_3-2-32-1' ColorTemperature no
11551
+ 'dvtm_ac203_1-1-5' SerialNumber no
11552
+ 'dvtm_ac203_1-1-10' Model no
11553
+ 'dvtm_ac203_2-3' FrameInfo DJI FrameInfo
11554
+ 'dvtm_ac203_3-4-2-1' GPSInfo DJI GPSInfo
11555
+ 'dvtm_ac203_3-4-2-2' GPSAltitude no
11556
+ 'dvtm_ac203_3-4-2-6-1' GPSDateTime no
11557
+ 'dvtm_ac204_1-1-5' SerialNumber no
11558
+ 'dvtm_ac204_1-1-10' Model no
11559
+ 'dvtm_ac204_2-3' FrameInfo DJI FrameInfo
11560
+ 'dvtm_ac204_3-4-2-1' GPSInfo DJI GPSInfo
11561
+ 'dvtm_ac204_3-4-2-2' GPSAltitude no
11562
+ 'dvtm_ac204_3-4-2-6-1' GPSDateTime no
11563
+ 'dvtm_pm320_1-1-5' SerialNumber no
11564
+ 'dvtm_pm320_1-1-10' Model no
11565
+ 'dvtm_pm320_2-2' FrameInfo DJI FrameInfo
11566
+ 'dvtm_pm320_3-2-2-1' ISO no
11567
+ 'dvtm_pm320_3-2-3-1' ShutterSpeed no
11568
+ 'dvtm_pm320_3-2-6-1' DigitalZoom no
11569
+ 'dvtm_pm320_3-3-3' DroneInfo DJI DroneInfo
11570
+ 'dvtm_pm320_3-3-4-1' GPSInfo DJI GPSInfo
11571
+ 'dvtm_pm320_3-3-4-2' AbsoluteAltitude no
11572
+ 'dvtm_pm320_3-3-5-1' RelativeAltitude no
11573
+ 'dvtm_pm320_3-4-3' GimbalInfo DJI GimbalInfo
11574
+ 'dvtm_wm265e_1-1-5' SerialNumber no
11575
+ 'dvtm_wm265e_1-1-10' Model no
11576
+ 'dvtm_wm265e_2-2' FrameInfo DJI FrameInfo
11577
+ 'dvtm_wm265e_3-2-2-1' ISO no
11578
+ 'dvtm_wm265e_3-2-3-1' ShutterSpeed no
11579
+ 'dvtm_wm265e_3-2-6-1' DigitalZoom no
11580
+ 'dvtm_wm265e_3-3-3' DroneInfo DJI DroneInfo
11581
+ 'dvtm_wm265e_3-3-4-1' GPSInfo DJI GPSInfo
11582
+ 'dvtm_wm265e_3-3-4-2' AbsoluteAltitude no
11583
+ 'dvtm_wm265e_3-3-5-1' RelativeAltitude no
11584
+ 'dvtm_wm265e_3-4-3' GimbalInfo DJI GimbalInfo
11565
11585
 
11566
11586
  =head3 DJI FrameInfo Tags
11567
11587
 
@@ -11579,6 +11599,22 @@ for a given protocol should be considered to have the default value of 0.
11579
11599
  2 GPSLatitude no
11580
11600
  3 GPSLongitude no
11581
11601
 
11602
+ =head3 DJI DroneInfo Tags
11603
+
11604
+ Tag ID Tag Name Writable
11605
+ ------ -------- --------
11606
+ 1 DroneRoll no
11607
+ 2 DronePitch no
11608
+ 3 DroneYaw no
11609
+
11610
+ =head3 DJI GimbalInfo Tags
11611
+
11612
+ Tag ID Tag Name Writable
11613
+ ------ -------- --------
11614
+ 1 GimbalPitch no
11615
+ 2 GimbalRoll no
11616
+ 3 GimbalYaw no
11617
+
11582
11618
  =head2 FLIR Tags
11583
11619
 
11584
11620
  Information extracted from the maker notes of JPEG images from thermal
@@ -23109,7 +23145,8 @@ Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
23109
23145
 
23110
23146
  =head3 Sony Tag9050d Tags
23111
23147
 
23112
- Valid for ILCE-6700/7CM2/7CR/ZV-E1.
23148
+ Valid for ILCE-6700/7CM2/7CR/ZV-E1. Also for ILCE-1M2 when using mechanical
23149
+ shutter.
23113
23150
 
23114
23151
  Index1 Tag Name Writable
23115
23152
  ------ -------- --------
@@ -24019,24 +24056,43 @@ files, and will extract any existing tags even if they aren't listed below.
24019
24056
  These tags belong to the family 0 "PLIST" group, but family 1 group may be
24020
24057
  either "XML" or "PLIST" depending on whether the format is XML or binary.
24021
24058
 
24022
- Tag ID Tag Name Writable
24023
- ------ -------- --------
24059
+ Tag ID Tag Name Writable
24060
+ ------ -------- --------
24024
24061
  'MetaDataList//DateTimeOriginal'
24025
- DateTimeOriginal no
24026
- 'MetaDataList//Duration' Duration no
24062
+ DateTimeOriginal no
24063
+ 'MetaDataList//Duration' Duration no
24027
24064
  'MetaDataList//Geolocation/Latitude'
24028
- GPSLatitude no
24065
+ GPSLatitude no
24029
24066
  'MetaDataList//Geolocation/Longitude'
24030
- GPSLongitude no
24067
+ GPSLongitude no
24031
24068
  'MetaDataList//Geolocation/MapDatum'
24032
- GPSMapDatum no
24033
- 'XMLFileType' XMLFileType no
24034
- 'cast//name' Cast no+
24035
- 'codirectors//name' Codirectors no+
24036
- 'directors//name' Directors no+
24037
- 'producers//name' Producers no+
24038
- 'screenwriters//name' Screenwriters no+
24039
- 'studio//name' Studio no+
24069
+ GPSMapDatum no
24070
+ 'XMLFileType' XMLFileType no
24071
+ 'adjustmentData' AdjustmentData PLIST
24072
+ 'cast//name' Cast no+
24073
+ 'codirectors//name' Codirectors no+
24074
+ 'directors//name' Directors no+
24075
+ 'producers//name' Producers no+
24076
+ 'screenwriters//name' Screenwriters no+
24077
+ 'slowMotion/rate' SlowMotionRate no
24078
+ 'slowMotion/regions' SlowMotionRegions no
24079
+ 'slowMotion/regions/timeRange/duration/epoch'
24080
+ SlowMotionRegionsDurationEpoch no
24081
+ 'slowMotion/regions/timeRange/duration/flags'
24082
+ SlowMotionRegionsDurationFlags no
24083
+ 'slowMotion/regions/timeRange/duration/timescale'
24084
+ SlowMotionRegionsDurationTimeScale no
24085
+ 'slowMotion/regions/timeRange/duration/value'
24086
+ SlowMotionRegionsDurationValue no
24087
+ 'slowMotion/regions/timeRange/start/epoch'
24088
+ SlowMotionRegionsStartTimeEpoch no
24089
+ 'slowMotion/regions/timeRange/start/flags'
24090
+ SlowMotionRegionsStartTimeFlags no
24091
+ 'slowMotion/regions/timeRange/start/timescale'
24092
+ SlowMotionRegionsStartTimeScale no
24093
+ 'slowMotion/regions/timeRange/start/value'
24094
+ SlowMotionRegionsStartTimeValue no
24095
+ 'studio//name' Studio no+
24040
24096
 
24041
24097
  =head2 CanonRaw Tags
24042
24098
 
@@ -29547,6 +29603,7 @@ C<integer>, C<real>, C<boolean> or C<name> for PDF tags.
29547
29603
  'Keywords' Keywords string+
29548
29604
  'ModDate' ModifyDate date
29549
29605
  'Producer' Producer string
29606
+ 'SourceModified' SourceModified date
29550
29607
  'Subject' Subject string
29551
29608
  'Title' Title string
29552
29609
  'Trapped' Trapped string!
@@ -30324,7 +30381,7 @@ for the official QuickTime specification.
30324
30381
  The tags below are extracted from timed metadata in QuickTime and other
30325
30382
  formats of video files when the ExtractEmbedded option is used. Although
30326
30383
  most of these tags are combined into the single table below, ExifTool
30327
- currently reads 100 different types of timed GPS metadata from video files.
30384
+ currently reads 103 different types of timed GPS metadata from video files.
30328
30385
 
30329
30386
  Tag Name Writable
30330
30387
  -------- --------
@@ -891,7 +891,7 @@ sub WriteQuickTime($$$)
891
891
  $et or return 1; # allow dummy access to autoload this package
892
892
  my ($mdat, @mdat, @mdatEdit, $edit, $track, $outBuff, $co, $term, $delCount);
893
893
  my (%langTags, $canCreate, $delGrp, %boxPos, %didDir, $writeLast, $err, $atomCount);
894
- my ($tag, $lastTag, $lastPos, $errStr, $trailer, $buf2, $keysGrp, $keysPath);
894
+ my ($tag, $lastTag, $lastPos, $errStr, $trailer, $buf2, $keysGrp, $keysPath, $itemIndex);
895
895
  my $outfile = $$dirInfo{OutFile} || return 0;
896
896
  my $raf = $$dirInfo{RAF}; # (will be null for lower-level atoms)
897
897
  my $dataPt = $$dirInfo{DataPt}; # (will be null for top-level atoms)
@@ -982,8 +982,25 @@ sub WriteQuickTime($$$)
982
982
  $atomCount = $$tagTablePtr{VARS}{ATOM_COUNT} if $$tagTablePtr{VARS};
983
983
 
984
984
  $tag = $lastTag = '';
985
-
985
+ $itemIndex = 0 if $dirName eq 'ItemPropertyContainer';
986
+
987
+ # read ahead to parse item property associations if this is 'iprp' ItemProperties
988
+ # (necessary to determine which properties belong to primary item in HEIC file)
989
+ if ($dirName eq 'ItemProperties') {
990
+ my $pos = $raf->Tell();
991
+ for (;;) {
992
+ $raf->Read($buf2, 8) == 8 or last;
993
+ my $size = Get32u(\$buf2, 0) - 8; # (atom size without 8-byte header)
994
+ $tag = substr($buf2, 4, 4);
995
+ last if $size < 0;
996
+ $tag eq 'ipma' or $raf->Seek($size, 1), next;
997
+ ParseItemPropAssoc($buf2,$et) if $raf->Read($buf2,$size) == $size;
998
+ last;
999
+ }
1000
+ $raf->Seek($pos);
1001
+ }
986
1002
  for (;;) { # loop through all atoms at this level
1003
+ ++$itemIndex if defined $itemIndex;
987
1004
  $lastPos = $raf->Tell();
988
1005
  # stop processing if we reached a known trailer
989
1006
  if ($trailer and $lastPos >= $$trailer[1]) {
@@ -1186,6 +1203,32 @@ sub WriteQuickTime($$$)
1186
1203
  }
1187
1204
  undef $tagInfo if $tagInfo and $$tagInfo{AddedUnknown};
1188
1205
 
1206
+ # don't write this tag unless associated with the primary item
1207
+ # (Note: This relies on iinf and dimg coming before iprp)
1208
+ if (defined $itemIndex and $$et{ItemInfo}) {
1209
+ my $items = $$et{ItemInfo};
1210
+ my ($id, $prop, $isPrimary);
1211
+ my $primary = $$et{PrimaryItem} || 0;
1212
+ my $pitem = $$items{$primary} || { };
1213
+ $$pitem{RefersTo} or $$pitem{RefersTo} = { };
1214
+ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
1215
+ next unless $$items{$id}{Association};
1216
+ my $item = $$items{$id};
1217
+ foreach $prop (@{$$item{Association}}) {
1218
+ next unless $prop == $itemIndex;
1219
+ my $dont = $dontInherit{$tag} || 0;
1220
+ last unless $id == $primary or (not $dont and
1221
+ ($$item{RefersTo} and $$item{RefersTo}{$primary})) or
1222
+ # special case to assume this property belongs to the primary
1223
+ # image if it belongs to an item referred to by the primary
1224
+ ($dont != 1 and $$pitem{RefersTo}{$id});
1225
+ $isPrimary = 1;
1226
+ last ItemID2;
1227
+ }
1228
+ }
1229
+ undef $tagInfo unless $isPrimary;
1230
+ }
1231
+
1189
1232
  if ($tagInfo and (not defined $$tagInfo{Writable} or $$tagInfo{Writable})) {
1190
1233
  my $subdir = $$tagInfo{SubDirectory};
1191
1234
  my ($newData, @chunkOffset);
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.70';
53
+ $VERSION = '3.71';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -1247,8 +1247,22 @@ my %sPantryItem = (
1247
1247
  NAMESPACE => 'pdfx',
1248
1248
  NOTES => q{
1249
1249
  PDF extension tags. This namespace is used to store application-defined PDF
1250
- information, so there are no pre-defined tags. User-defined tags must be
1251
- created to enable writing of XMP-pdfx information.
1250
+ information, so there are few pre-defined tags. User-defined tags must be
1251
+ created to enable writing of other XMP-pdfx information.
1252
+ },
1253
+ SourceModified => {
1254
+ Name => 'SourceModified',
1255
+ Groups => { 2 => 'Time' },
1256
+ Shift => 'Time',
1257
+ ValueConv => 'require Image::ExifTool::PDF; $val = Image::ExifTool::PDF::ConvertPDFDate($val)',
1258
+ ValueConvInv => q{
1259
+ require Image::ExifTool::PDF;
1260
+ $val = Image::ExifTool::PDF::WritePDFValue($self,$val,"date");
1261
+ $val =~ tr/()//d;
1262
+ return $val;
1263
+ },
1264
+ PrintConv => '$self->ConvertDateTime($val)',
1265
+ PrintConvInv => '$self->InverseDateTime($val)',
1252
1266
  },
1253
1267
  );
1254
1268
 
@@ -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.18';
32
+ $VERSION = '13.19';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -9223,10 +9223,11 @@ sub HandleTag($$$$;%)
9223
9223
  }
9224
9224
  $self->Warn("RawConv $tag: " . CleanWarning()) if $evalWarning;
9225
9225
  return undef unless defined $val;
9226
- $val = $$val if ref $val eq 'SCALAR';
9227
- $dataPt = \$val;
9226
+ $dataPt = ref $val eq 'SCALAR' ? $val : \$val;
9228
9227
  $subdirStart = 0;
9229
- $subdirLen = length $val;
9228
+ $subdirLen = length $$dataPt;
9229
+ } elsif (not $dataPt) {
9230
+ $dataPt = ref $val eq 'SCALAR' ? $val : \$val;
9230
9231
  }
9231
9232
  if ($$subdir{Start}) {
9232
9233
  my $valuePtr = 0;
@@ -9235,7 +9236,6 @@ sub HandleTag($$$$;%)
9235
9236
  $subdirStart += $off;
9236
9237
  $subdirLen -= $off;
9237
9238
  }
9238
- $dataPt or $dataPt = \$val;
9239
9239
  # process subdirectory information
9240
9240
  my %dirInfo = (
9241
9241
  DirName => $$subdir{DirName} || $$tagInfo{Name},
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.18
3
+ Version: 13.19
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('13.18.0')
4
+ VERSION = Gem::Version.new('13.19.0')
5
5
  end
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.18.0
4
+ version: 13.19.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-02-04 00:00:00.000000000 Z
12
+ date: 2025-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool