exiftool_vendored 10.65.0 → 11.41.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +818 -19
- data/bin/MANIFEST +38 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +48 -44
- data/bin/arg_files/exif2xmp.args +4 -1
- data/bin/arg_files/gps2xmp.args +4 -1
- data/bin/arg_files/iptcCore.args +8 -0
- data/bin/arg_files/xmp2exif.args +4 -1
- data/bin/arg_files/xmp2gps.args +4 -1
- data/bin/config_files/dji.config +131 -0
- data/bin/config_files/example.config +6 -2
- data/bin/config_files/gps2utm.config +256 -256
- data/bin/config_files/nksc.config +146 -0
- data/bin/config_files/picasa_faces.config +382 -382
- data/bin/exiftool +688 -408
- data/bin/fmt_files/gpx.fmt +10 -6
- data/bin/fmt_files/gpx_wpt.fmt +10 -6
- data/bin/fmt_files/kml.fmt +8 -5
- data/bin/lib/File/RandomAccess.pm +48 -8
- data/bin/lib/File/RandomAccess.pod +21 -2
- data/bin/lib/Image/ExifTool.pm +645 -256
- data/bin/lib/Image/ExifTool.pod +219 -164
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +3 -8
- data/bin/lib/Image/ExifTool/AIFF.pm +12 -4
- data/bin/lib/Image/ExifTool/APE.pm +1 -1
- data/bin/lib/Image/ExifTool/APP12.pm +1 -1
- data/bin/lib/Image/ExifTool/ASF.pm +19 -6
- data/bin/lib/Image/ExifTool/Apple.pm +13 -5
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BPG.pm +17 -15
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +30 -15
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +103 -52
- data/bin/lib/Image/ExifTool/Canon.pm +684 -112
- data/bin/lib/Image/ExifTool/CanonCustom.pm +119 -9
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +13 -26
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +1 -1
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +12 -5
- data/bin/lib/Image/ExifTool/DJI.pm +51 -3
- data/bin/lib/Image/ExifTool/DNG.pm +15 -8
- data/bin/lib/Image/ExifTool/DPX.pm +1 -1
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +63 -23
- data/bin/lib/Image/ExifTool/DjVu.pm +4 -2
- data/bin/lib/Image/ExifTool/EXE.pm +30 -6
- data/bin/lib/Image/ExifTool/Exif.pm +351 -109
- data/bin/lib/Image/ExifTool/FITS.pm +148 -0
- data/bin/lib/Image/ExifTool/FLAC.pm +2 -2
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +109 -13
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +3 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +433 -9
- data/bin/lib/Image/ExifTool/Font.pm +2 -2
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +336 -16
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +5 -7
- data/bin/lib/Image/ExifTool/GIMP.pm +39 -3
- data/bin/lib/Image/ExifTool/GPS.pm +48 -22
- data/bin/lib/Image/ExifTool/GeoTiff.pm +23 -23
- data/bin/lib/Image/ExifTool/Geotag.pm +80 -45
- data/bin/lib/Image/ExifTool/GoPro.pm +709 -0
- data/bin/lib/Image/ExifTool/H264.pm +40 -18
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +19 -12
- data/bin/lib/Image/ExifTool/HtmlDump.pm +37 -26
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +297 -23
- data/bin/lib/Image/ExifTool/ID3.pm +12 -7
- data/bin/lib/Image/ExifTool/IPTC.pm +48 -19
- data/bin/lib/Image/ExifTool/ISO.pm +1 -1
- data/bin/lib/Image/ExifTool/ITC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +13 -9
- data/bin/lib/Image/ExifTool/InDesign.pm +3 -5
- data/bin/lib/Image/ExifTool/JPEG.pm +22 -11
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +3 -3
- data/bin/lib/Image/ExifTool/JVC.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +2 -2
- data/bin/lib/Image/ExifTool/Kodak.pm +1233 -58
- data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +33 -24
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +64 -2
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +64 -2
- data/bin/lib/Image/ExifTool/Lang/es.pm +8 -4
- data/bin/lib/Image/ExifTool/Lang/fi.pm +46 -4
- data/bin/lib/Image/ExifTool/Lang/fr.pm +5 -3
- data/bin/lib/Image/ExifTool/Lang/it.pm +6 -3
- data/bin/lib/Image/ExifTool/Lang/ja.pm +15 -3
- data/bin/lib/Image/ExifTool/Lang/ko.pm +5 -2
- data/bin/lib/Image/ExifTool/Lang/nl.pm +6 -3
- data/bin/lib/Image/ExifTool/Lang/pl.pm +2 -2
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +4 -2
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- data/bin/lib/Image/ExifTool/Lytro.pm +4 -8
- data/bin/lib/Image/ExifTool/M2TS.pm +10 -9
- data/bin/lib/Image/ExifTool/MIE.pm +12 -8
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/MNG.pm +1 -1
- data/bin/lib/Image/ExifTool/MOI.pm +1 -1
- data/bin/lib/Image/ExifTool/MPC.pm +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +2 -3
- data/bin/lib/Image/ExifTool/MPF.pm +6 -6
- data/bin/lib/Image/ExifTool/MWG.pm +4 -4
- data/bin/lib/Image/ExifTool/MXF.pm +2 -2
- data/bin/lib/Image/ExifTool/MacOS.pm +184 -34
- data/bin/lib/Image/ExifTool/MakerNotes.pm +101 -18
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +5 -3
- data/bin/lib/Image/ExifTool/Minolta.pm +89 -62
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +1511 -380
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +2758 -2935
- data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +47 -8
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +138 -0
- data/bin/lib/Image/ExifTool/PDF.pm +58 -42
- data/bin/lib/Image/ExifTool/PGF.pm +1 -1
- data/bin/lib/Image/ExifTool/PICT.pm +1 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +12 -5
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +108 -10
- data/bin/lib/Image/ExifTool/PPM.pm +3 -3
- data/bin/lib/Image/ExifTool/PSP.pm +1 -1
- data/bin/lib/Image/ExifTool/Palm.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +299 -31
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +201 -19
- data/bin/lib/Image/ExifTool/Pentax.pm +164 -143
- data/bin/lib/Image/ExifTool/PhaseOne.pm +12 -5
- data/bin/lib/Image/ExifTool/PhotoCD.pm +9 -10
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +230 -60
- data/bin/lib/Image/ExifTool/PostScript.pm +29 -4
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +1539 -279
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1857 -0
- data/bin/lib/Image/ExifTool/README +84 -46
- data/bin/lib/Image/ExifTool/RIFF.pm +116 -23
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +6 -4
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +3 -2
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +261 -7
- data/bin/lib/Image/ExifTool/Red.pm +325 -0
- data/bin/lib/Image/ExifTool/Ricoh.pm +3 -7
- data/bin/lib/Image/ExifTool/Samsung.pm +95 -25
- data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- data/bin/lib/Image/ExifTool/Shift.pl +26 -12
- data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -2
- data/bin/lib/Image/ExifTool/Sigma.pm +36 -30
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +3 -8
- data/bin/lib/Image/ExifTool/Sony.pm +531 -177
- data/bin/lib/Image/ExifTool/SonyIDC.pm +63 -3
- data/bin/lib/Image/ExifTool/Stim.pm +2 -2
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +23 -23
- data/bin/lib/Image/ExifTool/TagLookup.pm +6352 -5062
- data/bin/lib/Image/ExifTool/TagNames.pod +3024 -565
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -2
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +47 -9
- data/bin/lib/Image/ExifTool/Validate.pm +391 -99
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +319 -0
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +91 -18
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +6 -6
- data/bin/lib/Image/ExifTool/WritePDF.pl +13 -12
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePostScript.pl +2 -2
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +764 -121
- data/bin/lib/Image/ExifTool/WriteXMP.pl +176 -67
- data/bin/lib/Image/ExifTool/Writer.pl +490 -246
- data/bin/lib/Image/ExifTool/XMP.pm +216 -76
- data/bin/lib/Image/ExifTool/XMP2.pl +54 -10
- data/bin/lib/Image/ExifTool/XMPStruct.pl +14 -11
- data/bin/lib/Image/ExifTool/ZIP.pm +60 -15
- data/bin/lib/Image/ExifTool/iWork.pm +12 -5
- data/bin/perl-Image-ExifTool.spec +46 -44
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +14 -4
@@ -119,7 +119,7 @@ information from Progressive Graphics File (PGF) images.
|
|
119
119
|
|
120
120
|
=head1 AUTHOR
|
121
121
|
|
122
|
-
Copyright 2003-
|
122
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
123
123
|
|
124
124
|
This library is free software; you can redistribute it and/or modify it
|
125
125
|
under the same terms as Perl itself.
|
@@ -1236,7 +1236,7 @@ Verbose or the Unknown option.
|
|
1236
1236
|
|
1237
1237
|
=head1 AUTHOR
|
1238
1238
|
|
1239
|
-
Copyright 2003-
|
1239
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
1240
1240
|
|
1241
1241
|
This library is free software; you can redistribute it and/or modify it
|
1242
1242
|
under the same terms as Perl itself.
|
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
21
21
|
use Image::ExifTool::XMP;
|
22
22
|
use Image::ExifTool::GPS;
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.09';
|
25
25
|
|
26
26
|
sub ExtractObject($$;$);
|
27
27
|
sub Get24u($$);
|
@@ -37,6 +37,11 @@ my %readProc = (
|
|
37
37
|
0x108 => \&GetDouble,
|
38
38
|
);
|
39
39
|
|
40
|
+
# recognize different types of PLIST files based on certain tags
|
41
|
+
my %plistType = (
|
42
|
+
adjustmentBaseVersion => 'AAE',
|
43
|
+
);
|
44
|
+
|
40
45
|
# PLIST tags (generated on-the-fly for most tags)
|
41
46
|
%Image::ExifTool::PLIST::Main = (
|
42
47
|
PROCESS_PROC => \&ProcessPLIST,
|
@@ -173,6 +178,8 @@ sub FoundTag($$$$;$)
|
|
173
178
|
delete $$et{LIST_TAGS}{$$et{LastPListTag}};
|
174
179
|
}
|
175
180
|
$$et{LastPListTag} = $tagInfo;
|
181
|
+
# override file type if applicable
|
182
|
+
$et->OverrideFileType($plistType{$tag}) if $plistType{$tag} and $$et{FILE_TYPE} eq 'XMP';
|
176
183
|
# save the tag
|
177
184
|
$et->HandleTag($tagTablePtr, $tag, $val);
|
178
185
|
|
@@ -323,12 +330,12 @@ sub ProcessBinaryPLIST($$$)
|
|
323
330
|
{
|
324
331
|
my ($et, $dirInfo, $tagTablePtr) = @_;
|
325
332
|
my ($i, $buff, @table);
|
333
|
+
my $dataPt = $$dirInfo{DataPt};
|
326
334
|
|
327
335
|
$et->VerboseDir('Binary PLIST');
|
328
336
|
SetByteOrder('MM');
|
329
337
|
|
330
|
-
|
331
|
-
my $dataPt = $$dirInfo{DataPt};
|
338
|
+
if ($dataPt) {
|
332
339
|
my $start = $$dirInfo{DirStart};
|
333
340
|
if ($start or ($$dirInfo{DirLen} and $$dirInfo{DirLen} != length $$dataPt)) {
|
334
341
|
my $buf2 = substr($$dataPt, $start || 0, $$dirInfo{DirLen});
|
@@ -339,7 +346,7 @@ sub ProcessBinaryPLIST($$$)
|
|
339
346
|
my $strt = $$dirInfo{DirStart} || 0;
|
340
347
|
}
|
341
348
|
# read and parse the trailer
|
342
|
-
my $raf = $$dirInfo{RAF};
|
349
|
+
my $raf = $$dirInfo{RAF} or return 0;
|
343
350
|
$raf->Seek(-32,2) and $raf->Read($buff,32)==32 or return 0;
|
344
351
|
my $intSize = Get8u(\$buff, 6);
|
345
352
|
my $refSize = Get8u(\$buff, 7);
|
@@ -431,7 +438,7 @@ This module decodes both the binary and XML-based PLIST format.
|
|
431
438
|
|
432
439
|
=head1 AUTHOR
|
433
440
|
|
434
|
-
Copyright 2003-
|
441
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
435
442
|
|
436
443
|
This library is free software; you can redistribute it and/or modify it
|
437
444
|
under the same terms as Perl itself.
|
@@ -2586,7 +2586,7 @@ Definitions for PLUS (Picture Licensing Universal System) tags.
|
|
2586
2586
|
|
2587
2587
|
=head1 AUTHOR
|
2588
2588
|
|
2589
|
-
Copyright 2003-
|
2589
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
2590
2590
|
|
2591
2591
|
This library is free software; you can redistribute it and/or modify it
|
2592
2592
|
under the same terms as Perl itself.
|
@@ -12,6 +12,7 @@
|
|
12
12
|
# 3) http://www.libpng.org/pub/mng/
|
13
13
|
# 4) http://www.libpng.org/pub/png/spec/register/
|
14
14
|
# 5) ftp://ftp.simplesystems.org/pub/png/documents/pngext-1.4.0-pdg.html
|
15
|
+
# 6) ftp://ftp.simplesystems.org/pub/png/documents/pngext-1.5.0.html
|
15
16
|
#
|
16
17
|
# Notes: Writing meta information in PNG images is a pain in the butt
|
17
18
|
# for a number of reasons: One biggie is that you have to
|
@@ -26,7 +27,7 @@ use strict;
|
|
26
27
|
use vars qw($VERSION $AUTOLOAD %stdCase);
|
27
28
|
use Image::ExifTool qw(:DataAccess :Utils);
|
28
29
|
|
29
|
-
$VERSION = '1.
|
30
|
+
$VERSION = '1.47';
|
30
31
|
|
31
32
|
sub ProcessPNG_tEXt($$$);
|
32
33
|
sub ProcessPNG_iTXt($$$);
|
@@ -39,6 +40,8 @@ sub Add_iCCP($$);
|
|
39
40
|
sub DoneDir($$$;$);
|
40
41
|
sub GetLangInfo($$);
|
41
42
|
sub BuildTextChunk($$$$$);
|
43
|
+
sub ConvertPNGDate($$);
|
44
|
+
sub InversePNGDate($$);
|
42
45
|
|
43
46
|
# translate lower-case to actual case used for eXIf/zXIf chunks
|
44
47
|
%stdCase = ( 'zxif' => 'zxIf', exif => 'eXIf' );
|
@@ -234,7 +237,7 @@ $Image::ExifTool::PNG::colorType = -1;
|
|
234
237
|
tXMP => {
|
235
238
|
Name => 'XMP',
|
236
239
|
Notes => 'obsolete location specified by a September 2001 XMP draft',
|
237
|
-
NonStandard =>
|
240
|
+
NonStandard => 'XMP',
|
238
241
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
|
239
242
|
},
|
240
243
|
vpAg => { # private imagemagick chunk
|
@@ -255,7 +258,7 @@ $Image::ExifTool::PNG::colorType = -1;
|
|
255
258
|
TagTable => 'Image::ExifTool::PNG::AnimationControl',
|
256
259
|
},
|
257
260
|
},
|
258
|
-
# eXIf
|
261
|
+
# eXIf (ref 6)
|
259
262
|
$stdCase{exif} => {
|
260
263
|
Name => $stdCase{exif},
|
261
264
|
Notes => 'this is where ExifTool will create new EXIF',
|
@@ -269,6 +272,7 @@ $Image::ExifTool::PNG::colorType = -1;
|
|
269
272
|
$stdCase{zxif} => {
|
270
273
|
Name => $stdCase{zxif},
|
271
274
|
Notes => 'a once-proposed chunk for compressed EXIF',
|
275
|
+
NonStandard => 'EXIF',
|
272
276
|
SubDirectory => {
|
273
277
|
TagTable => 'Image::ExifTool::Exif::Main',
|
274
278
|
DirName => 'EXIF', # (to write as a block)
|
@@ -447,6 +451,11 @@ my %unreg = ( Notes => 'unregistered' );
|
|
447
451
|
Name => 'CreationTime',
|
448
452
|
Groups => { 2 => 'Time' },
|
449
453
|
Shift => 'Time',
|
454
|
+
Notes => 'stored in RFC-1123 format and converted to/from EXIF format by ExifTool',
|
455
|
+
RawConv => \&ConvertPNGDate,
|
456
|
+
ValueConvInv => \&InversePNGDate,
|
457
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
458
|
+
PrintConvInv => '$self->InverseDateTime($val,undef,1)',
|
450
459
|
},
|
451
460
|
Software => { },
|
452
461
|
Disclaimer => { },
|
@@ -503,7 +512,7 @@ my %unreg = ( Notes => 'unregistered' );
|
|
503
512
|
# (No condition because this is just for BuildTagLookup)
|
504
513
|
Name => 'APP1_Profile',
|
505
514
|
%unreg,
|
506
|
-
NonStandard =>
|
515
|
+
NonStandard => 'EXIF',
|
507
516
|
SubDirectory => {
|
508
517
|
TagTable => 'Image::ExifTool::Exif::Main',
|
509
518
|
ProcessProc => \&ProcessProfile,
|
@@ -511,7 +520,7 @@ my %unreg = ( Notes => 'unregistered' );
|
|
511
520
|
},
|
512
521
|
{
|
513
522
|
Name => 'APP1_Profile',
|
514
|
-
NonStandard =>
|
523
|
+
NonStandard => 'XMP',
|
515
524
|
SubDirectory => {
|
516
525
|
TagTable => 'Image::ExifTool::XMP::Main',
|
517
526
|
ProcessProc => \&ProcessProfile,
|
@@ -521,7 +530,7 @@ my %unreg = ( Notes => 'unregistered' );
|
|
521
530
|
'Raw profile type exif' => {
|
522
531
|
Name => 'EXIF_Profile',
|
523
532
|
%unreg,
|
524
|
-
NonStandard =>
|
533
|
+
NonStandard => 'EXIF',
|
525
534
|
SubDirectory => {
|
526
535
|
TagTable => 'Image::ExifTool::Exif::Main',
|
527
536
|
ProcessProc => \&ProcessProfile,
|
@@ -557,7 +566,7 @@ my %unreg = ( Notes => 'unregistered' );
|
|
557
566
|
'Raw profile type xmp' => {
|
558
567
|
Name => 'XMP_Profile',
|
559
568
|
%unreg,
|
560
|
-
NonStandard =>
|
569
|
+
NonStandard => 'XMP',
|
561
570
|
SubDirectory => {
|
562
571
|
TagTable => 'Image::ExifTool::XMP::Main',
|
563
572
|
ProcessProc => \&ProcessProfile,
|
@@ -612,6 +621,88 @@ sub StandardLangCase($)
|
|
612
621
|
return lc($lang);
|
613
622
|
}
|
614
623
|
|
624
|
+
#------------------------------------------------------------------------------
|
625
|
+
# Convert date from PNG to EXIF format
|
626
|
+
# Inputs: 0) Date/time in PNG format, 1) ExifTool ref
|
627
|
+
# Returns: EXIF formatted date/time string
|
628
|
+
my %monthNum = (
|
629
|
+
Jan=>1, Feb=>2, Mar=>3, Apr=>4, May=>5, Jun=>6,
|
630
|
+
Jul=>7, Aug=>8, Sep=>9, Oct=>10,Nov=>11,Dec=>12
|
631
|
+
);
|
632
|
+
my %tzConv = (
|
633
|
+
UT => '+00:00', GMT => '+00:00', UTC => '+00:00', # (UTC not in spec -- PH addition)
|
634
|
+
EST => '-05:00', EDT => '-04:00',
|
635
|
+
CST => '-06:00', CDT => '-05:00',
|
636
|
+
MST => '-07:00', MDT => '-06:00',
|
637
|
+
PST => '-08:00', PDT => '-07:00',
|
638
|
+
A => '-01:00', N => '+01:00',
|
639
|
+
B => '-02:00', O => '+02:00',
|
640
|
+
C => '-03:00', P => '+03:00',
|
641
|
+
D => '-04:00', Q => '+04:00',
|
642
|
+
E => '-05:00', R => '+05:00',
|
643
|
+
F => '-06:00', S => '+06:00',
|
644
|
+
G => '-07:00', T => '+07:00',
|
645
|
+
H => '-08:00', U => '+08:00',
|
646
|
+
I => '-09:00', V => '+09:00',
|
647
|
+
K => '-10:00', W => '+10:00',
|
648
|
+
L => '-11:00', X => '+11:00',
|
649
|
+
M => '-12:00', Y => '+12:00',
|
650
|
+
Z => '+00:00',
|
651
|
+
);
|
652
|
+
sub ConvertPNGDate($$)
|
653
|
+
{
|
654
|
+
my ($val, $et) = @_;
|
655
|
+
# standard format is like "Mon, 1 Jan 2018 12:10:22 EST" (RFC-1123 section 5.2.14)
|
656
|
+
while ($val =~ /(\d+)\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s*(\d+)\s+(\d+):(\d{2})(:\d{2})?\s*(\S*)/i) {
|
657
|
+
my ($day,$mon,$yr,$hr,$min,$sec,$tz) = ($1,$2,$3,$4,$5,$6,$7);
|
658
|
+
$yr += $yr > 70 ? 1900 : 2000 if $yr < 100; # boost year to 4 digits if necessary
|
659
|
+
$mon = $monthNum{ucfirst lc $mon} or return $val;
|
660
|
+
if (not $tz) {
|
661
|
+
$tz = '';
|
662
|
+
} elsif ($tzConv{uc $tz}) {
|
663
|
+
$tz = $tzConv{uc $tz};
|
664
|
+
} elsif ($tz =~ /^([-+]\d+):?(\d{2})/) {
|
665
|
+
$tz = $1 . ':' . $2;
|
666
|
+
} else {
|
667
|
+
last; # (non-standard date)
|
668
|
+
}
|
669
|
+
return sprintf("%.4d:%.2d:%.2d %.2d:%.2d%s%s",$yr,$mon,$day,$hr,$min,$sec||':00',$tz);
|
670
|
+
}
|
671
|
+
if (($et->Options('StrictDate') and not $$et{TAGS_FROM_FILE}) or $et->Options('Validate')) {
|
672
|
+
$et->Warn('Non standard PNG date/time format', 1);
|
673
|
+
}
|
674
|
+
return $val;
|
675
|
+
}
|
676
|
+
|
677
|
+
#------------------------------------------------------------------------------
|
678
|
+
# Convert EXIF date/time to PNG format
|
679
|
+
# Inputs: 0) Date/time in EXIF format, 1) ExifTool ref
|
680
|
+
# Returns: PNG formatted date/time string
|
681
|
+
sub InversePNGDate($$)
|
682
|
+
{
|
683
|
+
my ($val, $et) = @_;
|
684
|
+
if ($et->Options('StrictDate')) {
|
685
|
+
my $err;
|
686
|
+
if ($val =~ /^(\d{4}):(\d{2}):(\d{2}) (\d{2})(:\d{2})(:\d{2})?(?:\.\d*)?\s*(\S*)/) {
|
687
|
+
my ($yr,$mon,$day,$hr,$min,$sec,$tz) = ($1,$2,$3,$4,$5,$6,$7);
|
688
|
+
$sec or $sec = '';
|
689
|
+
my %monName = map { $monthNum{$_} => $_ } keys %monthNum;
|
690
|
+
$mon = $monName{$mon + 0} or $err = 1;
|
691
|
+
if (length $tz) {
|
692
|
+
$tz =~ /^(Z|[-+]\d{2}:?\d{2})/ or $err = 1;
|
693
|
+
$tz =~ tr/://d;
|
694
|
+
$tz = ' ' . $tz;
|
695
|
+
}
|
696
|
+
$val = "$day $mon $yr $hr$min$sec$tz" unless $err;
|
697
|
+
}
|
698
|
+
if ($err) {
|
699
|
+
warn "Invalid date/time (use YYYY:mm:dd HH:MM:SS[.ss][+/-HH:MM|Z])\n";
|
700
|
+
undef $val;
|
701
|
+
}
|
702
|
+
}
|
703
|
+
return $val;
|
704
|
+
}
|
705
|
+
|
615
706
|
#------------------------------------------------------------------------------
|
616
707
|
# Get localized version of tagInfo hash
|
617
708
|
# Inputs: 0) tagInfo hash ref, 1) language code (eg. "x-default")
|
@@ -639,7 +730,7 @@ sub FoundPNG($$$$;$$$$)
|
|
639
730
|
my ($et, $tagTablePtr, $tag, $val, $compressed, $outBuff, $enc, $lang) = @_;
|
640
731
|
return 0 unless defined $val;
|
641
732
|
my $verbose = $et->Options('Verbose');
|
642
|
-
my $id = $tag; # generate tag ID which
|
733
|
+
my $id = $tag; # generate tag ID which includes language code
|
643
734
|
if ($lang) {
|
644
735
|
# case of language code must be normalized since they are case insensitive
|
645
736
|
$lang = StandardLangCase($lang);
|
@@ -700,6 +791,9 @@ sub FoundPNG($$$$;$$$$)
|
|
700
791
|
my $tagName = $$tagInfo{Name};
|
701
792
|
my $processed;
|
702
793
|
if ($$tagInfo{SubDirectory}) {
|
794
|
+
if ($$et{OPTIONS}{Validate} and $$tagInfo{NonStandard}) {
|
795
|
+
$et->Warn("Non-standard $$tagInfo{NonStandard} in PNG $tag chunk", 1);
|
796
|
+
}
|
703
797
|
my $subdir = $$tagInfo{SubDirectory};
|
704
798
|
my $dirName = $$subdir{DirName} || $tagName;
|
705
799
|
if (not $compressed) {
|
@@ -998,7 +1092,7 @@ sub ProcessProfile($$$)
|
|
998
1092
|
} else {
|
999
1093
|
my $profName = $profileType;
|
1000
1094
|
$profName =~ tr/\x00-\x1f\x7f-\xff/./;
|
1001
|
-
$et->Warn("Unknown raw profile '$profName'");
|
1095
|
+
$et->Warn("Unknown raw profile '${profName}'");
|
1002
1096
|
}
|
1003
1097
|
if ($outBuff and defined $$outBuff and length $$outBuff) {
|
1004
1098
|
if ($$et{CHANGED} != $oldChanged) {
|
@@ -1145,6 +1239,8 @@ sub ProcessPNG($$)
|
|
1145
1239
|
# check to be sure this is a valid PNG/MNG/JNG image
|
1146
1240
|
return 0 unless $raf->Read($sig,8) == 8 and $pngLookup{$sig};
|
1147
1241
|
|
1242
|
+
$$raf{NoBuffer} = 1 if $et->Options('FastScan'); # disable buffering in FastScan mode
|
1243
|
+
|
1148
1244
|
my $earlyXMP = $et->Options('PNGEarlyXMP');
|
1149
1245
|
if ($outfile) {
|
1150
1246
|
delete $$et{TextChunkType};
|
@@ -1163,6 +1259,8 @@ sub ProcessPNG($$)
|
|
1163
1259
|
$et->InitWriteDirs(\%pngMap,'PNG');
|
1164
1260
|
# write XMP before IDAT if we would delete it later anyway
|
1165
1261
|
$earlyXMP = 1 if $$et{DEL_GROUP}{XMP};
|
1262
|
+
} elsif ($$et{OPTIONS}{Validate}) {
|
1263
|
+
$earlyXMP = 1; # warn about XMP after IDAT when validating
|
1166
1264
|
}
|
1167
1265
|
my ($fileType, $hdrChunk, $endChunk) = @{$pngLookup{$sig}};
|
1168
1266
|
$et->SetFileType($fileType); # set the FileType tag
|
@@ -1346,7 +1444,7 @@ and JNG (JPEG Network Graphics) images.
|
|
1346
1444
|
|
1347
1445
|
=head1 AUTHOR
|
1348
1446
|
|
1349
|
-
Copyright 2003-
|
1447
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
1350
1448
|
|
1351
1449
|
This library is free software; you can redistribute it and/or modify it
|
1352
1450
|
under the same terms as Perl itself.
|
@@ -16,7 +16,7 @@ use strict;
|
|
16
16
|
use vars qw($VERSION);
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.09';
|
20
20
|
|
21
21
|
#------------------------------------------------------------------------------
|
22
22
|
# Read or write information in a PPM/PGM/PBM image
|
@@ -114,7 +114,7 @@ sub ProcessPPM($$)
|
|
114
114
|
#
|
115
115
|
if ($verbose > 2) {
|
116
116
|
print $out "$type header ($len bytes):\n";
|
117
|
-
|
117
|
+
$et->VerboseDump(\$buff, Len => $len);
|
118
118
|
}
|
119
119
|
my $tag;
|
120
120
|
foreach $tag (qw{Comment ImageWidth ImageHeight MaxVal}) {
|
@@ -143,7 +143,7 @@ BitMap) images.
|
|
143
143
|
|
144
144
|
=head1 AUTHOR
|
145
145
|
|
146
|
-
Copyright 2003-
|
146
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
147
147
|
|
148
148
|
This library is free software; you can redistribute it and/or modify it
|
149
149
|
under the same terms as Perl itself.
|
@@ -284,7 +284,7 @@ information from Paint Shop Pro images.
|
|
284
284
|
|
285
285
|
=head1 AUTHOR
|
286
286
|
|
287
|
-
Copyright 2003-
|
287
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
288
288
|
|
289
289
|
This library is free software; you can redistribute it and/or modify it
|
290
290
|
under the same terms as Perl itself.
|
@@ -379,7 +379,7 @@ KF7 and KF8 books (AZW and AZW3).
|
|
379
379
|
|
380
380
|
=head1 AUTHOR
|
381
381
|
|
382
|
-
Copyright 2003-
|
382
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
383
383
|
|
384
384
|
This library is free software; you can redistribute it and/or modify it
|
385
385
|
under the same terms as Perl itself.
|
@@ -14,6 +14,7 @@
|
|
14
14
|
# 9) http://forums.dpreview.com/forums/read.asp?forum=1033&message=22756430
|
15
15
|
# 10) http://bretteville.com/pdfs/M8Metadata_v2.pdf
|
16
16
|
# 11) http://www.digital-leica.com/lens_codes/index.html
|
17
|
+
# (now https://www.l-camera-forum.com/leica-news/leica-lens-codes/)
|
17
18
|
# 12) Joerg - http://www.cpanforum.com/threads/11602 (LX3 firmware 2.0)
|
18
19
|
# 13) Michael Byczkowski private communication (Leica M9)
|
19
20
|
# 14) Carl Bretteville private communication (M9)
|
@@ -22,6 +23,8 @@
|
|
22
23
|
# 17) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4922.0.html
|
23
24
|
# 18) Thomas Modes private communication (G6)
|
24
25
|
# 19) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5533.0.html
|
26
|
+
# 20) Bernd-Michael Kemper private communication (DMC-GX80/85)
|
27
|
+
# 21) Klaus Homeister forum post
|
25
28
|
# JD) Jens Duttke private communication (TZ3,FZ30,FZ50)
|
26
29
|
#------------------------------------------------------------------------------
|
27
30
|
|
@@ -32,7 +35,7 @@ use vars qw($VERSION %leicaLensTypes);
|
|
32
35
|
use Image::ExifTool qw(:DataAccess :Utils);
|
33
36
|
use Image::ExifTool::Exif;
|
34
37
|
|
35
|
-
$VERSION = '
|
38
|
+
$VERSION = '2.04';
|
36
39
|
|
37
40
|
sub ProcessLeicaLEIC($$$);
|
38
41
|
sub WhiteBalanceConv($;$$);
|
@@ -77,6 +80,8 @@ sub WhiteBalanceConv($;$$);
|
|
77
80
|
7 => 'Summicron-M 90mm f/2 (II)', # 11136/11137
|
78
81
|
9 => 'Elmarit-M 135mm f/2.8 (I/II)', # 11829
|
79
82
|
'9 0' => 'Apo-Telyt-M 135mm f/3.4', # 11889
|
83
|
+
11 => 'Summaron-M 28mm f/5.6', # ? (ref IB)
|
84
|
+
12 => 'Thambar-M 90mm f/2.2', # ? (ref IB)
|
80
85
|
16 => 'Tri-Elmar-M 16-18-21mm f/4 ASPH.',# 11626
|
81
86
|
'16 1' => 'Tri-Elmar-M 16-18-21mm f/4 ASPH. (at 16mm)',
|
82
87
|
'16 2' => 'Tri-Elmar-M 16-18-21mm f/4 ASPH. (at 18mm)',
|
@@ -120,6 +125,7 @@ sub WhiteBalanceConv($;$$);
|
|
120
125
|
52 => 'Super-Elmar-M 18mm f/3.8 ASPH.', # ? (ref PH/11)
|
121
126
|
'53 2' => 'Apo-Telyt-M 135mm f/3.4', #16
|
122
127
|
'53 3' => 'Apo-Summicron-M 50mm f/2 (VI)', #LR
|
128
|
+
58 => 'Noctilux-M 75mm f/1.25 ASPH.', # ? (ref IB)
|
123
129
|
);
|
124
130
|
|
125
131
|
# M9 frame selector bits for each lens
|
@@ -220,6 +226,7 @@ my %shootingMode = (
|
|
220
226
|
55 => 'Handheld Night Shot', #PH (FZ47)
|
221
227
|
57 => '3D', #PH (3D1)
|
222
228
|
59 => 'Creative Control', #PH (FZ47)
|
229
|
+
60 => 'Intelligent Auto Plus', #20
|
223
230
|
62 => 'Panorama', #17
|
224
231
|
63 => 'Glass Through', #17
|
225
232
|
64 => 'HDR', #17
|
@@ -258,13 +265,14 @@ my %shootingMode = (
|
|
258
265
|
0x01 => {
|
259
266
|
Name => 'ImageQuality',
|
260
267
|
Writable => 'int16u',
|
268
|
+
Notes => 'quality of the main image, which may be in a different file',
|
261
269
|
PrintConv => {
|
262
270
|
1 => 'TIFF', #PH (FZ20)
|
263
271
|
2 => 'High',
|
264
272
|
3 => 'Normal',
|
265
273
|
# 5 - seen this for 1920x1080, 30fps SZ7 video - PH
|
266
274
|
6 => 'Very High', #3 (Leica)
|
267
|
-
7 => '
|
275
|
+
7 => 'RAW', #3 (Leica)
|
268
276
|
9 => 'Motion Picture', #PH (LZ6)
|
269
277
|
11 => 'Full HD Movie', #PH (V-LUX)
|
270
278
|
12 => '4k Movie', #PH (V-LUX)
|
@@ -298,9 +306,13 @@ my %shootingMode = (
|
|
298
306
|
5 => 'Manual',
|
299
307
|
8 => 'Flash',
|
300
308
|
10 => 'Black & White', #3 (Leica)
|
301
|
-
11 => 'Manual', #PH (FZ8)
|
309
|
+
11 => 'Manual 2', #PH (FZ8)
|
302
310
|
12 => 'Shade', #PH (FS7)
|
303
311
|
13 => 'Kelvin', #PeterK (NC)
|
312
|
+
14 => 'Manual 3', #forum9296
|
313
|
+
15 => 'Manual 4', #forum9296
|
314
|
+
# also seen 18,26 (forum9296)
|
315
|
+
19 => 'Auto (cool)', #PH (Leica C-Lux)
|
304
316
|
},
|
305
317
|
},
|
306
318
|
0x07 => {
|
@@ -336,7 +348,7 @@ my %shootingMode = (
|
|
336
348
|
'0 1' => '9-area', # (FS7)
|
337
349
|
'0 16' => '3-area (high speed)', # (FZ8)
|
338
350
|
'0 23' => '23-area', #PH (FZ47,NC)
|
339
|
-
|
351
|
+
'0 49' => '49-area', #20
|
340
352
|
'1 0' => 'Spot Focusing', # (FZ8)
|
341
353
|
'1 1' => '5-area', # (FZ8)
|
342
354
|
'16' => 'Normal?', # (only mode for DMC-LC20)
|
@@ -363,6 +375,8 @@ my %shootingMode = (
|
|
363
375
|
5 => 'Panning', #18
|
364
376
|
# GF1 also has a "Mode 3" - PH
|
365
377
|
6 => 'On, Mode 3', #PH (GX7, sensor shift?)
|
378
|
+
9 => 'Dual IS', #20
|
379
|
+
11 => 'Dual2 IS', #forum9298
|
366
380
|
},
|
367
381
|
},
|
368
382
|
0x1c => {
|
@@ -469,9 +483,12 @@ my %shootingMode = (
|
|
469
483
|
$val -= $h * 3600;
|
470
484
|
my $m = int($val / 60);
|
471
485
|
$val -= $m * 60;
|
472
|
-
my $
|
473
|
-
|
474
|
-
|
486
|
+
my $ss = sprintf('%05.2f', $val);
|
487
|
+
if ($ss >= 60) {
|
488
|
+
$ss = '00.00';
|
489
|
+
++$m >= 60 and $m -= 60, ++$h;
|
490
|
+
}
|
491
|
+
return sprintf("%s%.2d:%.2d:%s",$str,$h,$m,$ss);
|
475
492
|
},
|
476
493
|
PrintConvInv => sub {
|
477
494
|
my $val = shift;
|
@@ -617,6 +634,7 @@ my %shootingMode = (
|
|
617
634
|
2 => 'High (+1)',
|
618
635
|
3 => 'Lowest (-2)', #JD
|
619
636
|
4 => 'Highest (+2)', #JD
|
637
|
+
# 6 - seen for DC-S1/S1R (IB)
|
620
638
|
# 65531 - seen for LX100/FZ2500 "NR1" test shots at imaging-resource (PH)
|
621
639
|
# 0 - seen for FZ2500 "NR6D" test shots (PH)
|
622
640
|
},
|
@@ -629,7 +647,7 @@ my %shootingMode = (
|
|
629
647
|
2 => '10 s',
|
630
648
|
3 => '2 s',
|
631
649
|
4 => '10 s / 3 pictures', #17
|
632
|
-
# 258 - seen for FZ2500,TZ90 (PH)
|
650
|
+
# 258 - seen for FZ2500,TZ90,LeicaCLux (PH)
|
633
651
|
},
|
634
652
|
},
|
635
653
|
# 0x2f - values: 1 (LZ6,FX10K)
|
@@ -720,11 +738,12 @@ my %shootingMode = (
|
|
720
738
|
},
|
721
739
|
0x3c => { #PH
|
722
740
|
Name => 'ProgramISO', # (maybe should rename this ISOSetting?)
|
723
|
-
Writable => 'int16u',
|
741
|
+
Writable => 'int16u', # (new models store a long here)
|
724
742
|
PrintConv => {
|
725
743
|
OTHER => sub { shift },
|
726
744
|
65534 => 'Intelligent ISO', #PH (FS7)
|
727
745
|
65535 => 'n/a',
|
746
|
+
-1 => 'n/a',
|
728
747
|
},
|
729
748
|
},
|
730
749
|
0x3d => { #PH
|
@@ -773,7 +792,17 @@ my %shootingMode = (
|
|
773
792
|
# 12 => 'Multi Film'? (in the GH1 specs)
|
774
793
|
},
|
775
794
|
},
|
776
|
-
|
795
|
+
0x43 => { #forum9369
|
796
|
+
Name => 'JPEGQuality',
|
797
|
+
Writable => 'int16u',
|
798
|
+
PrintConv => {
|
799
|
+
0 => 'n/a (Movie)',
|
800
|
+
2 => 'High',
|
801
|
+
3 => 'Standard',
|
802
|
+
6 => 'Very High',
|
803
|
+
255 => 'n/a (RAW only)',
|
804
|
+
},
|
805
|
+
},
|
777
806
|
0x44 => {
|
778
807
|
Name => 'ColorTempKelvin',
|
779
808
|
Format => 'int16u',
|
@@ -873,7 +902,7 @@ my %shootingMode = (
|
|
873
902
|
ValueConv => '$val=~s/ +$//; $val', # trim trailing spaces
|
874
903
|
ValueConvInv => '$val',
|
875
904
|
},
|
876
|
-
# 0x55 - int16u: 1
|
905
|
+
# 0x55 - int16u: 1 (see forum9372)
|
877
906
|
# 0x57 - int16u: 0
|
878
907
|
0x59 => { #PH (FS7)
|
879
908
|
Name => 'Transform',
|
@@ -999,6 +1028,11 @@ my %shootingMode = (
|
|
999
1028
|
},
|
1000
1029
|
# 0x72,0x73,0x74,0x75,0x77,0x78: 0
|
1001
1030
|
# 0x76: 0, (3 for G6 with HDR on, ref 18)
|
1031
|
+
0x76 => { #18/21
|
1032
|
+
Name => 'HDRShot',
|
1033
|
+
Writable => 'int16u',
|
1034
|
+
PrintConv => { 0 => 'Off', 3 => 'On' },
|
1035
|
+
},
|
1002
1036
|
0x79 => { #PH (GH2)
|
1003
1037
|
Name => 'IntelligentD-Range',
|
1004
1038
|
Writable => 'int16u',
|
@@ -1057,6 +1091,12 @@ my %shootingMode = (
|
|
1057
1091
|
1 => 'On'
|
1058
1092
|
}
|
1059
1093
|
},
|
1094
|
+
0x8b => { #21
|
1095
|
+
Name => 'WBShiftIntelligentAuto',
|
1096
|
+
Writable => 'int16u',
|
1097
|
+
Format => 'int16s',
|
1098
|
+
Notes => 'value is -9 for blue to +9 for amber. Valid for Intelligent-Auto modes',
|
1099
|
+
},
|
1060
1100
|
0x8c => {
|
1061
1101
|
Name => 'AccelerometerZ',
|
1062
1102
|
Writable => 'int16u',
|
@@ -1103,6 +1143,12 @@ my %shootingMode = (
|
|
1103
1143
|
ValueConv => '-$val / 10',
|
1104
1144
|
ValueConvInv => '-$val * 10',
|
1105
1145
|
},
|
1146
|
+
0x92 => { #21 (forum9453)
|
1147
|
+
Name => 'WBShiftCreativeControl',
|
1148
|
+
Writable => 'int8u',
|
1149
|
+
Format => 'int8s',
|
1150
|
+
Notes => 'WB shift or style strength. Valid for Creative-Control modes',
|
1151
|
+
},
|
1106
1152
|
0x93 => { #18
|
1107
1153
|
Name => 'SweepPanoramaDirection',
|
1108
1154
|
Writable => 'int8u',
|
@@ -1153,17 +1199,32 @@ my %shootingMode = (
|
|
1153
1199
|
2 => 'Hybrid', #PH (GM1, 1st curtain electronic, 2nd curtain mechanical)
|
1154
1200
|
},
|
1155
1201
|
},
|
1202
|
+
# 0xa0 - undef[32]: AWB gains and black levels (ref forum9303)
|
1156
1203
|
0xa3 => { #18
|
1157
1204
|
Name => 'ClearRetouchValue',
|
1158
1205
|
Writable => 'rational64u',
|
1159
1206
|
# undef if ClearRetouch is off, 0 if it is on
|
1160
1207
|
},
|
1208
|
+
0xa7 => { #forum9374 (conversion table for 14- to 16-bit mapping)
|
1209
|
+
Name => 'OutputLUT',
|
1210
|
+
Binary => 1,
|
1211
|
+
Notes => q{
|
1212
|
+
2-column by 432-row binary lookup table of unsigned short values for
|
1213
|
+
converting to 16-bit output (1st column) from 14 bits (2nd column) with
|
1214
|
+
camera contrast
|
1215
|
+
},
|
1216
|
+
},
|
1161
1217
|
0xab => { #18
|
1162
1218
|
Name => 'TouchAE',
|
1163
1219
|
Writable => 'int16u',
|
1164
1220
|
PrintConv => { 0 => 'Off', 1 => 'On' },
|
1165
1221
|
},
|
1166
|
-
|
1222
|
+
0xad => { #forum9360
|
1223
|
+
Name => 'HighlightShadow',
|
1224
|
+
Writable => 'int16u',
|
1225
|
+
Count => 2,
|
1226
|
+
},
|
1227
|
+
0xaf => { #PH (is this in UTC maybe? -- sometimes different time zone other times)
|
1167
1228
|
Name => 'TimeStamp',
|
1168
1229
|
Writable => 'string',
|
1169
1230
|
Groups => { 2 => 'Time' },
|
@@ -1171,13 +1232,43 @@ my %shootingMode = (
|
|
1171
1232
|
PrintConv => '$self->ConvertDateTime($val)',
|
1172
1233
|
PrintConvInv => '$self->InverseDateTime($val)',
|
1173
1234
|
},
|
1235
|
+
0xb4 => { #forum9429
|
1236
|
+
Name => 'MultiExposure',
|
1237
|
+
Writable => 'int16u',
|
1238
|
+
PrintConv => { 0 => 'n/a', 1 => 'Off', 2 => 'On' },
|
1239
|
+
},
|
1240
|
+
0xb9 => { #forum9425
|
1241
|
+
Name => 'RedEyeRemoval',
|
1242
|
+
Writable => 'int16u',
|
1243
|
+
PrintConv => { 0 => 'Off', 1 => 'On' },
|
1244
|
+
},
|
1245
|
+
0xbb => { #forum9282
|
1246
|
+
Name => 'VideoBurstMode',
|
1247
|
+
Writable => 'int32u',
|
1248
|
+
PrintHex => 1,
|
1249
|
+
PrintConv => {
|
1250
|
+
0x01 => 'Off',
|
1251
|
+
0x04 => 'Post Focus',
|
1252
|
+
0x18 => '4K Burst',
|
1253
|
+
0x28 => '4K Burst (Start/Stop)',
|
1254
|
+
0x48 => '4K Pre-burst',
|
1255
|
+
0x108 => 'Loop Recording',
|
1256
|
+
},
|
1257
|
+
},
|
1258
|
+
0xbc => { #forum9282
|
1259
|
+
Name => 'DiffractionCorrection',
|
1260
|
+
Writable => 'int16u',
|
1261
|
+
PrintConv => { 0 => 'Off', 1 => 'Auto' },
|
1262
|
+
},
|
1174
1263
|
0x0e00 => {
|
1175
1264
|
Name => 'PrintIM',
|
1176
1265
|
Description => 'Print Image Matching',
|
1177
1266
|
Writable => 0,
|
1178
|
-
SubDirectory => {
|
1179
|
-
|
1180
|
-
|
1267
|
+
SubDirectory => { TagTable => 'Image::ExifTool::PrintIM::Main' },
|
1268
|
+
},
|
1269
|
+
0x2003 => { #21
|
1270
|
+
Name => 'TimeInfo',
|
1271
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Panasonic::TimeInfo' },
|
1181
1272
|
},
|
1182
1273
|
0x8000 => { #PH
|
1183
1274
|
Name => 'MakerNoteVersion',
|
@@ -1192,9 +1283,16 @@ my %shootingMode = (
|
|
1192
1283
|
%shootingMode,
|
1193
1284
|
},
|
1194
1285
|
},
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1286
|
+
0x8002 => { #21
|
1287
|
+
Name => 'HighlightWarning',
|
1288
|
+
Writable => 'int16u',
|
1289
|
+
PrintConv => { 0 => 'Disabled', 1 => 'No', 2 => 'Yes' },
|
1290
|
+
},
|
1291
|
+
0x8003 => { #21
|
1292
|
+
Name => 'DarkFocusEnvironment',
|
1293
|
+
Writable => 'int16u',
|
1294
|
+
PrintConv => { 1 => 'No', 2 => 'Yes' },
|
1295
|
+
},
|
1198
1296
|
0x8004 => { #PH/JD
|
1199
1297
|
Name => 'WBRedLevel',
|
1200
1298
|
Writable => 'int16u',
|
@@ -1207,11 +1305,11 @@ my %shootingMode = (
|
|
1207
1305
|
Name => 'WBBlueLevel',
|
1208
1306
|
Writable => 'int16u',
|
1209
1307
|
},
|
1210
|
-
0x8007 => { #PH
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
},
|
1308
|
+
#0x8007 => { #PH - questionable [disabled because it conflicts with EXIF in too many samples]
|
1309
|
+
# Name => 'FlashFired',
|
1310
|
+
# Writable => 'int16u',
|
1311
|
+
# PrintConv => { 0 => 'Yes', 1 => 'No' },
|
1312
|
+
#},
|
1215
1313
|
0x8008 => { #PH (TZ5/FS7)
|
1216
1314
|
# (tags 0x3b, 0x3e, 0x8008 and 0x8009 have the same values in all my samples - PH)
|
1217
1315
|
Name => 'TextStamp',
|
@@ -1356,6 +1454,10 @@ my %shootingMode = (
|
|
1356
1454
|
GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
|
1357
1455
|
WRITABLE => 1,
|
1358
1456
|
NOTES => 'These tags are used by the Leica R8 and R9 digital backs.',
|
1457
|
+
0x0b => { #IB
|
1458
|
+
Name => 'SerialInfo',
|
1459
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Panasonic::SerialInfo' },
|
1460
|
+
},
|
1359
1461
|
0x0d => {
|
1360
1462
|
Name => 'WB_RGBLevels',
|
1361
1463
|
Writable => 'int16u',
|
@@ -1363,6 +1465,18 @@ my %shootingMode = (
|
|
1363
1465
|
},
|
1364
1466
|
);
|
1365
1467
|
|
1468
|
+
# Leica serial number info (ref IB)
|
1469
|
+
%Image::ExifTool::Panasonic::SerialInfo = (
|
1470
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
1471
|
+
GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
|
1472
|
+
TAG_PREFIX => 'Leica_SerialInfo',
|
1473
|
+
FIRST_ENTRY => 0,
|
1474
|
+
4 => {
|
1475
|
+
Name => 'SerialNumber',
|
1476
|
+
Format => 'string[8]',
|
1477
|
+
}
|
1478
|
+
);
|
1479
|
+
|
1366
1480
|
# Leica type4 maker notes (ref PH) (M9)
|
1367
1481
|
%Image::ExifTool::Panasonic::Leica4 = (
|
1368
1482
|
WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
|
@@ -1566,6 +1680,38 @@ my %shootingMode = (
|
|
1566
1680
|
# 0x3903 - larger binary data block
|
1567
1681
|
);
|
1568
1682
|
|
1683
|
+
# time stamp information (ref 21)
|
1684
|
+
%Image::ExifTool::Panasonic::TimeInfo = (
|
1685
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
1686
|
+
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
|
1687
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
1688
|
+
GROUPS => { 0 => 'MakerNotes', 1 => 'Panasonic', 2 => 'Image' },
|
1689
|
+
FIRST_ENTRY => 0,
|
1690
|
+
WRITABLE => 1,
|
1691
|
+
0 => {
|
1692
|
+
Name => 'PanasonicDateTime',
|
1693
|
+
Groups => { 2 => 'Time' },
|
1694
|
+
Shift => 'Time',
|
1695
|
+
Format => 'undef[8]',
|
1696
|
+
RawConv => '$val =~ /^\0/ ? undef : $val',
|
1697
|
+
ValueConv => 'sprintf("%s:%s:%s %s:%s:%s.%s", unpack "H4H2H2H2H2H2H2", $val)',
|
1698
|
+
ValueConvInv => q{
|
1699
|
+
$val =~ s/[-+].*//; # remove time zone
|
1700
|
+
$val =~ tr/0-9//dc; # remove non-digits
|
1701
|
+
$val = pack("H*",$val);
|
1702
|
+
$val .= "\0" while length $val < 8;
|
1703
|
+
return $val;
|
1704
|
+
},
|
1705
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
1706
|
+
PrintConvInv => '$self->InverseDateTime($val)',
|
1707
|
+
},
|
1708
|
+
# 8 - 8 bytes usually 8 x 0xff (spot for another date/time?)
|
1709
|
+
16 => {
|
1710
|
+
Name => 'TimeLapseShotNumber',
|
1711
|
+
Format => 'int32u',
|
1712
|
+
},
|
1713
|
+
);
|
1714
|
+
|
1569
1715
|
%Image::ExifTool::Panasonic::Data1 = (
|
1570
1716
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
1571
1717
|
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
|
@@ -1576,10 +1722,10 @@ my %shootingMode = (
|
|
1576
1722
|
FIRST_ENTRY => 0,
|
1577
1723
|
0x0016 => {
|
1578
1724
|
Name => 'LensType',
|
1579
|
-
|
1725
|
+
Format => 'int32u',
|
1580
1726
|
Priority => 0,
|
1581
1727
|
SeparateTable => 1,
|
1582
|
-
ValueConv => '($val >> 2) . " " . ($val & 0x3)',
|
1728
|
+
ValueConv => '(($val >> 2) & 0xffff) . " " . ($val & 0x3)',
|
1583
1729
|
ValueConvInv => \&LensTypeConvInv,
|
1584
1730
|
PrintConv => \%leicaLensTypes,
|
1585
1731
|
},
|
@@ -1601,14 +1747,26 @@ my %shootingMode = (
|
|
1601
1747
|
PRIORITY => 0,
|
1602
1748
|
NOTES => 'This information is written by the X1, X2, X VARIO and T.',
|
1603
1749
|
0x0303 => {
|
1604
|
-
Name => '
|
1750
|
+
Name => 'LensType',
|
1605
1751
|
Condition => '$format eq "string"',
|
1606
1752
|
Notes => 'Leica T only',
|
1607
1753
|
Writable => 'string',
|
1608
1754
|
},
|
1755
|
+
# 0x0304 - int8u[1]: may be M-lens ID for Leica SL, mounted through "M-adapter L" (ref IB)
|
1756
|
+
# --> int8u[4] for some models (maybe not lens ID for these?) - PH
|
1757
|
+
# (see http://us.leica-camera.com/Photography/Leica-APS-C/Lenses-for-Leica-TL/L-Adapters/M-Adapter-L)
|
1758
|
+
# 58 = 'Leica Noctilux-M 75mm F1.25 ASPH (Typ 601) on Leica SL
|
1759
|
+
0x0305 => { #IB
|
1760
|
+
Name => 'SerialNumber',
|
1761
|
+
Writable => 'int32u',
|
1762
|
+
},
|
1609
1763
|
# 0x0406 - saturation or sharpness
|
1610
1764
|
0x0407 => { Name => 'OriginalFileName', Writable => 'string' },
|
1611
1765
|
0x0408 => { Name => 'OriginalDirectory',Writable => 'string' },
|
1766
|
+
0x040a => { #IB
|
1767
|
+
Name => 'FocusInfo',
|
1768
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Panasonic::FocusInfo' },
|
1769
|
+
},
|
1612
1770
|
# 0x040b - related to white balance
|
1613
1771
|
0x040d => {
|
1614
1772
|
Name => 'ExposureMode',
|
@@ -1631,6 +1789,16 @@ my %shootingMode = (
|
|
1631
1789
|
# 0x0411 - int8u[4]: first number is FilmMode (1=Standard,2=Vivid,3=Natural,4=BW Natural,5=BW High Contrast)
|
1632
1790
|
0x0412 => { Name => 'FilmMode', Writable => 'string' },
|
1633
1791
|
0x0413 => { Name => 'WB_RGBLevels', Writable => 'rational64u', Count => 3 },
|
1792
|
+
0x0500 => {
|
1793
|
+
Name => 'InternalSerialNumber',
|
1794
|
+
Writable => 'undef',
|
1795
|
+
PrintConv => q{
|
1796
|
+
return $val unless $val=~/^(.{3})(\d{2})(\d{2})(\d{2})(\d{4})/;
|
1797
|
+
my $yr = $2 + ($2 < 70 ? 2000 : 1900);
|
1798
|
+
return "($1) $yr:$3:$4 no. $5";
|
1799
|
+
},
|
1800
|
+
PrintConvInv => '$_=$val; tr/A-Z0-9//dc; s/(.{3})(19|20)/$1/; $_',
|
1801
|
+
},
|
1634
1802
|
);
|
1635
1803
|
|
1636
1804
|
# Leica type5 ShotInfo (ref PH) (X2)
|
@@ -1648,6 +1816,34 @@ my %shootingMode = (
|
|
1648
1816
|
},
|
1649
1817
|
);
|
1650
1818
|
|
1819
|
+
# Leica type5 FocusInfo (ref IB)
|
1820
|
+
%Image::ExifTool::Panasonic::FocusInfo = (
|
1821
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
1822
|
+
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
|
1823
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
1824
|
+
GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
|
1825
|
+
TAG_PREFIX => 'Leica_FocusInfo',
|
1826
|
+
FIRST_ENTRY => 0,
|
1827
|
+
WRITABLE => 1,
|
1828
|
+
FORMAT => 'int16u',
|
1829
|
+
0 => {
|
1830
|
+
Name => 'FocusDistance',
|
1831
|
+
ValueConv => '$val / 1000',
|
1832
|
+
ValueConvInv => '$val * 1000',
|
1833
|
+
PrintConv => '$val < 65535 ? "$val m" : "inf"',
|
1834
|
+
PrintConvInv => '$val =~ s/ ?m$//; IsFloat($val) ? $val : 65535',
|
1835
|
+
},
|
1836
|
+
1 => {
|
1837
|
+
Name => 'FocalLength',
|
1838
|
+
Priority => 0,
|
1839
|
+
RawConv => '$val ? $val : undef',
|
1840
|
+
ValueConv => '$val / 1000',
|
1841
|
+
ValueConvInv => '$val * 1000',
|
1842
|
+
PrintConv => 'sprintf("%.1f mm",$val)',
|
1843
|
+
PrintConvInv => '$val=~s/\s*mm$//;$val',
|
1844
|
+
},
|
1845
|
+
);
|
1846
|
+
|
1651
1847
|
# Leica type6 maker notes (ref PH) (S2)
|
1652
1848
|
%Image::ExifTool::Panasonic::Leica6 = (
|
1653
1849
|
WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
|
@@ -1678,22 +1874,83 @@ my %shootingMode = (
|
|
1678
1874
|
Notes => 'unknown 320kB block, not copied to JPEG images',
|
1679
1875
|
Flags => [ 'Unknown', 'Binary', 'Drop' ],
|
1680
1876
|
},
|
1681
|
-
# 0x302 - same value as 4 unknown bytes at the end of JPEG or after the DNG TIFF header
|
1877
|
+
# 0x302 - same value as 4 unknown bytes at the end of JPEG or after the DNG TIFF header (ImageID, ref IB)
|
1682
1878
|
0x303 => {
|
1683
1879
|
Name => 'LensType',
|
1684
1880
|
Writable => 'string',
|
1685
1881
|
ValueConv => '$val=~s/ +$//; $val', # trim trailing spaces
|
1686
1882
|
ValueConvInv => '$val',
|
1687
1883
|
},
|
1688
|
-
|
1884
|
+
0x304 => { #IB
|
1885
|
+
Name => 'FocusDistance',
|
1886
|
+
Notes => 'focus distance in mm for most models, but cm for others',
|
1887
|
+
Writable => 'int32u',
|
1888
|
+
},
|
1889
|
+
0x311 => {
|
1890
|
+
Name => 'ExternalSensorBrightnessValue',
|
1891
|
+
Condition => '$$self{Model} =~ /Typ 006/',
|
1892
|
+
Notes => 'Leica S only',
|
1893
|
+
Format => 'rational64s', # (may be incorrectly unsigned in JPEG images)
|
1894
|
+
Writable => 'rational64s',
|
1895
|
+
PrintConv => 'sprintf("%.2f", $val)',
|
1896
|
+
PrintConvInv => '$val',
|
1897
|
+
},
|
1898
|
+
0x312 => {
|
1899
|
+
Name => 'MeasuredLV',
|
1900
|
+
Condition => '$$self{Model} =~ /Typ 006/',
|
1901
|
+
Notes => 'Leica S only',
|
1902
|
+
Format => 'rational64s', # (may be incorrectly unsigned in JPEG images)
|
1903
|
+
Writable => 'rational64s',
|
1904
|
+
PrintConv => 'sprintf("%.2f", $val)',
|
1905
|
+
PrintConvInv => '$val',
|
1906
|
+
},
|
1907
|
+
0x320 => {
|
1908
|
+
Name => 'FirmwareVersion',
|
1909
|
+
Condition => '$$self{Model} =~ /Typ 006/',
|
1910
|
+
Notes => 'Leica S only',
|
1911
|
+
Writable => 'int8u',
|
1912
|
+
Count => 4,
|
1913
|
+
PrintConv => '$val=~tr/ /./; $val',
|
1914
|
+
PrintConvInv => '$val=~tr/./ /; $val',
|
1915
|
+
},
|
1916
|
+
0x321 => { #IB
|
1917
|
+
Name => 'LensSerialNumber',
|
1918
|
+
Condition => '$$self{Model} =~ /Typ 006/',
|
1919
|
+
Notes => 'Leica S only',
|
1920
|
+
Writable => 'int32u',
|
1921
|
+
PrintConv => 'sprintf("%.10d",$val)',
|
1922
|
+
PrintConvInv => '$val',
|
1923
|
+
},
|
1924
|
+
# 0x321 - SerialNumber for Leica S? (ref IB)
|
1925
|
+
# 0x340 - same as 0x302 (ImageID, ref IB)
|
1689
1926
|
);
|
1690
1927
|
|
1691
|
-
# Leica type9 maker notes (ref
|
1928
|
+
# Leica type9 maker notes (ref IB) (S)
|
1692
1929
|
%Image::ExifTool::Panasonic::Leica9 = (
|
1693
1930
|
WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
|
1694
1931
|
CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
|
1695
1932
|
GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
|
1696
1933
|
NOTES => 'This information is written by the Leica S (Typ 007).',
|
1934
|
+
0x304 => {
|
1935
|
+
Name => 'FocusDistance',
|
1936
|
+
Notes => 'focus distance in mm for most models, but cm for others',
|
1937
|
+
Writable => 'int32u',
|
1938
|
+
},
|
1939
|
+
0x311 => {
|
1940
|
+
Name => 'ExternalSensorBrightnessValue',
|
1941
|
+
Format => 'rational64s', # (may be incorrectly unsigned in JPEG images)
|
1942
|
+
Writable => 'rational64s',
|
1943
|
+
PrintConv => 'sprintf("%.2f", $val)',
|
1944
|
+
PrintConvInv => '$val',
|
1945
|
+
},
|
1946
|
+
0x312 => {
|
1947
|
+
Name => 'MeasuredLV',
|
1948
|
+
Format => 'rational64s', # (may be incorrectly unsigned in JPEG images)
|
1949
|
+
Writable => 'rational64s',
|
1950
|
+
PrintConv => 'sprintf("%.2f", $val)',
|
1951
|
+
PrintConvInv => '$val',
|
1952
|
+
},
|
1953
|
+
# 0x340 - ImageUniqueID
|
1697
1954
|
);
|
1698
1955
|
|
1699
1956
|
# Type 2 tags (ref PH)
|
@@ -1868,6 +2125,17 @@ my %shootingMode = (
|
|
1868
2125
|
Format => 'string[16]',
|
1869
2126
|
RawConv => '$$self{Model} = $val',
|
1870
2127
|
},
|
2128
|
+
0x10 => { # (DC-FT7)
|
2129
|
+
Name => 'JPEG-likeData',
|
2130
|
+
# looks like a JPEG preview, but not a well-formed JPEG file
|
2131
|
+
Condition => '$$valPt =~ /^\xff\xd8\xff\xe1..Exif\0\0/s',
|
2132
|
+
Format => 'undef[$size-0x10]',
|
2133
|
+
SubDirectory => {
|
2134
|
+
TagTable => 'Image::ExifTool::Exif::Main',
|
2135
|
+
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
2136
|
+
Start => 12,
|
2137
|
+
},
|
2138
|
+
},
|
1871
2139
|
0x16 => {
|
1872
2140
|
Name => 'Model',
|
1873
2141
|
Condition => '$$self{LeicaLEIC}',
|
@@ -2318,7 +2586,7 @@ sub ProcessLeicaTrailer($;$)
|
|
2318
2586
|
$dirInfo{DirLen} += 8;
|
2319
2587
|
$$et{MAKER_NOTE_BYTE_ORDER} = GetByteOrder();
|
2320
2588
|
# rebuild maker notes (creates $$et{MAKER_NOTE_FIXUP})
|
2321
|
-
my $val = Image::ExifTool::Exif::RebuildMakerNotes($et, $tagTablePtr
|
2589
|
+
my $val = Image::ExifTool::Exif::RebuildMakerNotes($et, \%dirInfo, $tagTablePtr);
|
2322
2590
|
unless (defined $val) {
|
2323
2591
|
$et->Warn('Error rebuilding maker notes (may be corrupt)') if $len > 4;
|
2324
2592
|
$val = $buff,
|
@@ -2350,7 +2618,7 @@ Panasonic and Leica maker notes in EXIF information.
|
|
2350
2618
|
|
2351
2619
|
=head1 AUTHOR
|
2352
2620
|
|
2353
|
-
Copyright 2003-
|
2621
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
2354
2622
|
|
2355
2623
|
This library is free software; you can redistribute it and/or modify it
|
2356
2624
|
under the same terms as Perl itself.
|