exiftool-vendored.pl 13.0.0 → 13.16.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 (216) hide show
  1. package/bin/Changes +254 -20
  2. package/bin/MANIFEST +10 -0
  3. package/bin/META.json +1 -1
  4. package/bin/META.yml +1 -1
  5. package/bin/README +3 -3
  6. package/bin/arg_files/exif2xmp.args +4 -0
  7. package/bin/arg_files/xmp2exif.args +2 -1
  8. package/bin/build_geolocation +1 -1
  9. package/bin/exiftool +356 -213
  10. package/bin/lib/File/RandomAccess.pm +1 -1
  11. package/bin/lib/File/RandomAccess.pod +2 -2
  12. package/bin/lib/Image/ExifTool/AAC.pm +1 -1
  13. package/bin/lib/Image/ExifTool/AES.pm +1 -1
  14. package/bin/lib/Image/ExifTool/AFCP.pm +6 -6
  15. package/bin/lib/Image/ExifTool/AIFF.pm +2 -2
  16. package/bin/lib/Image/ExifTool/APE.pm +2 -2
  17. package/bin/lib/Image/ExifTool/APP12.pm +1 -1
  18. package/bin/lib/Image/ExifTool/ASF.pm +2 -2
  19. package/bin/lib/Image/ExifTool/Apple.pm +11 -9
  20. package/bin/lib/Image/ExifTool/Audible.pm +1 -1
  21. package/bin/lib/Image/ExifTool/BMP.pm +1 -1
  22. package/bin/lib/Image/ExifTool/BPG.pm +1 -1
  23. package/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  24. package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  25. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +36 -22
  26. package/bin/lib/Image/ExifTool/CBOR.pm +5 -2
  27. package/bin/lib/Image/ExifTool/Canon.pm +66 -27
  28. package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  29. package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  30. package/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  31. package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  32. package/bin/lib/Image/ExifTool/Casio.pm +1 -1
  33. package/bin/lib/Image/ExifTool/Charset.pm +1 -1
  34. package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  35. package/bin/lib/Image/ExifTool/DJI.pm +196 -30
  36. package/bin/lib/Image/ExifTool/DNG.pm +1 -1
  37. package/bin/lib/Image/ExifTool/DPX.pm +1 -1
  38. package/bin/lib/Image/ExifTool/DV.pm +1 -1
  39. package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  40. package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  41. package/bin/lib/Image/ExifTool/EXE.pm +138 -33
  42. package/bin/lib/Image/ExifTool/Exif.pm +29 -16
  43. package/bin/lib/Image/ExifTool/FITS.pm +3 -3
  44. package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  45. package/bin/lib/Image/ExifTool/FLIF.pm +3 -3
  46. package/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  47. package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  48. package/bin/lib/Image/ExifTool/Flash.pm +1 -1
  49. package/bin/lib/Image/ExifTool/FlashPix.pm +17 -21
  50. package/bin/lib/Image/ExifTool/Font.pm +2 -2
  51. package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  52. package/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  53. package/bin/lib/Image/ExifTool/GE.pm +1 -1
  54. package/bin/lib/Image/ExifTool/GIF.pm +144 -93
  55. package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  56. package/bin/lib/Image/ExifTool/GM.pm +1 -1
  57. package/bin/lib/Image/ExifTool/GPS.pm +34 -30
  58. package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  59. package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  60. package/bin/lib/Image/ExifTool/Geolocation.pm +19 -9
  61. package/bin/lib/Image/ExifTool/Geotag.pm +46 -12
  62. package/bin/lib/Image/ExifTool/GoPro.pm +120 -8
  63. package/bin/lib/Image/ExifTool/H264.pm +1 -1
  64. package/bin/lib/Image/ExifTool/HP.pm +2 -2
  65. package/bin/lib/Image/ExifTool/HTML.pm +1 -1
  66. package/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  67. package/bin/lib/Image/ExifTool/ICC_Profile.pm +81 -2
  68. package/bin/lib/Image/ExifTool/ICO.pm +1 -1
  69. package/bin/lib/Image/ExifTool/ID3.pm +8 -8
  70. package/bin/lib/Image/ExifTool/IPTC.pm +10 -7
  71. package/bin/lib/Image/ExifTool/ISO.pm +1 -1
  72. package/bin/lib/Image/ExifTool/ITC.pm +1 -1
  73. package/bin/lib/Image/ExifTool/Import.pm +5 -4
  74. package/bin/lib/Image/ExifTool/InDesign.pm +2 -2
  75. package/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  76. package/bin/lib/Image/ExifTool/JPEG.pm +32 -5
  77. package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  78. package/bin/lib/Image/ExifTool/JSON.pm +1 -1
  79. package/bin/lib/Image/ExifTool/JVC.pm +1 -1
  80. package/bin/lib/Image/ExifTool/Jpeg2000.pm +10 -9
  81. package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  82. package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  83. package/bin/lib/Image/ExifTool/LIF.pm +1 -1
  84. package/bin/lib/Image/ExifTool/LNK.pm +2 -2
  85. package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  86. package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  87. package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  88. package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  89. package/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  90. package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  91. package/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  92. package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  93. package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  94. package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  95. package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  96. package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  97. package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  98. package/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  99. package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  100. package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  101. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  102. package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  103. package/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  104. package/bin/lib/Image/ExifTool/LigoGPS.pm +409 -0
  105. package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  106. package/bin/lib/Image/ExifTool/M2TS.pm +57 -18
  107. package/bin/lib/Image/ExifTool/MIE.pm +15 -6
  108. package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  109. package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  110. package/bin/lib/Image/ExifTool/MISB.pm +1 -1
  111. package/bin/lib/Image/ExifTool/MNG.pm +1 -1
  112. package/bin/lib/Image/ExifTool/MOI.pm +1 -1
  113. package/bin/lib/Image/ExifTool/MPC.pm +1 -1
  114. package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  115. package/bin/lib/Image/ExifTool/MPF.pm +1 -1
  116. package/bin/lib/Image/ExifTool/MRC.pm +1 -1
  117. package/bin/lib/Image/ExifTool/MWG.pm +1 -1
  118. package/bin/lib/Image/ExifTool/MXF.pm +3 -3
  119. package/bin/lib/Image/ExifTool/MacOS.pm +3 -2
  120. package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  121. package/bin/lib/Image/ExifTool/Matroska.pm +22 -6
  122. package/bin/lib/Image/ExifTool/Microsoft.pm +2 -2
  123. package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  124. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  125. package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  126. package/bin/lib/Image/ExifTool/Nikon.pm +495 -39
  127. package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  128. package/bin/lib/Image/ExifTool/NikonCustom.pm +2 -2
  129. package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  130. package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  131. package/bin/lib/Image/ExifTool/OOXML.pm +8 -8
  132. package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  133. package/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  134. package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  135. package/bin/lib/Image/ExifTool/Opus.pm +1 -1
  136. package/bin/lib/Image/ExifTool/Other.pm +1 -1
  137. package/bin/lib/Image/ExifTool/PCX.pm +1 -1
  138. package/bin/lib/Image/ExifTool/PDF.pm +49 -18
  139. package/bin/lib/Image/ExifTool/PGF.pm +1 -1
  140. package/bin/lib/Image/ExifTool/PICT.pm +1 -1
  141. package/bin/lib/Image/ExifTool/PLIST.pm +4 -4
  142. package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  143. package/bin/lib/Image/ExifTool/PNG.pm +20 -8
  144. package/bin/lib/Image/ExifTool/PPM.pm +12 -3
  145. package/bin/lib/Image/ExifTool/PSP.pm +1 -1
  146. package/bin/lib/Image/ExifTool/Palm.pm +1 -1
  147. package/bin/lib/Image/ExifTool/Panasonic.pm +27 -3
  148. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  149. package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  150. package/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  151. package/bin/lib/Image/ExifTool/PhaseOne.pm +4 -4
  152. package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  153. package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  154. package/bin/lib/Image/ExifTool/Photoshop.pm +65 -4
  155. package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  156. package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  157. package/bin/lib/Image/ExifTool/Protobuf.pm +270 -0
  158. package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  159. package/bin/lib/Image/ExifTool/QuickTime.pm +326 -88
  160. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +199 -195
  161. package/bin/lib/Image/ExifTool/README +12 -2
  162. package/bin/lib/Image/ExifTool/RIFF.pm +21 -6
  163. package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  164. package/bin/lib/Image/ExifTool/RTF.pm +2 -2
  165. package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  166. package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  167. package/bin/lib/Image/ExifTool/Real.pm +1 -1
  168. package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  169. package/bin/lib/Image/ExifTool/Red.pm +1 -1
  170. package/bin/lib/Image/ExifTool/Ricoh.pm +4 -4
  171. package/bin/lib/Image/ExifTool/Samsung.pm +2 -2
  172. package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  173. package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  174. package/bin/lib/Image/ExifTool/Shift.pl +1 -1
  175. package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  176. package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  177. package/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  178. package/bin/lib/Image/ExifTool/Sony.pm +5 -4
  179. package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  180. package/bin/lib/Image/ExifTool/Stim.pm +1 -1
  181. package/bin/lib/Image/ExifTool/TagInfoXML.pm +6 -5
  182. package/bin/lib/Image/ExifTool/TagLookup.pm +7023 -6968
  183. package/bin/lib/Image/ExifTool/TagNames.pod +445 -29
  184. package/bin/lib/Image/ExifTool/Text.pm +4 -3
  185. package/bin/lib/Image/ExifTool/Theora.pm +1 -1
  186. package/bin/lib/Image/ExifTool/Torrent.pm +3 -3
  187. package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  188. package/bin/lib/Image/ExifTool/VCard.pm +3 -3
  189. package/bin/lib/Image/ExifTool/Validate.pm +6 -6
  190. package/bin/lib/Image/ExifTool/Vivo.pm +124 -0
  191. package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  192. package/bin/lib/Image/ExifTool/WPG.pm +1 -1
  193. package/bin/lib/Image/ExifTool/WTV.pm +1 -1
  194. package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  195. package/bin/lib/Image/ExifTool/WriteExif.pl +3 -3
  196. package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  197. package/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  198. package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  199. package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  200. package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  201. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +166 -79
  202. package/bin/lib/Image/ExifTool/WriteRIFF.pl +17 -6
  203. package/bin/lib/Image/ExifTool/WriteXMP.pl +3 -3
  204. package/bin/lib/Image/ExifTool/Writer.pl +89 -96
  205. package/bin/lib/Image/ExifTool/XISF.pm +1 -1
  206. package/bin/lib/Image/ExifTool/XMP.pm +28 -13
  207. package/bin/lib/Image/ExifTool/XMP2.pl +103 -1
  208. package/bin/lib/Image/ExifTool/XMPStruct.pl +2 -3
  209. package/bin/lib/Image/ExifTool/ZIP.pm +2 -2
  210. package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  211. package/bin/lib/Image/ExifTool/iWork.pm +1 -1
  212. package/bin/lib/Image/ExifTool.pm +335 -163
  213. package/bin/lib/Image/ExifTool.pod +119 -73
  214. package/bin/perl-Image-ExifTool.spec +1 -1
  215. package/bin/windows_exiftool.txt +96 -51
  216. package/package.json +9 -9
