exiftool-vendored.pl 12.72.0 → 12.76.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 (206) hide show
  1. package/bin/Changes +64 -1
  2. package/bin/META.json +1 -1
  3. package/bin/META.yml +1 -1
  4. package/bin/README +47 -46
  5. package/bin/exiftool +123 -96
  6. package/bin/lib/File/RandomAccess.pm +32 -6
  7. package/bin/lib/File/RandomAccess.pod +6 -6
  8. package/bin/lib/Image/ExifTool/7Z.pm +3 -3
  9. package/bin/lib/Image/ExifTool/AAC.pm +8 -6
  10. package/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. package/bin/lib/Image/ExifTool/AFCP.pm +3 -3
  12. package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  13. package/bin/lib/Image/ExifTool/APE.pm +1 -1
  14. package/bin/lib/Image/ExifTool/APP12.pm +1 -1
  15. package/bin/lib/Image/ExifTool/ASF.pm +1 -1
  16. package/bin/lib/Image/ExifTool/Apple.pm +1 -1
  17. package/bin/lib/Image/ExifTool/Audible.pm +1 -1
  18. package/bin/lib/Image/ExifTool/BMP.pm +1 -1
  19. package/bin/lib/Image/ExifTool/BPG.pm +1 -1
  20. package/bin/lib/Image/ExifTool/BZZ.pm +3 -3
  21. package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +9 -9
  23. package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. package/bin/lib/Image/ExifTool/Canon.pm +7 -6
  25. package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  26. package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  27. package/bin/lib/Image/ExifTool/CanonVRD.pm +3 -3
  28. package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. package/bin/lib/Image/ExifTool/Casio.pm +1 -1
  30. package/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. package/bin/lib/Image/ExifTool/DICOM.pm +3 -3
  32. package/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. package/bin/lib/Image/ExifTool/DNG.pm +5 -5
  34. package/bin/lib/Image/ExifTool/DPX.pm +1 -1
  35. package/bin/lib/Image/ExifTool/DV.pm +1 -1
  36. package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  37. package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  38. package/bin/lib/Image/ExifTool/EXE.pm +1 -1
  39. package/bin/lib/Image/ExifTool/Exif.pm +4 -3
  40. package/bin/lib/Image/ExifTool/FITS.pm +1 -1
  41. package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  42. package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  43. package/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  44. package/bin/lib/Image/ExifTool/Fixup.pm +4 -4
  45. package/bin/lib/Image/ExifTool/Flash.pm +1 -1
  46. package/bin/lib/Image/ExifTool/FlashPix.pm +61 -8
  47. package/bin/lib/Image/ExifTool/Font.pm +1 -1
  48. package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  49. package/bin/lib/Image/ExifTool/FujiFilm.pm +9 -4
  50. package/bin/lib/Image/ExifTool/GE.pm +1 -1
  51. package/bin/lib/Image/ExifTool/GIF.pm +1 -1
  52. package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  53. package/bin/lib/Image/ExifTool/GPS.pm +1 -1
  54. package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  55. package/bin/lib/Image/ExifTool/Geotag.pm +4 -4
  56. package/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  57. package/bin/lib/Image/ExifTool/H264.pm +1 -1
  58. package/bin/lib/Image/ExifTool/HP.pm +1 -1
  59. package/bin/lib/Image/ExifTool/HTML.pm +1 -1
  60. package/bin/lib/Image/ExifTool/HtmlDump.pm +7 -5
  61. package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  62. package/bin/lib/Image/ExifTool/ICO.pm +1 -1
  63. package/bin/lib/Image/ExifTool/ID3.pm +3 -3
  64. package/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. package/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. package/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. package/bin/lib/Image/ExifTool/Import.pm +6 -6
  68. package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. package/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  70. package/bin/lib/Image/ExifTool/JPEG.pm +5 -2
  71. package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  72. package/bin/lib/Image/ExifTool/JSON.pm +3 -3
  73. package/bin/lib/Image/ExifTool/JVC.pm +3 -3
  74. package/bin/lib/Image/ExifTool/Jpeg2000.pm +67 -17
  75. package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  76. package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  77. package/bin/lib/Image/ExifTool/LIF.pm +1 -1
  78. package/bin/lib/Image/ExifTool/LNK.pm +1 -1
  79. package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  80. package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  81. package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  82. package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  83. package/bin/lib/Image/ExifTool/Lang/es.pm +4 -4
  84. package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  85. package/bin/lib/Image/ExifTool/Lang/fr.pm +4 -5
  86. package/bin/lib/Image/ExifTool/Lang/it.pm +3 -3
  87. package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  88. package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  89. package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  90. package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  91. package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  92. package/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  93. package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  94. package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  95. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  96. package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  97. package/bin/lib/Image/ExifTool/Leaf.pm +3 -3
  98. package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  99. package/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  100. package/bin/lib/Image/ExifTool/MIE.pm +5 -5
  101. package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  102. package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  103. package/bin/lib/Image/ExifTool/MISB.pm +1 -1
  104. package/bin/lib/Image/ExifTool/MNG.pm +1 -1
  105. package/bin/lib/Image/ExifTool/MOI.pm +1 -1
  106. package/bin/lib/Image/ExifTool/MPC.pm +1 -1
  107. package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  108. package/bin/lib/Image/ExifTool/MPF.pm +1 -1
  109. package/bin/lib/Image/ExifTool/MRC.pm +1 -1
  110. package/bin/lib/Image/ExifTool/MWG.pm +1 -1
  111. package/bin/lib/Image/ExifTool/MXF.pm +1 -1
  112. package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  113. package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  114. package/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  115. package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  116. package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  117. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +3 -3
  118. package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  119. package/bin/lib/Image/ExifTool/Nikon.pm +11 -8
  120. package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  121. package/bin/lib/Image/ExifTool/NikonCustom.pm +4 -4
  122. package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  123. package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  124. package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  125. package/bin/lib/Image/ExifTool/Ogg.pm +3 -3
  126. package/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  127. package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  128. package/bin/lib/Image/ExifTool/Opus.pm +1 -1
  129. package/bin/lib/Image/ExifTool/Other.pm +1 -1
  130. package/bin/lib/Image/ExifTool/PCX.pm +1 -1
  131. package/bin/lib/Image/ExifTool/PDF.pm +55 -5
  132. package/bin/lib/Image/ExifTool/PGF.pm +1 -1
  133. package/bin/lib/Image/ExifTool/PICT.pm +1 -1
  134. package/bin/lib/Image/ExifTool/PLIST.pm +4 -4
  135. package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  136. package/bin/lib/Image/ExifTool/PNG.pm +24 -2
  137. package/bin/lib/Image/ExifTool/PPM.pm +1 -1
  138. package/bin/lib/Image/ExifTool/PSP.pm +1 -1
  139. package/bin/lib/Image/ExifTool/Palm.pm +1 -1
  140. package/bin/lib/Image/ExifTool/Panasonic.pm +27 -2
  141. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +4 -4
  142. package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  143. package/bin/lib/Image/ExifTool/Pentax.pm +32 -11
  144. package/bin/lib/Image/ExifTool/PhaseOne.pm +6 -6
  145. package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  146. package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  147. package/bin/lib/Image/ExifTool/Photoshop.pm +4 -4
  148. package/bin/lib/Image/ExifTool/PostScript.pm +3 -3
  149. package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  150. package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  151. package/bin/lib/Image/ExifTool/QuickTime.pm +55 -101
  152. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +97 -7
  153. package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  154. package/bin/lib/Image/ExifTool/RSRC.pm +3 -3
  155. package/bin/lib/Image/ExifTool/RTF.pm +1 -1
  156. package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  157. package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  158. package/bin/lib/Image/ExifTool/Real.pm +1 -1
  159. package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  160. package/bin/lib/Image/ExifTool/Red.pm +1 -1
  161. package/bin/lib/Image/ExifTool/Ricoh.pm +3 -3
  162. package/bin/lib/Image/ExifTool/Samsung.pm +5 -5
  163. package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  164. package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  165. package/bin/lib/Image/ExifTool/Shift.pl +2 -3
  166. package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  167. package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  168. package/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  169. package/bin/lib/Image/ExifTool/Sony.pm +5 -5
  170. package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  171. package/bin/lib/Image/ExifTool/Stim.pm +1 -1
  172. package/bin/lib/Image/ExifTool/TagInfoXML.pm +4 -4
  173. package/bin/lib/Image/ExifTool/TagLookup.pm +3879 -3862
  174. package/bin/lib/Image/ExifTool/TagNames.pod +11439 -11374
  175. package/bin/lib/Image/ExifTool/Text.pm +1 -1
  176. package/bin/lib/Image/ExifTool/Theora.pm +1 -1
  177. package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  178. package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  179. package/bin/lib/Image/ExifTool/VCard.pm +1 -1
  180. package/bin/lib/Image/ExifTool/Validate.pm +1 -1
  181. package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  182. package/bin/lib/Image/ExifTool/WPG.pm +1 -1
  183. package/bin/lib/Image/ExifTool/WTV.pm +1 -1
  184. package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
  185. package/bin/lib/Image/ExifTool/WriteExif.pl +27 -24
  186. package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  187. package/bin/lib/Image/ExifTool/WritePDF.pl +2 -2
  188. package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  189. package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  190. package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  191. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -2
  192. package/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  193. package/bin/lib/Image/ExifTool/WriteXMP.pl +9 -5
  194. package/bin/lib/Image/ExifTool/Writer.pl +74 -45
  195. package/bin/lib/Image/ExifTool/XISF.pm +1 -1
  196. package/bin/lib/Image/ExifTool/XMP.pm +20 -3
  197. package/bin/lib/Image/ExifTool/XMP2.pl +10 -1
  198. package/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  199. package/bin/lib/Image/ExifTool/ZIP.pm +7 -7
  200. package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  201. package/bin/lib/Image/ExifTool/iWork.pm +1 -1
  202. package/bin/lib/Image/ExifTool.pm +59 -28
  203. package/bin/lib/Image/ExifTool.pod +81 -68
  204. package/bin/perl-Image-ExifTool.spec +45 -44
  205. package/bin/pp_build_exe.args +5 -5
  206. package/package.json +5 -5
