exiftool-vendored.pl 12.70.0 → 12.73.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.
- package/bin/Changes +53 -1
- package/bin/MANIFEST +5 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +11 -11
- package/bin/exiftool +47 -27
- package/bin/lib/File/RandomAccess.pm +1 -1
- package/bin/lib/File/RandomAccess.pod +2 -2
- package/bin/lib/Image/ExifTool/AAC.pm +177 -0
- package/bin/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/APE.pm +1 -1
- package/bin/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/lib/Image/ExifTool/ASF.pm +1 -1
- package/bin/lib/Image/ExifTool/Apple.pm +1 -1
- package/bin/lib/Image/ExifTool/Audible.pm +1 -1
- package/bin/lib/Image/ExifTool/BMP.pm +1 -1
- package/bin/lib/Image/ExifTool/BPG.pm +1 -1
- package/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -3
- package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- package/bin/lib/Image/ExifTool/Canon.pm +22 -7
- package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- package/bin/lib/Image/ExifTool/Casio.pm +1 -1
- package/bin/lib/Image/ExifTool/Charset.pm +1 -1
- package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- package/bin/lib/Image/ExifTool/DJI.pm +1 -1
- package/bin/lib/Image/ExifTool/DNG.pm +1 -1
- package/bin/lib/Image/ExifTool/DPX.pm +1 -1
- package/bin/lib/Image/ExifTool/DV.pm +1 -1
- package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- package/bin/lib/Image/ExifTool/EXE.pm +1 -1
- package/bin/lib/Image/ExifTool/Exif.pm +31 -10
- package/bin/lib/Image/ExifTool/FITS.pm +1 -1
- package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- package/bin/lib/Image/ExifTool/Flash.pm +1 -1
- package/bin/lib/Image/ExifTool/FlashPix.pm +60 -7
- package/bin/lib/Image/ExifTool/Font.pm +1 -1
- package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/lib/Image/ExifTool/FujiFilm.pm +6 -3
- package/bin/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/lib/Image/ExifTool/GIF.pm +1 -1
- package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/lib/Image/ExifTool/GPS.pm +1 -1
- package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- package/bin/lib/Image/ExifTool/GoPro.pm +17 -2
- package/bin/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/lib/Image/ExifTool/HP.pm +1 -1
- package/bin/lib/Image/ExifTool/HTML.pm +1 -1
- package/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- package/bin/lib/Image/ExifTool/ICO.pm +1 -1
- package/bin/lib/Image/ExifTool/ID3.pm +8 -5
- package/bin/lib/Image/ExifTool/IPTC.pm +1 -1
- package/bin/lib/Image/ExifTool/ISO.pm +1 -1
- package/bin/lib/Image/ExifTool/ITC.pm +1 -1
- package/bin/lib/Image/ExifTool/Import.pm +1 -1
- package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- package/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
- package/bin/lib/Image/ExifTool/JPEG.pm +5 -2
- package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/lib/Image/ExifTool/JSON.pm +5 -2
- package/bin/lib/Image/ExifTool/JVC.pm +3 -3
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +17 -6
- package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/LIF.pm +1 -1
- package/bin/lib/Image/ExifTool/LNK.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/es.pm +4 -4
- package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fr.pm +4 -5
- package/bin/lib/Image/ExifTool/Lang/it.pm +3 -3
- package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- package/bin/lib/Image/ExifTool/Leaf.pm +3 -3
- package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/lib/Image/ExifTool/M2TS.pm +22 -17
- package/bin/lib/Image/ExifTool/MIE.pm +3 -3
- package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/MISB.pm +1 -1
- package/bin/lib/Image/ExifTool/MNG.pm +1 -1
- package/bin/lib/Image/ExifTool/MOI.pm +1 -1
- package/bin/lib/Image/ExifTool/MPC.pm +1 -1
- package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- package/bin/lib/Image/ExifTool/MPF.pm +1 -1
- package/bin/lib/Image/ExifTool/MRC.pm +1 -1
- package/bin/lib/Image/ExifTool/MWG.pm +1 -1
- package/bin/lib/Image/ExifTool/MXF.pm +1 -1
- package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +166 -97
- package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
- package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +1 -1
- package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- package/bin/lib/Image/ExifTool/Opus.pm +1 -1
- package/bin/lib/Image/ExifTool/Other.pm +1 -1
- package/bin/lib/Image/ExifTool/PCX.pm +1 -1
- package/bin/lib/Image/ExifTool/PDF.pm +1 -1
- package/bin/lib/Image/ExifTool/PGF.pm +1 -1
- package/bin/lib/Image/ExifTool/PICT.pm +1 -1
- package/bin/lib/Image/ExifTool/PLIST.pm +1 -1
- package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/lib/Image/ExifTool/PNG.pm +24 -2
- package/bin/lib/Image/ExifTool/PPM.pm +1 -1
- package/bin/lib/Image/ExifTool/PSP.pm +1 -1
- package/bin/lib/Image/ExifTool/Palm.pm +1 -1
- package/bin/lib/Image/ExifTool/Panasonic.pm +27 -2
- package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- package/bin/lib/Image/ExifTool/Pentax.pm +46 -16
- package/bin/lib/Image/ExifTool/PhaseOne.pm +4 -4
- package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +50 -11
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +148 -12
- package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/lib/Image/ExifTool/RTF.pm +1 -1
- package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- package/bin/lib/Image/ExifTool/Real.pm +1 -1
- package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- package/bin/lib/Image/ExifTool/Red.pm +1 -1
- package/bin/lib/Image/ExifTool/Ricoh.pm +111 -3
- package/bin/lib/Image/ExifTool/Samsung.pm +4 -3
- package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- package/bin/lib/Image/ExifTool/Shift.pl +1 -1
- package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- package/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Sony.pm +85 -6
- package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- package/bin/lib/Image/ExifTool/Stim.pm +1 -1
- package/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- package/bin/lib/Image/ExifTool/TagLookup.pm +4878 -4830
- package/bin/lib/Image/ExifTool/TagNames.pod +11518 -11379
- package/bin/lib/Image/ExifTool/Text.pm +1 -1
- package/bin/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/lib/Image/ExifTool/VCard.pm +1 -1
- package/bin/lib/Image/ExifTool/Validate.pm +1 -1
- package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- package/bin/lib/Image/ExifTool/WPG.pm +1 -1
- package/bin/lib/Image/ExifTool/WTV.pm +1 -1
- package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteExif.pl +20 -5
- package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +4 -1
- package/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteXMP.pl +5 -3
- package/bin/lib/Image/ExifTool/Writer.pl +87 -15
- package/bin/lib/Image/ExifTool/XISF.pm +1 -1
- package/bin/lib/Image/ExifTool/XMP.pm +19 -3
- package/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- package/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- package/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/lib/Image/ExifTool.pm +35 -8
- package/bin/lib/Image/ExifTool.pod +29 -16
- package/bin/perl-Image-ExifTool.spec +9 -9
- package/bin/pp_build_exe.args +6 -5
- package/package.json +4 -5
|
@@ -83,7 +83,8 @@ my %processByMetaFormat = (
|
|
|
83
83
|
|
|
84
84
|
# data lengths for each INSV/INSP record type
|
|
85
85
|
my %insvDataLen = (
|
|
86
|
-
|
|
86
|
+
0x000 => 0, # directory table (any size)
|
|
87
|
+
0x200 => 0, # PreviewImage (any size) (a duplicate of PreviewImage in APP2 of INSP files)
|
|
87
88
|
0x300 => 0, # accelerometer (could be either 20 or 56 bytes)
|
|
88
89
|
0x400 => 16, # exposure (ref 6)
|
|
89
90
|
0x600 => 8, # timestamps (ref 6)
|
|
@@ -91,6 +92,8 @@ my %insvDataLen = (
|
|
|
91
92
|
# 0x900 => 48, # ? (Insta360 X3)
|
|
92
93
|
# 0xa00 => 5?, # ? (Insta360 ONE RS)
|
|
93
94
|
# 0xb00 => 10, # ? (Insta360 X3)
|
|
95
|
+
# 0xd00 => 10, # ? (Insta360 Ace Pro)
|
|
96
|
+
# 0x1200 ? # ? (Insta360 Ace Pro)
|
|
94
97
|
);
|
|
95
98
|
|
|
96
99
|
# limit the default amount of data we read for some record types
|
|
@@ -106,11 +109,13 @@ my %insvLimit = (
|
|
|
106
109
|
The tags below are extracted from timed metadata in QuickTime and other
|
|
107
110
|
formats of video files when the ExtractEmbedded option is used. Although
|
|
108
111
|
most of these tags are combined into the single table below, ExifTool
|
|
109
|
-
currently reads
|
|
112
|
+
currently reads 68 different formats of timed GPS metadata from video files.
|
|
110
113
|
},
|
|
111
114
|
VARS => { NO_ID => 1 },
|
|
112
115
|
GPSLatitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', RawConv => '$$self{FoundGPSLatitude} = 1; $val' },
|
|
113
116
|
GPSLongitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")' },
|
|
117
|
+
GPSLatitude2 => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")' },
|
|
118
|
+
GPSLongitude2=> { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")' },
|
|
114
119
|
GPSAltitude => { PrintConv => '(sprintf("%.4f", $val) + 0) . " m"' }, # round to 4 decimals
|
|
115
120
|
GPSSpeed => { PrintConv => 'sprintf("%.4f", $val) + 0', Notes => 'in km/h unless GPSSpeedRef says otherwise' },
|
|
116
121
|
GPSSpeedRef => { PrintConv => { K => 'km/h', M => 'mph', N => 'knots' } },
|
|
@@ -122,6 +127,11 @@ my %insvLimit = (
|
|
|
122
127
|
RawConv => '$$self{FoundGPSDateTime} = 1; $val',
|
|
123
128
|
PrintConv => '$self->ConvertDateTime($val)',
|
|
124
129
|
},
|
|
130
|
+
DateTimeOriginal => {
|
|
131
|
+
Groups => { 2 => 'Time' },
|
|
132
|
+
Description => 'Date/Time Original',
|
|
133
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
|
134
|
+
},
|
|
125
135
|
GPSTimeStamp => { PrintConv => 'Image::ExifTool::GPS::PrintTimeStamp($val)', Groups => { 2 => 'Time' } },
|
|
126
136
|
GPSSatellites=> { },
|
|
127
137
|
GPSDOP => { Description => 'GPS Dilution Of Precision' },
|
|
@@ -2043,7 +2053,7 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
|
2043
2053
|
return 1;
|
|
2044
2054
|
|
|
2045
2055
|
} elsif ($$dataPt =~ /^.{28}A.{11}([NS]).{15}([EW])/s) {
|
|
2046
|
-
|
|
2056
|
+
|
|
2047
2057
|
$debug and $et->FoundTag(GPSType => '2G');
|
|
2048
2058
|
# Vantrue N4 dashcam
|
|
2049
2059
|
# 0000: 00 00 40 00 66 72 65 65 47 50 53 20 f0 03 00 00 [..@.freeGPS ....]
|
|
@@ -2423,6 +2433,83 @@ sub Process_gsen($$$)
|
|
|
2423
2433
|
return 1;
|
|
2424
2434
|
}
|
|
2425
2435
|
|
|
2436
|
+
#------------------------------------------------------------------------------
|
|
2437
|
+
# Process LIGOGPS JSON-format GPS from Yada RoadCam Pro 4K BT58189
|
|
2438
|
+
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
|
2439
|
+
# Returns: 1 on success
|
|
2440
|
+
# Sample data (chained 512-byte records starting like this):
|
|
2441
|
+
# 0000: 4c 49 47 4f 47 50 53 49 4e 46 4f 20 7b 22 48 6f [LIGOGPSINFO {"Ho]
|
|
2442
|
+
# 0010: 75 72 22 3a 20 22 32 33 22 2c 20 22 4d 69 6e 75 [ur": "23", "Minu]
|
|
2443
|
+
# 0020: 74 65 22 3a 20 22 31 30 22 2c 20 22 53 65 63 6f [te": "10", "Seco]
|
|
2444
|
+
# 0030: 6e 64 22 3a 20 22 32 32 22 2c 20 22 59 65 61 72 [nd": "22", "Year]
|
|
2445
|
+
# 0040: 22 3a 20 22 32 30 32 33 22 2c 20 22 4d 6f 6e 74 [": "2023", "Mont]
|
|
2446
|
+
# 0050: 68 22 3a 20 22 31 32 22 2c 20 22 44 61 79 22 3a [h": "12", "Day":]
|
|
2447
|
+
# 0060: 20 22 32 38 22 2c 20 22 73 74 61 74 75 73 22 3a [ "28", "status":]
|
|
2448
|
+
sub ProcessLIGO_JSON($$$)
|
|
2449
|
+
{
|
|
2450
|
+
my ($et, $dirInfo, $tagTbl) = @_;
|
|
2451
|
+
my $dataPt = $$dirInfo{DataPt};
|
|
2452
|
+
my $dirLen = $$dirInfo{DirLen};
|
|
2453
|
+
require Image::ExifTool::Import;
|
|
2454
|
+
$et->VerboseDir('LIGO_JSON', undef, length($$dataPt));
|
|
2455
|
+
while ($$dataPt =~ /LIGOGPSINFO (\{.*?\})/g) {
|
|
2456
|
+
my $json = $1;
|
|
2457
|
+
my $raf = new File::RandomAccess(\$json);
|
|
2458
|
+
my %dbase;
|
|
2459
|
+
Image::ExifTool::Import::ReadJSON($raf, \%dbase);
|
|
2460
|
+
my $info = $dbase{'*'} or next;
|
|
2461
|
+
# my sample contains the following JSON fields (in this order):
|
|
2462
|
+
# Hour Minute Second Year Month Day (GPS UTC time)
|
|
2463
|
+
# status NS EW Latitude Longitude Speed (speed in knots)
|
|
2464
|
+
# GsensorX GsensorY GsensorZ (units? - only seen "000" for all)
|
|
2465
|
+
# MHour MMinute MSecond MYear MMonth MDay (local dashcam clock time)
|
|
2466
|
+
# OLatitude OLongitude (? same values as Latitude/Longitude)
|
|
2467
|
+
next unless defined $$info{status} and $$info{status} eq 'A'; # only read if GPS is active
|
|
2468
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
|
2469
|
+
my $num = 0;
|
|
2470
|
+
defined $$info{$_} and ++$num foreach qw(Year Month Day Hour Minute Second);
|
|
2471
|
+
if ($num == 6) {
|
|
2472
|
+
# this is the GPS time in UTC
|
|
2473
|
+
my $time = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2dZ',@$info{qw{Year Month Day Hour Minute Second}});
|
|
2474
|
+
$et->HandleTag($tagTbl, GPSDateTime => $time);
|
|
2475
|
+
}
|
|
2476
|
+
if ($$info{Latitude} and $$info{Longitude}) {
|
|
2477
|
+
my $lat = $$info{Latitude};
|
|
2478
|
+
$lat = -$lat if $$info{NS} and $$info{NS} eq 'S';
|
|
2479
|
+
my $lon = $$info{Longitude};
|
|
2480
|
+
$lon = -$lon if $$info{EW} and $$info{EW} eq 'W';
|
|
2481
|
+
$et->HandleTag($tagTbl, GPSLatitude => $lat);
|
|
2482
|
+
$et->HandleTag($tagTbl, GPSLongitude => $lon);
|
|
2483
|
+
}
|
|
2484
|
+
$et->HandleTag($tagTbl, GPSSpeed => $$info{Speed} * $knotsToKph) if defined $$info{Speed};
|
|
2485
|
+
if (defined $$info{GsensorX} and defined $$info{GsensorY} and defined $$info{GsensorZ}) {
|
|
2486
|
+
# (don't know conversion factor for accel data, so leave it raw for now)
|
|
2487
|
+
$et->HandleTag($tagTbl, Accelerometer => "$$info{GsensorX} $$info{GsensorY} $$info{GsensorZ}");
|
|
2488
|
+
}
|
|
2489
|
+
$num = 0;
|
|
2490
|
+
defined $$info{$_} and ++$num foreach qw(MYear MMonth MDay MHour MMinute MSecond);
|
|
2491
|
+
if ($num == 6) {
|
|
2492
|
+
# this is the dashcam clock time (local time zone)
|
|
2493
|
+
my $time = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2d',@$info{qw{MYear MMonth MDay MHour MMinute MSecond}});
|
|
2494
|
+
$et->HandleTag($tagTbl, DateTimeOriginal => $time);
|
|
2495
|
+
}
|
|
2496
|
+
if (defined $$info{OLatitude} and defined $$info{OLongitude}) {
|
|
2497
|
+
my $lat = $$info{OLatitude};
|
|
2498
|
+
$lat = -$lat if $$info{NS} and $$info{NS} eq 'S';
|
|
2499
|
+
my $lon = $$info{OLongitude};
|
|
2500
|
+
$lon = -$lon if $$info{EW} and $$info{EW} eq 'W';
|
|
2501
|
+
$et->HandleTag($tagTbl, GPSLatitude2 => $lat);
|
|
2502
|
+
$et->HandleTag($tagTbl, GPSLongitude2 => $lon);
|
|
2503
|
+
}
|
|
2504
|
+
unless ($et->Options('ExtractEmbedded')) {
|
|
2505
|
+
$et->WarnOnce('Use the ExtractEmbedded option to extract all timed GPS',3);
|
|
2506
|
+
last;
|
|
2507
|
+
}
|
|
2508
|
+
}
|
|
2509
|
+
delete $$et{DOC_NUM};
|
|
2510
|
+
return 1;
|
|
2511
|
+
}
|
|
2512
|
+
|
|
2426
2513
|
#------------------------------------------------------------------------------
|
|
2427
2514
|
# Process Kenwood drv-a301w dashcam 'udta' atom (ref PH)
|
|
2428
2515
|
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
|
@@ -2461,6 +2548,10 @@ sub ProcessKenwood($$$)
|
|
|
2461
2548
|
push @acc, $1/1000, $2/1000, $3/1000;
|
|
2462
2549
|
}
|
|
2463
2550
|
$et->HandleTag($tagTbl, Accelerometer => "@acc") if @acc;
|
|
2551
|
+
unless ($et->Options('ExtractEmbedded')) {
|
|
2552
|
+
$et->WarnOnce('Use the ExtractEmbedded option to extract all timed GPS',3);
|
|
2553
|
+
last;
|
|
2554
|
+
}
|
|
2464
2555
|
}
|
|
2465
2556
|
delete $$et{DOC_NUM};
|
|
2466
2557
|
return 1;
|
|
@@ -2778,7 +2869,7 @@ sub ProcessInsta360($;$)
|
|
|
2778
2869
|
my ($et, $dirInfo) = @_;
|
|
2779
2870
|
my $raf = $$et{RAF};
|
|
2780
2871
|
my $offset = $dirInfo ? $$dirInfo{Offset} || 0 : 0;
|
|
2781
|
-
my $buff;
|
|
2872
|
+
my ($buff, $dirTable, $dirTablePos);
|
|
2782
2873
|
|
|
2783
2874
|
return 0 unless $raf->Seek(-78-$offset, 2) and $raf->Read($buff, 78) == 78 and
|
|
2784
2875
|
substr($buff,-32) eq "8db42d694ccc418790edff439fe026bf"; # check magic number
|
|
@@ -2868,7 +2959,19 @@ sub ProcessInsta360($;$)
|
|
|
2868
2959
|
if ($len % $dlen and $id != 0x700) { # (have seen one 0x700 record which was expected format but not multiple of 53 bytes)
|
|
2869
2960
|
$et->Warn(sprintf('Unexpected Insta360 record 0x%x length',$id));
|
|
2870
2961
|
} elsif ($id == 0x200) {
|
|
2871
|
-
|
|
2962
|
+
# there are 4 types of record 0x200
|
|
2963
|
+
# 1. JPEG preview (starts with ff d8 ff e1)
|
|
2964
|
+
# 2. TIFF preview (starts with 01 00 00 00, then record length)
|
|
2965
|
+
# 3. Unknown 1 (starts with 00 00 00 01)
|
|
2966
|
+
# 4. Unknown 2 (starts with 00 00 01 34)
|
|
2967
|
+
if ($buff =~ /^\xff\xd8\xff/) {
|
|
2968
|
+
$et->FoundTag(PreviewImage => $buff);
|
|
2969
|
+
} elsif ($buff =~ /^\x01\0\0\0(.{4})\x01/s and unpack('V',$1) == $dlen) {
|
|
2970
|
+
my ($w, $h) = unpack('x16V2',$buff);
|
|
2971
|
+
# build the TIFF image (could the 1 at byte 9 be the SamplesPerPixel?)
|
|
2972
|
+
my $hdr = Image::ExifTool::MakeTiffHeader($w, $h, 1, 8);
|
|
2973
|
+
$et->FoundTag(PreviewTIFF => $hdr . substr($buff, 40));
|
|
2974
|
+
}
|
|
2872
2975
|
} elsif ($id == 0x300) {
|
|
2873
2976
|
for ($p=0; $p<$len; $p+=$dlen) {
|
|
2874
2977
|
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
|
@@ -2899,7 +3002,7 @@ sub ProcessInsta360($;$)
|
|
|
2899
3002
|
my $tmp = substr($buff, $p, $dlen);
|
|
2900
3003
|
my @a = unpack('VVvaa8aa8aa8a8a8', $tmp);
|
|
2901
3004
|
unless (($a[5] eq 'N' or $a[5] eq 'S') and # (quick validation)
|
|
2902
|
-
($a[7] eq 'E' or $a[7] eq 'W' or
|
|
3005
|
+
($a[7] eq 'E' or $a[7] eq 'W' or
|
|
2903
3006
|
# (odd, but I've seen "O" instead of "W". Perhaps
|
|
2904
3007
|
# when the language is french? ie. "Ouest"?)
|
|
2905
3008
|
$a[7] eq 'O'))
|
|
@@ -2913,13 +3016,15 @@ sub ProcessInsta360($;$)
|
|
|
2913
3016
|
$a[$_] = GetDouble(\$a[$_], 0) foreach 4,6,8,9,10;
|
|
2914
3017
|
$a[4] = -abs($a[4]) if $a[5] eq 'S'; # (abs just in case it was already signed)
|
|
2915
3018
|
$a[6] = -abs($a[6]) if $a[7] ne 'E';
|
|
2916
|
-
|
|
3019
|
+
my $ms = '';
|
|
3020
|
+
$a[2] and ($ms = sprintf('.%.3d', $a[2])) =~ s/0+$//;
|
|
3021
|
+
$et->HandleTag($tagTbl, GPSDateTime => Image::ExifTool::ConvertUnixTime($a[0]) . $ms . 'Z');
|
|
2917
3022
|
$et->HandleTag($tagTbl, GPSLatitude => $a[4]);
|
|
2918
3023
|
$et->HandleTag($tagTbl, GPSLongitude => $a[6]);
|
|
2919
3024
|
$et->HandleTag($tagTbl, GPSSpeed => $a[8] * $mpsToKph);
|
|
2920
3025
|
$et->HandleTag($tagTbl, GPSTrack => $a[9]);
|
|
2921
3026
|
$et->HandleTag($tagTbl, GPSAltitude => $a[10]);
|
|
2922
|
-
$et->HandleTag($tagTbl, Unknown02 =>
|
|
3027
|
+
$et->HandleTag($tagTbl, Unknown02 => $a[1]) if $unknown;
|
|
2923
3028
|
}
|
|
2924
3029
|
}
|
|
2925
3030
|
} elsif ($id == 0x101) {
|
|
@@ -2932,10 +3037,41 @@ sub ProcessInsta360($;$)
|
|
|
2932
3037
|
$et->HandleTag($tagTablePtr, $t, $val);
|
|
2933
3038
|
$p += 2 + $n;
|
|
2934
3039
|
}
|
|
3040
|
+
} elsif ($id == 0x0) {
|
|
3041
|
+
last if not $len;
|
|
3042
|
+
# example directory table for record locations from Insta360AcePro MP4 video:
|
|
3043
|
+
# vv vv - record ID
|
|
3044
|
+
# vv vv vv vv - record size
|
|
3045
|
+
# vv vv vv vv - offset from start of footer
|
|
3046
|
+
# 00 00 00 00 00 00 00 00 00 00
|
|
3047
|
+
# 01 01 82 04 00 00 1b 45 62 00
|
|
3048
|
+
# 02 00 28 46 05 00 ed fe 5c 00
|
|
3049
|
+
# 03 00 40 aa 24 00 ed fe 34 00
|
|
3050
|
+
# 04 00 00 c1 01 00 ed fe 30 00
|
|
3051
|
+
# [...]
|
|
3052
|
+
unless ($dirTable) {
|
|
3053
|
+
$dirTable = $buff;
|
|
3054
|
+
$dirTablePos = 0;
|
|
3055
|
+
}
|
|
2935
3056
|
}
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
3057
|
+
# step through directory table instead of sequential scanning if possible
|
|
3058
|
+
if ($dirTable) {
|
|
3059
|
+
undef $epos;
|
|
3060
|
+
for (;;) {
|
|
3061
|
+
last if $dirTablePos + 10 > length($dirTable);
|
|
3062
|
+
my ($id, $siz, $off) = unpack("x${dirTablePos}vVV", $dirTable);
|
|
3063
|
+
$dirTablePos += 10;
|
|
3064
|
+
if ($id and $siz and $off + $siz < $trailerLen) {
|
|
3065
|
+
$epos = $off + $siz - $trailerLen;
|
|
3066
|
+
last;
|
|
3067
|
+
}
|
|
3068
|
+
}
|
|
3069
|
+
last unless defined $epos;
|
|
3070
|
+
} else {
|
|
3071
|
+
($epos -= 6) + $trailerLen < 0 and last; # step back to previous record
|
|
3072
|
+
}
|
|
3073
|
+
$raf->Seek($epos, 2) or last; # seek to start of next footer
|
|
3074
|
+
$raf->Read($buff, 6) == 6 or last; # read footer
|
|
2939
3075
|
}
|
|
2940
3076
|
$$et{DOC_NUM} = 0;
|
|
2941
3077
|
SetByteOrder('MM');
|
|
@@ -3173,7 +3309,7 @@ information like GPS tracks from MOV, MP4 and INSV media data.
|
|
|
3173
3309
|
|
|
3174
3310
|
=head1 AUTHOR
|
|
3175
3311
|
|
|
3176
|
-
Copyright 2003-
|
|
3312
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
|
3177
3313
|
|
|
3178
3314
|
This library is free software; you can redistribute it and/or modify it
|
|
3179
3315
|
under the same terms as Perl itself.
|
|
@@ -2199,7 +2199,7 @@ including AVI videos, WAV audio files and WEBP images.
|
|
|
2199
2199
|
|
|
2200
2200
|
=head1 AUTHOR
|
|
2201
2201
|
|
|
2202
|
-
Copyright 2003-
|
|
2202
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
|
2203
2203
|
|
|
2204
2204
|
This library is free software; you can redistribute it and/or modify it
|
|
2205
2205
|
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-2024, 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-2024, 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-2024, 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-2024, 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-2024, 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-2024, 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-2024, 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.
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
# 2) http://homepage3.nifty.com/kamisaka/makernote/makernote_ricoh.htm
|
|
10
10
|
# 3) Tim Gray private communication (GR)
|
|
11
11
|
# 4) https://github.com/atotto/ricoh-theta-tools/
|
|
12
|
+
# 5) https://github.com/ricohapi/theta-api-specs/blob/main/theta-metadata/README.md
|
|
12
13
|
# IB) Iliah Borg private communication (LibRaw)
|
|
13
14
|
#------------------------------------------------------------------------------
|
|
14
15
|
|
|
@@ -18,11 +19,13 @@ use strict;
|
|
|
18
19
|
use vars qw($VERSION);
|
|
19
20
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
20
21
|
use Image::ExifTool::Exif;
|
|
22
|
+
use Image::ExifTool::GPS;
|
|
21
23
|
|
|
22
|
-
$VERSION = '1.
|
|
24
|
+
$VERSION = '1.38';
|
|
23
25
|
|
|
24
26
|
sub ProcessRicohText($$$);
|
|
25
27
|
sub ProcessRicohRMETA($$$);
|
|
28
|
+
sub ProcessRicohRDT($$$);
|
|
26
29
|
|
|
27
30
|
# lens types for Ricoh GXR
|
|
28
31
|
my %ricohLensIDs = (
|
|
@@ -908,6 +911,65 @@ my %ricohLensIDs = (
|
|
|
908
911
|
},
|
|
909
912
|
);
|
|
910
913
|
|
|
914
|
+
# real-time metadata in RDTA atom (ref 5)
|
|
915
|
+
%Image::ExifTool::Ricoh::RDTA = (
|
|
916
|
+
PROCESS_PROC => \&ProcessRicohRDT,
|
|
917
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Location' },
|
|
918
|
+
0 => { Name => 'Accelerometer', Format => 'float[3]' },
|
|
919
|
+
16 => { Name => 'TimeStamp', Format => 'int64u', ValueConv => '$val * 1e-9' },
|
|
920
|
+
);
|
|
921
|
+
|
|
922
|
+
# real-time metadata in RDTB atom (ref 5)
|
|
923
|
+
%Image::ExifTool::Ricoh::RDTB = (
|
|
924
|
+
PROCESS_PROC => \&ProcessRicohRDT,
|
|
925
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Location' },
|
|
926
|
+
0 => { Name => 'Gyroscope', Format => 'float[3]', Notes => 'rad/s' },
|
|
927
|
+
16 => { Name => 'TimeStamp', Format => 'int64u', ValueConv => '$val * 1e-9' },
|
|
928
|
+
);
|
|
929
|
+
|
|
930
|
+
# real-time metadata in RDTC atom (ref 5)
|
|
931
|
+
%Image::ExifTool::Ricoh::RDTC = (
|
|
932
|
+
PROCESS_PROC => \&ProcessRicohRDT,
|
|
933
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Location' },
|
|
934
|
+
0 => { Name => 'MagneticField', Format => 'float[3]' },
|
|
935
|
+
16 => { Name => 'TimeStamp', Format => 'int64u', ValueConv => '$val * 1e-9' },
|
|
936
|
+
);
|
|
937
|
+
|
|
938
|
+
# real-time metadata in RDTG atom (ref 5)
|
|
939
|
+
%Image::ExifTool::Ricoh::RDTG = (
|
|
940
|
+
PROCESS_PROC => \&ProcessRicohRDT,
|
|
941
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Video' },
|
|
942
|
+
0 => { Name => 'TimeStamp', Format => 'int64u', ValueConv => '$val * 1e-9' },
|
|
943
|
+
100 => { Name => 'FrameNumber', Notes => 'generated internally' },
|
|
944
|
+
);
|
|
945
|
+
|
|
946
|
+
# real-time metadata in RDTL atom (ref 5)
|
|
947
|
+
%Image::ExifTool::Ricoh::RDTL = (
|
|
948
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Location' },
|
|
949
|
+
0 => {
|
|
950
|
+
Name => 'GPSDateTime',
|
|
951
|
+
Groups => { 2 => 'Time' },
|
|
952
|
+
Format => 'double',
|
|
953
|
+
ValueConv => 'ConvertUnixTime($val*1e-9, 1, 9)', # (NC -- what is the epoch?)
|
|
954
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
|
955
|
+
},
|
|
956
|
+
8 => {
|
|
957
|
+
Name => 'GPSLatitude',
|
|
958
|
+
Format => 'double',
|
|
959
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1)',
|
|
960
|
+
},
|
|
961
|
+
16 => {
|
|
962
|
+
Name => 'GPSLongitude',
|
|
963
|
+
Format => 'double',
|
|
964
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1)',
|
|
965
|
+
},
|
|
966
|
+
24 => {
|
|
967
|
+
Name => 'GPSAltitude',
|
|
968
|
+
Format => 'double',
|
|
969
|
+
PrintConv => '($val =~ s/^-// ? "$val m Below" : "$val m Above") . " Sea Level"',
|
|
970
|
+
},
|
|
971
|
+
);
|
|
972
|
+
|
|
911
973
|
# Ricoh composite tags
|
|
912
974
|
%Image::ExifTool::Ricoh::Composite = (
|
|
913
975
|
GROUPS => { 2 => 'Camera' },
|
|
@@ -932,6 +994,52 @@ my %ricohLensIDs = (
|
|
|
932
994
|
Image::ExifTool::AddCompositeTags('Image::ExifTool::Ricoh');
|
|
933
995
|
|
|
934
996
|
|
|
997
|
+
#------------------------------------------------------------------------------
|
|
998
|
+
# Process Ricoh RDT* real-time metadata
|
|
999
|
+
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
|
1000
|
+
# Returns: 1 on success, otherwise returns 0 and sets a Warning
|
|
1001
|
+
sub ProcessRicohRDT($$$)
|
|
1002
|
+
{
|
|
1003
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
|
1004
|
+
my $dataPt = $$dirInfo{DataPt};
|
|
1005
|
+
my $dirLen = $$dirInfo{DirLen};
|
|
1006
|
+
my $dirName = $$dirInfo{DirName};
|
|
1007
|
+
my ($i, $rdtg);
|
|
1008
|
+
return 0 if $dirLen < 16;
|
|
1009
|
+
my $ee = $et->Options('ExtractEmbedded');
|
|
1010
|
+
unless ($ee) {
|
|
1011
|
+
$et->WarnOnce('Use ExtractEmbedded option to read Ricoh real-time metadata',3);
|
|
1012
|
+
return 1;
|
|
1013
|
+
}
|
|
1014
|
+
my $endian = substr($$dataPt, 8, 2);
|
|
1015
|
+
SetByteOrder($endian eq "\x23\x01" ? 'II' : 'MM');
|
|
1016
|
+
my $count = Get32u($dataPt, 0);
|
|
1017
|
+
my $len = Get16u($dataPt, 6);
|
|
1018
|
+
if ($dirName eq 'RicohRDTG') {
|
|
1019
|
+
if ($ee < 2) {
|
|
1020
|
+
$et->WarnOnce('Set ExtractEmbedded option to 2 or higher to extract frame timestamps',3);
|
|
1021
|
+
return 1;
|
|
1022
|
+
}
|
|
1023
|
+
$rdtg = 0;
|
|
1024
|
+
$et->WarnOnce('Unexpected RDTG record length') if $len > 8;
|
|
1025
|
+
}
|
|
1026
|
+
if ($count * $len + 16 > $dirLen) {
|
|
1027
|
+
$et->Warn("Truncated $dirName data");
|
|
1028
|
+
$count = int(($dirLen - 16) / $len);
|
|
1029
|
+
}
|
|
1030
|
+
$et->VerboseDir($dirName);
|
|
1031
|
+
$$dirInfo{DirStart} = 16;
|
|
1032
|
+
$$dirInfo{DirLen} = $len;
|
|
1033
|
+
for ($i=0; $i<$count; ++$i) {;
|
|
1034
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
|
1035
|
+
$et->HandleTag($tagTablePtr, 100, $rdtg++) if defined $rdtg;
|
|
1036
|
+
$et->ProcessBinaryData($dirInfo, $tagTablePtr);
|
|
1037
|
+
$$dirInfo{DirStart} += $len;
|
|
1038
|
+
}
|
|
1039
|
+
delete $$et{DOC_NUM};
|
|
1040
|
+
return 1;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
935
1043
|
#------------------------------------------------------------------------------
|
|
936
1044
|
# Process Ricoh text-based maker notes
|
|
937
1045
|
# Inputs: 0) ExifTool object reference
|
|
@@ -970,7 +1078,7 @@ sub ProcessRicohText($$$)
|
|
|
970
1078
|
$tagInfo = {
|
|
971
1079
|
Name => "Ricoh_Text_$tag",
|
|
972
1080
|
Unknown => 1,
|
|
973
|
-
PrintConv =>
|
|
1081
|
+
PrintConv => \&Image::ExifTool::LimitLongValues,
|
|
974
1082
|
};
|
|
975
1083
|
# add tag information to table
|
|
976
1084
|
AddTagToTable($tagTablePtr, $tag, $tagInfo);
|
|
@@ -1144,7 +1252,7 @@ interpret Ricoh maker notes EXIF meta information.
|
|
|
1144
1252
|
|
|
1145
1253
|
=head1 AUTHOR
|
|
1146
1254
|
|
|
1147
|
-
Copyright 2003-
|
|
1255
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
|
1148
1256
|
|
|
1149
1257
|
This library is free software; you can redistribute it and/or modify it
|
|
1150
1258
|
under the same terms as Perl itself.
|
|
@@ -22,7 +22,7 @@ use vars qw($VERSION %samsungLensTypes);
|
|
|
22
22
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
23
23
|
use Image::ExifTool::Exif;
|
|
24
24
|
|
|
25
|
-
$VERSION = '1.
|
|
25
|
+
$VERSION = '1.55';
|
|
26
26
|
|
|
27
27
|
sub WriteSTMN($$$);
|
|
28
28
|
sub ProcessINFO($$$);
|
|
@@ -904,9 +904,10 @@ my %formatMinMax = (
|
|
|
904
904
|
Name => 'SamsungSvss',
|
|
905
905
|
SubDirectory => { TagTable => 'Image::ExifTool::Samsung::svss' },
|
|
906
906
|
},
|
|
907
|
+
mdln => 'SamsungModel', #PH (Samsung SM-A136U, etc)
|
|
907
908
|
# swtr - 4 bytes, all zero
|
|
908
909
|
# scid - 8 bytes, all zero
|
|
909
|
-
# saut - 4 bytes, all zero
|
|
910
|
+
# saut - 4 or 6 bytes, all zero
|
|
910
911
|
);
|
|
911
912
|
|
|
912
913
|
# Samsung MP4 svss information (PH - from SM-C101 sample)
|
|
@@ -1722,7 +1723,7 @@ Samsung maker notes in EXIF information.
|
|
|
1722
1723
|
|
|
1723
1724
|
=head1 AUTHOR
|
|
1724
1725
|
|
|
1725
|
-
Copyright 2003-
|
|
1726
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
|
1726
1727
|
|
|
1727
1728
|
This library is free software; you can redistribute it and/or modify it
|
|
1728
1729
|
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-2024, 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-2024, 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.
|
|
@@ -632,7 +632,7 @@ limited to the range 1970 to 2038 on 32-bit systems.
|
|
|
632
632
|
|
|
633
633
|
=head1 AUTHOR
|
|
634
634
|
|
|
635
|
-
Copyright 2003-
|
|
635
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
|
636
636
|
|
|
637
637
|
This library is free software; you can redistribute it and/or modify it
|
|
638
638
|
under the same terms as Perl itself.
|
|
@@ -344,7 +344,7 @@ name prefix.
|
|
|
344
344
|
|
|
345
345
|
=head1 AUTHOR
|
|
346
346
|
|
|
347
|
-
Copyright 2003-
|
|
347
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
|
348
348
|
|
|
349
349
|
This library is free software; you can redistribute it and/or modify it
|
|
350
350
|
under the same terms as Perl itself.
|
|
@@ -864,7 +864,7 @@ Sigma and Foveon maker notes in EXIF information.
|
|
|
864
864
|
|
|
865
865
|
=head1 AUTHOR
|
|
866
866
|
|
|
867
|
-
Copyright 2003-
|
|
867
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
|
868
868
|
|
|
869
869
|
This library is free software; you can redistribute it and/or modify it
|
|
870
870
|
under the same terms as Perl itself.
|
|
@@ -680,7 +680,7 @@ Sigma and Foveon X3F images.
|
|
|
680
680
|
|
|
681
681
|
=head1 AUTHOR
|
|
682
682
|
|
|
683
|
-
Copyright 2003-
|
|
683
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
|
684
684
|
|
|
685
685
|
This library is free software; you can redistribute it and/or modify it
|
|
686
686
|
under the same terms as Perl itself.
|