exiftool-vendored.exe 13.36.0 → 13.38.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 (72) hide show
  1. package/bin/exiftool.exe +0 -0
  2. package/bin/exiftool_files/exiftool.pl +1 -1
  3. package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
  4. package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +2 -2
  5. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +16 -9
  6. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +1 -1
  7. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +59 -5
  8. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +1 -1
  9. package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
  10. package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +5 -5
  11. package/bin/exiftool_files/lib/Image/ExifTool/DSF.pm +138 -0
  12. package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
  13. package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +5 -2
  14. package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +1 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +3 -3
  16. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +1 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +5 -4
  18. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +1 -1
  19. package/bin/exiftool_files/lib/Image/ExifTool/GM.pm +1 -1
  20. package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +3 -1
  21. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -3
  22. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +11 -8
  23. package/bin/exiftool_files/lib/Image/ExifTool/Google.pm +814 -0
  24. package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
  25. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  26. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +14 -13
  27. package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +1 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +1 -1
  29. package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
  30. package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +2 -2
  31. package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
  32. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +34 -25
  33. package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
  34. package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
  36. package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +1 -1
  37. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +2 -2
  38. package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +30 -7
  39. package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +4 -4
  40. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +4 -4
  41. package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +1 -1
  42. package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +1 -1
  43. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +2 -1
  44. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
  45. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +1 -1
  46. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +18 -7
  47. package/bin/exiftool_files/lib/Image/ExifTool/Protobuf.pm +12 -6
  48. package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +2 -2
  49. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +30 -8
  50. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +2 -0
  51. package/bin/exiftool_files/lib/Image/ExifTool/README +7 -6
  52. package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
  53. package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +375 -91
  54. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +1 -1
  55. package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +8 -5
  56. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +22 -7
  57. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +3 -2
  58. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +5753 -5696
  59. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +707 -518
  60. package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +1 -1
  61. package/bin/exiftool_files/lib/Image/ExifTool/Trailer.pm +1 -1
  62. package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +1 -1
  63. package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
  64. package/bin/exiftool_files/lib/Image/ExifTool/WavPack.pm +144 -0
  65. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +43 -37
  66. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +0 -482
  67. package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +1 -1
  68. package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
  69. package/bin/exiftool_files/lib/Image/ExifTool.pm +42 -27
  70. package/bin/exiftool_files/lib/Image/ExifTool.pod +60 -59
  71. package/bin/exiftool_files/windows_exiftool.txt +66 -64
  72. package/package.json +3 -3
@@ -20,6 +20,7 @@
20
20
  # 2024/11/26 - PH Also write GPSMeasureMode and GPSDOP
21
21
  # 2024/11/05 - PH Added support for Google Maps "Export timeline data"
22
22
  # JSON format
23
+ # 2025/09/22 - PH Added ability to read Columbus CSV log files
23
24
  #
24
25
  # References: 1) http://www.topografix.com/GPX/1/1/
25
26
  # 2) http://www.gpsinformation.org/dale/nmea.htm#GSA
@@ -34,7 +35,7 @@ use vars qw($VERSION);
34
35
  use Image::ExifTool qw(:Public);
35
36
  use Image::ExifTool::GPS;
36
37
 
37
- $VERSION = '1.81';
38
+ $VERSION = '1.82';
38
39
 
39
40
  sub JITTER() { return 2 } # maximum time jitter
40
41
 
