exiftool_vendored 13.34.0 → 13.37.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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +55 -1
  3. data/bin/MANIFEST +5 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/Makefile.PL +1 -0
  7. data/bin/README +2 -2
  8. data/bin/build_geolocation +7 -3
  9. data/bin/exiftool +43 -33
  10. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  11. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  12. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +15 -8
  13. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  14. data/bin/lib/Image/ExifTool/Canon.pm +86 -9
  15. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  16. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  17. data/bin/lib/Image/ExifTool/DJI.pm +59 -8
  18. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  19. data/bin/lib/Image/ExifTool/EXE.pm +3 -2
  20. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  21. data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  22. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  23. data/bin/lib/Image/ExifTool/FujiFilm.pm +91 -33
  24. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  25. data/bin/lib/Image/ExifTool/GM.pm +1 -1
  26. data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  27. data/bin/lib/Image/ExifTool/Geolocation.pm +3 -1
  28. data/bin/lib/Image/ExifTool/Geotag.pm +10 -2
  29. data/bin/lib/Image/ExifTool/GoPro.pm +5 -5
  30. data/bin/lib/Image/ExifTool/Google.pm +804 -0
  31. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  32. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  33. data/bin/lib/Image/ExifTool/ID3.pm +3 -3
  34. data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  36. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  37. data/bin/lib/Image/ExifTool/LNK.pm +2 -2
  38. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  39. data/bin/lib/Image/ExifTool/M2TS.pm +4 -6
  40. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  41. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  42. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  43. data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
  44. data/bin/lib/Image/ExifTool/MakerNotes.pm +30 -7
  45. data/bin/lib/Image/ExifTool/Microsoft.pm +4 -4
  46. data/bin/lib/Image/ExifTool/Nikon.pm +6 -5
  47. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  48. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  49. data/bin/lib/Image/ExifTool/Olympus.pm +6 -1
  50. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  51. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  52. data/bin/lib/Image/ExifTool/Pentax.pm +51 -39
  53. data/bin/lib/Image/ExifTool/Protobuf.pm +12 -6
  54. data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
  55. data/bin/lib/Image/ExifTool/QuickTime.pm +30 -8
  56. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
  57. data/bin/lib/Image/ExifTool/README +7 -6
  58. data/bin/lib/Image/ExifTool/RIFF.pm +5 -3
  59. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  60. data/bin/lib/Image/ExifTool/Reconyx.pm +375 -91
  61. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  62. data/bin/lib/Image/ExifTool/Shortcuts.pm +8 -5
  63. data/bin/lib/Image/ExifTool/Sony.pm +20 -3
  64. data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -2
  65. data/bin/lib/Image/ExifTool/TagLookup.pm +5749 -5695
  66. data/bin/lib/Image/ExifTool/TagNames.pod +690 -519
  67. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  68. data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
  69. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  70. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  71. data/bin/lib/Image/ExifTool/Writer.pl +2 -1
  72. data/bin/lib/Image/ExifTool/XMP.pm +39 -32
  73. data/bin/lib/Image/ExifTool/XMP2.pl +0 -482
  74. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  75. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  76. data/bin/lib/Image/ExifTool.pm +6 -4
  77. data/bin/lib/Image/ExifTool.pod +3 -3
  78. data/bin/perl-Image-ExifTool.spec +1 -1
  79. data/lib/exiftool_vendored/version.rb +1 -1
  80. metadata +4 -6
@@ -42,7 +42,7 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
42
42
  # information extracted from H.264 video streams
