exiftool_vendored 13.44.0 → 13.46.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 (219) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +33 -1
  3. data/bin/META.json +1 -1
  4. data/bin/META.yml +1 -1
  5. data/bin/README +3 -3
  6. data/bin/config_files/example.config +5 -2
  7. data/bin/exiftool +19 -11
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool/AAC.pm +1 -1
  11. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  13. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  14. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  15. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  16. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  17. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  19. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -4
  24. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  25. data/bin/lib/Image/ExifTool/Canon.pm +53 -11
  26. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  29. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  34. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DSF.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  39. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  40. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  41. data/bin/lib/Image/ExifTool/Exif.pm +7 -5
  42. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  44. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  45. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  46. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  47. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  48. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  49. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  50. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  51. data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GM.pm +1 -1
  56. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  57. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  58. data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
  59. data/bin/lib/Image/ExifTool/Geotag.pm +61 -20
  60. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  61. data/bin/lib/Image/ExifTool/Google.pm +3 -2
  62. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  63. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  64. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  65. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  67. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  68. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  69. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  70. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  71. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  72. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  73. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  74. data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  75. data/bin/lib/Image/ExifTool/JPEG.pm +6 -2
  76. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  77. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  78. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Kandao.pm +3 -3
  81. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  82. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  83. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  84. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  99. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  100. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  101. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  102. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  103. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  104. data/bin/lib/Image/ExifTool/LigoGPS.pm +1 -1
  105. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  106. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  109. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  115. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  117. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  118. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  119. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  120. data/bin/lib/Image/ExifTool/MakerNotes.pm +4 -2
  121. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  122. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  124. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  125. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  126. data/bin/lib/Image/ExifTool/Nikon.pm +9 -11
  127. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  128. data/bin/lib/Image/ExifTool/NikonCustom.pm +6 -3
  129. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  130. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  131. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  132. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  134. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  135. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  136. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PCAP.pm +1 -1
  138. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  144. data/bin/lib/Image/ExifTool/PNG.pm +1 -1
  145. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  146. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  147. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  148. data/bin/lib/Image/ExifTool/Panasonic.pm +7 -2
  149. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  150. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Pentax.pm +13 -4
  152. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  153. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  154. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Plot.pm +1 -1
  157. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  158. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Protobuf.pm +41 -15
  160. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  161. data/bin/lib/Image/ExifTool/QuickTime.pm +8 -4
  162. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
  163. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  164. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  165. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  173. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  175. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  176. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  177. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  178. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  179. data/bin/lib/Image/ExifTool/Sony.pm +19 -3
  180. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  181. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  182. data/bin/lib/Image/ExifTool/TNEF.pm +1 -1
  183. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  184. data/bin/lib/Image/ExifTool/TagLookup.pm +6976 -6967
  185. data/bin/lib/Image/ExifTool/TagNames.pod +23 -7
  186. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  187. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  188. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  189. data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
  190. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  191. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  192. data/bin/lib/Image/ExifTool/Validate.pm +5 -5
  193. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  194. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  195. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  196. data/bin/lib/Image/ExifTool/WavPack.pm +1 -1
  197. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  198. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  199. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  200. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  201. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  202. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  203. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  204. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +8 -4
  205. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  206. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  207. data/bin/lib/Image/ExifTool/Writer.pl +7 -4
  208. data/bin/lib/Image/ExifTool/XISF.pm +1 -1
  209. data/bin/lib/Image/ExifTool/XMP.pm +1 -1
  210. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  211. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  212. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  213. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  214. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  215. data/bin/lib/Image/ExifTool.pm +35 -29
  216. data/bin/lib/Image/ExifTool.pod +20 -2
  217. data/bin/perl-Image-ExifTool.spec +1 -1
  218. data/lib/exiftool_vendored/version.rb +1 -1
  219. metadata +1 -1
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 29026 tags, with 18036 unique tag names.
15
+ They contain a total of 29034 tags, with 18043 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -143,6 +143,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
143
143
  InfiRayMixMode InfiRay MixMode