@@ -209,7 +209,7 @@ key:
209
209
  name documentation. When this is set, numerical TagID's are
210
210
  not converted to hexadecimal notation. Unless otherwise set,
211
211
  an ID_LABEL of "Index" is assumed for tables which use
212
- ProcessBinaryData.
212
+ ProcessBinaryData or set the IS_BINARY flag.
213
213
 
214
214
  NO_ID Avoid printing "Tag ID" column in tag name documentation.
215
215
 
@@ -257,6 +257,9 @@ key:
257
257
  ALLOW_REPROCESS Flag to allow reprocessing of another directory at this
258
258
  same location in the file, bypassing recursion avoidance test.
259
259
 
260
+ IS_BINARY Set if this is a binary table and should show an Index in the
261
+ first column instead of a Tag ID.
262
+
260
263
  DATAMEMBER : BinaryData tables only. A reference to a list of sorted tag ID's
261
264
  which must be extracted as data members when writing. Must also list "var_"
262
265
  format tags and tags with Hook so offsets are properly calculated if the table
@@ -440,6 +443,10 @@ numerical, and generated automatically otherwise.
440
443
  list-type tag (unless it is a list of lang-alt lists, which is
441
444
  uncommon).
442
445
 
446
+ 'IsList' - Flag to mark tag as List-type in the documentation
447
+ without accumulating entries from subsequent tags. Used when
448
+ the value for a single tag is a complete list.
449
+
443
450
  'MakerNotes' - set if this tag is maker note data.
