exiftool_vendored 11.79.0 → 11.80.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.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c5d7697ab503656431405bee98df6543291a04e
4
- data.tar.gz: c85b5373e9273395de8f0eedf0ec75813f197568
3
+ metadata.gz: 31e5c0c123db980d212dfb83add8dd6fa6134d00
4
+ data.tar.gz: 551490100ae182f14dc7096534861c60b0e5aed9
5
5
  SHA512:
6
- metadata.gz: 190d023af7d59ea2c41e2d43b2f252e8048bc3618d5e7e85e7bd0a6623ea9f2c85f0e010154a0bb49a2d9ca46acd4912415957e7eb88ed25011a9ae133bdad60
7
- data.tar.gz: 05f098d6d3265adf42ea4669a554d84b55b6d1213fce9dbe31fb9df174298323d668b9cf86df1245bacb2b6ea370d4fc1e2a50d22a0be4b967b194a26f3888e6
6
+ metadata.gz: b1ab651417aea07d82635d2152192dfb48f566d088fe36d717066ef5ab26e0d288501c7c331597f2d7fda28cd8fd513c42b2456cc59aca197917fa7790e1a643
7
+ data.tar.gz: 427b08f65545027e38e3078e50e8dab78adb4de80a3cd64094a0171556092ec9250b4049a5f6d6878664ba9bbf6582a78066e9a76eb399165b114fbd426de974
data/bin/Changes CHANGED
@@ -7,6 +7,19 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 11.70. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ Dec. 17, 2019 - Version 11.80
11
+
12
+ - Added a new Canon LensType
13
+ - Added a new Nikon Z LensID (thanks LibRaw)
14
+ - Added a few new Sony LensType values (thanks Jos Roost)
15
+ - Attempt to improve reliability of Samsung DepthMapWidth/Height decoding
16
+ - Updated a number of Canon-mount Tamron lens names to include the Tamron
17
+ model number
18
+ - Patched MOV/MP4 writer to allow a small amount of garbage at the end of a
19
+ file to be deleted when writing with the -m option
20
+ - Fixed bug where some Composite tags may not have taken priority over other
21
+ tags as they should have
22
+
10
23
  Dec. 12, 2019 - Version 11.79
11
24
 
12
25
  - Added support for AVIF files
data/bin/META.json CHANGED
@@ -47,6 +47,6 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "11.79",
50
+ "version" : "11.80",
51
51
  "x_serialization_backend" : "JSON::PP version 4.02"
52
52
  }
data/bin/META.yml CHANGED
@@ -28,5 +28,5 @@ recommends:
28
28
  Time::HiRes: '0'
29
29
  requires:
30
30
  perl: '5.004'
31
- version: '11.79'
31
+ version: '11.80'
32
32
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
data/bin/README CHANGED
@@ -105,8 +105,8 @@ your home directory, then you would type the following commands in a
105
105
  terminal window to extract and run ExifTool:
106
106
 
107
107
  cd ~/Desktop
108
- gzip -dc Image-ExifTool-11.79.tar.gz | tar -xf -
109
- cd Image-ExifTool-11.79
108
+ gzip -dc Image-ExifTool-11.80.tar.gz | tar -xf -
109
+ cd Image-ExifTool-11.80
110
110
  ./exiftool t/images/ExifTool.jpg
111
111
 
112
112
  Note: These commands extract meta information from one of the test images.
data/bin/exiftool CHANGED
@@ -10,7 +10,7 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '11.79';
13
+ my $version = '11.80';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -4481,15 +4481,15 @@ C<-1IPTC:City>). Use the B<-listg> option to list available group names by
4481
4481
  family.
4482
4482
 
4483
4483
  A special tag name of C<All> may be used to indicate all meta information
4484
- (ie. B<-All>). This is particularly useful when a group name is specified to
4485
- extract all information in a group (but beware that unless the B<-a> option
4486
- is also used, some tags in the group may be suppressed by same-named tags in
4487
- other groups). The wildcard characters C<?> and C<*> may be used in a tag
4488
- name to match any single character and zero or more characters respectively.
4489
- These may not be used in a group name, with the exception that a group name
4490
- of C<*> (or C<All>) may be used to extract all instances of a tag (as if
4491
- B<-a> was used). Note that arguments containing wildcards must be quoted on
4492
- the command line of most systems to prevent shell globbing.
4484
+ (ie. B<-All>). This is particularly useful when a group name is specified
4485
+ to extract all information in a group (but beware that unless the B<-a>
4486
+ option is also used, some tags in the group may be suppressed by same-named
4487
+ tags in other groups). The wildcard characters C<?> and C<*> may be used in
4488
+ a tag name to match any single character and zero or more characters
4489
+ respectively. These may not be used in a group name, with the exception that
4490
+ a group name of C<*> (or C<All>) may be used to extract all instances of a
4491
+ tag (as if B<-a> was used). Note that arguments containing wildcards must
4492
+ be quoted on the command line of most systems to prevent shell globbing.
4493
4493
 