144
144
  DJI_DTAT no
145
145
  'APP7' Pentax Pentax
146
+ Ricoh Pentax
146
147
  Huawei Unknown
147
148
  Qualcomm Qualcomm
148
149
  InfiRayOpMode InfiRay OpMode
@@ -7538,6 +7539,7 @@ boot, not including standby time.
7538
7539
  0x4026 LogInfo Canon LogInfo
7539
7540
  0x4028 AFConfig Canon AFConfig
7540
7541
  0x403f RawBurstModeRoll Canon RawBurstInfo
7542
+ 0x4053 FocusBracketingInfo Canon FocusBracketingInfo
7541
7543
  0x4059 LevelInfo Canon LevelInfo
7542
7544
 
7543
7545
  =head3 Canon CameraSettings Tags
@@ -8447,7 +8449,7 @@ CameraInfo tags for the EOS R6 Mark II.
8447
8449
 
8448
8450
  Index1 Tag Name Writable
8449
8451
  ------ -------- --------
8450
- 2157 ShutterCount int32u
8452
+ 2157 ImageCount int16u
8451
8453
 
8452
8454
  =head3 Canon CameraInfoG5XII Tags
8453
8455
 
@@ -9893,6 +9895,18 @@ Information about creative filter settings.
9893
9895
  1 RawBurstImageNum int32u
9894
9896
  2 RawBurstImageCount int32u
9895
9897
 
9898
+ =head3 Canon FocusBracketingInfo Tags
9899
+
9900
+ Index4 Tag Name Writable
9901
+ ------ -------- --------
9902
+ 1 FocusBracketing int32s
9903
+ 2 FocusBracketingImageCount int32s
9904
+ 3 FocusBracketingFocusIncrement int32s
9905
+ 4 FocusBracketingExposureSmoothing int32s
9906
+ 5 FocusBracketingDepthComposite int32s
9907
+ 6 FocusBracketingCropDepthComposite int32s
9908
+ 7 FocusBracketingFlashInterval int32s
9909
+
9896
9910
  =head3 Canon LevelInfo Tags
9897
9911
 
9898
9912
  Index4 Tag Name Writable
@@ -12507,7 +12521,8 @@ These tags belong to the ExifTool XMP-GImage family 1 group.
12507
12521
  =head3 Google GPano Tags
12508
12522
 
12509
12523
  Panorama tags written by Google Photosphere. See
12510
- L<https://developers.google.com/panorama/metadata/> for the specification.
12524
+ L<https://developers.google.com/streetview/spherical-metadata> for the
12525
+ specification.
12511
12526
 
12512
12527
  These tags belong to the ExifTool XMP-GPano family 1 group.
12513
12528
 
@@ -20137,6 +20152,7 @@ These tags are used in Panasonic/Leica cameras.
20137
20152
  0x00ca SensorType int16u
20138
20153
  0x00d1 ISO int32u
20139
20154
  0x00d2 MonochromeGrainEffect int16u
20155
+ 0x00d4 HybridLogGamma int16u
20140
20156
  0x00d6 NoiseReductionStrength rational64s
20141
20157
  0x00de AFAreaSize rational64u[2]
20142
20158
  0x00e4 LensTypeModel int16u
@@ -20416,7 +20432,7 @@ various Panasonic and Leica models.
20416
20432
 
20417
20433
  =head2 Pentax Tags
20418
20434
 
20419
- These tags are used in Pentax/Asahi cameras.
20435
+ These tags are used in Pentax/Asahi/Ricoh cameras.
20420
20436
 
20421
20437
  Tag ID Tag Name Writable
20422
20438
  ------ -------- --------
@@ -34166,8 +34182,8 @@ Other tags are extracted with the Unknown option.
34166
34182
  =head2 Kandao Tags
34167
34183
 
34168
34184
  Tags extracted from Kandao KVAR files and the 'kvar', 'kfix' and 'kstb'
