exiftool_vendored 12.11.0 → 12.16.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.
- checksums.yaml +4 -4
- data/bin/Changes +62 -2
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/exiftool +70 -36
- data/bin/lib/File/RandomAccess.pm +1 -1
- data/bin/lib/File/RandomAccess.pod +2 -2
- data/bin/lib/Image/ExifTool.pm +39 -4
- data/bin/lib/Image/ExifTool.pod +12 -8
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/APE.pm +1 -1
- data/bin/lib/Image/ExifTool/APP12.pm +1 -1
- data/bin/lib/Image/ExifTool/ASF.pm +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +1 -1
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BPG.pm +1 -1
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +10 -4
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +1 -1
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +28 -2
- data/bin/lib/Image/ExifTool/DNG.pm +1 -1
- data/bin/lib/Image/ExifTool/DPX.pm +4 -4
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +14 -1
- data/bin/lib/Image/ExifTool/FITS.pm +1 -1
- data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/Font.pm +1 -1
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- data/bin/lib/Image/ExifTool/GPS.pm +1 -1
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +30 -11
- data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +1 -1
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
- data/bin/lib/Image/ExifTool/ISO.pm +1 -1
- data/bin/lib/Image/ExifTool/ITC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +3 -3
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +24 -2
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/JVC.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +9 -4
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
- data/bin/lib/Image/ExifTool/MIE.pm +1 -1
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/MNG.pm +1 -1
- data/bin/lib/Image/ExifTool/MOI.pm +1 -1
- data/bin/lib/Image/ExifTool/MPC.pm +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MPF.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +315 -35
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
- data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +1 -1
- data/bin/lib/Image/ExifTool/PDF.pm +10 -2
- data/bin/lib/Image/ExifTool/PGF.pm +1 -1
- data/bin/lib/Image/ExifTool/PICT.pm +1 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +12 -4
- data/bin/lib/Image/ExifTool/PPM.pm +1 -1
- data/bin/lib/Image/ExifTool/PSP.pm +1 -1
- data/bin/lib/Image/ExifTool/Palm.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
- data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +38 -23
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +46 -7
- data/bin/lib/Image/ExifTool/RIFF.pm +83 -5
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +1 -1
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- data/bin/lib/Image/ExifTool/Red.pm +1 -1
- data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +8 -2
- data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- data/bin/lib/Image/ExifTool/Stim.pm +1 -1
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +3943 -3807
- data/bin/lib/Image/ExifTool/TagNames.pod +312 -18
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +1 -1
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +26 -14
- data/bin/lib/Image/ExifTool/XMP.pm +17 -8
- data/bin/lib/Image/ExifTool/XMP2.pl +5 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +9 -4
|
@@ -96,7 +96,7 @@ my %insvLimit = (
|
|
|
96
96
|
NOTES => q{
|
|
97
97
|
Timed metadata extracted from QuickTime media data and some AVI videos when
|
|
98
98
|
the ExtractEmbedded option is used. Although most of these tags are
|
|
99
|
-
combined into the single table below, ExifTool currently reads
|
|
99
|
+
combined into the single table below, ExifTool currently reads 49 different
|
|
100
100
|
formats of timed GPS metadata from video files.
|
|
101
101
|
},
|
|
102
102
|
VARS => { NO_ID => 1 },
|
|
@@ -531,7 +531,10 @@ my %insvLimit = (
|
|
|
531
531
|
PROCESS_PROC => \&Process_tx3g,
|
|
532
532
|
GROUPS => { 2 => 'Location' },
|
|
533
533
|
FIRST_ENTRY => 0,
|
|
534
|
-
NOTES =>
|
|
534
|
+
NOTES => q{
|
|
535
|
+
Tags extracted from the tx3g sbtl timed metadata of Yuneec drones, and
|
|
536
|
+
subtitle text in some other videos.
|
|
537
|
+
},
|
|
535
538
|
Lat => {
|
|
536
539
|
Name => 'GPSLatitude',
|
|
537
540
|
RawConv => '$$self{FoundGPSLatitude} = 1; $val',
|
|
@@ -552,6 +555,11 @@ my %insvLimit = (
|
|
|
552
555
|
GimYaw => 'GimbalYaw',
|
|
553
556
|
GimPitch => 'GimbalPitch',
|
|
554
557
|
GimRoll => 'GimbalRoll',
|
|
558
|
+
DateTime => { # for date/time-format subtitle text
|
|
559
|
+
Groups => { 2 => 'Time' },
|
|
560
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
|
561
|
+
},
|
|
562
|
+
Text => { Groups => { 2 => 'Other' } },
|
|
555
563
|
);
|
|
556
564
|
|
|
557
565
|
%Image::ExifTool::QuickTime::INSV_MakerNotes = (
|
|
@@ -1195,6 +1203,10 @@ sub ProcessSamples($)
|
|
|
1195
1203
|
$pos += $hdrLen + $len;
|
|
1196
1204
|
last if $pos + $hdrLen >= length($buff);
|
|
1197
1205
|
}
|
|
1206
|
+
if ($$et{GotNAL06}) {
|
|
1207
|
+
my $eeOpt = $et->Options('ExtractEmbedded');
|
|
1208
|
+
last unless $eeOpt and $eeOpt > 2;
|
|
1209
|
+
}
|
|
1198
1210
|
next;
|
|
1199
1211
|
}
|
|
1200
1212
|
if ($verbose > 1) {
|
|
@@ -1771,6 +1783,25 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
|
1771
1783
|
$trk = GetFloat($dataPt, 0x58);
|
|
1772
1784
|
}
|
|
1773
1785
|
|
|
1786
|
+
} elsif ($$dataPt =~ /^.{60}A\0.{6}([NS])\0.{6}([EW])\0/s and $dirLen >= 112) {
|
|
1787
|
+
|
|
1788
|
+
# header looks like this in my sample (unknown dashcam, "Anticlock 2 2020_1125_1455_007.MOV"):
|
|
1789
|
+
# 0000: 00 00 80 00 66 72 65 65 47 50 53 20 68 00 00 00 [....freeGPS h...]
|
|
1790
|
+
# 0010: 32 30 31 33 30 33 32 35 41 00 00 00 00 00 00 00 [20130325A.......]
|
|
1791
|
+
# 0020: 41 70 72 20 20 36 20 32 30 31 36 2c 20 31 36 3a [Apr 6 2016, 16:]
|
|
1792
|
+
# 0030: 0e 00 00 00 38 00 00 00 22 00 00 00 41 00 00 00 [....8..."...A...]
|
|
1793
|
+
# 0040: 8a 63 24 45 53 00 00 00 9f e6 42 45 45 00 00 00 [.c$ES.....BEE...]
|
|
1794
|
+
# 0050: 59 c0 04 3f 52 b8 42 41 14 00 00 00 0b 00 00 00 [Y..?R.BA........]
|
|
1795
|
+
# 0060: 19 00 00 00 06 00 00 00 05 00 00 00 f6 ff ff ff [................]
|
|
1796
|
+
# 0070: 03 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 [................]
|
|
1797
|
+
($latRef, $lonRef) = ($1, $2);
|
|
1798
|
+
($hr,$min,$sec,$yr,$mon,$day,@acc) = unpack('x48V3x28V6',$$dataPt);
|
|
1799
|
+
map { $_ = $_ - 4294967296 if $_ >= 0x80000000; $_ /= 1000 } @acc; # (NC)
|
|
1800
|
+
$lat = GetFloat($dataPt, 0x40);
|
|
1801
|
+
$lon = GetFloat($dataPt, 0x48);
|
|
1802
|
+
$spd = GetFloat($dataPt, 0x50);
|
|
1803
|
+
$trk = GetFloat($dataPt, 0x54);
|
|
1804
|
+
|
|
1774
1805
|
} else {
|
|
1775
1806
|
|
|
1776
1807
|
# (look for binary GPS as stored by NextBase 512G, ref PH)
|
|
@@ -1836,8 +1867,10 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
|
1836
1867
|
$et->HandleTag($tagTbl, GPSDateTime => $time);
|
|
1837
1868
|
$et->HandleTag($tagTbl, GPSLatitude => $lat * ($latRef eq 'S' ? -1 : 1));
|
|
1838
1869
|
$et->HandleTag($tagTbl, GPSLongitude => $lon * ($lonRef eq 'W' ? -1 : 1));
|
|
1839
|
-
|
|
1840
|
-
|
|
1870
|
+
if (defined $spd) {
|
|
1871
|
+
$et->HandleTag($tagTbl, GPSSpeed => $spd); # (now in km/h)
|
|
1872
|
+
$et->HandleTag($tagTbl, GPSSpeedRef => 'K');
|
|
1873
|
+
}
|
|
1841
1874
|
if (defined $trk) {
|
|
1842
1875
|
$et->HandleTag($tagTbl, GPSTrack => $trk);
|
|
1843
1876
|
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
|
@@ -1960,7 +1993,13 @@ sub Process_tx3g($$$)
|
|
|
1960
1993
|
my $dataPt = $$dirInfo{DataPt};
|
|
1961
1994
|
return 0 if length $$dataPt < 2;
|
|
1962
1995
|
pos($$dataPt) = 2; # skip 2-byte length word
|
|
1963
|
-
$et->
|
|
1996
|
+
$et->VerboseDir('tx3g', undef, length($$dataPt)-2);
|
|
1997
|
+
$et->HandleTag($tagTablePtr, 'Text', substr($$dataPt, 2));
|
|
1998
|
+
if ($$dataPt =~ /^..\w{3} (\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2}) ?([-+])(\d{2}):?(\d{2})$/s) {
|
|
1999
|
+
$et->HandleTag($tagTablePtr, 'DateTime', "$1:$2:$3 $4$5$6:$7");
|
|
2000
|
+
} else {
|
|
2001
|
+
$et->HandleTag($tagTablePtr, $1, $2) while $$dataPt =~ /(\w+):([^:]*[^:\s])(\s|$)/sg;
|
|
2002
|
+
}
|
|
1964
2003
|
return 1;
|
|
1965
2004
|
}
|
|
1966
2005
|
|
|
@@ -2492,7 +2531,7 @@ sub ProcessInsta360($;$)
|
|
|
2492
2531
|
$et->HandleTag($tagTbl, GPSTrack => $a[9]);
|
|
2493
2532
|
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
|
2494
2533
|
$et->HandleTag($tagTbl, GPSAltitude => $a[10]);
|
|
2495
|
-
$et->HandleTag($tagTbl, Unknown02 => "@a[1,2]") if $unknown;
|
|
2534
|
+
$et->HandleTag($tagTbl, Unknown02 => "@a[1,2]") if $unknown; # millisecond counter (https://exiftool.org/forum/index.php?topic=9884.msg65143#msg65143)
|
|
2496
2535
|
}
|
|
2497
2536
|
}
|
|
2498
2537
|
} elsif ($id == 0x101) {
|
|
@@ -2649,7 +2688,7 @@ information like GPS tracks from MOV, MP4 and INSV media data.
|
|
|
2649
2688
|
|
|
2650
2689
|
=head1 AUTHOR
|
|
2651
2690
|
|
|
2652
|
-
Copyright 2003-
|
|
2691
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
2653
2692
|
|
|
2654
2693
|
This library is free software; you can redistribute it and/or modify it
|
|
2655
2694
|
under the same terms as Perl itself.
|
|
@@ -482,6 +482,15 @@ my %code2charset = (
|
|
|
482
482
|
Name => 'CharacterSet',
|
|
483
483
|
SubDirectory => { TagTable => 'Image::ExifTool::RIFF::CSET' },
|
|
484
484
|
},
|
|
485
|
+
# tx_ tags are generated based on the Codec used for the txts stream
|
|
486
|
+
tx_USER => {
|
|
487
|
+
Name => 'UserText',
|
|
488
|
+
SubDirectory => { TagTable => 'Image::ExifTool::RIFF::UserText' },
|
|
489
|
+
},
|
|
490
|
+
tx_Unknown => { # (untested)
|
|
491
|
+
Name => 'Text',
|
|
492
|
+
Notes => 'streamed text, extracted when the ExtractEmbedded option is used',
|
|
493
|
+
},
|
|
485
494
|
#
|
|
486
495
|
# WebP-specific tags
|
|
487
496
|
#
|
|
@@ -995,6 +1004,12 @@ my %code2charset = (
|
|
|
995
1004
|
Condition => '$$self{RIFFStreamType} eq "vids"',
|
|
996
1005
|
SubDirectory => { TagTable => 'Image::ExifTool::BMP::Main' },
|
|
997
1006
|
},
|
|
1007
|
+
{
|
|
1008
|
+
Name => 'TextFormat',
|
|
1009
|
+
Condition => '$$self{RIFFStreamType} eq "txts"',
|
|
1010
|
+
Hidden => 1,
|
|
1011
|
+
RawConv => '$self->Options("ExtractEmbedded") or $self->WarnOnce("Use ExtractEmbedded option to extract timed text"); undef',
|
|
1012
|
+
},
|
|
998
1013
|
],
|
|
999
1014
|
);
|
|
1000
1015
|
|
|
@@ -1025,7 +1040,7 @@ my %code2charset = (
|
|
|
1025
1040
|
0 => {
|
|
1026
1041
|
Name => 'StreamType',
|
|
1027
1042
|
Format => 'string[4]',
|
|
1028
|
-
RawConv => '$$self{RIFFStreamType} = $val',
|
|
1043
|
+
RawConv => '$$self{RIFFStreamNum} = ($$self{RIFFStreamNum} || 0) + 1; $$self{RIFFStreamType} = $val',
|
|
1029
1044
|
PrintConv => {
|
|
1030
1045
|
auds => 'Audio',
|
|
1031
1046
|
mids => 'MIDI',
|
|
@@ -1038,16 +1053,19 @@ my %code2charset = (
|
|
|
1038
1053
|
{
|
|
1039
1054
|
Name => 'AudioCodec',
|
|
1040
1055
|
Condition => '$$self{RIFFStreamType} eq "auds"',
|
|
1056
|
+
RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
|
|
1041
1057
|
Format => 'string[4]',
|
|
1042
1058
|
},
|
|
1043
1059
|
{
|
|
1044
1060
|
Name => 'VideoCodec',
|
|
1045
1061
|
Condition => '$$self{RIFFStreamType} eq "vids"',
|
|
1062
|
+
RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
|
|
1046
1063
|
Format => 'string[4]',
|
|
1047
1064
|
},
|
|
1048
1065
|
{
|
|
1049
1066
|
Name => 'Codec',
|
|
1050
1067
|
Format => 'string[4]',
|
|
1068
|
+
RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
|
|
1051
1069
|
},
|
|
1052
1070
|
],
|
|
1053
1071
|
# 2 => 'StreamFlags',
|
|
@@ -1243,6 +1261,55 @@ my %code2charset = (
|
|
|
1243
1261
|
},
|
|
1244
1262
|
);
|
|
1245
1263
|
|
|
1264
|
+
# streamed USER txts written by Momento M6 dashcam (ref PH)
|
|
1265
|
+
%Image::ExifTool::RIFF::UserText = (
|
|
1266
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
1267
|
+
GROUPS => { 2 => 'Location' },
|
|
1268
|
+
NOTES => q{
|
|
1269
|
+
Tags decoded from the USER-format txts stream written by Momento M6 dashcam.
|
|
1270
|
+
Extracted only if the ExtractEmbedded option is used.
|
|
1271
|
+
},
|
|
1272
|
+
# (little-endian)
|
|
1273
|
+
# 0 - int32u: 32
|
|
1274
|
+
# 4 - int32u: sample number (starting from unknown offset)
|
|
1275
|
+
# 8 - int8u[4]: "w x y z" ? (w 0=front cam, 1=rear cam, z mostly 5-8)
|
|
1276
|
+
# 12 - int8u[4]: "0 x 1 0" ? (x incrementing once per second)
|
|
1277
|
+
# 16 - int8u[4]: "0 32 0 x" ?
|
|
1278
|
+
# 20 - int32u: 100-150(mostly), 250-300(once per second)
|
|
1279
|
+
# 24 - int8u[4]: "0 x y 0" ?
|
|
1280
|
+
28 => { Name => 'GPSAltitude', Format => 'int32u', ValueConv => '$val / 10' }, # (NC)
|
|
1281
|
+
# 32 - int32u: 0(mostly), 23(once per second)
|
|
1282
|
+
# 36 - int32u: 0
|
|
1283
|
+
40 => { Name => 'Accelerometer', Format => 'float[3]' },
|
|
1284
|
+
# 52 - int32u: 1
|
|
1285
|
+
56 => { Name => 'GPSSpeed', Format => 'float' }, # km/h
|
|
1286
|
+
60 => {
|
|
1287
|
+
Name => 'GPSLatitude',
|
|
1288
|
+
Format => 'float',
|
|
1289
|
+
# Note: these values are unsigned and I don't know where the hemisphere is stored,
|
|
1290
|
+
# but my only sample is from the U.S., so assume a positive latitude (for now)
|
|
1291
|
+
ValueConv => 'my $deg = int($val / 100); $deg + ($val - $deg * 100) / 60',
|
|
1292
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
|
1293
|
+
},
|
|
1294
|
+
64 => {
|
|
1295
|
+
Name => 'GPSLongitude',
|
|
1296
|
+
Format => 'float',
|
|
1297
|
+
# Note: these values are unsigned and I don't know where the hemisphere is stored,
|
|
1298
|
+
# but my only sample is from the U.S., so assume a negative longitude (for now)
|
|
1299
|
+
ValueConv => 'my $deg = int($val / 100); -($deg + ($val - $deg * 100) / 60)',
|
|
1300
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
|
1301
|
+
},
|
|
1302
|
+
68 => {
|
|
1303
|
+
Name => 'GPSDateTime',
|
|
1304
|
+
Description => 'GPS Date/Time',
|
|
1305
|
+
Groups => { 2 => 'Time' },
|
|
1306
|
+
Format => 'int32u',
|
|
1307
|
+
ValueConv => 'ConvertUnixTime($val)',
|
|
1308
|
+
# (likely local time, but clock seemed off by 3 hours in my sample)
|
|
1309
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
|
1310
|
+
},
|
|
1311
|
+
);
|
|
1312
|
+
|
|
1246
1313
|
# WebP alpha info (ref 14)
|
|
1247
1314
|
%Image::ExifTool::RIFF::ALPH = (
|
|
1248
1315
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
@@ -1752,6 +1819,7 @@ sub ProcessRIFF($$)
|
|
|
1752
1819
|
my ($buff, $buf2, $type, $mime, $err, $rf64);
|
|
1753
1820
|
my $verbose = $et->Options('Verbose');
|
|
1754
1821
|
my $unknown = $et->Options('Unknown');
|
|
1822
|
+
my $ee = $et->Options('ExtractEmbedded');
|
|
1755
1823
|
|
|
1756
1824
|
# verify this is a valid RIFF file
|
|
1757
1825
|
return 0 unless $raf->Read($buff, 12) == 12;
|
|
@@ -1769,7 +1837,8 @@ sub ProcessRIFF($$)
|
|
|
1769
1837
|
$mime = $riffMimeType{$type} if $type;
|
|
1770
1838
|
$et->SetFileType($type, $mime);
|
|
1771
1839
|
$$et{VALUE}{FileType} .= ' (RF64)' if $rf64;
|
|
1772
|
-
$$et{RIFFStreamType} = '';
|
|
1840
|
+
$$et{RIFFStreamType} = ''; # initialize stream type
|
|
1841
|
+
$$et{RIFFStreamCodec} = []; # initialize codec array
|
|
1773
1842
|
SetByteOrder('II');
|
|
1774
1843
|
my $tagTbl = GetTagTable('Image::ExifTool::RIFF::Main');
|
|
1775
1844
|
my $pos = 12;
|
|
@@ -1808,14 +1877,20 @@ sub ProcessRIFF($$)
|
|
|
1808
1877
|
# stop when we hit the audio data or AVI index or AVI movie data
|
|
1809
1878
|
# --> no more because Adobe Bridge stores XMP after this!!
|
|
1810
1879
|
# (so now we only do this on the FastScan option)
|
|
1811
|
-
if ((
|
|
1812
|
-
$
|
|
1880
|
+
if ($et->Options('FastScan') and ($tag eq 'data' or $tag eq 'idx1' or
|
|
1881
|
+
($tag eq 'LIST_movi' and not $ee)))
|
|
1813
1882
|
{
|
|
1814
1883
|
$et->VPrint(0, "(end of parsing)\n");
|
|
1815
1884
|
last;
|
|
1816
1885
|
}
|
|
1817
1886
|
# RIFF chunks are padded to an even number of bytes
|
|
1818
1887
|
my $len2 = $len + ($len & 0x01);
|
|
1888
|
+
# change name of stream txts data depending on the Codec
|
|
1889
|
+
if ($ee and $tag =~ /^(\d{2})tx$/) {
|
|
1890
|
+
$tag = 'tx_' . ($$et{RIFFStreamCodec}[$1] || 'Unknown');
|
|
1891
|
+
$tag = "tx_Unknown" unless defined $$tagTbl{$tag};
|
|
1892
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
|
1893
|
+
}
|
|
1819
1894
|
my $tagInfo = $$tagTbl{$tag};
|
|
1820
1895
|
if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF)$/)) {
|
|
1821
1896
|
$raf->Read($buff, $len2) == $len2 or $err=1, last;
|
|
@@ -1835,11 +1910,14 @@ sub ProcessRIFF($$)
|
|
|
1835
1910
|
delete $$et{SET_GROUP0};
|
|
1836
1911
|
delete $$et{SET_GROUP1};
|
|
1837
1912
|
}
|
|
1913
|
+
delete $$et{DOC_NUM} if $ee;
|
|
1838
1914
|
} elsif ($tag eq 'RIFF') {
|
|
1839
1915
|
# don't read into RIFF chunk (eg. concatenated video file)
|
|
1840
1916
|
$raf->Read($buff, 4) == 4 or $err=1, last;
|
|
1841
1917
|
# extract information from remaining file as an embedded file
|
|
1842
1918
|
$$et{DOC_NUM} = ++$$et{DOC_COUNT}
|
|
1919
|
+
} elsif ($tag eq 'LIST_movi' and $ee) {
|
|
1920
|
+
next; # parse into movi chunk
|
|
1843
1921
|
} else {
|
|
1844
1922
|
if ($len > 0x7fffffff and not $et->Options('LargeFileSupport')) {
|
|
1845
1923
|
$et->Warn("Stopped parsing at large $tag chunk (LargeFileSupport not set)");
|
|
@@ -1874,7 +1952,7 @@ including AVI videos, WAV audio files and WEBP images.
|
|
|
1874
1952
|
|
|
1875
1953
|
=head1 AUTHOR
|
|
1876
1954
|
|
|
1877
|
-
Copyright 2003-
|
|
1955
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
1878
1956
|
|
|
1879
1957
|
This library is free software; you can redistribute it and/or modify it
|
|
1880
1958
|
under the same terms as Perl itself.
|
|
@@ -225,7 +225,7 @@ resource files.
|
|
|
225
225
|
|
|
226
226
|
=head1 AUTHOR
|
|
227
227
|
|
|
228
|
-
Copyright 2003-
|
|
228
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
229
229
|
|
|
230
230
|
This library is free software; you can redistribute it and/or modify it
|
|
231
231
|
under the same terms as Perl itself.
|
|
@@ -366,7 +366,7 @@ information from RTF (Rich Text Format) documents.
|
|
|
366
366
|
|
|
367
367
|
=head1 AUTHOR
|
|
368
368
|
|
|
369
|
-
Copyright 2003-
|
|
369
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
370
370
|
|
|
371
371
|
This library is free software; you can redistribute it and/or modify it
|
|
372
372
|
under the same terms as Perl itself.
|
|
@@ -125,7 +125,7 @@ images are a type of high dynamic-range image.
|
|
|
125
125
|
|
|
126
126
|
=head1 AUTHOR
|
|
127
127
|
|
|
128
|
-
Copyright 2003-
|
|
128
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
129
129
|
|
|
130
130
|
This library is free software; you can redistribute it and/or modify it
|
|
131
131
|
under the same terms as Perl itself.
|
|
@@ -168,7 +168,7 @@ information from Rawzor compressed images.
|
|
|
168
168
|
|
|
169
169
|
=head1 AUTHOR
|
|
170
170
|
|
|
171
|
-
Copyright 2003-
|
|
171
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
172
172
|
|
|
173
173
|
This library is free software; you can redistribute it and/or modify it
|
|
174
174
|
under the same terms as Perl itself.
|
|
@@ -715,7 +715,7 @@ little-endian, but the Real format is big-endian.
|
|
|
715
715
|
|
|
716
716
|
=head1 AUTHOR
|
|
717
717
|
|
|
718
|
-
Copyright 2003-
|
|
718
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
719
719
|
|
|
720
720
|
This library is free software; you can redistribute it and/or modify it
|
|
721
721
|
under the same terms as Perl itself.
|
|
@@ -431,7 +431,7 @@ maker notes in images from Reconyx cameras.
|
|
|
431
431
|
|
|
432
432
|
=head1 AUTHOR
|
|
433
433
|
|
|
434
|
-
Copyright 2003-
|
|
434
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
435
435
|
|
|
436
436
|
This library is free software; you can redistribute it and/or modify it
|
|
437
437
|
under the same terms as Perl itself.
|
|
@@ -303,7 +303,7 @@ from Redcode R3D version 1 and 2 video files.
|
|
|
303
303
|
|
|
304
304
|
=head1 AUTHOR
|
|
305
305
|
|
|
306
|
-
Copyright 2003-
|
|
306
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
307
307
|
|
|
308
308
|
This library is free software; you can redistribute it and/or modify it
|
|
309
309
|
under the same terms as Perl itself.
|
|
@@ -1143,7 +1143,7 @@ interpret Ricoh maker notes EXIF meta information.
|
|
|
1143
1143
|
|
|
1144
1144
|
=head1 AUTHOR
|
|
1145
1145
|
|
|
1146
|
-
Copyright 2003-
|
|
1146
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
1147
1147
|
|
|
1148
1148
|
This library is free software; you can redistribute it and/or modify it
|
|
1149
1149
|
under the same terms as Perl itself.
|
|
@@ -1447,7 +1447,7 @@ Samsung maker notes in EXIF information.
|
|
|
1447
1447
|
|
|
1448
1448
|
=head1 AUTHOR
|
|
1449
1449
|
|
|
1450
|
-
Copyright 2003-
|
|
1450
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
1451
1451
|
|
|
1452
1452
|
This library is free software; you can redistribute it and/or modify it
|
|
1453
1453
|
under the same terms as Perl itself.
|
|
@@ -419,7 +419,7 @@ Sanyo maker notes in EXIF information.
|
|
|
419
419
|
|
|
420
420
|
=head1 AUTHOR
|
|
421
421
|
|
|
422
|
-
Copyright 2003-
|
|
422
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
423
423
|
|
|
424
424
|
This library is free software; you can redistribute it and/or modify it
|
|
425
425
|
under the same terms as Perl itself.
|
|
@@ -128,7 +128,7 @@ metadata from the JPEG APP4 SCALADO segment.
|
|
|
128
128
|
|
|
129
129
|
=head1 AUTHOR
|
|
130
130
|
|
|
131
|
-
Copyright 2003-
|
|
131
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
132
132
|
|
|
133
133
|
This library is free software; you can redistribute it and/or modify it
|
|
134
134
|
under the same terms as Perl itself.
|
|
@@ -630,7 +630,7 @@ limited to the range 1970 to 2038 on 32-bit systems.
|
|
|
630
630
|
|
|
631
631
|
=head1 AUTHOR
|
|
632
632
|
|
|
633
|
-
Copyright 2003-
|
|
633
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
634
634
|
|
|
635
635
|
This library is free software; you can redistribute it and/or modify it
|
|
636
636
|
under the same terms as Perl itself.
|
|
@@ -332,7 +332,7 @@ name prefix.
|
|
|
332
332
|
|
|
333
333
|
=head1 AUTHOR
|
|
334
334
|
|
|
335
|
-
Copyright 2003-
|
|
335
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
336
336
|
|
|
337
337
|
This library is free software; you can redistribute it and/or modify it
|
|
338
338
|
under the same terms as Perl itself.
|
|
@@ -837,7 +837,7 @@ Sigma and Foveon maker notes in EXIF information.
|
|
|
837
837
|
|
|
838
838
|
=head1 AUTHOR
|
|
839
839
|
|
|
840
|
-
Copyright 2003-
|
|
840
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
841
841
|
|
|
842
842
|
This library is free software; you can redistribute it and/or modify it
|
|
843
843
|
under the same terms as Perl itself.
|
|
@@ -650,7 +650,7 @@ Sigma and Foveon X3F images.
|
|
|
650
650
|
|
|
651
651
|
=head1 AUTHOR
|
|
652
652
|
|
|
653
|
-
Copyright 2003-
|
|
653
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
654
654
|
|
|
655
655
|
This library is free software; you can redistribute it and/or modify it
|
|
656
656
|
under the same terms as Perl itself.
|
|
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
34
34
|
use Image::ExifTool::Exif;
|
|
35
35
|
use Image::ExifTool::Minolta;
|
|
36
36
|
|
|
37
|
-
$VERSION = '3.
|
|
37
|
+
$VERSION = '3.35';
|
|
38
38
|
|
|
39
39
|
sub ProcessSRF($$$);
|
|
40
40
|
sub ProcessSR2($$$);
|
|
@@ -146,6 +146,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
146
146
|
32859 => 'Sony FE 20mm F1.8 G', #IB/JR
|
|
147
147
|
32860 => 'Sony FE 12-24mm F2.8 GM', #JR/IB
|
|
148
148
|
32864 => 'Sony FE 28-60mm F4-5.6', #JR
|
|
149
|
+
32865 => 'Sony FE 35mm F1.4 GM', #IB/JR
|
|
149
150
|
|
|
150
151
|
# (comment this out so LensID will report the LensModel, which is more useful)
|
|
151
152
|
# 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
|
|
@@ -185,6 +186,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
185
186
|
49462 => 'Tamron 70-180mm F2.8 Di III VXD', #JR (Model A056)
|
|
186
187
|
49463 => 'Tamron 28-200mm F2.8-5.6 Di III RXD', #JR (Model A071)
|
|
187
188
|
49464 => 'Tamron 70-300mm F4.5-6.3 Di III RXD', #JR (Model A047)
|
|
189
|
+
49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
|
|
188
190
|
49473 => 'Tokina atx-m 85mm F1.8 FE', #JR
|
|
189
191
|
49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
|
|
190
192
|
49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
|
|
@@ -217,6 +219,8 @@ sub PrintInvLensSpec($;$$);
|
|
|
217
219
|
50518 => 'Sigma 100-400mm F5-6.3 DG DN OS | C', #JR (020)
|
|
218
220
|
50521 => 'Sigma 85mm F1.4 DG DN | A', #JR (020)
|
|
219
221
|
50522 => 'Sigma 105mm F2.8 DG DN MACRO | A', #JR (020)
|
|
222
|
+
50523 => 'Sigma 65mm F2 DG DN | C', #IB (020)
|
|
223
|
+
50524 => 'Sigma 35mm F2 DG DN | C', #IB (020)
|
|
220
224
|
|
|
221
225
|
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
|
|
222
226
|
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
|
|
@@ -6062,6 +6066,7 @@ my %pictureProfile2010 = (
|
|
|
6062
6066
|
29 => 'Gamma ITU709 (800%)',
|
|
6063
6067
|
31 => 'Gamma S-Log3 (PP8 or PP9)', #14
|
|
6064
6068
|
33 => 'Gamma HLG2 (PP10)', #14
|
|
6069
|
+
34 => 'Gamma HLG3', #IB
|
|
6065
6070
|
},
|
|
6066
6071
|
);
|
|
6067
6072
|
my %isoSetting2010 = (
|
|
@@ -9505,6 +9510,7 @@ my %isoSetting2010 = (
|
|
|
9505
9510
|
Name => 'DistortionCorrParams',
|
|
9506
9511
|
Format => 'int16s[16]',
|
|
9507
9512
|
},
|
|
9513
|
+
0x0070 => { %pictureProfile2010 }, #IB
|
|
9508
9514
|
0x0071 => {
|
|
9509
9515
|
Name => 'FocalLength',
|
|
9510
9516
|
Format => 'int16u',
|
|
@@ -11098,7 +11104,7 @@ Minolta.
|
|
|
11098
11104
|
|
|
11099
11105
|
=head1 AUTHOR
|
|
11100
11106
|
|
|
11101
|
-
Copyright 2003-
|
|
11107
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
|
11102
11108
|
|
|
11103
11109
|
This library is free software; you can redistribute it and/or modify it
|
|
11104
11110
|
under the same terms as Perl itself.
|