@@ -14,7 +14,7 @@ use vars qw($VERSION);
14
14
  use Image::ExifTool qw(:DataAccess :Utils);
15
15
  use Image::ExifTool::Import;
16
16
 
17
- $VERSION = '1.06';
17
+ $VERSION = '1.07';
18
18
 
19
19
  sub ProcessJSON($$);
20
20
  sub ProcessTag($$$$%);
@@ -120,7 +120,7 @@ sub ProcessJSON($$)
120
120
  my $buff = substr(${$$dirInfo{DataPt}}, $$dirInfo{DirStart}, $$dirInfo{DirLen});
121
121
  $dataPt = \$buff;
122
122
  }
123
- $raf = new File::RandomAccess($dataPt);
123
+ $raf = File::RandomAccess->new($dataPt);
124
124
  # extract as a block if requested
125
125
  my $blockName = $$dirInfo{BlockInfo} ? $$dirInfo{BlockInfo}{Name} : '';
126
126
  my $blockExtract = $et->Options('BlockExtract');
@@ -179,7 +179,7 @@ information from JSON files.
179
179
 
180
180
  =head1 AUTHOR
181
181
 
182
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
182
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
183
183
 
184
184
  This library is free software; you can redistribute it and/or modify it
185
185
  under the same terms as Perl itself.