@@ -275,6 +276,7 @@ sub LoadTrackLog($$;$)
275
276
  } elsif (((/\b(GPS)?Date/i and /\b(GPS)?(Date)?Time/i) or /\bTime\(seconds\)/i) and /\Q$csvDelim/) {
276
277
  chomp;
277
278
  @csvHeadings = split /\Q$csvDelim/;
279
+ my $isColumbus = ($csvHeadings[0] and $csvHeadings[0] eq 'INDEX'); # (Columbus GPS logger)
278
280
  $format = 'CSV';
279
281
  # convert recognized headings to our parameter names
280
282
  foreach (@csvHeadings) {
@@ -306,7 +308,7 @@ sub LoadTrackLog($$;$)
306
308
  } elsif (/^(Pos)?Lon/i) {
307
309
  $param = 'lon';
308
310
  /ref$/i and $param .= 'ref';
309
- } elsif (/^(Pos)?Alt/i) {
311
+ } elsif (/^(Pos)?(Alt|Height)/i) {
310
312
  $param = 'alt';
311
313
  } elsif (/^Speed/i) {
312
314
  $param = 'speed';
@@ -314,6 +316,9 @@ sub LoadTrackLog($$;$)
314
316
  if (m{\((mph|km/h|m/s)\)}) {
315
317
  $scaleSpeed = $otherConv{$1};
316
318
  $xtra = " in $1";
319
+ } elsif ($isColumbus) { # (Columbus GPS logger)
320
+ $scaleSpeed = $otherConv{'km/h'};
321
+ $xtra = " in km/h";
317
322
  } else {
318
323
  $xtra = ' in knots';
319
324
  }
@@ -541,12 +546,16 @@ DoneFix: $isDate = 1;
541
546
  $date = Time::Local::timegm(0,0,0,$1,$2-1,$3);
542
547
  } elsif ($val =~ /(\d{4}).*?(\d{2}).*?(\d{2})/) {
543
548
  $date = Time::Local::timegm(0,0,0,$3,$2-1,$1);
549
+ } elsif ($val =~ /^(\d{2})(\d{2})(\d{2})$/) { # (Columbus GPS logger)
550
+ $date = Time::Local::timegm(0,0,0,$3,$2-1,$1+2000);
544
551
  }
545
552
  } elsif ($param eq 'time') {
546
553
  if ($val =~ /^(\d{1,2}):(\d{2}):(\d{2}(\.\d+)?).*?(([-+])(\d{1,2}):?(\d{2}))?/) {
547
554
  $secs = (($1 * 60) + $2) * 60 + $3;
548
555
  # adjust for time zone if specified
549
556
  $secs += ($7 * 60 + $8) * ($6 eq '-' ? 60 : -60) if $5;
557
+ } elsif ($val =~ /^(\d{2})(\d{2})(\d{2})$/) { # (Columbus GPS logger)
558
+ $secs = (($1 * 60) + $2) * 60 + $3;
550
559
  }
551
560
  } elsif ($param eq 'lat' or $param eq 'lon') {
552
561
  $$fix{$param} = Image::ExifTool::GPS::ToDegrees($val, 1);
@@ -1549,7 +1558,8 @@ This module loads GPS track logs, interpolates to determine position based
1549
1558
  on time, and sets new GPS values for geotagging images. Currently supported
1550
1559
  formats are GPX, NMEA RMC/GGA/GLL/GSA/ZDA, KML, IGC, Garmin XML and TCX,
1551
1560
  Magellan PMGNTRK, Honeywell PTNTHPR, Bramor gEO, Winplus Beacon text,
1552
- GPS/IMU CSV, DJI CSV, ExifTool CSV and 3 different Google JSON formats.
1561
+ GPS/IMU CSV, DJI/Columbus/ExifTool CSV format and 3 different Google JSON
1562
+ formats.
1553
1563
 
1554
1564
  Methods in this module should not be called directly. Instead, the Geotag
1555
1565
  feature is accessed by writing the values of the ExifTool Geotag, Geosync
@@ -17,7 +17,7 @@ use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
  use Image::ExifTool::QuickTime;
19
19
 
20
- $VERSION = '1.14';
20
+ $VERSION = '1.15';
21
21
 
22
22
  sub ProcessGoPro($$$);
23
23
  sub ProcessString($$$);
@@ -251,7 +251,8 @@ my %noYes = ( N => 'No', Y => 'Yes' );
251
251
  Notes => 'gyroscope readings in rad/s',
252
252
  Binary => 1,
253
253
  },
254
- HCLT => 'HorizonControl', #3
254
+ LOGS => 'HealthLogs',
255
+ HCTL => 'HorizonControl', #3
255
256
  HDRV => { Name => 'HDRVideo', PrintConv => \%noYes }, #3/PH (NC)
256
257
  # HFLG (APP6) - seen: 0
257
258
  HSGT => 'HindsightSettings', #3
@@ -409,6 +410,7 @@ my %noYes = ( N => 'No', Y => 'Yes' );
409
410
  },
410
411
  # TOCK => { Name => 'OutTime', Unknown => 1, ValueConv => '$val/1000' }, #1 (gpmd)
411
412
  TSMP => { Name => 'TotalSamples', Unknown => 1 }, #2 (gpmd)
