exiftool_vendored 11.49.0 → 11.50.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.

Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +16 -1
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +4 -3
  5. data/bin/META.yml +15 -14
  6. data/bin/README +7 -5
  7. data/bin/config_files/rotate_regions.config +173 -0
  8. data/bin/config_files/tiff_version.config +121 -0
  9. data/bin/exiftool +16 -15
  10. data/bin/lib/Image/ExifTool.pm +26 -19
  11. data/bin/lib/Image/ExifTool.pod +5 -2
  12. data/bin/lib/Image/ExifTool/Audible.pm +2 -2
  13. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +25 -21
  14. data/bin/lib/Image/ExifTool/Canon.pm +13 -9
  15. data/bin/lib/Image/ExifTool/CanonVRD.pm +4 -4
  16. data/bin/lib/Image/ExifTool/DjVu.pm +1 -2
  17. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Exif.pm +44 -6
  19. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  20. data/bin/lib/Image/ExifTool/FlashPix.pm +12 -9
  21. data/bin/lib/Image/ExifTool/GPS.pm +3 -3
  22. data/bin/lib/Image/ExifTool/GoPro.pm +4 -4
  23. data/bin/lib/Image/ExifTool/H264.pm +2 -2
  24. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  25. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  26. data/bin/lib/Image/ExifTool/MIE.pm +3 -3
  27. data/bin/lib/Image/ExifTool/MPF.pm +2 -2
  28. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  29. data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
  30. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Minolta.pm +58 -56
  32. data/bin/lib/Image/ExifTool/Nikon.pm +1 -1
  33. data/bin/lib/Image/ExifTool/Olympus.pm +2 -2
  34. data/bin/lib/Image/ExifTool/OpenEXR.pm +2 -2
  35. data/bin/lib/Image/ExifTool/PDF.pm +4 -4
  36. data/bin/lib/Image/ExifTool/PICT.pm +3 -3
  37. data/bin/lib/Image/ExifTool/PNG.pm +2 -2
  38. data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  39. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -2
  40. data/bin/lib/Image/ExifTool/PostScript.pm +4 -4
  41. data/bin/lib/Image/ExifTool/QuickTime.pm +37 -15
  42. data/bin/lib/Image/ExifTool/RIFF.pm +3 -2
  43. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  44. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  45. data/bin/lib/Image/ExifTool/Sony.pm +4 -2
  46. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  47. data/bin/lib/Image/ExifTool/TagLookup.pm +9 -7
  48. data/bin/lib/Image/ExifTool/TagNames.pod +31 -21
  49. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  50. data/bin/lib/Image/ExifTool/Validate.pm +2 -2
  51. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  52. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
  53. data/bin/lib/Image/ExifTool/Writer.pl +11 -6
  54. data/bin/lib/Image/ExifTool/XMP.pm +3 -7
  55. data/bin/lib/Image/ExifTool/XMPStruct.pl +2 -1
  56. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  57. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  58. data/bin/perl-Image-ExifTool.spec +3 -3
  59. data/lib/exiftool_vendored/version.rb +1 -1
  60. metadata +4 -2
@@ -2287,7 +2287,7 @@ my %binaryDataAttrs = (
2287
2287
  Name => 'NikonCaptureEditVersions',
2288
2288
  Condition => '$self->Options("ExtractEmbedded")',
2289
2289
  Notes => q{
2290
- the ExtractEmbedded option may be used to decode settings from the stored
2290
+ the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option may be used to decode settings from the stored
2291
2291
  edit versions, otherwise this is extracted as a binary data block
2292
2292
  },
2293
2293
  Writable => 'undef',
@@ -2463,7 +2463,7 @@ my %indexInfo = (
2463
2463
  3 => 'Bottom to Top',
2464
2464
  4 => 'Top to Bottom',
2465
2465
  );
2466
- return ($a{$a} || "Unknown ($a)") . ', Shot ' . $b;
2466
+ return(($a{$a} || "Unknown ($a)") . ', Shot ' . $b);
2467
2467
  },
2468
2468
  },