@@ -13,7 +13,7 @@ use vars qw($VERSION);
13
13
  use Image::ExifTool qw(:DataAccess :Utils);
14
14
  use Image::ExifTool::Exif;
15
15
 
16
- $VERSION = '1.03';
16
+ $VERSION = '1.04';
17
17
 
18
18
  sub ProcessJVCText($$$);
19
19
 
@@ -88,7 +88,7 @@ sub ProcessJVCText($$$)
88
88
  $tagInfo = {
89
89
  Name => "JVC_Text_$tag",
90
90
  Unknown => 1,
91
- PrintConv => 'length($val) > 60 ? substr($val,0,55) . "[...]" : $val',
91
+ PrintConv => \&Image::ExifTool::LimitLongValues,
92
92
  };
93
93
  # add tag information to table
94
94
  AddTagToTable($tagTablePtr, $tag, $tagInfo);
@@ -117,7 +117,7 @@ notes.
117
117
 
118
118
  =head1 AUTHOR
119
119
 
120
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
120
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
121
121
 
122
122
  This library is free software; you can redistribute it and/or modify it
123
123
  under the same terms as Perl itself.
@@ -16,7 +16,7 @@ use strict;
16
16
  use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
 
19
- $VERSION = '1.36';
19
+ $VERSION = '1.39';
20
20
 
21
21
  sub ProcessJpeg2000Box($$$);
22
22
  sub ProcessJUMD($$$);
@@ -141,10 +141,13 @@ my %j2cMarker = (
141
141
  Authenticity Initiative) JUMBF (JPEG Universal Metadata Box Format) metdata
142
142
  is currently extracted from JPEG, PNG, TIFF-based (eg. TIFF, DNG),
143
143
  QuickTime-based (eg. MP4, MOV, HEIF, AVIF), RIFF-based (eg. WAV, AVI, WebP),
144
- GIF files and ID3v2 metadata. The suggested ExifTool command-line arguments
145
- for reading C2PA metadata are C<-jumbf:all -G3 -b -j -u -struct>. This
146
- metadata may be deleted from writable JPEG, PNG, WebP, TIFF-based, and
147
- QuickTime-based files by deleting the JUMBF group with C<-jumbf:all=>.
144
+ PDF, SVG and GIF files, and ID3v2 metadata. The suggested ExifTool
145
+ command-line arguments for reading C2PA metadata are C<-jumbf:all -G3 -b -j
146
+ -u -struct>. This metadata may be deleted from writable JPEG, PNG, WebP,
147
+ TIFF-based, and QuickTime-based files by deleting the JUMBF group with
148
+ C<-jumbf:all=>. The C2PA JUMBF metadata may be extracted as a block via the
149
+ JUMBF tag. See L<https://c2pa.org/specifications/> for the C2PA
150
+ specification.
148
151
  },
149
152
  #
150
153
  # NOTE: ONLY TAGS WITH "Format" DEFINED ARE EXTRACTED!
@@ -419,7 +422,7 @@ my %j2cMarker = (
419
422
  Flags => [ 'Binary', 'Protected' ],
420
423
  SubDirectory => { TagTable => 'Image::ExifTool::CBOR::Main' },
421
424
  },
