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