34169
- atoms in Kandao MP4 videos, and have a family 1 group name of KVAR, KFIX or
34170
- KSTB depending on their location.
34185
+ atoms in Kandao MP4 videos, with a family 1 group name of KVAR, KFIX or KSTB
34186
+ depending on their location.
34171
34187
 
34172
34188
  Tag ID Tag Name Writable
34173
34189
  ------ -------- --------
@@ -42838,7 +42854,7 @@ L<Image::ExifTool::BuildTagLookup|Image::ExifTool::BuildTagLookup>.
42838
42854
 
42839
42855
  =head1 AUTHOR
42840
42856
 
42841
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
42857
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
42842
42858
 
42843
42859
  This library is free software; you can redistribute it and/or modify it
42844
42860
  under the same terms as Perl itself.
@@ -222,7 +222,7 @@ characteristics of TXT and CSV files.
222
222
 
223
223
  =head1 AUTHOR
224
224
 
225
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
225
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
226
226
 
227
227
  This library is free software; you can redistribute it and/or modify it
228
228
  under the same terms as Perl itself.
@@ -122,7 +122,7 @@ information from Theora video streams.
122
122
 
123
123
  =head1 AUTHOR
124
124
 
125
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
125
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
126
126
 
127
127
  This library is free software; you can redistribute it and/or modify it
128
128
  under the same terms as Perl itself.
@@ -309,7 +309,7 @@ bencoded information from BitTorrent files.
309
309
 
310
310
  =head1 AUTHOR
311
311
 
312
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
312
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
313
313
 
314
314
  This library is free software; you can redistribute it and/or modify it
315
315
  under the same terms as Perl itself.
@@ -304,7 +304,7 @@ metadata the trailer written by some Vivo, OnePlus and Google phones.
304
304
 
305
305
  =head1 AUTHOR
306
306
 
307
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
307
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
308
308
 
309
309
  This library is free software; you can redistribute it and/or modify it
310
310
  under the same terms as Perl itself.
@@ -53,7 +53,7 @@ unknown manufacturers.
53
53
 
54
54
  =head1 AUTHOR
55
55
 
56
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
56
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
57
57
 
58
58
  This library is free software; you can redistribute it and/or modify it
59
59
  under the same terms as Perl itself.
@@ -430,7 +430,7 @@ information from vCard VCF and iCalendar ICS files.
430
430
 
431
431
  =head1 AUTHOR
432
432
 
433
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
433
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
434
434
 
435
435
  This library is free software; you can redistribute it and/or modify it
436
436
  under the same terms as Perl itself.
@@ -17,7 +17,7 @@ package Image::ExifTool::Validate;
17
17
  use strict;
18
18
  use vars qw($VERSION %exifSpec);
19
19
 
20
- $VERSION = '1.24';
20
+ $VERSION = '1.25';
21
21
 
22
22
  use Image::ExifTool qw(:Utils);
23
23
  use Image::ExifTool::Exif;
