exiftool_vendored 12.41.0 → 12.50.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +209 -6
  3. data/bin/MANIFEST +12 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +45 -44
  7. data/bin/config_files/acdsee.config +2 -1
  8. data/bin/config_files/frameCount.config +56 -0
  9. data/bin/config_files/tiff_version.config +1 -1
  10. data/bin/exiftool +115 -96
  11. data/bin/fmt_files/gpx.fmt +3 -0
  12. data/bin/fmt_files/gpx_wpt.fmt +3 -0
  13. data/bin/lib/Image/ExifTool/Apple.pm +16 -3
  14. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +23 -12
  15. data/bin/lib/Image/ExifTool/Canon.pm +71 -33
  16. data/bin/lib/Image/ExifTool/CanonRaw.pm +8 -1
  17. data/bin/lib/Image/ExifTool/CanonVRD.pm +7 -8
  18. data/bin/lib/Image/ExifTool/DJI.pm +60 -1
  19. data/bin/lib/Image/ExifTool/DNG.pm +8 -2
  20. data/bin/lib/Image/ExifTool/DarwinCore.pm +13 -1
  21. data/bin/lib/Image/ExifTool/EXE.pm +9 -1
  22. data/bin/lib/Image/ExifTool/Exif.pm +26 -12
  23. data/bin/lib/Image/ExifTool/FLAC.pm +17 -3
  24. data/bin/lib/Image/ExifTool/FLIR.pm +4 -3
  25. data/bin/lib/Image/ExifTool/FlashPix.pm +26 -3
  26. data/bin/lib/Image/ExifTool/FujiFilm.pm +51 -4
  27. data/bin/lib/Image/ExifTool/GPS.pm +21 -1
  28. data/bin/lib/Image/ExifTool/Geotag.pm +25 -5
  29. data/bin/lib/Image/ExifTool/ICC_Profile.pm +12 -9
  30. data/bin/lib/Image/ExifTool/ICO.pm +143 -0
  31. data/bin/lib/Image/ExifTool/ID3.pm +11 -11
  32. data/bin/lib/Image/ExifTool/IPTC.pm +5 -1
  33. data/bin/lib/Image/ExifTool/LNK.pm +5 -2
  34. data/bin/lib/Image/ExifTool/M2TS.pm +98 -8
  35. data/bin/lib/Image/ExifTool/MIE.pm +9 -3
  36. data/bin/lib/Image/ExifTool/MISB.pm +494 -0
  37. data/bin/lib/Image/ExifTool/MakerNotes.pm +8 -1
  38. data/bin/lib/Image/ExifTool/Matroska.pm +24 -16
  39. data/bin/lib/Image/ExifTool/Motorola.pm +8 -2
  40. data/bin/lib/Image/ExifTool/Nikon.pm +293 -122
  41. data/bin/lib/Image/ExifTool/NikonCustom.pm +4 -1
  42. data/bin/lib/Image/ExifTool/NikonSettings.pm +5 -3
  43. data/bin/lib/Image/ExifTool/Olympus.pm +22 -2
  44. data/bin/lib/Image/ExifTool/PDF.pm +2 -1
  45. data/bin/lib/Image/ExifTool/Panasonic.pm +30 -4
  46. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +25 -5
  47. data/bin/lib/Image/ExifTool/Parrot.pm +96 -2
  48. data/bin/lib/Image/ExifTool/Pentax.pm +8 -3
  49. data/bin/lib/Image/ExifTool/Photoshop.pm +35 -8
  50. data/bin/lib/Image/ExifTool/QuickTime.pm +163 -13
  51. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +119 -13
  52. data/bin/lib/Image/ExifTool/README +13 -3
  53. data/bin/lib/Image/ExifTool/RIFF.pm +106 -9
  54. data/bin/lib/Image/ExifTool/Samsung.pm +234 -3
  55. data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
  56. data/bin/lib/Image/ExifTool/Sigma.pm +27 -1
  57. data/bin/lib/Image/ExifTool/SigmaRaw.pm +37 -13
  58. data/bin/lib/Image/ExifTool/Sony.pm +71 -43
  59. data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -1
  60. data/bin/lib/Image/ExifTool/TagLookup.pm +4752 -4516
  61. data/bin/lib/Image/ExifTool/TagNames.pod +1885 -1434
  62. data/bin/lib/Image/ExifTool/Text.pm +3 -4
  63. data/bin/lib/Image/ExifTool/Torrent.pm +2 -3
  64. data/bin/lib/Image/ExifTool/Validate.pm +3 -3
  65. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
  66. data/bin/lib/Image/ExifTool/WriteExif.pl +100 -23
  67. data/bin/lib/Image/ExifTool/WriteIPTC.pl +2 -6
  68. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
  69. data/bin/lib/Image/ExifTool/WriteRIFF.pl +359 -0
  70. data/bin/lib/Image/ExifTool/Writer.pl +14 -6
  71. data/bin/lib/Image/ExifTool/XMP.pm +78 -59
  72. data/bin/lib/Image/ExifTool/XMP2.pl +19 -4
  73. data/bin/lib/Image/ExifTool.pm +120 -33
  74. data/bin/lib/Image/ExifTool.pod +83 -69
  75. data/bin/perl-Image-ExifTool.spec +43 -43
  76. data/lib/exiftool_vendored/version.rb +1 -1
  77. metadata +9 -4
