exiftool-vendored.pl 12.50.0 → 12.55.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 (204) hide show
  1. package/bin/Changes +81 -3
  2. package/bin/MANIFEST +2 -0
  3. package/bin/META.json +1 -1
  4. package/bin/META.yml +1 -1
  5. package/bin/README +3 -3
  6. package/bin/exiftool +15 -12
  7. package/bin/fmt_files/kml_track.fmt +3 -3
  8. package/bin/lib/File/RandomAccess.pm +1 -1
  9. package/bin/lib/File/RandomAccess.pod +2 -2
  10. package/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. package/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  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 +197 -27
  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 +1 -1
  21. package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -4
  23. package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. package/bin/lib/Image/ExifTool/Canon.pm +14 -2
  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 +9 -9
  28. package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. package/bin/lib/Image/ExifTool/Casio.pm +4 -4
  30. package/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  32. package/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. package/bin/lib/Image/ExifTool/DNG.pm +1 -1
  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 +5 -16
  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 +7 -6
  44. package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  45. package/bin/lib/Image/ExifTool/Flash.pm +1 -1
  46. package/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  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 +21 -13
  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 +12 -6
  54. package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  55. package/bin/lib/Image/ExifTool/Geotag.pm +25 -8
  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 +1 -1
  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 +1 -1
  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 +1 -1
  68. package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. package/bin/lib/Image/ExifTool/JPEG.pm +2 -1
  70. package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  71. package/bin/lib/Image/ExifTool/JSON.pm +1 -1
  72. package/bin/lib/Image/ExifTool/JVC.pm +1 -1
  73. package/bin/lib/Image/ExifTool/Jpeg2000.pm +35 -8
  74. package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  75. package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  76. package/bin/lib/Image/ExifTool/LIF.pm +1 -1
  77. package/bin/lib/Image/ExifTool/LNK.pm +1 -1
  78. package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  79. package/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
  80. package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  81. package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  82. package/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  83. package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  84. package/bin/lib/Image/ExifTool/Lang/fr.pm +6016 -760
  85. package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  86. package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  87. package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  88. package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  89. package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  90. package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  91. package/bin/lib/Image/ExifTool/Lang/sk.pm +1806 -0
  92. package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  93. package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  94. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  95. package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  96. package/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  97. package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  98. package/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  99. package/bin/lib/Image/ExifTool/MIE.pm +1 -1
  100. package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  101. package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  102. package/bin/lib/Image/ExifTool/MISB.pm +1 -1
  103. package/bin/lib/Image/ExifTool/MNG.pm +1 -1
  104. package/bin/lib/Image/ExifTool/MOI.pm +1 -1
  105. package/bin/lib/Image/ExifTool/MPC.pm +1 -1
  106. package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  107. package/bin/lib/Image/ExifTool/MPF.pm +1 -1
  108. package/bin/lib/Image/ExifTool/MRC.pm +1 -1
  109. package/bin/lib/Image/ExifTool/MWG.pm +1 -1
  110. package/bin/lib/Image/ExifTool/MXF.pm +1 -1
  111. package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  112. package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  113. package/bin/lib/Image/ExifTool/Matroska.pm +262 -46
  114. package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  115. package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  116. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  117. package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  118. package/bin/lib/Image/ExifTool/Nikon.pm +687 -280
  119. package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  120. package/bin/lib/Image/ExifTool/NikonCustom.pm +140 -107
  121. package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  122. package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  123. package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  124. package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  125. package/bin/lib/Image/ExifTool/Olympus.pm +4 -3
  126. package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  127. package/bin/lib/Image/ExifTool/Opus.pm +1 -1
  128. package/bin/lib/Image/ExifTool/Other.pm +1 -1
  129. package/bin/lib/Image/ExifTool/PCX.pm +1 -1
  130. package/bin/lib/Image/ExifTool/PDF.pm +1 -1
  131. package/bin/lib/Image/ExifTool/PGF.pm +1 -1
  132. package/bin/lib/Image/ExifTool/PICT.pm +1 -1
  133. package/bin/lib/Image/ExifTool/PLIST.pm +12 -7
  134. package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  135. package/bin/lib/Image/ExifTool/PNG.pm +9 -2
  136. package/bin/lib/Image/ExifTool/PPM.pm +1 -1
  137. package/bin/lib/Image/ExifTool/PSP.pm +1 -1
  138. package/bin/lib/Image/ExifTool/Palm.pm +1 -1
  139. package/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  140. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  141. package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  142. package/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  143. package/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  144. package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  145. package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  146. package/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  147. package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  148. package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  149. package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  150. package/bin/lib/Image/ExifTool/QuickTime.pm +26 -7
  151. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +166 -39
  152. package/bin/lib/Image/ExifTool/README +5 -1
  153. package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  154. package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  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 +1 -1
  162. package/bin/lib/Image/ExifTool/Samsung.pm +3 -1
  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 +1 -1
  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 +1 -1
  169. package/bin/lib/Image/ExifTool/Sony.pm +7 -7
  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 +13 -8
  173. package/bin/lib/Image/ExifTool/TagLookup.pm +4608 -4512
  174. package/bin/lib/Image/ExifTool/TagNames.pod +323 -43
  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/WTV.pm +1 -1
  183. package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  184. package/bin/lib/Image/ExifTool/WriteExif.pl +14 -1
  185. package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  186. package/bin/lib/Image/ExifTool/WritePDF.pl +5 -1
  187. package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  188. package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  189. package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  190. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +30 -14
  191. package/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  192. package/bin/lib/Image/ExifTool/WriteXMP.pl +16 -2
  193. package/bin/lib/Image/ExifTool/Writer.pl +35 -15
  194. package/bin/lib/Image/ExifTool/XMP.pm +23 -3
  195. package/bin/lib/Image/ExifTool/XMP2.pl +20 -1
  196. package/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  197. package/bin/lib/Image/ExifTool/ZIP.pm +20 -8
  198. package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  199. package/bin/lib/Image/ExifTool/iWork.pm +1 -1
  200. package/bin/lib/Image/ExifTool.pm +38 -16
  201. package/bin/lib/Image/ExifTool.pod +39 -38
  202. package/bin/perl-Image-ExifTool.spec +1 -1
  203. package/bin/pp_build_exe.args +6 -5
  204. package/package.json +4 -4
