summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorexiftool <phil@u88.n24.queensu.ca>2015-02-22 10:12:05 -0500
committerexiftool <phil@u88.n24.queensu.ca>2015-02-22 10:12:05 -0500
commitee0e0193e1e7834e3743678ea0e4ea1fd83b805b (patch)
tree7b15c12946b6faa55e9f0021a3714b719c0f51a1
parent82dd46c22f8065a4f65d0514cf294693d5aee8cd (diff)
Update to 9.86
-rw-r--r--Changes18
-rwxr-xr-xexiftool66
-rw-r--r--html/TagNames/Canon.html12
-rw-r--r--html/TagNames/DNG.html2
-rw-r--r--html/TagNames/EXIF.html2
-rw-r--r--html/TagNames/FujiFilm.html30
-rw-r--r--html/TagNames/Nikon.html6
-rw-r--r--html/TagNames/Olympus.html202
-rw-r--r--html/TagNames/Panasonic.html60
-rw-r--r--html/TagNames/Pentax.html6
-rw-r--r--html/TagNames/Samsung.html16
-rw-r--r--html/TagNames/Sigma.html68
-rw-r--r--html/exiftool_pod.html11
-rw-r--r--html/faq.html8
-rw-r--r--html/history.html19
-rw-r--r--html/index.html12
-rw-r--r--lib/Image/ExifTool.pm26
-rw-r--r--lib/Image/ExifTool/Canon.pm19
-rw-r--r--lib/Image/ExifTool/FujiFilm.pm13
-rw-r--r--lib/Image/ExifTool/Nikon.pm4
-rw-r--r--lib/Image/ExifTool/Olympus.pm22
-rw-r--r--lib/Image/ExifTool/Panasonic.pm7
-rw-r--r--lib/Image/ExifTool/Pentax.pm4
-rw-r--r--lib/Image/ExifTool/Samsung.pm81
-rw-r--r--lib/Image/ExifTool/Sigma.pm59
-rw-r--r--lib/Image/ExifTool/SigmaRaw.pm4
-rw-r--r--lib/Image/ExifTool/TagLookup.pm8
-rw-r--r--lib/Image/ExifTool/TagNames.pod6
-rw-r--r--perl-Image-ExifTool.spec2
-rw-r--r--pp_build_exe.args8
-rw-r--r--t/FujiFilm_4.out4
-rwxr-xr-xwindows_exiftool66
32 files changed, 544 insertions, 327 deletions
diff --git a/Changes b/Changes
index 656608de..e5516f92 100644
--- a/Changes
+++ b/Changes
@@ -7,6 +7,24 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
Note: The most recent production release is Version 9.76. (Other versions are
considered development releases, and are not uploaded to CPAN.)
+Feb. 22, 2015 - Version 9.86
+
+ - Added check for valid filename encoding when using wildcards in Windows
+ - Added support for Sigma X3F version 4.1 images
+ - Added a number of new Sigma LensType values (thanks LibRaw and Niels
+ Kristian Bech Jensen)
+ - Added a new Canon LensType (thanks Michael Tapes)
+ - Added a new Leica LensType (thanks LibRaw)
+ - Added a new Olympus CameraType
+ - Decode a couple more FujiFilm RAF tags (thanks Frank Markesteijn)
+ - Always preserve FileCreateDate when writing on Windows if Win32::API and
+ Win32API::File are available
+ - Changed names of and properly decode new Olympus Pitch/Roll tags
+ - Changed rounding method for rational values in an attempt to fix failed
+ tests on FreeBSD 10.1 and Perl 5.20.1 with uselongdouble enabled
+ - Resolved issue with duplicate SamsungModelID values
+ - Fixed problem with rounding of rational values on some platforms
+
Feb. 14, 2015 - Version 9.85
- Added a few new Pentax LensType's (thanks Louis Granboulan)
diff --git a/exiftool b/exiftool
index b4e39a2e..fbdfe7d5 100755
--- a/exiftool
+++ b/exiftool
@@ -12,7 +12,7 @@
use strict;
require 5.004;
-my $version = '9.85';
+my $version = '9.86';
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
my $exeDir;
@@ -151,7 +151,7 @@ my $outFormat; # -1=Canon format, 0=same-line, 1=tag names, 2=values only
my $outOpt; # output file or directory name
my $overwriteOrig; # flag to overwrite original file (1=overwrite, 2=in place)
my $pause; # pause before returning
-my $preserveTime; # flag to preserve times of updated files
+my $preserveTime; # flag to preserve times of updated files (2=preserve FileCreateDate only)
my $progress; # progress count
my $progressMax; # total number of files to process
my $progStr; # progress message string
@@ -463,6 +463,11 @@ $mt->Options(Duplicates => 0) unless %Image::ExifTool::UserDefined::Options
# default is to join lists if the List option was set in the config file
$joinLists = 1 if defined $mt->Options('List') and not $mt->Options('List');
+# preserve FileCreateDate if possible
+if (not $preserveTime and $^O eq 'MSWin32') {
+ $preserveTime = 2 if eval { require Win32::API } and eval { require Win32API::File };
+}
+
# parse command-line options in 2 passes...
# pass 1: set all of our ExifTool options
# pass 2: print all of our help and informational output (-list, -ver, etc)
@@ -2607,7 +2612,10 @@ sub SetImageInfo($$$)
# get file time if preserving it
my ($aTime, $mTime, $cTime);
- ($aTime, $mTime, $cTime) = $et->GetFileTime($file) if $preserveTime and $success;
+ if ($preserveTime and $success) {
+ ($aTime, $mTime, $cTime) = $et->GetFileTime($file);
+ $preserveTime == 2 and undef($aTime), undef($mTime);
+ }
if ($success == 1) {
# preserve the original file times
@@ -2714,7 +2722,7 @@ sub SetImageInfo($$$)
$et->Unlink($tmpFile);
++$countSameWr;
} else {
- $et->SetFileTime($outfile, $aTime, $mTime, $cTime) if defined $aTime;
+ $et->SetFileTime($outfile, $aTime, $mTime, $cTime) if $preserveTime;
if ($overwriteOrig) {
$et->Unlink($file) or Warn "Error erasing original $file\n";
}
@@ -3104,6 +3112,28 @@ sub CleanFilename($)
}
#------------------------------------------------------------------------------
+# Check for valid UTF-8 of a file name
+# Inputs: 0) string, 1) original encoding
+# Returns: 0=plain ASCII, 1=valid UTF-8, -1=invalid UTF-8 (and print warning)
+sub CheckUTF8($$)
+{
+ my ($file, $enc) = @_;
+ my $isUTF8 = 0;
+ if ($file =~ /[\x80-\xff]/) {
+ require Image::ExifTool::XMP;
+ $isUTF8 = Image::ExifTool::XMP::IsUTF8(\$file);
+ if ($isUTF8 < 0) {
+ if ($enc) {
+ Warn("Invalid filename encoding for $file\n");
+ } else {
+ WarnOnce(qq{FileName encoding not specified. Use "-charset FileName=CHARSET"\n});
+ }
+ }
+ }
+ return $isUTF8;
+}
+
+#------------------------------------------------------------------------------
# Process files in our @files list
# Inputs: 0) ExifTool ref, 1) list ref to just return full file names
sub ProcessFiles($;$)
@@ -3161,19 +3191,7 @@ sub ScanDir($$;$)
# (ReadDir will croak if there is a wildcard, so check for this)
if ($^O eq 'MSWin32' and $dir !~ /[*?]/) {
local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };;
- my $isUTF8 = 0;
- if ($dir =~ /[\x80-\xff]/) {
- require Image::ExifTool::XMP;
- $isUTF8 = Image::ExifTool::XMP::IsUTF8(\$dir);
- if ($isUTF8 < 0) {
- if ($enc) {
- Warn("Invalid encoding for directory name $dir\n");
- } else {
- WarnOnce(qq{FileName encoding not specified. Use "-charset FileName=CHARSET"\n});
- }
- }
- }
- if ($isUTF8 >= 0) {
+ if (CheckUTF8($dir, $enc) >= 0) {
if (eval { require Win32::FindFile }) {
@fileList = Win32::FindFile::ReadDir($dir);
$et->Options(CharsetFileName => 'UTF8'); # now using UTF8
@@ -3259,6 +3277,7 @@ sub FindFileWindows($$)
Warn "Wildcards don't work in the directory specification\n";
return ();
}
+ CheckUTF8($wildfile, $enc) >= 0 or return ();
local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };;
my @names = Win32::FindFile::FindFile($wildfile) or return ();
my ($rname, $nm, @files);
@@ -3269,7 +3288,7 @@ sub FindFileWindows($$)
# make sure that FindFile behaves
# (otherwise "*.jpg" matches things like "a.jpg_original"!)
next unless $nm =~ /^$rname$/;
- my $file = "$dir$nm";
+ my $file = "$dir$nm"; # add back directory name
push @files, $file;
$utf8FileName{$file} = 1; # flag this file name as UTF-8 encoded
}
@@ -4620,7 +4639,7 @@ with this command:
produces output like this:
- -- Generated by ExifTool 9.85 --
+ -- Generated by ExifTool 9.86 --
File: a.jpg - 2003:10:31 15:44:19
(f/5.6, 1/60s, ISO 100)
File: b.jpg - 2006:05:23 11:57:38
@@ -5140,10 +5159,11 @@ the B<-overwrite_original> option should be used instead unless necessary.
Preserve the filesystem modification date/time of the original file
(C<FileModifyDate>) when writing. Note that some filesystems store a
-creation date which is not preserved by this option, with the exception of
-Windows systems where Win32API::File and Win32::API are available. For
-other systems, the B<-overwrite_original_in_place> option may be used if
-necessary to preserve the creation date.
+creation date (C<FileCreateDate>) which is not affected by this option.
+This creation date is preserved only on Windows systems where Win32API::File
+and Win32::API are available. For other systems, the
+B<-overwrite_original_in_place> option may be used if necessary to preserve
+the creation date if necessary.
=item B<-password> I<PASSWD>
diff --git a/html/TagNames/Canon.html b/html/TagNames/Canon.html
index 94c76a8d..3136fb6f 100644
--- a/html/TagNames/Canon.html
+++ b/html/TagNames/Canon.html
@@ -1507,7 +1507,8 @@ attempting to identify the specific lens model.</p>
</tr><tr><td>490</td><td>= Canon EF 8-15mm f/4L USM</td>
</tr><tr><td>491</td><td>= Canon EF 300mm f/2.8L IS II USM</td>
</tr><tr><td>492</td><td>= Canon EF 400mm f/2.8L IS II USM</td>
-</tr><tr><td>493</td><td>= Canon EF 24-105mm f/4L IS USM</td>
+</tr><tr><td>493</td><td>= Canon EF 500mm f/4L IS II USM or EF 24-105mm f4L IS USM</td>
+</tr><tr><td>493.1</td><td>= Canon EF 24-105mm f/4L IS USM</td>
</tr><tr><td>494</td><td>= Canon EF 600mm f/4.0L IS II USM</td>
</tr><tr><td>495</td><td>= Canon EF 24-70mm f/2.8L II USM</td>
</tr><tr><td>496</td><td>= Canon EF 200-400mm f/4L IS USM</td>
@@ -5613,15 +5614,16 @@ may be 7, 9, 11, 19, 31, 45 or 61, depending on the camera model.</p>
<td>0 = Off (Manual Focus)
<br>1 = AF Point Expansion (surround)
<br>2 = Single-point AF
- <br>4 = Multi-point AF or AI AF
+ <br>4 = Auto
<br>5 = Face Detect AF
<br>6 = Face + Tracking
<br>7 = Zone AF
- <br>8 = AF Point Expansion (top/bottom/left/right)
+ <br>8 = AF Point Expansion (4 point)
<br>9 = Spot AF
+ <br>10 = AF Point Expansion (8 point)
<br>11 = Flexizone Multi
<br>13 = Flexizone Single
- <br>14 = Manual select Large Zone</td><td>&nbsp;&nbsp;</td></tr></table>
+ <br>14 = Large Zone AF</td><td>&nbsp;&nbsp;</td></tr></table>
</td></tr>
<tr>
<td class=r title='2 = 0x2'>2</td>
@@ -8560,7 +8562,7 @@ SX280.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 13, 2015</i>
+<br><i>Last revised Feb 22, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/DNG.html b/html/TagNames/DNG.html
index 5dcbf687..907acc6a 100644
--- a/html/TagNames/DNG.html
+++ b/html/TagNames/DNG.html
@@ -279,7 +279,7 @@ information.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Dec 9, 2014</i>
+<br><i>Last revised Feb 22, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/EXIF.html b/html/TagNames/EXIF.html
index 78531d1c..905dceb1 100644
--- a/html/TagNames/EXIF.html
+++ b/html/TagNames/EXIF.html
@@ -3359,7 +3359,7 @@ these unless they already exist in the file)</span></span></td></tr>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Dec 9, 2014</i>
+<br><i>Last revised Feb 22, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/FujiFilm.html b/html/TagNames/FujiFilm.html
index 64b47aab..284548dd 100644
--- a/html/TagNames/FujiFilm.html
+++ b/html/TagNames/FujiFilm.html
@@ -601,55 +601,65 @@ RAF-format information.</p>
<td class=c>N</td>
<td>&nbsp;</td></tr>
<tr class=b>
+<td title='0x0131 = 305'>0x0131</td>
+<td>XTransLayout</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
<td title='0x2000 = 8192'>0x2000</td>
<td>WB_GRGBLevelsAuto</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
<td title='0x2100 = 8448'>0x2100</td>
<td>WB_GRGBLevelsDaylight</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
<td title='0x2200 = 8704'>0x2200</td>
<td>WB_GRGBLevelsCloudy</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
<td title='0x2300 = 8960'>0x2300</td>
<td>WB_GRGBLevelsDaylightFluor</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
<td title='0x2301 = 8961'>0x2301</td>
<td>WB_GRGBLevelsDayWhiteFluor</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
<td title='0x2302 = 8962'>0x2302</td>
<td>WB_GRGBLevelsWhiteFluorescent</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
<td title='0x2310 = 8976'>0x2310</td>
<td>WB_GRGBLevelsWarmWhiteFluor</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
<td title='0x2311 = 8977'>0x2311</td>
<td>WB_GRGBLevelsLivingRoomWarmWhiteFluor</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
<td title='0x2400 = 9216'>0x2400</td>
<td>WB_GRGBLevelsTungsten</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
<td title='0x2ff0 = 12272'>0x2ff0</td>
<td>WB_GRGBLevels</td>
<td class=c>N</td>
<td>&nbsp;</td></tr>
+<tr>
+<td title='0x9650 = 38480'>0x9650</td>
+<td>RawExposureBias</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
<tr class=b>
<td title='0xc000 = 49152'>0xc000</td>
<td>RAFData</td>
@@ -790,7 +800,7 @@ RAF-format information.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Dec 19, 2014</i>
+<br><i>Last revised Feb 22, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/Nikon.html b/html/TagNames/Nikon.html
index a09bb46a..3ce29fc3 100644
--- a/html/TagNames/Nikon.html
+++ b/html/TagNames/Nikon.html
@@ -2098,12 +2098,12 @@ firmware 1.01b.</p>
<td class=r title='13579 = 0x350b'>13579</td>
<td>RollAngle</td>
<td class=c>fixed32u</td>
-<td><span class=s><span class=n>(degrees of clockwise camera rotation)</span></span></td></tr>
+<td><span class=s><span class=n>(converted to degrees of clockwise camera rotation)</span></span></td></tr>
<tr>
<td class=r title='13583 = 0x350f'>13583</td>
<td>PitchAngle</td>
<td class=c>fixed32u</td>
-<td><span class=s><span class=n>(degrees of upward camera tilt)</span></span></td></tr>
+<td><span class=s><span class=n>(converted to degrees of upward camera tilt)</span></span></td></tr>
<tr class=b>
<td class=r title='13587 = 0x3513'>13587</td>
<td>YawAngle</td>
@@ -4739,7 +4739,7 @@ ExifTool to choose in these cases (see the
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 13, 2015</i>
+<br><i>Last revised Feb 18, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/Olympus.html b/html/TagNames/Olympus.html
index 855e6354..ff3d5cd8 100644
--- a/html/TagNames/Olympus.html
+++ b/html/TagNames/Olympus.html
@@ -737,280 +737,280 @@ Vivitar are not listed.</p>
<tr class=h><th>Value</th><th>CameraType</th><th>Value</th><th>CameraType</th><th>Value</th><th>CameraType</th></tr>
<tr><td>'D4028'</td><td>= X-2,C-50Z</td>
<td class=b>'D4388'</td><td class=b>= u550WP,S550WP</td>
-<td>'S0009'</td><td>= E-400</td>
+<td>'S0004'</td><td>= E-500</td>
</tr><tr><td>'D4029'</td><td>= E-20,E-20N,E-20P</td>
<td class=b>'D4390'</td><td class=b>= FE5000,X905</td>
-<td>'S0010'</td><td>= E-510</td>
+<td>'S0009'</td><td>= E-400</td>
</tr><tr><td>'D4034'</td><td>= C720UZ</td>
<td class=b>'D4391'</td><td class=b>= u5000</td>
-<td>'S0011'</td><td>= E-3</td>
+<td>'S0010'</td><td>= E-510</td>
</tr><tr><td>'D4040'</td><td>= E-1</td>
<td class=b>'D4392'</td><td class=b>= u7000,S7000</td>
-<td>'S0013'</td><td>= E-410</td>
+<td>'S0011'</td><td>= E-3</td>
</tr><tr><td>'D4041'</td><td>= E-300</td>
<td class=b>'D4396'</td><td class=b>= FE5010,X915</td>
-<td>'S0016'</td><td>= E-420</td>
+<td>'S0013'</td><td>= E-410</td>
</tr><tr><td>'D4083'</td><td>= C2Z,D520Z,C220Z</td>
<td class=b>'D4397'</td><td class=b>= FE25,X20</td>
-<td>'S0017'</td><td>= E-30</td>
+<td>'S0016'</td><td>= E-420</td>
</tr><tr><td>'D4106'</td><td>= u20D,S400D,u400D</td>
<td class=b>'D4398'</td><td class=b>= FE45,X40</td>
-<td>'S0018'</td><td>= E-520</td>
+<td>'S0017'</td><td>= E-30</td>
</tr><tr><td>'D4120'</td><td>= X-1</td>
<td class=b>'D4401'</td><td class=b>= XZ-1</td>
-<td>'S0019'</td><td>= E-P1</td>
+<td>'S0018'</td><td>= E-520</td>
</tr><tr><td>'D4122'</td><td>= u10D,S300D,u300D</td>
<td class=b>'D4402'</td><td class=b>= uT6010,ST6010</td>
-<td>'S0023'</td><td>= E-620</td>
+<td>'S0019'</td><td>= E-P1</td>
</tr><tr><td>'D4125'</td><td>= AZ-1</td>
<td class=b>'D4406'</td><td class=b>= u7010,S7010 / u7020,S7020</td>
-<td>'S0026'</td><td>= E-P2</td>
+<td>'S0023'</td><td>= E-620</td>
</tr><tr><td>'D4141'</td><td>= C150,D390</td>
<td class=b>'D4407'</td><td class=b>= FE4010,X930</td>
-<td>'S0027'</td><td>= E-PL1</td>
+<td>'S0026'</td><td>= E-P2</td>
</tr><tr><td>'D4193'</td><td>= C-5000Z</td>
<td class=b>'D4408'</td><td class=b>= X560WP</td>
-<td>'S0029'</td><td>= E-450</td>
+<td>'S0027'</td><td>= E-PL1</td>
</tr><tr><td>'D4194'</td><td>= X-3,C-60Z</td>
<td class=b>'D4409'</td><td class=b>= FE26,X21</td>
-<td>'S0030'</td><td>= E-600</td>
+<td>'S0029'</td><td>= E-450</td>
</tr><tr><td>'D4199'</td><td>= u30D,S410D,u410D</td>
<td class=b>'D4410'</td><td class=b>= FE4000,X920,X925</td>
-<td>'S0032'</td><td>= E-P3</td>
+<td>'S0030'</td><td>= E-600</td>
</tr><tr><td>'D4205'</td><td>= X450,D535Z,C370Z</td>
<td class=b>'D4411'</td><td class=b>= FE46,X41,X42</td>
-<td>'S0033'</td><td>= E-5</td>
+<td>'S0032'</td><td>= E-P3</td>
</tr><tr><td>'D4210'</td><td>= C160,D395</td>
<td class=b>'D4412'</td><td class=b>= FE5020,X935</td>
-<td>'S0034'</td><td>= E-PL2</td>
+<td>'S0033'</td><td>= E-5</td>
</tr><tr><td>'D4211'</td><td>= C725UZ</td>
<td class=b>'D4413'</td><td class=b>= uTough-3000</td>
-<td>'S0036'</td><td>= E-M5</td>
+<td>'S0034'</td><td>= E-PL2</td>
</tr><tr><td>'D4213'</td><td>= FerrariMODEL2003</td>
<td class=b>'D4414'</td><td class=b>= StylusTough-6020</td>
-<td>'S0038'</td><td>= E-PL3</td>
+<td>'S0036'</td><td>= E-M5</td>
</tr><tr><td>'D4216'</td><td>= u15D</td>
<td class=b>'D4415'</td><td class=b>= StylusTough-8010</td>
-<td>'S0039'</td><td>= E-PM1</td>
+<td>'S0038'</td><td>= E-PL3</td>
</tr><tr><td>'D4217'</td><td>= u25D</td>
<td class=b>'D4417'</td><td class=b>= u5010,S5010</td>
-<td>'S0040'</td><td>= E-PL1s</td>
+<td>'S0039'</td><td>= E-PM1</td>
</tr><tr><td>'D4220'</td><td>= u-miniD,Stylus V</td>
<td class=b>'D4418'</td><td class=b>= u7040,S7040</td>
-<td>'S0042'</td><td>= E-PL5</td>
+<td>'S0040'</td><td>= E-PL1s</td>
</tr><tr><td>'D4221'</td><td>= u40D,S500,uD500</td>
<td class=b>'D4419'</td><td class=b>= u9010,S9010</td>
-<td>'S0043'</td><td>= E-PM2</td>
+<td>'S0042'</td><td>= E-PL5</td>
</tr><tr><td>'D4231'</td><td>= FerrariMODEL2004</td>
<td class=b>'D4423'</td><td class=b>= FE4040</td>
-<td>'S0044'</td><td>= E-P5</td>
+<td>'S0043'</td><td>= E-PM2</td>
</tr><tr><td>'D4240'</td><td>= X500,D590Z,C470Z</td>
<td class=b>'D4424'</td><td class=b>= FE47,X43</td>
-<td>'S0045'</td><td>= E-PL6</td>
+<td>'S0044'</td><td>= E-P5</td>
</tr><tr><td>'D4244'</td><td>= uD800,S800</td>
<td class=b>'D4426'</td><td class=b>= FE4030,X950</td>
-<td>'S0046'</td><td>= E-PL7</td>
+<td>'S0045'</td><td>= E-PL6</td>
</tr><tr><td>'D4256'</td><td>= u720SW,S720SW</td>
<td class=b>'D4428'</td><td class=b>= FE5030,X965,X960</td>
-<td>'S0047'</td><td>= E-M1</td>
+<td>'S0046'</td><td>= E-PL7</td>
</tr><tr><td>'D4261'</td><td>= X600,D630,FE5500</td>
<td class=b>'D4430'</td><td class=b>= u7030,S7030</td>
-<td>'S0051'</td><td>= E-M10</td>
+<td>'S0047'</td><td>= E-M1</td>
</tr><tr><td>'D4262'</td><td>= uD600,S600</td>
<td class=b>'D4432'</td><td class=b>= SP600UZ</td>
-<td>'S0052'</td><td>= E-M5MarkII</td>
+<td>'S0051'</td><td>= E-M10</td>
</tr><tr><td>'D4301'</td><td>= u810/S810</td>
<td class=b>'D4434'</td><td class=b>= SP800UZ</td>
-<td>'SR45'</td><td>= D220</td>
+<td>'S0052'</td><td>= E-M5MarkII</td>
</tr><tr><td>'D4302'</td><td>= u710,S710</td>
<td class=b>'D4439'</td><td class=b>= FE4020,X940</td>
-<td>'SR55'</td><td>= D320L</td>
+<td>'SR45'</td><td>= D220</td>
</tr><tr><td>'D4303'</td><td>= u700,S700</td>
<td class=b>'D4442'</td><td class=b>= FE5035</td>
-<td>'SR83'</td><td>= D340L</td>
+<td>'SR55'</td><td>= D320L</td>
</tr><tr><td>'D4304'</td><td>= FE100,X710</td>
<td class=b>'D4448'</td><td class=b>= FE4050,X970</td>
-<td>'SR85'</td><td>= C830L,D340R</td>
+<td>'SR83'</td><td>= D340L</td>
</tr><tr><td>'D4305'</td><td>= FE110,X705</td>
<td class=b>'D4450'</td><td class=b>= FE5050,X985</td>
-<td>'SR852'</td><td>= C860L,D360L</td>
+<td>'SR85'</td><td>= C830L,D340R</td>
</tr><tr><td>'D4310'</td><td>= FE-130,X-720</td>
<td class=b>'D4454'</td><td class=b>= u-7050</td>
-<td>'SR872'</td><td>= C900Z,D400Z</td>
+<td>'SR852'</td><td>= C860L,D360L</td>
</tr><tr><td>'D4311'</td><td>= FE-140,X-725</td>
<td class=b>'D4464'</td><td class=b>= T10,X27</td>
-<td>'SR874'</td><td>= C960Z,D460Z</td>
+<td>'SR872'</td><td>= C900Z,D400Z</td>
</tr><tr><td>'D4312'</td><td>= FE150,X730</td>
<td class=b>'D4470'</td><td class=b>= FE5040,X980</td>
-<td>'SR951'</td><td>= C2000Z</td>
+<td>'SR874'</td><td>= C960Z,D460Z</td>
</tr><tr><td>'D4313'</td><td>= FE160,X735</td>
<td class=b>'D4472'</td><td class=b>= TG-310</td>
-<td>'SR952'</td><td>= C21</td>
+<td>'SR951'</td><td>= C2000Z</td>
</tr><tr><td>'D4314'</td><td>= u740,S740</td>
<td class=b>'D4474'</td><td class=b>= TG-610</td>
-<td>'SR953'</td><td>= C21T.commu</td>
+<td>'SR952'</td><td>= C21</td>
</tr><tr><td>'D4315'</td><td>= u750,S750</td>
<td class=b>'D4476'</td><td class=b>= TG-810</td>
-<td>'SR954'</td><td>= C2020Z</td>
+<td>'SR953'</td><td>= C21T.commu</td>
</tr><tr><td>'D4316'</td><td>= u730/S730</td>
<td class=b>'D4478'</td><td class=b>= VG145,VG140,D715</td>
-<td>'SR955'</td><td>= C990Z,D490Z</td>
+<td>'SR954'</td><td>= C2020Z</td>
</tr><tr><td>'D4317'</td><td>= FE115,X715</td>
<td class=b>'D4479'</td><td class=b>= VG130,D710</td>
-<td>'SR956'</td><td>= C211Z</td>
+<td>'SR955'</td><td>= C990Z,D490Z</td>
</tr><tr><td>'D4321'</td><td>= SP550UZ</td>
<td class=b>'D4480'</td><td class=b>= VG120,D705</td>
-<td>'SR959'</td><td>= C990ZS,D490Z</td>
+<td>'SR956'</td><td>= C211Z</td>
</tr><tr><td>'D4322'</td><td>= SP510UZ</td>
<td class=b>'D4482'</td><td class=b>= VR310,D720</td>
-<td>'SR95A'</td><td>= C2100UZ</td>
+<td>'SR959'</td><td>= C990ZS,D490Z</td>
</tr><tr><td>'D4324'</td><td>= FE170,X760</td>
<td class=b>'D4484'</td><td class=b>= VR320,D725</td>
-<td>'SR971'</td><td>= C100,D370</td>
+<td>'SR95A'</td><td>= C2100UZ</td>
</tr><tr><td>'D4326'</td><td>= FE200</td>
<td class=b>'D4486'</td><td class=b>= VR330,D730</td>
-<td>'SR973'</td><td>= C2,D230</td>
+<td>'SR971'</td><td>= C100,D370</td>
</tr><tr><td>'D4327'</td><td>= FE190/X750</td>
<td class=b>'D4488'</td><td class=b>= VG110,D700</td>
-<td>'SX151'</td><td>= E100RS</td>
+<td>'SR973'</td><td>= C2,D230</td>
</tr><tr><td>'D4328'</td><td>= u760,S760</td>
<td class=b>'D4490'</td><td class=b>= SP-610UZ</td>
-<td>'SX351'</td><td>= C3000Z / C3030Z</td>
+<td>'SX151'</td><td>= E100RS</td>
</tr><tr><td>'D4330'</td><td>= FE180/X745</td>
<td class=b>'D4492'</td><td class=b>= SZ-10</td>
-<td>'SX354'</td><td>= C3040Z</td>
+<td>'SX351'</td><td>= C3000Z / C3030Z</td>
</tr><tr><td>'D4331'</td><td>= u1000/S1000</td>
<td class=b>'D4494'</td><td class=b>= SZ-20</td>
-<td>'SX355'</td><td>= C2040Z</td>
+<td>'SX354'</td><td>= C3040Z</td>
</tr><tr><td>'D4332'</td><td>= u770SW,S770SW</td>
<td class=b>'D4496'</td><td class=b>= SZ-30MR</td>
-<td>'SX357'</td><td>= C700UZ</td>
+<td>'SX355'</td><td>= C2040Z</td>
</tr><tr><td>'D4333'</td><td>= FE240/X795</td>
<td class=b>'D4498'</td><td class=b>= SP-810UZ</td>
-<td>'SX358'</td><td>= C200Z,D510Z</td>
+<td>'SX357'</td><td>= C700UZ</td>
</tr><tr><td>'D4334'</td><td>= FE210,X775</td>
<td class=b>'D4500'</td><td class=b>= SZ-11</td>
-<td>'SX374'</td><td>= C3100Z,C3020Z</td>
+<td>'SX358'</td><td>= C200Z,D510Z</td>
</tr><tr><td>'D4336'</td><td>= FE230/X790</td>
<td class=b>'D4504'</td><td class=b>= TG-615</td>
-<td>'SX552'</td><td>= C4040Z</td>
+<td>'SX374'</td><td>= C3100Z,C3020Z</td>
</tr><tr><td>'D4337'</td><td>= FE220,X785</td>
<td class=b>'D4508'</td><td class=b>= TG-620</td>
-<td>'SX553'</td><td>= C40Z,D40Z</td>
+<td>'SX552'</td><td>= C4040Z</td>
</tr><tr><td>'D4338'</td><td>= u725SW,S725SW</td>
<td class=b>'D4510'</td><td class=b>= TG-820</td>
-<td>'SX556'</td><td>= C730UZ</td>
+<td>'SX553'</td><td>= C40Z,D40Z</td>
</tr><tr><td>'D4339'</td><td>= FE250/X800</td>
<td class=b>'D4512'</td><td class=b>= TG-1</td>
-<td>'SX558'</td><td>= C5050Z</td>
+<td>'SX556'</td><td>= C730UZ</td>
</tr><tr><td>'D4341'</td><td>= u780,S780</td>
<td class=b>'D4516'</td><td class=b>= SH-21</td>
-<td>'SX571'</td><td>= C120,D380</td>
+<td>'SX558'</td><td>= C5050Z</td>
</tr><tr><td>'D4343'</td><td>= u790SW,S790SW</td>
<td class=b>'D4519'</td><td class=b>= SZ-14</td>
-<td>'SX574'</td><td>= C300Z,D550Z</td>
+<td>'SX571'</td><td>= C120,D380</td>
</tr><tr><td>'D4344'</td><td>= u1020,S1020</td>
<td class=b>'D4520'</td><td class=b>= SZ-31MR</td>
-<td>'SX575'</td><td>= C4100Z,C4000Z</td>
+<td>'SX574'</td><td>= C300Z,D550Z</td>
</tr><tr><td>'D4346'</td><td>= FE15,X10</td>
<td class=b>'D4521'</td><td class=b>= SH-25MR</td>
-<td>'SX751'</td><td>= X200,D560Z,C350Z</td>
+<td>'SX575'</td><td>= C4100Z,C4000Z</td>
</tr><tr><td>'D4348'</td><td>= FE280,X820,C520</td>
<td class=b>'D4523'</td><td class=b>= SP-720UZ</td>
-<td>'SX752'</td><td>= X300,D565Z,C450Z</td>
+<td>'SX751'</td><td>= X200,D560Z,C350Z</td>
</tr><tr><td>'D4349'</td><td>= FE300,X830</td>
<td class=b>'D4529'</td><td class=b>= VG170</td>
-<td>'SX753'</td><td>= C750UZ</td>
+<td>'SX752'</td><td>= X300,D565Z,C450Z</td>
</tr><tr><td>'D4350'</td><td>= u820,S820</td>
<td class=b>'D4531'</td><td class=b>= XZ-2</td>
-<td>'SX754'</td><td>= C740UZ</td>
+<td>'SX753'</td><td>= C750UZ</td>
</tr><tr><td>'D4351'</td><td>= u1200,S1200</td>
<td class=b>'D4535'</td><td class=b>= SP-620UZ</td>
-<td>'SX755'</td><td>= C755UZ</td>
+<td>'SX754'</td><td>= C740UZ</td>
</tr><tr><td>'D4352'</td><td>= FE270,X815,C510</td>
<td class=b>'D4536'</td><td class=b>= TG-320</td>
-<td>'SX756'</td><td>= C5060WZ</td>
+<td>'SX755'</td><td>= C755UZ</td>
</tr><tr><td>'D4353'</td><td>= u795SW,S795SW</td>
<td class=b>'D4537'</td><td class=b>= VR340,D750</td>
-<td>'SX757'</td><td>= C8080WZ</td>
+<td>'SX756'</td><td>= C5060WZ</td>
</tr><tr><td>'D4354'</td><td>= u1030SW,S1030SW</td>
<td class=b>'D4538'</td><td class=b>= VG160,X990,D745</td>
-<td>'SX758'</td><td>= X350,D575Z,C360Z</td>
+<td>'SX757'</td><td>= C8080WZ</td>
</tr><tr><td>'D4355'</td><td>= SP560UZ</td>
<td class=b>'D4541'</td><td class=b>= SZ-12</td>
-<td>'SX759'</td><td>= X400,D580Z,C460Z</td>
+<td>'SX758'</td><td>= X350,D575Z,C360Z</td>
</tr><tr><td>'D4356'</td><td>= u1010,S1010</td>
<td class=b>'D4545'</td><td class=b>= VH410</td>
-<td>'SX75A'</td><td>= AZ-2ZOOM</td>
+<td>'SX759'</td><td>= X400,D580Z,C460Z</td>
</tr><tr><td>'D4357'</td><td>= u830,S830</td>
<td class=b>'D4546'</td><td class=b>= XZ-10</td>
-<td>'SX75B'</td><td>= D595Z,C500Z</td>
+<td>'SX75A'</td><td>= AZ-2ZOOM</td>
</tr><tr><td>'D4359'</td><td>= u840,S840</td>
<td class=b>'D4547'</td><td class=b>= TG-2</td>
-<td>'SX75C'</td><td>= X550,D545Z,C480Z</td>
+<td>'SX75B'</td><td>= D595Z,C500Z</td>
</tr><tr><td>'D4360'</td><td>= FE350WIDE,X865</td>
<td class=b>'D4548'</td><td class=b>= TG-830</td>
-<td>'SX75D'</td><td>= IR-300</td>
+<td>'SX75C'</td><td>= X550,D545Z,C480Z</td>
</tr><tr><td>'D4361'</td><td>= u850SW,S850SW</td>
<td class=b>'D4549'</td><td class=b>= TG-630</td>
-<td>'SX75F'</td><td>= C55Z,C5500Z</td>
+<td>'SX75D'</td><td>= IR-300</td>
</tr><tr><td>'D4362'</td><td>= FE340,X855,C560</td>
<td class=b>'D4550'</td><td class=b>= SH-50</td>
-<td>'SX75G'</td><td>= C170,D425</td>
+<td>'SX75F'</td><td>= C55Z,C5500Z</td>
</tr><tr><td>'D4363'</td><td>= FE320,X835,C540</td>
<td class=b>'D4553'</td><td class=b>= SZ-16,DZ-105</td>
-<td>'SX75J'</td><td>= C180,D435</td>
+<td>'SX75G'</td><td>= C170,D425</td>
</tr><tr><td>'D4364'</td><td>= SP570UZ</td>
<td class=b>'D4562'</td><td class=b>= SP-820UZ</td>
-<td>'SX771'</td><td>= C760UZ</td>
+<td>'SX75J'</td><td>= C180,D435</td>
</tr><tr><td>'D4366'</td><td>= FE330,X845,C550</td>
<td class=b>'D4566'</td><td class=b>= SZ-15</td>
-<td>'SX772'</td><td>= C770UZ</td>
+<td>'SX771'</td><td>= C760UZ</td>
</tr><tr><td>'D4368'</td><td>= FE310,X840,C530</td>
<td class=b>'D4572'</td><td class=b>= STYLUS1</td>
-<td>'SX773'</td><td>= C745UZ</td>
+<td>'SX772'</td><td>= C770UZ</td>
</tr><tr><td>'D4370'</td><td>= u1050SW,S1050SW</td>
<td class=b>'D4574'</td><td class=b>= TG-3</td>
-<td>'SX774'</td><td>= X250,D560Z,C350Z</td>
+<td>'SX773'</td><td>= C745UZ</td>
</tr><tr><td>'D4371'</td><td>= u1060,S1060</td>
<td class=b>'D4575'</td><td class=b>= TG-850</td>
-<td>'SX775'</td><td>= X100,D540Z,C310Z</td>
+<td>'SX774'</td><td>= X250,D560Z,C350Z</td>
</tr><tr><td>'D4372'</td><td>= FE370,X880,C575</td>
<td class=b>'D4579'</td><td class=b>= SP-100EE</td>
-<td>'SX776'</td><td>= C460ZdelSol</td>
+<td>'SX775'</td><td>= X100,D540Z,C310Z</td>
</tr><tr><td>'D4374'</td><td>= SP565UZ</td>
<td class=b>'D4580'</td><td class=b>= SH-60</td>
-<td>'SX777'</td><td>= C765UZ</td>
+<td>'SX776'</td><td>= C460ZdelSol</td>
</tr><tr><td>'D4377'</td><td>= u1040,S1040</td>
<td class=b>'D4581'</td><td class=b>= SH-1</td>
-<td>'SX77A'</td><td>= D555Z,C315Z</td>
+<td>'SX777'</td><td>= C765UZ</td>
</tr><tr><td>'D4378'</td><td>= FE360,X875,C570</td>
<td class=b>'D4582'</td><td class=b>= TG-835</td>
-<td>'SX851'</td><td>= C7070WZ</td>
+<td>'SX77A'</td><td>= D555Z,C315Z</td>
</tr><tr><td>'D4379'</td><td>= FE20,X15,C25</td>
<td class=b>'D4809'</td><td class=b>= C2500L</td>
-<td>'SX852'</td><td>= C70Z,C7000Z</td>
+<td>'SX851'</td><td>= C7070WZ</td>
</tr><tr><td>'D4380'</td><td>= uT6000,ST6000</td>
<td class=b>'D4842'</td><td class=b>= E-10</td>
-<td>'SX853'</td><td>= SP500UZ</td>
+<td>'SX852'</td><td>= C70Z,C7000Z</td>
</tr><tr><td>'D4381'</td><td>= uT8000,ST8000</td>
<td class=b>'D4856'</td><td class=b>= C-1</td>
-<td>'SX854'</td><td>= SP310</td>
+<td>'SX853'</td><td>= SP500UZ</td>
</tr><tr><td>'D4382'</td><td>= u9000,S9000</td>
<td class=b>'D4857'</td><td class=b>= C-1Z,D-150Z</td>
-<td>'SX855'</td><td>= SP350</td>
+<td>'SX854'</td><td>= SP310</td>
</tr><tr><td>'D4384'</td><td>= SP590UZ</td>
<td class=b>'DCHC'</td><td class=b>= D500L</td>
-<td>'SX873'</td><td>= SP320</td>
+<td>'SX855'</td><td>= SP350</td>
</tr><tr><td>'D4385'</td><td>= FE3010,X895</td>
<td class=b>'DCHT'</td><td class=b>= D600L / D620L</td>
-<td>'SX875'</td><td>= FE180/X745</td>
+<td>'SX873'</td><td>= SP320</td>
</tr><tr><td>'D4386'</td><td>= FE3000,X890</td>
+<td class=b>'K0055'</td><td class=b>= AIR-A01</td>
+<td>'SX875'</td><td>= FE180/X745</td>
+</tr><tr><td>'D4387'</td><td>= FE35,X30</td>
<td class=b>'S0003'</td><td class=b>= E-330</td>
<td>'SX876'</td><td>= FE190/X750</td>
-</tr><tr><td>'D4387'</td><td>= FE35,X30</td>
-<td class=b>'S0004'</td><td class=b>= E-500</td>
-<td>&nbsp;</td><td>&nbsp;</td>
</tr></table></td></tr></table></blockquote>
<h2><a name='TextInfo'>Olympus TextInfo Tags</a></h2>
@@ -1921,16 +1921,14 @@ the Make and Model are used to identify the extender)</span>
<br>1 = On</span></td></tr>
<tr class=b>
<td title='0x0903 = 2307'>0x0903</td>
-<td>LevelGaugeRoll</td>
-<td class=c>int16u</td>
-<td><span class=s>0 = Off
- <br>1 = On</span></td></tr>
+<td>RollAngle</td>
+<td class=c>int16s[2]</td>
+<td><span class=s><span class=n>(converted to degrees of clockwise camera rotation)</span></span></td></tr>
<tr>
<td title='0x0904 = 2308'>0x0904</td>
-<td>LevelGaugePitch</td>
-<td class=c>int16u</td>
-<td><span class=s>0 = Off
- <br>1 = On</span></td></tr>
+<td>PitchAngle</td>
+<td class=c>int16s[2]</td>
+<td><span class=s><span class=n>(converted to degrees of upward camera tilt)</span></span></td></tr>
<tr class=b>
<td title='0x0908 = 2312'>0x0908</td>
<td>DateTimeUTC</td>
@@ -3485,7 +3483,7 @@ like the LS-5, LS-10, LS-11.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 5, 2015</i>
+<br><i>Last revised Feb 18, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/Panasonic.html b/html/TagNames/Panasonic.html
index 66530bfb..55005460 100644
--- a/html/TagNames/Panasonic.html
+++ b/html/TagNames/Panasonic.html
@@ -696,12 +696,12 @@ L10 and LC80)</span></span><table class=cols><tr>
<td title='0x0090 = 144'>0x0090</td>
<td>RollAngle</td>
<td class=c>int16u</td>
-<td><span class=s><span class=n>(degrees of clockwise camera rotation)</span></span></td></tr>
+<td><span class=s><span class=n>(converted to degrees of clockwise camera rotation)</span></span></td></tr>
<tr>
<td title='0x0091 = 145'>0x0091</td>
<td>PitchAngle</td>
<td class=c>int16u</td>
-<td><span class=s><span class=n>(degrees of upward camera tilt)</span></span></td></tr>
+<td><span class=s><span class=n>(converted to degrees of upward camera tilt)</span></span></td></tr>
<tr class=b>
<td title='0x0093 = 147'>0x0093</td>
<td>SweepPanoramaDirection</td>
@@ -1134,57 +1134,59 @@ on the M9, or the focal length of some multi-focal lenses.</p>
<table class='inner sep' cellspacing=1>
<tr class=h><th>Value</th><th>LensType</th><th>Value</th><th>LensType</th></tr>
<tr><td>1</td><td>= Elmarit-M 21mm f/2.8</td>
-<td class=b>42</td><td class=b>= Tri-Elmar-M 28-35-50mm f/4 ASPH.</td>
-</tr><tr><td>3</td><td>= Elmarit-M 28mm f/2.8 (III)</td>
<td class=b>43</td><td class=b>= Summarit-M 35mm f/2.5</td>
-</tr><tr><td>4</td><td>= Tele-Elmarit-M 90mm f/2.8 (II)</td>
+</tr><tr><td>3</td><td>= Elmarit-M 28mm f/2.8 (III)</td>
<td class=b>44</td><td class=b>= Summarit-M 50mm f/2.5</td>
-</tr><tr><td>5</td><td>= Summilux-M 50mm f/1.4 (II)</td>
+</tr><tr><td>4</td><td>= Tele-Elmarit-M 90mm f/2.8 (II)</td>
<td class=b>45</td><td class=b>= Summarit-M 75mm f/2.5</td>
-</tr><tr><td>6</td><td>= Summicron-M 35mm f/2 (IV)</td>
+</tr><tr><td>5</td><td>= Summilux-M 50mm f/1.4 (II)</td>
<td class=b>46</td><td class=b>= Summarit-M 90mm f/2.5</td>
-</tr><tr><td>7</td><td>= Summicron-M 90mm f/2 (II)</td>
+</tr><tr><td>6</td><td>= Summicron-M 35mm f/2 (IV)</td>
<td class=b>47</td><td class=b>= Summilux-M 21mm f/1.4 ASPH.</td>
-</tr><tr><td>9</td><td>= Elmarit-M 135mm f/2.8 (I/II)</td>
+</tr><tr><td>7</td><td>= Summicron-M 90mm f/2 (II)</td>
<td class=b>48</td><td class=b>= Summilux-M 24mm f/1.4 ASPH.</td>
-</tr><tr><td>16</td><td>= Tri-Elmar-M 16-18-21mm f/4 ASPH.</td>
+</tr><tr><td>9</td><td>= Elmarit-M 135mm f/2.8 (I/II)</td>
<td class=b>49</td><td class=b>= Noctilux-M 50mm f/0.95 ASPH.</td>
-</tr><tr><td>23</td><td>= Summicron-M 50mm f/2 (III)</td>
+</tr><tr><td>16</td><td>= Tri-Elmar-M 16-18-21mm f/4 ASPH.</td>
<td class=b>50</td><td class=b>= Elmar-M 24mm f/3.8 ASPH.</td>
-</tr><tr><td>24</td><td>= Elmarit-M 21mm f/2.8 ASPH.</td>
+</tr><tr><td>23</td><td>= Summicron-M 50mm f/2 (III)</td>
<td class=b>51</td><td class=b>= Super-Elmar-M 21mm f/3.4 Asph</td>
-</tr><tr><td>25</td><td>= Elmarit-M 24mm f/2.8 ASPH.</td>
+</tr><tr><td>24</td><td>= Elmarit-M 21mm f/2.8 ASPH.</td>
<td class=b>52</td><td class=b>= Super-Elmar-M 18mm f/3.8 ASPH.</td>
-</tr><tr><td>26</td><td>= Summicron-M 28mm f/2 ASPH.</td>
+</tr><tr><td>25</td><td>= Elmarit-M 24mm f/2.8 ASPH.</td>
<td class=b>'0 0'</td><td class=b>= Uncoded lens</td>
-</tr><tr><td>27</td><td>= Elmarit-M 28mm f/2.8 (IV)</td>
+</tr><tr><td>26</td><td>= Summicron-M 28mm f/2 ASPH.</td>
<td class=b>'6 0'</td><td class=b>= Summilux-M 35mm f/1.4</td>
-</tr><tr><td>28</td><td>= Elmarit-M 28mm f/2.8 ASPH.</td>
+</tr><tr><td>27</td><td>= Elmarit-M 28mm f/2.8 (IV)</td>
<td class=b>'9 0'</td><td class=b>= Apo-Telyt-M 135mm f/3.4</td>
-</tr><tr><td>29</td><td>= Summilux-M 35mm f/1.4 ASPH.</td>
+</tr><tr><td>28</td><td>= Elmarit-M 28mm f/2.8 ASPH.</td>
<td class=b>'16 1'</td><td class=b>= Tri-Elmar-M 16-18-21mm f/4 ASPH. (at 16mm)</td>
-</tr><tr><td>30</td><td>= Summicron-M 35mm f/2 ASPH.</td>
+</tr><tr><td>29</td><td>= Summilux-M 35mm f/1.4 ASPH.</td>
<td class=b>'16 2'</td><td class=b>= Tri-Elmar-M 16-18-21mm f/4 ASPH. (at 18mm)</td>
-</tr><tr><td>31</td><td>= Noctilux-M 50mm f/1</td>
+</tr><tr><td>30</td><td>= Summicron-M 35mm f/2 ASPH.</td>
<td class=b>'16 3'</td><td class=b>= Tri-Elmar-M 16-18-21mm f/4 ASPH. (at 21mm)</td>
-</tr><tr><td>32</td><td>= Summilux-M 50mm f/1.4 ASPH.</td>
+</tr><tr><td>31</td><td>= Noctilux-M 50mm f/1</td>
<td class=b>'29 0'</td><td class=b>= Summilux-M 35mm f/1.4 ASPHERICAL</td>
-</tr><tr><td>33</td><td>= Summicron-M 50mm f/2 (IV, V)</td>
+</tr><tr><td>32</td><td>= Summilux-M 50mm f/1.4 ASPH.</td>
<td class=b>'31 0'</td><td class=b>= Noctilux-M 50mm f/1.2</td>
-</tr><tr><td>34</td><td>= Elmar-M 50mm f/2.8</td>
+</tr><tr><td>33</td><td>= Summicron-M 50mm f/2 (IV, V)</td>
<td class=b>'39 0'</td><td class=b>= Tele-Elmar-M 135mm f/4 (II)</td>
-</tr><tr><td>35</td><td>= Summilux-M 75mm f/1.4</td>
+</tr><tr><td>34</td><td>= Elmar-M 50mm f/2.8</td>
<td class=b>'41 3'</td><td class=b>= Apo-Summicron-M 50mm f/2 Asph</td>
-</tr><tr><td>36</td><td>= Apo-Summicron-M 75mm f/2 ASPH.</td>
+</tr><tr><td>35</td><td>= Summilux-M 75mm f/1.4</td>
<td class=b>'42 1'</td><td class=b>= Tri-Elmar-M 28-35-50mm f/4 ASPH. (at 28mm)</td>
-</tr><tr><td>37</td><td>= Apo-Summicron-M 90mm f/2 ASPH.</td>
+</tr><tr><td>36</td><td>= Apo-Summicron-M 75mm f/2 ASPH.</td>
<td class=b>'42 2'</td><td class=b>= Tri-Elmar-M 28-35-50mm f/4 ASPH. (at 35mm)</td>
-</tr><tr><td>38</td><td>= Elmarit-M 90mm f/2.8</td>
+</tr><tr><td>37</td><td>= Apo-Summicron-M 90mm f/2 ASPH.</td>
<td class=b>'42 3'</td><td class=b>= Tri-Elmar-M 28-35-50mm f/4 ASPH. (at 50mm)</td>
-</tr><tr><td>39</td><td>= Macro-Elmar-M 90mm f/4</td>
+</tr><tr><td>38</td><td>= Elmarit-M 90mm f/2.8</td>
<td class=b>'51 2'</td><td class=b>= Super-Elmar-M 14mm f/3.8 Asph</td>
-</tr><tr><td>40</td><td>= Macro-Adapter M</td>
+</tr><tr><td>39</td><td>= Macro-Elmar-M 90mm f/4</td>
<td class=b>'53 2'</td><td class=b>= Apo-Telyt-M 135mm f/3.4</td>
+</tr><tr><td>40</td><td>= Macro-Adapter M</td>
+<td class=b>'53 3'</td><td class=b>= Apo-Summicron-M 50mm f/2 (VI)</td>
+</tr><tr><td>42</td><td>= Tri-Elmar-M 28-35-50mm f/4 ASPH.</td>
+<td class=b>&nbsp;</td><td class=b>&nbsp;</td>
</tr></table></td></tr></table></blockquote>
<h2><a name='Leica3'>Panasonic Leica3 Tags</a></h2>
@@ -1682,7 +1684,7 @@ various Panasonic and Leica models.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Dec 23, 2014</i>
+<br><i>Last revised Feb 22, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/Pentax.html b/html/TagNames/Pentax.html
index 961c2e8f..009438d6 100644
--- a/html/TagNames/Pentax.html
+++ b/html/TagNames/Pentax.html
@@ -4062,12 +4062,12 @@ valid for other models.</p>
<td class=r title='1 = 0x1'>1</td>
<td>RollAngle</td>
<td class=c>int8s</td>
-<td><span class=s><span class=n>(degrees of clockwise camera rotation)</span></span></td></tr>
+<td><span class=s><span class=n>(converted to degrees of clockwise camera rotation)</span></span></td></tr>
<tr class=b>
<td class=r title='2 = 0x2'>2</td>
<td>PitchAngle</td>
<td class=c>int8s</td>
-<td><span class=s><span class=n>(degrees of upward camera tilt)</span></span></td></tr>
+<td><span class=s><span class=n>(converted to degrees of upward camera tilt)</span></span></td></tr>
<tr>
<td class=r title='5 = 0x5'>5</td>
<td>CompositionAdjustX</td>
@@ -4639,7 +4639,7 @@ stored as ASCII text in a format very similar to some HP models.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 13, 2015</i>
+<br><i>Last revised Feb 18, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/Samsung.html b/html/TagNames/Samsung.html
index 347178fa..03af8c62 100644
--- a/html/TagNames/Samsung.html
+++ b/html/TagNames/Samsung.html
@@ -91,21 +91,21 @@ information.</p>
<br>0x200131e = PL210, PL211 / VLUU PL210, PL211
<br>0x2701317 = PL20,PL21 / VLUU PL20,PL21
<br>0x2a0001b = WP10 / VLUU WP10 / AQ100
- <br>0x3000000 = WB800F
- <br>0x3a00018 = WB2200F
+ <br>0x3000000 = Various Models (0x3000000)
+ <br>0x3a00018 = Various Models (0x3a00018)
<br>0x400101f = ST1000 / ST1100 / VLUU ST1000 / CL65
<br>0x4001022 = ST550 / VLUU ST550 / TL225
- <br>0x4001025 = ST200 / ST200F / ST201 / ST201F / ST205F
+ <br>0x4001025 = Various Models (0x4001025)
<br>0x400103e = VLUU ST5500, ST5500, CL80
<br>0x4001041 = VLUU ST5000, ST5000, TL240
<br>0x4001043 = ST70 / VLUU ST70 / ST71
- <br>0x400130a = VLUU ST80, ST80
+ <br>0x400130a = Various Models (0x400130a)
<br>0x400130e = ST90,ST91 / VLUU ST90,ST91
<br>0x4001313 = VLUU ST95, ST95
<br>0x4a00015 = VLUU ST60
- <br>0x4a0135b = ST65 / VLUU ST65 / ST67
- <br>0x5000000 = ST700
- <br>0x5001038 = WB2000
+ <br>0x4a0135b = ST30, ST65 / VLUU ST65 / ST67
+ <br>0x5000000 = Various Models (0x5000000)
+ <br>0x5001038 = Various Models (0x5001038)
<br>0x500103a = WB650 / VLUU WB650 / WB660
<br>0x500103c = WB600 / VLUU WB600 / WB610
<br>0x500133e = WB150 / WB150F / WB152 / WB152F / WB151
@@ -597,7 +597,7 @@ such as the Galaxy S4.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Dec 15, 2014</i>
+<br><i>Last revised Feb 18, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/Sigma.html b/html/TagNames/Sigma.html
index 12ddb5b8..f14a4956 100644
--- a/html/TagNames/Sigma.html
+++ b/html/TagNames/Sigma.html
@@ -350,28 +350,76 @@ attempting to identify the specific lens model.</p>
<table class='inner sep' cellspacing=1>
<tr class=h><th>Value</th><th>LensType</th><th>Value</th><th>LensType</th></tr>
<tr><td>16</td><td>= Sigma 18-50mm F3.5-5.6 DC</td>
-<td class=b>581</td><td class=b>= Sigma 18-50mm F2.8 EX DC Macro</td>
+<td class=b>486</td><td class=b>= Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye</td>
+</tr><tr><td>106</td><td>= Sigma 150mm F2.8 EX DG OS HSM APO Macro</td>
+<td class=b>508</td><td class=b>= Sigma 70-300mm F4-5.6 APO DG Macro</td>
+</tr><tr><td>107</td><td>= Sigma APO Macro 180mm F2.8 EX DG OS HSM</td>
+<td class=b>509</td><td class=b>= Sigma 70-300mm F4-5.6 DG Macro</td>
</tr><tr><td>129</td><td>= Sigma 14mm F2.8 EX Aspherical</td>
-<td class=b>583</td><td class=b>= Sigma 17-50mm F2.8 EX DC OS</td>
+<td class=b>571</td><td class=b>= Sigma 24-70mm F2.8 IF EX DG HSM</td>
</tr><tr><td>131</td><td>= Sigma 17-70mm F2.8-4.5 DC Macro</td>
-<td class=b>1003</td><td class=b>= Sigma 19mm F2.8</td>
+<td class=b>572</td><td class=b>= Sigma 70-300mm F4-5.6 DG OS</td>
</tr><tr><td>145</td><td>= Sigma Lens (145)</td>
-<td class=b>1004</td><td class=b>= Sigma 30mm F2.8</td>
+<td class=b>581</td><td class=b>= Sigma 18-50mm F2.8 EX DC Macro</td>
</tr><tr><td>145.1</td><td>= Sigma 15-30mm F3.5-4.5 EX DG Aspherical</td>
-<td class=b>1005</td><td class=b>= Sigma 50mm F2.8 Macro</td>
+<td class=b>583</td><td class=b>= Sigma 17-50mm F2.8 EX DC OS HSM</td>
</tr><tr><td>145.2</td><td>= Sigma 18-50mm F2.8 EX DG</td>
-<td class=b>1007</td><td class=b>= Sigma 30mm F2.8</td>
+<td class=b>589</td><td class=b>= Sigma APO 70-200mm F2.8 EX DG OS HSM</td>
</tr><tr><td>145.3</td><td>= Sigma 20-40mm F2.8 EX DG</td>
-<td class=b>8900</td><td class=b>= Sigma 70-300mm F4-5.6 DG OS</td>
+<td class=b>595</td><td class=b>= Sigma 300-800mm F5.6 EX DG APO HSM</td>
+</tr><tr><td>152</td><td>= Sigma APO 800mm F5.6 EX DG HSM</td>
+<td class=b>597</td><td class=b>= Sigma 200-500mm F2.8 APO EX DG</td>
</tr><tr><td>165</td><td>= Sigma 70-200mm F2.8 EX</td>
-<td class=b>'A100'</td><td class=b>= Sigma 24-70mm F2.8 DG Macro</td>
+<td class=b>668</td><td class=b>= Sigma 17-70mm F2.8-4 DC Macro OS HSM</td>
</tr><tr><td>169</td><td>= Sigma 18-50mm F2.8 EX DC</td>
-<td class=b>&nbsp;</td><td class=b>&nbsp;</td>
+<td class=b>686</td><td class=b>= Sigma 50-200mm F4-5.6 DC OS HSM</td>
+</tr><tr><td>184</td><td>= Sigma 500mm F4.5 EX DG APO HSM</td>
+<td class=b>691</td><td class=b>= Sigma 50-150mm F2.8 EX DC APO HSM II</td>
+</tr><tr><td>195</td><td>= Sigma 300mm F2.8 EX APO DG HSM</td>
+<td class=b>692</td><td class=b>= Sigma APO 50-150mm F2.8 EX DC OS HSM</td>
+</tr><tr><td>201</td><td>= Sigma 10-20mm F4-5.6 EX DC HSM</td>
+<td class=b>728</td><td class=b>= Sigma 120-400mm F4.5-5.6 DG APO OS HSM</td>
+</tr><tr><td>202</td><td>= Sigma 10-20mm F3.5 EX DC HSM</td>
+<td class=b>737</td><td class=b>= Sigma 150-500mm F5-6.3 APO DG OS HSM</td>
+</tr><tr><td>203</td><td>= Sigma 8-16mm F4.5-5.6 DC HSM</td>
+<td class=b>738</td><td class=b>= Sigma 50-500mm F4.5-6.3 APO DG OS HSM</td>
+</tr><tr><td>204</td><td>= Sigma 12-24mm F4.5-5.6 DG HSM II</td>
+<td class=b>824</td><td class=b>= Sigma 1.4X Teleconverter EX APO DG</td>
+</tr><tr><td>258</td><td>= Sigma 105mm F2.8 EX DG OS HSM Macro</td>
+<td class=b>853</td><td class=b>= Sigma 18-125mm F3.8-5.6 DC OS HSM</td>
+</tr><tr><td>270</td><td>= Sigma 70mm F2.8 EX DG Macro</td>
+<td class=b>861</td><td class=b>= Sigma 18-50mm F2.8-4.5 DC OS HSM</td>
+</tr><tr><td>300</td><td>= Sigma 30mm F1.4 EX DC HSM</td>
+<td class=b>876</td><td class=b>= Sigma 2.0X Teleconverter EX APO DG</td>
+</tr><tr><td>310</td><td>= Sigma 50mm F1.4 EX DG HSM</td>
+<td class=b>880</td><td class=b>= Sigma 18-250mm F3.5-6.3 DC OS HSM</td>
+</tr><tr><td>320</td><td>= Sigma 85mm F1.4 EX DG HSM</td>
+<td class=b>882</td><td class=b>= Sigma 18-200mm F3.5-6.3 II DC OS HSM</td>
+</tr><tr><td>330</td><td>= Sigma 30mm F2.8 EX DN</td>
+<td class=b>883</td><td class=b>= Sigma 18-250mm F3.5-6.3 DC Macro OS HSM</td>
+</tr><tr><td>340</td><td>= Sigma 35mm F1.4 DG HSM</td>
+<td class=b>1003</td><td class=b>= Sigma 19mm F2.8</td>
+</tr><tr><td>346</td><td>= Sigma 50mm F2.8 EX DG Macro</td>
+<td class=b>1004</td><td class=b>= Sigma 30mm F2.8</td>
+</tr><tr><td>400</td><td>= Sigma 9mm F2.8 EX DN</td>
+<td class=b>1005</td><td class=b>= Sigma 50mm F2.8 Macro</td>
+</tr><tr><td>411</td><td>= Sigma 20mm F1.8 EX DG ASP RF</td>
+<td class=b>1006</td><td class=b>= Sigma 19mm F2.8</td>
+</tr><tr><td>432</td><td>= Sigma 24mm F1.8 EX DG ASP Macro</td>
+<td class=b>1007</td><td class=b>= Sigma 30mm F2.8</td>
+</tr><tr><td>440</td><td>= Sigma 28mm F1.8 EX DG ASP Macro</td>
+<td class=b>8900</td><td class=b>= Sigma 70-300mm F4-5.6 DG OS</td>
+</tr><tr><td>476</td><td>= Sigma 15mm F2.8 EX DG Diagonal Fisheye</td>
+<td class=b>'5A8'</td><td class=b>= Sigma 70-300mm F4-5.6 APO DG Macro (Motorized)</td>
+</tr><tr><td>477</td><td>= Sigma 10mm F2.8 EX DC HSM Fisheye</td>
+<td class=b>'5A9'</td><td class=b>= Sigma 70-300mm F4-5.6 DG Macro (Motorized)</td>
+</tr><tr><td>485</td><td>= Sigma 8mm F3.5 EX DG Circular Fisheye</td>
+<td class=b>'A100'</td><td class=b>= Sigma 24-70mm F2.8 DG Macro</td>
</tr></table></td></tr></table></blockquote>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Jun 26, 2014</i>
+<br><i>Last revised Feb 22, 2015</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/exiftool_pod.html b/html/exiftool_pod.html
index 464f8bf2..e3e2de68 100644
--- a/html/exiftool_pod.html
+++ b/html/exiftool_pod.html
@@ -868,7 +868,7 @@ are ignored. For example, this format file:</p>
exiftool -p test.fmt a.jpg b.jpg</pre>
<p>produces output like this:</p>
<pre>
- -- Generated by ExifTool 9.85 --
+ -- Generated by ExifTool 9.86 --
File: a.jpg - 2003:10:31 15:44:19
(f/5.6, 1/60s, ISO 100)
File: b.jpg - 2006:05:23 11:57:38
@@ -1376,10 +1376,11 @@ the <strong>-overwrite_original</strong> option should be used instead unless ne
<dd>
<p>Preserve the filesystem modification date/time of the original file
(<code>FileModifyDate</code>) when writing. Note that some filesystems store a
-creation date which is not preserved by this option, with the exception of
-Windows systems where Win32API::File and Win32::API are available. For
-other systems, the <strong>-overwrite_original_in_place</strong> option may be used if
-necessary to preserve the creation date.</p>
+creation date (<code>FileCreateDate</code>) which is not affected by this option.
+This creation date is preserved only on Windows systems where Win32API::File
+and Win32::API are available. For other systems, the
+<strong>-overwrite_original_in_place</strong> option may be used if necessary to preserve
+the creation date if necessary.</p>
</dd>
<dt><strong><a name="password_passwd" class="item"><strong>-password</strong> <em>PASSWD</em></a></strong></dt>
diff --git a/html/faq.html b/html/faq.html
index beece20b..acfb697d 100644
--- a/html/faq.html
+++ b/html/faq.html
@@ -700,6 +700,12 @@ If you see a "<code>LOADED!</code>" message when you run exiftool, but your new
tags still don't work, make sure you are using the proper tag name and that the
file you are writing can support this type of information.</blockquote>
+<blockquote>Note that all tag names in the config file are <b>case
+sensitive</b>. Specifically, the case must be correct for tag names in
+Composite tag Require/Desire entries. Also note that XMP tag names are
+generated automatically by capitalizing the tag ID unless the tag definition
+contains a "Name" entry.</blockquote>
+
<blockquote class=prog><b>Programmers</b>: To specify the config file directory from within
a Perl script when using the ExifTool API, set the <b>EXIFTOOL_HOME</b>
environment variable before loading the ExifTool module:
@@ -1514,7 +1520,7 @@ importing.</blockquote>
for more details.</blockquote>
<hr>
-<i>Last revised Jan 19, 2015</i>
+<i>Last revised Feb 19, 2015</i>
<p class='lf'><a href="index.html">&lt;-- Back to ExifTool home page</a></p>
</body>
</html>
diff --git a/html/history.html b/html/history.html
index 79b13e66..f4d7f301 100644
--- a/html/history.html
+++ b/html/history.html
@@ -17,6 +17,25 @@ considered development releases, and are not uploaded to <a href="http://search.
<!-- Use line width of 80 -->
<!-- *********************************************************************** -->
+<a name='v9.86'><b>Feb. 22, 2015 - Version 9.86</b></a>
+<ul>
+<li>Added check for valid filename encoding when using wildcards in Windows
+<li>Added support for Sigma X3F version 4.1 images
+<li>Added a number of new Sigma LensType values (thanks LibRaw and Niels
+ Kristian Bech Jensen)
+<li>Added a new Canon LensType (thanks Michael Tapes)
+<li>Added a new Leica LensType (thanks LibRaw)
+<li>Added a new Olympus CameraType
+<li>Decode a couple more FujiFilm RAF tags (thanks Frank Markesteijn)
+<li>Always preserve FileCreateDate when writing on Windows if Win32::API and
+ Win32API::File are available
+<li>Changed names of and properly decode new Olympus Pitch/Roll tags
+<li>Changed rounding method for rational values in an attempt to fix failed
+ tests on FreeBSD 10.1 and Perl 5.20.1 with uselongdouble enabled
+<li>Resolved issue with duplicate SamsungModelID values
+<li>Fixed problem with rounding of rational values on some platforms
+</ul>
+
<a name='v9.85'><b>Feb. 14, 2015 - Version 9.85</b></a>
<ul>
<li>Added a few new Pentax LensType's (thanks Louis Granboulan)
diff --git a/html/index.html b/html/index.html
index b8cd0f3b..68cb1887 100644
--- a/html/index.html
+++ b/html/index.html
@@ -74,9 +74,9 @@ span.sup { font-size: 0.8em; font-weight: normal; position: relative; top
</div>
<blockquote><table class='dl lg'><tr><td><b>
-<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-9.85.tar.gz/download">
-Download Version 9.85</a> (3.7 MB) -
-<a href="history.html">Feb. 14, 2015</a></b></td></tr></table></blockquote>
+<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-9.86.tar.gz/download">
+Download Version 9.86</a> (3.7 MB) -
+<a href="history.html">Feb. 22, 2015</a></b></td></tr></table></blockquote>
<p><b>ExifTool is a platform-independent <a href="ExifTool.html">Perl
library</a> plus a <a href="exiftool_pod.html">command-line application</a> for
@@ -125,8 +125,8 @@ distribution above.)</i></p>
<blockquote><table class='dl lg'><tr><td><b>
<a name="alone">Windows Executable:</a>
-<a href="http://sourceforge.net/projects/exiftool/files/exiftool-9.85.zip/download">
- exiftool-9.85.zip</a> (3.8 MB)</b></td></tr></table></blockquote>
+<a href="http://sourceforge.net/projects/exiftool/files/exiftool-9.86.zip/download">
+ exiftool-9.86.zip</a> (3.8 MB)</b></td></tr></table></blockquote>
<p><b>The stand-alone Windows executable</b> does not require Perl. Just
download and un-zip the archive then double-click on
@@ -138,7 +138,7 @@ of Windows (including Windows 7).</p>
<blockquote><table class='dl lg'><tr><td><b>
Mac OS X Package:
<a href="http://sourceforge.net/projects/exiftool/files/ExifTool-9.70.dmg/download">
- ExifTool-9.85.dmg</a> (2.4 MB)</b></td></tr></table></blockquote>
+ ExifTool-9.86.dmg</a> (2.4 MB)</b></td></tr></table></blockquote>
<p><b>The OS X package</b> installs the ExifTool command-line application and
libraries in /usr/bin. After installing, type "<code>exiftool</code>" in a
diff --git a/lib/Image/ExifTool.pm b/lib/Image/ExifTool.pm
index 62f19b9a..a44e6735 100644
--- a/lib/Image/ExifTool.pm
+++ b/lib/Image/ExifTool.pm
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
%jpegMarker %specialTags);
-$VERSION = '9.85';
+$VERSION = '9.86';
$RELEASE = '';
@ISA = qw(Exporter);
%EXPORT_TAGS = (
@@ -3052,7 +3052,7 @@ sub EncodeFileName($$;$)
}
#------------------------------------------------------------------------------
-# Modified perl open() routine
+# Modified perl open() routine to properly handle special characters in file names
# Inputs: 0) ExifTool ref, 1) filehandle, 2) filename,
# 3) mode: '<' or undef = read, '>' = write, '+<' = update
# Returns: true on success
@@ -3067,17 +3067,16 @@ sub Open($*$;$)
$mode = ($file =~ /\|$/ ? '' : '<') unless $mode;
if ($mode) {
if ($self->EncodeFileName($file)) {
+ # handle Windows Unicode file name
local $SIG{'__WARN__'} = \&SetWarning;
my ($access, $create);
if ($mode eq '>') {
- $access = Win32API::File::GENERIC_WRITE();
- $create = Win32API::File::CREATE_NEW();
- } elsif ($mode eq '+<') {
- $access = Win32API::File::GENERIC_READ() | Win32API::File::GENERIC_WRITE();
- $create = Win32API::File::OPEN_EXISTING();
+ $access = Win32API::File::GENERIC_WRITE();
+ $create = Win32API::File::CREATE_NEW();
} else {
- $access = Win32API::File::GENERIC_READ();
- $create = Win32API::File::OPEN_EXISTING();
+ $access = Win32API::File::GENERIC_READ();
+ $access |= Win32API::File::GENERIC_WRITE() if $mode eq '+<'; # update
+ $create = Win32API::File::OPEN_EXISTING();
}
my $wh = Win32API::File::CreateFileW($file, $access, 0, [], $create, 0, []);
return undef unless $wh;
@@ -3905,14 +3904,7 @@ sub IsRational($) { return scalar($_[0] =~ m{^[-+]?\d+/\d+$}); }
sub RoundFloat($$)
{
my ($val, $sig) = @_;
- $val == 0 and return 0;
- # handle integers specially (to avoid rounding problems with "10 ** $exp"
- # which caused failed tests with Perl 5.16 on MSWin32-x64-multi-thread)
- return $val if $val == int($val) and abs($val) < "1e$sig";
- my $sign = $val < 0 ? ($val=-$val, -1) : 1;
- my $log = log($val) / log(10);
- my $exp = int($log) - $sig + ($log > 0 ? 1 : 0);
- return $sign * int(10 ** ($log - $exp) + 0.5) * 10 ** $exp;
+ return sprintf("%.${sig}g", $val);
}
# Convert strings to floating point numbers (or undef)
diff --git a/lib/Image/ExifTool/Canon.pm b/lib/Image/ExifTool/Canon.pm
index 7fd55d1c..dca2ca8f 100644
--- a/lib/Image/ExifTool/Canon.pm
+++ b/lib/Image/ExifTool/Canon.pm
@@ -83,7 +83,7 @@ sub ProcessSerialData($$$);
sub ProcessFilters($$$);
sub SwapWords($);
-$VERSION = '3.43';
+$VERSION = '3.44';
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -386,7 +386,8 @@ $VERSION = '3.43';
490 => 'Canon EF 8-15mm f/4L USM', #Klaus Reinfeld
491 => 'Canon EF 300mm f/2.8L IS II USM', #42
492 => 'Canon EF 400mm f/2.8L IS II USM', #PH
- 493 => 'Canon EF 24-105mm f/4L IS USM', #PH
+ 493 => 'Canon EF 500mm f/4L IS II USM or EF 24-105mm f4L IS USM', #PH
+ 493.1 => 'Canon EF 24-105mm f/4L IS USM', #PH (should recheck this)
494 => 'Canon EF 600mm f/4.0L IS II USM', #PH
495 => 'Canon EF 24-70mm f/2.8L II USM', #PH
496 => 'Canon EF 200-400mm f/4L IS USM', #PH
@@ -5681,17 +5682,17 @@ my %ciMaxFocal = (
1 => 'AF Point Expansion (surround)', #PH
2 => 'Single-point AF',
# 3 - n/a
- 4 => 'Multi-point AF or AI AF', # AiAF on A570IS
+ 4 => 'Auto', #forum6237 (AiAF on A570IS)
5 => 'Face Detect AF',
- 6 => 'Face + Tracking', #PH (NC, EOS M)
+ 6 => 'Face + Tracking', #PH (NC, EOS M, live view)
7 => 'Zone AF', #46
- 8 => 'AF Point Expansion (top/bottom/left/right)', #46/PH
+ 8 => 'AF Point Expansion (4 point)', #46/PH/forum6237
9 => 'Spot AF', #46
- # 10 - also "Flexizone Multi"? (PH)
- 11 => 'Flexizone Multi', #PH (NC, EOS M)
+ 10 => 'AF Point Expansion (8 point)', #forum6237
+ 11 => 'Flexizone Multi', #PH (NC, EOS M, live view)
# 12 - also "Flexizone Multi"? (PH)
- 13 => 'Flexizone Single', #PH (EOS M default)
- 14 => 'Manual select Large Zone', #PH (7DmkII)
+ 13 => 'Flexizone Single', #PH (EOS M default, live view)
+ 14 => 'Large Zone AF', #PH/forum6237 (7DmkII)
},
},
2 => {
diff --git a/lib/Image/ExifTool/FujiFilm.pm b/lib/Image/ExifTool/FujiFilm.pm
index 6f23e334..bac8e3f9 100644
--- a/lib/Image/ExifTool/FujiFilm.pm
+++ b/lib/Image/ExifTool/FujiFilm.pm
@@ -26,7 +26,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
-$VERSION = '1.48';
+$VERSION = '1.49';
sub ProcessFujiDir($$$);
sub ProcessFaceRec($$$);
@@ -671,6 +671,13 @@ my %faceCategories = (
return $val;
},
},
+ 0x131 => { #5
+ Name => 'XTransLayout',
+ Description => 'X-Trans Layout',
+ Format => 'int8u',
+ Count => 36,
+ PrintConv => '$val =~ tr/012 /RGB/d; join " ", $val =~ /....../g',
+ },
0x2000 => { #9
Name => 'WB_GRGBLevelsAuto',
Format => 'int16u',
@@ -722,6 +729,10 @@ my %faceCategories = (
Format => 'int16u',
Count => 4,
},
+ 0x9650 => { #Frank Markesteijn
+ Name => 'RawExposureBias',
+ Format => 'rational32s',
+ },
0xc000 => {
Name => 'RAFData',
SubDirectory => {
diff --git a/lib/Image/ExifTool/Nikon.pm b/lib/Image/ExifTool/Nikon.pm
index 5dc14a79..80e3ec06 100644
--- a/lib/Image/ExifTool/Nikon.pm
+++ b/lib/Image/ExifTool/Nikon.pm
@@ -4567,7 +4567,7 @@ my %nikonFocalConversions = (
0x350b => {
Name => 'RollAngle',
Format => 'fixed32u',
- Notes => 'degrees of clockwise camera rotation',
+ Notes => 'converted to degrees of clockwise camera rotation',
ValueConv => '$val < 180 ? -$val : 360 - $val',
ValueConvInv => '$val <= 0 ? -$val : 360 - $val',
PrintConv => 'sprintf("%.1f", $val)',
@@ -4576,7 +4576,7 @@ my %nikonFocalConversions = (
0x350f => {
Name => 'PitchAngle',
Format => 'fixed32u',
- Notes => 'degrees of upward camera tilt',
+ Notes => 'converted to degrees of upward camera tilt',
ValueConv => '$val <= 180 ? $val : $val - 360',
ValueConvInv => '$val >= 0 ? $val : $val + 360',
PrintConv => 'sprintf("%.1f", $val)',
diff --git a/lib/Image/ExifTool/Olympus.pm b/lib/Image/ExifTool/Olympus.pm
index 9dff300c..af0eadfd 100644
--- a/lib/Image/ExifTool/Olympus.pm
+++ b/lib/Image/ExifTool/Olympus.pm
@@ -37,7 +37,7 @@ use vars qw($VERSION);
use Image::ExifTool::Exif;
use Image::ExifTool::APP12;
-$VERSION = '2.27';
+$VERSION = '2.28';
sub PrintLensInfo($$$);
@@ -346,6 +346,7 @@ my %olympusCameraTypes = (
D4857 => 'C-1Z,D-150Z',
DCHC => 'D500L',
DCHT => 'D600L / D620L',
+ K0055 => 'AIR-A01',
S0003 => 'E-330',
S0004 => 'E-500',
S0009 => 'E-400',
@@ -2321,14 +2322,21 @@ my %indexInfo = (
PrintConv => \%offOn,
},
0x903 => { #11
- Name => 'LevelGaugeRoll',
- Writable => 'int16u',
- PrintConv => \%offOn,
+ Name => 'RollAngle',
+ Notes => 'converted to degrees of clockwise camera rotation',
+ Writable => 'int16s',
+ Count => 2, # (second value is 0 if level gauge is off)
+ # negate to express as clockwise rotation
+ ValueConv => '$val=~s/ 1$// ? -$val/10 : "n/a"',
+ ValueConvInv => 'IsFloat($val) ? sprintf("%.0f 1",-$val*10) : "0 0"',
},
0x904 => { #11
- Name => 'LevelGaugePitch',
- Writable => 'int16u',
- PrintConv => \%offOn,
+ Name => 'PitchAngle',
+ Notes => 'converted to degrees of upward camera tilt',
+ Writable => 'int16s',
+ Count => 2, # (second value is 0 if level gauge is off)
+ ValueConv => '$val =~ s/ 1$// ? $val / 10 : "n/a"',
+ ValueConvInv => 'IsFloat($val) ? sprintf("%.0f 1",$val*10) : "0 0"',
},
0x908 => { #PH (NC, E-M1)
Name => 'DateTimeUTC',
diff --git a/lib/Image/ExifTool/Panasonic.pm b/lib/Image/ExifTool/Panasonic.pm
index fe09b5e3..cf92eeb5 100644
--- a/lib/Image/ExifTool/Panasonic.pm
+++ b/lib/Image/ExifTool/Panasonic.pm
@@ -32,7 +32,7 @@ use vars qw($VERSION %leicaLensTypes);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
-$VERSION = '1.89';
+$VERSION = '1.90';
sub ProcessLeicaLEIC($$$);
sub WhiteBalanceConv($;$$);
@@ -119,6 +119,7 @@ sub WhiteBalanceConv($;$$);
'51 2' => 'Super-Elmar-M 14mm f/3.8 Asph', # ? (ref 16)
52 => 'Super-Elmar-M 18mm f/3.8 ASPH.', # ? (ref PH/11)
'53 2' => 'Apo-Telyt-M 135mm f/3.4', #16
+ '53 3' => 'Apo-Summicron-M 50mm f/2 (VI)', #LibRaw
);
# M9 frame selector bits for each lens
@@ -1086,7 +1087,7 @@ my %shootingMode = (
Name => 'RollAngle',
Writable => 'int16u',
Format => 'int16s',
- Notes => 'degrees of clockwise camera rotation',
+ Notes => 'converted to degrees of clockwise camera rotation',
ValueConv => '$val / 10',
ValueConvInv => '$val * 10',
},
@@ -1094,7 +1095,7 @@ my %shootingMode = (
Name => 'PitchAngle',
Writable => 'int16u',
Format => 'int16s',
- Notes => 'degrees of upward camera tilt',
+ Notes => 'converted to degrees of upward camera tilt',
ValueConv => '-$val / 10',
ValueConvInv => '-$val * 10',
},
diff --git a/lib/Image/ExifTool/Pentax.pm b/lib/Image/ExifTool/Pentax.pm
index bdbdbf68..43b1df95 100644
--- a/lib/Image/ExifTool/Pentax.pm
+++ b/lib/Image/ExifTool/Pentax.pm
@@ -5078,13 +5078,13 @@ my %binaryDataAttrs = (
},
1 => {
Name => 'RollAngle',
- Notes => 'degrees of clockwise camera rotation',
+ Notes => 'converted to degrees of clockwise camera rotation',
ValueConv => '-$val / 2',
ValueConvInv => '-$val * 2',
},
2 => {
Name => 'PitchAngle',
- Notes => 'degrees of upward camera tilt',
+ Notes => 'converted to degrees of upward camera tilt',
ValueConv => '-$val / 2',
ValueConvInv => '-$val * 2',
},
diff --git a/lib/Image/ExifTool/Samsung.pm b/lib/Image/ExifTool/Samsung.pm
index 9afa3405..4c74aeb8 100644
--- a/lib/Image/ExifTool/Samsung.pm
+++ b/lib/Image/ExifTool/Samsung.pm
@@ -164,52 +164,57 @@ my %formatMinMax = (
0x200131e => 'PL210, PL211 / VLUU PL210, PL211',
0x2701317 => 'PL20,PL21 / VLUU PL20,PL21',
0x2a0001b => 'WP10 / VLUU WP10 / AQ100',
- 0x3000000 => 'DV150F / DV151F / DV155F',
- 0x3000000 => 'NX mini',
- 0x3000000 => 'NX3000',
- 0x3000000 => 'ST150F / ST151F / ST152F',
- 0x3000000 => 'WB250F / WB251F / WB252F',
- 0x3000000 => 'WB30F / WB31F / WB32F',
- 0x3000000 => 'WB350F / WB351F / WB352F',
- 0x3000000 => 'WB800F',
- 0x3a00018 => 'ES30 / VLUU ES30',
- 0x3a00018 => 'ES80 / ES81',
- 0x3a00018 => 'PL200 / VLUU PL200',
- 0x3a00018 => 'PL80 / VLUU PL80 / SL630 / PL81',
- 0x3a00018 => 'PL90 / VLUU PL90',
- 0x3a00018 => 'WB1100F / WB1101F / WB1102F',
- 0x3a00018 => 'WB2200F',
+ 0x3000000 => 'Various Models (0x3000000)',
+ #0x3000000 => 'DV150F / DV151F / DV155F',
+ #0x3000000 => 'NX mini',
+ #0x3000000 => 'NX3000',
+ #0x3000000 => 'ST150F / ST151F / ST152F',
+ #0x3000000 => 'WB250F / WB251F / WB252F',
+ #0x3000000 => 'WB30F / WB31F / WB32F',
+ #0x3000000 => 'WB350F / WB351F / WB352F',
+ #0x3000000 => 'WB800F',
+ 0x3a00018 => 'Various Models (0x3a00018)',
+ #0x3a00018 => 'ES30 / VLUU ES30',
+ #0x3a00018 => 'ES80 / ES81',
+ #0x3a00018 => 'PL200 / VLUU PL200',
+ #0x3a00018 => 'PL80 / VLUU PL80 / SL630 / PL81',
+ #0x3a00018 => 'PL90 / VLUU PL90',
+ #0x3a00018 => 'WB1100F / WB1101F / WB1102F',
+ #0x3a00018 => 'WB2200F',
0x400101f => 'ST1000 / ST1100 / VLUU ST1000 / CL65',
0x4001022 => 'ST550 / VLUU ST550 / TL225',
- 0x4001025 => 'DV300 / DV300F / DV305F',
- 0x4001025 => 'ST500 / VLUU ST500 / TL220',
- 0x4001025 => 'ST200 / ST200F / ST201 / ST201F / ST205F',
+ 0x4001025 => 'Various Models (0x4001025)',
+ #0x4001025 => 'DV300 / DV300F / DV305F',
+ #0x4001025 => 'ST500 / VLUU ST500 / TL220',
+ #0x4001025 => 'ST200 / ST200F / ST201 / ST201F / ST205F',
0x400103e => 'VLUU ST5500, ST5500, CL80',
0x4001041 => 'VLUU ST5000, ST5000, TL240',
0x4001043 => 'ST70 / VLUU ST70 / ST71',
- 0x400130a => 'VLUU ST100, ST100',
- 0x400130a => 'VLUU ST600, ST600',
- 0x400130a => 'VLUU ST80, ST80',
+ 0x400130a => 'Various Models (0x400130a)',
+ #0x400130a => 'VLUU ST100, ST100',
+ #0x400130a => 'VLUU ST600, ST600',
+ #0x400130a => 'VLUU ST80, ST80',
0x400130e => 'ST90,ST91 / VLUU ST90,ST91',
0x4001313 => 'VLUU ST95, ST95',
0x4a00015 => 'VLUU ST60',
- 0x4a0135b => 'ST30',
- 0x4a0135b => 'ST65 / VLUU ST65 / ST67',
- 0x5000000 => 'EX2F',
- 0x5000000 => 'NX1000',
- 0x5000000 => 'NX20',
- 0x5000000 => 'NX200',
- 0x5000000 => 'NX210',
- 0x5000000 => 'ST96',
- 0x5000000 => 'WB750',
- 0x5000000 => 'ST700',
- 0x5001038 => 'EK-GN120',
- 0x5001038 => 'HMX-E10',
- 0x5001038 => 'NX1',
- 0x5001038 => 'NX2000',
- 0x5001038 => 'NX30',
- 0x5001038 => 'NX300',
- 0x5001038 => 'WB2000',
+ 0x4a0135b => 'ST30, ST65 / VLUU ST65 / ST67',
+ 0x5000000 => 'Various Models (0x5000000)',
+ #0x5000000 => 'EX2F',
+ #0x5000000 => 'NX1000',
+ #0x5000000 => 'NX20',
+ #0x5000000 => 'NX200',
+ #0x5000000 => 'NX210',
+ #0x5000000 => 'ST96',
+ #0x5000000 => 'WB750',
+ #0x5000000 => 'ST700',
+ 0x5001038 => 'Various Models (0x5001038)',
+ #0x5001038 => 'EK-GN120',
+ #0x5001038 => 'HMX-E10',
+ #0x5001038 => 'NX1',
+ #0x5001038 => 'NX2000',
+ #0x5001038 => 'NX30',
+ #0x5001038 => 'NX300',
+ #0x5001038 => 'WB2000',
0x500103a => 'WB650 / VLUU WB650 / WB660',
0x500103c => 'WB600 / VLUU WB600 / WB610',
0x500133e => 'WB150 / WB150F / WB152 / WB152F / WB151',
diff --git a/lib/Image/ExifTool/Sigma.pm b/lib/Image/ExifTool/Sigma.pm
index 1bfe8b30..695c53f2 100644
--- a/lib/Image/ExifTool/Sigma.pm
+++ b/lib/Image/ExifTool/Sigma.pm
@@ -7,7 +7,9 @@
# 02/20/2007 - PH added SD14 tags
# 24/06/2010 - PH decode some SD15 tags
#
-# Reference: http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html
+# References: 1) http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html
+# 2) Niels Kristian Bech Jensen
+# 3) Iliah Borg private communication (LibRaw)
#------------------------------------------------------------------------------
package Image::ExifTool::Sigma;
@@ -16,7 +18,7 @@ use strict;
use vars qw($VERSION %sigmaLensTypes);
use Image::ExifTool::Exif;
-$VERSION = '1.14';
+$VERSION = '1.15';
# sigma LensType lookup (ref PH)
%sigmaLensTypes = (
@@ -28,26 +30,75 @@ $VERSION = '1.14';
# 0 => 'Sigma 50mm F2.8 EX Macro', (0 used for other lenses too)
# 8 - 18-125mm LENSARANGE@18mm=22-4
16 => 'Sigma 18-50mm F3.5-5.6 DC',
+ 106 => 'Sigma 150mm F2.8 EX DG OS HSM APO Macro', #3
+ 107 => 'Sigma APO Macro 180mm F2.8 EX DG OS HSM', #3
129 => 'Sigma 14mm F2.8 EX Aspherical',
131 => 'Sigma 17-70mm F2.8-4.5 DC Macro',
145 => 'Sigma Lens (145)',
145.1 => 'Sigma 15-30mm F3.5-4.5 EX DG Aspherical',
145.2 => 'Sigma 18-50mm F2.8 EX DG', #(NC)
145.3 => 'Sigma 20-40mm F2.8 EX DG',
+ 152 => 'Sigma APO 800mm F5.6 EX DG HSM', #3
165 => 'Sigma 70-200mm F2.8 EX', # ...but what specific model?:
# 70-200mm F2.8 EX APO - Original version, minimum focus distance 1.8m (1999)
# 70-200mm F2.8 EX DG - Adds 'digitally optimized' lens coatings to reduce flare (2005)
# 70-200mm F2.8 EX DG Macro (HSM) - Minimum focus distance reduced to 1m (2006)
# 70-200mm F2.8 EX DG Macro HSM II - Improved optical performance (2007)
169 => 'Sigma 18-50mm F2.8 EX DC', #(NC)
+ 184 => 'Sigma 500mm F4.5 EX DG APO HSM', #3
+ 195 => 'Sigma 300mm F2.8 EX APO DG HSM', #3
+ 201 => 'Sigma 10-20mm F4-5.6 EX DC HSM', #3
+ 202 => 'Sigma 10-20mm F3.5 EX DC HSM', #3
+ 203 => 'Sigma 8-16mm F4.5-5.6 DC HSM', #3
+ 204 => 'Sigma 12-24mm F4.5-5.6 DG HSM II', #3
+ 258 => 'Sigma 105mm F2.8 EX DG OS HSM Macro', #3
+ 270 => 'Sigma 70mm F2.8 EX DG Macro', #2 (SD1)
+ 300 => 'Sigma 30mm F1.4 EX DC HSM', #3
+ 310 => 'Sigma 50mm F1.4 EX DG HSM', #3
+ 320 => 'Sigma 85mm F1.4 EX DG HSM', #3
+ 330 => 'Sigma 30mm F2.8 EX DN', #3
+ 340 => 'Sigma 35mm F1.4 DG HSM', #3
+ 346 => 'Sigma 50mm F2.8 EX DG Macro', #3
+ 400 => 'Sigma 9mm F2.8 EX DN', #3
+ 411 => 'Sigma 20mm F1.8 EX DG ASP RF', #3
+ 432 => 'Sigma 24mm F1.8 EX DG ASP Macro', #3
+ 440 => 'Sigma 28mm F1.8 EX DG ASP Macro', #3
+ 476 => 'Sigma 15mm F2.8 EX DG Diagonal Fisheye', #3
+ 477 => 'Sigma 10mm F2.8 EX DC HSM Fisheye', #3
+ 485 => 'Sigma 8mm F3.5 EX DG Circular Fisheye', #3
+ 486 => 'Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye', #3
+ 508 => 'Sigma 70-300mm F4-5.6 APO DG Macro', #3
+ 509 => 'Sigma 70-300mm F4-5.6 DG Macro', #3
+ 571 => 'Sigma 24-70mm F2.8 IF EX DG HSM', #3
+ 572 => 'Sigma 70-300mm F4-5.6 DG OS', #3
581 => 'Sigma 18-50mm F2.8 EX DC Macro', # (SD1)
- 583 => 'Sigma 17-50mm F2.8 EX DC OS', # (SD1 kit)
+ 583 => 'Sigma 17-50mm F2.8 EX DC OS HSM', # (also SD1 Kit, is this HSM? - PH)
+ 589 => 'Sigma APO 70-200mm F2.8 EX DG OS HSM', #3
+ 595 => 'Sigma 300-800mm F5.6 EX DG APO HSM', #3
+ 597 => 'Sigma 200-500mm F2.8 APO EX DG', #3
+ '5A8'=> 'Sigma 70-300mm F4-5.6 APO DG Macro (Motorized)', #3
+ '5A9'=> 'Sigma 70-300mm F4-5.6 DG Macro (Motorized)', #3
+ 668 => 'Sigma 17-70mm F2.8-4 DC Macro OS HSM', #3
+ 686 => 'Sigma 50-200mm F4-5.6 DC OS HSM', #3
+ 691 => 'Sigma 50-150mm F2.8 EX DC APO HSM II', #3
+ 692 => 'Sigma APO 50-150mm F2.8 EX DC OS HSM', #3
+ 728 => 'Sigma 120-400mm F4.5-5.6 DG APO OS HSM', #3
+ 737 => 'Sigma 150-500mm F5-6.3 APO DG OS HSM', #3
+ 738 => 'Sigma 50-500mm F4.5-6.3 APO DG OS HSM', #3
+ 824 => 'Sigma 1.4X Teleconverter EX APO DG', #3
+ 853 => 'Sigma 18-125mm F3.8-5.6 DC OS HSM', #3
+ 861 => 'Sigma 18-50mm F2.8-4.5 DC OS HSM', #2 (SD1)
+ 876 => 'Sigma 2.0X Teleconverter EX APO DG', #3
+ 880 => 'Sigma 18-250mm F3.5-6.3 DC OS HSM', #3
+ 882 => 'Sigma 18-200mm F3.5-6.3 II DC OS HSM', #3
+ 883 => 'Sigma 18-250mm F3.5-6.3 DC Macro OS HSM', #3
1003 => 'Sigma 19mm F2.8', # (DP1 Merrill kit)
1004 => 'Sigma 30mm F2.8', # (DP2 Merrill kit)
1005 => 'Sigma 50mm F2.8 Macro', # (DP3 Merrill kit)
+ 1006 => 'Sigma 19mm F2.8', #2 (DP1 Quattro kit)
1007 => 'Sigma 30mm F2.8', # (DP2 Quattro kit)
8900 => 'Sigma 70-300mm F4-5.6 DG OS', # (SD15)
- 'A100' => 'Sigma 24-70mm F2.8 DG Macro', # (SD15)
+ 'A100'=> 'Sigma 24-70mm F2.8 DG Macro', # (SD15)
# 'FFFF' - seen this for a 28-70mm F2.8 lens
);
diff --git a/lib/Image/ExifTool/SigmaRaw.pm b/lib/Image/ExifTool/SigmaRaw.pm
index dc275943..7a2e3532 100644
--- a/lib/Image/ExifTool/SigmaRaw.pm
+++ b/lib/Image/ExifTool/SigmaRaw.pm
@@ -16,7 +16,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Sigma;
-$VERSION = '1.22';
+$VERSION = '1.23';
sub ProcessX3FHeader($$$);
sub ProcessX3FDirectory($$$);
@@ -570,7 +570,7 @@ sub ProcessX3F($$)
# check version number
my $ver = unpack('x4V',$buff);
$ver = ($ver >> 16) . '.' . ($ver & 0xffff);
- if ($ver > 4) {
+ if ($ver > 5) {
&$warn($et, "Untested X3F version ($ver). Please submit sample for testing", 1);
}
# read version 2.1/2.2/2.3 extended header
diff --git a/lib/Image/ExifTool/TagLookup.pm b/lib/Image/ExifTool/TagLookup.pm
index 313f1b72..1ab9233b 100644
--- a/lib/Image/ExifTool/TagLookup.pm
+++ b/lib/Image/ExifTool/TagLookup.pm
@@ -2578,8 +2578,6 @@ my %tagLookup = (
'lenstype' => { 6 => 0xe2, 7 => 0xd, 8 => 0x1a7, 9 => 0xc, 10 => 0x111, 11 => 0xc, 12 => 0x14f, 13 => 0xd6, 14 => 0xde, 15 => 0xf6, 16 => 0xea, 17 => 0xff, 18 => [0xc,0x97], 19 => 0xe6, 20 => 0x153, 21 => 0xea, 22 => 0xe8, 23 => 0x127, 24 => 0x161, 25 => 0x166, 26 => 0x112, 30 => 0x16, 155 => 0x10c, 156 => 0x49bd, 185 => 0x83, 239 => 0x201, 251 => 0x16, 254 => 0x310, 257 => 0x303, 258 => 0x51, 260 => 0x3405, 283 => 0x0, 284 => 0x0, 285 => 0x1, 286 => 0x1, 287 => 0x1, 289 => 0x0, 319 => 0xa003, 322 => 0x27, 342 => 0xb027, 353 => 0x1896, 355 => 0x18c2, 356 => 0x109, 364 => 0x608, 365 => 0x62 },
'lenstype2' => { 332 => 0x3f7, 353 => 0x1893, 355 => 0x18bf, 356 => 0x107, 364 => 0x605, 365 => 0x60, 368 => 0x9 },
'lenszoomposition' => { 362 => 0x19, 363 => 0x1e, 365 => 0x342 },
- 'levelgaugepitch' => { 238 => 0x904 },
- 'levelgaugeroll' => { 238 => 0x903 },
'levelindicator' => { 265 => 0x15 },
'levelorientation' => { 290 => 0x0 },
'license' => { 381 => 'license' },
@@ -3406,7 +3404,7 @@ my %tagLookup = (
'picturewizardsaturation' => { 318 => 0x2 },
'picturewizardsharpness' => { 318 => 0x3 },
'pitch' => { 227 => '4.1' },
- 'pitchangle' => { 200 => 0x350f, 258 => 0x91, 290 => 0x2 },
+ 'pitchangle' => { 200 => 0x350f, 238 => 0x904, 258 => 0x91, 290 => 0x2 },
'pixelsperunitx' => { 249 => 0x0 },
'pixelsperunity' => { 249 => 0x4 },
'pixelunits' => { 249 => 0x8 },
@@ -3804,7 +3802,7 @@ my %tagLookup = (
'rights' => { 384 => 'rights' },
'rightsagent' => { 397 => 'rightsAgent', 399 => 'rightsAgent' },
'rightsowner' => { 399 => 'rightsOwner' },
- 'rollangle' => { 200 => 0x350b, 258 => 0x90, 290 => 0x1 },
+ 'rollangle' => { 200 => 0x350b, 238 => 0x903, 258 => 0x90, 290 => 0x1 },
'romoperationmode' => { 84 => 0x80d },
'rotation' => { 27 => 0x17, 28 => 0x18, 83 => 0x3, 89 => 0x26e, 102 => 0x4, 137 => 'Rotation', 151 => [0x65,0x50], 152 => 0x46, 153 => 0x5a, 156 => 0x10, 206 => '590.1', 219 => 0x76a43207, 258 => 0x30, 272 => '17.2', 299 => 0xd8, 330 => 0x3f, 331 => 0x3f, 341 => 0x10 },
'routedto' => { 389 => 'RoutedTo' },
@@ -7413,6 +7411,7 @@ my %tagExists = (
'rawdev2ifd' => 1,
'rawdevelopment' => 1,
'rawdevelopmentifd' => 1,
+ 'rawexposurebias' => 1,
'rawformat' => 1,
'rawimagefullheight' => 1,
'rawimagefullsize' => 1,
@@ -8508,6 +8507,7 @@ my %tagExists = (
'xobject' => 1,
'xoffset' => 1,
'xp_dip_xml' => 1,
+ 'xtranslayout' => 1,
'xylocation' => 1,
'xyoffsetinfo' => 1,
'yclippathunits' => 1,
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index 64a6496c..9e59890c 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/lib/Image/ExifTool/TagNames.pod
@@ -6959,6 +6959,7 @@ RAF-format information.
0x0100 RawImageFullSize N
0x0121 RawImageSize N
0x0130 FujiLayout N
+ 0x0131 XTransLayout N
0x2000 WB_GRGBLevelsAuto N
0x2100 WB_GRGBLevelsDaylight N
0x2200 WB_GRGBLevelsCloudy N
@@ -6969,6 +6970,7 @@ RAF-format information.
0x2311 WB_GRGBLevelsLivingRoomWarmWhiteFluor N
0x2400 WB_GRGBLevelsTungsten N
0x2ff0 WB_GRGBLevels N
+ 0x9650 RawExposureBias N
0xc000 RAFData FujiFilm RAFData
=head3 FujiFilm RAFData Tags
@@ -10368,8 +10370,8 @@ any information found here will be extracted, even if the tag is not listed.
0x0900 ManometerPressure int16u
0x0901 ManometerReading int32s[2]
0x0902 ExtendedWBDetect int16u
- 0x0903 LevelGaugeRoll int16u
- 0x0904 LevelGaugePitch int16u
+ 0x0903 RollAngle int16s[2]
+ 0x0904 PitchAngle int16s[2]
0x0908 DateTimeUTC string
=head3 Olympus RawDevelopment Tags
diff --git a/perl-Image-ExifTool.spec b/perl-Image-ExifTool.spec
index dfa168cb..0775a973 100644
--- a/perl-Image-ExifTool.spec
+++ b/perl-Image-ExifTool.spec
@@ -1,6 +1,6 @@
Summary: perl module for image data extraction
Name: perl-Image-ExifTool
-Version: 9.85
+Version: 9.86
Release: 1
License: Artistic/GPL
Group: Development/Libraries/Perl
diff --git a/pp_build_exe.args b/pp_build_exe.args
index 80ece019..c1dd2fba 100644
--- a/pp_build_exe.args
+++ b/pp_build_exe.args
@@ -21,10 +21,10 @@
# 10) Copy zip archive to web servers.
# 11) Update zip file version in link and text of html/index.html.
#------------------------------------------------------------------------------
--T exiftool-9.79
---info=FileVersion=9.7.9.0
---info=ProductVersion=9.7.9.0
-"--info=Build Date=2015:01:04 13:27:33"
+-T exiftool-9.86
+--info=FileVersion=9.8.6.0
+--info=ProductVersion=9.8.6.0
+"--info=Build Date=2015:02:22 10:03:17"
"--info=Bundled Perl Version=ActivePerl 5.8.7"
"--info=LegalCopyright=Copyright (c) 2003-2015, Phil Harvey"
"--info=ProductName=ExifTool"
diff --git a/t/FujiFilm_4.out b/t/FujiFilm_4.out
index 475c910a..25cd7220 100644
--- a/t/FujiFilm_4.out
+++ b/t/FujiFilm_4.out
@@ -1,4 +1,4 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.81
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.86
[File, System, Image] FileSize - File Size: 38 kB
[File, File, Image] FileType - File Type: RAF
[File, File, Image] MIMEType - MIME Type: image/x-fujifilm-raf
@@ -110,6 +110,7 @@
[RAF, RAF, Image] 8977 - WB GRGB Levels Living Room Warm White Fluor: 384 419 384 920
[RAF, RAF, Image] 9216 - WB GRGB Levels Tungsten: 384 384 384 832
[RAF, RAF, Image] 12272 - WB GRGB Levels: 384 601 384 515
+[RAF, RAF, Image] 38480 - Raw Exposure Bias: 0
[RAF, RAF2, Image] 256 - Raw Image Full Size: 4352x1444
[RAF, RAF2, Image] 289 - Raw Image Size: 4284x1440
[RAF, RAF2, Image] 304 - Fuji Layout: 1 2 1 0
@@ -123,6 +124,7 @@
[RAF, RAF2, Image] 8977 - WB GRGB Levels Living Room Warm White Fluor: 384 477 384 1078
[RAF, RAF2, Image] 9216 - WB GRGB Levels Tungsten: 384 438 384 975
[RAF, RAF2, Image] 12272 - WB GRGB Levels: 384 685 384 603
+[RAF, RAF2, Image] 38480 - Raw Exposure Bias: 0
[Composite, Composite, Image] Aperture - Aperture: 8.0
[Composite, Composite, Image] ShutterSpeed - Shutter Speed: 1/250
[Composite, Composite, Image] ThumbnailImage - Thumbnail Image: (Binary data 9362 bytes)
diff --git a/windows_exiftool b/windows_exiftool
index 1c10984e..cfc30a30 100755
--- a/windows_exiftool
+++ b/windows_exiftool
@@ -12,7 +12,7 @@
use strict;
require 5.004;
-my $version = '9.85';
+my $version = '9.86';
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
my $exeDir;
@@ -152,7 +152,7 @@ my $outFormat; # -1=Canon format, 0=same-line, 1=tag names, 2=values only
my $outOpt; # output file or directory name
my $overwriteOrig; # flag to overwrite original file (1=overwrite, 2=in place)
my $pause; # pause before returning
-my $preserveTime; # flag to preserve times of updated files
+my $preserveTime; # flag to preserve times of updated files (2=preserve FileCreateDate only)
my $progress; # progress count
my $progressMax; # total number of files to process
my $progStr; # progress message string
@@ -485,6 +485,11 @@ $mt->Options(Duplicates => 0) unless %Image::ExifTool::UserDefined::Options
# default is to join lists if the List option was set in the config file
$joinLists = 1 if defined $mt->Options('List') and not $mt->Options('List');
+# preserve FileCreateDate if possible
+if (not $preserveTime and $^O eq 'MSWin32') {
+ $preserveTime = 2 if eval { require Win32::API } and eval { require Win32API::File };
+}
+
# parse command-line options in 2 passes...
# pass 1: set all of our ExifTool options
# pass 2: print all of our help and informational output (-list, -ver, etc)
@@ -2613,7 +2618,10 @@ sub SetImageInfo($$$)
# get file time if preserving it
my ($aTime, $mTime, $cTime);
- ($aTime, $mTime, $cTime) = $et->GetFileTime($file) if $preserveTime and $success;
+ if ($preserveTime and $success) {
+ ($aTime, $mTime, $cTime) = $et->GetFileTime($file);
+ $preserveTime == 2 and undef($aTime), undef($mTime);
+ }
if ($success == 1) {
# preserve the original file times
@@ -2720,7 +2728,7 @@ sub SetImageInfo($$$)
$et->Unlink($tmpFile);
++$countSameWr;
} else {
- $et->SetFileTime($outfile, $aTime, $mTime, $cTime) if defined $aTime;
+ $et->SetFileTime($outfile, $aTime, $mTime, $cTime) if $preserveTime;
if ($overwriteOrig) {
$et->Unlink($file) or Warn "Error erasing original $file\n";
}
@@ -3110,6 +3118,28 @@ sub CleanFilename($)
}
#------------------------------------------------------------------------------
+# Check for valid UTF-8 of a file name
+# Inputs: 0) string, 1) original encoding
+# Returns: 0=plain ASCII, 1=valid UTF-8, -1=invalid UTF-8 (and print warning)
+sub CheckUTF8($$)
+{
+ my ($file, $enc) = @_;
+ my $isUTF8 = 0;
+ if ($file =~ /[\x80-\xff]/) {
+ require Image::ExifTool::XMP;
+ $isUTF8 = Image::ExifTool::XMP::IsUTF8(\$file);
+ if ($isUTF8 < 0) {
+ if ($enc) {
+ Warn("Invalid filename encoding for $file\n");
+ } else {
+ WarnOnce(qq{FileName encoding not specified. Use "-charset FileName=CHARSET"\n});
+ }
+ }
+ }
+ return $isUTF8;
+}
+
+#------------------------------------------------------------------------------
# Process files in our @files list
# Inputs: 0) ExifTool ref, 1) list ref to just return full file names
sub ProcessFiles($;$)
@@ -3167,19 +3197,7 @@ sub ScanDir($$;$)
# (ReadDir will croak if there is a wildcard, so check for this)
if ($^O eq 'MSWin32' and $dir !~ /[*?]/) {
local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };;
- my $isUTF8 = 0;
- if ($dir =~ /[\x80-\xff]/) {
- require Image::ExifTool::XMP;
- $isUTF8 = Image::ExifTool::XMP::IsUTF8(\$dir);
- if ($isUTF8 < 0) {
- if ($enc) {
- Warn("Invalid encoding for directory name $dir\n");
- } else {
- WarnOnce(qq{FileName encoding not specified. Use "-charset FileName=CHARSET"\n});
- }
- }
- }
- if ($isUTF8 >= 0) {
+ if (CheckUTF8($dir, $enc) >= 0) {
if (eval { require Win32::FindFile }) {
@fileList = Win32::FindFile::ReadDir($dir);
$et->Options(CharsetFileName => 'UTF8'); # now using UTF8
@@ -3265,6 +3283,7 @@ sub FindFileWindows($$)
Warn "Wildcards don't work in the directory specification\n";
return ();
}
+ CheckUTF8($wildfile, $enc) >= 0 or return ();
local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };;
my @names = Win32::FindFile::FindFile($wildfile) or return ();
my ($rname, $nm, @files);
@@ -3275,7 +3294,7 @@ sub FindFileWindows($$)
# make sure that FindFile behaves
# (otherwise "*.jpg" matches things like "a.jpg_original"!)
next unless $nm =~ /^$rname$/;
- my $file = "$dir$nm";
+ my $file = "$dir$nm"; # add back directory name
push @files, $file;
$utf8FileName{$file} = 1; # flag this file name as UTF-8 encoded
}
@@ -4627,7 +4646,7 @@ OPTIONS
produces output like this:
- -- Generated by ExifTool 9.85 --
+ -- Generated by ExifTool 9.86 --
File: a.jpg - 2003:10:31 15:44:19
(f/5.6, 1/60s, ISO 100)
File: b.jpg - 2006:05:23 11:57:38
@@ -5147,10 +5166,11 @@ OPTIONS
-P (-preserve)
Preserve the filesystem modification date/time of the original file
("FileModifyDate") when writing. Note that some filesystems store a
- creation date which is not preserved by this option, with the
- exception of Windows systems where Win32API::File and Win32::API
- are available. For other systems, the -overwrite_original_in_place
- option may be used if necessary to preserve the creation date.
+ creation date ("FileCreateDate") which is not affected by this
+ option. This creation date is preserved only on Windows systems
+ where Win32API::File and Win32::API are available. For other
+ systems, the -overwrite_original_in_place option may be used if
+ necessary to preserve the creation date if necessary.
-password *PASSWD*
Specify password to allow processing of password-protected PDF