@@ -395,7 +395,9 @@ numerical, and generated automatically otherwise.
395
395
  be accessible.
396
396
 
397
397
  'Hidden' - set to hide tag from the TagName documentation.
398
- Also suppresses verbose output of a BinaryData tag.
398
+ Also suppresses verbose output of a BinaryData tag. The
399
+ RawConv of a Hidden tag should return undef so the tag value
400
+ is not seen by the user.
399
401
 
400
402
  'IsComposite' - flag set for Composite tags
401
403
 
@@ -531,7 +533,8 @@ numerical, and generated automatically otherwise.
531
533
  SubIFD's where the PutFirst flag is valid.
532
534
 
533
535
  'Unknown' - this is an unknown tag (only extracted when the
534
- Unknown option is set).
536
+ Unknown option is set). This is set to 2 for Unknown tags in
537
+ binary tables (extracted when Unknown is 2).
535
538
 
536
539
  'WriteNothing' - flag indicating that nothing is actually
537
540
  written when this tag is set. It is a fake writable tag that
@@ -717,7 +720,7 @@ numerical, and generated automatically otherwise.
717
720
  condition exists, then a 'true' condition is assumed. The
718
721
  expression may use $self to access the ExifTool object. The
719
722
  first 128 bytes of the raw data value are accessible through