444
451
 
445
452
  'MakerPreview' - set in the PreviewImageStart tag information
@@ -898,7 +905,10 @@ numerical, and generated automatically otherwise.
898
905
  Deletable : [Writable SubDirectory's only] Overrides internal test for
899
906
  metadata types with permanent directories (currently QuickTime
900
907
  and Jpeg2000), allowing the tag containing these directories
901
- to be deleted
908
+ to be deleted. Note that either the tag's SubDirectory
909
+ DirName (which defaults to the TagName if not specified) or
910
+ the family 0 group name of the SubDirectory TagTable must
911
+ match a deletable group name.
902
912
 
903
913
  OffsetPair : Used in EXIF table to specify the tagID for the corresponding
904
914
  offset or length tag.
@@ -30,7 +30,7 @@ use strict;
30
30
  use vars qw($VERSION $AUTOLOAD);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
 
33
- $VERSION = '1.68';
33
+ $VERSION = '1.70';
34
34
 
35
35
  sub ConvertTimecode($);
36
36
  sub ProcessSGLT($$$);
@@ -664,6 +664,10 @@ my %code2charset = (
664
664
  SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Acidizer' },
665
665
  },
666
666
  guan => 'Guano', #forum14831
667
+ SEAL => {
668
+ Name => 'SEAL',
669
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
670
+ },
667
671
  );