@@ -144,9 +144,9 @@ my %stdFormat = (
144
144
  0x830e => 'double', 0x8482 => 'double', 0x87af => 'int16u', 0x87b1 => 'string',
145
145
  0x8480 => 'double', 0x85d8 => 'double', 0x87b0 => 'double',
146
146
  # DNG tags: (use '' for non-DNG tags in the range 0xc612-0xcd48)
147
- 0xc615 => '(string|int8u)', 0xc6f4 => '(string|int8u)',
148
- 0xc61a => '(int16u|int32u|rational64u)', 0xc6f6 => '(string|int8u)',
149
- 0xc61d => 'int(16|32)u', 0xc6f8 => '(string|int8u)',
147
+ 0xc615 => '(string|int8u)', 0xc6f4 => '(string|int8u)', 0xcd49 => 'float',
148
+ 0xc61a => '(int16u|int32u|rational64u)', 0xc6f6 => '(string|int8u)', 0xcd4a => 'int32u',
149
+ 0xc61d => 'int(16|32)u', 0xc6f8 => '(string|int8u)', 0xcd4b => 'int32u',
150
150
  0xc61f => '(int16u|int32u|rational64u)', 0xc6fe => '(string|int8u)',
151
151
  0xc620 => '(int16u|int32u|rational64u)', 0xc716 => '(string|int8u)',
152
152
  0xc628 => '(int16u|rational64u)', 0xc717 => '(string|int8u)',
@@ -678,7 +678,7 @@ ExifTool Validate option is enabled.
678
678
 
679
679
  =head1 AUTHOR
680
680
 
681
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
681
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
682
682
 
683
683
  This library is free software; you can redistribute it and/or modify it
684
684
  under the same terms as Perl itself.
@@ -228,7 +228,7 @@ information from Ogg Vorbis audio headers.
228
228
 
229
229
  =head1 AUTHOR
230
230
 
231
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
231
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
232
232
 
233
233
  This library is free software; you can redistribute it and/or modify it
234
234
  under the same terms as Perl itself.
@@ -271,7 +271,7 @@ This module contains definitions required by Image::ExifTool to read WPG
271
271
 
272
272
  =head1 AUTHOR
273
273
 
274
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
274
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
275
275
 
276
276
  This library is free software; you can redistribute it and/or modify it
277
277
  under the same terms as Perl itself.
@@ -297,7 +297,7 @@ This module contains definitions required by Image::ExifTool to read WTV
297
297
 
298
298
  =head1 AUTHOR
299
299
 
300
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
300
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
301
301
 
302
302
  This library is free software; you can redistribute it and/or modify it
303
303
  under the same terms as Perl itself.
@@ -123,7 +123,7 @@ from WavPack audio files.
123
123
 
124
124
  =head1 AUTHOR
125
125
 
126
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
126
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
127
127
 
128
128
  This library is free software; you can redistribute it and/or modify it
129
129
  under the same terms as Perl itself.
@@ -630,7 +630,7 @@ JPEG files, and would lead to far fewer problems with corrupted metadata.
630
630
 
631
631
  =head1 AUTHOR
632
632
 
633
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
633
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
634
634
 
635
635
  This library is free software; you can redistribute it and/or modify it
636
636
  under the same terms as Perl itself.
@@ -2734,7 +2734,7 @@ This file contains routines to write EXIF metadata.
2734
2734
 
2735
2735
  =head1 AUTHOR
2736
2736
 
2737
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2737
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
2738
2738
 
2739
2739
  This library is free software; you can redistribute it and/or modify it
2740
2740
  under the same terms as Perl itself.
@@ -711,7 +711,7 @@ seldom-used routines.
711
711
 
712
712
  =head1 AUTHOR
713
713
 
714
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
714
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
715
715
 
716
716
  This library is free software; you can redistribute it and/or modify it
717
717
  under the same terms as Perl itself.
@@ -780,7 +780,7 @@ C<PDF-update> pseudo group).
780
780
 
781
781
  =head1 AUTHOR
782
782
 
783
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
783
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
784
784
 
785
785
  This library is free software; you can redistribute it and/or modify it
786
786
  under the same terms as Perl itself.
@@ -401,7 +401,7 @@ strings).
401
401
 
402
402
  =head1 AUTHOR
403
403
 
404
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
404
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
405
405
 
406
406
  This library is free software; you can redistribute it and/or modify it
407
407
  under the same terms as Perl itself.
@@ -257,7 +257,7 @@ default resource name, and applied if no appended name is provided.
257
257
 
258
258
  =head1 AUTHOR
259
259
 
260
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
260
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
261
261
 
262
262
  This library is free software; you can redistribute it and/or modify it
263
263
  under the same terms as Perl itself.
@@ -687,7 +687,7 @@ Thanks to Tim Kordick for his help testing the EPS writer.
687
687
 
688
688
  =head1 AUTHOR
689
689
 
690
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
690
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
691
691
 
692
692
  This library is free software; you can redistribute it and/or modify it
693
693
  under the same terms as Perl itself.
@@ -1104,13 +1104,17 @@ sub WriteQuickTime($$$)
1104
1104
  }