422
- bfdb => { # used in JUMBF (see # (used when tag is renamed according to JUMDLabel)
425
+ bfdb => { # used in JUMBF
423
426
  Name => 'BinaryDataType',
424
427
  Notes => 'JUMBF, MIME type and optional file name',
425
428
  Format => 'undef',
@@ -748,6 +751,7 @@ my %j2cMarker = (
748
751
  },
749
752
  # seen:
750
753
  # cacb/cast/caas/cacl/casg/json-00110010800000aa00389b71
754
+ # (also brob- but not yet tested)
751
755
  # 6579d6fbdba2446bb2ac1b82feeb89d1 - JPEG image
752
756
  },
753
757
  'label' => { Name => 'JUMDLabel' },
@@ -821,6 +825,7 @@ sub ProcessJUMD($$$)
821
825
  $name =~ tr/-_a-zA-Z0-9//dc; # remove other illegal characters
822
826
  $name =~ s/__/_/; # collapse double underlines
823
827
  $name = ucfirst $name; # capitalize first letter
828
+ $name =~ s/C2pa/C2PA/; # capitalize C2PA
824
829
  $name = "Tag$name" if length($name) < 2; # must at least 2 characters long
825
830
  $$et{JUMBFLabel} = $name;
826
831
  }
@@ -854,6 +859,17 @@ sub ProcessJUMD($$$)
854
859
  return 1;
855
860
  }
856
861
 
862
+ #------------------------------------------------------------------------------
863
+ # Warn about error in Brotli compression/decompression
864
+ # Inputs: 0) ExifTool ref, 1) box type, 2) true for decoding (Uncompress)
865
+ sub BrotliWarn($$;$)
866
+ {
867
+ my ($et, $type, $uncompress) = @_;
868
+ my ($enc, $mod) = $uncompress ? qw(decoding Uncompress) : qw(encoding Compress);
869
+ $et->WarnOnce("Error $enc '${type}' brob box");
870
+ $et->WarnOnce("Try updating to IO::${mod}::Brotli 0.004 or later");
871
+ }
872
+
857
873
  #------------------------------------------------------------------------------
858
874
  # Create new JPEG 2000 boxes when writing
859
875
  # (Currently only supports adding top-level Writable JPEG2000 tags and certain UUID boxes)
@@ -909,7 +925,7 @@ sub CreateNewBoxes($$)
909
925
  my $compressed;
910
926
  eval { $compressed = IO::Compress::Brotli::bro($pad . $newdir) };
