exiftool_vendored 11.84.0 → 11.86.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
34
34
  use Image::ExifTool::Exif;
35
35
  use Image::ExifTool::Minolta;
36
36
 
37
- $VERSION = '3.19';
37
+ $VERSION = '3.21';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -177,6 +177,7 @@ sub PrintInvLensSpec($;$$);
177
177
  49458 => 'Tamron 17-28mm F2.8 Di III RXD', #JR (Model A046)
178
178
  49459 => 'Tamron 35mm F2.8 Di III OSD M1:2', #IB (Model F053)
179
179
  49460 => 'Tamron 24mm F2.8 Di III OSD M1:2', #JR (Model F051)
180
+ 49461 => 'Tamron 20mm F2.8 Di III OSD M1:2', #JR (Model F050)
180
181
 
181
182
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
182
183
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
@@ -205,6 +206,7 @@ sub PrintInvLensSpec($;$$);
205
206
  50514 => 'Sigma 45mm F2.8 DG DN | C', #IB/JR (019)
206
207
  50515 => 'Sigma 35mm F1.2 DG DN | A', #IB/JR (019)
207
208
  50516 => 'Sigma 14-24mm F2.8 DG DN | A', #IB/JR (019)
209
+ 50517 => 'Sigma 24-70mm F2.8 DG DN | A', #JR (019)
208
210
 
209
211
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
210
212
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
@@ -228,6 +230,7 @@ sub PrintInvLensSpec($;$$);
228
230
  51507 => 'Samyang AF 35mm F1.4', #IB
229
231
  51508 => 'Samyang AF 45mm F1.8',
230
232
  51510 => 'Samyang AF 18mm F2.8', #JR
233
+
231
234
  );
232
235
 
233
236
  # ExposureProgram values (ref PH, mainly decoded from A200)