1105
1105
  if ($got != $size) {
1106
1106
  # ignore up to 256 bytes of garbage at end of file
1107
- if ($got <= 256 and $size >= 1024 and $tag ne 'mdat') {
1107
+ my $type;
1108
+ if ($got <= 256 and $size >= 1024 and $tag ne 'mdat' or
1109
+ $got < 3000 and pack('N',$size) =~ /^<b[r>]/ and $type = 'extraneous HTML')
1110
+ {
1108
1111
  my $bytes = $got + length $hdr;
1112
+ $type or $type = 'garbage';
1109
1113
  if ($$et{OPTIONS}{IgnoreMinorErrors}) {
1110
- $et->Warn("Deleted garbage at end of file ($bytes bytes)");
1114
+ $et->Warn("Deleted $type at end of file ($bytes bytes)");
1111
1115
  $buff = $hdr = '';
1112
1116
  } else {
1113
- $et->Error("Possible garbage at end of file ($bytes bytes)", 1);
1117
+ $et->Error("Possible $type at end of file ($bytes bytes)", 1);
1114
1118
  return $rtnVal;
1115
1119
  }
1116
1120
  } else {
@@ -2262,7 +2266,7 @@ QuickTime-based file formats like MOV and MP4.
2262
2266
 
2263
2267
  =head1 AUTHOR
2264
2268
 
2265
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2269
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
2266
2270
 
2267
2271
  This library is free software; you can redistribute it and/or modify it
2268
2272
  under the same terms as Perl itself.
@@ -374,7 +374,7 @@ Currently writes only WebP files.
374
374
 
375
375
  =head1 AUTHOR
376
376
 
377
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
377
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
378
378
 
379
379
  This library is free software; you can redistribute it and/or modify it
380
380
  under the same terms as Perl itself.
@@ -1651,7 +1651,7 @@ This file contains routines to write XMP metadata.
1651
1651
 
1652
1652
  =head1 AUTHOR
1653
1653
 
1654
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1654
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1655
1655
 
1656
1656
  This library is free software; you can redistribute it and/or modify it
1657
1657
  under the same terms as Perl itself.
@@ -1304,8 +1304,9 @@ sub SetNewValuesFromFile($$;@)
1304
1304
  IgnoreTags ImageHashType KeepUTCTime Lang LargeFileSupport
1305
1305
  LigoGPSScale ListItem ListSep MDItemTags MissingTagValue NoPDFList
1306
1306
  NoWarning Password PrintConv QuickTimeUTC RequestTags SaveFormat
1307
- SavePath ScanForXMP StructFormat SystemTags TimeZone Unknown UserParam
1308
- Validate WindowsLongPath WindowsWideFile XAttrTags XMPAutoConv))
1307
+ SavePath ScanForXMP StructFormat SystemTags SystemTimeRes TimeZone
1308
+ Unknown UserParam Validate WindowsLongPath WindowsWideFile XAttrTags
1309
+ XMPAutoConv))
1309
1310
  {
1310
1311
  $srcExifTool->Options($_ => $$options{$_});
1311
1312
  }
@@ -3846,7 +3847,9 @@ sub GetNewValueHash($$;$$$$)
3846
3847
  # QuickTime and All are special cases because all group1 tags may be updated at once
3847
3848
  last if $$nvHash{WriteGroup} =~ /^(QuickTime|All)$/;
3848
3849
  # replace existing entry if WriteGroup is 'All' (avoids confusion of forum10349)
3849
- last if $$tagInfo{WriteGroup} and $$tagInfo{WriteGroup} eq 'All';
3850
+ #last if $$tagInfo{WriteGroup} and $$tagInfo{WriteGroup} eq 'All'; # (didn't work for forum17770)
3851
+ # forum17770 patch (also handles case where "EXIF" is specified as a write group)
3852
+ last if $writeGroup eq 'All' or $$nvHash{WriteGroup} eq 'EXIF' and $writeGroup =~ /IFD/;
3850
3853
  $nvHash = $$nvHash{Next};
3851
3854
  }
3852
3855
  }
@@ -7399,7 +7402,7 @@ used routines.
7399
7402
 
