exiftool_vendored 11.98.0 → 11.99.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
  SHA256:
3
- metadata.gz: dd206618b02e9bdc096dbaf8dc497c6bce6a27e5782b42db0a308ba043752c49
4
- data.tar.gz: 783ecd5157f77b7f56d7c85a3ddcb86aebc170e6e937ebfacfa7141a90f74cd8
3
+ metadata.gz: 01eeff66f9e45f6f726a4e44141317b4eac1becc2ae9eb079f4a9aad0b05291f
4
+ data.tar.gz: 4a26cd2011a6c4d1fb4aeb9b696b190d5fb83d8d61bd35cd24a90b2c00e7480a
5
5
  SHA512:
6
- metadata.gz: c4e18ca046d054a9a06289921a7ebd70801a64f3ac133de19156969077a1618841926104c9eef4cfdcd57ead9aed13ef2b1cd53b16a7b204fd6bba4342b633ef
7
- data.tar.gz: 397e4a867443f593c3d73be6e549e9b0df9256ef551cad3ff39ef335bada1a47bf63fcdc58435672f39873418d74ecfec7ecc385008da471cd6cb34904f5c26a
6
+ metadata.gz: 8d2f03f98474b2af36bf5fa1b1163228c61727d374273fddf69209443d72c6fd952a4ae82350897573fab244e79d12151de5e4a6648bd30296b59b0c98203930
7
+ data.tar.gz: dbe7f778f5a9d034303b738bd3258d05bdccbeb0ba44fb897095d987952c4461580b092be2e3a1bd71ac0b546a97bd901293f2adc10904ad2aaad3d28e483a47
@@ -7,6 +7,20 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 11.85. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ May 11, 2020 - Version 11.99
11
+
12
+ - Added a new Nikon LensID (thanks Mykyta Kozlov)
13
+ - Added a new Canon LensType
14
+ - Added a newn PentaxModelID
15
+ - Decode a few new QuickTime tags
16
+ - Decode new ID3 Grouping tag
17
+ - Decode a few more MinoltaRaw tags (thanks LibRaw)
18
+ - Fixed runtime warning which could occur when reading corrupted RTF files
19
+ - Fixed another potential pitfall in M2TS Duration calculation
20
+ - Fixed problem extracting some unknown QuickTime:Keys tags
21
+ - Fixed problem decoding Nikon D850 orientation tags
22
+ - Fixed bug where TIFF image data may not be padded to an even number of bytes
23
+
10
24
  May 1, 2020 - Version 11.98
11
25
 
12
26
  - Added a new Nikon LensID (thanks Warren Hatch)
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "11.98"
50
+ "version" : "11.99"
51
51
  }
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 11.98
31
+ version: 11.99
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.98.tar.gz | tar -xf -
109
- cd Image-ExifTool-11.98
108
+ gzip -dc Image-ExifTool-11.99.tar.gz | tar -xf -
109
+ cd Image-ExifTool-11.99
110
110
  ./exiftool t/images/ExifTool.jpg
111
111
 
112
112
  Note: These commands extract meta information from one of the test images.
@@ -10,7 +10,7 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '11.98';
13
+ my $version = '11.99';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -5286,7 +5286,7 @@ with this command:
5286
5286
 
5287
5287
  produces output like this:
5288
5288
 
5289
- -- Generated by ExifTool 11.98 --
5289
+ -- Generated by ExifTool 11.99 --
5290
5290
  File: a.jpg - 2003:10:31 15:44:19
5291
5291
  (f/5.6, 1/60s, ISO 100)
5292
5292
  File: b.jpg - 2006:05:23 11:57:38
@@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
28
28
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
30
30
 
31
- $VERSION = '11.98';
31
+ $VERSION = '11.99';
32
32
  $RELEASE = '';
33
33
  @ISA = qw(Exporter);
34
34
  %EXPORT_TAGS = (
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.37';
91
+ $VERSION = '4.38';
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)
@@ -474,8 +474,9 @@ $VERSION = '4.37';
474
474
  253.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 2x', #PH (NC)
475
475
  # 253.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367
476
476
  254 => 'Canon EF 100mm f/2.8L Macro IS USM', #42
477
- 255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Sigma Lens', #50
477
+ 255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Lens', #50
478
478
  255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50
479
+ 255.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD', #exiv issue 1202 (A009)
479
480
  368 => 'Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens', #IB (A018)
480
481
  368.1 => 'Sigma 20mm f/1.4 DG HSM | A', #50 (newer firmware)
481
482
  368.2 => 'Sigma 50mm f/1.4 DG HSM | A', #50
@@ -16,7 +16,7 @@ use strict;
16
16
  use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
 