@@ -1929,7 +1929,12 @@ my %tagLookup = (
1929
1929
  'dehaze' => { 461 => 'Dehaze', 463 => 'Dehaze' },
1930
1930
  'deletedimagecount' => { 219 => 0xa6, 228 => 0x6e },
1931
1931
  'deprecatedon' => { 459 => 'deprecatedOn' },
1932
+ 'depthfar' => { 116 => 0xc7eb },
1933
+ 'depthformat' => { 116 => 0xc7e9 },
1932
1934
  'depthimage' => { 446 => 'Data' },
1935
+ 'depthmeasuretype' => { 116 => 0xc7ed },
1936
+ 'depthnear' => { 116 => 0xc7ea },
1937
+ 'depthunits' => { 116 => 0xc7ec },
1933
1938
  'derivedfrom' => { 488 => 'DerivedFrom' },
1934
1939
  'derivedfromalternatepaths' => { 488 => [\'DerivedFrom','DerivedFromAlternatePaths'] },
1935
1940
  'derivedfromdocumentid' => { 488 => [\'DerivedFrom','DerivedFromDocumentID'] },
@@ -2170,6 +2175,7 @@ my %tagLookup = (
2170
2175
  'engineer' => { 487 => 'engineer' },
2171
2176
  'enhancedarktones' => { 252 => 0x8 },
2172
2177
  'enhancement' => { 109 => 0x16, 110 => 0x3016 },
2178
+ 'enhanceparams' => { 116 => 0xc7ee },
2173
2179
  'enhancer' => { 287 => 0x300 },
2174
2180
  'enhancervalues' => { 287 => 0x301 },
2175
2181
  'envelopenumber' => { 129 => 0x28 },
@@ -8233,6 +8239,7 @@ my %tagExists = (
8233
8239
  'insertmode' => 1,
8234
8240
  'insetnwpixelx' => 1,
8235
8241
  'insetnwpixely' => 1,
8242
+ 'insta360' => 1,
8236
8243
  'institution' => 1,
8237
8244
  'instructionset' => 1,
8238
8245
  'insv' => 1,
@@ -8927,6 +8934,8 @@ my %tagExists = (
8927
8934
  'moveobjects' => 1,
8928
8935
  'movie' => 1,
8929
8936
  'moviefragment' => 1,
8937
+ 'moviefragmentheader' => 1,
8938
+ 'moviefragmentsequence' => 1,
8930
8939
  'movieheader' => 1,
8931
8940
  'movieheaderversion' => 1,
8932
8941
  'movieinfo' => 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 23217 tags, with 15179 unique tag names.
15
+ They contain a total of 23225 tags, with 15187 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
@@ -148,8 +148,9 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
148
148
  PhotoMechanic PhotoMechanic
149
149
  MIE MIE
150
150
  Samsung Samsung Trailer
151
- PreviewImage yes
152
151
  EmbeddedVideo no
152
+ Insta360 no
153
+ PreviewImage yes
153
154
 
154
155
  =head3 JPEG AVI1 Tags
155
156
 
@@ -900,6 +901,12 @@ for the official EXIF 2.32 specification.
900
901
  0xc7aa CacheVersion SubIFD2 int32u!
901
902
  0xc7b5 DefaultUserCrop SubIFD rational64u[4]!
902
903
  0xc7d5 NikonNEFInfo - Nikon NEFInfo
904
+ 0xc7e9 DepthFormat IFD0 int16u!
905
+ 0xc7ea DepthNear IFD0 rational64u!
906
+ 0xc7eb DepthFar IFD0 rational64u!
907
+ 0xc7ec DepthUnits IFD0 int16u!
908
+ 0xc7ed DepthMeasureType IFD0 int16u!
909
+ 0xc7ee EnhanceParams IFD0 string!
903
910
  0xea1c Padding ExifIFD undef!
904
911
  0xea1d OffsetSchema ExifIFD int32s!
905
912
  0xfde8 OwnerName ExifIFD string/
@@ -24650,13 +24657,13 @@ language code to write the default language without deleting alternate
24650
24657
  languages. Note that "eng" is treated as a default language when reading,
24651
24658
  but not when writing.
24652
24659
 
24653
- According to the specification, many QuickTime date/time tags should be
24654
- stored as UTC. Unfortunately, digital cameras often store local time values
24655
- instead (presumably because they don't know the time zone). For this
24656
- reason, by default ExifTool does not assume a time zone for these values.
24657
- However, if the QuickTimeUTC API option is set, then ExifTool will assume
24658
- these values are properly stored as UTC, and will convert them to local time
24659
- when extracting.
24660
+ According to the specification, integer-format QuickTime date/time tags
24661
+ should be stored as UTC. Unfortunately, digital cameras often store local
24662
+ time values instead (presumably because they don't know the time zone). For
24663
+ this reason, by default ExifTool does not assume a time zone for these
24664
+ values. However, if the QuickTimeUTC API option is set, then ExifTool will
24665
+ assume these values are properly stored as UTC, and will convert them to
24666
+ local time when extracting.
24660
24667
 
24661
24668
  See
24662
24669
  L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
@@ -24725,7 +24732,9 @@ Tags found in Pittasoft Blackvue dashcam "free" data.
24725
24732
  =head3 QuickTime Stream Tags
24726
24733
 
24727
24734
  Timed metadata extracted from QuickTime media data and some AVI videos when
24728
- the ExtractEmbedded option is used.
24735
+ the ExtractEmbedded option is used. Although most of these tags are
24736
+ combined into the single table below, ExifTool currently reads 37 different
24737
+ formats of timed GPS metadata from video files.
24729
24738
 
24730
24739
  Tag Name Writable
24731
24740
  -------- --------
@@ -25279,8 +25288,15 @@ defined in this table.
25279
25288
  Tag ID Tag Name Writable
25280
25289
  ------ -------- --------
25281
25290
  'meta' Meta QuickTime Meta
25291
+ 'mfhd' MovieFragmentHeader QuickTime MovieFragHdr
25282
25292
  'traf' TrackFragment QuickTime TrackFragment
25283
25293
 
25294
+ =head3 QuickTime MovieFragHdr Tags
25295
+
25296
+ Index4 Tag Name Writable
25297
+ ------ -------- --------
25298
+ 1 MovieFragmentSequence no
25299
+
25284
25300
  =head3 QuickTime TrackFragment Tags
25285
25301
 
25286
25302
  Tag ID Tag Name Writable
@@ -138,6 +138,10 @@ sub WritePhotoshop($$$)
138
138
  unless ($tagInfo) {
139
139
  # process subdirectory anyway if writable (except EXIF to avoid recursion)
140
140
  # --> this allows IPTC to be processed if found here in TIFF images
141
+ # (note that I have seen a case of XMP in PSD-EXIFInfo-IFD0, and the EXIF
142
+ # exclusion means that this won't be written unless an EXIF tag is
143
+ # specifically edited, see forum10768 -- maybe this should be changed
144
+ # if it happens again)
141
145
  my $tmpInfo = $et->GetTagInfo($tagTablePtr, $tagID);
142
146
  if ($tmpInfo and $$tmpInfo{SubDirectory} and
143
147
  $tmpInfo->{SubDirectory}->{TagTable} ne 'Image::ExifTool::Exif::Main')
@@ -449,7 +449,7 @@ sub WriteKeys($$$)
449
449
  sub WriteItemInfo($$$)
450
450
  {
451
451
  my ($et, $dirInfo, $outfile) = @_;
452
- my $boxPos = $$dirInfo{BoxPos};
452
+ my $boxPos = $$dirInfo{BoxPos}; # hash of [length,position] for each box
453
453
  my $raf = $$et{RAF};
454
454
  my $items = $$et{ItemInfo};
455
455
  my (%did, @mdatEdit, $name);
@@ -549,8 +549,11 @@ sub WriteItemInfo($$$)
549
549
  my ($countNew, %add, %usedID);
550
550
  foreach $name ('EXIF','XMP') {
551
551
  next if $did{$name} or not $$et{ADD_DIRS}{$name};
552
- unless ($$boxPos{iinf} and $$boxPos{iref} and $$boxPos{iloc}) {
553
- $et->Warn("Can't create $name. Missing expected box");
552
+ my @missing;
553
+ $$boxPos{$_} or push @missing, $_ foreach qw(iinf iloc);
554
+ if (@missing) {
555
+ my $str = @missing > 1 ? join(' and ', @missing) . ' boxes' : "@missing box";
556
+ $et->Warn("Can't create $name. Missing expected $str");
554
557
  last;
555
558
  }
556
559
  my $primary = $$et{PrimaryItem};
@@ -577,6 +580,14 @@ sub WriteItemInfo($$$)
577
580
  my $changed = $$et{CHANGED};
578
581
  my $newVal = $et->WriteDirectory(\%dirInfo, $subTable, $proc);
579
582
  if (defined $newVal and $changed ne $$et{CHANGED}) {
583
+ my $irefVer;
584
+ if ($$boxPos{iref}) {
585
+ $irefVer = Get8u($outfile, $$boxPos{iref}[0] + 8);
586
+ } else {
587
+ # create iref box after end of iinf box (and save version in boxPos list)
588
+ $irefVer = ($primary > 0xffff ? 1 : 0);
589
+ $$boxPos{iref} = [ $$boxPos{iinf}[0] + $$boxPos{iinf}[1], 0, $irefVer ];
590
+ }
580
591
  $newVal = $hdr . $newVal if length $hdr;
581
592
  # add new infe to iinf
582
593
  $add{iinf} = $add{iref} = $add{iloc} = '' unless defined $add{iinf};
@@ -598,7 +609,6 @@ sub WriteItemInfo($$$)
598
609
  $add{iinf} .= pack('Na4CCCCNn', $n, 'infe', 3, 0, 0, 1, $id, 0) . $type . $mime;
599
610
  }
600
611
  # add new cdsc to iref
601
- my $irefVer = Get8u($outfile, $$boxPos{iref}[0] + 8);
602
612
  if ($irefVer) {
603
613
  $add{iref} .= pack('Na4NnN', 18, 'cdsc', $id, 1, $primary);
604
614
  } else {
@@ -655,15 +665,22 @@ sub WriteItemInfo($$$)
655
665
  foreach $tag (sort { $$boxPos{$a}[0] <=> $$boxPos{$b}[0] } keys %$boxPos) {
656
666
  next unless $add{$tag};
657
667
  my $pos = $$boxPos{$tag}[0] + $added;
658
- my $n = Get32u($outfile, $pos);
659
- Set32u($n + length($add{$tag}), $outfile, $pos); # increase box size
668
+ unless ($$boxPos{$tag}[1]) {
669
+ $tag eq 'iref' or $et->Error('Internal error adding iref box'), last;
670
+ # create new iref box
671
+ $add{$tag} = Set32u(12 + length $add{$tag}) . $tag .
672
+ Set8u($$boxPos{$tag}[2]) . "\0\0\0" . $add{$tag};
673
+ } else {
674
+ my $n = Get32u($outfile, $pos);
675
+ Set32u($n + length($add{$tag}), $outfile, $pos); # increase box size
676
+ }
660
677
  if ($tag eq 'iinf') {
661
678
  my $iinfVer = Get8u($outfile, $pos + 8);
662
679
  if ($iinfVer == 0) {
663
- $n = Get16u($outfile, $pos + 12);
680
+ my $n = Get16u($outfile, $pos + 12);
664
681
  Set16u($n + $countNew, $outfile, $pos + 12); # incr count
665
682
  } else {
666
- $n = Get32u($outfile, $pos + 12);
683
+ my $n = Get32u($outfile, $pos + 12);
667
684
  Set32u($n + $countNew, $outfile, $pos + 12); # incr count
668
685
  }
669
686
  } elsif ($tag eq 'iref') {
@@ -671,10 +688,10 @@ sub WriteItemInfo($$$)
671
688
  } elsif ($tag eq 'iloc') {
672
689
  my $ilocVer = Get8u($outfile, $pos + 8);
673
690
  if ($ilocVer < 2) {
674
- $n = Get16u($outfile, $pos + 14);
691
+ my $n = Get16u($outfile, $pos + 14);
675
692
  Set16u($n + $countNew, $outfile, $pos + 14); # incr count
676
693
  } else {
677
- $n = Get32u($outfile, $pos + 14);
694
+ my $n = Get32u($outfile, $pos + 14);
678
695
  Set32u($n + $countNew, $outfile, $pos + 14); # incr count
679
696
  }
680
697
  # must also update pointer locations in this box
@@ -135,8 +135,8 @@ my %rawType = (
135
135
  my @delGroups = qw(
136
136
  Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11
137
137
  APP12 APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
138
- FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 InteropIFD IPTC ItemList
139
- JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD MIE MPF NikonCapture PDF
138
+ FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC
139
+ ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD MIE MPF NikonCapture PDF
140
140
  PDF-update PhotoMechanic Photoshop PNG PNG-pHYs PrintIM QuickTime RMETA RSRC
141
141
  SubIFD Trailer UserData XML XML-* XMP XMP-*
142
142
  );
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 11.84
3
+ Version: 11.86
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('11.84.0')
4
+ VERSION = Gem::Version.new('11.86.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: 11.84.0
4
+ version: 11.86.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: 2020-01-10 00:00:00.000000000 Z
12
+ date: 2020-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool
@@ -190,6 +190,7 @@ files:
190
190
  - bin/arg_files/xmp2gps.args
191
191
  - bin/arg_files/xmp2iptc.args
192
192
  - bin/arg_files/xmp2pdf.args
193
+ - bin/config_files/acdsee.config
193
194
  - bin/config_files/age.config
194
195
  - bin/config_files/bibble.config
195
196
  - bin/config_files/convert_regions.config