exiftool_vendored 12.50.0 → 12.54.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +69 -3
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +3 -3
  7. data/bin/exiftool +12 -9
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  13. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  14. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  15. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  16. data/bin/lib/Image/ExifTool/Apple.pm +197 -27
  17. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  18. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  19. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +3 -3
  23. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. data/bin/lib/Image/ExifTool/Canon.pm +14 -2
  25. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  26. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonVRD.pm +9 -9
  28. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. data/bin/lib/Image/ExifTool/Casio.pm +4 -4
  30. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  34. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  38. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  39. data/bin/lib/Image/ExifTool/Exif.pm +5 -16
  40. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  41. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  42. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLIR.pm +7 -6
  44. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  45. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  46. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  47. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  48. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FujiFilm.pm +20 -13
  50. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  51. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GPS.pm +12 -6
  54. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  55. data/bin/lib/Image/ExifTool/Geotag.pm +13 -5
  56. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  57. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  58. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  59. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  61. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  62. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  63. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  64. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  68. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. data/bin/lib/Image/ExifTool/JPEG.pm +2 -1
  70. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  72. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Jpeg2000.pm +35 -8
  74. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  75. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  76. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  77. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
  80. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/fr.pm +6016 -760
  85. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/sk.pm +1806 -0
  92. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  98. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  99. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  100. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  101. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  102. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  103. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  113. data/bin/lib/Image/ExifTool/Matroska.pm +262 -46
  114. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  115. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  117. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  118. data/bin/lib/Image/ExifTool/Nikon.pm +658 -276
  119. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  120. data/bin/lib/Image/ExifTool/NikonCustom.pm +140 -107
  121. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  122. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  123. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  124. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  125. data/bin/lib/Image/ExifTool/Olympus.pm +4 -3
  126. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  127. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  128. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  129. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  130. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  131. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  133. data/bin/lib/Image/ExifTool/PLIST.pm +12 -7
  134. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PNG.pm +9 -2
  136. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  138. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  139. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  141. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  142. data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  144. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  145. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  146. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  147. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  148. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  149. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  150. data/bin/lib/Image/ExifTool/QuickTime.pm +8 -4
  151. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +63 -15
  152. data/bin/lib/Image/ExifTool/README +2 -1
  153. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  154. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  155. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Samsung.pm +3 -1
  163. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  166. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  168. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Sony.pm +7 -7
  170. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  172. data/bin/lib/Image/ExifTool/TagInfoXML.pm +13 -8
  173. data/bin/lib/Image/ExifTool/TagLookup.pm +4599 -4505
  174. data/bin/lib/Image/ExifTool/TagNames.pod +313 -39
  175. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  177. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  178. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  179. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  180. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  181. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  182. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  183. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  184. data/bin/lib/Image/ExifTool/WriteExif.pl +14 -1
  185. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  186. data/bin/lib/Image/ExifTool/WritePDF.pl +5 -1
  187. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  188. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  189. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  190. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +30 -14
  191. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  192. data/bin/lib/Image/ExifTool/WriteXMP.pl +16 -2
  193. data/bin/lib/Image/ExifTool/Writer.pl +35 -15
  194. data/bin/lib/Image/ExifTool/XMP.pm +23 -3
  195. data/bin/lib/Image/ExifTool/XMP2.pl +20 -1
  196. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  197. data/bin/lib/Image/ExifTool/ZIP.pm +20 -8
  198. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  199. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  200. data/bin/lib/Image/ExifTool.pm +38 -16
  201. data/bin/lib/Image/ExifTool.pod +39 -38
  202. data/bin/perl-Image-ExifTool.spec +1 -1
  203. data/lib/exiftool_vendored/version.rb +1 -1
  204. metadata +3 -2
@@ -12,7 +12,7 @@ use strict;
12
12
  use vars qw($VERSION);
13
13
  use Image::ExifTool::Exif;
14
14
 
15
- $VERSION = '1.54';
15
+ $VERSION = '1.55';
16
16
 
