exiftool_vendored 13.36.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +23 -0
  3. data/bin/MANIFEST +5 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +2 -2
  7. data/bin/build_geolocation +7 -3
  8. data/bin/exiftool +2 -2
  9. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  10. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  11. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +15 -8
  12. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  13. data/bin/lib/Image/ExifTool/Canon.pm +59 -5
  14. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  15. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  16. data/bin/lib/Image/ExifTool/DJI.pm +5 -5
  17. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  18. data/bin/lib/Image/ExifTool/EXE.pm +3 -2
  19. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  20. data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  21. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  22. data/bin/lib/Image/ExifTool/FujiFilm.pm +5 -4
  23. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  24. data/bin/lib/Image/ExifTool/GM.pm +1 -1
  25. data/bin/lib/Image/ExifTool/Geolocation.pm +3 -1
  26. data/bin/lib/Image/ExifTool/Geotag.pm +10 -2
  27. data/bin/lib/Image/ExifTool/GoPro.pm +5 -5
  28. data/bin/lib/Image/ExifTool/Google.pm +804 -0
  29. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  30. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  31. data/bin/lib/Image/ExifTool/ID3.pm +3 -3
  32. data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
  33. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  34. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  35. data/bin/lib/Image/ExifTool/LNK.pm +2 -2
  36. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  37. data/bin/lib/Image/ExifTool/M2TS.pm +2 -2
  38. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  39. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  40. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  41. data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
  42. data/bin/lib/Image/ExifTool/MakerNotes.pm +30 -7
  43. data/bin/lib/Image/ExifTool/Microsoft.pm +4 -4
  44. data/bin/lib/Image/ExifTool/Nikon.pm +4 -4
  45. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  46. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  47. data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
  48. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  49. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  50. data/bin/lib/Image/ExifTool/Pentax.pm +18 -7
  51. data/bin/lib/Image/ExifTool/Protobuf.pm +12 -6
  52. data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
  53. data/bin/lib/Image/ExifTool/QuickTime.pm +30 -8
  54. data/bin/lib/Image/ExifTool/README +7 -6
  55. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  56. data/bin/lib/Image/ExifTool/Reconyx.pm +375 -91
  57. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  58. data/bin/lib/Image/ExifTool/Shortcuts.pm +8 -5
  59. data/bin/lib/Image/ExifTool/Sony.pm +18 -3
  60. data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -2
  61. data/bin/lib/Image/ExifTool/TagLookup.pm +5745 -5695
  62. data/bin/lib/Image/ExifTool/TagNames.pod +662 -509
  63. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  64. data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
  65. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  66. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  67. data/bin/lib/Image/ExifTool/XMP.pm +31 -30
  68. data/bin/lib/Image/ExifTool/XMP2.pl +0 -482
  69. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  70. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  71. data/bin/lib/Image/ExifTool.pm +4 -4
  72. data/bin/lib/Image/ExifTool.pod +3 -3
  73. data/bin/perl-Image-ExifTool.spec +1 -1
  74. data/lib/exiftool_vendored/version.rb +1 -1
  75. 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