911
927
  if ($@ or not $compressed) {
912
- $et->Warn("Error encoding $dirName brob box");
928
+ BrotliWarn($et, $dirName);
913
929
  } else {
914
930
  $et->VPrint(0, " Writing Brotli-compressed $dir\n");
915
931
  $newdir = $compressed;
@@ -1006,11 +1022,23 @@ sub ProcessJpeg2000Box($$$)
1006
1022
  my $dirStart = $$dirInfo{DirStart} || 0;
1007
1023
  my $base = $$dirInfo{Base} || 0;
1008
1024
  my $outfile = $$dirInfo{OutFile};
1025
+ my $dirName = $$dirInfo{DirName} || '';
1009
1026
  my $dirEnd = $dirStart + $dirLen;
1010
1027
  my ($err, $outBuff, $verbose, $doColour, $hash, $raf);
1011
1028
 
1012
- # read from RAF unless reading from buffer
1013
- $raf = $$dirInfo{RAF} unless $dataPt;
1029
+ if ($dataPt) {
1030
+ # save C2PA JUMBF as a block if requested
1031
+ if ($dirName eq 'JUMBF' and $$et{REQ_TAG_LOOKUP}{jumbf} and not $$dirInfo{NoBlockSave}) {
1032
+ if ($dirStart or $dirLen ne length($$dataPt)) {
1033
+ my $dat = substr($$dataPt, $dirStart, $dirLen);
1034
+ $et->FoundTag(JUMBF => \$dat);
1035
+ } else {
1036
+ $et->FoundTag(JUMBF => $dataPt);
1037
+ }
1038
+ }
1039
+ } else {
1040
+ $raf = $$dirInfo{RAF}; # read from RAF
1041
+ }
1014
1042
 
1015
1043
  if ($outfile) {
1016
1044
  unless ($raf) {
@@ -1019,7 +1047,7 @@ sub ProcessJpeg2000Box($$$)
1019
1047
  $outfile = \$outBuff;
1020
1048
  }
1021
1049
  # determine if we will be writing colr box
1022
- if ($$dirInfo{DirName} and $$dirInfo{DirName} eq 'JP2Header') {
1050
+ if ($dirName eq 'JP2Header') {
1023
1051
  $doColour = 2 if defined $et->GetNewValue('ColorSpecMethod') or $et->GetNewValue('ICC_Profile') or
1024
1052
  defined $et->GetNewValue('ColorSpecPrecedence') or defined $et->GetNewValue('ColorSpace') or
1025
1053
  defined $et->GetNewValue('ColorSpecApproximation') or defined $et->GetNewValue('ColorSpecData');
@@ -1027,7 +1055,7 @@ sub ProcessJpeg2000Box($$$)
1027
1055
  } else {
1028
1056
  # (must not set verbose flag when writing!)
1029
1057
  $verbose = $$et{OPTIONS}{Verbose};
1030
- $et->VerboseDir($$dirInfo{DirName}) if $verbose;
1058
+ $et->VerboseDir($dirName) if $verbose;
1031
1059
  # do hash if requested, but only for top-level image data
1032
1060
  $hash = $$et{ImageDataHash} if $raf;
1033
1061
  }
@@ -1176,7 +1204,7 @@ sub ProcessJpeg2000Box($$$)
1176
1204
  # create new tag for JUMBF data values with name corresponding to JUMBFLabel
1177
1205
  if ($tagInfo and $$et{JUMBFLabel} and (not $$tagInfo{SubDirectory} or $$tagInfo{BlockExtract})) {
1178
1206
  $tagInfo = { %$tagInfo, Name => $$et{JUMBFLabel} . ($$tagInfo{JUMBF_Suffix} || '') };
1179
- delete $$tagInfo{Description};
1207
+ ($$tagInfo{Description} = Image::ExifTool::MakeDescription($$tagInfo{Name})) =~ s/C2 PA/C2PA/;
1180
1208
  AddTagToTable($tagTablePtr, '_JUMBF_' . $$et{JUMBFLabel}, $tagInfo);
1181
1209
  delete $$tagInfo{Protected}; # (must do this so -j -b returns JUMBF binary data)
1182
1210
  $$tagInfo{TagID} = $boxID;
@@ -1248,7 +1276,7 @@ sub ProcessJpeg2000Box($$$)
1248
1276
  my $compressed;
1249
1277
  eval { $compressed = IO::Compress::Brotli::bro($pad . $newdir) };
1250
1278
  if ($@ or not $compressed) {
1251
- $et->Warn("Error encoding $boxID brob box");
1279
+ BrotliWarn($et, $boxID);
1252
1280
  } else {
1253
1281
  $et->VPrint(0, " Writing Brotli-compressed $boxID\n");
1254
1282
  $newdir = $boxID . $compressed;
@@ -1389,7 +1417,7 @@ sub ProcessBrotli($$$)
1389
1417
  my $verbose = $isWriting ? 0 : $et->Options('Verbose');
1390
1418
  my $dat = substr($$dataPt, 4);
1391
1419
  eval { $dat = IO::Uncompress::Brotli::unbro($dat, 100000000) };
1392
- $@ and $et->Warn("Error decoding $type brob box"), return 1;
1420
+ $@ and BrotliWarn($et, $type, 1), return 1;
1393
1421
  $verbose > 2 and $et->VerboseDump(\$dat, Prefix => $$et{INDENT} . ' ');
1394
1422
  my %dirInfo = ( DataPt => \$dat );
1395
1423
  if ($type eq 'xml ') {
@@ -1422,7 +1450,7 @@ sub ProcessBrotli($$$)
1422
1450
  # rewrite as uncompressed if Compress option is set to 0 (or '')
1423
1451
  return $dat if defined $compress and not $compress;
1424
1452
  eval { $dat = IO::Compress::Brotli::bro($dat) };
1425
- $@ and $et->Warn("Error encoding $type brob box"), return undef;
1453
+ $@ and BrotliWarn($et, $type), return undef;
1426
1454
  $et->VPrint(0, " Writing Brotli-compressed $type\n");
1427
1455
  return $type . $dat;
1428
1456
  }
@@ -1480,6 +1508,28 @@ sub ProcessJXLCodestream($$)
1480
1508
  return 1;
1481
1509
  }
1482
1510
 
1511
+ #------------------------------------------------------------------------------
1512
+ # Read/write meta information from a C2PA/JUMBF file
1513
+ # Inputs: 0) ExifTool object reference, 1) dirInfo reference
1514
+ # Returns: 1 on success, 0 if this wasn't a valid JUMBF file
1515
+ sub ProcessJUMBF($$)
1516
+ {
1517
+ my ($et, $dirInfo) = @_;
1518
+ my $raf = $$dirInfo{RAF};
1519
+ my $hdr;
1520
+
1521
+ # check to be sure this is a valid JPG2000 file
1522
+ return 0 unless $raf->Read($hdr,20) == 20 and $raf->Seek(0,0);
1523
+ return 0 unless $hdr =~ /^.{4}jumb\0.{3}jumd(.{4})/;
1524
+ $et->SetFileType($1 eq 'c2pa' ? 'C2PA' : 'JUMBF');
1525
+ my %dirInfo = (
1526
+ RAF => $raf,
1527
+ DirName => 'JUMBF',
1528
+ );
1529
+ my $tagTablePtr = GetTagTable('Image::ExifTool::Jpeg2000::Main');
1530
+ return $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
1531
+ }
1532
+
1483
1533
  #------------------------------------------------------------------------------
1484
1534
  # Read/write meta information from a JPEG 2000 image
1485
1535
  # Inputs: 0) ExifTool object reference, 1) dirInfo reference
@@ -1572,7 +1622,7 @@ sub ProcessJXL($$)
1572
1622
  $$et{IsJXL} = 2;
1573
1623
  my $buff = "\0\0\0\x0cJXL \x0d\x0a\x87\x0a\0\0\0\x14ftypjxl \0\0\0\0jxl ";
1574
1624
  # add metadata to empty ISO BMFF container
1575
- $$dirInfo{RAF} = new File::RandomAccess(\$buff);
1625
+ $$dirInfo{RAF} = File::RandomAccess->new(\$buff);
1576
1626
  } else {
1577
1627
  $et->SetFileType('JXL Codestream','image/jxl', 'jxl');
1578
1628
  if ($$et{ImageDataHash} and $raf->Seek(0,0)) {
@@ -1620,7 +1670,7 @@ files.
1620
1670
 
1621
1671
  =head1 AUTHOR
1622
1672
 
1623
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1673
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1624
1674
 
1625
1675
  This library is free software; you can redistribute it and/or modify it
1626
1676
  under the same terms as Perl itself.
@@ -3252,7 +3252,7 @@ interpret Kodak maker notes EXIF meta information.
3252
3252
 
3253
3253
  =head1 AUTHOR
3254
3254
 
3255
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
3255
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
3256
3256
 
3257
3257
  This library is free software; you can redistribute it and/or modify it
3258
3258
  under the same terms as Perl itself.
@@ -152,7 +152,7 @@ meta information from Kyocera Contax N Digital RAW images.
152
152
 
153
153
  =head1 AUTHOR
154
154
 
155
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
155
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
156
156
 
157
157
  This library is free software; you can redistribute it and/or modify it
158
158
  under the same terms as Perl itself.
@@ -147,7 +147,7 @@ metadata from Leica Image File (LIF) images.
147
147
 
148
148
  =head1 AUTHOR
149
149
 
150
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
150
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
151
151
 
152
152
  This library is free software; you can redistribute it and/or modify it
153
153
  under the same terms as Perl itself.
@@ -703,7 +703,7 @@ information MS Shell Link (Windows shortcut) files.
703
703
 
704
704
  =head1 AUTHOR
705
705
 
706
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
706
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
707
707
 
708
708
  This library is free software; you can redistribute it and/or modify it
709
709
  under the same terms as Perl itself.
@@ -1570,7 +1570,7 @@ and values.
1570
1570
 
1571
1571
  =head1 AUTHOR
1572
1572
 
1573
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1573
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1574
1574
 
1575
1575
  This library is free software; you can redistribute it and/or modify it
1576
1576
  under the same terms as Perl itself.
@@ -8702,7 +8702,7 @@ and values.
8702
8702
 
8703
8703
  =head1 AUTHOR
8704
8704
 
8705
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
8705
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
8706
8706
 
8707
8707
  This library is free software; you can redistribute it and/or modify it
8708
8708
  under the same terms as Perl itself.
@@ -989,7 +989,7 @@ and values.
989
989
 
990
990
  =head1 AUTHOR
991
991
 
992
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
992
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
993
993
 
994
994
  This library is free software; you can redistribute it and/or modify it
995
995
  under the same terms as Perl itself.
@@ -1032,7 +1032,7 @@ and values.
1032
1032
 
1033
1033
  =head1 AUTHOR
1034
1034
 
1035
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1035
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1036
1036
 
1037
1037
  This library is free software; you can redistribute it and/or modify it
1038
1038
  under the same terms as Perl itself.
@@ -1980,10 +1980,10 @@ $VERSION = '1.16';
1980
1980
  'IPTCPixelHeight' => 'Tamaño Pixel Perpendicular a Dirección Escaneo',
1981
1981
  'IPTCPixelWidth' => 'Tamaño Pixel en Dirección Escaneo',
1982
1982
  'ISO' => 'Ratio Velocidad ISO',
1983
- 'ISOAutoParameters' => {
1983
+ 'ISOAutoMinSpeed' => {
1984
1984
  PrintConv => {
1985
- 'Fast' => 'Rápido',
1986
- 'Standard' => 'Estándar',
1985
+ 'Auto Fast' => 'Auto-rápido',
1986
+ 'Auto Standard' => 'Auto-estándar',
1987
1987
  },
1988
1988
  },
1989
1989
  'ISOExpansion' => {
@@ -4005,7 +4005,7 @@ and values.
4005
4005
 
4006
4006
  =head1 AUTHOR
4007
4007
 
4008
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
4008
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
4009
4009
 
4010
4010
  This library is free software; you can redistribute it and/or modify it
4011
4011
  under the same terms as Perl itself.
@@ -2878,7 +2878,7 @@ and values.
2878
2878
 
2879
2879
  =head1 AUTHOR
2880
2880
 
2881
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2881
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2882
2882
 
2883
2883
  This library is free software; you can redistribute it and/or modify it
2884
2884
  under the same terms as Perl itself.
@@ -5881,11 +5881,10 @@ $VERSION = '1.36';
5881
5881
  'ISOAutoMax' => 'ISO Auto maximum',
5882
5882
  'ISOAutoMin' => 'ISO Auto minimum',
5883
5883
  'ISOAutoOffset' => 'Décalage automatique de l\'ISO',
5884
- 'ISOAutoParameters' => {
5885
- Description => 'Paramètres de l\'ISO Auto',
5884
+ 'ISOAutoMinSpeed' => {
5886
5885
  PrintConv => {
5887
- 'Fast' => 'Rapide',
5888
- 'Slow' => 'Lent',
5886
+ 'Auto Fast' => 'Auto rapide',
5887
+ 'Auto Slow' => 'Auto lent',
5889
5888
  },
5890
5889
  },
5891
5890
  'ISOExpansion' => {
@@ -11271,7 +11270,7 @@ and values.
11271
11270
 
11272
11271
  =head1 AUTHOR
11273
11272
 
11274
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
11273
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
11275
11274
 
11276
11275
  This library is free software; you can redistribute it and/or modify it
11277
11276
  under the same terms as Perl itself.
@@ -3613,10 +3613,10 @@ $VERSION = '1.14';
3613
3613
  'Off' => 'Spento',
3614
3614
  },
3615
3615
  },
3616
- 'ISOAutoParameters' => {
3616
+ 'ISOAutoMinSpeed' => {
3617
3617
  Description => 'Parametri ISO auto',
3618
3618
  PrintConv => {
3619
- 'Fast' => 'Veloce',
3619
+ 'Auto Fast' => 'Auto veloce',
3620
3620
  },
3621
3621
  },
3622
3622
  'ISODisplay' => {
@@ -7903,7 +7903,7 @@ and values.
7903
7903
 
7904
7904
  =head1 AUTHOR
7905
7905
 
7906
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
7906
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
7907
7907
 
7908
7908
  This library is free software; you can redistribute it and/or modify it
7909
7909
  under the same terms as Perl itself.
@@ -5841,7 +5841,7 @@ and values.
5841
5841
 
5842
5842
  =head1 AUTHOR
5843
5843
 
5844
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
5844
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
5845
5845
 
5846
5846
  This library is free software; you can redistribute it and/or modify it
5847
5847
  under the same terms as Perl itself.
@@ -2316,7 +2316,7 @@ and values.
2316
2316
 
2317
2317
  =head1 AUTHOR
2318
2318
 
2319
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2319
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2320
2320
 
2321
2321
  This library is free software; you can redistribute it and/or modify it
2322
2322
  under the same terms as Perl itself.
@@ -3208,7 +3208,7 @@ and values.
3208
3208
 
3209
3209
  =head1 AUTHOR
3210
3210
 
3211
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
3211
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
3212
3212
 
3213
3213
  This library is free software; you can redistribute it and/or modify it
3214
3214
  under the same terms as Perl itself.
@@ -1258,7 +1258,7 @@ and values.
1258
1258
 
1259
1259
  =head1 AUTHOR
1260
1260
 
1261
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1261
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1262
1262
 
1263
1263
  This library is free software; you can redistribute it and/or modify it
1264
1264
  under the same terms as Perl itself.
@@ -5718,7 +5718,7 @@ and values.
5718
5718
 
5719
5719
  =head1 AUTHOR
5720
5720
 
5721
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
5721
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
5722
5722
 
5723
5723
  This library is free software; you can redistribute it and/or modify it
5724
5724
  under the same terms as Perl itself.
@@ -1789,7 +1789,7 @@ and values.
1789
1789
 
1790
1790
  =head1 AUTHOR
1791
1791
 
1792
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1792
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1793
1793
 
1794
1794
  This library is free software; you can redistribute it and/or modify it
1795
1795
  under the same terms as Perl itself.
@@ -620,7 +620,7 @@ and values.
620
620
 
621
621
  =head1 AUTHOR
622
622
 
623
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
623
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
624
624
 
625
625
  This library is free software; you can redistribute it and/or modify it
626
626
  under the same terms as Perl itself.
@@ -528,7 +528,7 @@ and values.
528
528
 
529
529
  =head1 AUTHOR
530
530
 
531
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
531
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
532
532
 
533
533
  This library is free software; you can redistribute it and/or modify it
534
534
  under the same terms as Perl itself.
@@ -1313,7 +1313,7 @@ and values.
1313
1313
 
1314
1314
  =head1 AUTHOR
1315
1315
 
1316
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1316
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1317
1317
 
1318
1318
  This library is free software; you can redistribute it and/or modify it
1319
1319
  under the same terms as Perl itself.
@@ -784,7 +784,7 @@ and values.
784
784
 
785
785
  =head1 AUTHOR
786
786
 
787
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
787
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
788
788
 
789
789
  This library is free software; you can redistribute it and/or modify it
790
790
  under the same terms as Perl itself.
@@ -13,7 +13,7 @@ use vars qw($VERSION);
13
13
  use Image::ExifTool qw(:DataAccess :Utils);
14
14
  use Image::ExifTool::Exif;
15
15
 
16
- $VERSION = '1.07';
16
+ $VERSION = '1.08';
17
17
 
18
18
  sub ProcessLeaf($$$);
19
19
 
@@ -444,7 +444,7 @@ sub ProcessLeaf($$$)
444
444
  $tagInfo = {
445
445
  Name => $name,
446
446
  Writable => 0,
447
- PrintConv => 'length($val) > 60 ? substr($val,0,55) . "[...]" : $val',
447
+ PrintConv => \&Image::ExifTool::LimitLongValues,
448
448
  };
449
449
  # make tags in main table unknown because they tend to be binary
450
450
  $$tagInfo{Unknown} = 1 if $tagTablePtr eq \%Image::ExifTool::Leaf::Main;
@@ -504,7 +504,7 @@ Capture.
504
504
 
505
505
  =head1 AUTHOR
506
506
 
507
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
507
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
508
508
 
509
509
  This library is free software; you can redistribute it and/or modify it
510
510
  under the same terms as Perl itself.
@@ -192,7 +192,7 @@ from Lytro Light Field Picture (LFP) files.
192
192
 
193
193
  =head1 AUTHOR
194
194
 
195
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
195
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
196
196
 
197
197
  This library is free software; you can redistribute it and/or modify it
198
198
  under the same terms as Perl itself.
@@ -941,7 +941,7 @@ video.
941
941
 
942
942
  =head1 AUTHOR
943
943
 
944
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
944
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
945
945
 
946
946
  This library is free software; you can redistribute it and/or modify it
947
947
  under the same terms as Perl itself.
@@ -14,7 +14,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
14
14
  use Image::ExifTool::Exif;
15
15
  use Image::ExifTool::GPS;
16
16
 
17
- $VERSION = '1.51';
17
+ $VERSION = '1.54';
18
18
 
19
19
  sub ProcessMIE($$);
20
20
  sub ProcessMIEGroup($$$);
@@ -1077,7 +1077,7 @@ sub WriteMIEGroup($$$)
1077
1077
  $newVal = '';
1078
1078
  %subdirInfo = (
1079
1079
  OutFile => \$newVal,
1080
- RAF => new File::RandomAccess(\$oldVal),
1080
+ RAF => File::RandomAccess->new(\$oldVal),
1081
1081
  );
1082
1082
  } elsif ($optCompress and not $$dirInfo{IsCompressed}) {
1083
1083
  # write to memory so we can compress the new MIE group
@@ -1536,7 +1536,7 @@ sub ProcessMIEGroup($$$)
1536
1536
  $tagInfo = {
1537
1537
  Name => $tag,
1538
1538
  Writable => 0,
1539
- PrintConv => 'length($val) > 60 ? substr($val,0,55) . "[...]" : $val',
1539
+ PrintConv => \&Image::ExifTool::LimitLongValues,
1540
1540
  };
1541
1541
  AddTagToTable($tagTablePtr, $tag, $tagInfo);
1542
1542
  last;
@@ -1585,7 +1585,7 @@ sub ProcessMIEGroup($$$)
1585
1585
  WasCompressed => $wasCompressed,
1586
1586
  );
1587
1587
  # read from uncompressed data instead if necessary
1588
- $subdirInfo{RAF} = new File::RandomAccess(\$value) if $valLen;
1588
+ $subdirInfo{RAF} = File::RandomAccess->new(\$value) if $valLen;
1589
1589
 
1590
1590
  my $oldOrder = GetByteOrder();
1591
1591
  SetByteOrder($format & 0x08 ? 'II' : 'MM');
@@ -2551,7 +2551,7 @@ tag name. For example:
2551
2551
 
2552
2552
  =head1 AUTHOR
2553
2553
 
2554
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2554
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2555
2555
 
2556
2556
  This library is free software; you can redistribute it and/or modify it
2557
2557
  under the same terms as Perl itself. The MIE format itself is also
@@ -356,7 +356,7 @@ A few examples of combined units strings:
356
356
 
357
357
  =head1 AUTHOR
358
358
 
359
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
359
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
360
360
 
361
361
  This library is free software; you can redistribute it and/or modify it
362
362
  under the same terms as Perl itself.
@@ -255,7 +255,7 @@ This module contains routines required by Image::ExifTool to read MIFF
255
255
 
256
256
  =head1 AUTHOR
257
257
 
258
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
258
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
259
259
 
260
260
  This library is free software; you can redistribute it and/or modify it
261
261
  under the same terms as Perl itself.
@@ -468,7 +468,7 @@ Board (MISB) KLV-format metadata from M2TS videos.
468
468
 
469
469
  =head1 AUTHOR
470
470
 
471
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
471
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
472
472
 
473
473
  This library is free software; you can redistribute it and/or modify it
474
474
  under the same terms as Perl itself.
@@ -661,7 +661,7 @@ This module contains definitions required by Image::ExifTool to read MNG
661
661
 
662
662
  =head1 AUTHOR
663
663
 
664
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
664
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
665
665
 
666
666
  This library is free software; you can redistribute it and/or modify it
667
667
  under the same terms as Perl itself.