43
43
  %Image::ExifTool::H264::Main = (
44
44
  GROUPS => { 2 => 'Video' },
45
- VARS => { NO_ID => 1 },
45
+ VARS => { ID_FMT => 'none' },
46
46
  NOTES => q{
47
47
  Tags extracted from H.264 video streams. The metadata for AVCHD videos is
48
48
  stored in this stream.
@@ -964,7 +964,7 @@ my %manuSig = ( #6
964
964
  %Image::ExifTool::ICC_Profile::Metadata = (
965
965
  PROCESS_PROC => \&ProcessMetadata,
966
966
  GROUPS => { 0 => 'ICC_Profile', 1 => 'ICC-meta', 2 => 'Image' },
967
- VARS => { NO_ID => 1 },
967
+ VARS => { ID_FMT => 'none' },
968
968
  NOTES => q{
969
969
  Only these few tags have been pre-defined, but ExifTool will extract any
970
970
  Metadata tags that exist.
@@ -76,7 +76,7 @@ my %userTagName = (
76
76
 
77
77
  # This table is just for documentation purposes
78
78
  %Image::ExifTool::ID3::Main = (
79
- VARS => { NO_ID => 1 },
79
+ VARS => { ID_FMT => 'none' },
80
80
  PROCESS_PROC => \&ProcessID3Dir, # (used to process 'id3 ' chunk in WAV files)
81
81
  NOTES => q{
82
82
  ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, AIFF,
@@ -720,7 +720,7 @@ my %id3v2_common = (
720
720
  # Synchronized lyrics/text
721
721
  %Image::ExifTool::ID3::SynLyrics = (
722
722
  GROUPS => { 1 => 'ID3', 2 => 'Audio' },
723
- VARS => { NO_ID => 1 },
723
+ VARS => { ID_FMT => 'none' },
724
724
  PROCESS_PROC => \&ProcessSynText,
725
725
  NOTES => 'The following tags are extracted from synchronized lyrics/text frames.',
726
726
  desc => { Name => 'SynchronizedLyricsDescription' },
@@ -754,7 +754,7 @@ my %id3v2_common = (
754
754
  %Image::ExifTool::ID3::Private = (
755
755
  PROCESS_PROC => \&Image::ExifTool::ID3::ProcessPrivate,
756
756
  GROUPS => { 1 => 'ID3', 2 => 'Audio' },
757
- VARS => { NO_ID => 1 },
757
+ VARS => { ID_FMT => 'none' },
758
758
  NOTES => q{
759
759
  ID3 private (PRIV) tags. ExifTool will decode any private tags found, even
760
760
  if they do not appear in this table.
@@ -565,7 +565,7 @@ sub ProcessJPEG_HDR($$$);
565
565
  # APP9 Media Jukebox segment (ref PH)
566
566
  %Image::ExifTool::JPEG::MediaJukebox = (
567
567
  GROUPS => { 0 => 'XML', 1 => 'MediaJukebox', 2 => 'Image' },
568
- VARS => { NO_ID => 1 },
568
+ VARS => { ID_FMT => 'none' },
569
569
  NOTES => 'Tags found in the XML metadata of the APP9 "Media Jukebox" segment.',
570
570
  Date => {
571
571
  Groups => { 2 => 'Time' },
@@ -21,7 +21,7 @@ sub ProcessTag($$$$%);
21
21
 
22
22
  %Image::ExifTool::JSON::Main = (
23
23
  GROUPS => { 0 => 'JSON', 1 => 'JSON', 2 => 'Other' },
24
- VARS => { NO_ID => 1 },
24
+ VARS => { ID_FMT => 'none' },
25
25
  PROCESS_PROC => \&ProcessJSON,
26
26
  NOTES => q{
27
27
  Other than a few tags in the table below, JSON tags have not been
@@ -18,7 +18,7 @@ $VERSION = '1.01';
18
18
  %Image::ExifTool::LIF::Main = (
19
19
  GROUPS => { 0 => 'XML', 1 => 'XML', 2 => 'Image' },
20
20
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
21
- VARS => { NO_ID => 1 },
21
+ VARS => { ID_FMT => 'none' },
22
22
  NOTES => q{
23
23
  Tags extracted from Leica Image Format (LIF) imaging files. As well as the
24
24
  tags listed below, all available information is extracted from the
@@ -26,7 +26,7 @@ sub ProcessLinkInfo($$$);
26
26
  %Image::ExifTool::LNK::Main = (
27
27
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
28
28
  GROUPS => { 2 => 'Other' },
29
- VARS => { HEX_ID => 1 }, # print hex ID's in documentation
29
+ VARS => { ID_FMT => 'hex' }, # print hex ID's in documentation
30
30
  NOTES => 'Information extracted from MS Shell Link (Windows shortcut) files.',
31
31
  # maybe the Flags aren't very useful to the user (since they are
32
32
  # mainly structural), but extract them anyway for completeness
@@ -262,7 +262,7 @@ sub ProcessLinkInfo($$$);
262
262
  GROUPS => { 2 => 'Other' },
263
263
  PROCESS_PROC => \&ProcessLinkInfo,
264
264
  FORMAT => 'int32u',
265
- VARS => { NO_ID => 1 },
265
+ VARS => { ID_FMT => 'none' },
266
266
  VolumeID => { },
267
267
  DriveType => {
268
268
  PrintConv => {
@@ -22,7 +22,7 @@ sub ExtractTags($$$);
22
22
  # Lytro LFP tags (ref PH)
23
23
  %Image::ExifTool::Lytro::Main = (
24
24
  GROUPS => { 2 => 'Camera' },
25
- VARS => { NO_ID => 1 },
25
+ VARS => { ID_FMT => 'none' },
26
26
  NOTES => q{
27
27
  Tag definitions for Lytro Light Field Picture (LFP) files. ExifTool
28
28
  extracts the full JSON metadata blocks, as well as breaking them down into
@@ -32,7 +32,7 @@ use strict;
32
32
  use vars qw($VERSION);
33
33
  use Image::ExifTool qw(:DataAccess :Utils);
34
34
 
35
- $VERSION = '1.29';
35
+ $VERSION = '1.30';
36
36
 
37
37
  # program map table "stream_type" lookup (ref 6/1/9)
38
38
  my %streamType = (
@@ -132,7 +132,7 @@ my $knotsToKph = 1.852; # knots --> km/h
132
132
  # information extracted from the MPEG-2 transport stream
133
133
  %Image::ExifTool::M2TS::Main = (
134
134
  GROUPS => { 2 => 'Video' },
135
- VARS => { NO_ID => 1 },
135
+ VARS => { ID_FMT => 'none' },
136
136
  NOTES => q{
137
137
  The MPEG-2 transport stream is used as a container for many different
138
138
  audio/video formats (including AVCHD). This table lists information
@@ -165,7 +165,7 @@ my $knotsToKph = 1.852; # knots --> km/h
165
165
  # information extracted from AC-3 audio streams
166
166
  %Image::ExifTool::M2TS::AC3 = (
167
167
  GROUPS => { 1 => 'AC3', 2 => 'Audio' },
168
- VARS => { NO_ID => 1 },
168
+ VARS => { ID_FMT => 'none' },
169
169
  NOTES => 'Tags extracted from AC-3 audio streams.',
170
170
  AudioSampleRate => {
171
171
  PrintConv => {
@@ -557,7 +557,7 @@ sub ProcessM2TS($$)
557
557
  {
558
558
  my ($et, $dirInfo) = @_;
559
559
  my $raf = $$dirInfo{RAF};
560
- my ($buff, $pLen, $upkPrefix, $j, $fileType, $eof);
560
+ my ($buff, $pLen, $j, $fileType, $eof);
561
561
  my (%pmt, %pidType, %data, %sectLen, %packLen, %fromStart);
562
562
  my ($startTime, $endTime, $fwdTime, $backScan, $maxBack);
563
563
  my $verbose = $et->Options('Verbose');
@@ -570,10 +570,8 @@ sub ProcessM2TS($$)
570
570
  unless ($1) {
571
571
  $pLen = 188; # no timecode
572
572
  $fileType = 'M2T'; # (just as a way to tell there is no timecode)
573
- $upkPrefix = 'N';
574
573
  } else {
575
574
  $pLen = 192; # 188-byte transport packet + leading 4-byte timecode (ref 4)
576
- $upkPrefix = 'x4N';
577
575
  }
578
576
  my $prePos = $pLen - 188; # byte position of packet prefix
579
577
  my $readSize = 64 * $pLen; # size of our read buffer
@@ -322,7 +322,7 @@ $VERSION = '1.17';
322
322
 
323
323
  %Image::ExifTool::MPEG::Xing = (
324
324
  GROUPS => { 2 => 'Audio' },
325
- VARS => { NO_ID => 1 },
325
+ VARS => { ID_FMT => 'none' },
326
326
  NOTES => 'These tags are extracted from the Xing/Info frame.',
327
327
  1 => { Name => 'VBRFrames' },
328
328
  2 => { Name => 'VBRBytes' },
@@ -28,7 +28,7 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
28
28
  # MWG Composite tags
29
29
  %Image::ExifTool::MWG::Composite = (
30
30
  GROUPS => { 0 => 'Composite', 1 => 'MWG', 2 => 'Image' },
31
- VARS => { NO_ID => 1 },
31
+ VARS => { ID_FMT => 'none' },
32
32
  WRITE_PROC => \&Image::ExifTool::DummyWriteProc,
33
33
  NOTES => q{
34
34
  The table below lists special Composite tags which are used to access other
@@ -116,7 +116,7 @@ my %componentDataDef = (
116
116
  # Note: The Binary flag is automatically set for all Unknown tags with unknown Type
117
117
  %Image::ExifTool::MXF::Main = (
118
118
  GROUPS => { 2 => 'Video' },
119
- VARS => { NO_LOOKUP => 1, NO_ID => 1 }, # tag ID's are too bulky
119
+ VARS => { NO_LOOKUP => 1, ID_FMT => 'none' }, # tag ID's are too bulky
120
120
  NOTES => q{
121
121
  Tags extracted from Material Exchange Format files. Tag ID's are not listed
122
122
  because they are bulky 16-byte binary values.
@@ -52,7 +52,7 @@ my %delXAttr = (
52
52
  # "mdls" tags (ref PH)
53
53
  %Image::ExifTool::MacOS::MDItem = (
54
54
  WRITE_PROC => \&Image::ExifTool::DummyWriteProc,
55
- VARS => { NO_ID => 1 },
55
+ VARS => { ID_FMT => 'none' },
56
56
  GROUPS => { 0 => 'File', 1 => 'MacOS', 2 => 'Other' },
57
57
  NOTES => q{
58
58
  MDItem tags are extracted using the "mdls" utility. They are extracted if
@@ -245,7 +245,7 @@ my %delXAttr = (
245
245
  %Image::ExifTool::MacOS::XAttr = (
246
246
  WRITE_PROC => \&Image::ExifTool::DummyWriteProc,
247
247
  GROUPS => { 0 => 'File', 1 => 'MacOS', 2 => 'Other' },
248
- VARS => { NO_ID => 1 }, # (id's are too long)
248
+ VARS => { ID_FMT => 'none' }, # (id's are too long)
249
249
  NOTES => q{
250
250
  XAttr tags are extracted using the "xattr" utility. They are extracted if
251
251
  any "XAttr*" tag or the MacOS group is specifically requested, or by setting
@@ -21,7 +21,7 @@ sub ProcessKodakPatch($$$);
21
21
  sub WriteUnknownOrPreview($$$);
22
22
  sub FixLeicaBase($$;$);
23
23
 
24
- $VERSION = '2.17';
24
+ $VERSION = '2.18';
25
25
 
26
26
  my $debug; # set to 1 to enable debugging code
27
27
 
@@ -157,6 +157,13 @@ my $debug; # set to 1 to enable debugging code
157
157
  FixOffsets => '$valuePtr -= 210 if $tagID >= 0x1303',
158
158
  },
159
159
  },
160
+ {
161
+ Name => 'MakerNoteGoogle',
162
+ Condition => '$$valPt =~ /^HDRP[\x02\x03]/',
163
+ SubDirectory => {
164
+ TagTable => 'Image::ExifTool::Google::HDRPlusMakerNote',
165
+ },
166
+ },
160
167
  {
161
168
  Name => 'MakerNoteHasselblad',
162
169
  Condition => '$$self{Make} eq "Hasselblad"',
@@ -843,29 +850,45 @@ my $debug; # set to 1 to enable debugging code
843
850
  PutFirst => 1, # place immediately after TIFF header
844
851
  },
845
852
  {
846
- Name => 'MakerNoteReconyx',
853
+ Name => 'MakerNoteReconyxHyperFire',
847
854
  Condition => q{
848
855
  $$valPt =~ /^\x01\xf1([\x02\x03]\x00)?/ and
849
856
  ($1 or $$self{Make} eq "RECONYX")
850
857
  },
851
858
  SubDirectory => {
852
- TagTable => 'Image::ExifTool::Reconyx::Main',
859
+ TagTable => 'Image::ExifTool::Reconyx::HyperFire',
853
860
  ByteOrder => 'Little-endian',
854
861
  },
855
862
  },
856
863
  {
857
- Name => 'MakerNoteReconyx2',
864
+ Name => 'MakerNoteReconyxUltraFire',
858
865
  Condition => '$$valPt =~ /^RECONYXUF\0/',
859
866
  SubDirectory => {
860
- TagTable => 'Image::ExifTool::Reconyx::Type2',
867
+ TagTable => 'Image::ExifTool::Reconyx::UltraFire',
861
868
  ByteOrder => 'Little-endian',
862
869
  },
863
870
  },
864
871
  {
865
- Name => 'MakerNoteReconyx3',
872
+ Name => 'MakerNoteReconyxHyperFire2',
866
873
  Condition => '$$valPt =~ /^RECONYXH2\0/',
867
874
  SubDirectory => {
868
- TagTable => 'Image::ExifTool::Reconyx::Type3',
875
+ TagTable => 'Image::ExifTool::Reconyx::HyperFire2',
876
+ ByteOrder => 'Little-endian',
877
+ },
878
+ },
879
+ {
880
+ Name => 'MakerNoteReconyxMicroFire',
881
+ Condition => '$$valPt =~ /^RECONYXMF\0/',
882
+ SubDirectory => {
883
+ TagTable => 'Image::ExifTool::Reconyx::MicroFire',
884
+ ByteOrder => 'Little-endian',
885
+ },
886
+ },
887
+ {
888
+ Name => 'MakerNoteReconyxHyperFire4K',
889
+ Condition => '$$valPt =~ /^RECONYXHF4K\0/',
890
+ SubDirectory => {
891
+ TagTable => 'Image::ExifTool::Reconyx::HyperFire4K',
869
892
  ByteOrder => 'Little-endian',
870
893
  },
871
894
  },
@@ -230,7 +230,7 @@ sub CheckXtra($$$);
230
230
  GROUPS => { 0 => 'XMP', 1 => 'XMP-microsoft', 2 => 'Image' },
231
231
  NAMESPACE => 'MicrosoftPhoto',
232
232
  TABLE_DESC => 'XMP Microsoft',
233
- VARS => { NO_ID => 1 },
233
+ VARS => { ID_FMT => 'none' },
234
234
  NOTES => q{
235
235
  Microsoft Photo 1.0 schema XMP tags. This is likely not a complete list,
236
236
  but represents tags which have been observed in sample images. The actual
@@ -263,7 +263,7 @@ sub CheckXtra($$$);
263
263
  GROUPS => { 0 => 'XMP', 1 => 'XMP-MP1', 2 => 'Image' },
264
264
  NAMESPACE => 'MP1',
265
265
  TABLE_DESC => 'XMP Microsoft Photo',
266
- VARS => { NO_ID => 1 },
266
+ VARS => { ID_FMT => 'none' },
267
267
  NOTES => q{
268
268
  Microsoft Photo 1.1 schema XMP tags which have been observed.
269
269
  },
@@ -320,7 +320,7 @@ my %sRegions = (
320
320
  GROUPS => { 0 => 'XMP', 1 => 'XMP-MP', 2 => 'Image' },
321
321
  NAMESPACE => 'MP',
322
322
  TABLE_DESC => 'XMP Microsoft Photo',
323
- VARS => { NO_ID => 1 },
323
+ VARS => { ID_FMT => 'none' },
324
324
  NOTES => q{
325
325
  Microsoft Photo 1.2 schema XMP tags which have been observed.
326
326
  },
@@ -361,7 +361,7 @@ my %sRegions = (
361
361
  WRITE_GROUP => 'Microsoft',
362
362
  AVOID => 1,
363
363
  GROUPS => { 0 => 'QuickTime', 2 => 'Video' },
364
- VARS => { NO_ID => 1 },
364
+ VARS => { ID_FMT => 'none' },
365
365
  NOTES => q{
366
366
  Tags found in the Microsoft "Xtra" atom of QuickTime videos. Tag ID's are
367
367
  not shown because some are unruly GUID's. Currently most of these tags are
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
65
65
  use Image::ExifTool::GPS;
66
66
  use Image::ExifTool::XMP;
67
67
 
68
- $VERSION = '4.50';
68
+ $VERSION = '4.51';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -583,6 +583,7 @@ sub GetAFPointGrid($$;$);
583
583
  '0E 4A 31 48 23 2D 0E 02' => 'Tamron SP AF 20-40mm f/2.7-3.5 (166D)',
584
584
  'FE 48 37 5C 24 24 DF 0E' => 'Tamron SP 24-70mm f/2.8 Di VC USD (A007)', #24
585
585
  'CE 47 37 5C 25 25 DF 4E' => 'Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032)', #forum9110
586
+ 'CE 00 37 5C 25 25 DF 4E' => 'Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032)', #github345
586
587
  '45 41 37 72 2C 3C 48 02' => 'Tamron SP AF 24-135mm f/3.5-5.6 AD Aspherical (IF) Macro (190D)',
587
588
  '33 54 3C 5E 24 24 62 02' => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09)',
588
589
  'FA 54 3C 5E 24 24 84 06' => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09NII)', #JD
@@ -13068,7 +13069,7 @@ my %nikonFocalConversions = (
13068
13069
  GROUPS => { 0 => 'XMP', 1 => 'XMP-ast', 2 => 'Image' },
13069
13070
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
13070
13071
  NAMESPACE => 'ast',
13071
- VARS => { NO_ID => 1 },
13072
+ VARS => { ID_FMT => 'none' },
13072
13073
  NOTES => 'Tags used by Nikon NX Studio in Nikon NKSC sidecar files and trailers.',
13073
13074
  about => { },
13074
13075
  version => { },
@@ -13126,7 +13127,7 @@ my %nikonFocalConversions = (
13126
13127
  GROUPS => { 0 => 'XMP', 1 => 'XMP-sdc', 2 => 'Image' },
13127
13128
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
13128
13129
  NAMESPACE => 'sdc',
13129
- VARS => { NO_ID => 1 },
13130
+ VARS => { ID_FMT => 'none' },
13130
13131
  about => { },
13131
13132
  version => { },
13132
13133
  appversion => { Name => 'AppVersion' },
@@ -13136,7 +13137,7 @@ my %nikonFocalConversions = (
13136
13137
  GROUPS => { 0 => 'XMP', 1 => 'XMP-nine', 2 => 'Image' },
13137
13138
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
13138
13139
  NAMESPACE => 'nine',
13139
- VARS => { NO_ID => 1 },
13140
+ VARS => { ID_FMT => 'none' },
13140
13141
  about => { },
13141
13142
  version => { },
13142
13143
  Label => { },
@@ -13153,7 +13154,7 @@ my %nikonFocalConversions = (
13153
13154
  %Image::ExifTool::Nikon::NineEdits = (
13154
13155
  GROUPS => { 0 => 'XML', 1 => 'NineEdits', 2 => 'Image' },
13155
13156
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
13156
- VARS => { NO_ID => 1 },
13157
+ VARS => { ID_FMT => 'none' },
13157
13158
  NOTES => 'XML-based tags used to store editing information.',
13158
13159
  filterParametersBinary => { %base64bin },
13159
13160
  filterParametersExportExportData => { %base64bin },
@@ -54,7 +54,7 @@ my @vectorVals;
54
54
  %Image::ExifTool::OOXML::Main = (
55
55
  GROUPS => { 0 => 'XML', 1 => 'XML', 2 => 'Document' },
56
56
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
57
- VARS => { NO_ID => 1 },
57
+ VARS => { ID_FMT => 'none' },
58
58
  NOTES => q{
59
59
  The Office Open XML (OOXML) format was introduced with Microsoft Office 2007
60
60
  and is used by file types such as DOCX, PPTX and XLSX. These are
@@ -21,7 +21,7 @@ $VERSION = '1.04';
21
21
 
22
22
  my $MAX_PACKETS = 2; # maximum packets to scan from each stream at start of file
23
23
 
24
- # Information types recognizedi in Ogg files
24
+ # Information types recognized in Ogg files
25
25
  %Image::ExifTool::Ogg::Main = (
26
26
  NOTES => q{
27
27
  ExifTool extracts the following types of information from Ogg files. See
@@ -41,7 +41,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
41
41
  use Image::ExifTool::Exif;
42
42
  use Image::ExifTool::APP12;
43
43
 
44
- $VERSION = '2.89';
44
+ $VERSION = '2.91';
45
45
 
46
46
  sub PrintLensInfo($$$);
47
47
 
@@ -117,8 +117,10 @@ my %olympusLensTypes = (
117
117
  '0 35 10' => 'Olympus M.Zuiko 100-400mm F5.0-6.3', #IB (also OM System M.Zuiko Digital ED 100-400mm F5.0-6.3 IS II", forum2833)
118
118
  '0 36 10' => 'Olympus M.Zuiko Digital ED 8-25mm F4 Pro', #IB
119
119
  '0 37 10' => 'Olympus M.Zuiko Digital ED 40-150mm F4.0 Pro', #forum3833
120
+ '0 38 10' => 'Olympus M.Zuiko Digital ED 20mm F1.4 Pro',
120
121
  '0 39 10' => 'Olympus M.Zuiko Digital ED 90mm F3.5 Macro IS Pro', #forum3833
121
122
  '0 40 10' => 'Olympus M.Zuiko Digital ED 150-600mm F5.0-6.3', #forum15652
123
+ '0 41 10' => 'OM System M.Zuiko Digital ED 50-200mm F2.8 IS Pro', #github#352
122
124
  # Sigma lenses
123
125
  '1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
124
126
  '1 01 10' => 'Sigma 30mm F2.8 EX DN', #NJ
@@ -2252,12 +2254,15 @@ my %indexInfo = (
2252
2254
  5 => 'i-Enhance', #11
2253
2255
  6 => 'e-Portrait', #23
2254
2256
  7 => 'Color Creator', #23
2257
+ 8 => 'Underwater', #7
2255
2258
  9 => 'Color Profile 1', #23
2256
2259
  10 => 'Color Profile 2', #23
2257
2260
  11 => 'Color Profile 3', #23
2258
2261
  12 => 'Monochrome Profile 1', #23
2259
2262
  13 => 'Monochrome Profile 2', #23
2260
2263
  14 => 'Monochrome Profile 3', #23
2264
+ 17 => 'Art Mode', #7
2265
+ 18 => 'Monochrome Profile 4', #7
2261
2266
  256 => 'Monotone',
2262
2267
  512 => 'Sepia',
2263
2268
  }],
@@ -20,7 +20,7 @@ $VERSION = '1.00';
20
20
  # Other info
21
21
  %Image::ExifTool::Other::PFM = (
22
22
  GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
23
- VARS => { NO_ID => 1 },
23
+ VARS => { ID_FMT => 'none' },
24
24
  NOTES => q{
25
25
  Tags extracted from Portable FloatMap images. See
26
26
  L<http://www.pauldebevec.com/Research/HDR/PFM/> for the specification.
@@ -2553,7 +2553,7 @@ my %shootingMode = (
2553
2553
  NAMESPACE => 'xmpDSA',
2554
2554
  WRITABLE => 'string',
2555
2555
  AVOID => 1,
2556
- VARS => { NO_ID => 1 },
2556
+ VARS => { ID_FMT => 'none' },
2557
2557
  NOTES => 'XMP Digital Shift Assistant tags written by some Leica cameras.',
2558
2558
  Version => { }, # eg. "1.0.0"
2559
2559
  CorrectionAlreadyApplied => { Writable => 'boolean' },
@@ -59,7 +59,7 @@ use Image::ExifTool::Exif;
59
59
  use Image::ExifTool::GPS;
60
60
  use Image::ExifTool::HP;
61
61
 
62
- $VERSION = '3.55';
62
+ $VERSION = '3.58';
63
63
 
64
64
  sub CryptShutterCount($$);
65
65
  sub PrintFilter($$$);
@@ -416,6 +416,8 @@ sub AFAreasK3III($$);
416
416
  #
417
417
  '31 1' => '18.3mm F2.8', #PH (GR III built-in)
418
418
  '31 4' => '26.1mm F2.8', #PH (GR IIIx built-in)
419
+ '31 5' => '26.1mm F2.8 GT-2 TC', #KG (GR IIIx built-in plus GT-2 TC)
420
+ '31 8' => '18.3mm F2.8', #KG (GR IV built-in)
419
421
  );
420
422
 
421
423
  # Pentax model ID codes - PH
@@ -564,6 +566,7 @@ my %pentaxModelID = (
564
566
  0x1329a => 'GR IIIx', # (Ricoh)
565
567
  0x132b8 => 'KF', #github322 (Ricoh)
566
568
  0x132d6 => 'K-3 Mark III Monochrome', #github226 (Ricoh)
569
+ 0x132e0 => 'GR IV', #github347 (Ricoh)
567
570
  );
568
571
 
569
572
  # Pentax city codes - (PH, Optio WP)
@@ -1182,7 +1185,8 @@ my %binaryDataAttrs = (
1182
1185
  0x111 => 'AF-C (Release-priority)', #PH (K-5,K-3)
1183
1186
  0x112 => 'AF-A (Release-priority)', #PH (K-3)
1184
1187
  0x120 => 'Contrast-detect (Release-priority)', #PH (K-01)
1185
- # bit 15 indicates macro mode (disabled for MF, and defaults to Select for Snap, Infinity)
1188
+ # bit 15 indicates macro mode (disabled for MF, and defaults to Select for Snap, Infinity) #KG 'disabled for MF' - in contradiction with 0x8003 ??
1189
+ 0x8003 => 'Manual (Macro)', # (GR IV)
1186
1190
  0x8006 => 'Auto-area (Macro)', # (GR III)
1187
1191
  0x8007 => 'Zone Select (Macro)', # (GR III)
1188
1192
  0x8008 => 'Select (Macro)', # (GR III)
@@ -1969,16 +1973,18 @@ my %binaryDataAttrs = (
1969
1973
  '19 0' => 'Astrotracer', #29
1970
1974
  # extra K10D modes (ref 16)
1971
1975
  '13 0' => 'Shutter & Aperture Priority AE',
1976
+ '14 0' => 'Shutter Priority AE', #KG (K-3III))
1972
1977
  '15 0' => 'Sensitivity Priority AE',
1973
1978
  '16 0' => 'Flash X-Sync Speed AE',
1979
+ '17 0' => 'Flash X-Sync Speed', #KG (K-3III))
1974
1980
  '18 0' => 'Auto Program (Normal)', #PH (K-5)
1975
1981
  '18 1' => 'Auto Program (Hi-speed)', #PH (NC)
1976
1982
  '18 2' => 'Auto Program (DOF)', #PH (K-5)
1977
1983
  '18 3' => 'Auto Program (MTF)', #PH (NC)
1978
1984
  '18 22' => 'Auto Program (Shallow DOF)', #PH (NC)
1979
1985
  '20 22' => 'Blur Control', #PH (Q)
1980
- '24 0' => 'Aperture Priority (Adv.Hyp)', #KG
1981
- '25 0' => 'Manual Exposure (Adv.Hyp)', #KG
1986
+ '24 0' => 'Aperture Priority (Adv.Hyp)', #KG (K-3III)
1987
+ '25 0' => 'Manual Exposure (Adv.Hyp)', #KG (K-3III)
1982
1988
  '26 0' => 'Shutter and Aperture Priority (TAv)', #PH (K-3III)
1983
1989
  '249 0' => 'Movie (TAv)', #31
1984
1990
  '250 0' => 'Movie (TAv, Auto Aperture)', #31
@@ -2208,7 +2214,9 @@ my %binaryDataAttrs = (
2208
2214
  # 256 - seen for GR III
2209
2215
  # 257 - seen for GR III
2210
2216
  # 262 - seen for GR III
2211
- 32768 => 'n/a',
2217
+ 32768 => 'Standard', #KG (K-3IIIm) (was "n/a" previously - PH)
2218
+ 32769 => 'Hard', #KG (K-3IIIm)
2219
+ 32770 => 'Soft', #KG (K-3IIIm)
2212
2220
  },
2213
2221
  },
2214
2222
  0x0050 => { #PH
@@ -5120,52 +5128,52 @@ my %binaryDataAttrs = (
5120
5128
  PrintConv => { 0 => 'Off', 1 => 'Short', 2 => 'Medium', 3 => 'Long' },
5121
5129
  },
5122
5130
  0x021f => { #KG
5123
- Name => 'FirstFrameActionInAFC',
5124
- Condition => '$$self{Model} =~ /K-3 Mark III/',
5125
- PrintConv => {
5126
- '0' => 'Auto',
5127
- '1' => 'Release Priority',
5128
- '2' => 'Focus Priority',
5129
- # there is at least another value '3' but I couldn't figure out the
5130
- # meaning. However, this occurs for a few AF-S captures, so it has
5131
- # no real practical meaning.
5132
- },
5131
+ Name => 'FirstFrameActionInAFC',
5132
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5133
+ PrintConv => {
5134
+ '0' => 'Auto',
5135
+ '1' => 'Release Priority',
5136
+ '2' => 'Focus Priority',
5137
+ # there is at least another value '3' but I couldn't figure out the
5138
+ # meaning. However, this occurs for a few AF-S captures, so it has
5139
+ # no real practical meaning.
5140
+ },
5133
5141
  },
5134
5142
  0x0220 => { #KG
5135
- Name => 'ActionInAFCCont',
5136
- Condition => '$$self{Model} =~ /K-3 Mark III/',
5137
- PrintConv => {
5138
- '0' => 'Auto',
5139
- '1' => 'Focus Priority',
5140
- '2' => 'FPS Priority',
5141
- },
5143
+ Name => 'ActionInAFCCont',
5144
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5145
+ PrintConv => {
5146
+ '0' => 'Auto',
5147
+ '1' => 'Focus Priority',
5148
+ '2' => 'FPS Priority',
5149
+ },
5142
5150
  },
5143
5151
  545 => { #KG
5144
- Name => 'AFCHold',
5145
- Condition => '$$self{Model} =~ /K-3 Mark III/',
5146
- Mask => 0x03,
5147
- PrintConv => { 0 => 'Low', 1 => 'Medium', 2 => 'High', 3 => 'Off' },
5152
+ Name => 'AFCHold',
5153
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5154
+ Mask => 0x03,
5155
+ PrintConv => { 0 => 'Low', 1 => 'Medium', 2 => 'High', 3 => 'Off' },
5148
5156
  },
5149
5157
  545.1 => { #KG
5150
- Name => 'AFCSensitivity',
5158
+ Name => 'AFCPointTracking',
5151
5159
  Condition => '$$self{Model} =~ /K-3 Mark III/',
5152
5160
  Mask => 0x0c,
5153
- PrintConv => '5 - $val',
5154
- PrintConvInv => '5 - $val',
5161
+ PrintConv => { 0 => 'Type 1', 1 => 'Type 2', 2 => 'Type 3' },
5155
5162
  },
5156
5163
  545.2 => { #KG
5157
- Name => 'AFCPointTracking',
5164
+ Name => 'AFCSensitivity',
5158
5165
  Condition => '$$self{Model} =~ /K-3 Mark III/',
5159
5166
  Mask => 0x70,
5160
- PrintConv => { 0 => 'Type 1', 1 => 'Type 2', 2 => 'Type 3' },
5167
+ PrintConv => '5 - $val',
5168
+ PrintConvInv => '5 - $val',
5161
5169
  },
5162
5170
  0x0960 => { #KG
5163
- Name => 'SubjectRecognition',
5164
- Condition => '$$self{Model} =~ /K-3 Mark III/',
5165
- PrintConv => {
5166
- 0 => 'Off',
5167
- 1 => 'On',
5168
- },
5171
+ Name => 'SubjectRecognition',
5172
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5173
+ PrintConv => {
5174
+ 0 => 'Off',
5175
+ 1 => 'On',
5176
+ },
5169
5177
  },
5170
5178
  );
5171
5179
 
@@ -5855,8 +5863,8 @@ my %binaryDataAttrs = (
5855
5863
  %binaryDataAttrs,
5856
5864
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
5857
5865
  FORMAT => 'int16u',
5858
- DATAMEMBER => [ 3 ],
5859
- NOTES => 'AF tags written by the K-3 Mark III, GR III and GR IIIx.',
5866
+ DATAMEMBER => [ 2, 3 ],
5867
+ NOTES => 'AF tags written by the K-3 Mark III, GR III, GR IIIx and GR IV.',
5860
5868
  0 => {
5861
5869
  Name => 'AFInfo',
5862
5870
  Format => 'int16u[$size/2]',
@@ -5902,6 +5910,10 @@ my %binaryDataAttrs = (
5902
5910
  0x200b => 'Contrast-detect Spot',
5903
5911
  },
5904
5912
  },
5913
+ 2 => {
5914
+ Name => 'MaxNumAFPoints',
5915
+ RawConv => '$$self{MaxNumAFPoints} = $val',
5916
+ },
5905
5917
  3 => {
5906
5918
  Name => 'NumAFPoints',
5907
5919
  RawConv => '$$self{NumAFPoints} = $val',