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
@@ -22,7 +22,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
22
22
  use Image::ExifTool::Exif;
23
23
  use Image::ExifTool::ASF; # for GetGUID()
24
24
 
25
- $VERSION = '1.46';
25
+ $VERSION = '1.48';
26
26
 
27
27
  sub ProcessFPX($$);
28
28
  sub ProcessFPXR($$$);
@@ -511,6 +511,31 @@ my %fpxFileType = (
511
511
  corresponding EmbeddedImage from the Contents of a VNT file
512
512
  },
513
513
  },
514
+ _eeJPG => {
515
+ Name => 'EmbeddedImage',
516
+ Notes => q{
517
+ Not a real tag. Extracted from stream content when the ExtractEmbedded
518
+ option is used
519
+ },
520
+ Groups => { 2 => 'Preview' },
521
+ Binary => 1,
522
+ },
523
+ _eePNG => {
524
+ Name => 'EmbeddedPNG',
525
+ Notes => q{
526
+ Not a real tag. Extracted from stream content when the ExtractEmbedded
527
+ option is used
528
+ },
529
+ Groups => { 2 => 'Preview' },
530
+ Binary => 1,
531
+ },
532
+ _eeLink => {
533
+ Name => 'LinkedFileName',
534
+ Notes => q{
535
+ Not a real tag. Extracted from stream content when the ExtractEmbedded
536
+ option is used
537
+ },
538
+ },
514
539
  );
515
540
 
516
541
  # Summary Information properties
@@ -2180,6 +2205,9 @@ sub ProcessFPX($$)
2180
2205
  my ($buff, $out, $oldIndent, $miniStreamBuff);
2181
2206
  my ($tag, %hier, %objIndex, %loadedDifSect);
2182
2207
 
2208
+ # handle FPX format in memory from PNG cpIp chunk
2209
+ $raf or $raf = File::RandomAccess->new($$dirInfo{DataPt});
2210
+
2183
2211
  # read header
2184
2212
  return 0 unless $raf->Read($buff,HDR_SIZE) == HDR_SIZE;
2185
2213
  # check signature
@@ -2291,6 +2319,8 @@ sub ProcessFPX($$)
2291
2319
  my $miniStream;
2292
2320
  $endPos = length($dir);
2293
2321
  my $index = 0;
2322
+ my $ee; # name of next tag to extract if unknown
2323
+ $ee = 0 if $et->Options('ExtractEmbedded');
2294
2324
 
2295
2325
  for ($pos=0; $pos<=$endPos-128; $pos+=128, ++$index) {
2296
2326
 
@@ -2310,6 +2340,9 @@ sub ProcessFPX($$)
2310
2340
  $tag = Image::ExifTool::Decode(undef, substr($dir,$pos,$len*2), 'UCS2', 'II', 'Latin');
2311
2341
  $tag =~ s/\0.*//s; # truncate at null (in case length was wrong)
2312
2342
 
2343
+ if ($tag eq '0' and not defined $ee) {
2344
+ $et->WarnOnce('Use the ExtractEmbedded option to extract embedded information', 3);
2345
+ }
2313
2346
  my $sect = Get32u(\$dir, $pos + 0x74); # start sector number
2314
2347
  my $size = Get32u(\$dir, $pos + 0x78); # stream length
2315
2348
 
@@ -2320,12 +2353,15 @@ sub ProcessFPX($$)
2320
2353
  $et->Warn('Error loading Mini-FAT stream');
2321
2354
  last;
2322
2355
  }
2323
- $miniStream = new File::RandomAccess(\$miniStreamBuff);
2356
+ $miniStream = File::RandomAccess->new(\$miniStreamBuff);
2324
2357
  }
2325
2358
 
2326
2359
  my $tagInfo;
2327
2360
  if ($$tagTablePtr{$tag}) {
2328
2361
  $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
2362
+ } elsif (defined $ee and $tag eq $ee) {
2363
+ $tagInfo = ''; # won't know the actual tagID untile we read the stream
2364
+ $ee = sprintf('%x', hex($ee)+1); # tag to look for next
2329
2365
  } else {
2330
2366
  # remove instance number or class ID from tag if necessary
2331
2367
  $tagInfo = $et->GetTagInfo($tagTablePtr, $1) if
@@ -2349,7 +2385,7 @@ sub ProcessFPX($$)
2349
2385
  $$sub{Parent} = $index;
2350
2386
  }