19
- $VERSION = '1.53';
19
+ $VERSION = '1.54';
20
20
 
21
21
  sub ProcessID3v2($$$);
22
22
  sub ProcessPrivate($$$);
@@ -613,6 +613,9 @@ my %id3v2_common = (
613
613
  Name => 'OlympusDSS',
614
614
  SubDirectory => { TagTable => 'Image::ExifTool::Olympus::DSS' },
615
615
  },
616
+ GRP1 => 'Grouping',
617
+ MVNM => 'MovementName', # (NC)
618
+ MVIN => 'MovementNumber', # (NC)
616
619
  );
617
620
 
618
621
  # Tags for ID3v2.3 (http://www.id3.org/id3v2.3.0)
@@ -1318,6 +1321,8 @@ sub ProcessID3v2($$$)
1318
1321
  } elsif ($$tagInfo{Format} or $$tagInfo{SubDirectory}) {
1319
1322
  $et->HandleTag($tagTablePtr, $id, undef, DataPt => \$val);
1320
1323
  next;
1324
+ } elsif ($id eq 'GRP1' or $id eq 'MVNM' or $id eq 'MVIN') {
1325
+ $val =~ s/(^\0+|\0+$)//g; # (PH guess)
1321
1326
  } elsif (not $$tagInfo{Binary}) {
1322
1327
  $et->Warn("Don't know how to handle $id frame");
1323
1328
  next;
@@ -31,7 +31,7 @@ use strict;
31
31
  use vars qw($VERSION);
32
32
  use Image::ExifTool qw(:DataAccess :Utils);
33
33
 
34
- $VERSION = '1.17';
34
+ $VERSION = '1.18';
35
35
 
36
36
  # program map table "stream_type" lookup (ref 6/1)
37
37
  my %streamType = (
@@ -359,23 +359,26 @@ sub ProcessM2TS($$)
359
359
  last unless defined $startTime;
360
360
  # reconfigure to seek backwards for last PCR
361
361
  unless (defined $backScan) {
362
- $et->Options('FastScan') and undef($endTime), last;
363
- $verbose and print "[Starting backscan for last PCR]\n";
364
- $fwdTime = $endTime;
362
+ my $saveTime = $endTime;
365
363
  undef $endTime;
364
+ last if $et->Options('FastScan');
365
+ $verbose and print $out "[Starting backscan for last PCR]\n";
366
366
  # remember how far we got when reading forward through the file
367
367
  my $fwdPos = $raf->Tell() - length($buff) + $pEnd;
368
- # determine the number of whole packets in the file
368
+ # determine the position of the last packet relative to the EOF
369
369
  $raf->Seek(0, 2) or last;
370
370
  my $fsize = $raf->Tell();
371
- my $nPack = int($fsize / $pLen);
372
- $backScan = $nPack * $pLen - $fsize;
371
+ $backScan = int($fsize / $pLen) * $pLen - $fsize;
373
372
  # set limit on how far back we will go
374
373
  $maxBack = $fwdPos - $fsize;
375
374
  # scan back a maximum of 512k (have seen last PCR at -276k)
376
- my $nMax = int(512000 / $pLen); # max packets to scan
377
- my $nRem = int(-$maxBack / $pLen); # packets remaining in file
378
- $maxBack = $backScan - $nMax * $pLen if $nRem > $nMax;
375
+ my $nMax = int(512000 / $pLen); # max packets to backscan
376
+ if ($nMax < int(-$maxBack / $pLen)) {
377
+ $maxBack = $backScan - $nMax * $pLen;
378
+ } else {
379
+ # use this time if none found in all remaining packets
380
+ $fwdTime = $saveTime;
381
+ }
379
382
  $pEnd = 0;
380
383
  }
381
384
  }
@@ -387,15 +390,12 @@ sub ProcessM2TS($$)
387
390
  if ($pos < 0) {
388
391
  # read another buffer from end of file
389
392
  last if $backScan <= $maxBack;
390
- my $readThis = $readSize;
391
- $backScan -= $readSize;
392
- if ($backScan < $maxBack) {
393
- $readThis = $readSize - ($maxBack - $backScan);
394
- $backScan = $maxBack;
395
- }
393
+ my $buffLen = $backScan - $maxBack;
394
+ $buffLen = $readSize if $buffLen > $readSize;
395
+ $backScan -= $buffLen;
396
396
  $raf->Seek($backScan, 2) or last;
397
- $raf->Read($buff, $readThis) == $readThis or last;
398
- $pos = $pEnd = $readThis - $pLen;
397
+ $raf->Read($buff, $buffLen) == $buffLen or last;
398
+ $pos = $pEnd = $buffLen - $pLen;
399
399
  }
400
400
  } else {
401
401
  $pos = $pEnd;
@@ -17,7 +17,7 @@ use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
  use Image::ExifTool::Minolta;
19
19
 
20
- $VERSION = '1.15';
20
+ $VERSION = '1.16';
21
21
 
22
22
  sub ProcessMRW($$;$);
23
23
  sub WriteMRW($$;$);
@@ -59,10 +59,12 @@ sub WriteMRW($$;$);
59
59
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
60
60
  WRITABLE => 1,
61
61
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
62
+ DATAMEMBER => [ 0 ],
62
63
  FIRST_ENTRY => 0,
63
64
  0 => {
64
65
  Name => 'FirmwareID',
65
66
  Format => 'string[8]',
67
+ RawConv => '$$self{MinoltaPRD} = 1 if $$self{FILE_TYPE} eq "MRW"; $val', # used in decoding RIF info
66
68
  },
67
69
  8 => {
68
70
  Name => 'SensorHeight',
@@ -214,38 +216,37 @@ sub WriteMRW($$;$);
214
216
  PrintConv => \%Image::ExifTool::Minolta::sonyColorMode,
215
217
  },
216
218
  ],