@@ -541,7 +541,7 @@ write GIF meta information.
541
541
 
542
542
  =head1 AUTHOR
543
543
 
544
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
544
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
545
545
 
546
546
  This library is free software; you can redistribute it and/or modify it
547
547
  under the same terms as Perl itself.
@@ -270,7 +270,7 @@ GIMP software.
270
270
 
271
271
  =head1 AUTHOR
272
272
 
273
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
273
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
274
274
 
275
275
  This library is free software; you can redistribute it and/or modify it
276
276
  under the same terms as Perl itself.
@@ -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.70';
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
@@ -206,7 +210,7 @@ sub LoadTrackLog($$;$)
206
210
  my $fix = { };
207
211
  my $csvDelim = $et->Options('CSVDelim');
208
212
  $csvDelim = ',' unless defined $csvDelim;
209
- my (@saveFix, $timeSpan);
213
+ my (@saveFix, @saveTime, $timeSpan);
210
214
  for (;;) {
211
215
  $raf->ReadLine($_) or last;
212
216
  # determine file format
@@ -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");
@@ -351,8 +357,13 @@ sub LoadTrackLog($$;$)
351
357
  }
352
358
  # read KML "Point" coordinates
353
359
  @$fix{'lon','lat','alt'} = split ',', $1;
360
+ $$has{alt} = 1 if $$fix{alt};
354
361
  } else {
355
- $$fix{$tag} = $1;
362
+ if ($tok eq 'when' and $$fix{'time'}) {
363
+ push @saveTime, $1; # flightaware KML stores times in array
364
+ } else {
365
+ $$fix{$tag} = $1;
366
+ }
356
367
  if ($isOrient{$tag}) {
357
368
  $$has{orient} = 1;
358
369
  } elsif ($tag eq 'alt') {
@@ -369,7 +380,11 @@ sub LoadTrackLog($$;$)
369
380
  $td = 1;
370
381
  }
371
382
  # validate and store GPS fix
372
- next unless defined $$fix{lat} and defined $$fix{lon} and $$fix{'time'};
383
+ next unless defined $$fix{lat} and defined $$fix{lon};
384
+ unless (defined $$fix{'time'}) {
385
+ next unless @saveTime;
386
+ $$fix{'time'} = shift @saveTime; # get next time in flightaware KML list
387
+ }
373
388
  unless ($$fix{lat} =~ /^[+-]?\d+\.?\d*/ and $$fix{lon} =~ /^[+-]?\d+\.?\d*/) {
374
389
  $e0 or $et->VPrint(0, "Coordinate format error in $from\n"), $e0 = 1;
375
390
  next;
@@ -496,6 +511,7 @@ DoneFix: $isDate = 1;
496
511
  $secs = $val;
497
512
  } else {
498
513
  $$fix{$param} = $val;
514
+ $$has{$param} = 1 if $sepTags{$param};
499
515
  }
500
516
  }
501
517
  # make coordinate negative according to reference direction if necessary
@@ -1101,6 +1117,7 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
1101
1117
  next unless defined $v0 and defined $v1;
1102
1118
  $f = $f0b;
1103
1119
  } else {
1120
+ next if $sepTags{$key}; # (don't scan outwards for some formats, eg. CSV)
1104
1121
  # scan outwards looking for fixes with the required information
1105
1122
  # (NOTE: SHOULD EVENTUALLY DO THIS FOR EXTRAPOLATION TOO!)
1106
1123
  my ($t0b, $t1b);
@@ -1127,8 +1144,8 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
1127
1144
  # 360 degrees to the smaller angle before interpolating
1128
1145
  $v0 < $v1 ? $v0 += 360 : $v1 += 360;
1129
1146
  $$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;
1147
+ # some ranges are -180 to 180, others are 0 to 360
1148
+ my $max = $cyc180{$key} ? 180 : 360;
1132
1149
  $$fix{$key} -= 360 if $$fix{$key} >= $max;
1133
1150
  } else {
1134
1151
  # simple linear interpolation
@@ -1444,7 +1461,7 @@ user-defined tag GPSRoll, must be active.
1444
1461
 
1445
1462
  =head1 AUTHOR
1446
1463
 
1447
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1464
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1448
1465
 
1449
1466
  This library is free software; you can redistribute it and/or modify it
1450
1467
  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.