668
672
 
669
673
  # the maker notes used by some digital cameras
@@ -1122,7 +1126,7 @@ my %code2charset = (
1122
1126
  Name => 'TextFormat',
1123
1127
  Condition => '$$self{RIFFStreamType} eq "txts"',
1124
1128
  Hidden => 1,
1125
- RawConv => '$self->Options("ExtractEmbedded") or $self->WarnOnce("Use ExtractEmbedded option to extract timed text",3); undef',
1129
+ RawConv => '$self->Options("ExtractEmbedded") or $self->Warn("Use ExtractEmbedded option to extract timed text",3); undef',
1126
1130
  },
1127
1131
  ],
1128
1132
  );
@@ -1315,6 +1319,11 @@ my %code2charset = (
1315
1319
  Name => 'ImageWidth',
1316
1320
  Format => 'int16u',
1317
1321
  Priority => 0,
1322
+ # add " (lossless)" to FileType since image has a VP8L (lossless) chunk
1323
+ RawConv => q{
1324
+ $self->OverrideFileType($$self{VALUE}{FileType} . ' (lossless)', undef, 'webp');
1325
+ return $val;
1326
+ },
1318
1327
  ValueConv => '($val & 0x3fff) + 1',
1319
1328
  },
1320
1329
  2 => {
@@ -1323,6 +1332,11 @@ my %code2charset = (
1323
1332
  Priority => 0,
1324
1333
  ValueConv => '(($val >> 6) & 0x3fff) + 1',
1325
1334
  },
1335
+ 4 => {
1336
+ Name => 'AlphaIsUsed',
1337
+ Mask => 0x10,
1338
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
1339
+ },
1326
1340
  );
1327
1341
 
1328
1342
  # WebP extended info (ref 14)
@@ -2049,7 +2063,7 @@ sub ProcessRIFF($$)
2049
2063
  last;
2050
2064
  }
2051
2065
  if ($et->Options('LargeFileSupport') eq '2') {
2052
- $et->WarnOnce('Processing large chunk (LargeFileSupport is 2)');
2066
+ $et->Warn('Processing large chunk (LargeFileSupport is 2)');
2053
2067
  }
2054
2068
  }
2055
2069
  if ($validate) {
@@ -2120,7 +2134,8 @@ sub ProcessRIFF($$)
2120
2134
  my $tagInfo = $$tagTbl{$tag};
2121
2135
  # (in LIST_movi chunk: ##db = uncompressed DIB, ##dc = compressed DIB, ##wb = audio data)
2122
2136
  if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF|\d{2}(db|dc|wb))$/)) {
2123
- $raf->Read($buff, $len2) == $len2 or $err=1, next;
2137
+ $raf->Read($buff, $len2) >= $len or $err=1, next;
2138
+ length($buff) == $len2 or $et->Warn("No padding on odd-sized $tag chunk");
2124
2139
  if ($hash and $isImageData{$tag}) {
2125
2140
  $hash->add($buff);
2126
2141
  $et->VPrint(0, "$$et{INDENT}(ImageDataHash: '${tag}' chunk, $len2 bytes)\n");
@@ -2171,7 +2186,7 @@ sub ProcessRIFF($$)
2171
2186
  last;
2172
2187
  }
2173
2188
  if ($et->Options('LargeFileSupport') eq '2') {
2174
- $et->WarnOnce('Processing large chunk (LargeFileSupport is 2)');
2189
+ $et->Warn('Processing large chunk (LargeFileSupport is 2)');
2175
2190
  }
2176
2191
  }