217
- # NOTE: some of these WB_RBLevels may apply to other models too...
219
+ # NOTE: WB_RBLevels up to Custom also apply to Minolta models which write PRD info (ref IB)
218
220
  8 => { #3
219
221
  Name => 'WB_RBLevelsTungsten',
220
- Condition => '$$self{Model} eq "DSLR-A100"',
222
+ Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
221
223
  Format => 'int16u[2]',
222
224
  Notes => 'these WB_RBLevels currently decoded only for the Sony A100',
223
225
  },
224
226
  12 => { #3
225
227
  Name => 'WB_RBLevelsDaylight',
226
- Condition => '$$self{Model} eq "DSLR-A100"',
228
+ Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
227
229
  Format => 'int16u[2]',
228
230
  },
229
231
  16 => { #3
230
232
  Name => 'WB_RBLevelsCloudy',
231
- Condition => '$$self{Model} eq "DSLR-A100"',
233
+ Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
232
234
  Format => 'int16u[2]',
233
235
  },
234
236
  20 => { #3
235
237
  Name => 'WB_RBLevelsCoolWhiteF',
236
- Condition => '$$self{Model} eq "DSLR-A100"',
238
+ Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
237
239
  Format => 'int16u[2]',
238
240
  },
239
241
  24 => { #3
240
242
  Name => 'WB_RBLevelsFlash',
241
- Condition => '$$self{Model} eq "DSLR-A100"',
243
+ Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
242
244
  Format => 'int16u[2]',
243
245
  },
244
246
  28 => { #3
245
- Name => 'WB_RBLevelsUnknown',
246
- Condition => '$$self{Model} eq "DSLR-A100"',
247
+ Name => 'WB_RBLevelsCustom', #IB
248
+ Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
247
249
  Format => 'int16u[2]',
248
- Unknown => 1,
249
250
  },