4494
4494
  A C<#> may be appended to the tag name to disable the print conversion on a
4495
4495
  per-tag basis (see the B<-n> option). This may also be used when writing or
@@ -4745,6 +4745,16 @@ in a string. Another difference is that a minor warning is generated if a
4745
4745
  tag doesn't exist when interpolating its value in a string (with C<$>), but
4746
4746
  isn't when copying the tag directly.
4747
4747
 
4748
+ Finally, the behaviour is different when a destination tag or group of
4749
+ C<All> is used. When copying directly, a destination group and/or tag name
4750
+ of C<All> writes to the same family 1 group and/or tag name as the source.
4751
+ But when interpolated in a string, the identity of the source tags are lost
4752
+ and the value is written to all possible groups/tags. For example, the
4753
+ string form must be used in the following command since the intent is to set
4754
+ the value of all existing date/time tags from C<CreateDate>:
4755
+
4756
+ exiftool "-time:all<$createdate" -wm w FILE
4757
+
4748
4758
  =item B<-x> I<TAG> (B<-exclude>)
4749
4759
 
4750
4760
  Exclude the specified tag. There may be multiple B<-x> options. This has
@@ -5180,7 +5190,7 @@ with this command:
5180
5190
 
5181
5191
  produces output like this:
5182
5192
 
5183
- -- Generated by ExifTool 11.79 --
5193
+ -- Generated by ExifTool 11.80 --
5184
5194
  File: a.jpg - 2003:10:31 15:44:19
5185
5195
  (f/5.6, 1/60s, ISO 100)
5186
5196
  File: b.jpg - 2006:05:23 11:57:38
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
27
27
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
28
28
  %jpegMarker %specialTags %fileTypeLookup $testLen);
29
29
 
30
- $VERSION = '11.79';
30
+ $VERSION = '11.80';
31
31
  $RELEASE = '';
32
32
  @ISA = qw(Exporter);
33
33
  %EXPORT_TAGS = (
@@ -3401,7 +3401,8 @@ sub BuildCompositeTags($)
3401
3401
  my $compTable = GetTagTable('Image::ExifTool::Composite');
3402
3402
  my @tagList = sort keys %$compTable;
3403
3403
  my $rawValue = $$self{VALUE};
3404
- my (%tagsUsed, %cache, $allBuilt);
3404
+ my $compKeys = $$self{COMP_KEYS};
3405
+ my (%cache, $allBuilt);
3405
3406
 
3406
3407
  for (;;) {
3407
3408
  my (%notBuilt, $tag, @deferredTags);
@@ -3503,6 +3504,11 @@ COMPOSITE_TAG:
3503
3504
  if ($docNum) {
3504
3505
  if ($found) {
3505
3506
  $$self{DOC_NUM} = $docNum;
3507
+ # save pointers to all used tag keys
3508
+ foreach (keys %tagKey) {
3509
+ $$compKeys{$_} or $$compKeys{$_} = [ ];
3510
+ push @{$$compKeys{$tagKey{$_}}}, [ \%tagKey, $_ ];
3511
+ }
3506
3512
  $self->FoundTag($tagInfo, \%tagKey);
3507
3513
  delete $$self{DOC_NUM};
3508
3514
  }
@@ -3516,19 +3522,14 @@ COMPOSITE_TAG:
3516
3522
  # can be replaced (also eliminates keys with
3517
3523
  # instance numbers which can't be replaced either)
3518
3524
  next unless $compositeID{$tagKey{$_}};
3519
- my $keyRef = \$tagKey{$_};
3520
- $tagsUsed{$$keyRef} or $tagsUsed{$$keyRef} = [ ];
3521
- push @{$tagsUsed{$$keyRef}}, $keyRef;
3525
+ }
3526
+ # save pointers to all used tag keys
3527
+ foreach (keys %tagKey) {
3528
+ $$compKeys{$_} or $$compKeys{$_} = [ ];
3529
+ push @{$$compKeys{$tagKey{$_}}}, [ \%tagKey, $_ ];
3522
3530
  }
3523
3531
  # save reference to tag key lookup as value for Composite tag
3524
3532
  my $key = $self->FoundTag($tagInfo, \%tagKey);
3525
- # check to see if we just replaced one of the tag keys we Require'd
3526
- if (defined $key and $tagsUsed{$key}) {
3527
- foreach (@{$tagsUsed{$key}}) {
3528
- $$_ = $$self{MOVED_KEY}; # replace with new tag key
3529
- }
3530
- delete $tagsUsed{$key}; # can't be replaced again
3531
- }
3532
3533
  } elsif (not defined $found) {
3533
3534
  delete $notBuilt{$tagName}; # tag can't be built anyway
3534
3535
  }
@@ -3733,6 +3734,7 @@ sub Init($)
3733
3734
  $$self{WRITTEN} = { }; # list of tags written (selected tags only)
3734
3735
  $$self{FORCE_WRITE}= { }; # ForceWrite lookup (set from ForceWrite tag)
3735
3736
  $$self{FOUND_DIR} = { }; # hash of directory names found in file
3737
+ $$self{COMP_KEYS} = { }; # lookup for tag keys used in Composite tags
3736
3738
  $$self{PATH} = [ ]; # current subdirectory path in file when reading
3737
3739
  $$self{NUM_FOUND} = 0; # total number of tags found (incl. duplicates)
3738
3740
  $$self{CHANGED} = 0; # number of tags changed (writer only)
@@ -7867,10 +7869,12 @@ sub FoundTag($$$;@)
7867
7869
  } else {
7868
7870
  $priority = 1; # the normal default
7869
7871
  }