7400
7403
  =head1 AUTHOR
7401
7404
 
7402
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
7405
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
7403
7406
 
7404
7407
  This library is free software; you can redistribute it and/or modify it
7405
7408
  under the same terms as Perl itself.
@@ -163,7 +163,7 @@ information from XISF (Extensible Image Serialization Format) images.
163
163
 
164
164
  =head1 AUTHOR
165
165
 
166
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
166
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
167
167
 
168
168
  This library is free software; you can redistribute it and/or modify it
169
169
  under the same terms as Perl itself.
@@ -4631,7 +4631,7 @@ information.
4631
4631
 
4632
4632
  =head1 AUTHOR
4633
4633
 
4634
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
4634
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
4635
4635
 
4636
4636
  This library is free software; you can redistribute it and/or modify it
4637
4637
  under the same terms as Perl itself.
@@ -1958,7 +1958,7 @@ This file contains definitions for less common XMP namespaces.
1958
1958
 
1959
1959
  =head1 AUTHOR
1960
1960
 
1961
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1961
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1962
1962
 
1963
1963
  This library is free software; you can redistribute it and/or modify it
1964
1964
  under the same terms as Perl itself.
@@ -944,7 +944,7 @@ information.
944
944
 
945
945
  =head1 AUTHOR
946
946
 
947
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
947
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
948
948
 
949
949
  This library is free software; you can redistribute it and/or modify it
950
950
  under the same terms as Perl itself.
@@ -840,7 +840,7 @@ Electronic Publication (EPUB), and Sketch design files (SKETCH).
840
840
 
841
841
  =head1 AUTHOR
842
842
 
843
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
843
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
844
844
 
845
845
  This library is free software; you can redistribute it and/or modify it
846
846
  under the same terms as Perl itself.
@@ -220,7 +220,7 @@ metadata from Zeiss Integrated Software RAW (ZISRAW) CZI files.
220
220
 
221
221
  =head1 AUTHOR
222
222
 
223
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
223
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
224
224
 
225
225
  This library is free software; you can redistribute it and/or modify it
226
226
  under the same terms as Perl itself.
@@ -215,7 +215,7 @@ information from Apple iWork '09 XML+ZIP files.
215
215
 
216
216
  =head1 AUTHOR
217
217
 
218
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
218
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
219
219
 
220
220
  This library is free software; you can redistribute it and/or modify it
221
221
  under the same terms as Perl itself.
@@ -8,7 +8,7 @@
8
8
  # Revisions: Nov. 12/2003 - P. Harvey Created
9
9
  # (See html/history.html for revision history)
10
10
  #
11
- # Legal: Copyright (c) 2003-2025, Phil Harvey (philharvey66 at gmail.com)
11
+ # Legal: Copyright (c) 2003-2026, Phil Harvey (philharvey66 at gmail.com)
12
12
  # This library is free software; you can redistribute it and/or
13
13
  # modify it under the same terms as Perl itself.
14
14
  #------------------------------------------------------------------------------
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars $advFmtSelf $configFile @configFiles $noConfig);
31
31
 
