exiftool-vendored.exe 12.99.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/exiftool.exe +0 -0
- package/bin/exiftool_files/exiftool.pl +183 -70
- package/bin/exiftool_files/lib/File/RandomAccess.pm +1 -1
- package/bin/exiftool_files/lib/File/RandomAccess.pod +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/AAC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +11 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +36 -22
- package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +5 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +66 -27
- package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +196 -30
- package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +138 -33
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +30 -17
- package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +17 -21
- package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +144 -93
- package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +34 -30
- package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +19 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +49 -14
- package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +120 -8
- package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +81 -2
- package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +8 -8
- package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +10 -7
- package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +5 -4
- package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/InfiRay.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +32 -5
- package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +10 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/sk.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/LigoGPS.pm +409 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +58 -19
- package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +15 -6
- package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +22 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +495 -39
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +8 -8
- package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +49 -18
- package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +20 -8
- package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +12 -3
- package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +27 -3
- package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +6 -5
- package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +65 -4
- package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Protobuf.pm +270 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +326 -88
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +266 -200
- package/bin/exiftool_files/lib/Image/ExifTool/README +12 -2
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +21 -6
- package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +5 -4
- package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +6 -5
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +7025 -6967
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +477 -46
- package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +4 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Vivo.pm +124 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +166 -79
- package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +17 -6
- package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +89 -96
- package/bin/exiftool_files/lib/Image/ExifTool/XISF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +39 -14
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +103 -1
- package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +2 -3
- package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool.pm +338 -166
- package/bin/exiftool_files/lib/Image/ExifTool.pod +119 -73
- package/bin/exiftool_files/readme_windows.txt +8 -13
- package/bin/exiftool_files/windows_exiftool.txt +102 -53
- package/package.json +11 -11
|
@@ -57,7 +57,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
|
57
57
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
58
58
|
use Image::ExifTool::MakerNotes;
|
|
59
59
|
|
|
60
|
-
$VERSION = '4.
|
|
60
|
+
$VERSION = '4.56';
|
|
61
61
|
|
|
62
62
|
sub ProcessExif($$$);
|
|
63
63
|
sub WriteExif($$$);
|
|
@@ -246,10 +246,13 @@ $formatName[129] = 'utf8'; # (Exif 3.0)
|
|
|
246
246
|
# 34888,34889 - ESRI reserved
|
|
247
247
|
34892 => 'Lossy JPEG', # (DNG 1.4)
|
|
248
248
|
34925 => 'LZMA2', #LibTiff
|
|
249
|
-
34926 => 'Zstd', #LibTiff
|
|
250
|
-
34927 => 'WebP', #LibTiff
|
|
249
|
+
34926 => 'Zstd (old)', #LibTiff
|
|
250
|
+
34927 => 'WebP (old)', #LibTiff
|
|
251
251
|
34933 => 'PNG', # (TIFF mail list)
|
|
252
252
|
34934 => 'JPEG XR', # (TIFF mail list)
|
|
253
|
+
50000 => 'Zstd', #LibTiff 4.7
|
|
254
|
+
50001 => 'WebP', #LibTiff 4.7
|
|
255
|
+
50002 => 'JPEG XL (old)', #LibTiff 4.7
|
|
253
256
|
52546 => 'JPEG XL', # (DNG 1.7)
|
|
254
257
|
65000 => 'Kodak DCR Compressed', #PH
|
|
255
258
|
65535 => 'Pentax PEF Compressed', #Jens
|
|
@@ -2931,7 +2934,7 @@ my %opcodeInfo = (
|
|
|
2931
2934
|
0xa433 => { Name => 'LensMake', Writable => 'string' }, #24
|
|
2932
2935
|
0xa434 => { Name => 'LensModel', Writable => 'string' }, #24
|
|
2933
2936
|
0xa435 => { Name => 'LensSerialNumber', Writable => 'string' }, #24
|
|
2934
|
-
0xa436 => { Name => '
|
|
2937
|
+
0xa436 => { Name => 'ImageTitle', Writable => 'string' }, #33
|
|
2935
2938
|
0xa437 => { Name => 'Photographer', Writable => 'string' }, #33
|
|
2936
2939
|
0xa438 => { Name => 'ImageEditor', Writable => 'string' }, #33
|
|
2937
2940
|
0xa439 => { Name => 'CameraFirmware', Writable => 'string' }, #33
|
|
@@ -4421,6 +4424,13 @@ my %opcodeInfo = (
|
|
|
4421
4424
|
Writable => 'int32u',
|
|
4422
4425
|
WriteGroup => 'IFD0',
|
|
4423
4426
|
},
|
|
4427
|
+
0xcea1 => {
|
|
4428
|
+
Name => 'SEAL', # (writable directory!)
|
|
4429
|
+
Writable => 'string',
|
|
4430
|
+
WriteGroup => 'IFD0',
|
|
4431
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
|
|
4432
|
+
WriteCheck => 'return "Can only delete"', # (don't allow writing)
|
|
4433
|
+
},
|
|
4424
4434
|
0xea1c => { #13
|
|
4425
4435
|
Name => 'Padding',
|
|
4426
4436
|
Binary => 1,
|
|
@@ -5346,10 +5356,7 @@ sub CalcScaleFactor35efl
|
|
|
5346
5356
|
# calculate Canon sensor size using a dedicated algorithm
|
|
5347
5357
|
if ($$et{Make} eq 'Canon') {
|
|
5348
5358
|
require Image::ExifTool::Canon;
|
|
5349
|
-
my $canonDiag = Image::ExifTool::Canon::CalcSensorDiag(
|
|
5350
|
-
$$et{RATIONAL}{FocalPlaneXResolution},
|
|
5351
|
-
$$et{RATIONAL}{FocalPlaneYResolution},
|
|
5352
|
-
);
|
|
5359
|
+
my $canonDiag = Image::ExifTool::Canon::CalcSensorDiag($et);
|
|
5353
5360
|
$diag = $canonDiag if $canonDiag;
|
|
5354
5361
|
}
|
|
5355
5362
|
unless ($diag and Image::ExifTool::IsFloat($diag)) {
|
|
@@ -6171,7 +6178,7 @@ sub ProcessExif($$$)
|
|
|
6171
6178
|
my $base = $$dirInfo{Base} || 0;
|
|
6172
6179
|
my $firstBase = $base;
|
|
6173
6180
|
my $raf = $$dirInfo{RAF};
|
|
6174
|
-
my ($verbose,$validate,$saveFormat) = @{$$et{OPTIONS}}{qw(Verbose Validate SaveFormat)};
|
|
6181
|
+
my ($verbose,$validate,$saveFormat,$saveBin) = @{$$et{OPTIONS}}{qw(Verbose Validate SaveFormat SaveBin)};
|
|
6175
6182
|
my $htmlDump = $$et{HTML_DUMP};
|
|
6176
6183
|
my $success = 1;
|
|
6177
6184
|
my ($tagKey, $dirSize, $makerAddr, $strEnc, %offsetInfo, $offName, $nextOffName, $doHash);
|
|
@@ -6182,7 +6189,7 @@ sub ProcessExif($$$)
|
|
|
6182
6189
|
if ($$dirInfo{DirName} eq 'MakerNotes' and $$et{FileType} eq 'CR3' and
|
|
6183
6190
|
$$dirInfo{Parent} and $$dirInfo{Parent} eq 'ExifIFD')
|
|
6184
6191
|
{
|
|
6185
|
-
$et->
|
|
6192
|
+
$et->Warn("MakerNotes shouldn't exist ExifIFD of CR3 image", 1);
|
|
6186
6193
|
}
|
|
6187
6194
|
# set flag to calculate image data hash if requested
|
|
6188
6195
|
$doHash = 1 if $$et{ImageDataHash} and (($$et{FILE_TYPE} eq 'TIFF' and not $base and not $inMakerNotes) or
|
|
@@ -6361,7 +6368,7 @@ sub ProcessExif($$$)
|
|
|
6361
6368
|
my $valueDataLen = $dataLen;
|
|
6362
6369
|
my $valuePtr = $entry + 8; # pointer to value within $$dataPt
|
|
6363
6370
|
my $tagInfo = $et->GetTagInfo($tagTablePtr, $tagID);
|
|
6364
|
-
my ($origFormStr, $bad, $rational, $subOffName);
|
|
6371
|
+
my ($origFormStr, $bad, $rational, $binVal, $subOffName);
|
|
6365
6372
|
# save the EXIF format codes if requested
|
|
6366
6373
|
$$et{SaveFormat}{$saveFormat = $formatStr} = 1 if $saveFormat;
|
|
6367
6374
|
# hack to patch incorrect count in Kodak SubIFD3 tags
|
|
@@ -6652,12 +6659,13 @@ sub ProcessExif($$$)
|
|
|
6652
6659
|
if ($count > 500 and $formatStr !~ /^(undef|string|binary)$/ and
|
|
6653
6660
|
(not $tagInfo or $$tagInfo{LongBinary} or $warned) and not $$et{OPTIONS}{IgnoreMinorErrors})
|
|
6654
6661
|
{
|
|
6655
|
-
$et->
|
|
6662
|
+
$et->Warn('Not decoding some large array(s). Ignore minor errors to decode', 2) unless $warned;
|
|
6656
6663
|
next if $$et{TAGS_FROM_FILE}; # don't generate bogus value when copying tags
|
|
6657
6664
|
$val = "(large array of $count $formatStr values)";
|
|
6658
6665
|
} else {
|
|
6659
6666
|
# convert according to specified format
|
|
6660
6667
|
$val = ReadValue($valueDataPt,$valuePtr,$formatStr,$count,$readSize,\$rational);
|
|
6668
|
+
$binVal = substr($$valueDataPt,$valuePtr,$readSize) if $saveBin;
|
|
6661
6669
|
# re-code if necessary
|
|
6662
6670
|
if (defined $val) {
|
|
6663
6671
|
if ($formatStr eq 'utf8') {
|
|
@@ -6692,8 +6700,9 @@ sub ProcessExif($$$)
|
|
|
6692
6700
|
"Format: $fstr\nSize: $size bytes\n";
|
|
6693
6701
|
if ($size > 4) {
|
|
6694
6702
|
my $offPt = Get32u($dataPt,$entry+8);
|
|
6695
|
-
# (test this with ../pics/{CanonEOS-1D_XMarkIII.hif,PanasonicDC-G9.rw2})
|
|
6696
|
-
my $actPt = $valuePtr + $valueDataPos + $base - ($$et{EXIF_POS} || 0) +
|
|
6703
|
+
# (test this with ../pics/{CanonEOS-1D_XMarkIII.hif,PanasonicDC-G9.rw2,*.raf})
|
|
6704
|
+
my $actPt = $valuePtr + $valueDataPos + $base - ($$et{EXIF_POS} || 0) +
|
|
6705
|
+
($$et{BASE_FUDGE} || $$et{BASE} || 0);
|
|
6697
6706
|
$tip .= sprintf("Value offset: 0x%.4x\n", $offPt);
|
|
6698
6707
|
# highlight tag name (red for bad size)
|
|
6699
6708
|
my $style = ($bad or not defined $tval) ? 'V' : 'H';
|
|
@@ -6724,12 +6733,15 @@ sub ProcessExif($$$)
|
|
|
6724
6733
|
} elsif ($tagInfo and Image::ExifTool::IsInt($tval)) {
|
|
6725
6734
|
if ($$tagInfo{IsOffset} or $$tagInfo{SubIFD}) {
|
|
6726
6735
|
$tval = sprintf('0x%.4x', $tval);
|
|
6727
|
-
my $actPt = $val + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || 0);
|
|
6736
|
+
my $actPt = $val + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || $$et{BASE} || 0);
|
|
6728
6737
|
if ($actPt != $val) {
|
|
6729
6738
|
$tval .= sprintf("\nActual offset: 0x%.4x", $actPt);
|
|
6730
6739
|
my $sign = $actPt < $val ? '-' : '';
|
|
6731
6740
|
$tval .= sprintf("\nOffset base: ${sign}0x%.4x", abs($actPt - $val));
|
|
6732
6741
|
}
|
|
6742
|
+
if ($$et{EXIF_POS} and not $$et{BASE_FUDGE}) {
|
|
6743
|
+
$tip .= sprintf("File offset: 0x%.4x\n", $actPt + $$et{EXIF_POS})
|
|
6744
|
+
}
|
|
6733
6745
|
} elsif ($$tagInfo{PrintHex}) {
|
|
6734
6746
|
$tval = sprintf('0x%x', $tval);
|
|
6735
6747
|
}
|
|
@@ -7055,7 +7067,8 @@ sub ProcessExif($$$)
|
|
|
7055
7067
|
# set the group 1 name for tags in specified tables
|
|
7056
7068
|
$et->SetGroup($tagKey, $dirName) if $$tagTablePtr{SET_GROUP1};
|
|
7057
7069
|
# save original components of rational numbers (used when copying)
|
|
7058
|
-
$$et{
|
|
7070
|
+
$$et{TAG_EXTRA}{$tagKey}{Rational} = $rational if defined $rational;
|
|
7071
|
+
$$et{TAG_EXTRA}{$tagKey}{BinVal} = $binVal if defined $binVal;
|
|
7059
7072
|
$$et{TAG_EXTRA}{$tagKey}{G6} = $saveFormat if $saveFormat;
|
|
7060
7073
|
if ($$et{MAKER_NOTE_FIXUP}) {
|
|
7061
7074
|
$$et{TAG_EXTRA}{$tagKey}{Fixup} = $$et{MAKER_NOTE_FIXUP};
|
|
@@ -7130,7 +7143,7 @@ EXIF and TIFF meta information.
|
|
|
7130
7143
|
|
|
7131
7144
|
=head1 AUTHOR
|
|
7132
7145
|
|
|
7133
|
-
Copyright 2003-
|
|
7146
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
7134
7147
|
|
|
7135
7148
|
This library is free software; you can redistribute it and/or modify it
|
|
7136
7149
|
under the same terms as Perl itself.
|
|
@@ -61,7 +61,7 @@ sub ProcessFITS($$)
|
|
|
61
61
|
my $key = substr($buff, 0, 8);
|
|
62
62
|
$key =~ s/ +$//; # remove trailing space from key
|
|
63
63
|
if ($key eq 'CONTINUE') {
|
|
64
|
-
defined $continue or $et->
|
|
64
|
+
defined $continue or $et->Warn('Unexpected FITS CONTINUE keyword'), next;
|
|
65
65
|
} else {
|
|
66
66
|
if (defined $continue) {
|
|
67
67
|
# the previous value wasn't continued, so store with the trailing '&'
|
|
@@ -104,7 +104,7 @@ sub ProcessFITS($$)
|
|
|
104
104
|
# check for possible continuation, removing trailing '&'
|
|
105
105
|
$val =~ s/\&$// and $continue = $val, next;
|
|
106
106
|
} elsif (defined $continue) {
|
|
107
|
-
$et->
|
|
107
|
+
$et->Warn('Invalid FITS CONTINUE value');
|
|
108
108
|
next;
|
|
109
109
|
} else {
|
|
110
110
|
$val =~ s/ *(\/.*)?$//; # remove trailing spaces and comment
|
|
@@ -137,7 +137,7 @@ information from FITS (Flexible Image Transport System) images.
|
|
|
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.
|
|
@@ -298,7 +298,7 @@ information from Free Lossless Audio Codec (FLAC) audio files.
|
|
|
298
298
|
|
|
299
299
|
=head1 AUTHOR
|
|
300
300
|
|
|
301
|
-
Copyright 2003-
|
|
301
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
302
302
|
|
|
303
303
|
This library is free software; you can redistribute it and/or modify it
|
|
304
304
|
under the same terms as Perl itself.
|
|
@@ -244,7 +244,7 @@ sub WriteFLIF($$)
|
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
246
|
} else {
|
|
247
|
-
$et->
|
|
247
|
+
$et->Warn('Install IO::Compress::RawDeflate to write FLIF metadata');
|
|
248
248
|
}
|
|
249
249
|
Write($outfile, $tag, SetVarInt(length $buff), $buff) or return -1;
|
|
250
250
|
} elsif (not defined $soi) {
|
|
@@ -301,7 +301,7 @@ sub ProcessFLIF($$)
|
|
|
301
301
|
$et->Warn("Error inflating FLIF $tag chunk");
|
|
302
302
|
}
|
|
303
303
|
} else {
|
|
304
|
-
$et->
|
|
304
|
+
$et->Warn('Install IO::Uncompress::RawInflate to decode FLIF metadata');
|
|
305
305
|
}
|
|
306
306
|
} else {
|
|
307
307
|
$raf->Seek($size, 1) or $et->Warn('Seek error'), last;
|
|
@@ -329,7 +329,7 @@ meta information in FLIF (Free Lossless Image Format) images.
|
|
|
329
329
|
|
|
330
330
|
=head1 AUTHOR
|
|
331
331
|
|
|
332
|
-
Copyright 2003-
|
|
332
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
333
333
|
|
|
334
334
|
This library is free software; you can redistribute it and/or modify it
|
|
335
335
|
under the same terms as Perl itself.
|
|
@@ -1633,7 +1633,7 @@ Systems Inc. thermal image files (FFF, FPF and JPEG format).
|
|
|
1633
1633
|
|
|
1634
1634
|
=head1 AUTHOR
|
|
1635
1635
|
|
|
1636
|
-
Copyright 2003-
|
|
1636
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1637
1637
|
|
|
1638
1638
|
This library is free software; you can redistribute it and/or modify it
|
|
1639
1639
|
under the same terms as Perl itself.
|
|
@@ -354,7 +354,7 @@ linear list when ApplyFixups() is called.
|
|
|
354
354
|
|
|
355
355
|
=head1 AUTHOR
|
|
356
356
|
|
|
357
|
-
Copyright 2003-
|
|
357
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
358
358
|
|
|
359
359
|
This library is free software; you can redistribute it and/or modify it
|
|
360
360
|
under the same terms as Perl itself.
|
|
@@ -721,7 +721,7 @@ will add AMF3 support.
|
|
|
721
721
|
|
|
722
722
|
=head1 AUTHOR
|
|
723
723
|
|
|
724
|
-
Copyright 2003-
|
|
724
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
725
725
|
|
|
726
726
|
This library is free software; you can redistribute it and/or modify it
|
|
727
727
|
under the same terms as Perl itself.
|
|
@@ -22,7 +22,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
22
22
|
use Image::ExifTool::Exif;
|
|
23
23
|
use Image::ExifTool::ASF; # for GetGUID()
|
|
24
24
|
|
|
25
|
-
$VERSION = '1.
|
|
25
|
+
$VERSION = '1.49';
|
|
26
26
|
|
|
27
27
|
sub ProcessFPX($$);
|
|
28
28
|
sub ProcessFPXR($$$);
|
|
@@ -1449,7 +1449,7 @@ sub ReadFPXValue($$$$$;$$)
|
|
|
1449
1449
|
$noPad = 1; # values sometimes aren't padded inside vectors!!
|
|
1450
1450
|
my $size = $oleFormatSize{VT_VECTOR};
|
|
1451
1451
|
if ($valPos + $size > $dirEnd) {
|
|
1452
|
-
$et->
|
|
1452
|
+
$et->Warn('Incorrect FPX VT_VECTOR size');
|
|
1453
1453
|
last;
|
|
1454
1454
|
}
|
|
1455
1455
|
$count = Get32u($dataPt, $valPos);
|
|
@@ -1457,14 +1457,14 @@ sub ReadFPXValue($$$$$;$$)
|
|
|
1457
1457
|
$valPos += 4;
|
|
1458
1458
|
} else {
|
|
1459
1459
|
# can't yet handle this property flag
|
|
1460
|
-
$et->
|
|
1460
|
+
$et->Warn('Unknown FPX property');
|
|
1461
1461
|
last;
|
|
1462
1462
|
}
|
|
1463
1463
|
}
|
|
1464
1464
|
unless ($format =~ /^VT_/) {
|
|
1465
1465
|
my $size = Image::ExifTool::FormatSize($format) * $count;
|
|
1466
1466
|
if ($valPos + $size > $dirEnd) {
|
|
1467
|
-
$et->
|
|
1467
|
+
$et->Warn("Incorrect FPX $format size");
|
|
1468
1468
|
last;
|
|
1469
1469
|
}
|
|
1470
1470
|
@vals = ReadValue($dataPt, $valPos, $format, $count, $size);
|
|
@@ -1476,7 +1476,7 @@ sub ReadFPXValue($$$$$;$$)
|
|
|
1476
1476
|
my ($item, $val, $len);
|
|
1477
1477
|
for ($item=0; $item<$count; ++$item) {
|
|
1478
1478
|
if ($valPos + $size > $dirEnd) {
|
|
1479
|
-
$et->
|
|
1479
|
+
$et->Warn("Truncated FPX $format value");
|
|
1480
1480
|
last;
|
|
1481
1481
|
}
|
|
1482
1482
|
# sometimes VT_VECTOR items are padded to even 4-byte boundaries, and sometimes they aren't
|
|
@@ -1528,7 +1528,7 @@ sub ReadFPXValue($$$$$;$$)
|
|
|
1528
1528
|
$len = Get32u($dataPt, $valPos);
|
|
1529
1529
|
$len *= 2 if $format eq 'VT_LPWSTR'; # convert to byte count
|
|
1530
1530
|
if ($valPos + $len + 4 > $dirEnd) {
|
|
1531
|
-
$et->
|
|
1531
|
+
$et->Warn("Truncated $format value");
|
|
1532
1532
|
last;
|
|
1533
1533
|
}
|
|
1534
1534
|
$val = substr($$dataPt, $valPos + 4, $len);
|
|
@@ -1551,7 +1551,7 @@ sub ReadFPXValue($$$$$;$$)
|
|
|
1551
1551
|
} elsif ($format eq 'VT_BLOB' or $format eq 'VT_CF') {
|
|
1552
1552
|
my $len = Get32u($dataPt, $valPos); # (use local $len because we always expect padding)
|
|
1553
1553
|
if ($valPos + $len + 4 > $dirEnd) {
|
|
1554
|
-
$et->
|
|
1554
|
+
$et->Warn("Truncated $format value");
|
|
1555
1555
|
last;
|
|
1556
1556
|
}
|
|
1557
1557
|
$val = substr($$dataPt, $valPos + 4, $len);
|
|
@@ -1627,7 +1627,7 @@ sub ProcessContents($$$)
|
|
|
1627
1627
|
while ($$dataPt =~ /\x0bTargetRole1(?:.\x80|\xff\xff.\0.\0Vn(\w+))\0\0\x01.{4}(.{24})/sg) {
|
|
1628
1628
|
my ($index, @coords) = unpack('Vx4V4', $2);
|
|
1629
1629
|
next if $index == 0xffffffff;
|
|
1630
|
-
$$et{IeImg_lkup}{$index} and $et->
|
|
1630
|
+
$$et{IeImg_lkup}{$index} and $et->Warn('Duplicate image index');
|
|
1631
1631
|
$$et{IeImg_lkup}{$index} = "@coords";
|
|
1632
1632
|
$$et{IeImg_class}{$index} = $1 if $1;
|
|
1633
1633
|
}
|
|
@@ -1661,7 +1661,7 @@ sub ProcessWordDocument($$$)
|
|
|
1661
1661
|
my $dirLen = length $$dataPt;
|
|
1662
1662
|
# validate the FIB signature
|
|
1663
1663
|
unless ($dirLen > 2 and Get16u($dataPt,0) == 0xa5ec) {
|
|
1664
|
-
$et->
|
|
1664
|
+
$et->Warn('Invalid FIB signature', 1);
|
|
1665
1665
|
return 0;
|
|
1666
1666
|
}
|
|
1667
1667
|
$et->ProcessBinaryData($dirInfo, $tagTablePtr); # process FIB
|
|
@@ -1717,16 +1717,14 @@ sub ProcessDocumentTable($)
|
|
|
1717
1717
|
my $offsets = $$value{$key};
|
|
1718
1718
|
last unless defined $offsets;
|
|
1719
1719
|
my $doc;
|
|
1720
|
-
$doc = $$extra{$key}{G3}
|
|
1721
|
-
$doc = '' unless $doc;
|
|
1720
|
+
$doc = $$extra{$key}{G3} || '';
|
|
1722
1721
|
# get DocFlags for this sub-document
|
|
1723
1722
|
my ($docFlags, $docTable);
|
|
1724
1723
|
for ($j=0; ; ++$j) {
|
|
1725
1724
|
my $key = 'DocFlags' . ($j ? " ($j)" : '');
|
|
1726
1725
|
last unless defined $$value{$key};
|
|
1727
1726
|
my $tmp;
|
|
1728
|
-
$tmp = $$extra{$key}{G3}
|
|
1729
|
-
$tmp = '' unless $tmp;
|
|
1727
|
+
$tmp = $$extra{$key}{G3} || '';
|
|
1730
1728
|
if ($tmp eq $doc) {
|
|
1731
1729
|
$docFlags = $$value{$key};
|
|
1732
1730
|
last;
|
|
@@ -1739,8 +1737,7 @@ sub ProcessDocumentTable($)
|
|
|
1739
1737
|
my $key = $tag . ($j ? " ($j)" : '');
|
|
1740
1738
|
last unless defined $$value{$key};
|
|
1741
1739
|
my $tmp;
|
|
1742
|
-
$tmp = $$extra{$key}{G3}
|
|
1743
|
-
$tmp = '' unless $tmp;
|
|
1740
|
+
$tmp = $$extra{$key}{G3} || '';
|
|
1744
1741
|
if ($tmp eq $doc) {
|
|
1745
1742
|
$docTable = \$$value{$key};
|
|
1746
1743
|
last;
|
|
@@ -2101,7 +2098,7 @@ sub ProcessFPXR($$$)
|
|
|
2101
2098
|
my $overlap = length($$obj{Stream}) - $offset;
|
|
2102
2099
|
my $start = $dirStart + 13;
|
|
2103
2100
|
if ($overlap < 0 or $dirLen - $overlap < 13) {
|
|
2104
|
-
$et->
|
|
2101
|
+
$et->Warn("Bad FPXR stream $index offset",1);
|
|
2105
2102
|
} else {
|
|
2106
2103
|
# ignore any overlapping data in this segment
|
|
2107
2104
|
# (this seems to be the convention)
|
|
@@ -2341,7 +2338,7 @@ sub ProcessFPX($$)
|
|
|
2341
2338
|
$tag =~ s/\0.*//s; # truncate at null (in case length was wrong)
|
|
2342
2339
|
|
|
2343
2340
|
if ($tag eq '0' and not defined $ee) {
|
|
2344
|
-
$et->
|
|
2341
|
+
$et->Warn('Use the ExtractEmbedded option to extract embedded information', 3);
|
|
2345
2342
|
}
|
|
2346
2343
|
my $sect = Get32u(\$dir, $pos + 0x74); # start sector number
|
|
2347
2344
|
my $size = Get32u(\$dir, $pos + 0x78); # stream length
|
|
@@ -2444,7 +2441,7 @@ sub ProcessFPX($$)
|
|
|
2444
2441
|
my $subTablePtr = GetTagTable($$subdir{TagTable});
|
|
2445
2442
|
$et->ProcessDirectory(\%dirInfo, $subTablePtr, $$subdir{ProcessProc});
|
|
2446
2443
|
} elsif (defined $size and $size > length($buff)) {
|
|
2447
|
-
$et->
|
|
2444
|
+
$et->Warn('Truncated object');
|
|
2448
2445
|
} else {
|
|
2449
2446
|
$buff = substr($buff, 0, $size) if defined $size and $size < length($buff);
|
|
2450
2447
|
if ($tag =~ /^IeImg_0*(\d+)$/) {
|
|
@@ -2505,8 +2502,7 @@ sub ProcessFPX($$)
|
|
|
2505
2502
|
for ($copy=1; ;++$copy) {
|
|
2506
2503
|
my $key = "$tag ($copy)";
|
|
2507
2504
|
last unless defined $$et{VALUE}{$key};
|
|
2508
|
-
|
|
2509
|
-
next if $extra and $$extra{G3}; # not Main if family 3 group is set
|
|
2505
|
+
next if $$et{TAG_EXTRA}{$key}{G3}; # not Main if family 3 group is set
|
|
2510
2506
|
foreach $member ('PRIORITY','VALUE','FILE_ORDER','TAG_INFO','TAG_EXTRA') {
|
|
2511
2507
|
my $pHash = $$et{$member};
|
|
2512
2508
|
my $t = $$pHash{$tag};
|
|
@@ -2561,7 +2557,7 @@ JPEG images.
|
|
|
2561
2557
|
|
|
2562
2558
|
=head1 AUTHOR
|
|
2563
2559
|
|
|
2564
|
-
Copyright 2003-
|
|
2560
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2565
2561
|
|
|
2566
2562
|
This library is free software; you can redistribute it and/or modify it
|
|
2567
2563
|
under the same terms as Perl itself.
|
|
@@ -405,7 +405,7 @@ sub ProcessOTF($$)
|
|
|
405
405
|
next;
|
|
406
406
|
}
|
|
407
407
|
if ($verbose) {
|
|
408
|
-
$tag =~ s/([\0-\x1f\
|
|
408
|
+
$tag =~ s/([\0-\x1f\x7f-\xff])/sprintf('\x%.2x',ord $1)/ge;
|
|
409
409
|
my $str = sprintf("%s%d) Tag '%s' (offset 0x%.4x, %d bytes)\n",
|
|
410
410
|
$$et{INDENT}, $pos/16, $tag, $offset, $size);
|
|
411
411
|
$et->VPrint(0, $str);
|
|
@@ -633,7 +633,7 @@ extracted from these formats.
|
|
|
633
633
|
|
|
634
634
|
=head1 AUTHOR
|
|
635
635
|
|
|
636
|
-
Copyright 2003-
|
|
636
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
637
637
|
|
|
638
638
|
This library is free software; you can redistribute it and/or modify it
|
|
639
639
|
under the same terms as Perl itself.
|
|
@@ -243,7 +243,7 @@ write information from the FotoWare FotoStation trailer.
|
|
|
243
243
|
|
|
244
244
|
=head1 AUTHOR
|
|
245
245
|
|
|
246
|
-
Copyright 2003-
|
|
246
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
247
247
|
|
|
248
248
|
This library is free software; you can redistribute it and/or modify it
|
|
249
249
|
under the same terms as Perl itself.
|
|
@@ -1959,7 +1959,7 @@ FujiFilm maker notes in EXIF information, and to read/write FujiFilm RAW
|
|
|
1959
1959
|
|
|
1960
1960
|
=head1 AUTHOR
|
|
1961
1961
|
|
|
1962
|
-
Copyright 2003-
|
|
1962
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1963
1963
|
|
|
1964
1964
|
This library is free software; you can redistribute it and/or modify it
|
|
1965
1965
|
under the same terms as Perl itself.
|
|
@@ -68,7 +68,7 @@ General Imaging maker notes.
|
|
|
68
68
|
|
|
69
69
|
=head1 AUTHOR
|
|
70
70
|
|
|
71
|
-
Copyright 2003-
|
|
71
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
72
72
|
|
|
73
73
|
This library is free software; you can redistribute it and/or modify it
|
|
74
74
|
under the same terms as Perl itself.
|