7870
- if ($priority >= $oldPriority and not $$self{DOC_NUM} and not $noListDel) {
7872
+ if ($priority >= $oldPriority and (not $$self{DOC_NUM} or
7873
+ ($$self{TAG_EXTRA}{$tag} and $$self{TAG_EXTRA}{$tag}{G3} and
7874
+ $$self{DOC_NUM} eq $$self{TAG_EXTRA}{$tag}{G3})) and not $noListDel)
7875
+ {
7871
7876
  # move existing tag out of the way since this tag is higher priority
7872
7877
  # (NOTE: any new members added here must also be added to DeleteTag())
7873
- $$self{MOVED_KEY} = $nextTag; # used in BuildCompositeTags()
7874
7878
  $$self{PRIORITY}{$nextTag} = $$self{PRIORITY}{$tag};
7875
7879
  $$valueHash{$nextTag} = $$valueHash{$tag};
7876
7880
  $$self{FILE_ORDER}{$nextTag} = $$self{FILE_ORDER}{$tag};
@@ -7884,6 +7888,12 @@ sub FoundTag($$$;@)
7884
7888
  delete $$self{BOTH}{$tag};
7885
7889
  # update tag key for list if necessary
7886
7890
  $$self{LIST_TAGS}{$oldInfo} = $nextTag if $$self{LIST_TAGS}{$oldInfo};
7891
+ # update this key if used in a Composite tag
7892
+ if ($$self{COMP_KEYS}{$tag}) {
7893
+ $$_[0]{$$_[1]} = $nextTag foreach @{$$self{COMP_KEYS}{$tag}};
7894
+ $$self{COMP_KEYS}{$nextTag} = $$self{COMP_KEYS}{$tag};
7895
+ delete $$self{COMP_KEYS}{$tag};
7896
+ }
7887
7897
  } else {
7888
7898
  $tag = $nextTag; # don't override the existing tag
7889
7899
  }
@@ -8338,7 +8348,8 @@ sub ProcessBinaryData($$$)
8338
8348
  # hook to allow format, etc to be set dynamically
8339
8349
  if (defined $$tagInfo{Hook}) {
8340
8350
  my $oldVarSize = $varSize;
8341
- #### eval Hook ($format, $varSize, $size)
8351
+ my $pos = $entry + $offset;
8352
+ #### eval Hook ($format, $varSize, $size, $dataPt, $pos)
8342
8353
  eval $$tagInfo{Hook};
8343
8354
  # save variable size data if required for writing (in case changed by Hook)
8344
8355
  if ($$dirInfo{VarFormatData}) {
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.29';
91
+ $VERSION = '4.30';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -184,7 +184,7 @@ $VERSION = '4.29';
184
184
  36 => 'Canon EF 38-76mm f/4.5-5.6', #32
185
185
  37 => 'Canon EF 35-80mm f/4-5.6 or Tamron Lens', #32
186
186
  37.1 => 'Tamron 70-200mm f/2.8 Di LD IF Macro', #PH
187
- 37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20', #38
187
+ 37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #38
188
188
  37.3 => 'Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]', #34
189
189
  37.4 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro', #forum2937
190
190
  38 => 'Canon EF 80-200mm f/4.5-5.6', #32
@@ -192,7 +192,7 @@ $VERSION = '4.29';
192
192
  40 => 'Canon EF 28-80mm f/3.5-5.6',
193
193
  41 => 'Canon EF 28-90mm f/4-5.6', #32
194
194
  42 => 'Canon EF 28-200mm f/3.5-5.6 or Tamron Lens', #32
195
- 42.1 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20', #15
195
+ 42.1 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #15
196
196
  43 => 'Canon EF 28-105mm f/4-5.6', #10
197
197
  44 => 'Canon EF 90-300mm f/4.5-5.6', #32
198
198
  45 => 'Canon EF-S 18-55mm f/3.5-5.6 [II]', #PH (same ID for version II, ref 20)
@@ -220,13 +220,13 @@ $VERSION = '4.29';
220
220
  112 => 'Sigma 28mm f/1.5 FF High-speed Prime or other Sigma Lens', #IB
221
221
  112.1 => 'Sigma 40mm f/1.5 FF High-speed Prime', #IB
222
222
  112.2 => 'Sigma 105mm f/1.5 FF High-speed Prime', #IB
223
- 117 => 'Tamron 35-150mm f/2.8-4.0 Di VC OSD or other Tamron Lens', #IB (A043)
224
- 117.1 => 'Tamron SP 35mm f/1.4 Di USD', #https://github.com/Exiv2/exiv2/issues/1064
223
+ 117 => 'Tamron 35-150mm f/2.8-4.0 Di VC OSD (A043) or other Tamron Lens', #IB
224
+ 117.1 => 'Tamron SP 35mm f/1.4 Di USD (F045)', #Exiv2#1064
225
225
  124 => 'Canon MP-E 65mm f/2.8 1-5x Macro Photo', #9
226
226
  125 => 'Canon TS-E 24mm f/3.5L',
227
227
  126 => 'Canon TS-E 45mm f/2.8', #15
228
228
  127 => 'Canon TS-E 90mm f/2.8 or Tamron Lens', #15
229
- 127.1 => 'Tamron 18-200mm f/3.5-6.3 Di II VC', #TomLachecki (model B018)
229
+ 127.1 => 'Tamron 18-200mm f/3.5-6.3 Di II VC (B018)', #TomLachecki
230
230
  129 => 'Canon EF 300mm f/2.8L USM', #32
231
231
  130 => 'Canon EF 50mm f/1.0L USM', #10/15
232
232
  131 => 'Canon EF 28-80mm f/2.8-4L USM or Sigma Lens', #32
@@ -244,7 +244,7 @@ $VERSION = '4.29';
244
244
  134 => 'Canon EF 600mm f/4L IS USM', #15
245
245
  135 => 'Canon EF 200mm f/1.8L USM',
246
246
  136 => 'Canon EF 300mm f/2.8L USM',
247
- 136.1 => 'Tamron SP 15-30mm f/2.8 Di VC USD', #TomLachecki (model A012)
247
+ 136.1 => 'Tamron SP 15-30mm f/2.8 Di VC USD (A012)', #TomLachecki
248
248
  137 => 'Canon EF 85mm f/1.2L USM or Sigma or Tamron Lens', #10
249
249
  137.1 => 'Sigma 18-50mm f/2.8-4.5 DC OS HSM', #PH
250
250
  137.2 => 'Sigma 50-200mm f/4-5.6 DC OS HSM', #PH
@@ -254,10 +254,10 @@ $VERSION = '4.29';
254
254
  137.6 => 'Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C', #forum2819 (Contemporary version has this ID - PH)
255
255
  137.7 => 'Sigma 17-50mm f/2.8 OS HSM', #47
256
256
  137.8 => 'Sigma 18-200mm f/3.5-6.3 DC OS HSM [II]', #PH
257
- 137.9 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD', #(model B008)forum3090
257
+ 137.9 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD (B008)', #forum3090
258
258
  '137.10' => 'Sigma 8-16mm f/4.5-5.6 DC HSM', #50-Zwielicht
259
- '137.11' => 'Tamron SP 17-50mm f/2.8 XR Di II VC', #50 (model B005)
260
- '137.12' => 'Tamron SP 60mm f/2 Macro Di II', #50 (model G005)
259
+ '137.11' => 'Tamron SP 17-50mm f/2.8 XR Di II VC (B005)', #50
260
+ '137.12' => 'Tamron SP 60mm f/2 Macro Di II (G005)', #50
261
261
  '137.13' => 'Sigma 10-20mm f/3.5 EX DC HSM', #Gerald Erdmann
262
262
  '137.14' => 'Tamron SP 24-70mm f/2.8 Di VC USD', #PH
263
263
  '137.15' => 'Sigma 18-35mm f/1.8 DC HSM', #David Monro
@@ -292,7 +292,7 @@ $VERSION = '4.29';
292
292
  153 => 'Canon EF 35-350mm f/3.5-5.6L USM or Sigma or Tamron Lens', #PH
293
293
  153.1 => 'Sigma 50-500mm f/4-6.3 APO HSM EX', #15
294
294
  153.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical [IF] Macro',
295
- 153.3 => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro Model A14', #15
295
+ 153.3 => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro (A14)', #15
296
296
  153.4 => 'Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro', #PH
297
297
  154 => 'Canon EF 20mm f/2.8 USM or Zeiss Lens', #15
298
298
  154.1 => 'Zeiss Milvus 21mm f/2.8', #IB
@@ -301,8 +301,8 @@ $VERSION = '4.29';
301
301
  155 => 'Canon EF 85mm f/1.8 USM or Sigma Lens',
302
302
  155.1 => 'Sigma 14mm f/1.8 DG HSM | A', #IB (A017)
303
303
  156 => 'Canon EF 28-105mm f/3.5-4.5 USM or Tamron Lens',
304
- 156.1 => 'Tamron SP 70-300mm f/4-5.6 Di VC USD', #PH (model A005)
305
- 156.2 => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF', #JR (Model 176D)
304
+ 156.1 => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)', #PH
305
+ 156.2 => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF (176D)', #JR
306
306
  160 => 'Canon EF 20-35mm f/3.5-4.5 USM or Tamron or Tokina Lens',
307
307
  160.1 => 'Tamron AF 19-35mm f/3.5-4.5', #44
308
308
  160.2 => 'Tokina AT-X 124 AF Pro DX 12-24mm f/4', #49
@@ -315,7 +315,7 @@ $VERSION = '4.29';
315
315
  161.3 => 'Sigma 24-60mm f/2.8 EX DG', #PH (http://www.lensrentals.com/blog/2012/08/canon-illumination-correction-and-third-party-lenses)
316
316
  161.4 => 'Tamron AF 17-50mm f/2.8 Di-II LD Aspherical', #40
317
317
  161.5 => 'Tamron 90mm f/2.8',
318
- 161.6 => 'Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF', #IB (A05)
318
+ 161.6 => 'Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF (A05)', #IB
319
319
  161.7 => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro', #IB/NJ
320
320
  161.8 => 'Tokina AT-X 24-70mm f/2.8 PRO FX (IF)', #IB
321
321
  162 => 'Canon EF 200mm f/2.8L USM', #32
@@ -419,10 +419,10 @@ $VERSION = '4.29';
419
419
  211 => 'Canon EF 28-200mm f/3.5-5.6 USM', #15
420
420
  212 => 'Canon EF 28-105mm f/4-5.6 USM', #15
421
421
  213 => 'Canon EF 90-300mm f/4.5-5.6 USM or Tamron Lens',
422
- 213.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD', #topic5565 (model A011)
423
- 213.2 => 'Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro', #PH (model B016)
424
- 213.3 => 'Tamron SP 35mm f/1.8 Di VC USD', #PH (model F012)
425
- 213.4 => 'Tamron SP 45mm f/1.8 Di VC USD', #PH (model F013)
422
+ 213.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD (A011)', #forum5565
423
+ 213.2 => 'Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro (B016)', #PH
424
+ 213.3 => 'Tamron SP 35mm f/1.8 Di VC USD (F012)', #PH
425
+ 213.4 => 'Tamron SP 45mm f/1.8 Di VC USD (F013)', #PH
426
426
  214 => 'Canon EF-S 18-55mm f/3.5-5.6 USM', #PH/34
427
427
  215 => 'Canon EF 55-200mm f/4.5-5.6 II USM',
428
428
  217 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD', #47
@@ -503,7 +503,7 @@ $VERSION = '4.29';
503
503
  493.1 => 'Canon EF 24-105mm f/4L IS USM', #PH (should recheck this)
504
504
  494 => 'Canon EF 600mm f/4L IS II USM', #PH
505
505
  495 => 'Canon EF 24-70mm f/2.8L II USM or Sigma Lens', #PH
506
- 495.1 => 'Sigma 24-70mm F2.8 DG OS HSM | A', #IB (017)
506
+ 495.1 => 'Sigma 24-70mm f/2.8 DG OS HSM | A', #IB (017)
507
507
  496 => 'Canon EF 200-400mm f/4L IS USM', #PH
508
508
  499 => 'Canon EF 200-400mm f/4L IS USM + 1.4x', #50
509
509
  502 => 'Canon EF 28mm f/2.8 IS USM or Tamron Lens', #PH
@@ -514,15 +514,16 @@ $VERSION = '4.29';
514
514
  506 => 'Canon EF 400mm f/4 DO IS II USM', #42
515
515
  507 => 'Canon EF 16-35mm f/4L IS USM', #42
516
516
  508 => 'Canon EF 11-24mm f/4L USM or Tamron Lens', #PH
517
- 508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD', #PH (B023)
518
- 624 => 'Sigma 70-200mm F2.8 DG OS HSM | S', #IB (018)
517
+ 508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)', #PH
518
+ 624 => 'Sigma 70-200mm f/2.8 DG OS HSM | S', #IB (018)
519
519
  747 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens', #JR
520
520
  747.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #50
521
521
  748 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens', #JR (1.4x Mk III)
522
522
  748.1 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 1.4x', #IB
523
523
  748.2 => 'Tamron 70-210mm f/4 Di VC USD (A034) + 2x', #IB
524
524
  749 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 2x', #IB
525
- 750 => 'Canon EF 35mm f/1.4L II USM', #42
525
+ 750 => 'Canon EF 35mm f/1.4L II USM or Tamron Lens', #42
526
+ 750.1 => 'Tamron SP 85mm f/1.8 Di VC USD (F016)', #Exiv2#1072
526
527
  751 => 'Canon EF 16-35mm f/2.8L III USM', #42
527
528
  752 => 'Canon EF 24-105mm f/4L IS II USM', #42
528
529
  753 => 'Canon EF 85mm f/1.4L IS USM', #42
@@ -61,7 +61,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
61
61
  use Image::ExifTool::Exif;
62
62
  use Image::ExifTool::GPS;
63
63
 
64
- $VERSION = '3.75';
64
+ $VERSION = '3.76';
65
65
 
66
66
  sub LensIDConv($$$);
67
67
  sub ProcessNikonAVI($$$);
@@ -4493,6 +4493,7 @@ my %nikonFocalConversions = (
4493
4493
  12 => 'Nikkor Z DX 50-250mm f/4.5-6.3 VR',
4494
4494
  13 => 'Nikkor Z 24-70mm f/2.8 S',
4495
4495
  14 => 'Nikkor Z 85mm f/1.8 S',
4496
+ 15 => 'Nikkor Z 24mm f/1.8 S', #IB
4496
4497
  },
4497
4498
  },