2351
2387
 
2352
- next unless $tagInfo or $verbose;
2388
+ next unless defined $tagInfo or $verbose;
2353
2389
 
2354
2390
  # load the data for stream types
2355
2391
  my $extra = '';
@@ -2383,18 +2419,22 @@ sub ProcessFPX($$)
2383
2419
  $extra .= " Left=$lSib" unless $lSib == FREE_SECT;
2384
2420
  $extra .= " Right=$rSib" unless $rSib == FREE_SECT;
2385
2421
  $extra .= " Child=$chld" unless $chld == FREE_SECT;
2422
+ $extra .= " Size=$size" if defined $size;
2423
+ my $name;
2424
+ $name = "Unknown_0x$tag" if not $tagInfo and $tag =~ /^[0-9a-f]{1,3}$/;
2386
2425
  $et->VerboseInfo($tag, $tagInfo,
2387
2426
  Index => $index,
2388
2427
  Value => $buff,
2389
2428
  DataPt => \$buff,
2390
2429
  Extra => $extra,
2391
- Size => $size,
2430
+ # Size => $size, (moved to $extra so we can see the rest of the stream if larger)
2431
+ Name => $name,
2392
2432
  );
2393
2433
  }
2394
- if ($tagInfo and $buff) {
2434
+ if (defined $tagInfo and $buff) {
2395
2435
  my $num = $$et{NUM_FOUND};
2396
- my $subdir = $$tagInfo{SubDirectory};
2397
- if ($subdir) {
2436
+ if ($tagInfo and $$tagInfo{SubDirectory}) {
2437
+ my $subdir = $$tagInfo{SubDirectory};
2398
2438
  my %dirInfo = (
2399
2439
  DataPt => \$buff,
2400
2440
  DirStart => $$subdir{DirStart},
@@ -2422,6 +2462,19 @@ sub ProcessFPX($$)
2422
2462
  }
2423
2463
  }
2424
2464
  delete $$et{DOC_NUM};
2465
+ } elsif (not $tagInfo) {
2466
+ # extract some embedded information from PNG Plus images
2467
+ if ($buff =~ /^(.{19,40})(\xff\xd8\xff\xe0|\x89PNG\r\n\x1a\n)/sg) {
2468
+ my $id = $2 eq "\xff\xd8\xff\xe0" ? '_eeJPG' : '_eePNG';
2469
+ $et->HandleTag($tagTablePtr, $id, substr($buff, length($1)));
2470
+ } elsif ($buff =~ /^\0\x80\0\0\x01\0\0\0\x0e\0/ and length($buff) > 18) {
2471
+ my $len = unpack('x17C', $buff);
2472
+ next if $len + 18 > length($buff);
2473
+ my $filename = $et->Decode(substr($buff,18,$len), 'UTF16', 'II');
2474
+ $et->HandleTag($tagTablePtr, '_eeLink', $filename);
2475
+ } else {
2476
+ next;
2477
+ }
2425
2478
  } else {
2426
2479
  $et->FoundTag($tagInfo, $buff);
2427
2480
  }
@@ -2508,7 +2561,7 @@ JPEG images.
2508
2561
 
2509
2562
  =head1 AUTHOR
2510
2563
 
2511
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2564
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2512
2565
 
2513
2566
  This library is free software; you can redistribute it and/or modify it
2514
2567
  under the same terms as Perl itself.
@@ -622,7 +622,7 @@ extracted from these formats.
622
622
 
623
623
  =head1 AUTHOR
624
624
 
625
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
625
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
626
626
 
627
627
  This library is free software; you can redistribute it and/or modify it
628
628
  under the same terms as Perl itself.
@@ -243,7 +243,7 @@ write information from the FotoWare FotoStation trailer.
243
243
 
244
244
  =head1 AUTHOR
245
245
 
246
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
246
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
247
247
 
248
248
  This library is free software; you can redistribute it and/or modify it
249
249
  under the same terms as Perl itself.
@@ -31,7 +31,7 @@ use vars qw($VERSION);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
  use Image::ExifTool::Exif;
33
33
 
34
- $VERSION = '1.91';
34
+ $VERSION = '1.92';
35
35
 
36
36
  sub ProcessFujiDir($$$);
37
37
  sub ProcessFaceRec($$$);
@@ -1187,6 +1187,8 @@ my %faceCategories = (
1187
1187
  ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
1188
1188
  PrintConv => '$val=~tr/ /x/; $val',
1189
1189
  },
1190
+ # 0x112 - int16u[2] same as 0x111 but with width/height swapped?
1191
+ # 0x113 - int16u[2] same as 0x111?
1190
1192
  0x115 => {
1191
1193
  Name => 'RawImageAspectRatio',
1192
1194
  Format => 'int16u',
@@ -1236,6 +1238,7 @@ my %faceCategories = (
1236
1238
  Count => 36,
1237
1239
  PrintConv => '$val =~ tr/012 /RGB/d; join " ", $val =~ /....../g',
1238
1240
  },
1241
+ # 0x141 - int16u[2] Bit depth? "14 42" for 14-bit RAF and "16 48" for 16-bit RAF
1239
1242
  0x2000 => { #IB
1240
1243
  Name => 'WB_GRGBLevelsAuto',
1241
1244
  Format => 'int16u',
@@ -1408,6 +1411,8 @@ my %faceCategories = (
1408
1411
  0xf00e => 'WB_GRBLevels',
1409
1412
  0xf00f => 'ChromaticAberrationParams', # (rational64s[23])
1410
1413
  0xf010 => 'VignettingParams', #9 (rational64s[31 or 64])
1414
+ # 0xf013 - int32u[3] same as 0xf00d
1415
+ # 0xf014 - int32u[3] - also related to WhiteBalance
1411
1416
  );
1412
1417
 
1413
1418
  # information found in FFMV atom of MOV videos
@@ -1688,7 +1693,7 @@ sub WriteRAF($$)
1688
1693
  # rewrite the embedded JPEG in memory
1689
1694
  my %jpegInfo = (
1690
1695
  Parent => 'RAF',
1691
- RAF => new File::RandomAccess(\$jpeg),
1696
+ RAF => File::RandomAccess->new(\$jpeg),
1692
1697
  OutFile => \$outJpeg,
1693
1698
  );
1694
1699
  $$et{FILE_TYPE} = 'JPEG';
@@ -1792,7 +1797,7 @@ sub ProcessRAF($$)
1792
1797
  # extract information from embedded JPEG
1793
1798
  my %dirInfo = (
1794
1799
  Parent => 'RAF',
1795
- RAF => new File::RandomAccess(\$jpeg),
1800
+ RAF => File::RandomAccess->new(\$jpeg),
1796
1801
  );
1797
1802
  if ($jpos) {
1798
1803
  $$et{BASE} += $jpos;
@@ -1874,7 +1879,7 @@ FujiFilm maker notes in EXIF information, and to read/write FujiFilm RAW
1874
1879
 
1875
1880
  =head1 AUTHOR
1876
1881
 
1877
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1882
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1878
1883
 
1879
1884
  This library is free software; you can redistribute it and/or modify it
1880
1885
  under the same terms as Perl itself.
@@ -68,7 +68,7 @@ General Imaging maker notes.
68
68
 
69
69
  =head1 AUTHOR
70
70
 
71
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
71
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
72
72
 
73
73
  This library is free software; you can redistribute it and/or modify it
74
74
  under the same terms as Perl itself.
@@ -545,7 +545,7 @@ write GIF meta information.
545
545
 
546
546
  =head1 AUTHOR
547
547
 
548
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
548
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
549
549
 
550
550
  This library is free software; you can redistribute it and/or modify it
551
551
  under the same terms as Perl itself.
@@ -270,7 +270,7 @@ GIMP software.
270
270
 
271
271
  =head1 AUTHOR
272
272
 
273
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
273
+ Copyright 2003-2024, 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.
@@ -613,7 +613,7 @@ GPS (Global Positioning System) meta information in EXIF data.
613
613
 
614
614
  =head1 AUTHOR
615
615
 
616
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
616
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
617
617
 
618
618
  This library is free software; you can redistribute it and/or modify it
619
619
  under the same terms as Perl itself.
@@ -2242,7 +2242,7 @@ coordinates.
2242
2242
 
2243
2243
  =head1 AUTHOR
2244
2244
 
2245
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2245
+ Copyright 2003-2024, 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.73';
32
+ $VERSION = '1.74';
33
33
 
34
34
  sub JITTER() { return 2 } # maximum time jitter
35
35
 
@@ -174,7 +174,7 @@ sub LoadTrackLog($$;$)
174
174
  # $val is track file name
175
175
  if ($et->Open(\*EXIFTOOL_TRKFILE, $val)) {
176
176
  $trackFile = $val;
177
- $raf = new File::RandomAccess(\*EXIFTOOL_TRKFILE);
177
+ $raf = File::RandomAccess->new(\*EXIFTOOL_TRKFILE);
178
178
  unless ($raf->Read($_, 256)) {
179
179
  close EXIFTOOL_TRKFILE;
180
180
  return "Empty track file '${val}'";
@@ -202,7 +202,7 @@ sub LoadTrackLog($$;$)
202
202
  }
203
203
  unless ($from) {
204
204
  # set up RAF for reading log file in memory
205
- $raf = new File::RandomAccess(\$val);
205
+ $raf = File::RandomAccess->new(\$val);
206
206
  $from = 'data';
207
207
  }
208
208
 
@@ -1492,7 +1492,7 @@ user-defined tag GPSRoll, must be active.
1492
1492
 
1493
1493
  =head1 AUTHOR
1494
1494
 
1495
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1495
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1496
1496
 
1497
1497
  This library is free software; you can redistribute it and/or modify it
1498
1498
  under the same terms as Perl itself.
@@ -748,7 +748,7 @@ metadata from GoPro MP4 videos.
748
748
 
749
749
  =head1 AUTHOR
750
750
 
751
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
751
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
752
752
 
753
753
  This library is free software; you can redistribute it and/or modify it
754
754
  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-2023, Phil Harvey (philharvey66 at gmail.com)
1126
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
253
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
558
+ Copyright 2003-2024, 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.
@@ -13,7 +13,7 @@ use vars qw($VERSION);
13
13
  use Image::ExifTool; # only for FinishTiffDump()
14
14
  use Image::ExifTool::HTML qw(EscapeHTML);
15
15
 
16
- $VERSION = '1.39';
16
+ $VERSION = '1.40';
17
17
 
18
18
  sub DumpTable($$$;$$$$$$);
19
19
  sub Open($$$;@);
@@ -894,7 +894,7 @@ Image::ExifTool::HtmlDump - Dump information in hex to HTML page
894
894
  =head1 SYNOPSIS
895
895
 
896
896
  use Image::ExifTool::HtmlDump;
897
- my $dump = new Image::ExifTool::HtmlDump;
897
+ my $dump = Image::ExifTool::HtmlDump->new;
898
898
  $dump->Add($start, $size, $comment);
899
899
  $dump->Print($dumpInfo, $raf, $dataPt, $dataPos, $outfile);
900
900
 
@@ -917,7 +917,7 @@ page.
917
917
 
918
918
  =head1 AUTHOR
919
919
 
920
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
920
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
1360
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
124
+ Copyright 2003-2024, 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.
@@ -18,7 +18,7 @@ use strict;
18
18
  use vars qw($VERSION);
19
19
  use Image::ExifTool qw(:DataAccess :Utils);
20
20
 
21
- $VERSION = '1.60';
21
+ $VERSION = '1.61';
22
22
 
23
23
  sub ProcessID3v2($$$);
24
24
  sub ProcessPrivate($$$);
@@ -1408,7 +1408,7 @@ sub ProcessID3($$)
1408
1408
  $$et{DoneID3} = 1;
1409
1409
 
1410
1410
  # allow this to be called with either RAF or DataPt
1411
- my $raf = $$dirInfo{RAF} || new File::RandomAccess($$dirInfo{DataPt});
1411
+ my $raf = $$dirInfo{RAF} || File::RandomAccess->new($$dirInfo{DataPt});
1412
1412
  my ($buff, %id3Header, %id3Trailer, $hBuff, $tBuff, $eBuff, $tagTablePtr);
1413
1413
  my $rtnVal = 0;
1414
1414
  my $hdrEnd = 0;
@@ -1718,7 +1718,7 @@ other types of audio files.
1718
1718
 
1719
1719
  =head1 AUTHOR
1720
1720
 
1721
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1721
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1722
1722
 
1723
1723
  This library is free software; you can redistribute it and/or modify it
1724
1724
  under the same terms as Perl itself.
@@ -1284,7 +1284,7 @@ image files.
1284
1284
 
1285
1285
  =head1 AUTHOR
1286
1286
 
1287
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1287
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
187
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
194
+ Copyright 2003-2024, 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.
@@ -12,7 +12,7 @@ require Exporter;
12
12
 
13
13
  use vars qw($VERSION @ISA @EXPORT_OK);
14
14
 
15
- $VERSION = '1.10';
15
+ $VERSION = '1.11';
16
16
  @ISA = qw(Exporter);
17
17
  @EXPORT_OK = qw(ReadCSV ReadJSON);
18
18
 
@@ -38,13 +38,13 @@ sub ReadCSV($$;$$)
38
38
  $raf = $file;
39
39
  $file = 'CSV file';
40
40
  } elsif (ref $file eq 'GLOB') {
41
- $raf = new File::RandomAccess($file);
41
+ $raf = File::RandomAccess->new($file);
42
42
  $file = 'CSV file';
43
43
  } else {
44
44
  open CSVFILE, $file or return "Error opening CSV file '${file}'";
45
45
  binmode CSVFILE;
46
46
  $openedFile = 1;
47
- $raf = new File::RandomAccess(\*CSVFILE);
47
+ $raf = File::RandomAccess->new(\*CSVFILE);
48
48
  }
49
49
  $delim = ',' unless defined $delim;
50
50
  # set input record separator by first newline found in the file
@@ -253,13 +253,13 @@ sub ReadJSON($$;$$)
253
253
  $raf = $file;
254
254
  $file = 'JSON file';
255
255
  } elsif (ref $file eq 'GLOB') {
256
- $raf = new File::RandomAccess($file);
256
+ $raf = File::RandomAccess->new($file);
257
257
  $file = 'JSON file';
258
258
  } else {
259
259
  open JSONFILE, $file or return "Error opening JSON file '${file}'";
260
260
  binmode JSONFILE;
261
261
  $openedFile = 1;
262
- $raf = new File::RandomAccess(\*JSONFILE);
262
+ $raf = File::RandomAccess->new(\*JSONFILE);
263
263
  }
264
264
  my $obj = ReadJSONObject($raf);
265
265
  close JSONFILE if $openedFile;
@@ -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-2023, Phil Harvey (philharvey66 at gmail.com)
351
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
261
+ Copyright 2003-2024, 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.
@@ -206,7 +206,7 @@ IJPEG SDK, used in cameras such as the P2 Pro.
206
206
 
207
207
  =head1 AUTHOR
208
208
 
209
- Copyright 2003-2023, Marcos Del Sol Vives (marcos at orca.pet)
209
+ Copyright 2003-2024, Marcos Del Sol Vives (marcos at orca.pet)
210
210
 
211
211
  This library is free software; you can redistribute it and/or modify it
212
212
  under the same terms as Perl itself.
@@ -11,7 +11,7 @@ use strict;
11
11
  use vars qw($VERSION);
12
12
  use Image::ExifTool qw(:DataAccess :Utils);
13
13
 
14
- $VERSION = '1.35';
14
+ $VERSION = '1.36';
15
15
 
16
16
  sub ProcessOcad($$$);
17
17
  sub ProcessJPEG_HDR($$$);
@@ -335,6 +335,9 @@ sub ProcessJPEG_HDR($$$);
335
335
  Name => 'NikonApp',
336
336
  Condition => '$$valPt =~ m(\0{6}/NIKON APP$)',
337
337
  Notes => 'contains editing information in XMP format',
338
+ }, {
339
+ Name => 'SonyHiddenData',
340
+ Condition => '$$valPt =~ /^\x55\x26\x11\x05\0/',
338
341
  }, {
339
342
  Name => 'PreviewImage',
340
343
  Condition => '$$valPt =~ /^\xff\xd8\xff/',
@@ -765,7 +768,7 @@ segments are included in the Image::ExifTool module itself.
765
768
 
766
769
  =head1 AUTHOR
767
770
 
768
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
771
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
769
772
 
770
773
  This library is free software; you can redistribute it and/or modify it
771
774
  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-2023, Phil Harvey (philharvey66 at gmail.com)
2593
+ Copyright 2003-2024, 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.
@@ -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.