2177
2192
  if ($validate and $len2) {
@@ -2209,7 +2224,7 @@ including AVI videos, WAV audio files and WEBP images.
2209
2224
 
2210
2225
  =head1 AUTHOR
2211
2226
 
2212
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2227
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2213
2228
 
2214
2229
  This library is free software; you can redistribute it and/or modify it
2215
2230
  under the same terms as Perl itself.
@@ -225,7 +225,7 @@ resource files.
225
225
 
226
226
  =head1 AUTHOR
227
227
 
228
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
228
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
229
229
 
230
230
  This library is free software; you can redistribute it and/or modify it
231
231
  under the same terms as Perl itself.
@@ -182,7 +182,7 @@ sub UnescapeRTF($$$)
182
182
  $skip = $2;
183
183
  } elsif ($1 eq 'u') { # \uN
184
184
  if ($2 < 0) {
185
- $et->WarnOnce('Invalid Unicode character(s) in text');
185
+ $et->Warn('Invalid Unicode character(s) in text');
186
186
  $rtnVal .= '?';
187
187
  } else {
188
188
  require Image::ExifTool::Charset;
@@ -366,7 +366,7 @@ information from RTF (Rich Text Format) documents.
366
366
 
367
367
  =head1 AUTHOR
368
368
 
369
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
369
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
370
370
 
371
371
  This library is free software; you can redistribute it and/or modify it
372
372
  under the same terms as Perl itself.
@@ -125,7 +125,7 @@ images are a type of high dynamic-range image.
125
125
 
126
126
  =head1 AUTHOR
127
127
 
128
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
128
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
129
129
 
130
130
  This library is free software; you can redistribute it and/or modify it
131
131
  under the same terms as Perl itself.
@@ -168,7 +168,7 @@ information from Rawzor compressed images.
168
168
 
169
169
  =head1 AUTHOR
170
170
 
171
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
171
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
172
172
 
173
173
  This library is free software; you can redistribute it and/or modify it
174
174
  under the same terms as Perl itself.
@@ -715,7 +715,7 @@ little-endian, but the Real format is big-endian.
715
715
 
716
716
  =head1 AUTHOR
717
717
 
718
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
718
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
719
719
 
720
720
  This library is free software; you can redistribute it and/or modify it
721
721
  under the same terms as Perl itself.
@@ -431,7 +431,7 @@ maker notes in images from Reconyx cameras.
431
431
 
432
432
  =head1 AUTHOR
433
433
 
434
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
434
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
435
435
 
436
436
  This library is free software; you can redistribute it and/or modify it
437
437
  under the same terms as Perl itself.
@@ -303,7 +303,7 @@ from Redcode R3D version 1 and 2 video files.
303
303
 
304
304
  =head1 AUTHOR
305
305
 
306
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
306
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
307
307
 
308
308
  This library is free software; you can redistribute it and/or modify it
309
309
  under the same terms as Perl itself.
@@ -1008,7 +1008,7 @@ sub ProcessRicohRDT($$$)
1008
1008
  return 0 if $dirLen < 16;
1009
1009
  my $ee = $et->Options('ExtractEmbedded');
1010
1010
  unless ($ee) {
1011
- $et->WarnOnce('Use ExtractEmbedded option to read Ricoh real-time metadata',3);
1011
+ $et->Warn('Use ExtractEmbedded option to read Ricoh real-time metadata',3);
1012
1012
  return 1;
1013
1013
  }
1014
1014
  my $endian = substr($$dataPt, 8, 2);
@@ -1017,11 +1017,11 @@ sub ProcessRicohRDT($$$)
1017
1017
  my $len = Get16u($dataPt, 6);
1018
1018
  if ($dirName eq 'RicohRDTG') {
1019
1019
  if ($ee < 2) {
1020
- $et->WarnOnce('Set ExtractEmbedded option to 2 or higher to extract frame timestamps',3);
1020
+ $et->Warn('Set ExtractEmbedded option to 2 or higher to extract frame timestamps',3);
1021
1021
  return 1;
1022
1022
  }
1023
1023
  $rdtg = 0;
1024
- $et->WarnOnce('Unexpected RDTG record length') if $len > 8;
1024
+ $et->Warn('Unexpected RDTG record length') if $len > 8;
1025
1025
  }
1026
1026
  if ($count * $len + 16 > $dirLen) {
1027
1027
  $et->Warn("Truncated $dirName data");
@@ -1252,7 +1252,7 @@ interpret Ricoh maker notes EXIF meta information.
1252
1252
 
1253
1253
  =head1 AUTHOR
1254
1254
 
1255
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1255
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1256
1256
 
1257
1257
  This library is free software; you can redistribute it and/or modify it
1258
1258
  under the same terms as Perl itself.
@@ -1718,7 +1718,7 @@ SamBlock:
1718
1718
  $fixup->AddFixup(length($buff) - $offsetPos);
1719
1719
  $fixup->AddFixup(length($buff) - $offsetPos + 4);
1720
1720
  }
1721
- $et->VPrint(0, "Writing Samsung trailer ($dirLen bytes)\n") if $verbose;
1721
+ $et->VPrint(0, " Writing Samsung trailer ($dirLen bytes)\n") if $verbose;
1722
1722
  Write($$dirInfo{OutFile}, $buff) or return -1;
1723
1723
  return 1;
1724
1724
  }
@@ -1762,7 +1762,7 @@ Samsung maker notes in EXIF information.
1762
1762
 
1763
1763
  =head1 AUTHOR
1764
1764
 
1765
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1765
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1766
1766
 
1767
1767
  This library is free software; you can redistribute it and/or modify it
1768
1768
  under the same terms as Perl itself.
@@ -419,7 +419,7 @@ Sanyo maker notes in EXIF information.
419
419
 
420
420
  =head1 AUTHOR
421
421
 
422
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
422
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
423
423
 
424
424
  This library is free software; you can redistribute it and/or modify it
425
425
  under the same terms as Perl itself.
@@ -128,7 +128,7 @@ metadata from the JPEG APP4 SCALADO segment.
128
128
 
129
129
  =head1 AUTHOR
130
130
 
131
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
131
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
132
132
 
133
133
  This library is free software; you can redistribute it and/or modify it
134
134
  under the same terms as Perl itself.
@@ -631,7 +631,7 @@ limited to the range 1970 to 2038 on 32-bit systems.
631
631
 
632
632
  =head1 AUTHOR
633
633
 
634
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
634
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
635
635
 
636
636
  This library is free software; you can redistribute it and/or modify it
637
637
  under the same terms as Perl itself.
@@ -344,7 +344,7 @@ name prefix.
344
344
 
345
345
  =head1 AUTHOR
346
346
 
347
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
347
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
348
348
 
349
349
  This library is free software; you can redistribute it and/or modify it
350
350
  under the same terms as Perl itself.
@@ -864,7 +864,7 @@ Sigma and Foveon maker notes in EXIF information.
864
864
 
865
865
  =head1 AUTHOR
866
866
 
867
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
867
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
868
868
 
869
869
  This library is free software; you can redistribute it and/or modify it
870
870
  under the same terms as Perl itself.
@@ -680,7 +680,7 @@ Sigma and Foveon X3F images.
680
680
 
681
681
  =head1 AUTHOR
682
682
 
683
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
683
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
684
684
 
685
685
  This library is free software; you can redistribute it and/or modify it
686
686
  under the same terms as Perl itself.
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
34
34
  use Image::ExifTool::Exif;
35
35
  use Image::ExifTool::Minolta;
36
36
 
37
- $VERSION = '3.70';
37
+ $VERSION = '3.71';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -2166,6 +2166,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2166
2166
  397 => 'ILCE-7CM2', #JR
2167
2167
  398 => 'ILX-LR1', #JR
2168
2168
  399 => 'ZV-E10M2', #JR
2169
+ 400 => 'ILCE-1M2', #PH
2169
2170
  },
