exiftool_vendored 12.72.0 → 12.74.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +42 -0
  3. data/bin/META.json +1 -1
  4. data/bin/META.yml +1 -1
  5. data/bin/README +3 -3
  6. data/bin/exiftool +75 -53
  7. data/bin/lib/File/RandomAccess.pm +32 -6
  8. data/bin/lib/File/RandomAccess.pod +6 -6
  9. data/bin/lib/Image/ExifTool/7Z.pm +3 -3
  10. data/bin/lib/Image/ExifTool/AAC.pm +8 -6
  11. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AFCP.pm +3 -3
  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 +3 -3
  22. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -7
  24. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  25. data/bin/lib/Image/ExifTool/Canon.pm +4 -4
  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 +3 -3
  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 +3 -3
  33. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  34. data/bin/lib/Image/ExifTool/DNG.pm +5 -5
  35. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  39. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  40. data/bin/lib/Image/ExifTool/Exif.pm +3 -3
  41. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  42. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  44. data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  45. data/bin/lib/Image/ExifTool/Fixup.pm +4 -4
  46. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  47. data/bin/lib/Image/ExifTool/FlashPix.pm +61 -8
  48. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  50. data/bin/lib/Image/ExifTool/FujiFilm.pm +9 -4
  51. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  56. data/bin/lib/Image/ExifTool/Geotag.pm +4 -4
  57. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  58. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  59. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  61. data/bin/lib/Image/ExifTool/HtmlDump.pm +3 -3
  62. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  63. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  64. data/bin/lib/Image/ExifTool/ID3.pm +3 -3
  65. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  67. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  68. data/bin/lib/Image/ExifTool/Import.pm +6 -6
  69. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  70. data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JPEG.pm +5 -2
  72. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  73. data/bin/lib/Image/ExifTool/JSON.pm +3 -3
  74. data/bin/lib/Image/ExifTool/JVC.pm +3 -3
  75. data/bin/lib/Image/ExifTool/Jpeg2000.pm +18 -7
  76. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  77. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  78. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  79. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/es.pm +4 -4
  85. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/fr.pm +4 -5
  87. data/bin/lib/Image/ExifTool/Lang/it.pm +3 -3
  88. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Leaf.pm +3 -3
  99. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  100. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  101. data/bin/lib/Image/ExifTool/MIE.pm +5 -5
  102. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  103. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  115. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  116. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  117. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  118. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +3 -3
  119. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  120. data/bin/lib/Image/ExifTool/Nikon.pm +11 -8
  121. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  122. data/bin/lib/Image/ExifTool/NikonCustom.pm +4 -4
  123. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  124. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  125. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  126. data/bin/lib/Image/ExifTool/Ogg.pm +3 -3
  127. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  128. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  129. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  130. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  131. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  133. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  134. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PLIST.pm +4 -4
  136. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PNG.pm +24 -2
  138. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  140. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  141. data/bin/lib/Image/ExifTool/Panasonic.pm +27 -2
  142. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +4 -4
  143. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Pentax.pm +32 -11
  145. data/bin/lib/Image/ExifTool/PhaseOne.pm +6 -6
  146. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  147. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  148. data/bin/lib/Image/ExifTool/Photoshop.pm +4 -4
  149. data/bin/lib/Image/ExifTool/PostScript.pm +3 -3
  150. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  152. data/bin/lib/Image/ExifTool/QuickTime.pm +54 -101
  153. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +97 -7
  154. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  155. data/bin/lib/Image/ExifTool/RSRC.pm +3 -3
  156. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Ricoh.pm +3 -3
  163. data/bin/lib/Image/ExifTool/Samsung.pm +5 -5
  164. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Shift.pl +2 -2
  167. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  169. data/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  170. data/bin/lib/Image/ExifTool/Sony.pm +5 -5
  171. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  173. data/bin/lib/Image/ExifTool/TagInfoXML.pm +4 -4
  174. data/bin/lib/Image/ExifTool/TagLookup.pm +3876 -3862
  175. data/bin/lib/Image/ExifTool/TagNames.pod +11420 -11382
  176. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  177. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  178. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  179. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  180. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  181. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  182. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  183. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  184. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  185. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
  186. data/bin/lib/Image/ExifTool/WriteExif.pl +16 -16
  187. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  188. data/bin/lib/Image/ExifTool/WritePDF.pl +2 -2
  189. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  190. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  191. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  192. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -2
  193. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  194. data/bin/lib/Image/ExifTool/WriteXMP.pl +9 -5
  195. data/bin/lib/Image/ExifTool/Writer.pl +72 -43
  196. data/bin/lib/Image/ExifTool/XISF.pm +1 -1
  197. data/bin/lib/Image/ExifTool/XMP.pm +19 -3
  198. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  199. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  200. data/bin/lib/Image/ExifTool/ZIP.pm +7 -7
  201. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  202. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  203. data/bin/lib/Image/ExifTool.pm +44 -25
  204. data/bin/lib/Image/ExifTool.pod +12 -3
  205. data/bin/perl-Image-ExifTool.spec +1 -1
  206. data/lib/exiftool_vendored/version.rb +1 -1
  207. metadata +2 -2