17
17
  my %coordConv = (
18
18
  ValueConv => 'Image::ExifTool::GPS::ToDegrees($val)',
@@ -407,12 +407,18 @@ my %coordConv = (
407
407
  # Require either GPS:GPSAltitudeRef or XMP:GPSAltitudeRef
408
408
  RawConv => '(defined $val[1] or defined $val[3]) ? $val : undef',
409
409
  ValueConv => q{
410
- my $alt = $val[0];
411
- $alt = $val[2] unless defined $alt;
412
- return undef unless defined $alt and IsFloat($alt);
413
- return(($val[1] || $val[3]) ? -$alt : $alt);
410
+ foreach (0,2) {
411
+ next unless defined $val[$_] and IsFloat($val[$_]) and defined $val[$_+1];
412
+ return $val[$_+1] ? -abs($val[$_]) : $val[$_];
413
+ }
414
+ return undef;
414
415
  },
415
416
  PrintConv => q{
417
+ foreach (0,2) {
418
+ next unless defined $val[$_] and IsFloat($val[$_]);
419
+ next unless defined $prt[$_+1] and $prt[$_+1] =~ /Sea/;
420
+ return((int($val[$_]*10)/10) . ' m ' . $prt[$_+1]);
421
+ }
416
422
  $val = int($val * 10) / 10;
417
423
  return(($val =~ s/^-// ? "$val m Below" : "$val m Above") . " Sea Level");
418
424
  },
@@ -599,7 +605,7 @@ GPS (Global Positioning System) meta information in EXIF data.
599
605
 
600
606
  =head1 AUTHOR
601
607
 
602
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
608
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
603
609
 
604
610
  This library is free software; you can redistribute it and/or modify it
605
611
  under the same terms as Perl itself.
@@ -2242,7 +2242,7 @@ coordinates.
2242
2242
 
2243
2243
  =head1 AUTHOR
2244
2244
 
2245
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2245
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2246
2246
 
2247
2247
  This library is free software; you can redistribute it and/or modify it
2248
2248
  under the same terms as Perl itself.
@@ -29,7 +29,7 @@ use vars qw($VERSION);
29
29
  use Image::ExifTool qw(:Public);
30
30
  use Image::ExifTool::GPS;
31
31
 
32
- $VERSION = '1.68';
32
+ $VERSION = '1.69';
33
33
 
34
34
  sub JITTER() { return 2 } # maximum time jitter
35
35
 
@@ -75,7 +75,8 @@ my %xmlTag = (
75
75
  );
76
76
 
77
77
  # fix information keys which must be interpolated around a circle
78
- my %cyclical = (lon => 1, track => 1, dir => 1, roll => 1);
78
+ my %cyclical = (lon => 1, track => 1, dir => 1, pitch => 1, roll => 1);
79
+ my %cyc180 = (lon => 1, pitch => 1, roll => 1); # wraps from 180 to -180
79
80
 
80
81
  # fix information keys for each of our general categories
81
82
  my %fixInfoKeys = (
@@ -88,6 +89,9 @@ my %fixInfoKeys = (
88
89
 
89
90
  my %isOrient = ( dir => 1, pitch => 1, roll => 1 ); # test for orientation key
90
91
 
92
+ # tags which may exist separately in some formats (eg. CSV)
93
+ my %sepTags = ( dir => 1, pitch => 1, roll => 1, track => 1, speed => 1 );
94
+
91
95
  # conversion factors for GPSSpeed
92
96
  my %speedConv = (
93
97
  'K' => 1.852, # km/h per knot
@@ -276,6 +280,8 @@ sub LoadTrackLog($$;$)
276
280
  $param = 'pitch';
277
281
  } elsif (/^(Angle)?Roll/i) {
278
282
  $param = 'roll';
283
+ } elsif (/^Img ?Dir/i) {
284
+ $param = 'dir';
279
285
  }
280
286
  if ($param) {
281
287
  $et->VPrint(2, "CSV column '${_}' is $param\n");
@@ -496,6 +502,7 @@ DoneFix: $isDate = 1;
496
502
  $secs = $val;
497
503
  } else {
498
504
  $$fix{$param} = $val;
505
+ $$has{$param} = 1 if $sepTags{$param};
499
506
  }
500
507
  }
501
508
  # make coordinate negative according to reference direction if necessary
@@ -1101,6 +1108,7 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
1101
1108
  next unless defined $v0 and defined $v1;
1102
1109
  $f = $f0b;
1103
1110
  } else {
1111
+ next if $sepTags{$key}; # (don't scan outwards for some formats, eg. CSV)
1104
1112
  # scan outwards looking for fixes with the required information
1105
1113
  # (NOTE: SHOULD EVENTUALLY DO THIS FOR EXTRAPOLATION TOO!)
1106
1114
  my ($t0b, $t1b);
@@ -1127,8 +1135,8 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
1127
1135
  # 360 degrees to the smaller angle before interpolating
1128
1136
  $v0 < $v1 ? $v0 += 360 : $v1 += 360;
1129
1137
  $$fix{$key} = $v1 * $f + $v0 * (1 - $f);
1130
- # longitude and roll ranges are -180 to 180, others are 0 to 360
1131
- my $max = ($key eq 'lon' or $key eq 'roll') ? 180 : 360;
1138
+ # some ranges are -180 to 180, others are 0 to 360
1139
+ my $max = $cyc180{$key} ? 180 : 360;
1132
1140
  $$fix{$key} -= 360 if $$fix{$key} >= $max;
1133
1141
  } else {
1134
1142
  # simple linear interpolation
@@ -1444,7 +1452,7 @@ user-defined tag GPSRoll, must be active.
1444
1452
 
1445
1453
  =head1 AUTHOR
1446
1454
 
1447
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1455
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1448
1456
 
1449
1457
  This library is free software; you can redistribute it and/or modify it
1450
1458
  under the same terms as Perl itself.
@@ -733,7 +733,7 @@ metadata from GoPro MP4 videos.
733
733
 
734
734
  =head1 AUTHOR
735
735
 
736
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
736
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
737
737
 
738
738
  This library is free software; you can redistribute it and/or modify it
739
739
  under the same terms as Perl itself.
@@ -1123,7 +1123,7 @@ information from H.264 video streams.
1123
1123
 
1124
1124
  =head1 AUTHOR
1125
1125
 
1126
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1126
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1127
1127
 
1128
1128
  This library is free software; you can redistribute it and/or modify it
1129
1129
  under the same terms as Perl itself.
@@ -250,7 +250,7 @@ Hewlett-Packard maker notes.
250
250
 
251
251
  =head1 AUTHOR
252
252
 
253
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
253
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
254
254
 
255
255
  This library is free software; you can redistribute it and/or modify it
256
256
  under the same terms as Perl itself.
@@ -555,7 +555,7 @@ meta information from HTML documents.
555
555
 
556
556
  =head1 AUTHOR
557
557
 
558
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
558
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
559
559
 
560
560
  This library is free software; you can redistribute it and/or modify it
561
561
  under the same terms as Perl itself.
@@ -917,7 +917,7 @@ page.
917
917
 
918
918
  =head1 AUTHOR
919
919
 
920
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
920
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
921
921
 
922
922
  This library is free software; you can redistribute it and/or modify it
923
923
  under the same terms as Perl itself.
@@ -1357,7 +1357,7 @@ data created on one device into another device's native color space.
1357
1357
 
1358
1358
  =head1 AUTHOR
1359
1359
 
1360
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1360
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1361
1361
 
1362
1362
  This library is free software; you can redistribute it and/or modify it
1363
1363
  under the same terms as Perl itself.
@@ -121,7 +121,7 @@ information from Windows ICO (icon) and CUR (cursor) files.
121
121
 
122
122
  =head1 AUTHOR
123
123
 
124
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
124
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
125
125
 
126
126
  This library is free software; you can redistribute it and/or modify it
127
127
  under the same terms as Perl itself.
@@ -1652,7 +1652,7 @@ other types of audio files.
1652
1652
 
1653
1653
  =head1 AUTHOR
1654
1654
 
1655
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1655
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1656
1656
 
1657
1657
  This library is free software; you can redistribute it and/or modify it
1658
1658
  under the same terms as Perl itself.
@@ -1284,7 +1284,7 @@ image files.
1284
1284
 
1285
1285
  =head1 AUTHOR
1286
1286
 
1287
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1287
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1288
1288
 
1289
1289
  This library is free software; you can redistribute it and/or modify it
1290
1290
  under the same terms as Perl itself.
@@ -184,7 +184,7 @@ information from ISO 9660 disk images.
184
184
 
185
185
  =head1 AUTHOR
186
186
 
187
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
187
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
188
188
 
189
189
  This library is free software; you can redistribute it and/or modify it
190
190
  under the same terms as Perl itself.
@@ -191,7 +191,7 @@ information (including artwork images) from iTunes Cover Flow files.
191
191
 
192
192
  =head1 AUTHOR
193
193
 
194
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
194
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
195
195
 
196
196
  This library is free software; you can redistribute it and/or modify it
197
197
  under the same terms as Perl itself.
@@ -348,7 +348,7 @@ stored as hash lookups of tag name/value for each SourceFile.
348
348
 
349
349
  =head1 AUTHOR
350
350
 
351
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
351
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
352
352
 
353
353
  This library is free software; you can redistribute it and/or modify it
354
354
  under the same terms as Perl itself.
@@ -258,7 +258,7 @@ them and the LargeFileSupport option is enabled.
258
258
 
259
259
  =head1 AUTHOR
260
260
 
261
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
261
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
262
262
 
263
263
  This library is free software; you can redistribute it and/or modify it
264
264
  under the same terms as Perl itself.
@@ -205,6 +205,7 @@ sub ProcessJPEG_HDR($$$);
205
205
  Name => 'JUMBF',
206
206
  Condition => '$$valPt =~ /^JP/',
207
207
  SubDirectory => { TagTable => 'Image::ExifTool::Jpeg2000::Main' },
208
+ # Note: The recommended options for reading C2PA JUMBF metadata are "-G3 -b -j -u"
208
209
  }],
209
210
  APP12 => [{
210
211
  Name => 'PictureInfo',
@@ -718,7 +719,7 @@ segments are included in the Image::ExifTool module itself.
718
719
 
719
720
  =head1 AUTHOR
720
721
 
721
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
722
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
722
723
 
723
724
  This library is free software; you can redistribute it and/or modify it
724
725
  under the same terms as Perl itself.
@@ -2590,7 +2590,7 @@ estimated JPEG quality if requested.
2590
2590
 
2591
2591
  =head1 AUTHOR
2592
2592
 
2593
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2593
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2594
2594
 
2595
2595
  This library is free software; you can redistribute it and/or modify it
2596
2596
  under the same terms as Perl itself.
@@ -176,7 +176,7 @@ information from JSON files.
176
176
 
177
177
  =head1 AUTHOR
178
178
 
179
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
179
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
180
180
 
181
181
  This library is free software; you can redistribute it and/or modify it
182
182
  under the same terms as Perl itself.
@@ -117,7 +117,7 @@ notes.
117
117
 
118
118
  =head1 AUTHOR
119
119
 
120
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
120
+ Copyright 2003-2023, 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.32';
19
+ $VERSION = '1.33';
20
20
 
21
21
  sub ProcessJpeg2000Box($$$);
22
22
  sub ProcessJUMD($$$);
@@ -418,6 +418,12 @@ my %j2cMarker = (
418
418
  Binary => 1,
419
419
  JUMBF_Suffix => 'Data', # (used when tag is renamed according to JUMDLabel)
420
420
  },
421
+ c2sh => { # used in JUMBF
422
+ Name => 'C2PASaltHash',
423
+ Format => 'undef',
424
+ ValueConv => 'unpack("H*",$val)',
425
+ JUMBF_Suffix => 'Salt', # (used when tag is renamed according to JUMDLabel)
426
+ },
421
427
  #
422
428
  # stuff seen in JPEG XL images:
423
429
  #
@@ -438,7 +444,7 @@ my %j2cMarker = (
438
444
  ProcessProc => \&Image::ExifTool::ProcessTIFF,
439
445
  WriteProc => \&Image::ExifTool::WriteTIFF,
440
446
  DirName => 'EXIF',
441
- Start => '$valuePtr + 4',
447
+ Start => '$valuePtr + 4 + (length($$dataPt)-$valuePtr > 4 ? unpack("N", $$dataPt) : 0)',
442
448
  },
443
449
  },
444
450
  );
@@ -770,7 +776,22 @@ sub ProcessJUMD($$$)
770
776
  $et->HandleTag($tagTablePtr, 'sig', substr($$dataPt, $pos, 32));
771
777
  $pos += 32;
772
778
  }
773
- $pos == $end or $et->Warn('Extra data in JUMD box'." $pos $end", 1);
779
+ my $more = $end - $pos;
780
+ if ($more) {
781
+ # (may find c2sh box hiding after JUMD record)
782
+ if ($more >= 8) {
783
+ my %dirInfo = (
784
+ DataPt => $dataPt,
785
+ DataLen => $$dirInfo{DataLen},
786
+ DirStart => $pos,
787
+ DirLen => $more,
788
+ DirName => 'JUMDPrivate',
789
+ );
790
+ $et->ProcessDirectory(\%dirInfo, GetTagTable('Image::ExifTool::Jpeg2000::Main'));
791
+ } else {
792
+ $et->Warn("Extra data in JUMD box $more bytes)", 1);
793
+ }
794
+ }
774
795
  return 1;
775
796
  }
776
797
 
@@ -902,7 +923,7 @@ sub ProcessJpeg2000Box($$$)
902
923
  my ($et, $dirInfo, $tagTablePtr) = @_;
903
924
  my $dataPt = $$dirInfo{DataPt};
904
925
  my $dataLen = $$dirInfo{DataLen};
905
- my $dataPos = $$dirInfo{DataPos};
926
+ my $dataPos = $$dirInfo{DataPos} || 0;
906
927
  my $dirLen = $$dirInfo{DirLen} || 0;
907
928
  my $dirStart = $$dirInfo{DirStart} || 0;
908
929
  my $base = $$dirInfo{Base} || 0;
@@ -1075,11 +1096,16 @@ sub ProcessJpeg2000Box($$$)
1075
1096
  if ($$tagInfo{SubDirectory}) {
1076
1097
  my $subdir = $$tagInfo{SubDirectory};
1077
1098
  my $subdirStart = $valuePtr;
1099
+ my $subdirLen = $boxLen;
1078
1100
  if (defined $$subdir{Start}) {
1079
- #### eval Start ($valuePtr)
1101
+ #### eval Start ($valuePtr, $dataPt)
1080
1102
  $subdirStart = eval($$subdir{Start});
1103
+ $subdirLen -= $subdirStart - $valuePtr;
1104
+ if ($subdirLen < 0) {
1105
+ $subdirStart = $valuePtr;
1106
+ $subdirLen = 0;
1107
+ }
1081
1108
  }
1082
- my $subdirLen = $boxLen - ($subdirStart - $valuePtr);
1083
1109
  my %subdirInfo = (
1084
1110
  Parent => 'JP2',
1085
1111
  DataPt => $dataPt,
@@ -1097,7 +1123,8 @@ sub ProcessJpeg2000Box($$$)
1097
1123
  my $subTable = GetTagTable($$subdir{TagTable}) || $tagTablePtr;
1098
1124
  if ($outfile) {
1099
1125
  # remove this directory from our create list
1100
- delete $$et{AddJp2Dirs}{$$tagInfo{Name}};
1126
+ delete $$et{AddJp2Dirs}{$$tagInfo{Name}}; # (eg. 'EXIF')
1127
+ delete $$et{AddJp2Dirs}{$boxID}; # (eg. 'Exif')
1101
1128
  my $newdir;
1102
1129
  # only edit writable UUID, Exif and jp2h boxes
1103
1130
  if ($uuid or $boxID eq 'Exif' or ($boxID eq 'xml ' and $$et{IsJXL}) or
@@ -1355,7 +1382,7 @@ files.
1355
1382
 
1356
1383
  =head1 AUTHOR
1357
1384
 
1358
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1385
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1359
1386
 
1360
1387
  This library is free software; you can redistribute it and/or modify it
1361
1388
  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-2022, Phil Harvey (philharvey66 at gmail.com)
3255
+ Copyright 2003-2023, 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-2022, Phil Harvey (philharvey66 at gmail.com)
155
+ Copyright 2003-2023, 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.
@@ -139,7 +139,7 @@ metadata from Leica Image File (LIF) images.
139
139
 
140
140
  =head1 AUTHOR
141
141
 
142
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
142
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
143
143
 
144
144
  This library is free software; you can redistribute it and/or modify it
145
145
  under the same terms as Perl itself.
@@ -702,7 +702,7 @@ information MS Shell Link (Windows shortcut) files.
702
702
 
703
703
  =head1 AUTHOR
704
704
 
705
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
705
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
706
706
 
707
707
  This library is free software; you can redistribute it and/or modify it
708
708
  under the same terms as Perl itself.
@@ -1570,7 +1570,7 @@ and values.
1570
1570
 
1571
1571
  =head1 AUTHOR
1572
1572
 
1573
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1573
+ Copyright 2003-2023, 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.
@@ -4149,7 +4149,7 @@ $VERSION = '1.36';
4149
4149
  'Auto' => 'Automatisch',
4150
4150
  'Continuous' => 'Serienaufnahme',
4151
4151
  'Custom' => 'Benutzerdefiniert',
4152
- 'Face detect' => 'Gesichtserkennung AF',
4152
+ 'Face Detect' => 'Gesichtserkennung AF',
4153
4153
  'Infinity' => 'Unendlich',
4154
4154
  'Macro' => 'Makro',
4155
4155
  'Macro (1)' => 'Makro (1)',
@@ -8702,7 +8702,7 @@ and values.
8702
8702
 
8703
8703
  =head1 AUTHOR
8704
8704
 
8705
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
8705
+ Copyright 2003-2023, 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-2022, Phil Harvey (philharvey66 at gmail.com)
992
+ Copyright 2003-2023, 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-2022, Phil Harvey (philharvey66 at gmail.com)
1035
+ Copyright 2003-2023, 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.
@@ -4005,7 +4005,7 @@ and values.
4005
4005
 
4006
4006
  =head1 AUTHOR
4007
4007
 
4008
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
4008
+ Copyright 2003-2023, 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-2022, Phil Harvey (philharvey66 at gmail.com)
2881
+ Copyright 2003-2023, 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.