32
- $VERSION = '13.44';
32
+ $VERSION = '13.46';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -1147,6 +1147,7 @@ my @availableOptions = (
1147
1147
  [ 'GeoMinSats', undef, 'geotag minimum satellites' ],
1148
1148
  [ 'GeoHPosErr', undef, 'geotag GPSHPositioningError based on $GPSDOP' ],
1149
1149
  [ 'GeoSpeedRef', undef, 'geotag GPSSpeedRef' ],
1150
+ [ 'GeoUserTag', undef, 'user-defined GPX tags for geotagging' ],
1150
1151
  [ 'GlobalTimeShift', undef, 'apply time shift to all extracted date/time values' ],
1151
1152
  [ 'GPSQuadrant', undef, 'quadrant for GPS if not otherwise known' ],
1152
1153
  [ 'Group#', undef, 'return tags for specified groups in family #' ],
@@ -1193,6 +1194,7 @@ my @availableOptions = (
1193
1194
  [ 'Struct', undef, 'return structures as hash references' ],
1194
1195
  [ 'StructFormat', undef, 'format for structure serialization when reading/writing' ],
1195
1196
  [ 'SystemTags', undef, 'extract additional File System tags' ],
1197
+ [ 'SystemTimeRes', 0, 'number of sub-second digits in system and epoch times' ],
1196
1198
  [ 'TextOut', \*STDOUT, 'file for Verbose/HtmlDump output' ],
1197
1199
  [ 'TimeZone', undef, 'local time zone' ],
1198
1200
  [ 'UndefTags', undef, 'leave undef tags in -if conditions when -m or -f are used' ],
@@ -2624,7 +2626,7 @@ sub Options($$;@)
2624
2626
  # add to existing plot settings
2625
2627
  $newVal = "$oldVal,$newVal" if defined $oldVal and defined $newVal;
2626
2628
  $$options{$param} = $newVal;
2627
- } elsif ($param eq 'KeepUTCTime') {
2629
+ } elsif ($param eq 'KeepUTCTime' or $param eq 'SystemTimeRes') {
2628
2630
  $$options{$param} = $static_vars{$param} = $newVal;
2629
2631
  } elsif (lc $param eq 'geodir') {
2630
2632
  $Image::ExifTool::Geolocation::geoDir = $newVal;
@@ -4286,7 +4288,11 @@ sub Init($)
4286
4288
  my $self = shift;
4287
4289
  # delete all DataMember variables (lower-case names)
4288
4290
  delete $$self{$_} foreach grep /[a-z]/, keys %$self;
4289
- %static_vars = ( KeepUTCTime => $$self{OPTIONS}{KeepUTCTime} ); # reset static variables
4291
+ # reset static variables
4292
+ %static_vars = (
4293
+ KeepUTCTime => $$self{OPTIONS}{KeepUTCTime},
4294
+ SystemTimeRes => $$self{OPTIONS}{SystemTimeRes},
4295
+ );
4290
4296
  delete $$self{FOUND_TAGS}; # list of found tags
4291
4297
  delete $$self{EXIF_DATA}; # the EXIF data block
4292
4298
  delete $$self{EXIF_POS}; # EXIF position in file
@@ -4676,7 +4682,8 @@ sub SplitFileName($)
4676
4682
 
4677
4683
  #------------------------------------------------------------------------------
4678
4684
  # Encode file name for calls to system i/o routines
4679
- # Inputs: 0) ExifTool ref, 1) file name in CharsetFileName encoding, 2) flag to force conversion
4685
+ # Inputs: 0) ExifTool ref, 1) file name in CharsetFileName encoding,
4686
+ # 2) flag to force conversion even if no special characters
4680
4687
  # Returns: true if Windows Unicode routines should be used (in which case
4681
4688
  # the file name will be encoded as a null-terminated UTF-16LE string)
4682
4689
  sub EncodeFileName($$;$)
@@ -4872,7 +4879,7 @@ sub Exists($$;$)
4872
4879
  eval { Win32API::File::CloseHandle($wh) };
4873
4880
  } elsif ($writing) {
4874
4881
  # (named pipes already exist, but we pretend that they don't
4875
- # so we will be able to write them, so test with for pipe -p)
4882
+ # so we will be able to write them, so test for pipe with -p)
4876
4883
  return(-e $file and not -p $file);
4877
4884
  } else {
4878
4885
  return(-e $file);
@@ -6713,34 +6720,33 @@ sub TimeZoneString($;$)
6713
6720
 
6714
6721
  #------------------------------------------------------------------------------
6715
6722
  # Convert Unix time to EXIF date/time string
6716
- # Inputs: 0) Unix time value, 1) non-zero to convert to local time,
6717
- # 2) number of digits after the decimal for fractional seconds
6723
+ # Inputs: 0) Unix time value, 1) non-zero to convert to local time, 2) number of
6724
+ # digits after the decimal for fractional seconds, negative to trim
6725
+ # trailing zeros, or undef to use SystemTimeRes
6718
6726
  # Returns: EXIF date/time string (with timezone for local times)
6719
6727
  sub ConvertUnixTime($;$$)
6720
6728
  {
6721
6729
  my ($time, $toLocal, $dec) = @_;
6722
6730
  return '0000:00:00 00:00:00' if $time == 0;
6723
- my (@tm, $tz);
6724
- if ($dec) {
6725
- my $frac = $time - int($time);
6726
- $time = int($time);
6727
- $frac < 0 and $frac += 1, $time -= 1;
6728
- $dec = sprintf('%.*f', $dec, $frac);
6729
- # remove number before decimal and increment integer time if it was rounded up
6730
- $dec =~ s/^(\d)// and $1 eq '1' and $time += 1;
6731
- } else {
6732
- $time = int($time + 1e-6) if $time != int($time); # avoid round-off errors
6733
- $dec = '';
6734
- }
6731
+ my (@tm, $tz, $trim);
6732
+ $dec = $static_vars{SystemTimeRes} || 0 unless defined $dec;
6733
+ $dec < 0 and $dec = -$dec, $trim = 1;
6734
+ my $itime = int($time);
6735
+ my $frac = $time - $itime;
6736
+ $frac < 0 and $frac += 1, $itime -= 1;
6737
+ $dec = sprintf('%.*f', $dec, $frac);
6738
+ # remove number before decimal and increment integer time if necessary
6739
+ $dec =~ s/^(\d)// and $1 eq '1' and $itime += 1;
6740
+ $dec =~ s/\.?0+$// if $trim; # trim trailing zeros if specified
6735
6741
  if (not $toLocal) {
6736
- @tm = gmtime($time);
6742
+ @tm = gmtime($itime);
6737
6743
  $tz = '';
6738
6744
  } elsif ($static_vars{KeepUTCTime}) {
6739
- @tm = gmtime($time);
6745
+ @tm = gmtime($itime);
6740
6746
  $tz = 'Z';
6741
6747
  } else {
6742
- @tm = localtime($time);
6743
- $tz = TimeZoneString(\@tm, $time);
6748
+ @tm = localtime($itime);
6749
+ $tz = TimeZoneString(\@tm, $itime);
6744
6750
  }
6745
6751
  my $str = sprintf("%4d:%.2d:%.2d %.2d:%.2d:%.2d$dec%s",
6746
6752
  $tm[5]+1900, $tm[4]+1, $tm[3], $tm[2], $tm[1], $tm[0], $tz);
@@ -6783,7 +6789,7 @@ sub GetUnixTime($;$)
6783
6789
 
6784
6790
  #------------------------------------------------------------------------------
6785
6791
  # Print conversion for file size
6786
- # Inputs: 0) file size in bytes
6792
+ # Inputs: 0) file size in bytes, 1) optional ExifTool ref
6787
6793
  # Returns: converted file size
6788
6794
  sub ConvertFileSize($;$)
6789
6795
  {
@@ -8127,11 +8133,11 @@ sub ProcessJPEG($$;$)
8127
8133
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
8128
8134
  }
8129
8135
  } elsif ($marker == 0xe7) { # APP7 (InfiRay, Pentax, Huawei, Qualcomm)
8130
- if ($$segDataPt =~ /^PENTAX \0(II|MM)/) {
8131
- # found in K-3 images (is this multi-segment??)
8132
- SetByteOrder($1);
8136
+ if ($$segDataPt =~ /^(PENTAX |RICOH)\0(II|MM)/) {
8137
+ # found in K-3 and Ricoh GR_IV images (is this multi-segment??)
8138
+ SetByteOrder($2);
8133
8139
  undef $dumpType; # (dump this ourself)
8134
- my $hdrLen = 10;
8140
+ my $hdrLen = length($1) + 3;
8135
8141
  my $tagTablePtr = GetTagTable('Image::ExifTool::Pentax::Main');
8136
8142
  DirStart(\%dirInfo, $hdrLen, 0);
8137
8143
  $dirInfo{DirName} = 'Pentax APP7';