2469
2469
  0x603 => { #PH/4
@@ -3932,7 +3932,7 @@ sub ExtenderStatus($$$)
3932
3932
  $lensType =~ / F(\d+(\.\d+)?)/ or return 1;
3933
3933
  # If the maximum aperture at the maximum focal length is greater than the
3934
3934
  # known max/max aperture of the lens, then the extender must be attached
3935
- return ($maxAperture - $1 > 0.2) ? 1 : 2;
3935
+ return(($maxAperture - $1 > 0.2) ? 1 : 2);
3936
3936
  }
3937
3937
 
3938
3938
  #------------------------------------------------------------------------------
@@ -62,7 +62,7 @@ my %formatType = (
62
62
  Groups => { 2 => 'Location' },
63
63
  PrintConv => q{
64
64
  $val = int($val * 10) / 10;
65
- return ($val =~ s/^-// ? "$val m Below" : "$val m Above") . " Sea Level";
65
+ return(($val =~ s/^-// ? "$val m Below" : "$val m Above") . " Sea Level");
66
66
  },
67
67
  },
68
68
  aperture => { PrintConv => 'sprintf("%.1f",$val)' },
@@ -158,7 +158,7 @@ sub ProcessEXR($$)
158
158
  my $raf = $$dirInfo{RAF};
159
159
  my $verbose = $et->Options('Verbose');
160
160
  my $binary = $et->Options('Binary') || $verbose;
161
- my ($buff, $buf2, $dim);
161
+ my ($buff, $dim);
162
162
 
163
163
  # verify this is a valid RIFF file
164
164
  return 0 unless $raf->Read($buff, 8) == 8;
@@ -303,7 +303,7 @@ my %supportedFilter = (
303
303
  EXTRACT_UNKNOWN => 0, # extract known but numbered tags (Im1, Im2, etc)
304
304
  Im => {
305
305
  Notes => q{
306
- the ExtractEmbedded option enables information to be extracted from these
306
+ the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option enables information to be extracted from these
307
307
  embedded images
308
308
  },
309
309
  SubDirectory => { TagTable => 'Image::ExifTool::PDF::Im' },
@@ -313,7 +313,7 @@ my %supportedFilter = (
313
313
  # tags in PDF Im# dictionary
314
314
  %Image::ExifTool::PDF::Im = (
315
315
  NOTES => q{
316
- Information extracted from embedded images with the ExtractEmbedded option.
316
+ Information extracted from embedded images with the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option.
317
317
  The EmbeddedImage and its metadata are extracted only for JPEG and Jpeg2000
318
318
  image formats.
319
319
  },
@@ -337,7 +337,7 @@ my %supportedFilter = (
337
337
  EXTRACT_UNKNOWN => 0, # extract known but numbered tags (MC0, MC1, etc)
338
338
  MC => {
339
339
  Notes => q{
340
- the ExtractEmbedded option enables information to be extracted from these
340
+ the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option enables information to be extracted from these
341
341
  embedded metadata dictionaries
342
342
  },
343
343
  SubDirectory => { TagTable => 'Image::ExifTool::PDF::MC' },
@@ -397,7 +397,7 @@ my %supportedFilter = (
397
397
  },
398
398
  AIPrivateData => {
399
399
  Notes => q{
400
- the ExtractEmbedded option enables information to be extracted from embedded
400
+ the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option enables information to be extracted from embedded
401
401
  PostScript documents in the AIPrivateData# and AIPDFPrivateData# streams
402
402
  },
403
403
  JoinStreams => 1, # join streams from numbered tags and process as one
@@ -1095,13 +1095,13 @@ sub ProcessPICT($$)
1095
1095
  @hdr = unpack('x2n5', $buff);
1096
1096
  $op = pop @hdr;
1097
1097
  # check for PICT version 1 format
1098
- if ($op eq 0x1101) {
1098
+ if ($op == 0x1101) {
1099
1099
  $vers = 1;
1100
1100
  undef $extended;
1101
1101
  last;
1102
1102
  }
1103
1103
  # check for PICT version 2 format
1104
- if ($op eq 0x0011) {
1104
+ if ($op == 0x0011) {
1105
1105
  $raf->Read($buff, 28) == 28 or return 0;
1106
1106
  if ($buff =~ /^\x02\xff\x0c\x00\xff\xff/) {
1107
1107
  $vers = 2;
@@ -1174,7 +1174,7 @@ sub ProcessPICT($$)
1174
1174
  }
1175
1175
  last unless $tagInfo;
1176
1176
  }
1177
- if ($op eq 0xff) {
1177
+ if ($op == 0xff) {
1178
1178
  $verbose and print $out "End of picture\n";
1179
1179
  $success = 1;
1180
1180
  last;
@@ -427,10 +427,10 @@ my %unreg = ( Notes => 'unregistered' );
427
427
 
428
428
  These tags may be stored as tEXt, zTXt or iTXt chunks in the PNG image. By
429
429
  default ExifTool writes new string-value tags as as uncompressed tEXt, or
430
- compressed zTXt if the Compress (-z) option is used and Compress::Zlib is
430
+ compressed zTXt if the L<Compress|../ExifTool.html#Compress> (-z) option is used and Compress::Zlib is
431
431
  available. Alternate language tags and values containing special characters
432
432
  (unless the Latin character set is used) are written as iTXt, and compressed
433
- if the Compress option is used and Compress::Zlib is available. Raw profile
433
+ if the L<Compress|../ExifTool.html#Compress> option is used and Compress::Zlib is available. Raw profile
434
434
  information is always created as compressed zTXt if Compress::Zlib is
435
435
  available, or tEXt otherwise. Standard XMP is written as uncompressed iTXt.
436
436
 
@@ -5288,7 +5288,7 @@ my %binaryDataAttrs = (
5288
5288
  NOTES => q{
5289
5289
  The parameters associated with each type of digital filter are unique, and
5290
5290
  these settings are also extracted with the DigitalFilter tag. Information
5291
- is not extracted for filters that are "Off" unless the Unknown option is
5291
+ is not extracted for filters that are "Off" unless the L<Unknown|../ExifTool.html#Unknown> option is
5292
5292
  used.
5293
5293
  },
5294
5294
  0 => {
@@ -819,7 +819,7 @@ sub ProcessDocumentData($$$)
819
819
  my $raf = $$dirInfo{RAF};
820
820
  my $dirLen = $$dirInfo{DirLen};
821
821
  my $pos = 36; # length of header
822
- my $buff;
822
+ my ($buff, $n);
823
823
 
824
824
  $et->VerboseDir('Photoshop Document Data', undef, $dirLen);
825
825
  unless ($raf) {
@@ -838,7 +838,6 @@ sub ProcessDocumentData($$$)
838
838
  }
839
839
  my $psb = ($1 eq 'V0002');
840
840
  my %dinfo = ( DataPt => \$buff );
841
- my ($n, $setOrder);
842
841
  $$et{IsPSB} = $psb; # set PSB flag (needed when handling Layers directory)
843
842
  while ($pos + 12 <= $dirLen) {
844
843
  $raf->Read($buff, 8) == 8 or last;
@@ -89,12 +89,12 @@ sub ProcessPS($$;$);
89
89
  SubDirectory => {
90
90
  TagTable => 'Image::ExifTool::PostScript::Main',
91
91
  },
92
- Notes => 'extracted with ExtractEmbedded option',
92
+ Notes => 'extracted with L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option',
93
93
  },
94
94
  EmbeddedFileName => {
95
95
  Notes => q{
96
96
  not a real tag ID, but the file name from a BeginDocument statement.
97
- Extracted with document metadata when ExtractEmbedded option is used
97
+ Extracted with document metadata when L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option is used
98
98
  },
99
99
  },
100
100
  # AI metadata (most with a single leading '%')
@@ -208,9 +208,9 @@ sub GetInputRecordSeparator($)
208
208
  $a = pos($data), pos($data) = 0 if $data =~ /\x0a/g;
209
209
  $d = pos($data) if $data =~ /\x0d/g;
210
210
  my $diff = $a - $d;
211
- if ($diff eq 1) {
211
+ if ($diff == 1) {
212
212
  $sep = "\x0d\x0a";
213
- } elsif ($diff eq -1) {
213
+ } elsif ($diff == -1) {
214
214
  $sep = "\x0a\x0d";
215
215
  } elsif ($diff > 0) {
216
216
  $sep = "\x0d";
@@ -1328,7 +1328,7 @@ my %eeBox = (
1328
1328
  3-character ISO 639-2 language code to the tag name. ExifTool will extract
1329
1329
  any multi-language user data tags found, even if they aren't in this table.
1330
1330
  Note when creating new tags,
1331
- L<ItemList Tags|Image::ExifTool::TagNames/QuickTime ItemList Tags> are
1331
+ L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> tags are
1332
1332
  preferred over these, so to create the tag when a same-named ItemList tag
1333
1333
  exists, either "UserData" must be specified (eg. C<-UserData:Artist=Monet>
1334
1334
  on the command line), or the PREFERRED level must be changed via the config
@@ -2617,7 +2617,10 @@ my %eeBox = (
2617
2617
  this table support alternate languages which are accessed by adding a
2618
2618
  3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
2619
2619
  country code to the tag name (eg. "ItemList:Title-fra" or
2620
- "ItemList::Title-fra-FR").
2620
+ "ItemList::Title-fra-FR"). When creating a new Meta box to contain the
2621
+ ItemList directory, by default ExifTool does not specify a
2622
+ L<Handler|Image::ExifTool::TagNames/QuickTime Handler Tags>, but the
2623
+ API L<QuickTimeHandler|../ExifTool.html#QuickTimeHandler> option may be used to include an 'mdir' Handler box.
2621
2624
  },
2622
2625
  # in this table, binary 1 and 2-byte "data"-type tags are interpreted as
2623
2626
  # int8u and int16u. Multi-byte binary "data" tags are extracted as binary data.
@@ -5420,10 +5423,11 @@ my %eeBox = (
5420
5423
  FORMAT => 'string',
5421
5424
  NOTES => q{
5422
5425
  This directory contains a list of key names which are used to decode tags
5423
- written by the "mdta" handler. The prefix of "com.apple.quicktime." has
5424
- been removed from all TagID's below. These tags support alternate languages
5425
- in the same way as the
5426
- L<ItemList Tags|Image::ExifTool::TagNames/QuickTime ItemList Tags>. Note
5426
+ written by the "mdta" handler. Also in this table are a few tags found in
5427
+ timed metadata that are not yet writable by ExifTool. The prefix of
5428
+ "com.apple.quicktime." has been removed from the TagID's below. These tags
5429
+ support alternate languages in the same way as the
5430
+ L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> tags. Note
5427
5431
  that by default,
5428
5432
  L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
5429
5433
  L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> tags are
@@ -5519,8 +5523,8 @@ my %eeBox = (
5519
5523
  PrintConvInv => '$self->InverseDateTime($val)',
5520
5524
  },
5521
5525
  'direction.facing' => { Name => 'CameraDirection', Groups => { 2 => 'Location' } },
5522
- 'direction.motion' => { Name => 'CameraMotion', Groups => { 2 => 'Location' } },
5523
- 'location.body' => { Name => 'LocationBody', Groups => { 2 => 'Location' } },
5526
+ 'direction.motion' => { Name => 'CameraMotion', Groups => { 2 => 'Location' } },
5527
+ 'location.body' => { Name => 'LocationBody', Groups => { 2 => 'Location' } },
5524
5528
  'player.version' => 'PlayerVersion',
5525
5529
  'player.movie.visual.brightness'=> 'Brightness',
5526
5530
  'player.movie.visual.color' => 'Color',
@@ -5540,13 +5544,28 @@ my %eeBox = (
5540
5544
  'collection.user' => 'UserCollection', #22
5541
5545
  'Encoded_With' => 'EncodedWith',
5542
5546
  #
5543
- # seen in timed metadata (mebx), and added dynamically via SaveMetaKeys() (ref PH):
5547
+ # the following tags aren't in the com.apple.quicktime namespace:
5548
+ #
5549
+ 'com.apple.photos.captureMode' => 'CaptureMode',
5550
+ 'com.android.version' => 'AndroidVersion',
5551
+ #
5552
+ # also seen
5553
+ #
5554
+ # com.divergentmedia.clipwrap.model ('NEX-FS700EK')
5555
+ # com.divergentmedia.clipwrap.model1 ('49')
5556
+ # com.divergentmedia.clipwrap.model2 ('0')
5557
+ # com.divergentmedia.clipwrap.manufacturer ('Sony')
5558
+ # com.divergentmedia.clipwrap.originalDateTime ('2013/2/6 10:30:40+0200')
5559
+ #
5560
+ # seen in timed metadata (mebx), and added dynamically to the table
5561
+ # via SaveMetaKeys(). NOTE: these tags are not writable!
5544
5562
  #
5545
5563
  # (mdta)com.apple.quicktime.video-orientation (dtyp=66, int16s)
5546
- 'video-orientation' => 'VideoOrientation',
5564
+ 'video-orientation' => { Name => 'VideoOrientation', Writable => 0 },
5547
5565
  # (mdta)com.apple.quicktime.live-photo-info (dtyp=com.apple.quicktime.com.apple.quicktime.live-photo-info)
5548
5566
  'live-photo-info' => {
5549
5567
  Name => 'LivePhotoInfo',
5568
+ Writable => 0,
5550
5569
  # not sure what these values mean, but unpack them anyway - PH
5551
5570
  # (ignore the fact that the "f" and "l" unpacks won't work on a big-endian machine)
5552
5571
  ValueConv => 'join " ",unpack "VfVVf6c4lCCcclf4Vvv", $val',
@@ -5554,6 +5573,7 @@ my %eeBox = (
5554
5573
  # (mdta)com.apple.quicktime.still-image-time (dtyp=65, int8s)
5555
5574
  'still-image-time' => { # (found in live photo)
5556
5575
  Name => 'StillImageTime',
5576
+ Writable => 0,
5557
5577
  Notes => q{
5558
5578
  this tag always has a value of -1; the time of the still image is obtained
5559
5579
  from the associated SampleTime
@@ -5562,23 +5582,25 @@ my %eeBox = (
5562
5582
  # (mdta)com.apple.quicktime.detected-face (dtyp='com.apple.quicktime.detected-face')
5563
5583
  'detected-face' => {
5564
5584
  Name => 'FaceInfo',
5585
+ Writable => 0,
5565
5586
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::FaceInfo' },
5566
5587
  },
5567
- # ---- detected-face fields ----
5588
+ # ---- detected-face fields ( ----
5568
5589
  # --> back here after a round trip through FaceInfo -> FaceRec -> FaceItem
5569
5590
  # (fiel)com.apple.quicktime.detected-face.bounds (dtyp=80, float[8])
5570
5591
  'detected-face.bounds' => {
5571
5592
  Name => 'DetectedFaceBounds',
5593
+ Writable => 0,
5572
5594
  # round to a reasonable number of decimal places
5573
5595
  PrintConv => 'my @a=split " ",$val;$_=int($_*1e6+.5)/1e6 foreach @a;join " ",@a',
5574
5596
  PrintConvInv => '$val',
5575
5597
  },
5576
5598
  # (fiel)com.apple.quicktime.detected-face.face-id (dtyp=77, int32u)
5577
- 'detected-face.face-id' => 'DetectedFaceID',
5599
+ 'detected-face.face-id' => { Name => 'DetectedFaceID', Writable => 0 },
5578
5600
  # (fiel)com.apple.quicktime.detected-face.roll-angle (dtyp=23, float)
5579
- 'detected-face.roll-angle' => 'DetectedFaceRollAngle',
5601
+ 'detected-face.roll-angle' => { Name => 'DetectedFaceRollAngle', Writable => 0 },
5580
5602
  # (fiel)com.apple.quicktime.detected-face.yaw-angle (dtyp=23, float)
5581
- 'detected-face.yaw-angle' => 'DetectedFaceYawAngle',
5603
+ 'detected-face.yaw-angle' => { Name => 'DetectedFaceYawAngle', Writable => 0 },
5582
5604
  );
5583
5605
 
5584
5606
  # iTunes info ('----') atoms
@@ -8247,7 +8269,7 @@ sub ProcessMOV($$;$)
8247
8269
  # set document number for this item property if necessary
8248
8270
  if ($$et{IsItemProperty}) {
8249
8271
  my $items = $$et{ItemInfo};
8250
- my ($id, $prop, $mainItem, $docNum, $lowest);
8272
+ my ($id, $prop, $docNum, $lowest);
8251
8273
  my $primary = $$et{PrimaryItem} || 0;
8252
8274
  ItemID: foreach $id (keys %$items) {
8253
8275
  next unless $$items{$id}{Association};
@@ -1248,7 +1248,7 @@ my %code2charset = (
1248
1248
  # (can't calculate duration like this for compressed audio types)
1249
1249
  RawConv => q{
1250
1250
  return undef if $$self{VALUE}{FileType} =~ /^(LA|OFR|PAC|WV)$/;
1251
- return ($val[0] and not ($val[2] or $val[3])) ? $val[1] / $val[0] : undef;
1251
+ return(($val[0] and not ($val[2] or $val[3])) ? $val[1] / $val[0] : undef);
1252
1252
  },
1253
1253
  PrintConv => 'ConvertDuration($val)',
1254
1254
  },
@@ -1320,7 +1320,8 @@ sub CalcDuration($@)
1320
1320
  # FujiFilm REAL 3D AVI's), but the video stream information isn't reliable for
1321
1321
  # some cameras (eg. Olympus FE models), so use the video stream information
1322
1322
  # only if the RIFF header duration is 2 to 3 times longer
1323
- my $dur1 = $val[1] / $val[0] if $val[0];
1323
+ my $dur1;
1324
+ $dur1 = $val[1] / $val[0] if $val[0];
1324
1325
  if ($val[2] and $val[3]) {
1325
1326
  my $dur2 = $val[3] / $val[2];
1326
1327
  my $rat = $dur1 / $dur2;
@@ -23,7 +23,7 @@ $VERSION = '1.08';
23
23
  Tags extracted from Mac OS resource files and DFONT files. These tags may
24
24
  also be extracted from the resource fork of any file in OS X, either by
25
25
  adding "/..namedfork/rsrc" to the filename to process the resource fork
26
- alone, or by using the ExtractEmbedded (-ee) option to process the resource
26
+ alone, or by using the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> (-ee) option to process the resource
27
27
  fork as a sub-document of the main file. When writing, ExifTool preserves
28
28
  the Mac OS resource fork by default, but it may deleted with C<-rsrc:all=>
29
29
  on the command line.
@@ -111,7 +111,7 @@ my %formatMinMax = (
111
111
  This is a standard-format IFD found in the maker notes of some Samsung
112
112
  models, except that the entry count is a 4-byte integer and the offsets are
113
113
  relative to the end of the IFD. Currently, no tags in this IFD are known,
114
- so the Unknown (-u) or Verbose (-v) option must be used to see this
114
+ so the L<Unknown|../ExifTool.html#Unknown> (-u) or L<Verbose|../ExifTool.html#Verbose> (-v) option must be used to see this
115
115
  information.
116
116
  },
117
117
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
@@ -32,7 +32,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
32
32
  use Image::ExifTool::Exif;
33
33
  use Image::ExifTool::Minolta;
34
34
 
35
- $VERSION = '3.06';
35
+ $VERSION = '3.07';
36
36
 
37
37
  sub ProcessSRF($$$);
38
38
  sub ProcessSR2($$$);
@@ -132,6 +132,8 @@ my %sonyLensTypes2 = (
132
132
  32848 => 'Sony FE 400mm F2.8 GM OSS', #IB
133
133
  32849 => 'Sony E 18-135mm F3.5-5.6 OSS', #JR
134
134
  32850 => 'Sony FE 135mm F1.8 GM', #IB
135
+ 32851 => 'Sony FE 200-600mm F5.6-6.3 G OSS', #IB
136
+ 32852 => 'Sony FE 600mm F4 GM OSS', #IB
135
137
 
136
138
  # (comment this out so LensID will report the LensModel, which is more useful)
137
139
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -9606,7 +9608,7 @@ my %isoSetting2010 = (
9606
9608
  GROUPS => { 2 => 'Video' },
9607
9609
  NOTES => q{
9608
9610
  These tags are extracted from the 'rtmd' timed metadata of MP4 videos from
9609
- some models when the ExtractEmbedded option is used.
9611
+ some models when the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option is used.
9610
9612
  },
9611
9613
  # 0x060e - 16 bytes starting with 0x060e2b340253 (fake tag ID - comes before 0x8300 container)
9612
9614
  0x060e => { Name => 'Sony_rtmd_0x060e', Format => 'int8u', %hidUnk },
@@ -67,9 +67,9 @@ sub Write(;$$%)
67
67
  {
68
68
  local ($_, *PTIFILE);
69
69
  my ($file, $group, %opts) = @_;
70
- my @groups = split ':', $group if $group;
71
70
  my $et = new Image::ExifTool;
72
- my ($fp, $tableName, %langInfo, @langs, $defaultLang);
71
+ my ($fp, $tableName, %langInfo, @langs, $defaultLang, @groups);
72
+ @groups = split ':', $group if $group;
73
73
 
74
74
  Image::ExifTool::LoadAllTables(); # first load all our tables
75
75
  unless ($opts{NoDesc}) {
@@ -884,6 +884,7 @@ my %tagLookup = (
884
884
  'analogbalance' => { 114 => 0xc627 },
885
885
  'analogcaptureiso' => { 132 => 0x89e },
886
886
  'analogisotable' => { 132 => 0x89d },
887
+ 'androidversion' => { 356 => 'com.android.version' },
887
888
  'angleadj' => { 98 => 0x10003, 104 => 0x8b },
888
889
  'angleinforoll' => { 451 => 'AngleInfoRoll' },
889
890
  'angleinfoyaw' => { 451 => 'AngleInfoYaw' },
@@ -1230,6 +1231,7 @@ my %tagLookup = (
1230
1231
  'captureframerate' => { 108 => 0x4001 },
1231
1232
  'captureheightnormal' => { 132 => 0x1839 },
1232
1233
  'capturelook' => { 132 => 0xc48 },
1234
+ 'capturemode' => { 356 => 'com.apple.photos.captureMode' },
1233
1235
  'capturesoftware' => { 443 => 'CaptureSoftware' },
1234
1236
  'capturewidthnormal' => { 132 => 0x1838 },
1235
1237
  'capturewidthtest' => { 132 => 0x1842 },
@@ -1946,10 +1948,6 @@ my %tagLookup = (
1946
1948
  'destinationcity' => { 337 => 0x24, 343 => 0x3 },
1947
1949
  'destinationcitycode' => { 344 => 0x1001 },
1948
1950
  'destinationdst' => { 337 => 0x26, 343 => '0.3' },
1949
- 'detectedfacebounds' => { 356 => 'detected-face.bounds' },
1950
- 'detectedfaceid' => { 356 => 'detected-face.face-id' },
1951
- 'detectedfacerollangle' => { 356 => 'detected-face.roll-angle' },
1952
- 'detectedfaceyawangle' => { 356 => 'detected-face.yaw-angle' },
1953
1951
  'developmentdynamicrange' => { 122 => 0x1403 },
1954
1952
  'deviantmatrixcustom' => { 132 => 0x7de },
1955
1953
  'deviantmatrixdaylight' => { 132 => 0x7da },
@@ -3395,7 +3393,6 @@ my %tagLookup = (
3395
3393
  'linkedencrightsexpr' => { 466 => 'LinkedEncRightsExpr' },
3396
3394
  'linlogcoring' => { 132 => 0x904 },
3397
3395
  'lithostratigraphicterms' => { 113 => [\'GeologicalContext','GeologicalContextLithostratigraphicTerms'] },
3398
- 'livephotoinfo' => { 356 => 'live-photo-info' },
3399
3396
  'liveviewaf' => { 267 => '32.1', 277 => '34.1' },
3400
3397
  'liveviewafareamode' => { 272 => '34.1' },
3401
3398
  'liveviewafmethod' => { 405 => 0x20 },
@@ -5270,7 +5267,6 @@ my %tagLookup = (
5270
5267
  'state' => { 153 => 'State', 302 => 0x6b, 468 => 'State' },
5271
5268
  'status' => { 436 => 'Status', 448 => 'Status' },
5272
5269
  'stereomode' => { 444 => 'StereoMode' },
5273
- 'stillimagetime' => { 356 => 'still-image-time' },
5274
5270
  'stitched' => { 444 => 'Stitched' },
5275
5271
  'stitchingsoftware' => { 443 => 'StitchingSoftware', 444 => 'StitchingSoftware' },
5276
5272
  'stopsabovebaseiso' => { 408 => 0x113e, 409 => 0x113e, 410 => 0x111a, 411 => 0x1196, 412 => 0x1172, 413 => 0x102a, 414 => 0x222, 415 => 0x222, 416 => 0x217, 429 => 0xa },
@@ -5756,7 +5752,6 @@ my %tagLookup = (
5756
5752
  'videoframesizeunit' => { 480 => [\'videoFrameSize','videoFrameSizeUnit'] },
5757
5753
  'videoframesizew' => { 480 => [\'videoFrameSize','videoFrameSizeW'] },
5758
5754
  'videomoddate' => { 480 => 'videoModDate' },
5759
- 'videoorientation' => { 356 => 'video-orientation' },
5760
5755
  'videopixelaspectratio' => { 480 => 'videoPixelAspectRatio' },
5761
5756
  'videopixeldepth' => { 480 => 'videoPixelDepth' },
5762
5757
  'videoquality' => { 108 => 0x4003 },
@@ -7193,6 +7188,10 @@ my %tagExists = (
7193
7188
  'designerurl' => 1,
7194
7189
  'desiredreproductions' => 1,
7195
7190
  'destinationid' => 1,
7191
+ 'detectedfacebounds' => 1,
7192
+ 'detectedfaceid' => 1,
7193
+ 'detectedfacerollangle' => 1,
7194
+ 'detectedfaceyawangle' => 1,
7196
7195
  'detector' => 1,
7197
7196
  'detectorboard' => 1,
7198
7197
  'deviceattributes' => 1,
@@ -8391,6 +8390,7 @@ my %tagExists = (
8391
8390
  'linlogtable' => 1,
8392
8391
  'listtype' => 1,
8393
8392
  'lit' => 1,
8393
+ 'livephotoinfo' => 1,
8394
8394
  'ln0' => 1,
8395
8395
  'ln1' => 1,
8396
8396
  'localbasepath' => 1,
@@ -9968,6 +9968,7 @@ my %tagExists = (
9968
9968
  'stereo' => 1,
9969
9969
  'stereoimage' => 1,
9970
9970
  'stereoscopic3d' => 1,
9971
+ 'stillimagetime' => 1,
9971
9972
  'stim' => 1,
9972
9973
  'stimversion' => 1,
9973
9974
  'stitchcolumns' => 1,
@@ -10462,6 +10463,7 @@ my %tagExists = (
10462
10463
  'videomaxbitrate' => 1,
10463
10464
  'videomaxframerate' => 1,
10464
10465
  'videomode' => 1,
10466
+ 'videoorientation' => 1,
10465
10467
  'videoprofile' => 1,
10466
10468
  'videoprofileversion' => 1,
10467
10469
  'videosampledesc' => 1,