@@ -221,7 +221,7 @@ characteristics of TXT and CSV files.
221
221
 
222
222
  =head1 AUTHOR
223
223
 
224
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
224
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
225
225
 
226
226
  This library is free software; you can redistribute it and/or modify it
227
227
  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-2023, Phil Harvey (philharvey66 at gmail.com)
125
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
312
+ Copyright 2003-2024, 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.
@@ -53,7 +53,7 @@ unknown manufacturers.
53
53
 
54
54
  =head1 AUTHOR
55
55
 
56
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
56
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
433
+ Copyright 2003-2024, 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.
@@ -678,7 +678,7 @@ ExifTool Validate option is enabled.
678
678
 
679
679
  =head1 AUTHOR
680
680
 
681
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
681
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
231
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
274
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
300
+ Copyright 2003-2024, 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.
@@ -128,7 +128,7 @@ sub SaveMakerNotes($)
128
128
  delete $$et{MAKER_NOTE_INFO};
129
129
  my $dirEntries = $makerInfo->{Entries};
130
130
  my $numEntries = scalar(keys %$dirEntries);
131
- my $fixup = new Image::ExifTool::Fixup;
131
+ my $fixup = Image::ExifTool::Fixup->new;
132
132
  return unless $numEntries;
133
133
  # build the MakerNotes directory
134
134
  my $makerNotes = Set16u($numEntries);
@@ -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-2023, Phil Harvey (philharvey66 at gmail.com)
633
+ Copyright 2003-2024, 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.
@@ -171,9 +171,9 @@ sub RebuildMakerNotes($$$)
171
171
  my $saveOrder = GetByteOrder();
172
172
  my $loc = Image::ExifTool::MakerNotes::LocateIFD($et,\%subdirInfo);