4498
4499
  0x36 => {
@@ -910,13 +910,15 @@ numerical, and generated automatically otherwise.
910
910
 
911
911
  Hook : [BinaryData tags only] Expression to be evaluated when
912
912
  extracting tag to allow dynamic Format, etc for BinaryData
913
- tags. May access $self, and $size (the full size of the
914
- binary data block), and assign a new value to $format to
915
- dynamically set the tag format, and/or increment $varSize to
916
- add a byte offset to subsequent tags. $varSize may be set to
917
- a large number to effectively abort processing of the
918
- directory after this tag. Must have corresponding DATAMEMBER
919
- entry in writable tables. Must not have Unknown set.
913
+ tags. May access $self, $size (the full size of the binary
914
+ data record), $dataPt (reference to the data block), and $pos
915
+ (position of this tag in the data block), and assign a new
916
+ value to $format to dynamically set the tag format, and/or
917
+ increment $varSize to add a byte offset to subsequent tags.
918
+ $varSize may be set to a large number to effectively abort
919
+ processing of the directory after this tag. Must have
920
+ corresponding DATAMEMBER entry in writable tables. Must not
921
+ have Unknown set.
920
922
 
921
923
  LargeTag : [BinaryData tags only] Flag to indicate that the data for this
922
924
  tag is large, and that it shouldn't be stored in the %val
@@ -22,7 +22,7 @@ use vars qw($VERSION %samsungLensTypes);
22
22
  use Image::ExifTool qw(:DataAccess :Utils);
23
23
  use Image::ExifTool::Exif;
24
24
 
25
- $VERSION = '1.47';
25
+ $VERSION = '1.48';
26
26
 
27
27
  sub WriteSTMN($$$);
28
28
  sub ProcessINFO($$$);
@@ -1001,35 +1001,34 @@ my %formatMinMax = (
1001
1001
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
1002
1002
  FIRST_ENTRY => 0,
1003
1003
  FORMAT => 'int32u',
1004
- NOTES => 'These tags tested only for DualShotVersion numbers 1, 4 and 5.',
1005
- 0 => {
1006
- Name => 'DualShotVersion',
1007
- Format => 'int16u',
1008
- RawConv => '$$self{DualShotVersion} = $val',
1009
- },
1010
- 9 => {
1011
- Name => 'DepthMapWidth',
1012
- Condition => '$$self{DualShotVersion} < 4',
1013
- },
1014
- 10 => {
1015
- Name => 'DepthMapHeight',
1016
- Condition => '$$self{DualShotVersion} < 4',
1004
+ # This is a pain, but the DepthMapWidth/Height move around in this record.
1005
+ # In all of my samples so far, the bytes "01 00 ff ff" precede these tags.
1006
+ # I have seen this byte sequence at offsets 32, 60, 64 and 68, so look for
1007
+ # it in bytes 32-95, and use its location to adjust the tag positions
1008
+ 8 => {
1009
+ Name => 'DualShotDummy',
1010
+ Format => 'undef[64]',
1011
+ Hidden => 1,
1012
+ Hook => q{
1013
+ if ($size >= 96) {
1014
+ my $tmp = substr($$dataPt, $pos, 64);
1015
+ if ($tmp =~ /\x01\0\xff\xff/g and not pos($tmp) % 4) {
1016
+ $$self{DepthMapTagPos} = pos($tmp);
1017
+ $varSize += $$self{DepthMapTagPos} - 32;
1018
+ }
1019
+ }
1020
+ },
1021
+ RawConv => 'undef', # not a real tag
1017
1022
  },
1018
1023
  16 => {
1019
1024
  Name => 'DepthMapWidth',
1020
- Condition => '$$self{DualShotVersion} == 4',
1025
+ Condition => '$$self{DepthMapTagPos}',
1026
+ Notes => 'index varies depending on model',
1021
1027
  },
1022
1028
  17 => {
1023
1029
  Name => 'DepthMapHeight',
1024
- Condition => '$$self{DualShotVersion} == 4',
1025
- },
1026
- 18 => {
1027
- Name => 'DepthMapWidth',
1028
- Condition => '$$self{DualShotVersion} > 4',
1029
- },
1030
- 19 => {
1031
- Name => 'DepthMapHeight',
1032
- Condition => '$$self{DualShotVersion} > 4',
1030
+ Condition => '$$self{DepthMapTagPos}',
1031
+ Notes => 'index varies depending on model',
1033
1032
  },
1034
1033
  );
1035
1034
 
@@ -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.18';
37
+ $VERSION = '3.19';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -176,6 +176,7 @@ sub PrintInvLensSpec($;$$);
176
176
  49457 => 'Tamron 28-75mm F2.8 Di III RXD', #JR (Model A036)
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
+ 49460 => 'Tamron 24mm F2.8 Di III OSD M1:2', #JR (Model F051)
179
180
 
180
181
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
181
182
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
@@ -215,6 +216,7 @@ sub PrintInvLensSpec($;$$);
215
216
  50999 => 'Voigtlander COLOR-SKOPAR 21mm F3.5 Aspherical', #IB
216
217
  51000 => 'Voigtlander NOKTON 50mm F1.2 Aspherical', #JR
217
218
  51001 => 'Voigtlander NOKTON 21mm F1.4 Aspherical', #JR
219
+ 51002 => 'Voigtlander APO-LANTHAR 50mm F2 Aspherical', #JR
218
220
 
219
221
  # lenses listed in the Sigma MC-11 list, but not yet seen:
220
222
  # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
@@ -225,6 +227,7 @@ sub PrintInvLensSpec($;$$);
225
227
  51505.1 => 'Samyang AF 35mm F2.8', #PH (also 32794)
226
228
  51507 => 'Samyang AF 35mm F1.4', #IB
227
229
  51508 => 'Samyang AF 45mm F1.8',
230
+ 51510 => 'Samyang AF 18mm F2.8', #JR
228
231
  );
229
232
 
230
233
  # ExposureProgram values (ref PH, mainly decoded from A200)
@@ -7422,7 +7422,6 @@ my %tagExists = (
7422
7422
  'dualcameraimage' => 1,
7423
7423
  'dualcameraimagename' => 1,
7424
7424
  'dualshotextra' => 1,
7425
- 'dualshotversion' => 1,
7426
7425
  'ducky' => 1,
7427
7426
  'duedate' => 1,
7428
7427
  'dummycolsleft' => 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 23197 tags, with 15164 unique tag names.
15
+ They contain a total of 23192 tags, with 15163 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
@@ -16054,17 +16054,10 @@ as the Galaxy S4 and Tab S.
16054
16054
 
16055
16055
  =head3 Samsung DualShotExtra Tags
16056
16056
 
16057
- These tags tested only for DualShotVersion numbers 1, 4 and 5.
16058
-
16059
16057
  Index4 Tag Name Writable
16060
16058
  ------ -------- --------
16061
- 0 DualShotVersion no
16062
- 9 DepthMapWidth no
16063
- 10 DepthMapHeight no
16064
16059
  16 DepthMapWidth no
16065
16060
  17 DepthMapHeight no
16066
- 18 DepthMapWidth no
16067
- 19 DepthMapHeight no
16068
16061
 
16069
16062
  =head3 Samsung SingleShotMeta Tags
16070
16063
 
@@ -82,6 +82,8 @@ my %qtFormat = (
82
82
  );
83
83
  my $undLang = 0x55c4; # numeric code for default ('und') language
84
84
 
85
+ my $maxReadLen = 100000000; # maximum size of atom to read into memory (100 MB)
86
+
85
87
  # boxes that may exist in an "empty" Meta box:
86
88
  my %emptyMeta = (
87
89
  hdlr => 'Handler', 'keys' => 'Keys', lang => 'Language', ctry => 'Country', free => 'Free',
@@ -849,17 +851,35 @@ sub WriteQuickTime($$$)
849
851
  }
850
852
 
851
853
  # read the atom data
854
+ my $got;
852
855
  if (not $size) {
853
856
  $buff = '';
854
- } elsif ($size > 100000000) {
855
- my $mb = int($size / 0x100000 + 0.5);
856
- $tag = PrintableTagID($tag,3);
857
- $et->Error("'${tag}' atom is too large for rewriting ($mb MB)");
858
- return $rtnVal;
859
- } elsif ($raf->Read($buff, $size) != $size) {
860
- $tag = PrintableTagID($tag,3);
861
- $et->Error("Truncated $tag atom");
862
- return $rtnVal;
857
+ $got = 0;
858
+ } else {
859
+ # read the atom data (but only first 64kB if data is huge)
860
+ $got = $raf->Read($buff, $size > $maxReadLen ? 0x10000 : $size);
861
+ }
862
+ if ($got != $size) {
863
+ # ignore up to 256 bytes of garbage at end of file
864
+ if ($got <= 256 and $size >= 1024 and $tag ne 'mdat') {
865
+ my $bytes = $got + length $hdr;
866
+ if ($$et{OPTIONS}{IgnoreMinorErrors}) {
867
+ $et->Warn("Deleted garbage at end of file ($bytes bytes)");
868
+ $buff = $hdr = '';
869
+ } else {
870
+ $et->Error("Possible garbage at end of file ($bytes bytes)", 1);
871
+ return $rtnVal;
872
+ }
873
+ } else {
874
+ $tag = PrintableTagID($tag,3);
875
+ if ($size > $maxReadLen and $got == 0x10000) {
876
+ my $mb = int($size / 0x100000 + 0.5);
877
+ $et->Error("'${tag}' atom is too large for rewriting ($mb MB)");
878
+ } else {
879
+ $et->Error("Truncated '${tag}' atom");
880
+ }
881
+ return $rtnVal;
882
+ }
863
883
  }
864
884
  # save the handler type for this track
865
885
  if ($tag eq 'hdlr' and length $buff >= 12) {
@@ -859,7 +859,7 @@ sub WriteXMP($$;$)
859
859
  #
860
860
  if (%{$$et{DEL_GROUP}} and (grep /^XMP-.+$/, keys %{$$et{DEL_GROUP}} or
861
861
  # (logic is a bit more complex for group names in exiftool XML files)
862
- grep m{^http://ns.exiftool.ca/}, values %nsUsed))
862
+ grep m{^http://ns.exiftool.(?:ca|org)/}, values %nsUsed))
863
863
  {
864
864
  my $del = $$et{DEL_GROUP};
865
865
  my $path;
@@ -870,7 +870,7 @@ sub WriteXMP($$;$)
870
870
  $ns = $stdXlatNS{$ns} if $stdXlatNS{$ns};
871
871
  my ($grp, @g);
872
872
  # no "XMP-" added to most groups in exiftool RDF/XML output file
873
- if ($nsUsed{$ns} and (@g = ($nsUsed{$ns} =~ m{^http://ns.exiftool.ca/(.*?)/(.*?)/}))) {
873
+ if ($nsUsed{$ns} and (@g = ($nsUsed{$ns} =~ m{^http://ns.exiftool.(?:ca|org)/(.*?)/(.*?)/}))) {
874
874
  if ($g[1] =~ /^\d/) {
875
875
  $grp = "XML-$g[0]";
876
876
  #(all XML-* groups stored as uppercase DEL_GROUP key)
@@ -1461,7 +1461,7 @@ sub WriteXMP($$;$)
1461
1461
  my @ns = sort keys %nsCur;
1462
1462
  $long[-2] .= "$nl$sp<$prop rdf:about='${about}'";
1463
1463
  # generate et:toolkit attribute if this is an exiftool RDF/XML output file
1464
- if (@ns and $nsCur{$ns[0]} =~ m{^http://ns.exiftool.ca/}) {
1464
+ if (@ns and $nsCur{$ns[0]} =~ m{^http://ns.exiftool.(?:ca|org)/}) {
1465
1465
  $long[-2] .= "\n$sp${sp}xmlns:et='http://ns.exiftool.ca/1.0/'" .
1466
1466
  " et:toolkit='Image::ExifTool $Image::ExifTool::VERSION'";
1467
1467
  }
@@ -186,7 +186,7 @@ my %xmpNS = (
186
186
  );
187
187
 
188
188
  # build reverse namespace lookup
189
- my %uri2ns;
189
+ my %uri2ns = ( 'http://ns.exiftool.org/1.0/' => 'et' ); # (allow exiftool.org as well as exiftool.ca)
190
190
  {
191
191
  my $ns;
192
192
  foreach $ns (keys %nsURI) {
@@ -3103,7 +3103,7 @@ NoLoop:
3103
3103
 
3104
3104
  # add tag Namespace entry for tags in variable-namespace tables
3105
3105
  $$tagInfo{Namespace} = $xns if $xns;
3106
- if ($$et{curURI}{$ns} and $$et{curURI}{$ns} =~ m{^http://ns.exiftool.ca/(.*?)/(.*?)/}) {
3106
+ if ($$et{curURI}{$ns} and $$et{curURI}{$ns} =~ m{^http://ns.exiftool.(?:ca|org)/(.*?)/(.*?)/}) {
3107
3107
  my %grps = ( 0 => $1, 1 => $2 );
3108
3108
  # apply a little magic to recover original group names
3109
3109
  # from this exiftool-written RDF/XML file
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 11.79
3
+ Version: 11.80
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.79.0')
4
+ VERSION = Gem::Version.new('11.80.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.79.0
4
+ version: 11.80.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: 2019-12-16 00:00:00.000000000 Z
12
+ date: 2019-12-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool