exiftool-vendored.pl 13.0.0 → 13.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.
- package/bin/Changes +254 -20
- package/bin/MANIFEST +10 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +3 -3
- package/bin/arg_files/exif2xmp.args +4 -0
- package/bin/arg_files/xmp2exif.args +2 -1
- package/bin/build_geolocation +1 -1
- package/bin/exiftool +356 -213
- package/bin/lib/File/RandomAccess.pm +1 -1
- package/bin/lib/File/RandomAccess.pod +2 -2
- package/bin/lib/Image/ExifTool/AAC.pm +1 -1
- package/bin/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/lib/Image/ExifTool/AFCP.pm +6 -6
- package/bin/lib/Image/ExifTool/AIFF.pm +2 -2
- package/bin/lib/Image/ExifTool/APE.pm +2 -2
- package/bin/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/lib/Image/ExifTool/ASF.pm +2 -2
- package/bin/lib/Image/ExifTool/Apple.pm +11 -9
- 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 +36 -22
- package/bin/lib/Image/ExifTool/CBOR.pm +5 -2
- package/bin/lib/Image/ExifTool/Canon.pm +66 -27
- 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 +196 -30
- 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 +138 -33
- package/bin/lib/Image/ExifTool/Exif.pm +29 -16
- package/bin/lib/Image/ExifTool/FITS.pm +3 -3
- package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIF.pm +3 -3
- 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 +17 -21
- package/bin/lib/Image/ExifTool/Font.pm +2 -2
- package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
- package/bin/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/lib/Image/ExifTool/GIF.pm +144 -93
- package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/lib/Image/ExifTool/GM.pm +1 -1
- package/bin/lib/Image/ExifTool/GPS.pm +34 -30
- package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/lib/Image/ExifTool/Geolocation.pm +19 -9
- package/bin/lib/Image/ExifTool/Geotag.pm +46 -12
- package/bin/lib/Image/ExifTool/GoPro.pm +120 -8
- package/bin/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/lib/Image/ExifTool/HP.pm +2 -2
- 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 +81 -2
- package/bin/lib/Image/ExifTool/ICO.pm +1 -1
- package/bin/lib/Image/ExifTool/ID3.pm +8 -8
- package/bin/lib/Image/ExifTool/IPTC.pm +10 -7
- 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 +5 -4
- package/bin/lib/Image/ExifTool/InDesign.pm +2 -2
- package/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
- package/bin/lib/Image/ExifTool/JPEG.pm +32 -5
- package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/lib/Image/ExifTool/JSON.pm +1 -1
- package/bin/lib/Image/ExifTool/JVC.pm +1 -1
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +10 -9
- 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 +2 -2
- 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 +1 -1
- package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- 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 +1 -1
- package/bin/lib/Image/ExifTool/LigoGPS.pm +409 -0
- package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/lib/Image/ExifTool/M2TS.pm +57 -18
- package/bin/lib/Image/ExifTool/MIE.pm +15 -6
- 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 +3 -3
- package/bin/lib/Image/ExifTool/MacOS.pm +3 -2
- package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/lib/Image/ExifTool/Matroska.pm +22 -6
- package/bin/lib/Image/ExifTool/Microsoft.pm +2 -2
- 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 +495 -39
- package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/lib/Image/ExifTool/NikonCustom.pm +2 -2
- 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 +8 -8
- 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 +49 -18
- 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 +4 -4
- package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/lib/Image/ExifTool/PNG.pm +20 -8
- package/bin/lib/Image/ExifTool/PPM.pm +12 -3
- 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 -3
- 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 +1 -1
- 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 +65 -4
- package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/lib/Image/ExifTool/Protobuf.pm +270 -0
- package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +326 -88
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +199 -195
- package/bin/lib/Image/ExifTool/README +12 -2
- package/bin/lib/Image/ExifTool/RIFF.pm +21 -6
- package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/lib/Image/ExifTool/RTF.pm +2 -2
- 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 +4 -4
- package/bin/lib/Image/ExifTool/Samsung.pm +2 -2
- 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 +5 -4
- 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 +6 -5
- package/bin/lib/Image/ExifTool/TagLookup.pm +7023 -6968
- package/bin/lib/Image/ExifTool/TagNames.pod +445 -29
- package/bin/lib/Image/ExifTool/Text.pm +4 -3
- package/bin/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/lib/Image/ExifTool/Torrent.pm +3 -3
- package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/lib/Image/ExifTool/VCard.pm +3 -3
- package/bin/lib/Image/ExifTool/Validate.pm +6 -6
- package/bin/lib/Image/ExifTool/Vivo.pm +124 -0
- 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 +3 -3
- 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 +166 -79
- package/bin/lib/Image/ExifTool/WriteRIFF.pl +17 -6
- package/bin/lib/Image/ExifTool/WriteXMP.pl +3 -3
- package/bin/lib/Image/ExifTool/Writer.pl +89 -96
- package/bin/lib/Image/ExifTool/XISF.pm +1 -1
- package/bin/lib/Image/ExifTool/XMP.pm +28 -13
- package/bin/lib/Image/ExifTool/XMP2.pl +103 -1
- package/bin/lib/Image/ExifTool/XMPStruct.pl +2 -3
- package/bin/lib/Image/ExifTool/ZIP.pm +2 -2
- package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/lib/Image/ExifTool.pm +335 -163
- package/bin/lib/Image/ExifTool.pod +119 -73
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/windows_exiftool.txt +96 -51
- package/package.json +9 -9
|
@@ -32,7 +32,7 @@ use strict;
|
|
|
32
32
|
use vars qw($VERSION);
|
|
33
33
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
34
34
|
|
|
35
|
-
$VERSION = '1.
|
|
35
|
+
$VERSION = '1.29';
|
|
36
36
|
|
|
37
37
|
# program map table "stream_type" lookup (ref 6/1/9)
|
|
38
38
|
my %streamType = (
|
|
@@ -305,6 +305,15 @@ sub ParsePID($$$$$)
|
|
|
305
305
|
# MPEG-1/MPEG-2 Audio
|
|
306
306
|
require Image::ExifTool::MPEG;
|
|
307
307
|
Image::ExifTool::MPEG::ParseMPEGAudio($et, $dataPt);
|
|
308
|
+
} elsif ($type == 6 and $pid == 0x0300) {
|
|
309
|
+
# LIGOGPSINFO from unknown dashcam (../testpics/gps_video/Wrong Way pass.ts)
|
|
310
|
+
if ($$dataPt =~ /^LIGOGPSINFO/s) {
|
|
311
|
+
my $tbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
|
312
|
+
my %dirInfo = ( DataPt => $dataPt, DirName => 'Ligo0x0300' );
|
|
313
|
+
Image::ExifTool::LigoGPS::ProcessLigoGPS($et, \%dirInfo, $tbl, 1);
|
|
314
|
+
$$et{FoundGoodGPS} = 1;
|
|
315
|
+
$more = 1;
|
|
316
|
+
}
|
|
308
317
|
} elsif ($type == 0x1b) {
|
|
309
318
|
# H.264 Video
|
|
310
319
|
require Image::ExifTool::H264;
|
|
@@ -313,7 +322,7 @@ sub ParsePID($$$$$)
|
|
|
313
322
|
if ($$et{OPTIONS}{ExtractEmbedded}) {
|
|
314
323
|
$more = 1;
|
|
315
324
|
} elsif (not $$et{OPTIONS}{Validate}) {
|
|
316
|
-
$et->
|
|
325
|
+
$et->Warn('The ExtractEmbedded option may find more tags in the video data',3);
|
|
317
326
|
}
|
|
318
327
|
} elsif ($type == 0x81 or $type == 0x87 or $type == 0x91) {
|
|
319
328
|
# AC-3 audio
|
|
@@ -428,13 +437,16 @@ sub ParsePID($$$$$)
|
|
|
428
437
|
$more = 1;
|
|
429
438
|
} elsif ($$dataPt =~ /\$GPRMC,/) {
|
|
430
439
|
# Jomise T860S-GM dashcam
|
|
431
|
-
# $GPRMC,hhmmss.ss,A,ddmm.mmmmm,N,dddmm.mmmmm,W,spd-kts,dir-dg,DDMMYY
|
|
432
|
-
# $GPRMC,172255.00,A,:985.95194,N,17170.14674,W,029.678,170.68,240822,,,D*7B
|
|
433
|
-
# $GPRMC,
|
|
434
|
-
#
|
|
435
|
-
#
|
|
436
|
-
#
|
|
437
|
-
#
|
|
440
|
+
# $GPRMC,hhmmss.ss,A,ddmm.mmmmm,N,dddmm.mmmmm,W,spd-kts,dir-dg,DDMMYY,,M*cs - lat,lon,spd from video
|
|
441
|
+
# $GPRMC,172255.00,A,:985.95194,N,17170.14674,W,029.678,170.68,240822,,,D*7B - N47.70428,W122.15338,35mph
|
|
442
|
+
# $GPRMC,192643.00,A,:987.94979,N,17171.07268,W,010.059,079.61,111122,,,A*73 - N47.71862,W122.16437,12mph
|
|
443
|
+
# $GPRMC,192743.00,A,:988.72110,N,17171.04873,W,017.477,001.03,111122,,,A*78 - N47.72421,W122.16408,20mph
|
|
444
|
+
# $GPRMC,192844.00,A,:989.43771,N,17171.03538,W,016.889,001.20,111122,,,A*7B - N47.72932,W122.16393,19mph
|
|
445
|
+
# $GPRMC,005241.00,A,:987.70873,N,17171.81293,W,000.284,354.78,141122,,,A*7F - N47.71687,W122.17318,0mph
|
|
446
|
+
# $GPRMC,005341.00,A,:987.90851,N,17171.85380,W,000.080,349.36,141122,,,A*7C - N47.71832,W122.17367,0mph
|
|
447
|
+
# $GPRMC,005441.00,A,:987.94538,N,17171.21783,W,029.686,091.09,141122,,,A*7A - N47.71859,W122.16630,35mph
|
|
448
|
+
# $GPRMC,002816.00,A,6820.67273,N,13424.26599,W,000.045,000.00,261122,,,A*79 - N29.52096,W95.55953,0mph (seattle)
|
|
449
|
+
# $GPRMC,035136.00,A,:981.47322,N,17170.14105,W,024.594,180.50,291122,,,D*79 - N47.67180,W122.15328,28mph
|
|
438
450
|
my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
|
439
451
|
while ($$dataPt =~ /\$[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(.{2})(\d{2}\.\d+),([NS]),(.{3})(\d{2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/g and
|
|
440
452
|
# do some basic sanity checks on the date
|
|
@@ -459,15 +471,20 @@ sub ParsePID($$$$$)
|
|
|
459
471
|
$bad = 1 if $_ < 0x30 or $_ > 0x39;
|
|
460
472
|
}
|
|
461
473
|
if ($bad) {
|
|
462
|
-
$et->
|
|
474
|
+
$et->Warn('Error decrypting GPS degrees');
|
|
463
475
|
} else {
|
|
464
476
|
my $la = pack('C*', @chars[0,1]);
|
|
465
477
|
my $lo = pack('C*', @chars[2,3,4]);
|
|
466
|
-
$et->
|
|
478
|
+
$et->Warn('Decryption of this GPS is highly experimental. More testing samples are required');
|
|
467
479
|
$et->HandleTag($tagTbl, GPSLatitude => (($la || 0) + (($6-85.95194)/2.43051724137931+42.2568)/60) * ($7 eq 'N' ? 1 : -1));
|
|
468
480
|
$et->HandleTag($tagTbl, GPSLongitude => (($lo || 0) + (($9-70.14674)/1.460987654320988+9.2028)/60) * ($10 eq 'E' ? 1 : -1));
|
|
469
481
|
}
|
|
470
482
|
}
|
|
483
|
+
} elsif ($$dataPt =~ /\$GSENSORD,\s*(\d+),\s*(\d+),\s*(\d+),/) {
|
|
484
|
+
# Jomise T860S-GM dashcam
|
|
485
|
+
my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
|
486
|
+
$$et{DOC_NUM} = $$et{DOC_COUNT};
|
|
487
|
+
$et->HandleTag($tagTbl, Accelerometer => "$1 $2 $3"); # (NC - values range from 0 to 6)
|
|
471
488
|
} elsif ($$dataPt =~ /^.{44}A\0{3}.{4}([NS])\0{3}.{4}([EW])\0{3}/s and length($$dataPt) >= 84) {
|
|
472
489
|
#forum11320
|
|
473
490
|
SetByteOrder('II');
|
|
@@ -476,7 +493,7 @@ sub ParsePID($$$$$)
|
|
|
476
493
|
my $lon = abs(GetFloat($dataPt, 56)); # (abs just to be safe)
|
|
477
494
|
my $spd = GetFloat($dataPt, 64);
|
|
478
495
|
my $trk = GetFloat($dataPt, 68);
|
|
479
|
-
$et->
|
|
496
|
+
$et->Warn('GPSLatitude/Longitude encryption is not yet known, so these will be wrong');
|
|
480
497
|
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
|
481
498
|
my @date = unpack('x32V3x28V3', $$dataPt);
|
|
482
499
|
$date[3] += 2000;
|
|
@@ -514,9 +531,16 @@ sub ParsePID($$$$$)
|
|
|
514
531
|
$et->HandleTag($tagTbl, GPSTrack => $a[2] / 100);
|
|
515
532
|
}
|
|
516
533
|
# Note: 10 bytes after last GPS record look like a single 3-axis accelerometer reading:
|
|
517
|
-
# eg. fd ff 00 00 ff ff 00 00 01 00
|
|
534
|
+
# eg. fd ff 00 00 ff ff 00 00 01 00
|
|
518
535
|
$$et{FoundGoodGPS} = 1; # so we skip over unrecognized packets
|
|
519
536
|
$more = 1;
|
|
537
|
+
} elsif ($$dataPt =~ /^skip.{4}LIGOGPSINFO\0/s) {
|
|
538
|
+
# (this record contains 2 copies of the same 'skip' atom in my sample --
|
|
539
|
+
# only extract data from the first one)
|
|
540
|
+
my $tbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
|
541
|
+
my %dirInfo = ( DataPt => $dataPt, DirStart => 8, DirName => sprintf('Ligo0x%.4x',$pid));
|
|
542
|
+
Image::ExifTool::LigoGPS::ProcessLigoGPS($et, \%dirInfo, $tbl, 1);
|
|
543
|
+
$$et{FoundGoodGPS} = 1;
|
|
520
544
|
} elsif ($$et{FoundGoodGPS}) {
|
|
521
545
|
$more = 1;
|
|
522
546
|
}
|
|
@@ -576,7 +600,8 @@ sub ProcessM2TS($$)
|
|
|
576
600
|
my %gpsPID = (
|
|
577
601
|
0x0300 => 1, # Novatek INNOVV, DOD_LS600W
|
|
578
602
|
0x01e4 => 1, # vsys a6l dashcam
|
|
579
|
-
0x0e1b => 1, # Jomise T860S-GM dashcam
|
|
603
|
+
0x0e1b => 1, # Jomise T860S-GM dashcam GPS
|
|
604
|
+
0x0e1a => 1, # Jomise T860S-GM dashcam accelerometer
|
|
580
605
|
);
|
|
581
606
|
my $pEnd = 0;
|
|
582
607
|
|
|
@@ -694,7 +719,7 @@ sub ProcessM2TS($$)
|
|
|
694
719
|
# or if we are just looking for the last timestamp
|
|
695
720
|
next unless $payload_data_exists and not defined $backScan;
|
|
696
721
|
|
|
697
|
-
|
|
722
|
+
# decode payload data
|
|
698
723
|
if ($pid == 0 or # program association table
|
|
699
724
|
defined $pmt{$pid}) # program map table(s)
|
|
700
725
|
{
|
|
@@ -787,7 +812,7 @@ sub ProcessM2TS($$)
|
|
|
787
812
|
last if $j + $descriptor_length > $program_info_length;
|
|
788
813
|
my $desc = substr($buf2, $pos+$j, $descriptor_length);
|
|
789
814
|
$j += $descriptor_length;
|
|
790
|
-
$desc =~ s/([\x00-\x1f\
|
|
815
|
+
$desc =~ s/([\x00-\x1f\x7f-\xff])/sprintf("\\x%.2x",ord $1)/eg;
|
|
791
816
|
printf $out " Program Descriptor: Type=0x%.2x \"$desc\"\n", $descriptor_tag;
|
|
792
817
|
}}
|
|
793
818
|
$pos += $program_info_length; # skip descriptors (for now)
|
|
@@ -822,7 +847,7 @@ sub ProcessM2TS($$)
|
|
|
822
847
|
$j += $descriptor_length;
|
|
823
848
|
if ($verbose > 1) {
|
|
824
849
|
my $dstr = $desc;
|
|
825
|
-
$dstr =~ s/([\x00-\x1f\
|
|
850
|
+
$dstr =~ s/([\x00-\x1f\x7f-\xff])/sprintf("\\x%.2x",ord $1)/eg;
|
|
826
851
|
printf $out " ES Descriptor: Type=0x%.2x \"$dstr\"\n", $descriptor_tag;
|
|
827
852
|
}
|
|
828
853
|
# parse type-specific descriptor information (once)
|
|
@@ -954,6 +979,20 @@ sub ProcessM2TS($$)
|
|
|
954
979
|
ParsePID($et, $pid, $pidType{$pid}, $pidName{$pid}, \$data{$pid});
|
|
955
980
|
delete $data{$pid};
|
|
956
981
|
}
|
|
982
|
+
|
|
983
|
+
# look for LIGOGPSINFO trailer
|
|
984
|
+
if ($et->Options('ExtractEmbedded') and
|
|
985
|
+
$raf->Seek(-8, 2) and $raf->Read($buff, 8) == 8 and
|
|
986
|
+
$buff =~ /^&&&&/)
|
|
987
|
+
{
|
|
988
|
+
my $len = unpack('x4N', $buff);
|
|
989
|
+
if ($len < $raf->Tell() and $raf->Seek(-$len, 2) and $raf->Read($buff,$len) == $len) {
|
|
990
|
+
my $tbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
|
991
|
+
my %dirInfo = ( DataPt => \$buff, DirStart => 8, DirName => 'LigoTrailer' );
|
|
992
|
+
Image::ExifTool::LigoGPS::ProcessLigoGPS($et, \%dirInfo, $tbl);
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
|
|
957
996
|
return 1;
|
|
958
997
|
}
|
|
959
998
|
|
|
@@ -977,7 +1016,7 @@ video.
|
|
|
977
1016
|
|
|
978
1017
|
=head1 AUTHOR
|
|
979
1018
|
|
|
980
|
-
Copyright 2003-
|
|
1019
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
981
1020
|
|
|
982
1021
|
This library is free software; you can redistribute it and/or modify it
|
|
983
1022
|
under the same terms as Perl itself.
|
|
@@ -14,7 +14,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
14
14
|
use Image::ExifTool::Exif;
|
|
15
15
|
use Image::ExifTool::GPS;
|
|
16
16
|
|
|
17
|
-
$VERSION = '1.
|
|
17
|
+
$VERSION = '1.56';
|
|
18
18
|
|
|
19
19
|
sub ProcessMIE($$);
|
|
20
20
|
sub ProcessMIEGroup($$$);
|
|
@@ -1376,8 +1376,9 @@ sub WriteMIEGroup($$$)
|
|
|
1376
1376
|
my $term = "~\0\0\0";
|
|
1377
1377
|
unless ($$dirInfo{Parent}) {
|
|
1378
1378
|
# write extended terminator for file-level group
|
|
1379
|
-
my $len = ref $outfile eq 'SCALAR' ? length($$outfile) : tell $outfile;
|
|
1380
|
-
|
|
1379
|
+
my $len = ref $outfile eq 'SCALAR' ? length($$outfile) || 0 : tell $outfile;
|
|
1380
|
+
# include length of terminator itself minus original $outfile position
|
|
1381
|
+
$len += 10 - ($$dirInfo{OutPos} || 0);
|
|
1381
1382
|
if ($len and $len <= 0x7fffffff) {
|
|
1382
1383
|
$term = "~\0\0\x06" . Set32u($len) . MIEGroupFormat(1) . "\x04";
|
|
1383
1384
|
}
|
|
@@ -1596,9 +1597,10 @@ sub ProcessMIEGroup($$$)
|
|
|
1596
1597
|
} else {
|
|
1597
1598
|
# process MIE data format types
|
|
1598
1599
|
if ($tagInfo) {
|
|
1599
|
-
my $rational;
|
|
1600
|
+
my ($rational, $binVal);
|
|
1600
1601
|
# extract tag value
|
|
1601
1602
|
my $val = ReadMIEValue(\$value, 0, $formatStr, undef, $valLen, \$rational);
|
|
1603
|
+
$binVal = substr($value, 0, $valLen) if $$et{OPTIONS}{SaveBin};
|
|
1602
1604
|
unless (defined $val) {
|
|
1603
1605
|
$et->Warn("Error reading $tag value");
|
|
1604
1606
|
$val = '<err>';
|
|
@@ -1661,7 +1663,12 @@ sub ProcessMIEGroup($$$)
|
|
|
1661
1663
|
$val .= "($units)" if defined $units;
|
|
1662
1664
|
}
|
|
1663
1665
|
my $key = $et->FoundTag($tagInfo, $val);
|
|
1664
|
-
|
|
1666
|
+
if (defined $key) {
|
|
1667
|
+
my $ex = $$et{TAG_EXTRA}{$key};
|
|
1668
|
+
$$ex{Rational} = $rational if defined $rational;
|
|
1669
|
+
$$ex{BinVal} = $binVal if defined $binVal;
|
|
1670
|
+
$$ex{G6} = $formatStr if $$et{OPTIONS}{SaveFormat};
|
|
1671
|
+
}
|
|
1665
1672
|
}
|
|
1666
1673
|
} else {
|
|
1667
1674
|
# skip over unknown information or free bytes
|
|
@@ -1796,6 +1803,8 @@ sub ProcessMIE($$)
|
|
|
1796
1803
|
# don't define Parent so WriteMIEGroup() writes extended terminator
|
|
1797
1804
|
);
|
|
1798
1805
|
if ($outfile) {
|
|
1806
|
+
# save start position in $outfile
|
|
1807
|
+
$subdirInfo{OutPos} = ref $outfile eq 'SCALAR' ? length($$outfile) || 0 : tell $outfile;
|
|
1799
1808
|
# generate lookup for MIE format codes if not done already
|
|
1800
1809
|
unless (%mieCode) {
|
|
1801
1810
|
foreach (keys %mieFormat) {
|
|
@@ -2551,7 +2560,7 @@ tag name. For example:
|
|
|
2551
2560
|
|
|
2552
2561
|
=head1 AUTHOR
|
|
2553
2562
|
|
|
2554
|
-
Copyright 2003-
|
|
2563
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2555
2564
|
|
|
2556
2565
|
This library is free software; you can redistribute it and/or modify it
|
|
2557
2566
|
under the same terms as Perl itself. The MIE format itself is also
|
|
@@ -356,7 +356,7 @@ A few examples of combined units strings:
|
|
|
356
356
|
|
|
357
357
|
=head1 AUTHOR
|
|
358
358
|
|
|
359
|
-
Copyright 2003-
|
|
359
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
360
360
|
|
|
361
361
|
This library is free software; you can redistribute it and/or modify it
|
|
362
362
|
under the same terms as Perl itself.
|
|
@@ -255,7 +255,7 @@ This module contains routines required by Image::ExifTool to read MIFF
|
|
|
255
255
|
|
|
256
256
|
=head1 AUTHOR
|
|
257
257
|
|
|
258
|
-
Copyright 2003-
|
|
258
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
259
259
|
|
|
260
260
|
This library is free software; you can redistribute it and/or modify it
|
|
261
261
|
under the same terms as Perl itself.
|
|
@@ -468,7 +468,7 @@ Board (MISB) KLV-format metadata from M2TS videos.
|
|
|
468
468
|
|
|
469
469
|
=head1 AUTHOR
|
|
470
470
|
|
|
471
|
-
Copyright 2003-
|
|
471
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
472
472
|
|
|
473
473
|
This library is free software; you can redistribute it and/or modify it
|
|
474
474
|
under the same terms as Perl itself.
|
|
@@ -661,7 +661,7 @@ This module contains definitions required by Image::ExifTool to read MNG
|
|
|
661
661
|
|
|
662
662
|
=head1 AUTHOR
|
|
663
663
|
|
|
664
|
-
Copyright 2003-
|
|
664
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
665
665
|
|
|
666
666
|
This library is free software; you can redistribute it and/or modify it
|
|
667
667
|
under the same terms as Perl itself.
|
|
@@ -137,7 +137,7 @@ information from MOI files.
|
|
|
137
137
|
|
|
138
138
|
=head1 AUTHOR
|
|
139
139
|
|
|
140
|
-
Copyright 2003-
|
|
140
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
141
141
|
|
|
142
142
|
This library is free software; you can redistribute it and/or modify it
|
|
143
143
|
under the same terms as Perl itself.
|
|
@@ -134,7 +134,7 @@ information from Musepack (MPC) audio files.
|
|
|
134
134
|
|
|
135
135
|
=head1 AUTHOR
|
|
136
136
|
|
|
137
|
-
Copyright 2003-
|
|
137
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
138
138
|
|
|
139
139
|
This library is free software; you can redistribute it and/or modify it
|
|
140
140
|
under the same terms as Perl itself.
|
|
@@ -704,7 +704,7 @@ based on unofficial sources which may be incomplete, inaccurate or outdated.
|
|
|
704
704
|
|
|
705
705
|
=head1 AUTHOR
|
|
706
706
|
|
|
707
|
-
Copyright 2003-
|
|
707
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
708
708
|
|
|
709
709
|
This library is free software; you can redistribute it and/or modify it
|
|
710
710
|
under the same terms as Perl itself.
|
|
@@ -267,7 +267,7 @@ Format (MPF) information from JPEG images.
|
|
|
267
267
|
|
|
268
268
|
=head1 AUTHOR
|
|
269
269
|
|
|
270
|
-
Copyright 2003-
|
|
270
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
271
271
|
|
|
272
272
|
This library is free software; you can redistribute it and/or modify it
|
|
273
273
|
under the same terms as Perl itself.
|
|
@@ -315,7 +315,7 @@ metadata from Medical Research Council (MRC) images.
|
|
|
315
315
|
|
|
316
316
|
=head1 AUTHOR
|
|
317
317
|
|
|
318
|
-
Copyright 2003-
|
|
318
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
319
319
|
|
|
320
320
|
This library is free software; you can redistribute it and/or modify it
|
|
321
321
|
under the same terms as Perl itself.
|
|
@@ -757,7 +757,7 @@ must be loaded explicitly as described above.
|
|
|
757
757
|
|
|
758
758
|
=head1 AUTHOR
|
|
759
759
|
|
|
760
|
-
Copyright 2003-
|
|
760
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
761
761
|
|
|
762
762
|
This library is free software; you can redistribute it and/or modify it
|
|
763
763
|
under the same terms as Perl itself.
|
|
@@ -2525,7 +2525,7 @@ sub ReadMXFValue($$$)
|
|
|
2525
2525
|
} elsif ($type =~ /(Array|Batch)/ and $len > 16) {
|
|
2526
2526
|
my ($count, $size) = unpack('NN', $val);
|
|
2527
2527
|
# validate data length
|
|
2528
|
-
$len == 8 + $count * $size or $et->
|
|
2528
|
+
$len == 8 + $count * $size or $et->Warn("Bad array or batch size");
|
|
2529
2529
|
my ($i, @a);
|
|
2530
2530
|
for ($i=0; $i<$count; ++$i) {
|
|
2531
2531
|
my $pos = 8 + $i * $size;
|
|
@@ -2626,7 +2626,7 @@ sub ProcessLocalSet($$$)
|
|
|
2626
2626
|
$extra = sprintf(', Local 0x%.4x', $loc);
|
|
2627
2627
|
} else {
|
|
2628
2628
|
$tag = $loc;
|
|
2629
|
-
# $et->
|
|
2629
|
+
# $et->Warn('Missing local key for at least one tag');
|
|
2630
2630
|
$extra = ', NOT IN PRIMER!';
|
|
2631
2631
|
}
|
|
2632
2632
|
my $tagInfo = $$tagTablePtr{$tag};
|
|
@@ -2987,7 +2987,7 @@ information from MXF (Material Exchange Format) files.
|
|
|
2987
2987
|
|
|
2988
2988
|
=head1 AUTHOR
|
|
2989
2989
|
|
|
2990
|
-
Copyright 2003-
|
|
2990
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2991
2991
|
|
|
2992
2992
|
This library is free software; you can redistribute it and/or modify it
|
|
2993
2993
|
under the same terms as Perl itself.
|
|
@@ -12,7 +12,7 @@ use strict;
|
|
|
12
12
|
use vars qw($VERSION);
|
|
13
13
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
14
14
|
|
|
15
|
-
$VERSION = '1.
|
|
15
|
+
$VERSION = '1.14';
|
|
16
16
|
|
|
17
17
|
sub MDItemLocalTime($);
|
|
18
18
|
sub ProcessATTR($$$);
|
|
@@ -394,6 +394,7 @@ sub SetMacOSTags($$$)
|
|
|
394
394
|
if ($val =~ /[-+Z]/) {
|
|
395
395
|
my $time = Image::ExifTool::GetUnixTime($val, 1);
|
|
396
396
|
$val = Image::ExifTool::ConvertUnixTime($time, 1) if $time;
|
|
397
|
+
$val =~ s/[-+].*//; # remove time zone
|
|
397
398
|
}
|
|
398
399
|
$val =~ s{(\d{4}):(\d{2}):(\d{2})}{$2/$3/$1}; # reformat for setfile
|
|
399
400
|
$cmd = "/usr/bin/setfile -d '${val}' '${f}'";
|
|
@@ -736,7 +737,7 @@ Writable tags use "xattr", "setfile" or "osascript" for writing.
|
|
|
736
737
|
|
|
737
738
|
=head1 AUTHOR
|
|
738
739
|
|
|
739
|
-
Copyright 2003-
|
|
740
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
740
741
|
|
|
741
742
|
This library is free software; you can redistribute it and/or modify it
|
|
742
743
|
under the same terms as Perl itself.
|
|
@@ -1831,7 +1831,7 @@ maker notes in EXIF information.
|
|
|
1831
1831
|
|
|
1832
1832
|
=head1 AUTHOR
|
|
1833
1833
|
|
|
1834
|
-
Copyright 2003-
|
|
1834
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1835
1835
|
|
|
1836
1836
|
This library is free software; you can redistribute it and/or modify it
|
|
1837
1837
|
under the same terms as Perl itself.
|
|
@@ -15,7 +15,7 @@ use strict;
|
|
|
15
15
|
use vars qw($VERSION);
|
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
17
17
|
|
|
18
|
-
$VERSION = '1.
|
|
18
|
+
$VERSION = '1.18';
|
|
19
19
|
|
|
20
20
|
sub HandleStruct($$;$$$$);
|
|
21
21
|
|
|
@@ -685,6 +685,14 @@ my %uidInfo = (
|
|
|
685
685
|
Name => 'Projection',
|
|
686
686
|
SubDirectory => { TagTable => 'Image::ExifTool::Matroska::Projection' },
|
|
687
687
|
},
|
|
688
|
+
#
|
|
689
|
+
# other
|
|
690
|
+
#
|
|
691
|
+
0x5345414c => { # ('SEAL' in hex)
|
|
692
|
+
Name => 'SEAL',
|
|
693
|
+
NotEBML => 1, # don't process SubDirectory as EBML elements
|
|
694
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
|
|
695
|
+
},
|
|
688
696
|
);
|
|
689
697
|
|
|
690
698
|
# Spherical video v2 projection tags (ref https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md)
|
|
@@ -744,7 +752,11 @@ my %uidInfo = (
|
|
|
744
752
|
SUBTITLE => 'Subtitle',
|
|
745
753
|
URL => 'URL', # nested
|
|
746
754
|
SORT_WITH => 'SortWith', # nested
|
|
747
|
-
INSTRUMENTS =>
|
|
755
|
+
INSTRUMENTS => { # nested
|
|
756
|
+
Name => 'Instruments',
|
|
757
|
+
IsList => 1,
|
|
758
|
+
ValueConv => 'my @a = split /,\s?/, $val; \@a',
|
|
759
|
+
},
|
|
748
760
|
EMAIL => 'Email', # nested
|
|
749
761
|
ADDRESS => 'Address', # nested
|
|
750
762
|
FAX => 'FAX', # nested
|
|
@@ -788,7 +800,11 @@ my %uidInfo = (
|
|
|
788
800
|
CONTENT_TYPE => 'ContentType',
|
|
789
801
|
SUBJECT => 'Subject',
|
|
790
802
|
DESCRIPTION => 'Description',
|
|
791
|
-
KEYWORDS =>
|
|
803
|
+
KEYWORDS => {
|
|
804
|
+
Name => 'Keywords',
|
|
805
|
+
IsList => 1,
|
|
806
|
+
ValueConv => 'my @a = split /,\s?/, $val; \@a',
|
|
807
|
+
},
|
|
792
808
|
SUMMARY => 'Summary',
|
|
793
809
|
SYNOPSIS => 'Synopsis',
|
|
794
810
|
INITIAL_KEY => 'InitialKey',
|
|
@@ -1047,7 +1063,7 @@ sub ProcessMKV($$)
|
|
|
1047
1063
|
$seekInfoOnly = 1;
|
|
1048
1064
|
}
|
|
1049
1065
|
if ($tagInfo) {
|
|
1050
|
-
if ($$tagInfo{SubDirectory}) {
|
|
1066
|
+
if ($$tagInfo{SubDirectory} and not $$tagInfo{NotEBML}) {
|
|
1051
1067
|
# stop processing at first cluster unless we are using -v -U or -ee
|
|
1052
1068
|
# or there are Tags after this
|
|
1053
1069
|
if ($$tagInfo{Name} eq 'Cluster' and $processAll < 2) {
|
|
@@ -1089,7 +1105,7 @@ sub ProcessMKV($$)
|
|
|
1089
1105
|
if ($more >= 0x80000000) {
|
|
1090
1106
|
last unless $et->Options('LargeFileSupport');
|
|
1091
1107
|
if ($et->Options('LargeFileSupport') eq '2') {
|
|
1092
|
-
$et->
|
|
1108
|
+
$et->Warn('Processing large block (LargeFileSupport is 2)');
|
|
1093
1109
|
}
|
|
1094
1110
|
}
|
|
1095
1111
|
$raf->Seek($more, 1) or last;
|
|
@@ -1211,7 +1227,7 @@ information from Matroska multimedia files (MKA, MKV, MKS and WEBM).
|
|
|
1211
1227
|
|
|
1212
1228
|
=head1 AUTHOR
|
|
1213
1229
|
|
|
1214
|
-
Copyright 2003-
|
|
1230
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1215
1231
|
|
|
1216
1232
|
This library is free software; you can redistribute it and/or modify it
|
|
1217
1233
|
under the same terms as Perl itself.
|
|
@@ -907,7 +907,7 @@ sub WriteXtraValue($$$)
|
|
|
907
907
|
$type = 72;
|
|
908
908
|
}
|
|
909
909
|
} else {
|
|
910
|
-
$et->
|
|
910
|
+
$et->Warn("Error converting value for Microsoft:$$tagInfo{Name}");
|
|
911
911
|
}
|
|
912
912
|
SetByteOrder('MM');
|
|
913
913
|
if (defined $type) {
|
|
@@ -1100,7 +1100,7 @@ Xtra tags in videos.
|
|
|
1100
1100
|
|
|
1101
1101
|
=head1 AUTHOR
|
|
1102
1102
|
|
|
1103
|
-
Copyright 2003-
|
|
1103
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1104
1104
|
|
|
1105
1105
|
This library is free software; you can redistribute it and/or modify it
|
|
1106
1106
|
under the same terms as Perl itself.
|
|
@@ -2927,7 +2927,7 @@ and write Minolta RAW (MRW) images.
|
|
|
2927
2927
|
|
|
2928
2928
|
=head1 AUTHOR
|
|
2929
2929
|
|
|
2930
|
-
Copyright 2003-
|
|
2930
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2931
2931
|
|
|
2932
2932
|
This library is free software; you can redistribute it and/or modify it
|
|
2933
2933
|
under the same terms as Perl itself.
|
|
@@ -513,7 +513,7 @@ write Konica-Minolta RAW (MRW) images.
|
|
|
513
513
|
|
|
514
514
|
=head1 AUTHOR
|
|
515
515
|
|
|
516
|
-
Copyright 2003-
|
|
516
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
517
517
|
|
|
518
518
|
This library is free software; you can redistribute it and/or modify it
|
|
519
519
|
under the same terms as Perl itself.
|
|
@@ -165,7 +165,7 @@ cell phone images.
|
|
|
165
165
|
|
|
166
166
|
=head1 AUTHOR
|
|
167
167
|
|
|
168
|
-
Copyright 2003-
|
|
168
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
169
169
|
|
|
170
170
|
This library is free software; you can redistribute it and/or modify it
|
|
171
171
|
under the same terms as Perl itself.
|