173
173
  if (defined $loc) {
174
- my $makerFixup = $subdirInfo{Fixup} = new Image::ExifTool::Fixup;
174
+ my $makerFixup = $subdirInfo{Fixup} = Image::ExifTool::Fixup->new;
175
175
  # create new exiftool object to rewrite the directory without changing it
176
- my $newTool = new Image::ExifTool;
176
+ my $newTool = Image::ExifTool->new;
177
177
  $newTool->Options(
178
178
  IgnoreMinorErrors => $$et{OPTIONS}{IgnoreMinorErrors},
179
179
  FixBase => $$et{OPTIONS}{FixBase},
@@ -565,7 +565,7 @@ sub WriteExif($$$)
565
565
  my $firstBase = $base;
566
566
  my $raf = $$dirInfo{RAF};
567
567
  my $dirName = $$dirInfo{DirName} || 'unknown';
568
- my $fixup = $$dirInfo{Fixup} || new Image::ExifTool::Fixup;
568
+ my $fixup = $$dirInfo{Fixup} || Image::ExifTool::Fixup->new;
569
569
  my $imageDataFlag = $$dirInfo{ImageData} || '';
570
570
  my $verbose = $et->Options('Verbose');
571
571
  my $out = $et->Options('TextOut');
@@ -745,7 +745,7 @@ sub WriteExif($$$)
745
745
  my $valBuff = ''; # buffer for value data
746
746
  my @valFixups; # list of fixups for offsets in valBuff
747
747
  # fixup for offsets in dirBuff
748
- my $dirFixup = new Image::ExifTool::Fixup;
748
+ my $dirFixup = Image::ExifTool::Fixup->new;
749
749
  my $entryBasedFixup;
750
750
  my $lastTagID = -1;
751
751
  my ($oldInfo, $oldFormat, $oldFormName, $oldCount, $oldSize, $oldValue, $oldImageData);
@@ -896,7 +896,7 @@ Entry: for (;;) {
896
896
  TagInfo => $oldInfo || $tmpInfo,
897
897
  Offset => $base + $valuePtr + $dataPos,
898
898
  Size => $oldSize,
899
- Fixup => new Image::ExifTool::Fixup,
899
+ Fixup => Image::ExifTool::Fixup->new,
900
900
  },
901
901
  $invalidPreview = 2;
902
902
  # remove SubDirectory to prevent processing (for now)
@@ -1348,7 +1348,7 @@ NoOverwrite: next if $isNew > 0;
1348
1348
  # create empty source directory
1349
1349
  my %sourceDir = (
1350
1350
  Parent => $dirName,
1351
- Fixup => new Image::ExifTool::Fixup,
1351
+ Fixup => Image::ExifTool::Fixup->new,
1352
1352
  );
1353
1353
  $sourceDir{DirName} = $$newInfo{Groups}{1} if $$newInfo{SubIFD};
1354
1354
  $newValue = $et->WriteDirectory(\%sourceDir, $subTable);
@@ -1509,7 +1509,7 @@ NoOverwrite: next if $isNew > 0;
1509
1509
  }
1510
1510
  if (defined $loc) {
1511
1511
  # we need fixup data for this subdirectory
1512
- $subdirInfo{Fixup} = new Image::ExifTool::Fixup;
1512
+ $subdirInfo{Fixup} = Image::ExifTool::Fixup->new;
1513
1513
  # rewrite maker notes
1514
1514
  my $changed = $$et{CHANGED};
1515
1515
  $subdir = $et->WriteDirectory(\%subdirInfo, $subTable, $writeProc);
@@ -1673,7 +1673,7 @@ NoOverwrite: next if $isNew > 0;
1673
1673
  Name => $$newInfo{Name},
1674
1674
  TagInfo => $newInfo,
1675
1675
  Parent => $dirName,
1676
- Fixup => new Image::ExifTool::Fixup,
1676
+ Fixup => Image::ExifTool::Fixup->new,
1677
1677
  RAF => $raf,
1678
1678
  Subdir => $subdir,
1679
1679
  # set ImageData only for 1st level SubIFD's
@@ -1782,7 +1782,7 @@ NoOverwrite: next if $isNew > 0;
1782
1782
  #### eval Base ($start,$base)
1783
1783
  $subdirBase += eval $$subdir{Base};
1784
1784
  }
1785
- my $subFixup = new Image::ExifTool::Fixup;
1785
+ my $subFixup = Image::ExifTool::Fixup->new;
1786
1786
  my %subdirInfo = (
1787
1787
  Base => $subdirBase,
1788
1788
  DataPt => $valueDataPt,
@@ -1995,7 +1995,7 @@ NoOverwrite: next if $isNew > 0;
1995
1995
  # hold onto the PreviewImage until we can determine if it fits
1996
1996
  $$et{PREVIEW_INFO} or $$et{PREVIEW_INFO} = {
1997
1997
  Data => $$newValuePt,
1998
- Fixup => new Image::ExifTool::Fixup,
1998
+ Fixup => Image::ExifTool::Fixup->new,
1999
1999
  };
2000
2000
  $$et{PREVIEW_INFO}{ChangeBase} = 1 if $$newInfo{ChangeBase};
2001
2001
  if ($$newInfo{IsOffset} and $$newInfo{IsOffset} eq '2') {
@@ -2017,7 +2017,7 @@ NoOverwrite: next if $isNew > 0;
2017
2017
  $valBuff .= $$newValuePt; # add value data to buffer
2018
2018
  # must save a fixup pointer for every pointer in the directory
2019
2019
  if ($entryBased) {
2020
- $entryBasedFixup or $entryBasedFixup = new Image::ExifTool::Fixup;
2020
+ $entryBasedFixup or $entryBasedFixup = Image::ExifTool::Fixup->new;
2021
2021
  $entryBasedFixup->AddFixup(length($dirBuff) + 8, $dataTag);
2022
2022
  } else {
2023
2023
  $dirFixup->AddFixup(length($dirBuff) + 8, $dataTag);
@@ -2451,7 +2451,7 @@ NoOverwrite: next if $isNew > 0;
2451
2451
  $newOffset += $blockSize; # data comes after other deferred data
2452
2452
  # create fixup for SubIFD ImageData
2453
2453
  if ($imageDataFlag eq 'SubIFD' and not $subIfdDataFixup) {
2454
- $subIfdDataFixup = new Image::ExifTool::Fixup;
2454
+ $subIfdDataFixup = Image::ExifTool::Fixup->new;
2455
2455
  $imageData[-1][4] = $subIfdDataFixup;
2456
2456
  }
2457
2457
  $size += $pad; # account for pad byte if necessary
@@ -2522,7 +2522,7 @@ NoOverwrite: next if $isNew > 0;
2522
2522
  # hold onto the PreviewImage until we can determine if it fits
2523
2523
  $$et{PREVIEW_INFO} or $$et{PREVIEW_INFO} = {
2524
2524
  Data => $buff,
2525
- Fixup => new Image::ExifTool::Fixup,
2525
+ Fixup => Image::ExifTool::Fixup->new,
2526
2526
  };
2527
2527
  if ($$tagInfo{IsOffset} and $$tagInfo{IsOffset} eq '2') {
2528
2528
  $$et{PREVIEW_INFO}{NoBaseShift} = 1;
@@ -2603,7 +2603,7 @@ NoOverwrite: next if $isNew > 0;
2603
2603
  $fixup->AddFixup($entry + 8);
2604
2604
  # create special fixup for SubIFD data
2605
2605
  if ($imageDataFlag eq 'SubIFD') {
2606
- my $subIfdDataFixup = new Image::ExifTool::Fixup;
2606
+ my $subIfdDataFixup = Image::ExifTool::Fixup->new;
2607
2607
  $subIfdDataFixup->AddFixup($entry + 8);
2608
2608
  # save fixup in imageData list
2609
2609
  $$blockInfo[4] = $subIfdDataFixup;
@@ -2668,7 +2668,7 @@ NoOverwrite: next if $isNew > 0;
2668
2668
  } else {
2669
2669
  # Doesn't fit, or we still don't know, so save fixup information
2670
2670
  # and put the preview at the end of the file
2671
- $$previewInfo{Fixup} or $$previewInfo{Fixup} = new Image::ExifTool::Fixup;
2671
+ $$previewInfo{Fixup} or $$previewInfo{Fixup} = Image::ExifTool::Fixup->new;
2672
2672
  $$previewInfo{Fixup}->AddFixup($fixup);
2673
2673
  }
2674
2674
  } elsif (defined $newData and $deleteAll) {
@@ -2722,7 +2722,7 @@ This file contains routines to write EXIF metadata.
2722
2722
 
2723
2723
  =head1 AUTHOR
2724
2724
 
2725
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2725
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2726
2726
 
2727
2727
  This library is free software; you can redistribute it and/or modify it
2728
2728
  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-2023, Phil Harvey (philharvey66 at gmail.com)
714
+ Copyright 2003-2024, 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.
@@ -290,7 +290,7 @@ sub WritePDF($$)
290
290
  $raf->Seek($pos, 0);
291
291
 
292
292
  # create a new ExifTool object and use it to read PDF and XMP information
293
- my $newTool = new Image::ExifTool;
293
+ my $newTool = Image::ExifTool->new;
294
294
  $newTool->Options(List => 1);
295
295
  $newTool->Options(Password => $et->Options('Password'));
296
296
  $newTool->Options(NoPDFList => $et->Options('NoPDFList'));
@@ -753,7 +753,7 @@ C<PDF-update> pseudo group).
753
753
 
754
754
  =head1 AUTHOR
755
755
 
756
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
756
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
757
757
 
758
758
  This library is free software; you can redistribute it and/or modify it
759
759
  under the same terms as Perl itself.
@@ -401,7 +401,7 @@ strings).
401
401
 
402
402
  =head1 AUTHOR
403
403
 
404
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
404
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
260
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
690
+ Copyright 2003-2024, 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.
@@ -169,8 +169,11 @@ sub ConvInvISO6709($)
169
169
  # with more than 5 digits after the decimal place:
170
170
  # https://exiftool.org/forum/index.php?topic=11055.msg67171#msg67171 )
171
171
  my @fmt = ('%s%02d.%s%s','%s%03d.%s%s','%s%d.%s%s');
172
+ my @limit = (90,180);
172
173
  foreach (@a) {
173
174
  return undef unless Image::ExifTool::IsFloat($_);
175
+ my $lim = shift @limit;
176
+ warn((@limit ? 'Lat' : 'Long') . "itude out of range\n") if $lim and abs($_) > $lim;
174
177
  $_ =~ s/^([-+]?)(\d+)\.?(\d*)/sprintf(shift(@fmt),$1||'+',$2,$3,length($3)<3 ? '0'x(3-length($3)) : '')/e;
175
178
  }
176
179
  return join '', @a, '/';
@@ -782,7 +785,7 @@ sub WriteQuickTime($$$)
782
785
  my ($rtnVal, $rtnErr) = $dataPt ? (undef, undef) : (1, 0);
783
786
 
784
787
  if ($dataPt) {
785
- $raf = new File::RandomAccess($dataPt);
788
+ $raf = File::RandomAccess->new($dataPt);
786
789
  } else {
787
790
  return 0 unless $raf;
788
791
  }
@@ -1958,7 +1961,7 @@ QuickTime-based file formats like MOV and MP4.
1958
1961
 
1959
1962
  =head1 AUTHOR
1960
1963
 
1961
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1964
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1962
1965
 
1963
1966
  This library is free software; you can redistribute it and/or modify it
1964
1967
  under the same terms as Perl itself.
@@ -363,7 +363,7 @@ Currently writes only WebP files.
363
363
 
364
364
  =head1 AUTHOR
365
365
 
366
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
366
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
367
367
 
368
368
  This library is free software; you can redistribute it and/or modify it
369
369
  under the same terms as Perl itself.
@@ -137,13 +137,15 @@ sub ValidateProperty($$;$)
137
137
 
138
138
  #------------------------------------------------------------------------------
139
139
  # Check XMP date values for validity and format accordingly
140
- # Inputs: 1) EXIF-format date string
140
+ # Inputs: 1) EXIF-format date string (XMP-format also accepted)
141
141
  # Returns: XMP date/time string (or undef on error)
142
142
  sub FormatXMPDate($)
143
143
  {
144
144
  my $val = shift;
145
145
  my ($y, $m, $d, $t, $tz);
146
- if ($val =~ /(\d{4}):(\d{2}):(\d{2}) (\d{2}:\d{2}(?::\d{2}(?:\.\d*)?)?)(.*)/) {
146
+ if ($val =~ /(\d{4}):(\d{2}):(\d{2}) (\d{2}:\d{2}(?::\d{2}(?:\.\d*)?)?)(.*)/ or
147
+ $val =~ /(\d{4})-(\d{2})-(\d{2})T(\d{2}:\d{2}(?::\d{2}(?:\.\d*)?)?)(.*)/)
148
+ {
147
149
  ($y, $m, $d, $t, $tz) = ($1, $2, $3, $4, $5);
148
150
  $val = "$y-$m-${d}T$t";
149
151
  } elsif ($val =~ /^\s*\d{4}(:\d{2}){0,2}\s*$/) {
@@ -1081,6 +1083,8 @@ sub WriteXMP($$;$)
1081
1083
  # delete all structure (or pseudo-structure) elements
1082
1084
  require 'Image/ExifTool/XMPStruct.pl';
1083
1085
  ($deleted, $added, $existed) = DeleteStruct($et, \%capture, \$path, $nvHash, \$changed);
1086
+ # don't add if it didn't exist and not IsCreating and Avoid
1087
+ undef $added if not $existed and not $$nvHash{IsCreating} and $$tagInfo{Avoid};
1084
1088
  next unless $deleted or $added or $et->IsOverwriting($nvHash);
1085
1089
  next if $existed and $$nvHash{CreateOnly};
1086
1090
  } elsif ($cap) {
@@ -1260,8 +1264,8 @@ sub WriteXMP($$;$)
1260
1264
  # check to see if we want to create this tag
1261
1265
  # (create non-avoided tags in XMP data files by default)
1262
1266
  my $isCreating = ($$nvHash{IsCreating} or (($isStruct or
1263
- ($preferred and not $$tagInfo{Avoid} and
1264
- not defined $$nvHash{Shift})) and not $$nvHash{EditOnly}));
1267
+ ($preferred and not defined $$nvHash{Shift})) and
1268
+ not $$tagInfo{Avoid} and not $$nvHash{EditOnly}));
1265
1269
 
1266
1270
  # don't add new values unless...
1267
1271
  # ...tag existed before and was deleted, or we added it to a list
@@ -1635,7 +1639,7 @@ This file contains routines to write XMP metadata.
1635
1639
 
1636
1640
  =head1 AUTHOR
1637
1641
 
1638
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1642
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1639
1643
 
1640
1644
  This library is free software; you can redistribute it and/or modify it
1641
1645
  under the same terms as Perl itself.