@@ -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 => {
@@ -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
@@ -13069,7 +13069,7 @@ my %nikonFocalConversions = (
13069
13069
  GROUPS => { 0 => 'XMP', 1 => 'XMP-ast', 2 => 'Image' },
13070
13070
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
13071
13071
  NAMESPACE => 'ast',
13072
- VARS => { NO_ID => 1 },
13072
+ VARS => { ID_FMT => 'none' },
13073
13073
  NOTES => 'Tags used by Nikon NX Studio in Nikon NKSC sidecar files and trailers.',
13074
13074
  about => { },
13075
13075
  version => { },
@@ -13127,7 +13127,7 @@ my %nikonFocalConversions = (
13127
13127
  GROUPS => { 0 => 'XMP', 1 => 'XMP-sdc', 2 => 'Image' },
13128
13128
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
13129
13129
  NAMESPACE => 'sdc',
13130
- VARS => { NO_ID => 1 },
13130
+ VARS => { ID_FMT => 'none' },
13131
13131
  about => { },
13132
13132
  version => { },
13133
13133
  appversion => { Name => 'AppVersion' },
@@ -13137,7 +13137,7 @@ my %nikonFocalConversions = (
13137
13137
  GROUPS => { 0 => 'XMP', 1 => 'XMP-nine', 2 => 'Image' },
13138
13138
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
13139
13139
  NAMESPACE => 'nine',
13140
- VARS => { NO_ID => 1 },
13140
+ VARS => { ID_FMT => 'none' },
13141
13141
  about => { },
13142
13142
  version => { },
13143
13143
  Label => { },
@@ -13154,7 +13154,7 @@ my %nikonFocalConversions = (
13154
13154
  %Image::ExifTool::Nikon::NineEdits = (
13155
13155
  GROUPS => { 0 => 'XML', 1 => 'NineEdits', 2 => 'Image' },
13156
13156
  PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
13157
- VARS => { NO_ID => 1 },
13157
+ VARS => { ID_FMT => 'none' },
13158
13158
  NOTES => 'XML-based tags used to store editing information.',
13159
13159
  filterParametersBinary => { %base64bin },
13160
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.90';
44
+ $VERSION = '2.91';
45
45
 
46
46
  sub PrintLensInfo($$$);
47
47
 
@@ -120,6 +120,7 @@ my %olympusLensTypes = (
120
120
  '0 38 10' => 'Olympus M.Zuiko Digital ED 20mm F1.4 Pro',
121
121
  '0 39 10' => 'Olympus M.Zuiko Digital ED 90mm F3.5 Macro IS Pro', #forum3833
122
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
123
124
  # Sigma lenses
124
125
  '1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
125
126
  '1 01 10' => 'Sigma 30mm F2.8 EX DN', #NJ
@@ -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.57';
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
@@ -1183,7 +1185,8 @@ my %binaryDataAttrs = (
1183
1185
  0x111 => 'AF-C (Release-priority)', #PH (K-5,K-3)
1184
1186
  0x112 => 'AF-A (Release-priority)', #PH (K-3)
1185
1187
  0x120 => 'Contrast-detect (Release-priority)', #PH (K-01)
1186
- # 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)
1187
1190
  0x8006 => 'Auto-area (Macro)', # (GR III)
1188
1191
  0x8007 => 'Zone Select (Macro)', # (GR III)
1189
1192
  0x8008 => 'Select (Macro)', # (GR III)
@@ -1970,16 +1973,18 @@ my %binaryDataAttrs = (
1970
1973
  '19 0' => 'Astrotracer', #29
1971
1974
  # extra K10D modes (ref 16)
1972
1975
  '13 0' => 'Shutter & Aperture Priority AE',
1976
+ '14 0' => 'Shutter Priority AE', #KG (K-3III))
1973
1977
  '15 0' => 'Sensitivity Priority AE',
1974
1978
  '16 0' => 'Flash X-Sync Speed AE',
1979
+ '17 0' => 'Flash X-Sync Speed', #KG (K-3III))
1975
1980
  '18 0' => 'Auto Program (Normal)', #PH (K-5)
1976
1981
  '18 1' => 'Auto Program (Hi-speed)', #PH (NC)
1977
1982
  '18 2' => 'Auto Program (DOF)', #PH (K-5)
1978
1983
  '18 3' => 'Auto Program (MTF)', #PH (NC)
1979
1984
  '18 22' => 'Auto Program (Shallow DOF)', #PH (NC)
1980
1985
  '20 22' => 'Blur Control', #PH (Q)
1981
- '24 0' => 'Aperture Priority (Adv.Hyp)', #KG
1982
- '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)
1983
1988
  '26 0' => 'Shutter and Aperture Priority (TAv)', #PH (K-3III)
1984
1989
  '249 0' => 'Movie (TAv)', #31
1985
1990
  '250 0' => 'Movie (TAv, Auto Aperture)', #31
@@ -2209,7 +2214,9 @@ my %binaryDataAttrs = (
2209
2214
  # 256 - seen for GR III
2210
2215
  # 257 - seen for GR III
2211
2216
  # 262 - seen for GR III
2212
- 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)
2213
2220
  },
2214
2221
  },
2215
2222
  0x0050 => { #PH
@@ -5856,8 +5863,8 @@ my %binaryDataAttrs = (
5856
5863
  %binaryDataAttrs,
5857
5864
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
5858
5865
  FORMAT => 'int16u',
5859
- DATAMEMBER => [ 3 ],
5860
- 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.',
5861
5868
  0 => {
5862
5869
  Name => 'AFInfo',
5863
5870
  Format => 'int16u[$size/2]',
@@ -5903,6 +5910,10 @@ my %binaryDataAttrs = (
5903
5910
  0x200b => 'Contrast-detect Spot',
5904
5911
  },
5905
5912
  },
5913
+ 2 => {
5914
+ Name => 'MaxNumAFPoints',
5915
+ RawConv => '$$self{MaxNumAFPoints} = $val',
5916
+ },
5906
5917
  3 => {
5907
5918
  Name => 'NumAFPoints',
5908
5919
  RawConv => '$$self{NumAFPoints} = $val',
@@ -5,9 +5,12 @@
5
5
  #
6
6
  # Revisions: 2024-12-04 - P. Harvey Created
7
7
  #
8
- # Notes: Tag definitions for Protobuf tags support additional 'signed',
9
- # 'unsigned' and 'int64s' formats for varInt (type 0) values,
10
- # and 'rational' for byte (type 2) values
8
+ # Notes: Tag definitions for Protobuf tags support 'signed', 'unsigned',
9
+ # and 'int64s' formats for VARINT (type 0) values, 'int64u',
10
+ # 'int64s', 'rational64u', 'rational64s' and 'double' for I64
11
+ # (type 1), 'undef', 'string' and 'rational' for LEN (type 2),
12
+ # and 'int32u', 'int32s', 'rational32u', 'rational32s',
13
+ # 'fixed32u', 'fixed32s' and 'float' for I32 (type 5) values.
11
14
  #
12
15
  # References: 1) https://protobuf.dev/programming-guides/encoding/
13
16
  #------------------------------------------------------------------------------
@@ -18,7 +21,7 @@ use strict;
18
21
  use vars qw($VERSION);
19
22
  use Image::ExifTool qw(:DataAccess :Utils);
20
23
 
21
- $VERSION = '1.04';
24
+ $VERSION = '1.05';
22
25
 
23
26
  sub ProcessProtobuf($$$;$);
24
27
 
@@ -128,6 +131,9 @@ sub ProcessProtobuf($$$;$)
128
131
  $$et{ProtoPrefix}{$dirName} = '' unless defined $$et{ProtoPrefix}{$dirName};
129
132
  SetByteOrder('II');
130
133
  }
134
+ # prefix for unknown tags
135
+ my $unkPre = $$tagTbl{TAG_PREFIX} ? $$tagTbl{TAG_PREFIX} . '_' : 'Protobuf ';
136
+
131
137
  # loop through protobuf records
132
138
  for (;;) {
133
139
  my $pos = $$dirInfo{Pos};
@@ -195,7 +201,7 @@ sub ProcessProtobuf($$$;$)
195
201
  # (fall through to process known SubDirectory)
196
202
  } elsif ($$tagInfo{IsProtobuf}) {
197
203
  # process Unknown protobuf directories
198
- $et->VPrint(1, "$$et{INDENT}Protobuf $tag (" . length($buff) . " bytes) -->\n");
204
+ $et->VPrint(1, "$$et{INDENT}${unkPre}$tag (" . length($buff) . " bytes) -->\n");
199
205
  my $addr = $dataPos + $$dirInfo{Pos} - length($buff);
200
206
  $et->VerboseDump(\$buff, Addr => $addr, Prefix => $$et{INDENT});
201
207
  my %subdir = ( DataPt => \$buff, DataPos => $addr, DirName => $dirName );
@@ -212,7 +218,7 @@ sub ProcessProtobuf($$$;$)
212
218
  my $denom = VarInt(\%dir);
213
219
  $rat = " (rational $num/$denom)" if $denom and $dir{Pos} == length($buff);
214
220
  }
215
- if ($buff !~ /[^\x20-\x7e]/) {
221
+ if ($buff !~ /[^\r\n\t\x20-\x7e]/) {
216
222
  $val = $buff; # assume this is an ASCII string
217
223
  } elsif (length($buff) % 4) {
218
224
  $val = '0x' . unpack('H*', $buff);
@@ -28,7 +28,7 @@ my @qualcommFormat = (
28
28
  %Image::ExifTool::Qualcomm::Main = (
29
29
  PROCESS_PROC => \&ProcessQualcomm,
30
30
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
31
- VARS => { NO_ID => 1, NO_LOOKUP => 1 }, # too long, too many, and too obscure
31
+ VARS => { ID_FMT => 'none', NO_LOOKUP => 1 }, # too long, too many, and too obscure
32
32
  NOTES => q{
33
33
  The tags below have been observed in the JPEG APP7 "Qualcomm Camera
34
34
  Attributes" segment written by some cameras such as the HP iPAQ Voice
@@ -1228,7 +1228,7 @@ my @qualcommFormat = (
1228
1228
  %Image::ExifTool::Qualcomm::DualCamera = (
1229
1229
  PROCESS_PROC => \&ProcessDualCamera,
1230
1230
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1231
- VARS => { NO_ID => 1, NO_LOOKUP => 1 }, # too long, too many, and too obscure
1231
+ VARS => { ID_FMT => 'none', NO_LOOKUP => 1 }, # too long, too many, and too obscure
1232
1232
  NOTES => q{
1233
1233
  Found in JPEG APP4 "Qualcomm Dual Camera Attributes" written by some Nokia
1234
1234
  phones.
@@ -49,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
49
49
  use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
 
52
- $VERSION = '3.19';
52
+ $VERSION = '3.21';
53
53
 
54
54
  sub ProcessMOV($$;$);
55
55
  sub ProcessKeys($$$);
@@ -2269,6 +2269,27 @@ my %userDefined = (
2269
2269
  Base => '$start - 10',
2270
2270
  ByteOrder => 'LittleEndian',
2271
2271
  },
2272
+ },{
2273
+ Name => 'MakerNoteRicohPentax2',
2274
+ # used by cameras such as the Ricoh GR III
2275
+ Condition => '$$valPt=~/^RICOH\0II/',
2276
+ SubDirectory => {
2277
+ TagTable => 'Image::ExifTool::Pentax::Main',
2278
+ ProcessProc => \&Image::ExifTool::Exif::ProcessExif, # (because ProcessMOV is default)
2279
+ Start => 8,
2280
+ Base => '$start - 8',
2281
+ ByteOrder => 'LittleEndian',
2282
+ },
2283
+ },{
2284
+ Name => 'MakerNoteRicohPentax3',
2285
+ Condition => '$$valPt=~/^RICOH\0MM/', # (just in case)
2286
+ SubDirectory => {
2287
+ TagTable => 'Image::ExifTool::Pentax::Main',
2288
+ ProcessProc => \&Image::ExifTool::Exif::ProcessExif, # (because ProcessMOV is default)
2289
+ Start => 8,
2290
+ Base => '$start - 8',
2291
+ ByteOrder => 'BigEndian',
2292
+ },
2272
2293
  },{
2273
2294
  Name => 'MakerNotePentaxUnknown',
2274
2295
  Binary => 1,
@@ -7301,6 +7322,7 @@ my %userDefined = (
7301
7322
  },
7302
7323
  {
7303
7324
  Name => 'TimeToSampleTable',
7325
+ Format => 'undef',
7304
7326
  Flags => ['Binary','Unknown'],
7305
7327
  },
7306
7328
  ],
@@ -10063,14 +10085,14 @@ sub ProcessMOV($$;$)
10063
10085
  ProcessKenwoodTrailer($et, { RAF => $raf }, $tbl);
10064
10086
  last;
10065
10087
  }
10066
- $ignore = 1;
10067
- if ($tagInfo and not $$tagInfo{Unknown} and not $eeTag) {
10088
+ if (not $tagInfo or $$tagInfo{Unknown}) {
10089
+ $ignore = 1;
10090
+ } elsif ($size > 0x8000000) {
10068
10091
  my $t = PrintableTagID($tag,2);
10069
- if ($size > 0x8000000) {
10070
- $et->Warn("Skipping '${t}' atom > 128 MiB", 1);
10071
- } else {
10072
- $et->Warn("Skipping '${t}' atom > 32 MiB", 2) or $ignore = 0;
10073
- }
10092
+ $et->Warn("Skipping '${t}' atom > 128 MiB", $eeTag ? 2 : 1) and $ignore = 1;
10093
+ } elsif (not $eeTag) {
10094
+ my $t = PrintableTagID($tag,2);
10095
+ $et->Warn("Skipping '${t}' atom > 32 MiB", 2) and $ignore = 1;
10074
10096
  }
10075
10097
  }
10076
10098
  if (defined $tagInfo and not $ignore and not ($tagInfo and $$tagInfo{DontRead})) {
@@ -211,12 +211,13 @@ key:
211
211
  an ID_LABEL of "Index" is assumed for tables which use
212
212
  ProcessBinaryData or set the IS_BINARY flag.
213
213
 
214
- NO_ID Avoid printing "Tag ID" column in tag name documentation.
215
-
216
- HEX_ID Print tag ID in hexadecimal (with 4 hex digits or more). Set
217
- to 0 for string ID's that look like hex numbers to prevent
218
- them from being converted when importing an XML file for
219
- language translations in BuildLangModules().
214
+ ID_FMT Format for tag ID's in the documentation. Setting is 'hex' to
215
+ print tag ID in hexadecimal (with 4 hex digits or more), 'dec'
216
+ to leave as decimal, 'str' to use a quoted string, or 'none'
217
+ to drop the "Tag ID" column entirely. Any setting other than
218
+ 'hex' prevents hex-looking strings from being converted when
219
+ importing an XML file for language translations in
220
+ BuildLangModules().
220
221
 
221
222
  NO_LOOKUP Do not add tags to TagLookup.pm lookup tables.
222
223
 
@@ -22,7 +22,7 @@ my $implementedRawzorVersion = 199; # (up to version 1.99)
22
22
  # Rawzor-specific tags
23
23
  %Image::ExifTool::Rawzor::Main = (
24
24
  GROUPS => { 2 => 'Other' },
25
- VARS => { NO_ID => 1 },
25
+ VARS => { ID_FMT => 'none' },
26
26
  NOTES => q{
27
27
  Rawzor files store compressed images of other formats. As well as the
28
28
  information listed below, exiftool uncompresses and extracts the meta