250
251
  32 => { #3
251
252
  Name => 'WB_RBLevelsShade',
@@ -62,7 +62,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
62
62
  use Image::ExifTool::Exif;
63
63
  use Image::ExifTool::GPS;
64
64
 
65
- $VERSION = '3.82';
65
+ $VERSION = '3.83';
66
66
 
67
67
  sub LensIDConv($$$);
68
68
  sub ProcessNikonAVI($$$);
@@ -653,6 +653,7 @@ sub GetAFPointGrid($$;$);
653
653
  '00 40 64 64 2C 2C 00 00' => 'Voigtlander APO-Lanthar 90mm F3.5 SLII Close Focus',
654
654
  #
655
655
  '00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
656
+ '00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
656
657
  '00 48 32 32 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/21 ZF.2',
657
658
  '00 54 38 38 18 18 00 00' => 'Carl Zeiss Distagon T* 2/25 ZF.2',
658
659
  '00 54 3C 3C 18 18 00 00' => 'Carl Zeiss Distagon T* 2/28 ZF.2',
@@ -1694,7 +1695,8 @@ my %binaryDataAttrs = (
1694
1695
  SubDirectory => {
1695
1696
  TagTable => 'Image::ExifTool::Nikon::ShotInfoD850',
1696
1697
  DecryptStart => 4,
1697
- DecryptLen => 0x2f07,
1698
+ DecryptLen => 0x2efb + 12,
1699
+ DecryptMore => 'Get32u(\$data, 0xa0) + 12',
1698
1700
  ByteOrder => 'LittleEndian',
1699
1701
  },
1700
1702
  },
@@ -6250,7 +6252,7 @@ my %nikonFocalConversions = (
6250
6252
  # 3 => 'Rotate 180',
6251
6253
  # },
6252
6254
  #},
6253
- 0x2ea4 => {
6255
+ 0x2ea4 => { #PH
6254
6256
  Name => 'NikonMeteringMode',
6255
6257
  Condition => '$$self{Model} =~ /\bD500\b/', # (didn't seem to work for D5, but I need more samples)
6256
6258
  Notes => 'D500 only',
@@ -6627,7 +6629,7 @@ my %nikonFocalConversions = (
6627
6629
  WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
6628
6630
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
6629
6631
  VARS => { ID_LABEL => 'Index' },
6630
- DATAMEMBER => [ 0x04, 0x58, 0x0fbf ],
6632
+ DATAMEMBER => [ 0x04, 0x58, 0xa0, 0x0fbf, 0x2efa ],
6631
6633
  IS_SUBDIR => [ 0x1038 ],
6632
6634
  WRITABLE => 1,
6633
6635
  FIRST_ENTRY => 0,
@@ -6653,6 +6655,14 @@ my %nikonFocalConversions = (
6653
6655
  Hidden => 1,
6654
6656
  RawConv => '$$self{CustomSettingsOffset} = $val || 0x10000000; undef',
6655
6657
  },
6658
+ 0xa0 => {
6659
+ Name => 'OrientationOffset',
6660
+ DataMember => 'OrientationOffset',
6661
+ Format => 'int32u',
6662
+ Writable => 0,
6663
+ Hidden => 1,
6664
+ RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef',
6665
+ },
6656
6666
  0x0791 => {
6657
6667
  Name => 'PhotoShootingMenuBankImageArea',
6658
6668
  Mask => 0x07,
@@ -6692,6 +6702,14 @@ my %nikonFocalConversions = (
6692
6702
  TagTable => 'Image::ExifTool::NikonCustom::SettingsD850',
6693
6703
  },
6694
6704
  },
6705
+ ### 0x2efb - OrientationInfo start (D850 firmware 1.01a)
6706
+ 0x2efa => {
6707
+ Name => 'Hook1',
6708
+ Hidden => 1,
6709
+ RawConv => 'undef',
6710
+ # account for variable location of OrientationInfo data
6711
+ Hook => '$varSize = $$self{OrientationOffset} - 0x2efb',
6712
+ },
6695
6713
  0x2efb => { #28
6696
6714
  Name => 'RollAngle',
6697
6715
  Format => 'fixed32u',
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
58
58
  use Image::ExifTool::GPS;
59
59
  use Image::ExifTool::HP;
60
60
 
61
- $VERSION = '3.31';
61
+ $VERSION = '3.32';
62
62
 
63
63
  sub CryptShutterCount($$);
64
64
  sub PrintFilter($$$);
@@ -546,6 +546,7 @@ my %pentaxModelID = (
546
546
  0x13222 => 'K-70', #29 (Ricoh)
547
547
  0x1322c => 'KP', #29 (Ricoh)
548
548
  0x13240 => 'K-1 Mark II', # (Ricoh)
549
+ 0x13290 => 'WG-70', # (Ricoh)
549
550
  );
550
551
 
551
552
  # Pentax city codes - (PH, Optio WP)
@@ -46,7 +46,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
46
46
  use Image::ExifTool::Exif;
47
47
  use Image::ExifTool::GPS;
48
48
 
49
- $VERSION = '2.48';
49
+ $VERSION = '2.49';
50
50
 
51
51
  sub ProcessMOV($$;$);
52
52
  sub ProcessKeys($$$);
@@ -5908,6 +5908,24 @@ my %eeBox = (
5908
5908
  PrintConv => \&PrintGPSCoordinates,
5909
5909
  PrintConvInv => \&PrintInvGPSCoordinates,
5910
5910
  },
5911
+ # the following tags written by iTunes 12.5.1.21
5912
+ # (ref https://www.ventismedia.com/mantis/view.php?id=14963
5913
+ # https://community.mp3tag.de/t/x-mp4-new-tag-problems/19488)
5914
+ "\xa9wrk" => 'Work', #PH
5915
+ "\xa9mvn" => 'MovementName', #PH
5916
+ "\xa9mvi" => { #PH
5917
+ Name => 'MovementNumber',
5918
+ Format => 'int16s',
5919
+ },
5920
+ "\xa9mvc" => { #PH
5921
+ Name => 'MovementCount',
5922
+ Format => 'int16s',
5923
+ },
5924
+ shwm => { #PH
5925
+ Name => 'ShowMovement',
5926
+ Format => 'int8s',
5927
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
5928
+ },
5911
5929
  );
5912
5930
 
5913
5931
  # tag decoded from timed face records
@@ -6127,6 +6145,21 @@ my %eeBox = (
6127
6145
  'detected-face.roll-angle' => { Name => 'DetectedFaceRollAngle', Writable => 0 },
6128
6146
  # (fiel)com.apple.quicktime.detected-face.yaw-angle (dtyp=23, float)
6129
6147
  'detected-face.yaw-angle' => { Name => 'DetectedFaceYawAngle', Writable => 0 },
6148
+ #
6149
+ # seen in Apple ProRes RAW file
6150
+ #
6151
+ # (mdta)com.apple.proapps.manufacturer (eg. "Sony")
6152
+ # (mdta)com.apple.proapps.exif.{Exif}.FNumber (float, eg. 1.0)
6153
+ # (mdta)org.smpte.rdd18.lens.irisfnumber (eg. "F1.0")
6154
+ # (mdta)com.apple.proapps.exif.{Exif}.ShutterSpeedValue (float, eg. 1.006)
6155
+ # (mdta)org.smpte.rdd18.camera.shutterspeed_angle (eg. "179.2deg")
6156
+ # (mdta)org.smpte.rdd18.camera.neutraldensityfilterwheelsetting (eg. "ND1")
6157
+ # (mdta)org.smpte.rdd18.camera.whitebalance (eg. "4300K")
6158
+ # (mdta)com.apple.proapps.exif.{Exif}.ExposureIndex (float, eg. 4000)
6159
+ # (mdta)org.smpte.rdd18.camera.isosensitivity (eg. "4000")
6160
+ # (mdta)com.apple.proapps.image.{TIFF}.Make (eg. "Atmos")
6161
+ # (mdta)com.apple.proapps.image.{TIFF}.Model (eg. "ShogunInferno")
6162
+ # (mdta)com.apple.proapps.image.{TIFF}.Software (eg. "9.0")
6130
6163
  );
6131
6164
 
6132
6165
  # iTunes info ('----') atoms
@@ -6734,13 +6767,28 @@ my %eeBox = (
6734
6767
  Name => 'SchemeInfo',
6735
6768
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::SchemeInfo' },
6736
6769
  },
6770
+ enda => {
6771
+ Name => 'Endianness',
6772
+ Format => 'int16u',
6773
+ PrintConv => {
6774
+ 0 => 'Big-endian (Motorola, MM)',
6775
+ 1 => 'Little-endian (Intel, II)',
6776
+ },
6777
+ },
6737
6778
  # skcr
6738
- # enda
6739
6779
  );
6740
6780
 
6741
6781
  %Image::ExifTool::QuickTime::Wave = (
6742
6782
  PROCESS_PROC => \&ProcessMOV,
6743
6783
  frma => 'PurchaseFileFormat',
6784
+ enda => {
6785
+ Name => 'Endianness',
6786
+ Format => 'int16u',
6787
+ PrintConv => {
6788
+ 0 => 'Big-endian (Motorola, MM)',
6789
+ 1 => 'Little-endian (Intel, II)',
6790
+ },
6791
+ },
6744
6792
  # "ms\0\x11" - 20 bytes
6745
6793
  );
6746
6794
 
@@ -8564,9 +8612,10 @@ sub ProcessKeys($$$)
8564
8612
  $$newInfo{Groups} = $groups ? { %$groups } : { };
8565
8613
  $$newInfo{Groups}{$_} or $$newInfo{Groups}{$_} = $$tagTablePtr{GROUPS}{$_} foreach 0..2;
8566
8614
  $$newInfo{Groups}{1} = 'Keys';
8567
- } elsif ($tag =~ /^[-\w. ]+$/) {
8615
+ } elsif ($tag =~ /^[-\w. ]+$/ or $tag =~ /\w{4}/) {
8568
8616
  # create info for tags with reasonable id's
8569
8617
  my $name = ucfirst $tag;
8618
+ $name =~ tr/-0-9a-zA-Z_. //dc;
8570
8619
  $name =~ s/[. ]+(.?)/\U$1/g;
8571
8620
  $name =~ s/_([a-z])/_\U$1/g;
8572
8621
  $name =~ s/([a-z])_([A-Z])/$1$2/g;
@@ -8587,7 +8636,7 @@ sub ProcessKeys($$$)
8587
8636
  if ($newInfo) {
8588
8637
  AddTagToTable($itemList, $id, $newInfo);
8589
8638
  $msg or $msg = '';
8590
- $out and print $out "$$et{INDENT}Added ItemList Tag $id = $tag$msg\n";
8639
+ $out and print $out "$$et{INDENT}Added ItemList Tag $id = ($ns) $tag$msg\n";
8591
8640
  }
8592
8641
  $pos += $len;
8593
8642
  ++$index;
@@ -1083,7 +1083,7 @@ The contained structure field information hashes are similar to tag information
1083
1083
  hashes, except that only the following elements are used:
1084
1084
 
1085
1085
  Raw/Value/PrintConv (and their inverses), TagID (optional), Groups, List,
1086
- Writable, Struct, Namespace, LangCode, PropertyPath, Notes.
1086
+ Writable, Struct, Namespace, FlatName, LangCode, PropertyPath, Notes.
1087
1087
 
1088
1088
  But note that for PropertyPath, only the element of the path corresponding to
1089
1089
  the specific field is stored (including any necessary list properties). The
@@ -15,7 +15,7 @@ use strict;
15
15
  use vars qw($VERSION);
16
16
  use Image::ExifTool qw(:DataAccess :Utils);
17
17
 
18
- $VERSION = '1.03';
18
+ $VERSION = '1.04';
19
19
 
20
20
  sub ProcessUserProps($$$);
21
21
 
@@ -181,12 +181,17 @@ sub UnescapeRTF($$$)
181
181
  if ($1 eq 'uc') { # \ucN
182
182
  $skip = $2;
183
183
  } elsif ($1 eq 'u') { # \uN
184
- require Image::ExifTool::Charset;
185
- $rtnVal .= Image::ExifTool::Charset::Recompose($et, [$2]);
186
- if ($skip) {
187
- # must skip the specified number of characters
188
- # (not simple because RTF control words count as a single character)
189
- last unless $val =~ /\G([^\\]|\\([a-zA-Z]+)(-?\d+)? ?|\\'.{2}|\\.){$skip}/g;
184
+ if ($2 < 0) {
185
+ $et->WarnOnce('Invalid Unicode character(s) in text');
186
+ $rtnVal .= '?';
187
+ } else {
188
+ require Image::ExifTool::Charset;
189
+ $rtnVal .= Image::ExifTool::Charset::Recompose($et, [$2]);
190
+ if ($skip) {
191
+ # must skip the specified number of characters
192
+ # (not simple because RTF control words count as a single character)
193
+ last unless $val =~ /\G([^\\]|\\([a-zA-Z]+)(-?\d+)? ?|\\'.{2}|\\.){$skip}/g;
194
+ }
190
195
  }
191
196
  } elsif ($rtfEntity{$1}) {
192
197
  require Image::ExifTool::Charset;
@@ -226,13 +226,15 @@ sub PrintInvLensSpec($;$$);
226
226
  # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
227
227
  # 504xx => 'Sigma 30mm F1.4 DC HSM | A + MC-11', # (013)
228
228
 
229
+ # Note: For Samyang lenses, the "FE" designation isn't written to
230
+ # EXIF:LensModel, so it isn't included in these strings either - JR/PH
229
231
  51504 => 'Samyang AF 50mm F1.4', #IB
230
232
  51505 => 'Samyang AF 14mm F2.8 or Samyang AF 35mm F2.8', #forum3833
231
233
  51505.1 => 'Samyang AF 35mm F2.8', #PH (also 32794)
232
234
  51507 => 'Samyang AF 35mm F1.4', #IB
233
235
  51508 => 'Samyang AF 45mm F1.8',
234
236
  51510 => 'Samyang AF 18mm F2.8', #JR
235
- 51512 => 'Samyang AF 75mm F1.8 FE', #IB
237
+ 51512 => 'Samyang AF 75mm F1.8', #IB/JR
236
238
  );
237
239
 
238
240
  # ExposureProgram values (ref PH, mainly decoded from A200)
@@ -4002,6 +4002,9 @@ my %tagLookup = (
4002
4002
  'moonphase' => { 367 => 0x12, 368 => 0x43, 369 => 0x4c },
4003
4003
  'morepermissions' => { 460 => 'morePermissions' },
4004
4004
  'motionsensitivity' => { 367 => 0x29, 369 => 0x60 },
4005
+ 'movementcount' => { 358 => "\xa9mvc" },
4006
+ 'movementname' => { 358 => "\xa9mvn" },
4007
+ 'movementnumber' => { 358 => "\xa9mvi" },
4005
4008
  'movieaelockbuttonassignment' => { 279 => '40.1' },
4006
4009
  'moviefunc1button' => { 269 => '41.1', 270 => '41.1', 280 => '41.1' },
4007
4010
  'moviefunctionbutton' => { 267 => '41.1', 279 => '41.1' },
@@ -5276,6 +5279,7 @@ my %tagLookup = (
5276
5279
  'shotnumbersincepowerup' => { 410 => 0x44e, 426 => 0x1a, 427 => 0x16, 428 => 0xa },
5277
5280
  'shotnumbersincepowerup2' => { 395 => 0x200 },
5278
5281
  'shotsize' => { 488 => 'shotSize' },
5282
+ 'showmovement' => { 358 => 'shwm' },
5279
5283
  'shownevent' => { 474 => 'EventExt' },
5280
5284
  'showneventidentifier' => { 474 => [\'EventExt','EventExtIdentifier'] },
5281
5285
  'showneventname' => { 474 => [\'EventExt','EventExtName'] },
@@ -6027,7 +6031,7 @@ my %tagLookup = (
6027
6031
  'wb_rblevelscloudy' => { 182 => 0x3f0, 184 => 0x10, 196 => 0x296, 291 => 0x121 },
6028
6032
  'wb_rblevelscoolwhitef' => { 182 => 0x308, 184 => 0x14 },
6029
6033
  'wb_rblevelscoolwhitefluor' => { 291 => 0x132 },
6030
- 'wb_rblevelscustom' => { 182 => 0x424 },
6034
+ 'wb_rblevelscustom' => { 182 => 0x424, 184 => 0x1c },
6031
6035
  'wb_rblevelscwb1' => { 287 => 0x10e },
6032
6036
  'wb_rblevelscwb2' => { 287 => 0x10f },
6033
6037
  'wb_rblevelscwb3' => { 287 => 0x110 },
@@ -6044,7 +6048,6 @@ my %tagLookup = (
6044
6048
  'wb_rblevelsincandescent' => { 196 => 0x282 },
6045
6049
  'wb_rblevelsshade' => { 182 => 0x418, 184 => 0x20, 196 => 0x2b2, 291 => 0x120 },
6046
6050
  'wb_rblevelstungsten' => { 182 => 0x3e8, 184 => 0x8, 291 => 0x123 },
6047
- 'wb_rblevelsunknown' => { 184 => 0x1c },
6048
6051
  'wb_rblevelsused' => { 291 => 0x100 },
6049
6052
  'wb_rblevelswhitef' => { 184 => 0x2c },
6050
6053
  'wb_rblevelswhitefluorescent' => { 291 => 0x133 },
@@ -6222,6 +6225,7 @@ my %tagLookup = (
6222
6225
  'windowsatominvocationflags' => { 463 => [\'windowsAtom','windowsAtomInvocationFlags'] },
6223
6226
  'windowsatomuncprojectpath' => { 463 => [\'windowsAtom','windowsAtomUncProjectPath'] },
6224
6227
  'wordcount' => { 478 => 'wordCount' },
6228
+ 'work' => { 358 => "\xa9wrk" },
6225
6229
  'workcolorspace' => { 100 => 0x10200, 105 => 0x270 },
6226
6230
  'workflowtag' => { 474 => 'WorkflowTag' },
6227
6231
  'workflowtagcvid' => { 474 => [\'WorkflowTag','WorkflowTagCvId'] },
@@ -7640,6 +7644,7 @@ my %tagExists = (
7640
7644
  'encrypt' => 1,
7641
7645
  'encryption' => 1,
7642
7646
  'enddate' => 1,
7647
+ 'endianness' => 1,
7643
7648
  'endpoints' => 1,
7644
7649
  'endtime' => 1,
7645
7650
  'endtimecode' => 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 23365 tags, with 15307 unique tag names.
15
+ They contain a total of 23378 tags, with 15312 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
@@ -18950,7 +18950,7 @@ These tags are used in Minolta RAW format (MRW) images.
18950
18950
  16 WB_RBLevelsCloudy int16u[2]
18951
18951
  20 WB_RBLevelsCoolWhiteF int16u[2]
18952
18952
  24 WB_RBLevelsFlash int16u[2]
18953
- 28 WB_RBLevelsUnknown? int16u[2]
18953
+ 28 WB_RBLevelsCustom int16u[2]
18954
18954
  32 WB_RBLevelsShade int16u[2]
18955
18955
  36 WB_RBLevelsDaylightF int16u[2]
18956
18956
  40 WB_RBLevelsDayWhiteF int16u[2]
@@ -24260,9 +24260,12 @@ software.
24260
24260
  'APIC-2' PictureType no
24261
24261
  'APIC-3' PictureDescription no
24262
24262
  'COMM' Comment no
24263
+ 'GRP1' Grouping no
24263
24264
  'IPLS' InvolvedPeople no
24264
24265
  'ITNU' iTunesU? no
24265
24266
  'MCDI' MusicCDIdentifier no
24267
+ 'MVIN' MovementNumber no
24268
+ 'MVNM' MovementName no
24266
24269
  'OWNE' Ownership no
24267
24270
  'PCNT' PlayCounter no
24268
24271
  'PCST' Podcast? no
@@ -24362,8 +24365,11 @@ software.
24362
24365
  'APIC-2' PictureType no
24363
24366
  'APIC-3' PictureDescription no
24364
24367
  'COMM' Comment no
24368
+ 'GRP1' Grouping no
24365
24369
  'ITNU' iTunesU? no
24366
24370
  'MCDI' MusicCDIdentifier no
24371
+ 'MVIN' MovementNumber no
24372
+ 'MVNM' MovementName no
24367
24373
  'OWNE' Ownership no
24368
24374
  'PCNT' PlayCounter no
24369
24375
  'PCST' Podcast? no
@@ -25466,6 +25472,7 @@ API QuickTimeHandler option may be used to include an 'mdir' Handler box.
25466
25472
  'rldt' ReleaseDate string
25467
25473
  'rtng' Rating int8u
25468
25474
  'sfID' AppleStoreCountry int32u
25475
+ 'shwm' ShowMovement int8s
25469
25476
  'soaa' SortAlbumArtist string
25470
25477
  'soal' SortAlbum string
25471
25478
  'soar' SortArtist string
@@ -25494,11 +25501,15 @@ API QuickTimeHandler option may be used to include an 'mdir' Handler box.
25494
25501
  "\xa9gen" Genre string
25495
25502
  "\xa9grp" Grouping string
25496
25503
  "\xa9lyr" Lyrics string
25504
+ "\xa9mvc" MovementCount int16s
25505
+ "\xa9mvi" MovementNumber int16s
25506
+ "\xa9mvn" MovementName string
25497
25507
  "\xa9nam" Title string
25498
25508
  "\xa9nrt" Narrator string
25499
25509
  "\xa9pub" Publisher string
25500
25510
  "\xa9too" Encoder string
25501
25511
  "\xa9trk" Track string
25512
+ "\xa9wrk" Work string
25502
25513
  "\xa9wrt" Composer string
25503
25514
  "\xa9xyz" GPSCoordinates string
25504
25515
 
@@ -25858,6 +25869,7 @@ Child atoms found in "sinf" and/or "pinf" atoms.
25858
25869
 
25859
25870
  Tag ID Tag Name Writable
25860
25871
  ------ -------- --------
25872
+ 'enda' Endianness no
25861
25873
  'frma' OriginalFormat no
25862
25874
  'schi' SchemeInfo QuickTime SchemeInfo
25863
25875
  'schm' SchemeType QuickTime SchemeType
@@ -25898,6 +25910,7 @@ Child atoms found in "sinf" and/or "pinf" atoms.
25898
25910
 
25899
25911
  Tag ID Tag Name Writable
25900
25912
  ------ -------- --------
25913
+ 'enda' Endianness no
25901
25914
  'frma' PurchaseFileFormat no
25902
25915
 
25903
25916
  =head3 QuickTime ImageDesc Tags
@@ -2297,8 +2297,8 @@ NoOverwrite: next if $isNew > 0;
2297
2297
  } elsif ($ifd < 0) {
2298
2298
  # pad if necessary (but don't pad contiguous image blocks)
2299
2299
  my $pad = 0;
2300
- ++$pad if $size & 0x01 and ($n+1 >= $count or not $oldEnd or
2301
- $oldEnd != $$oldOffset[$n+1]);
2300
+ ++$pad if ($blockSize + $size) & 0x01 and ($n+1 >= $count or
2301
+ not $oldEnd or $oldEnd != $$oldOffset[$n+1]);
2302
2302
  # preserve original image padding if specified
2303
2303
  if ($$origDirInfo{PreserveImagePadding} and $n+1 < $count and
2304
2304
  $oldEnd and $$oldOffset[$n+1] > $oldEnd)
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 11.98
3
+ Version: 11.99
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.98.0')
4
+ VERSION = Gem::Version.new('11.99.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.98.0
4
+ version: 11.99.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-05-02 00:00:00.000000000 Z
12
+ date: 2020-05-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool
@@ -450,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
450
450
  - !ruby/object:Gem::Version
451
451
  version: '0'
452
452
  requirements: []
453
- rubygems_version: 3.1.2
453
+ rubygems_version: 3.1.3
454
454
  signing_key:
455
455
  specification_version: 4
456
456
  summary: Vendored version of exiftool