720
- the reference $valPt for EXIF, Jpeg2000, QuickTime and
723
+ the reference $valPt for EXIF, Jpeg2000, QuickTime, FLAC and
721
724
  BinaryData tags only (note that for BinaryData tags, the raw
722
725
  data of $$valPt is always 'undef' type, and may not be used
723
726
  when writing except for SubDirectory tags). EXIF tags (and
@@ -964,6 +967,10 @@ numerical, and generated automatically otherwise.
964
967
  OtherLang : [reserved] Used internally by QuickTime module to store a list
965
968
  of tag ID's for alternate-language tags based on this one.
966
969
 
970
+ ParentTagInfo : [reserved] Used internally to store a reference to the tag
971
+ information hash of the parent structure for flattened
972
+ structure tags.
973
+
967
974
  RootTagInfo : [reserved] Used internally to store a reference to the tag
968
975
  information hash of the top-level structure for flattened
969
976
  structure tags.
@@ -975,6 +982,9 @@ numerical, and generated automatically otherwise.
975
982
  alternate language tags (eg. 'fr'). Only used with formats
976
983
  which support alternate languages (eg. XMP, MIE, etc).
977
984
 
985
+ AddedUnknown : [reserved] Used internally to mark Unknown tags that were
986
+ added to the table at run time.
987
+
978
988
  SubDirectory { If it exists, this specifies the start of a new subdirectory.
979
989
  It contains a collection of variables which specify the type
980
990
  and location of the subdirectory. Note that ValueConv and
@@ -27,15 +27,16 @@
27
27
  package Image::ExifTool::RIFF;
28
28
 
29
29
  use strict;
30
- use vars qw($VERSION);
30
+ use vars qw($VERSION $AUTOLOAD);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
 
33
- $VERSION = '1.59';
33
+ $VERSION = '1.61';
34
34
 
35
35
  sub ConvertTimecode($);
36
36
  sub ProcessSGLT($$$);
37
37
  sub ProcessSLLT($$$);
38
38
  sub ProcessLucas($$$);
39
+ sub WriteRIFF($$);
39
40
 
40
41
  # recognized RIFF variants
41
42
  my %riffType = (
@@ -340,6 +341,9 @@ my %code2charset = (
340
341
  Large AVI videos may be a concatenation of two or more RIFF chunks. For
341
342
  these files, information is extracted from subsequent RIFF chunks as
342
343
  sub-documents, but the Duration is calculated for the full video.
344
+
345
+ ExifTool currently has the ability to write EXIF, XMP and ICC_Profile
346
+ metadata to WEBP images, but can't yet write to other RIFF-based formats.
343
347
  },
344
348
  # (not 100% sure that the concatenation technique mentioned above is valid - PH)
345
349
  'fmt ' => {
@@ -544,7 +548,7 @@ my %code2charset = (
544
548
  },
545
549
  },{ # (WebP) - have also seen with "Exif\0\0" header - PH
546
550
  Name => 'EXIF',
547
- Condition => '$$valPt =~ /^Exif\0\0(II\x2a\0|MM\0\x2a)/',
551
+ Condition => '$$valPt =~ /^Exif\0\0(II\x2a\0|MM\0\x2a)/ and $self->Warn("Improper EXIF header",1)',
548
552
  SubDirectory => {
549
553
  TagTable => 'Image::ExifTool::Exif::Main',
550
554
  ProcessProc => \&Image::ExifTool::ProcessTIFF,
@@ -636,6 +640,11 @@ my %code2charset = (
636
640
  },
637
641
  # gpsa - seen hex "01 20 00 00", same as QuickTime
638
642
  # gsea - 16 bytes hex "04 08 02 00 20 02 00 00 1f 03 00 00 01 00 00 00"
643
+
644
+ acid => { # writen by Acidizer
645
+ Name => 'Acidizer',
646
+ SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Acidizer' },
647
+ },
639
648
  );
640
649
 
641
650
  # the maker notes used by some digital cameras
@@ -1249,6 +1258,7 @@ my %code2charset = (
1249
1258
  Name => 'ImageWidth',
1250
1259
  Format => 'int16u',
1251
1260
  Mask => 0x3fff,
1261
+ Priority => 0,
1252
1262
  },
1253
1263
  6.1 => {
1254
1264
  Name => 'HorizontalScale',
@@ -1259,6 +1269,7 @@ my %code2charset = (
1259
1269
  Name => 'ImageHeight',
1260
1270
  Format => 'int16u',
1261
1271
  Mask => 0x3fff,
1272
+ Priority => 0,
1262
1273
  },
1263
1274
  8.1 => {
1264
1275
  Name => 'VerticalScale',
@@ -1275,11 +1286,13 @@ my %code2charset = (
1275
1286
  1 => {
1276
1287
  Name => 'ImageWidth',
1277
1288
  Format => 'int16u',
1289
+ Priority => 0,
1278
1290
  ValueConv => '($val & 0x3fff) + 1',
1279
1291
  },
1280
1292
  2 => {
1281
1293
  Name => 'ImageHeight',
1282
1294
  Format => 'int32u',
1295
+ Priority => 0,
1283
1296
  ValueConv => '(($val >> 6) & 0x3fff) + 1',
1284
1297
  },
1285
1298
  );
@@ -1290,6 +1303,19 @@ my %code2charset = (
1290
1303
  GROUPS => { 2 => 'Image' },
1291
1304
  NOTES => 'This chunk is found in extended WebP files.',
1292
1305
  # 0 - bitmask: 2=ICC, 3=alpha, 4=EXIF, 5=XMP, 6=animation
1306
+ 0 => {
1307
+ Name => 'WebP_Flags',
1308
+ Description => 'WebP Flags',
1309
+ Notes => 'flags used in Extended WebP images',
1310
+ Format => 'int32u',
1311
+ PrintConv => { BITMASK => {
1312
+ 1 => 'Animation',
1313
+ 2 => 'XMP',
1314
+ 3 => 'EXIF',
1315
+ 4 => 'Alpha',
1316
+ 5 => 'ICC Profile',
1317
+ }},
1318
+ },
1293
1319
  4 => {
1294
1320
  Name => 'ImageWidth',
1295
1321
  Format => 'int32u',
@@ -1420,6 +1446,54 @@ my %code2charset = (
1420
1446
  },
1421
1447
  );
1422
1448
 
1449
+ # Acidizer information (ref https://forums.cockos.com/showthread.php?t=227118)
1450
+ %Image::ExifTool::RIFF::Acidizer = (
1451
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1452
+ GROUPS => { 2 => 'Audio' },
1453
+ 0 => {
1454
+ Name => 'AcidizerFlags',
1455
+ Format => 'int32u',
1456
+ PrintConv => { BITMASK => {
1457
+ 0 => 'One shot',
1458
+ 1 => 'Root note set',
1459
+ 2 => 'Stretch',
1460
+ 3 => 'Disk-based',
1461
+ 4 => 'High octave',
1462
+ }},
1463
+ },
1464
+ 4 => {
1465
+ Name => 'RootNote',
1466
+ Format => 'int16u',
1467
+ PrintConv => {
1468
+ 0x30 => 'C', 0x3c => 'High C',
1469
+ 0x31 => 'C#', 0x3d => 'High C#',
1470
+ 0x32 => 'D', 0x3e => 'High D',
1471
+ 0x33 => 'D#', 0x3f => 'High D#',
1472
+ 0x34 => 'E', 0x40 => 'High E',
1473
+ 0x35 => 'F', 0x41 => 'High F',
1474
+ 0x36 => 'F#', 0x42 => 'High F#',
1475
+ 0x37 => 'G', 0x43 => 'High G',
1476
+ 0x38 => 'G#', 0x44 => 'High G#',
1477
+ 0x39 => 'A', 0x45 => 'High A',
1478
+ 0x3a => 'A#', 0x46 => 'High A#',
1479
+ 0x3b => 'B', 0x47 => 'High B',
1480
+ },
1481
+ },
1482
+ 12 => {
1483
+ Name => 'Beats',
1484
+ Format => 'int32u',
1485
+ },
1486
+ 16 => {
1487
+ Name => 'Meter',
1488
+ Format => 'int16u[2]',
1489
+ PrintConv => '$val =~ s/(\d+) (\d+)/$2\/$1/; $val', # denominator comes first, so swap them
1490
+ },
1491
+ 20 => {
1492
+ Name => 'Tempo',
1493
+ Format => 'float',
1494
+ },
1495
+ );
1496
+
1423
1497
  # RIFF composite tags
1424
1498
  %Image::ExifTool::RIFF::Composite = (
1425
1499
  Duration => {
@@ -1459,6 +1533,14 @@ my %code2charset = (
1459
1533
  Image::ExifTool::AddCompositeTags('Image::ExifTool::RIFF');
1460
1534
 
1461
1535
 
1536
+ #------------------------------------------------------------------------------
1537
+ # AutoLoad our writer routines when necessary
1538
+ #
1539
+ sub AUTOLOAD
1540
+ {
1541
+ return Image::ExifTool::DoAutoLoad($AUTOLOAD, @_);
1542
+ }
1543
+
1462
1544
  #------------------------------------------------------------------------------
1463
1545
  # Convert RIFF date to EXIF format
1464
1546
  my %monthNum = (
@@ -1642,7 +1724,7 @@ sub ProcessChunks($$$)
1642
1724
  my $start = $$dirInfo{DirStart};
1643
1725
  my $size = $$dirInfo{DirLen};
1644
1726
  my $end = $start + $size;
1645
- my $base = $$dirInfo{Base};
1727
+ my $base = $$dirInfo{Base} || 0;
1646
1728
  my $verbose = $et->Options('Verbose');
1647
1729
  my $unknown = $et->Options('Unknown');
1648
1730
  my $charset = $et->Options('CharsetRIFF');
@@ -1896,6 +1978,7 @@ sub ProcessRIFF($$)
1896
1978
  my ($buff, $buf2, $type, $mime, $err, $rf64);
1897
1979
  my $verbose = $et->Options('Verbose');
1898
1980
  my $unknown = $et->Options('Unknown');
1981
+ my $validate = $et->Options('Validate');
1899
1982
  my $ee = $et->Options('ExtractEmbedded');
1900
1983
 
1901
1984
  # verify this is a valid RIFF file
@@ -1917,6 +2000,8 @@ sub ProcessRIFF($$)
1917
2000
  $$et{RIFFStreamType} = ''; # initialize stream type
1918
2001
  $$et{RIFFStreamCodec} = []; # initialize codec array
1919
2002
  SetByteOrder('II');
2003
+ my $riffEnd = Get32u(\$buff, 4) + 8;
2004
+ $riffEnd += $riffEnd & 0x01; # (account for padding)
1920
2005
  my $tagTbl = GetTagTable('Image::ExifTool::RIFF::Main');
1921
2006
  my $pos = 12;
1922
2007
  #
@@ -1926,10 +2011,13 @@ sub ProcessRIFF($$)
1926
2011
  my $num = $raf->Read($buff, 8);
1927
2012
  if ($num < 8) {
1928
2013
  $err = 1 if $num;
2014
+ $et->Warn('Incorrect RIFF chunk size' . " $pos vs. $riffEnd") if $validate and $pos != $riffEnd;
1929
2015
  last;
1930
2016
  }
1931
2017
  $pos += 8;
1932
2018
  my ($tag, $len) = unpack('a4V', $buff);
2019
+ # tweak WEBP type if this is an extended WebP
2020
+ $et->OverrideFileType('Extended WEBP',undef,'webp') if $tag eq 'VP8X' and $type eq 'WEBP';
1933
2021
  # special case: construct new tag name from specific LIST type
1934
2022
  if ($tag eq 'LIST') {
1935
2023
  $raf->Read($buff, 4) == 4 or $err=1, last;
@@ -1949,7 +2037,6 @@ sub ProcessRIFF($$)
1949
2037
  } else {
1950
2038
  next;
1951
2039
  }
1952
- last;
1953
2040
  }
1954
2041
  # stop when we hit the audio data or AVI index or AVI movie data
1955
2042
  # --> no more because Adobe Bridge stores XMP after this!!
@@ -1969,6 +2056,7 @@ sub ProcessRIFF($$)
1969
2056
  $$et{DOC_NUM} = ++$$et{DOC_COUNT};
1970
2057
  }
1971
2058
  my $tagInfo = $$tagTbl{$tag};
2059
+ # (in LIST_movi chunk: ##db = uncompressed DIB, ##dc = compressed DIB, ##wb = audio data)
1972
2060
  if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF|\d{2}(db|dc|wb))$/)) {
1973
2061
  $raf->Read($buff, $len2) == $len2 or $err=1, last;
1974
2062
  my $setGroups;
@@ -1980,7 +2068,7 @@ sub ProcessRIFF($$)
1980
2068
  DataPt => \$buff,
1981
2069
  DataPos => 0, # (relative to Base)
1982
2070
  Start => 0,
1983
- Size => $len2,
2071
+ Size => $len,
1984
2072
  Base => $pos,
1985
2073
  );
1986
2074
  if ($setGroups) {
@@ -1989,10 +2077,14 @@ sub ProcessRIFF($$)
1989
2077
  }
1990
2078
  delete $$et{DOC_NUM} if $ee;
1991
2079
  } elsif ($tag eq 'RIFF') {
2080
+ $et->Warn('Incorrect RIFF chunk size') if $validate and $pos - 8 != $riffEnd;
2081
+ $riffEnd += $len2 + 8;
1992
2082
  # don't read into RIFF chunk (eg. concatenated video file)
1993
- $raf->Read($buff, 4) == 4 or $err=1, last;
2083
+ $raf->Read($buff, 4) == 4 or $err=1, last; # (skip RIFF type word)
2084
+ $pos += 4;
1994
2085
  # extract information from remaining file as an embedded file
1995
- $$et{DOC_NUM} = ++$$et{DOC_COUNT}
2086
+ $$et{DOC_NUM} = ++$$et{DOC_COUNT};
2087
+ next; # (must not increment $pos)
1996
2088
  } elsif ($tag eq 'LIST_movi' and $ee) {
1997
2089
  next; # parse into movi chunk
1998
2090
  } else {
@@ -2000,7 +2092,12 @@ sub ProcessRIFF($$)
2000
2092
  $et->Warn("Stopped parsing at large $tag chunk (LargeFileSupport not set)");
2001
2093
  last;
2002
2094
  }
2003
- $raf->Seek($len2, 1) or $err=1, last;
2095
+ if ($validate and $len2) {
2096
+ # (must actually try to read something after seeking to detect error)
2097
+ $raf->Seek($len2-1, 1) and $raf->Read($buff, 1) == 1 or $err = 1, last;
2098
+ } else {
2099
+ $raf->Seek($len2, 1) or $err=1, last;
2100
+ }
2004
2101
  }
2005
2102
  $pos += $len2;
2006
2103
  }
@@ -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.51';
25
+ $VERSION = '1.53';
26
26
 
27
27
  sub WriteSTMN($$$);
28
28
  sub ProcessINFO($$$);
@@ -991,7 +991,7 @@ my %formatMinMax = (
991
991
  '0x0a01' => { #forum7161
992
992
  Name => 'TimeStamp',
993
993
  Groups => { 2 => 'Time' },
994
- ValueConv => 'ConvertUnixTime($val / 1e3, 1)',
994
+ ValueConv => 'ConvertUnixTime($val / 1e3, 1, 3)',
995
995
  PrintConv => '$self->ConvertDateTime($val)',
996
996
  },
997
997
  '0x0a20-name' => 'DualCameraImageName', # ("FlipPhoto_002")
@@ -1000,7 +1000,238 @@ my %formatMinMax = (
1000
1000
  '0x0a30' => { Name => 'EmbeddedVideoFile', Groups => { 2 => 'Video' }, Binary => 1 }, #forum7161
1001
1001
  # 0x0aa1-name - seen 'MCC_Data'
1002
1002
  # 0x0aa1 - seen '204','222','234','302','429'
1003
- '0x0aa1' => 'MCCData', # (unknown meaning)
1003
+ '0x0aa1' => {
1004
+ Name => 'MCCData',
1005
+ Groups => { 2 => 'Location' },
1006
+ PrintConv => {
1007
+ 202 => 'Greece',
1008
+ 204 => 'Netherlands',
1009
+ 206 => 'Belgium',
1010
+ 208 => 'France',
1011
+ 212 => 'Monaco',
1012
+ 213 => 'Andorra',
1013
+ 214 => 'Spain',
1014
+ 216 => 'Hungary',
1015
+ 218 => 'Bosnia & Herzegov.',
1016
+ 219 => 'Croatia',
1017
+ 220 => 'Serbia',
1018
+ 221 => 'Kosovo',
1019
+ 222 => 'Italy',
1020
+ 226 => 'Romania',
1021
+ 228 => 'Switzerland',
1022
+ 230 => 'Czech Rep.',
1023
+ 231 => 'Slovakia',
1024
+ 232 => 'Austria',
1025
+ 234 => 'United Kingdom',
1026
+ 235 => 'United Kingdom',
1027
+ 238 => 'Denmark',
1028
+ 240 => 'Sweden',
1029
+ 242 => 'Norway',
1030
+ 244 => 'Finland',
1031
+ 246 => 'Lithuania',
1032
+ 247 => 'Latvia',
1033
+ 248 => 'Estonia',
1034
+ 250 => 'Russian Federation',
1035
+ 255 => 'Ukraine',
1036
+ 257 => 'Belarus',
1037
+ 259 => 'Moldova',
1038
+ 260 => 'Poland',
1039
+ 262 => 'Germany',
1040
+ 266 => 'Gibraltar',
1041
+ 268 => 'Portugal',
1042
+ 270 => 'Luxembourg',
1043
+ 272 => 'Ireland',
1044
+ 274 => 'Iceland',
1045
+ 276 => 'Albania',
1046
+ 278 => 'Malta',
1047
+ 280 => 'Cyprus',
1048
+ 282 => 'Georgia',
1049
+ 283 => 'Armenia',
1050
+ 284 => 'Bulgaria',
1051
+ 286 => 'Turkey',
1052
+ 288 => 'Faroe Islands',
1053
+ 289 => 'Abkhazia',
1054
+ 290 => 'Greenland',
1055
+ 292 => 'San Marino',
1056
+ 293 => 'Slovenia',
1057
+ 294 => 'Macedonia',
1058
+ 295 => 'Liechtenstein',
1059
+ 297 => 'Montenegro',
1060
+ 302 => 'Canada',
1061
+ 308 => 'St. Pierre & Miquelon',
1062
+ 310 => 'United States / Guam',
1063
+ 311 => 'United States / Guam',
1064
+ 312 => 'United States',
1065
+ 316 => 'United States',
1066
+ 330 => 'Puerto Rico',
1067
+ 334 => 'Mexico',
1068
+ 338 => 'Jamaica',
1069
+ 340 => 'French Guiana / Guadeloupe / Martinique',
1070
+ 342 => 'Barbados',
1071
+ 344 => 'Antigua and Barbuda',
1072
+ 346 => 'Cayman Islands',
1073
+ 348 => 'British Virgin Islands',
1074
+ 350 => 'Bermuda',
1075
+ 352 => 'Grenada',
1076
+ 354 => 'Montserrat',
1077
+ 356 => 'Saint Kitts and Nevis',
1078
+ 358 => 'Saint Lucia',
1079
+ 360 => 'St. Vincent & Gren.',
1080
+ 362 => 'Bonaire, Sint Eustatius and Saba / Curacao / Netherlands Antilles',
1081
+ 363 => 'Aruba',
1082
+ 364 => 'Bahamas',
1083
+ 365 => 'Anguilla',
1084
+ 366 => 'Dominica',
1085
+ 368 => 'Cuba',
1086
+ 370 => 'Dominican Republic',
1087
+ 372 => 'Haiti',
1088
+ 374 => 'Trinidad and Tobago',
1089
+ 376 => 'Turks and Caicos Islands / US Virgin Islands',
1090
+ 400 => 'Azerbaijan',
1091
+ 401 => 'Kazakhstan',
1092
+ 402 => 'Bhutan',
1093
+ 404 => 'India',
1094
+ 405 => 'India',
1095
+ 410 => 'Pakistan',
1096
+ 412 => 'Afghanistan',
1097
+ 413 => 'Sri Lanka',
1098
+ 414 => 'Myanmar (Burma)',
1099
+ 415 => 'Lebanon',
1100
+ 416 => 'Jordan',
1101
+ 417 => 'Syrian Arab Republic',
1102
+ 418 => 'Iraq',
1103
+ 419 => 'Kuwait',
1104
+ 420 => 'Saudi Arabia',
1105
+ 421 => 'Yemen',
1106
+ 422 => 'Oman',
1107
+ 424 => 'United Arab Emirates',
1108
+ 425 => 'Israel / Palestinian Territory',
1109
+ 426 => 'Bahrain',
1110
+ 427 => 'Qatar',
1111
+ 428 => 'Mongolia',
1112
+ 429 => 'Nepal',
1113
+ 430 => 'United Arab Emirates',
1114
+ 431 => 'United Arab Emirates',
1115
+ 432 => 'Iran',
1116
+ 434 => 'Uzbekistan',
1117
+ 436 => 'Tajikistan',
1118
+ 437 => 'Kyrgyzstan',
1119
+ 438 => 'Turkmenistan',
1120
+ 440 => 'Japan',
1121
+ 441 => 'Japan',
1122
+ 450 => 'South Korea',
1123
+ 452 => 'Viet Nam',
1124
+ 454 => 'Hongkong, China',
1125
+ 455 => 'Macao, China',
1126
+ 456 => 'Cambodia',
1127
+ 457 => 'Laos P.D.R.',
1128
+ 460 => 'China',
1129
+ 466 => 'Taiwan',
1130
+ 467 => 'North Korea',
1131
+ 470 => 'Bangladesh',
1132
+ 472 => 'Maldives',
1133
+ 502 => 'Malaysia',
1134
+ 505 => 'Australia',
1135
+ 510 => 'Indonesia',
1136
+ 514 => 'Timor-Leste',
1137
+ 515 => 'Philippines',
1138
+ 520 => 'Thailand',
1139
+ 525 => 'Singapore',
1140
+ 528 => 'Brunei Darussalam',
1141
+ 530 => 'New Zealand',
1142
+ 537 => 'Papua New Guinea',
1143
+ 539 => 'Tonga',
1144
+ 540 => 'Solomon Islands',
1145
+ 541 => 'Vanuatu',
1146
+ 542 => 'Fiji',
1147
+ 544 => 'American Samoa',
1148
+ 545 => 'Kiribati',
1149
+ 546 => 'New Caledonia',
1150
+ 547 => 'French Polynesia',
1151
+ 548 => 'Cook Islands',
1152
+ 549 => 'Samoa',
1153
+ 550 => 'Micronesia',
1154
+ 552 => 'Palau',
1155
+ 553 => 'Tuvalu',
1156
+ 555 => 'Niue',
1157
+ 602 => 'Egypt',
1158
+ 603 => 'Algeria',
1159
+ 604 => 'Morocco',
1160
+ 605 => 'Tunisia',
1161
+ 606 => 'Libya',
1162
+ 607 => 'Gambia',
1163
+ 608 => 'Senegal',
1164
+ 609 => 'Mauritania',
1165
+ 610 => 'Mali',
1166
+ 611 => 'Guinea',
1167
+ 612 => 'Ivory Coast',
1168
+ 613 => 'Burkina Faso',
1169
+ 614 => 'Niger',
1170
+ 615 => 'Togo',
1171
+ 616 => 'Benin',
1172
+ 617 => 'Mauritius',
1173
+ 618 => 'Liberia',
1174
+ 619 => 'Sierra Leone',
1175
+ 620 => 'Ghana',
1176
+ 621 => 'Nigeria',
1177
+ 622 => 'Chad',
1178
+ 623 => 'Central African Rep.',
1179
+ 624 => 'Cameroon',
1180
+ 625 => 'Cape Verde',
1181
+ 626 => 'Sao Tome & Principe',
1182
+ 627 => 'Equatorial Guinea',
1183
+ 628 => 'Gabon',
1184
+ 629 => 'Congo, Republic',
1185
+ 630 => 'Congo, Dem. Rep.',
1186
+ 631 => 'Angola',
1187
+ 632 => 'Guinea-Bissau',
1188
+ 633 => 'Seychelles',
1189
+ 634 => 'Sudan',
1190
+ 635 => 'Rwanda',
1191
+ 636 => 'Ethiopia',
1192
+ 637 => 'Somalia',
1193
+ 638 => 'Djibouti',
1194
+ 639 => 'Kenya',
1195
+ 640 => 'Tanzania',
1196
+ 641 => 'Uganda',
1197
+ 642 => 'Burundi',
1198
+ 643 => 'Mozambique',
1199
+ 645 => 'Zambia',
1200
+ 646 => 'Madagascar',
1201
+ 647 => 'Reunion',
1202
+ 648 => 'Zimbabwe',
1203
+ 649 => 'Namibia',
1204
+ 650 => 'Malawi',
1205
+ 651 => 'Lesotho',
1206
+ 652 => 'Botswana',
1207
+ 653 => 'Swaziland',
1208
+ 654 => 'Comoros',
1209
+ 655 => 'South Africa',
1210
+ 657 => 'Eritrea',
1211
+ 659 => 'South Sudan',
1212
+ 702 => 'Belize',
1213
+ 704 => 'Guatemala',
1214
+ 706 => 'El Salvador',
1215
+ 708 => 'Honduras',
1216
+ 710 => 'Nicaragua',
1217
+ 712 => 'Costa Rica',
1218
+ 714 => 'Panama',
1219
+ 716 => 'Peru',
1220
+ 722 => 'Argentina Republic',
1221
+ 724 => 'Brazil',
1222
+ 730 => 'Chile',
1223
+ 732 => 'Colombia',
1224
+ 734 => 'Venezuela',
1225
+ 736 => 'Bolivia',
1226
+ 738 => 'Guyana',
1227
+ 740 => 'Ecuador',
1228
+ 744 => 'Paraguay',
1229
+ 746 => 'Suriname',
1230
+ 748 => 'Uruguay',
1231
+ 750 => 'Falkland Islands (Malvinas)',
1232
+ 901 => 'International Networks / Satellite Networks',
1233
+ },
1234
+ },
1004
1235
  # 0x0ab0-name - seen 'DualShot_Meta_Info'
1005
1236
  '0x0ab1-name' => {
1006
1237
  Name => 'DepthMapName',
@@ -19,7 +19,7 @@ package Image::ExifTool::Shortcuts;
19
19
  use strict;
20
20
  use vars qw($VERSION);
21
21
 
22
- $VERSION = '1.66';
22
+ $VERSION = '1.67';
23
23
 
24
24
  # this is a special table used to define command-line shortcuts
25
25
  # (documentation Notes may be added for these via %shortcutNotes in BuildTagLookup.pm)
@@ -118,6 +118,7 @@ $VERSION = '1.66';
118
118
  'MakerNoteCasio',
119
119
  'MakerNoteCasio2',
120
120
  'MakerNoteDJI',
121
+ 'MakerNoteDJIInfo',
121
122
  'MakerNoteFLIR',
122
123
  'MakerNoteFujiFilm',
123
124
  'MakerNoteGE',
@@ -19,7 +19,7 @@ use strict;
19
19
  use vars qw($VERSION %sigmaLensTypes);
20
20
  use Image::ExifTool::Exif;
21
21
 
22
- $VERSION = '1.31';
22
+ $VERSION = '1.32';
23
23
 
24
24
  # sigma LensType lookup (ref IB)
25
25
  %sigmaLensTypes = (
@@ -226,9 +226,35 @@ $VERSION = '1.31';
226
226
  0x1008 => 'Sigma 50mm F2.8 Macro', #NJ (DP3 Quattro kit)
227
227
  0x1009 => 'Sigma 14mm F4', #NJ (DP0 Quattro kit)
228
228
  # L-mount lenses?:
229
+ 0x4001 => 'Lumix S 24-105mm F4 Macro OIS (S-R24105)', #IB
230
+ 0x4002 => 'Lumix S 70-200mm F4 OIS (S-R70200)', #IB
231
+ 0x4003 => 'Lumix S 50mm F1.4 (S-X50)', #IB
232
+ 0x4006 => 'Lumix S 24-70mm F2.8 (S-E2470)', #IB
233
+ 0x4007 => 'Lumix S 16-35mm F4 (S-R1635)', #IB
234
+ 0x4008 => 'Lumix S 70-200mm F2.8 OIS (S-E70200)', #IB
235
+ 0x4010 => 'Lumix S 35mm F1.8 (S-S35)', #IB
236
+ 0x4011 => 'LUMIX S 18mm F1.8 (S-S18)', #IB
237
+ 0x400b => 'Lumix S 20-60mm F3.5-5.6 (S-R2060)', #IB
238
+ 0x400c => 'Lumix S 85mm F1.8 (S-S85)', #IB
239
+ 0x400d => 'Lumix S 70-300 F4.5-5.6 Macro OIS (S-R70300)', #IB
240
+ 0x400f => 'Lumix S 24mm F1.8 (S-S24)', #IB
229
241
  0x6001 => 'Sigma 150-600mm F5-6.3 DG OS HSM | S', #PH (NC, fp)
230
242
  0x6003 => 'Sigma 45mm F2.8 DG DN | C', #PH (NC, fp)
243
+ 0x6005 => 'Sigma 14-24mm F2.8 DG DN | A', #IB
231
244
  0x6006 => 'Sigma 50mm F1.4 DG HSM | A', #IB (014)
245
+ 0x6011 => 'Sigma 24-70mm F2.8 DG DN | A', #IB
246
+ 0x6012 => 'Sigma 100-400mm F5-6.3 DG DN OS | C', #IB
247
+ 0x6013 => 'Sigma 100-400mm F5-6.3 DG DN OS | C + TC-1411', #IB
248
+ 0x6015 => 'Sigma 85mm F1.4 DG DN | A', #IB
249
+ 0x6017 => 'Sigma 65mm F2 DG DN | C', #IB
250
+ 0x6018 => 'Sigma 35mm F2 DG DN | C', #IB
251
+ 0x601a => 'Sigma 28-70mm F2.8 DG DN | C', #IB
252
+ 0x601b => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #IB
253
+ 0x6020 => 'Sigma 35mm F1.4 DG DN | A', #IB
254
+ 0x6021 => 'Sigma 90mm F2.8 DG DN | C', #IB
255
+ 0x6023 => 'Sigma 20mm F2 DG DN | C', #IB
256
+ 0x6025 => 'Sigma 20mm F1.4 DG DN | A', #IB
257
+ 0x6026 => 'Sigma 24mm F1.4 DG DN | A', #IB
232
258
  0x8005 => 'Sigma 35mm F1.4 DG HSM | A', #PH (012)
233
259
  0x8009 => 'Sigma 18-35mm F1.8 DC HSM | A', #PH
234
260
  0x8900 => 'Sigma 70-300mm F4-5.6 DG OS', #PH (SD15)