413
+ TIMO => 'TimeOffset',
412
414
  TYPE => { Name => 'StructureType', Unknown => 1 }, #2 (gpmd,GPMF - eg 'LLLllfFff', fmt c)
413
415
  TZON => { # (GPMF) - seen: 60 (fmt s)
414
416
  Name => 'TimeZone',
@@ -469,7 +471,8 @@ my %noYes = ( N => 'No', Y => 'Yes' );
469
471
  AALP => { Name => 'AudioLevel', Notes => 'dBFS' },
470
472
  GPSA => 'GPSAltitudeSystem', # (eg. 'MSLV')
471
473
  GRAV => { Name => 'GravityVector', Binary => 1 },
472
- HUES => 'PrediminantHue',
474
+ # DISP - Disparity track
475
+ HUES => 'PredominantHue',
473
476
  IORI => { Name => 'ImageOrientation', Binary => 1, Notes => 'quaternions 0-1' },
474
477
  # LRVO - ? Part of LRV Frame Skip
475
478
  # LRVS - ? Part of LRV Frame Skip
@@ -485,7 +488,7 @@ my %noYes = ( N => 'No', Y => 'Yes' );
485
488
  %Image::ExifTool::GoPro::GPS5 = (
486
489
  PROCESS_PROC => \&ProcessString,
487
490
  GROUPS => { 1 => 'GoPro', 2 => 'Location' },
488
- VARS => { HEX_ID => 0, ID_LABEL => 'Index' },
491
+ VARS => { ID_FMT => 'dec', ID_LABEL => 'Index' },
489
492
  0 => { # (unit='deg')
490
493
  Name => 'GPSLatitude',
491
494
  PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
@@ -514,7 +517,7 @@ my %noYes = ( N => 'No', Y => 'Yes' );
514
517
  %Image::ExifTool::GoPro::GPS9 = (
515
518
  PROCESS_PROC => \&ProcessString,
516
519
  GROUPS => { 1 => 'GoPro', 2 => 'Location' },
517
- VARS => { HEX_ID => 0, ID_LABEL => 'Index' },
520
+ VARS => { ID_FMT => 'dec', ID_LABEL => 'Index' },
518
521
  0 => { # (unit='deg')
519
522
  Name => 'GPSLatitude',
520
523
  PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
@@ -563,7 +566,7 @@ my %noYes = ( N => 'No', Y => 'Yes' );
563
566
  %Image::ExifTool::GoPro::GPRI = (
564
567
  PROCESS_PROC => \&ProcessString,
565
568
  GROUPS => { 1 => 'GoPro', 2 => 'Location' },
566
- VARS => { HEX_ID => 0, ID_LABEL => 'Index' },
569
+ VARS => { ID_FMT => 'dec', ID_LABEL => 'Index' },
567
570
  0 => { # (unit='s')
568
571
  Name => 'GPSDateTimeRaw',
569
572
  Groups => { 2 => 'Time' },
@@ -595,7 +598,7 @@ my %noYes = ( N => 'No', Y => 'Yes' );
595
598
  %Image::ExifTool::GoPro::GLPI = (
596
599
  PROCESS_PROC => \&ProcessString,
597
600
  GROUPS => { 1 => 'GoPro', 2 => 'Location' },
598
- VARS => { HEX_ID => 0, ID_LABEL => 'Index' },
601
+ VARS => { ID_FMT => 'dec', ID_LABEL => 'Index' },
599
602
  0 => { # (unit='s')
600
603
  Name => 'GPSDateTime',
601
604
  Groups => { 2 => 'Time' },
@@ -626,7 +629,7 @@ my %noYes = ( N => 'No', Y => 'Yes' );
626
629
  %Image::ExifTool::GoPro::KBAT = (
627
630
  PROCESS_PROC => \&ProcessString,
628
631
  GROUPS => { 1 => 'GoPro', 2 => 'Camera' },
629
- VARS => { HEX_ID => 0, ID_LABEL => 'Index' },
632
+ VARS => { ID_FMT => 'dec', ID_LABEL => 'Index' },
630
633
  NOTES => 'Battery status information found in GoPro Karma videos.',
631
634
  0 => { Name => 'BatteryCurrent', PrintConv => '"$val A"' },
632
635
  1 => { Name => 'BatteryCapacity', PrintConv => '"$val Ah"' },