2170
2171
  },
2171
2172
  0xb020 => { #2
@@ -11376,7 +11377,7 @@ sub ProcessEnciphered($$$)
11376
11377
  Decipher(\$data);
11377
11378
  if ($$et{DoubleCipher}) {
11378
11379
  Decipher(\$data);
11379
- $et->WarnOnce('Some Sony metadata is double-enciphered. Write any tag to fix',1);
11380
+ $et->Warn('Some Sony metadata is double-enciphered. Write any tag to fix',1);
11380
11381
  }
11381
11382
  if ($et->Options('Verbose') > 2) {
11382
11383
  my $tagInfo = $$dirInfo{TagInfo} || { Name => 'data' };
@@ -11408,7 +11409,7 @@ sub WriteEnciphered($$$)
11408
11409
  if ($$et{DoubleCipher}) {
11409
11410
  Decipher(\$data);
11410
11411
  ++$$et{CHANGED};
11411
- $et->WarnOnce('Fixed double-enciphered Sony metadata',1);
11412
+ $et->Warn('Fixed double-enciphered Sony metadata',1);
11412
11413
  }
11413
11414
  my %dirInfo = (
11414
11415
  %$dirInfo,
@@ -11758,7 +11759,7 @@ Minolta.
11758
11759
 
11759
11760
  =head1 AUTHOR
11760
11761
 
11761
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
11762
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
11762
11763
 
11763
11764
  This library is free software; you can redistribute it and/or modify it
11764
11765
  under the same terms as Perl itself.
@@ -379,7 +379,7 @@ write Sony Image Data Converter version 3.0 metadata in ARW images.
379
379
 
380
380
  =head1 AUTHOR
381
381
 
382
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
382
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
383
383
 
384
384
  This library is free software; you can redistribute it and/or modify it
385
385
  under the same terms as Perl itself.
@@ -174,7 +174,7 @@ information.
174
174
 
175
175
  =head1 AUTHOR
176
176
 
177
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
177
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
178
178
 
179
179
  This library is free software; you can redistribute it and/or modify it
180
180
  under the same terms as Perl itself.
@@ -15,7 +15,7 @@ use vars qw($VERSION @ISA $makeMissing);
15
15
  use Image::ExifTool qw(:Utils :Vars);
16
16
  use Image::ExifTool::XMP;
17
17
 
18
- $VERSION = '1.36';
18
+ $VERSION = '1.37';
19
19
  @ISA = qw(Exporter);
20
20
 
21
21
  # set this to a language code to generate Lang module with 'MISSING' entries
@@ -158,6 +158,7 @@ PTILoop: for ($index=0; $index<@infoArray; ++$index) {
158
158
  my $writable = $format ? 'true' : 'false';
159
159
  # check our conversions to make sure we can really write this tag
160
160
  if ($writable eq 'true') {
161
+ $writable = 'false' if defined $$tagInfo{Writable} and not $$tagInfo{Writable};
161
162
  foreach ('PrintConv','ValueConv') {
162
163
  next unless $$tagInfo{$_};
163
164
  next if $$tagInfo{$_ . 'Inv'};
@@ -167,7 +168,7 @@ PTILoop: for ($index=0; $index<@infoArray; ++$index) {
167
168
  last;
168
169
  }
169
170
  }
170
- $format = $$tagInfo{Format} || $$table{FORMAT} if not defined $format or $format eq '1';
171
+ $format = $$tagInfo{Format} || $$table{FORMAT} if not $format or $format eq '1';
171
172
  $format = 'struct' if $$tagInfo{Struct};
172
173
  if (defined $format) {
173
174
  $format =~ s/\[.*\$.*\]//; # remove expressions from format
@@ -258,7 +259,7 @@ PTILoop: for ($index=0; $index<@infoArray; ++$index) {
258
259
  # add bitmask values to main lookup
259
260
  if ($$conv{BITMASK}) {
260
261
  foreach $key (keys %{$$conv{BITMASK}}) {
261
- my $mask = 0x01 << $key;
262
+ my $mask = "Bit$key";
262
263
  next if not $mask or $$conv{$mask};
263
264
  $$conv{$mask} = $$conv{BITMASK}{$key};
264
265
  }
@@ -650,7 +651,7 @@ and values.
650
651
 
651
652
  ~head1 AUTHOR
652
653
 
653
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
654
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
654
655
 
655
656
  This library is free software; you can redistribute it and/or modify it
656
657
  under the same terms as Perl itself.
@@ -834,7 +835,7 @@ Number of modules updated, or negative on error.
834
835
 
835
836
  =head1 AUTHOR
836
837
 
837
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
838
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
838
839
 
839
840
  This library is free software; you can redistribute it and/or modify it
840
841
  under the same terms as Perl itself.