exiftool_vendored 13.36.0 → 13.38.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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +39 -1
  3. data/bin/MANIFEST +9 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +47 -47
  7. data/bin/build_geolocation +7 -3
  8. data/bin/exiftool +65 -63
  9. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  10. data/bin/lib/Image/ExifTool/BMP.pm +2 -2
  11. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +16 -9
  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/DSF.pm +138 -0
  18. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  19. data/bin/lib/Image/ExifTool/EXE.pm +5 -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 +5 -4
  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.pm +3 -1
  27. data/bin/lib/Image/ExifTool/Geotag.pm +13 -3
  28. data/bin/lib/Image/ExifTool/GoPro.pm +11 -8
  29. data/bin/lib/Image/ExifTool/Google.pm +814 -0
  30. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  31. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  32. data/bin/lib/Image/ExifTool/ID3.pm +14 -13
  33. data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
  34. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  35. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  36. data/bin/lib/Image/ExifTool/LNK.pm +2 -2
  37. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  38. data/bin/lib/Image/ExifTool/M2TS.pm +34 -25
  39. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  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 +4 -4
  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 +2 -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 +18 -7
  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 +2 -0
  57. data/bin/lib/Image/ExifTool/README +7 -6
  58. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  59. data/bin/lib/Image/ExifTool/Reconyx.pm +375 -91
  60. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  61. data/bin/lib/Image/ExifTool/Shortcuts.pm +8 -5
  62. data/bin/lib/Image/ExifTool/Sony.pm +22 -7
  63. data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -2
  64. data/bin/lib/Image/ExifTool/TagLookup.pm +5753 -5696
  65. data/bin/lib/Image/ExifTool/TagNames.pod +707 -518
  66. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  67. data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
  68. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  69. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  70. data/bin/lib/Image/ExifTool/WavPack.pm +144 -0
  71. data/bin/lib/Image/ExifTool/XMP.pm +43 -37
  72. data/bin/lib/Image/ExifTool/XMP2.pl +0 -482
  73. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  74. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  75. data/bin/lib/Image/ExifTool.pm +42 -27
  76. data/bin/lib/Image/ExifTool.pod +60 -59
  77. data/bin/perl-Image-ExifTool.spec +46 -46
  78. data/lib/exiftool_vendored/version.rb +1 -1
  79. metadata +6 -6
@@ -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})) {
@@ -984,7 +984,9 @@ sub SetGPSDateTime($$$;$)
984
984
  }
985
985
  $sampleTime -= $tzOff; # shift from local time to UTC
986
986
  }
987
+ $$et{SET_GROUP0} = 'Composite';
987
988
  $et->HandleTag($tagTbl, GPSDateTime => Image::ExifTool::ConvertUnixTime($sampleTime,0,3) . 'Z');
989
+ delete $$et{SET_GROUP0};
988
990
  }
989
991
  }
990
992
 
@@ -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