summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorexiftool <phil@u88.n24.queensu.ca>2015-04-25 10:58:19 -0400
committerexiftool <phil@u88.n24.queensu.ca>2015-04-25 10:58:19 -0400
commit71286f34ae1a8d7dca028996bd9ac88de62df110 (patch)
treec6301526b3244c551fa5e5b2e3d45c4c31d97cff /lib
parent0fd1f98288aa0b076611d81cb080484a0ca231ea (diff)
Update to 9.93
Diffstat (limited to 'lib')
-rw-r--r--lib/Image/ExifTool.pm39
-rw-r--r--lib/Image/ExifTool.pod6
-rw-r--r--lib/Image/ExifTool/AIFF.pm7
-rw-r--r--lib/Image/ExifTool/BuildTagLookup.pm5
-rw-r--r--lib/Image/ExifTool/Canon.pm13
-rw-r--r--lib/Image/ExifTool/EXE.pm45
-rw-r--r--lib/Image/ExifTool/Exif.pm9
-rw-r--r--lib/Image/ExifTool/Font.pm6
-rw-r--r--lib/Image/ExifTool/MOI.pm3
-rw-r--r--lib/Image/ExifTool/MWG.pm5
-rw-r--r--lib/Image/ExifTool/Minolta.pm198
-rw-r--r--lib/Image/ExifTool/Olympus.pm3
-rw-r--r--lib/Image/ExifTool/PostScript.pm3
-rw-r--r--lib/Image/ExifTool/Radiance.pm2
-rw-r--r--lib/Image/ExifTool/Rawzor.pm5
-rw-r--r--lib/Image/ExifTool/Real.pm5
-rw-r--r--lib/Image/ExifTool/Sony.pm730
-rw-r--r--lib/Image/ExifTool/TagLookup.pm12
-rw-r--r--lib/Image/ExifTool/TagNames.pod85
-rw-r--r--lib/Image/ExifTool/VCard.pm111
-rw-r--r--lib/Image/ExifTool/WriteXMP.pl25
-rw-r--r--lib/Image/ExifTool/Writer.pl4
-rw-r--r--lib/Image/ExifTool/XMP.pm4
-rw-r--r--lib/Image/ExifTool/XMP2.pl10
24 files changed, 740 insertions, 595 deletions
diff --git a/lib/Image/ExifTool.pm b/lib/Image/ExifTool.pm
index 7e7ed883..c24e4a13 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.92';
+$VERSION = '9.93';
$RELEASE = '';
@ISA = qw(Exporter);
%EXPORT_TAGS = (
@@ -472,6 +472,20 @@ my %fileTypeLookup = (
ZIP => ['ZIP', 'ZIP archive'],
);
+# typical extension for each file type (if different than lowercase FileType)
+my %fileTypeExt = (
+ 'Canon 1D RAW' => 'tif',
+ DICOM => 'dcm',
+ FLIR => 'fff',
+ GZIP => 'gz',
+ JPEG => 'jpg',
+ M2TS => 'mts',
+ MPEG => 'mpg',
+ TIFF => 'tif',
+ Torrent => 'torrent',
+ VCard => 'vcf',
+);
+
# descriptions for file types not found in above file extension lookup
my %fileDescription = (
DICOM => 'Digital Imaging and Communications in Medicine',
@@ -582,13 +596,14 @@ my %fileDescription = (
ORF => 'image/x-olympus-orf',
OTF => 'application/x-font-otf',
PBM => 'image/x-portable-bitmap',
+ PCD => 'image/x-photo-cd',
PDB => 'application/vnd.palm',
PDF => 'application/pdf',
PEF => 'image/x-pentax-pef',
+ PFA => 'application/x-font-type1', # (needed if handled by PostScript module)
PGF => 'image/pgf',
PGM => 'image/x-portable-graymap',
PHP => 'application/x-httpd-php',
- PCD => 'image/x-photo-cd',
PICT => 'image/pict',
PLIST=> 'application/xml', # (binary PLIST format is 'application/x-plist', recognized at run time)
PNG => 'image/png',
@@ -803,7 +818,7 @@ my %moduleName = (
my %weakMagic = ( MP3 => 1 );
# file types that are determined by the process proc when FastScan == 3
-my %processType = ( JPEG => 1, TIFF => 1, XMP => 1 );
+my %processType = ( JPEG=>1, TIFF=>1, XMP=>1, AIFF=>1, EXE=>1, Font=>1, PS=>1, Real=>1 );
# lookup for valid character set names (keys are all lower case)
%charsetName = (
@@ -987,6 +1002,7 @@ sub DummyWriteProc { return 1; }
extension commonly used for the file, but there are exceptions to this rule
},
},
+ FileTypeExtension => { Notes => 'usual lowercase extension for this file type' },
FileModifyDate => {
Description => 'File Modification Date/Time',
Notes => q{
@@ -1905,7 +1921,9 @@ sub ExtractInfo($;@)
$dirInfo{Parent} = ($type eq 'TIFF') ? $tiffType : $type;
# don't process the file when FastScan == 3
if ($fast and $fast == 3 and not $processType{$type}) {
- $self->SetFileType($dirInfo{Parent}); # (uc for Torrent)
+ unless ($weakMagic{$type} and (not $ext or $ext ne $type)) {
+ $self->SetFileType($dirInfo{Parent});
+ }
last;
}
my $module = $moduleName{$type};
@@ -6798,10 +6816,11 @@ sub DoEscape($$)
# Inputs: 0) ExifTool object reference
# 1) Optional file type (uses FILE_TYPE if not specified)
# 2) Optional MIME type (uses our lookup if not specified)
+# 3) Optional recommended extension (converted to lower case; uses FileType if undef)
# Notes: Will NOT set file type twice (subsequent calls ignored)
-sub SetFileType($;$$)
+sub SetFileType($;$$$)
{
- my ($self, $fileType, $mimeType) = @_;
+ my ($self, $fileType, $mimeType, $normExt) = @_;
unless ($$self{VALUE}{FileType} and not $$self{DOC_NUM}) {
my $baseType = $$self{FILE_TYPE};
my $ext = $$self{FILE_EXT};
@@ -6817,7 +6836,12 @@ sub SetFileType($;$$)
$mimeType or $mimeType = $mimeType{$fileType};
# use base file type if necessary (except if 'TIFF', which is a special case)
$mimeType = $mimeType{$baseType} unless $mimeType or $baseType eq 'TIFF';
+ unless (defined $normExt) {
+ $normExt = $fileTypeExt{$fileType};
+ $normExt = $fileType unless defined $normExt;
+ }
$self->FoundTag('FileType', $fileType);
+ $self->FoundTag('FileTypeExtension', lc $normExt);
$self->FoundTag('MIMEType', $mimeType || 'application/unknown');
}
}
@@ -6831,6 +6855,9 @@ sub OverrideFileType($$)
my ($self, $fileType) = @_;
if (defined $$self{VALUE}{FileType} and $fileType ne $$self{VALUE}{FileType}) {
$$self{VALUE}{FileType} = $fileType;
+ my $normExt = $fileTypeExt{$fileType};
+ $normExt = $fileType unless defined $normExt;
+ $$self{VALUE}{FileTypeExtension} = lc $normExt;
# only override MIME type if unique for the derived file type
$$self{VALUE}{MIMEType} = $mimeType{$fileType} if $mimeType{$fileType};
if ($$self{OPTIONS}{Verbose}) {
diff --git a/lib/Image/ExifTool.pod b/lib/Image/ExifTool.pod
index 4832d557..970cef4d 100644
--- a/lib/Image/ExifTool.pod
+++ b/lib/Image/ExifTool.pod
@@ -472,9 +472,9 @@ for more information about the handling of special characters.
=item CharsetEXIF
-Internal encoding to use for stored EXIF "ASCII" string values. Unlike
-other Charset options, CharsetEXIF may also be set to undef to pass through
-all string values without recoding. Default is undef.
+Internal encoding to use for stored EXIF "ASCII" string values. May also be
+set to undef to pass through EXIF "ASCII" values without recoding. Set to
+"UTF8" to conform with the MWG recommendation. Default is undef.
=item CharsetFileName
diff --git a/lib/Image/ExifTool/AIFF.pm b/lib/Image/ExifTool/AIFF.pm
index 6624dc86..044f0673 100644
--- a/lib/Image/ExifTool/AIFF.pm
+++ b/lib/Image/ExifTool/AIFF.pm
@@ -18,7 +18,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::ID3;
-$VERSION = '1.06';
+$VERSION = '1.07';
# information for time/date-based tags (time zero is Jan 1, 1904)
my %timeInfo = (
@@ -181,6 +181,7 @@ sub ProcessAIFF($$)
# verify this is a valid AIFF file
return 0 unless $raf->Read($buff, 12) == 12;
+ my $fast3 = $$et{OPTIONS}{FastScan} && $$et{OPTIONS}{FastScan} == 3;
my $pos = 12;
# check for DjVu image
if ($buff =~ /^AT&TFORM/) {
@@ -190,14 +191,16 @@ sub ProcessAIFF($$)
return 0 unless $raf->Read($buf2, 4) == 4 and $buf2 =~ /^(DJVU|DJVM)/;
$pos += 4;
$buff = substr($buff, 4) . $buf2;
- $tagTablePtr = GetTagTable('Image::ExifTool::DjVu::Main');
$et->SetFileType('DJVU');
+ return 1 if $fast3;
+ $tagTablePtr = GetTagTable('Image::ExifTool::DjVu::Main');
# modifiy FileType to indicate a multi-page document
$$et{VALUE}{FileType} .= " (multi-page)" if $buf2 eq 'DJVM';
$type = 'DjVu';
} else {
return 0 unless $buff =~ /^FORM....(AIF(F|C))/s;
$et->SetFileType($1);
+ return 1 if $fast3;
$tagTablePtr = GetTagTable('Image::ExifTool::AIFF::Main');
$type = 'AIFF';
}
diff --git a/lib/Image/ExifTool/BuildTagLookup.pm b/lib/Image/ExifTool/BuildTagLookup.pm
index bd2d0fc3..e49e2793 100644
--- a/lib/Image/ExifTool/BuildTagLookup.pm
+++ b/lib/Image/ExifTool/BuildTagLookup.pm
@@ -32,7 +32,7 @@ use Image::ExifTool::XMP;
use Image::ExifTool::Canon;
use Image::ExifTool::Nikon;
-$VERSION = '2.83';
+$VERSION = '2.84';
@ISA = qw(Exporter);
sub NumbersFirst;
@@ -2330,6 +2330,9 @@ sub WriteTagNames($$)
# assume XMP module for this struct unless otherwise specified
unshift @names, 'XMP' unless / /;
push @structs, $_; # list this later
+ # hack to put Area Struct in with XMP tags,
+ # even though it is only used by the MWG module
+ push @structs, 'Area' if $_ eq 'Dimensions';
$suffix = ' Struct';
}
$url = (shift @names) . '.html';
diff --git a/lib/Image/ExifTool/Canon.pm b/lib/Image/ExifTool/Canon.pm
index fa949799..719ba199 100644
--- a/lib/Image/ExifTool/Canon.pm
+++ b/lib/Image/ExifTool/Canon.pm
@@ -67,8 +67,8 @@
# 51) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4110.0.html
# 52) Iliah Borg private communication (LibRaw)
# 53) Niels Kristian Bech Jensen private communication
-# 54) Jos Roost private communication
# JD) Jens Duttke private communication
+# JR) Jos Roost private communication
#------------------------------------------------------------------------------
package Image::ExifTool::Canon;
@@ -83,7 +83,7 @@ sub ProcessSerialData($$$);
sub ProcessFilters($$$);
sub SwapWords($);
-$VERSION = '3.47';
+$VERSION = '3.48';
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -168,7 +168,7 @@ $VERSION = '3.47';
'33.11' => 'Carl Zeiss Planar T* 50mm f/1.4 ZE', #52
'33.12' => 'Carl Zeiss Makro-Planar T* 50mm f/2 ZE', #52
'33.13' => 'Carl Zeiss Makro-Planar T* 100mm f/2 ZE', #52
- '33.14' => 'Carl Zeiss Apo-Sonnar T* 135mm f/2 ZE', #54
+ '33.14' => 'Carl Zeiss Apo-Sonnar T* 135mm f/2 ZE', #JR
35 => 'Canon EF 35-80mm f/4-5.6', #32
36 => 'Canon EF 38-76mm f/4.5-5.6', #32
37 => 'Canon EF 35-80mm f/4-5.6 or Tamron Lens', #32
@@ -331,8 +331,8 @@ $VERSION = '3.47';
196 => 'Canon EF 75-300mm f/4-5.6 USM', #15/32
197 => 'Canon EF 75-300mm f/4-5.6 IS USM',
198 => 'Canon EF 50mm f/1.4 USM or Zeiss Lens',
- 198.1 => 'Zeiss Otus 55mm f/1.4 ZE', #54 (seen only on Sony camera)
- 198.2 => 'Zeiss Otus 85mm f/1.4 ZE', #54 (NC)
+ 198.1 => 'Zeiss Otus 55mm f/1.4 ZE', #JR (seen only on Sony camera)
+ 198.2 => 'Zeiss Otus 85mm f/1.4 ZE', #JR (NC)
199 => 'Canon EF 28-80mm f/3.5-5.6 USM', #32
200 => 'Canon EF 75-300mm f/4-5.6 USM', #32
201 => 'Canon EF 28-80mm f/3.5-5.6 USM', #32
@@ -621,9 +621,12 @@ $VERSION = '3.47';
0x3760000 => 'PowerShot SX520 HS', #52
0x3770000 => 'PowerShot SX400 IS',
0x3780000 => 'PowerShot G7 X', #52
+ 0x3790000 => 'PowerShot N2',
0x3800000 => 'PowerShot SX530 HS',
0x3820000 => 'PowerShot SX710 HS',
0x3830000 => 'PowerShot SX610 HS',
+ 0x3870000 => 'PowerShot ELPH 160 / IXUS 160',
+ 0x3890000 => 'PowerShot ELPH 170 IS / IXUS 170',
0x3910000 => 'PowerShot SX410 IS',
0x4040000 => 'PowerShot G1',
0x6040000 => 'PowerShot S100 / Digital IXUS / IXY Digital',
diff --git a/lib/Image/ExifTool/EXE.pm b/lib/Image/ExifTool/EXE.pm
index 9798b8c0..6ec3cd26 100644
--- a/lib/Image/ExifTool/EXE.pm
+++ b/lib/Image/ExifTool/EXE.pm
@@ -21,7 +21,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.08';
+$VERSION = '1.09';
sub ProcessPEResources($$);
sub ProcessPEVersion($$);
@@ -957,9 +957,10 @@ sub ProcessEXE($$)
{
my ($et, $dirInfo) = @_;
my $raf = $$dirInfo{RAF};
- my ($buff, $buf2, $type, $mime, $tagTablePtr, %dirInfo);
+ my ($buff, $buf2, $type, $mime, $ext, $tagTablePtr, %dirInfo);
my $size = $raf->Read($buff, 0x40) or return 0;
+ my $fast3 = $$et{OPTIONS}{FastScan} && $$et{OPTIONS}{FastScan} == 3;
#
# DOS and Windows EXE
#
@@ -999,7 +1000,8 @@ sub ProcessEXE($$)
if ($size >= 0x40) { # NE header is 64 bytes (ref 2)
# check for DLL
my $appFlags = Get16u(\$buff, 0x0c);
- $type = 'Win16 ' . ($appFlags & 0x80 ? 'DLL' : 'EXE');
+ $ext = $appFlags & 0x80 ? 'DLL' : 'EXE';
+ $type = "Win16 $ext";
# offset 0x02 is 2 bytes with linker version and revision numbers
# offset 0x36 is executable type (2 = Windows)
}
@@ -1016,7 +1018,9 @@ sub ProcessEXE($$)
my $machine = $Image::ExifTool::EXE::Main{0}{PrintConv}{Get16u(\$buff, 4)} || '';
my $winType = $machine =~ /64/ ? 'Win64' : 'Win32';
my $flags = Get16u(\$buff, 22);
- $et->SetFileType($winType . ' ' . ($flags & 0x2000 ? 'DLL' : 'EXE'));
+ $ext = $flags & 0x2000 ? 'DLL' : 'EXE';
+ $et->SetFileType("$winType $ext", undef, $ext);
+ return 1 if $fast3;
# read the rest of the optional header if necessary
my $optSize = Get16u(\$buff, 20);
my $more = $optSize + 24 - $size;
@@ -1057,9 +1061,11 @@ sub ProcessEXE($$)
}
} else {
$type = 'Virtual Device Driver';
+ $ext = 'exe'; #?
}
} else {
$type = 'DOS EXE';
+ $ext = 'exe';
}
#
# Mach-O (Mac OS X)
@@ -1070,7 +1076,8 @@ sub ProcessEXE($$)
$tagTablePtr = GetTagTable('Image::ExifTool::EXE::MachO');
if ($1 eq "\xca\xfe\xba\xbe") {
SetByteOrder('MM');
- $et->SetFileType('Mach-O fat binary executable');
+ $et->SetFileType('Mach-O fat binary executable', undef, '');
+ return 1 if $fast3;
my $count = Get32u(\$buff, 4); # get architecture count
my $more = $count * 20 - ($size - 8);
if ($more > 0) {
@@ -1106,7 +1113,8 @@ sub ProcessEXE($$)
$et->Warn('Error reading file');
}
} elsif ($size >= 16) {
- $et->SetFileType('Mach-O executable');
+ $et->SetFileType('Mach-O executable', undef, '');
+ return 1 if $fast3;
my $info = {
"\xfe\xed\xfa\xce" => ['32 bit', 'Big endian'],
"\xce\xfa\xed\xfe" => ['32 bit', 'Little endian'],
@@ -1130,7 +1138,8 @@ sub ProcessEXE($$)
#
} elsif ($buff =~ /^Joy!peff/ and $size > 12) {
# ref http://developer.apple.com/documentation/mac/pdf/MacOS_RT_Architectures.pdf
- $et->SetFileType('Classic MacOS executable');
+ $et->SetFileType('Classic MacOS executable', undef, '');
+ return 1 if $fast3;
SetByteOrder('MM');
$tagTablePtr = GetTagTable('Image::ExifTool::EXE::PEF');
%dirInfo = (
@@ -1146,7 +1155,8 @@ sub ProcessEXE($$)
# ELF (Unix)
#
} elsif ($buff =~ /^\x7fELF/ and $size >= 16) {
- $et->SetFileType("ELF executable");
+ $et->SetFileType('ELF executable', undef, '');
+ return 1 if $fast3;
SetByteOrder(Get8u(\$buff,5) == 1 ? 'II' : 'MM');
$tagTablePtr = GetTagTable('Image::ExifTool::EXE::ELF');
%dirInfo = (
@@ -1162,16 +1172,27 @@ sub ProcessEXE($$)
# various scripts (perl, sh, etc...)
#
} elsif ($buff =~ m{^#!\s*/\S*bin/(\w+)}) {
- $type = "$1 script";
- $mime = "text/x-$1";
+ my $prog = $1;
+ $prog = $1 if $prog eq 'env' and $buff =~ /\b(perl|python|ruby|php)\b/;
+ $type = "$prog script";
+ $mime = "text/x-$prog";
+ $ext = {
+ perl => 'pl',
+ python => 'py',
+ ruby => 'rb',
+ php => 'php',
+ }->{$1};
+ # use '.sh' for extension of all shell scripts
+ $ext = $prog =~ /sh$/ ? 'sh' : '' unless defined $ext;
#
# .a libraries
#
} elsif ($buff =~ /^!<arch>\x0a/) {
- $type = 'Static library',
+ $type = 'Static library';
+ $ext = 'a';
}
return 0 unless $type;
- $et->SetFileType($type, $mime);
+ $et->SetFileType($type, $mime, $ext);
return 1;
}
diff --git a/lib/Image/ExifTool/Exif.pm b/lib/Image/ExifTool/Exif.pm
index 7b61b2a8..030452f3 100644
--- a/lib/Image/ExifTool/Exif.pm
+++ b/lib/Image/ExifTool/Exif.pm
@@ -52,7 +52,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::MakerNotes;
-$VERSION = '3.69';
+$VERSION = '3.70';
sub ProcessExif($$$);
sub WriteExif($$$);
@@ -2710,7 +2710,8 @@ my %sampleFormat = (
ValueConv => q{
return "$val[2]x$val[3]" if $val[2] and $val[3] and
$$self{TIFF_TYPE} =~ /^(CR2|Canon 1D RAW|IIQ|EIP)$/;
- return "$val[0]x$val[1]";
+ return "$val[0]x$val[1]" if IsFloat($val[0]) and IsFloat($val[1]);
+ return undef;
},
},
Megapixels => {
@@ -2825,7 +2826,7 @@ my %sampleFormat = (
3 => 'FocusDistance', # focus distance in metres (0 is infinity)
4 => 'SubjectDistance',
5 => 'ObjectDistance',
- 6 => 'AverageFocusDistance',
+ 6 => 'ApproximateFocusDistance ',
7 => 'FocusDistanceLower',
8 => 'FocusDistanceUpper',
},
@@ -3637,7 +3638,7 @@ sub PrintLensID($$@)
abs($lf - $lf0) > 0.5 or abs($la - $la0) > 0.15;
# the basic parameters match, but also check against additional lens features
# for Sony E lenses -- the full LensSpec string should match with end of LensType
- $lensSpecPrt and $lens =~ /\Q$lensSpecPrt\E$/ and @best = ( $lens ), last;
+ $lensSpecPrt and $lens =~ /\Q$lensSpecPrt\E( \(|$)/ and @best = ( $lens ), last;
# exactly-matching Sony E lens should have been found above, so skip
# any not-exactly-matching Sony E-lenses
next if $lens =~ /^Sony E /;
diff --git a/lib/Image/ExifTool/Font.pm b/lib/Image/ExifTool/Font.pm
index 7fa31a3a..c00f769c 100644
--- a/lib/Image/ExifTool/Font.pm
+++ b/lib/Image/ExifTool/Font.pm
@@ -19,7 +19,7 @@ use strict;
use vars qw($VERSION %ttLang);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.07';
+$VERSION = '1.08';
sub ProcessOTF($$);
@@ -346,6 +346,7 @@ sub ProcessTTC($$)
# might as well put a limit on the number of fonts we will parse (< 256)
return 0 unless $num < 0x100 and $raf->Read($buff, $num * 4) == $num * 4;
$et->SetFileType('TTC');
+ return 1 if $$et{OPTIONS}{FastScan} and $$et{OPTIONS}{FastScan} == 3;
my $tagTablePtr = GetTagTable('Image::ExifTool::Font::Main');
$et->HandleTag($tagTablePtr, 'numfonts', $num);
# loop through all fonts in the collection
@@ -376,6 +377,7 @@ sub ProcessOTF($$)
return 0 unless $buff =~ /^(\0\x01\0\0|OTTO|true|typ1|\xa5(kbd|lst))[\0\x01]/;
$et->SetFileType($1 eq 'OTTO' ? 'OTF' : 'TTF');
+ return 1 if $$et{OPTIONS}{FastScan} and $$et{OPTIONS}{FastScan} == 3;
SetByteOrder('MM');
my $numTables = Get16u(\$buff, 4);
return 0 unless $numTables > 0 and $numTables < 0x200;
@@ -513,6 +515,7 @@ sub ProcessAFM($$)
return 0 unless $buff =~ /^Start(Comp|Master)?FontMetrics\s+\d+/;
my $ftyp = $1 ? ($1 eq 'Comp' ? 'ACFM' : 'AMFM') : 'AFM';
$et->SetFileType($ftyp, 'application/x-font-afm');
+ return 1 if $$et{OPTIONS}{FastScan} and $$et{OPTIONS}{FastScan} == 3;
my $tagTablePtr = GetTagTable('Image::ExifTool::Font::AFM');
for (;;) {
@@ -572,6 +575,7 @@ sub ProcessFont($$)
$raf->Read($buf2, 11) == 11 and lc($buf2) eq "postscript\0")
{
$et->SetFileType('PFM');
+ return 1 if $$et{OPTIONS}{FastScan} and $$et{OPTIONS}{FastScan} == 3;
SetByteOrder('II');
my $tagTablePtr = GetTagTable('Image::ExifTool::Font::Main');
# process the PFM header
diff --git a/lib/Image/ExifTool/MOI.pm b/lib/Image/ExifTool/MOI.pm
index c6b62108..801773ef 100644
--- a/lib/Image/ExifTool/MOI.pm
+++ b/lib/Image/ExifTool/MOI.pm
@@ -14,7 +14,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.01';
+$VERSION = '1.02';
# MOI tags (ref 1)
%Image::ExifTool::MOI::Main = (
@@ -111,6 +111,7 @@ sub ProcessMOI($$)
my $size = unpack('x2N', $buff);
$size == $$et{VALUE}{FileSize} or return 0;
}
+ $et->SetFileType();
SetByteOrder('MM');
my $tagTablePtr = GetTagTable('Image::ExifTool::MOI::Main');
return $et->ProcessBinaryData({ DataPt => \$buff }, $tagTablePtr);
diff --git a/lib/Image/ExifTool/MWG.pm b/lib/Image/ExifTool/MWG.pm
index de7774b4..da52d7ea 100644
--- a/lib/Image/ExifTool/MWG.pm
+++ b/lib/Image/ExifTool/MWG.pm
@@ -16,7 +16,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::XMP;
-$VERSION = '1.14';
+$VERSION = '1.15';
sub RecoverTruncatedIPTC($$$);
sub ListToString($);
@@ -58,7 +58,8 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
Contrary to the EXIF specification, the MWG recommends that EXIF "ASCII"
string values be stored as UTF-8. To honour this, the exiftool application
sets the default internal EXIF string encoding to "UTF8" when the MWG module
- is loaded (but this setting does not change automatically via the API).
+ is loaded, but via the API this must be done manually by setting the
+ CharsetEXIF option.
A complication of the MWG specification is that although the MWG:Creator
property may consist of multiple values, the associated EXIF tag
diff --git a/lib/Image/ExifTool/Minolta.pm b/lib/Image/ExifTool/Minolta.pm
index e2f552d0..83c29017 100644
--- a/lib/Image/ExifTool/Minolta.pm
+++ b/lib/Image/ExifTool/Minolta.pm
@@ -32,17 +32,13 @@
# 22) http://www.mi-fo.de/forum/index.php?act=attach&type=post&id=6024
# 23) Marcin Krol private communication
# 24) http://cpanforum.com/threads/12291
-# 25) Jos Roost private communication, from one or more of
-# - A100 brochure, 2006-07
-# - Alpha Lenses Accessories brochure, 2007-09 (JP)
-# - Alpha Lenses brochure, 2010-09
-# - A77 brochure, 2011-08
# 26) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3521.0.html
# 27) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3833.0.html
# 28) Michael Reitinger private communication (RX100)
# 29) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4086.0.html
# 30) Iliah Borg private communication (LibRaw)
# JD) Jens Duttke private communication
+# JR) Jos Roost private communication
#------------------------------------------------------------------------------
package Image::ExifTool::Minolta;
@@ -53,7 +49,7 @@ use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
-$VERSION = '2.22';
+$VERSION = '2.23';
# Full list of product codes for Sony-compatible Minolta lenses
# (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
@@ -220,11 +216,11 @@ my %metabonesID = (
18 => 'Minolta AF 28-80mm F3.5-5.6 II',
19 => 'Minolta AF 35mm F1.4 G', # G added (ref 18), but not New as per ref 13
20 => 'Minolta/Sony 135mm F2.8 [T4.5] STF',
- # 20 => 'Sony 135mm F2.8 [T4.5] STF (SAL135F28)', (ref 25)
+ # 20 => 'Sony 135mm F2.8 [T4.5] STF (SAL135F28)', (ref JR)
22 => 'Minolta AF 35-80mm F4-5.6 II', # II added (ref 13)
23 => 'Minolta AF 200mm F4 Macro APO G',
24 => 'Minolta/Sony AF 24-105mm F3.5-4.5 (D) or Sigma or Tamron Lens',
- # 24 => 'Sony 24-105mm F3.5-4.5 (SAL24105)', (ref 25)
+ # 24 => 'Sony 24-105mm F3.5-4.5 (SAL24105)', (ref JR)
24.1 => 'Sigma 18-50mm F2.8',
24.2 => 'Sigma 17-70mm F2.8-4.5 (D)',
24.3 => 'Sigma 20-40mm F2.8 EX DG Aspherical IF', #JD/22
@@ -240,73 +236,77 @@ my %metabonesID = (
25.5 => 'Sigma 24mm F1.8 EX DG ASP Macro', #Florian Knorn
27 => 'Minolta AF 85mm F1.4 G (D)', # added (D) (ref 13)
28 => 'Minolta/Sony AF 100mm F2.8 Macro (D) or Tamron Lens',
- # 28 => 'Sony 100mm F2.8 Macro (SAL100M28)', (ref 18/25)
+ # 28 => 'Sony 100mm F2.8 Macro (SAL100M28)', (ref 18/JR)
28.1 => 'Tamron SP AF 90mm F2.8 Di Macro', #JD (Model 272E)
- 28.2 => 'Tamron SP AF 180mm F3.5 Di LD [IF] Macro', #27 (Model B01) ("SP" moved - ref 25)
+ 28.2 => 'Tamron SP AF 180mm F3.5 Di LD [IF] Macro', #27 (Model B01) ("SP" moved - ref JR)
29 => 'Minolta/Sony AF 75-300mm F4.5-5.6 (D)', # Sony added (ref 13)
- # 29 => 'Sony 75-300mm F4.5-5.6 (SAL75300)', (ref 25)
+ # 29 => 'Sony 75-300mm F4.5-5.6 (SAL75300)', (ref JR)
30 => 'Minolta AF 28-80mm F3.5-5.6 (D) or Sigma Lens',
30.1 => 'Sigma AF 10-20mm F4-5.6 EX DC', #JD
30.2 => 'Sigma AF 12-24mm F4.5-5.6 EX DG',
30.3 => 'Sigma 28-70mm EX DG F2.8', #16
30.4 => 'Sigma 55-200mm F4-5.6 DC', #JD
31 => 'Minolta/Sony AF 50mm F2.8 Macro (D) or F3.5',
- # 31 => 'Sony 50mm F2.8 Macro (SAL50M28)', (ref 25)
+ # 31 => 'Sony 50mm F2.8 Macro (SAL50M28)', (ref JR)
31.1 => 'Minolta/Sony AF 50mm F3.5 Macro',
32 => 'Minolta/Sony AF 300mm F2.8 G or 1.5x Teleconverter', #13/18
# 32 => 'Minolta AF 300mm F2.8 G (D) SSM', (ref 13)
- # 32 => 'Sony 300mm F2.8 G (SAL300F28G)', (ref 18/25)
+ # 32 => 'Sony 300mm F2.8 G (SAL300F28G)', (ref 18/JR)
33 => 'Minolta/Sony AF 70-200mm F2.8 G',
- # 33 => 'Sony 70-200mm F2.8 G (SAL70200G)', (ref 25)
+ # 33 => 'Sony 70-200mm F2.8 G (SAL70200G)', (ref JR)
# 33 => 'Minolta AF 70-200mm F2.8 G (D) SSM' (ref 13)
35 => 'Minolta AF 85mm F1.4 G (D) Limited',
36 => 'Minolta AF 28-100mm F3.5-5.6 (D)',
38 => 'Minolta AF 17-35mm F2.8-4 (D)', # (Konica Minolta, ref 13)
39 => 'Minolta AF 28-75mm F2.8 (D)', # (Konica Minolta, ref 13)
40 => 'Minolta/Sony AF DT 18-70mm F3.5-5.6 (D)', # (Konica Minolta, ref 13)
- # 40 => 'Sony DT 18-70mm F3.5-5.6 (SAL1870)', (ref 25)
+ # 40 => 'Sony DT 18-70mm F3.5-5.6 (SAL1870)', (ref JR)
#40.1 => 'Sony AF DT 18-200mm F3.5-6.3', #11 (anomaly? - PH)
41 => 'Minolta/Sony AF DT 11-18mm F4.5-5.6 (D) or Tamron Lens', # (Konica Minolta, ref 13)
- # 41 => 'Sony DT 11-18mm F4.5-5.6 (SAL1118)', (ref 25)
+ # 41 => 'Sony DT 11-18mm F4.5-5.6 (SAL1118)', (ref JR)
41.1 => 'Tamron SP AF 11-18mm F4.5-5.6 Di II LD Aspherical IF', #JD (Model A13)
42 => 'Minolta/Sony AF DT 18-200mm F3.5-6.3 (D)', # Sony added (ref 13) (Konica Minolta, ref 13)
- # 42 => 'Sony DT 18-200mm F3.5-6.3 (SAL18200)', (ref 25)
- 43 => 'Sony 35mm F1.4 G (SAL35F14G)', # changed from Minolta to Sony (ref 13/18/25) (but ref 11 shows both!)
- 44 => 'Sony 50mm F1.4 (SAL50F14)', # changed from Minolta to Sony (ref 13/18/25)
- 45 => 'Carl Zeiss Planar T* 85mm F1.4 ZA (SAL85F14Z)', #25
- 46 => 'Carl Zeiss Vario-Sonnar T* DT 16-80mm F3.5-4.5 ZA (SAL1680Z)', #25
- 47 => 'Carl Zeiss Sonnar T* 135mm F1.8 ZA (SAL135F18Z)', #25
- 48 => 'Carl Zeiss Vario-Sonnar T* 24-70mm F2.8 ZA SSM (SAL2470Z)', #11/25
- 49 => 'Sony DT 55-200mm F4-5.6 (SAL55200)', #JD/25
- 50 => 'Sony DT 18-250mm F3.5-6.3 (SAL18250)', #11/25
- 51 => 'Sony DT 16-105mm F3.5-5.6 (SAL16105)', #11/25
+ # 42 => 'Sony DT 18-200mm F3.5-6.3 (SAL18200)', (ref JR)
+ 43 => 'Sony 35mm F1.4 G (SAL35F14G)', # changed from Minolta to Sony (ref 13/18/JR) (but ref 11 shows both!)
+ 44 => 'Sony 50mm F1.4 (SAL50F14)', # changed from Minolta to Sony (ref 13/18/JR)
+ 45 => 'Carl Zeiss Planar T* 85mm F1.4 ZA (SAL85F14Z)', #JR
+ 46 => 'Carl Zeiss Vario-Sonnar T* DT 16-80mm F3.5-4.5 ZA (SAL1680Z)', #JR
+ 47 => 'Carl Zeiss Sonnar T* 135mm F1.8 ZA (SAL135F18Z)', #JR
+ 48 => 'Carl Zeiss Vario-Sonnar T* 24-70mm F2.8 ZA SSM (SAL2470Z) or ZA SSM II', #11/JR
+ 48.1 => 'Carl Zeiss Vario-Sonnar T* 24-70mm F2.8 ZA SSM II (SAL2470Z2)', #JR
+ 49 => 'Sony DT 55-200mm F4-5.6 (SAL55200)', #JD/JR
+ 50 => 'Sony DT 18-250mm F3.5-6.3 (SAL18250)', #11/JR
+ 51 => 'Sony DT 16-105mm F3.5-5.6 (SAL16105)', #11/JR
#51.1 => 'Sony AF DT 55-200mm F4-5.5', #11 (anomaly? - PH)
- 52 => 'Sony 70-300mm F4.5-5.6 G SSM (SAL70300G) or Tamron Lens', #JD/25
- 52.1 => 'Tamron SP 70-300mm F4-5.6 Di USD', #25,4 (Model A005)
- 53 => 'Sony 70-400mm F4-5.6 G SSM (SAL70400G)', #17(/w correction by Stephen Bishop)/25
- 54 => 'Carl Zeiss Vario-Sonnar T* 16-35mm F2.8 ZA SSM (SAL1635Z)', #17/25
- 55 => 'Sony DT 18-55mm F3.5-5.6 SAM [II] (SAL1855)', #PH/25
- 56 => 'Sony DT 55-200mm F4-5.6 SAM (SAL55200-2)', #22/25
- 57 => 'Sony DT 50mm F1.8 SAM (SAL50F18) or Tamron Lens', #22/25
+ 52 => 'Sony 70-300mm F4.5-5.6 G SSM (SAL70300G) or G SSM II or Tamron Lens', #JD
+ 52.1 => 'Sony 70-300mm F4.5-5.6 G SSM II (SAL70300G2)', #JR
+ 52.2 => 'Tamron SP 70-300mm F4-5.6 Di USD', #JR,4 (Model A005)
+ 53 => 'Sony 70-400mm F4-5.6 G SSM (SAL70400G)', #17(/w correction by Stephen Bishop)/JR
+ 54 => 'Carl Zeiss Vario-Sonnar T* 16-35mm F2.8 ZA SSM (SAL1635Z) or ZA SSM II', #17/JR
+ 54.1 => 'Carl Zeiss Vario-Sonnar T* 16-35mm F2.8 ZA SSM II (SAL1635Z2)', #JR
+ 55 => 'Sony DT 18-55mm F3.5-5.6 SAM (SAL1855) or SAM II', #PH
+ 55.1 => 'Sony DT 18-55mm F3.5-5.6 SAM II (SAL18552)', #JR
+ 56 => 'Sony DT 55-200mm F4-5.6 SAM (SAL55200-2)', #22/JR
+ 57 => 'Sony DT 50mm F1.8 SAM (SAL50F18) or Tamron Lens', #22/JR
57.1 => 'Tamron SP AF 60mm F2 Di II LD [IF] Macro 1:1', # (Model G005) (ref http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3858.0.html)
57.2 => 'Tamron 18-270mm F3.5-6.3 Di II PZD', #27 (Model B008)
- 58 => 'Sony DT 30mm F2.8 Macro SAM (SAL30M28)', #22/25
- 59 => 'Sony 28-75mm F2.8 SAM (SAL2875)', #21/25
- 60 => 'Carl Zeiss Distagon T* 24mm F2 ZA SSM (SAL24F20Z)', #17/25
- 61 => 'Sony 85mm F2.8 SAM (SAL85F28)', #17/25
- 62 => 'Sony DT 35mm F1.8 SAM (SAL35F18)', #PH/25
- 63 => 'Sony DT 16-50mm F2.8 SSM (SAL1650)', #17/25
- 64 => 'Sony 500mm F4.0 G SSM (SAL500F40G)', #29
- 65 => 'Sony DT 18-135mm F3.5-5.6 SAM (SAL18135)', #25
+ 58 => 'Sony DT 30mm F2.8 Macro SAM (SAL30M28)', #22/JR
+ 59 => 'Sony 28-75mm F2.8 SAM (SAL2875)', #21/JR
+ 60 => 'Carl Zeiss Distagon T* 24mm F2 ZA SSM (SAL24F20Z)', #17/JR
+ 61 => 'Sony 85mm F2.8 SAM (SAL85F28)', #17/JR
+ 62 => 'Sony DT 35mm F1.8 SAM (SAL35F18)', #PH/JR
+ 63 => 'Sony DT 16-50mm F2.8 SSM (SAL1650)', #17/JR
+ 64 => 'Sony 500mm F4 G SSM (SAL500F40G)', #29
+ 65 => 'Sony DT 18-135mm F3.5-5.6 SAM (SAL18135)', #JR
66 => 'Sony 300mm F2.8 G SSM II (SAL300F28G2)', #29
- 67 => 'Sony 70-200mm F2.8 G SSM II (SAL70200G2)', #25
+ 67 => 'Sony 70-200mm F2.8 G SSM II (SAL70200G2)', #JR
68 => 'Sony DT 55-300mm F4.5-5.6 SAM (SAL55300)', #29
- 69 => 'Sony 70-400mm F4-5.6 G SSM II (SAL70400G2)', #25
- 70 => 'Carl Zeiss Planar T* 50mm F1.4 ZA SSM (SAL50F14Z)', #25
+ 69 => 'Sony 70-400mm F4-5.6 G SSM II (SAL70400G2)', #JR
+ 70 => 'Carl Zeiss Planar T* 50mm F1.4 ZA SSM (SAL50F14Z)', #JR
128 => 'Tamron or Sigma Lens (128)',
- 128.1 => 'Tamron AF 18-200mm F3.5-6.3 XR Di II LD Aspherical [IF] Macro', #25 (Model A14)
+ 128.1 => 'Tamron AF 18-200mm F3.5-6.3 XR Di II LD Aspherical [IF] Macro', #JR (Model A14)
# was 128.1 => 'Tamron 18-200mm F3.5-6.3',
- 128.2 => 'Tamron AF 28-300mm F3.5-6.3 XR Di LD Aspherical [IF] Macro', #25 (Model A061)
+ 128.2 => 'Tamron AF 28-300mm F3.5-6.3 XR Di LD Aspherical [IF] Macro', #JR (Model A061)
# was 128.2 => 'Tamron 28-300mm F3.5-6.3',
128.3 => 'Tamron 80-300mm F3.5-6.3',
128.4 => 'Tamron AF 28-200mm F3.8-5.6 XR Di Aspherical [IF] Macro', #JD (Model A031)
@@ -323,7 +323,7 @@ my %metabonesID = (
'128.12' => 'Sigma 24-70mm F2.8 IF EX DG HSM', #27
'128.13' => 'Sigma 18-250mm F3.5-6.3 DC OS HSM', #27
'128.14' => 'Sigma 17-50mm F2.8 EX DC HSM', #Exiv2
- '128.15' => 'Sigma 17-70mm F2.8-4 DC Macro HSM', #25
+ '128.15' => 'Sigma 17-70mm F2.8-4 DC Macro HSM', #JR
'128.16' => 'Sigma 150mm F2.8 EX DG OS HSM APO Macro', #Marcus Holland-Moritz
'128.17' => 'Sigma 150-500mm F5-6.3 APO DG OS HSM', #30
'128.18' => 'Tamron AF 28-105mm F4-5.6 [IF]', #30 (Model 179D)
@@ -339,14 +339,14 @@ my %metabonesID = (
142 => 'Voigtlander 70-300mm F4.5-5.6', #JD
146 => 'Voigtlander Macro APO-Lanthar 125mm F2.5 SL', #JD
194 => 'Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical [IF]', #23 (Model A16)
- 203 => 'Tamron SP 70-200mm F2.8 Di USD', #25 (Model A009)
- 204 => 'Tamron SP 24-70mm F2.8 Di USD', #25 (Model A007)
- 214 => 'Tamron SP 150-600mm F5-6.3 Di USD', #25 (Model A011)
- 224 => 'Tamron SP 90mm F2.8 Di Macro 1:1 USD', #25 (Model F004)
+ 203 => 'Tamron SP 70-200mm F2.8 Di USD', #JR (Model A009)
+ 204 => 'Tamron SP 24-70mm F2.8 Di USD', #JR (Model A007)
+ 214 => 'Tamron SP 150-600mm F5-6.3 Di USD', #JR (Model A011)
+ 224 => 'Tamron SP 90mm F2.8 Di Macro 1:1 USD', #JR (Model F004)
255 => 'Tamron Lens (255)',
255.1 => 'Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical', # (Model A16)
255.2 => 'Tamron AF 18-250mm F3.5-6.3 XR Di II LD', #JD (Model A18?)
- #? 225.2 => 'Tamron AF 18-250mm F3.5-6.3 Di II LD Aspherical [IF] Macro', #25 (Model A18)
+ #? 225.2 => 'Tamron AF 18-250mm F3.5-6.3 Di II LD Aspherical [IF] Macro', #JR (Model A18)
255.3 => 'Tamron AF 55-200mm F4-5.6 Di II LD Macro', # (Model A15) (added "LD Macro", ref 23)
255.4 => 'Tamron AF 70-300mm F4-5.6 Di LD Macro 1:2', # (Model A17)
255.5 => 'Tamron SP AF 200-500mm F5.0-6.3 Di LD IF', # (Model A08)
@@ -374,7 +374,7 @@ my %metabonesID = (
25531 => 'Minolta AF 28-135mm F4-4.5 or Sigma Lens',
25531.1 => 'Sigma ZOOM-alpha 35-135mm F3.5-4.5', #16
25531.2 => 'Sigma 28-105mm F2.8-4 Aspherical', #JD
- 25531.3 => 'Sigma 28-105mm F4-5.6 UC', #25
+ 25531.3 => 'Sigma 28-105mm F4-5.6 UC', #JR
25541 => 'Minolta AF 35-105mm F3.5-4.5', #13
25551 => 'Minolta AF 70-210mm F4 Macro or Sigma Lens',
25551.1 => 'Sigma 70-210mm F4-5.6 APO', #7
@@ -382,11 +382,11 @@ my %metabonesID = (
25551.3 => 'Sigma 75-200mm F2.8-3.5', #22
25561 => 'Minolta AF 135mm F2.8',
25571 => 'Minolta/Sony AF 28mm F2.8', # Sony added (ref 18)
- # 25571 => 'Sony 28mm F2.8 (SAL28F28)', (ref 18/25)
+ # 25571 => 'Sony 28mm F2.8 (SAL28F28)', (ref 18/JR)
25581 => 'Minolta AF 24-50mm F4',
25601 => 'Minolta AF 100-200mm F4.5',
25611 => 'Minolta AF 75-300mm F4.5-5.6 or Sigma Lens', #13
- 25611.1 => 'Sigma 70-300mm F4-5.6 DL Macro', #12 (also DG version ref 27, and APO version ref 25)
+ 25611.1 => 'Sigma 70-300mm F4-5.6 DL Macro', #12 (also DG version ref 27, and APO version ref JR)
25611.2 => 'Sigma 300mm F4 APO Macro', #3/7
25611.3 => 'Sigma AF 500mm F4.5 APO', #JD
25611.4 => 'Sigma AF 170-500mm F5-6.3 APO Aspherical', #JD
@@ -407,14 +407,14 @@ my %metabonesID = (
25661 => 'Minolta AF 24mm F2.8 or Sigma Lens',
25661.1 => 'Sigma 17-35mm F2.8-4 EX Aspherical', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3789.msg17679.html#msg17679
25721 => 'Minolta/Sony AF 500mm F8 Reflex',
- # 25721 => 'Sony 500mm F8 Reflex (SAL500F80)', (ref 25)
+ # 25721 => 'Sony 500mm F8 Reflex (SAL500F80)', (ref JR)
25781 => 'Minolta/Sony AF 16mm F2.8 Fisheye or Sigma Lens', # Sony added (ref 13/18)
- # 25781 => 'Sony 16mm F2.8 Fisheye (SAL16F28)', (ref 18/25)
+ # 25781 => 'Sony 16mm F2.8 Fisheye (SAL16F28)', (ref 18/JR)
25781.1 => 'Sigma 8mm F4 EX [DG] Fisheye',
25781.2 => 'Sigma 14mm F3.5',
25781.3 => 'Sigma 15mm F2.8 Fisheye', #JD (writes 16mm to EXIF)
25791 => 'Minolta/Sony AF 20mm F2.8 or Tokina Lens', # Sony added (ref 11)
- # 25791 => 'Sony 20mm F2.8 (SAL20F28)', (ref 25)
+ # 25791 => 'Sony 20mm F2.8 (SAL20F28)', (ref JR)
25791.1 => 'Tokina AT-X Pro DX 11-16mm F2.8', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3593.0.html
25811 => 'Minolta AF 100mm F2.8 Macro [New] or Sigma or Tamron Lens', # not Sony (ref 13/18)
25811.1 => 'Sigma AF 90mm F2.8 Macro', #JD
@@ -485,12 +485,12 @@ my %metabonesID = (
45861 => 'Tamron SP AF 35-105mm F2.8 LD Aspherical IF', #Fredrik Agert
45871 => 'Tamron AF 70-210mm F2.8 SP LD', #Fabio Suprani
# 61184: older firmware versions of both the Speed Booster and the Smart Adapter
- # report type 61184 (=0xef00), and add only the lower byte of the Canon LensType (ref 25).
+ # report type 61184 (=0xef00), and add only the lower byte of the Canon LensType (ref JR).
# For newer firmware versions this is only used by the Smart Adapter, and
# the full Canon LensType code is added - PH
- 61184 => 'Metabones Canon EF Adapter', #25
+ 61184 => 'Metabones Canon EF Adapter', #JR
# all M42-type lenses give a value of 65535 (and FocalLength=0, FNumber=1)
- 65535 => 'E-Mount, T-Mount, Other Lens or no lens', #JD/25
+ 65535 => 'E-Mount, T-Mount, Other Lens or no lens', #JD/JR
#
# Sony E-type lenses (NOTE: these should be kept in sync with %sonyLensTypes2 of Sony.pm)
#
@@ -498,43 +498,43 @@ my %metabonesID = (
65535.2 => 'Sony E 18-55mm F3.5-5.6 OSS', #PH (32785 - SEL1855)
65535.3 => 'Sony E 55-210mm F4.5-6.3 OSS', #PH (32786 - SEL55210)
65535.4 => 'Sony E 18-200mm F3.5-6.3 OSS', #PH (32787 - SEL18200)
- 65535.5 => 'Sony E 30mm F3.5 Macro', #25 (32788 - SEL30M35)
+ 65535.5 => 'Sony E 30mm F3.5 Macro', #JR (32788 - SEL30M35)
65535.6 => 'Sony E 24mm F1.8 ZA', #PH (32789 - SEL24F18Z)
65535.7 => 'Sony E 50mm F1.8 OSS', #PH (32790 - SEL50F18)
- 65535.8 => 'Sony E 16-70mm F4 ZA OSS', #25 (32791 - SEL1670Z)
+ 65535.8 => 'Sony E 16-70mm F4 ZA OSS', #JR (32791 - SEL1670Z)
65535.9 => 'Sony E 10-18mm F4 OSS', #PH (32792 - SEL1018)
'65535.10' => 'Sony E PZ 16-50mm F3.5-5.6 OSS', #PH (32793 - SELP1650)
- '65535.11' => 'Sony FE 35mm F2.8 ZA', #25 (32794 - SEL35F28Z)
- '65535.12' => 'Sony FE 24-70mm F4 ZA OSS', #25 (32795 - SEL2470Z)
- '65535.13' => 'Sony E 18-200mm F3.5-6.3 OSS LE', #25 (32797 - SEL18200LE)
+ '65535.11' => 'Sony FE 35mm F2.8 ZA', #JR (32794 - SEL35F28Z)
+ '65535.12' => 'Sony FE 24-70mm F4 ZA OSS', #JR (32795 - SEL2470Z)
+ '65535.13' => 'Sony E 18-200mm F3.5-6.3 OSS LE', #JR (32797 - SEL18200LE)
'65535.14' => 'Sony E 20mm F2.8', #PH (32798 - SEL20F28)
- '65535.15' => 'Sony E 35mm F1.8 OSS', #25 (32799 - SEL35F18)
- '65535.16' => 'Sony E PZ 18-105mm F4 G OSS', #25 (32800 - SELP18105G)
- '65535.17' => 'Sony FE 90mm F2.8 Macro G OSS', #25 (32802 - SEL90M28G)
- '65535.18' => 'Sony E 18-50mm F4-5.6', #25 (32803 - SEL1850)
- '65535.19' => 'Sony E PZ 18-200mm F3.5-6.3 OSS', #25 (32807 - SELP18200)
- '65535.20' => 'Sony FE 55mm F1.8 ZA', #25 (32808 - SEL55F18Z)
- '65535.21' => 'Sony FE 70-200mm F4 G OSS', #25 (32810 - SEL70200G)
- '65535.22' => 'Sony FE 16-35mm F4 ZA OSS', #25 (32811 - SEL1635Z)
- '65535.23' => 'Sony FE 28-70mm F3.5-5.6 OSS', #25 (32813 - SEL2870)
- '65535.24' => 'Sony FE 35mm F1.4 ZA', #25 (32814 - SEL35F14Z)
- '65535.25' => 'Sony FE 24-240mm F3.5-6.3 OSS', #25 (32815 - SEL24240)
- '65535.26' => 'Sony FE 28mm F2', #25 (32816 - SEL28F20)
- '65535.27' => 'Sony FE PZ 28-135mm F4 G OSS', #25 (32817 - SELP28135G)
- '65535.28' => 'Sony FE 21mm F2.8 (SEL28F20 + SEL075UWC)', #25 # (32826 - SEL28F20 + SEL075UWC Ultra-wide converter)
- '65535.29' => 'Sony FE 16mm F3.5 Fisheye (SEL28F20 + SEL057FEC)', #25 # (32827 - SEL28F20 + SEL057FEC Fisheye converter)
+ '65535.15' => 'Sony E 35mm F1.8 OSS', #JR (32799 - SEL35F18)
+ '65535.16' => 'Sony E PZ 18-105mm F4 G OSS', #JR (32800 - SELP18105G)
+ '65535.17' => 'Sony FE 90mm F2.8 Macro G OSS', #JR (32802 - SEL90M28G)
+ '65535.18' => 'Sony E 18-50mm F4-5.6', #JR (32803 - SEL1850)
+ '65535.19' => 'Sony E PZ 18-200mm F3.5-6.3 OSS', #JR (32807 - SELP18200)
+ '65535.20' => 'Sony FE 55mm F1.8 ZA', #JR (32808 - SEL55F18Z)
+ '65535.21' => 'Sony FE 70-200mm F4 G OSS', #JR (32810 - SEL70200G)
+ '65535.22' => 'Sony FE 16-35mm F4 ZA OSS', #JR (32811 - SEL1635Z)
+ '65535.23' => 'Sony FE 28-70mm F3.5-5.6 OSS', #JR (32813 - SEL2870)
+ '65535.24' => 'Sony FE 35mm F1.4 ZA', #JR (32814 - SEL35F14Z)
+ '65535.25' => 'Sony FE 24-240mm F3.5-6.3 OSS', #JR (32815 - SEL24240)
+ '65535.26' => 'Sony FE 28mm F2', #JR (32816 - SEL28F20)
+ '65535.27' => 'Sony FE PZ 28-135mm F4 G OSS', #JR (32817 - SELP28135G)
+ '65535.28' => 'Sony FE 21mm F2.8 (SEL28F20 + SEL075UWC)', #JR # (32826 - SEL28F20 + SEL075UWC Ultra-wide converter)
+ '65535.29' => 'Sony FE 16mm F3.5 Fisheye (SEL28F20 + SEL057FEC)', #JR # (32827 - SEL28F20 + SEL057FEC Fisheye converter)
#
# 3rd party E lenses
#
- '65535.30' => 'Sigma 19mm F2.8 [EX] DN', #25
- '65535.31' => 'Sigma 30mm F2.8 [EX] DN', #25
- '65535.32' => 'Sigma 60mm F2.8 DN', #25
- '65535.33' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #25 (Model B011)
- '65535.34' => 'Zeiss Loxia 35mm F2', #25
- '65535.35' => 'Zeiss Loxia 50mm F2', #25
- '65535.36' => 'Zeiss Touit 12mm F2.8', #25
- '65535.37' => 'Zeiss Touit 32mm F1.8', #25
- '65535.38' => 'Zeiss Touit 50mm F2.8 Macro', #25
+ '65535.30' => 'Sigma 19mm F2.8 [EX] DN', #JR
+ '65535.31' => 'Sigma 30mm F2.8 [EX] DN', #JR
+ '65535.32' => 'Sigma 60mm F2.8 DN', #JR
+ '65535.33' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #JR (Model B011)
+ '65535.34' => 'Zeiss Loxia 35mm F2', #JR
+ '65535.35' => 'Zeiss Loxia 50mm F2', #JR
+ '65535.36' => 'Zeiss Touit 12mm F2.8', #JR
+ '65535.37' => 'Zeiss Touit 32mm F1.8', #JR
+ '65535.38' => 'Zeiss Touit 50mm F2.8 Macro', #JR
#
# other lenses
#
@@ -552,11 +552,11 @@ my %metabonesID = (
0x04 => 'Minolta/Sony AF 1.4x APO (D) (0x04)', # (Andy Johnson, A77 APO and APO D)
0x05 => 'Minolta/Sony AF 2x APO (D) (0x05)', # (Andy Johnson, A77 APO D)
0x48 => 'Minolta/Sony AF 2x APO (D)',
- # 0x48 => 'Sony 2x Teleconverter (SAL20TC)', (ref 25)
+ # 0x48 => 'Sony 2x Teleconverter (SAL20TC)', (ref JR)
0x50 => 'Minolta AF 2x APO II',
0x60 => 'Minolta AF 2x APO',#26
0x88 => 'Minolta/Sony AF 1.4x APO (D)',
- # 0x88 => 'Sony 1.4x Teleconverter (SAL14TC)', (ref 25)
+ # 0x88 => 'Sony 1.4x Teleconverter (SAL14TC)', (ref JR)
0x90 => 'Minolta AF 1.4x APO II',
0xa0 => 'Minolta AF 1.4x APO',#26
);
@@ -589,11 +589,11 @@ my %metabonesID = (
6 => 'B&W',
7 => 'Adobe RGB',
12 => 'Neutral', # Sony
- 13 => 'Clear', #25 (NC)
- 14 => 'Deep', #25
- 15 => 'Light', #25 (NC)
- 16 => 'Autumn Leaves', #25 (NC)
- 17 => 'Sepia', #25
+ 13 => 'Clear', #JR (NC)
+ 14 => 'Deep', #JR
+ 15 => 'Light', #JR (NC)
+ 16 => 'Autumn Leaves', #JR (NC)
+ 17 => 'Sepia', #JR
100 => 'Neutral', #JD
101 => 'Clear', #JD
102 => 'Deep', #JD
@@ -627,7 +627,7 @@ my %metabonesID = (
26 => 'Fireworks', #28
27 => 'Food', #28
28 => 'Pet', #28
- 33 => 'HDR', #25
+ 33 => 'HDR', #JR
0xffff => 'n/a', #PH
);
@@ -1961,7 +1961,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
},
0x0d => { #20
Name => 'AFPointSelected', # (v8.88: renamed from LocalAFAreaPoint)
- # (9-point centre-cross AF system, ref 25)
+ # (9-point centre-cross AF system, ref JR)
PrintConv => {
1 => 'Center',
2 => 'Top',
diff --git a/lib/Image/ExifTool/Olympus.pm b/lib/Image/ExifTool/Olympus.pm
index 5281c804..23b89ddd 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.30';
+$VERSION = '2.31';
sub PrintLensInfo($$$);
@@ -344,6 +344,7 @@ my %olympusCameraTypes = (
D4581 => 'SH-1',
D4582 => 'TG-835',
D4585 => 'SH-2',
+ D4586 => 'TG-4',
D4809 => 'C2500L',
D4842 => 'E-10',
D4856 => 'C-1',
diff --git a/lib/Image/ExifTool/PostScript.pm b/lib/Image/ExifTool/PostScript.pm
index 175c8504..270ddce6 100644
--- a/lib/Image/ExifTool/PostScript.pm
+++ b/lib/Image/ExifTool/PostScript.pm
@@ -16,7 +16,7 @@ use strict;
use vars qw($VERSION $AUTOLOAD);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.38';
+$VERSION = '1.39';
sub WritePS($$);
sub ProcessPS($$;$);
@@ -383,6 +383,7 @@ sub ProcessPS($$;$)
$raf->Seek($pos, 0);
}
$et->SetFileType($type);
+ return 1 if $$et{OPTIONS}{FastScan} and $$et{OPTIONS}{FastScan} == 3;
#
# extract TIFF information from DOS header
#
diff --git a/lib/Image/ExifTool/Radiance.pm b/lib/Image/ExifTool/Radiance.pm
index 0df58119..66cfb02e 100644
--- a/lib/Image/ExifTool/Radiance.pm
+++ b/lib/Image/ExifTool/Radiance.pm
@@ -56,7 +56,7 @@ $VERSION = '1.01';
);
#------------------------------------------------------------------------------
-# Extract information from a Radiance JDR file
+# Extract information from a Radiance HDR file
# Inputs: 0) ExifTool object reference, 1) DirInfo reference
# Returns: 1 on success, 0 if this wasn't a valid RGBE image
sub ProcessHDR($$)
diff --git a/lib/Image/ExifTool/Rawzor.pm b/lib/Image/ExifTool/Rawzor.pm
index b9b17687..bdee691c 100644
--- a/lib/Image/ExifTool/Rawzor.pm
+++ b/lib/Image/ExifTool/Rawzor.pm
@@ -14,7 +14,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.03';
+$VERSION = '1.04';
# currently support this version Rawzor images
my $implementedRawzorVersion = 199; # (up to version 1.99)
@@ -140,8 +140,7 @@ sub ProcessRWZ($$)
my $origFileType = $$et{VALUE}{FileType};
if ($origFileType) {
$et->HandleTag($tagTablePtr, OriginalFileType => $origFileType);
- $$et{VALUE}{FileType} = 'RWZ';
- $$et{VALUE}{MIMEType} = 'image/x-rawzor';
+ $et->OverrideFileType('RWZ');
} else {
$et->HandleTag($tagTablePtr, OriginalFileType => 'Unknown');
$et->SetFileType();
diff --git a/lib/Image/ExifTool/Real.pm b/lib/Image/ExifTool/Real.pm
index 5d7c4355..a2765924 100644
--- a/lib/Image/ExifTool/Real.pm
+++ b/lib/Image/ExifTool/Real.pm
@@ -16,7 +16,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Canon;
-$VERSION = '1.05';
+$VERSION = '1.06';
sub ProcessRealMeta($$$);
sub ProcessRealProperties($$$);
@@ -522,6 +522,7 @@ sub ProcessReal($$)
$raf->Read($buff, 8) == 8 or return 0;
$buff =~ m{^(\.RMF|\.ra\xfd|pnm://|rtsp://|http://)} or return 0;
+ my $fast3 = $$et{OPTIONS}{FastScan} && $$et{OPTIONS}{FastScan} == 3;
my ($type, $tagTablePtr);
if ($1 eq '.RMF') {
$tagTablePtr = GetTagTable('Image::ExifTool::Real::Media');
@@ -544,6 +545,7 @@ sub ProcessReal($$)
# must be a Real file type if protocol is http
return 0 if $buff =~ /^http/ and $buff !~ /\.(ra|rm|rv|rmvb|smil)$/i;
$et->SetFileType($type);
+ return 1 if $fast3;
undef $type;
}
# save URL or Text from RAM file
@@ -554,6 +556,7 @@ sub ProcessReal($$)
}
$et->SetFileType($type);
+ return 1 if $fast3;
SetByteOrder('MM');
my $verbose = $et->Options('Verbose');
#
diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm
index d9c0560c..addec4a5 100644
--- a/lib/Image/ExifTool/Sony.pm
+++ b/lib/Image/ExifTool/Sony.pm
@@ -16,11 +16,11 @@
# 9) Michael Reitinger private communication (DSC-TX7,RX100)
# 10) http://www.klingebiel.com/tempest/hd/pmp.html
# 11) Mike Battilana private communication
-# 12) Jos Roost private communication (A580)
# 13) http://www.mi-fo.de/forum/index.php?showtopic=33239
# http://www.dyxum.com/dforum/the-alpha-shutter-count-tool_topic97489_page4.html
# 14) Iliah Borg private communication (LibRaw)
# JD) Jens Duttke private communication
+# JR) Jos Roost private communication
#------------------------------------------------------------------------------
package Image::ExifTool::Sony;
@@ -58,10 +58,10 @@ my %sonyLensTypes2 = (
2 => 'Sony LA-EA2 Adapter',
3 => 'Sony LA-EA3 Adapter', #(NC) ILCE-7 image with A-mount lens, but also has 0x940e 2nd byte=2
6 => 'Sony LA-EA4 Adapter', #(NC) ILCE-7R image with A-mount lens and having phase-detect info blocks in 0x940e AFInfo
- 44 => 'Metabones Canon EF Smart Adapter', #12
- 78 => 'Metabones Canon EF Smart Adapter Mark III or IV', #PH/12
- 234 => 'Adapter only - no lens attached', #12 (seen with LA-EA4 and Metabones Smart IV)
- 239 => 'Metabones Canon EF Speed Booster', #12
+ 44 => 'Metabones Canon EF Smart Adapter', #JR
+ 78 => 'Metabones Canon EF Smart Adapter Mark III or IV', #PH/JR
+ 234 => 'Adapter only - no lens attached', #JR (seen with LA-EA4 and Metabones Smart IV)
+ 239 => 'Metabones Canon EF Speed Booster', #JR
# Sony VX product code: (http://www.mi-fo.de/forum/index.php?s=7df1c8d3b1cd675f2abf4f4442e19cf2&showtopic=35035&view=findpost&p=303746)
32784 => 'Sony E 16mm F2.8', # VX9100
32785 => 'Sony E 18-55mm F3.5-5.6 OSS', # VX9101
@@ -79,7 +79,7 @@ my %sonyLensTypes2 = (
32797 => 'Sony E 18-200mm F3.5-6.3 OSS LE', # VX9113
32798 => 'Sony E 20mm F2.8', # VX9114
32799 => 'Sony E 35mm F1.8 OSS', # VX9115
- 32800 => 'Sony E PZ 18-105mm F4 G OSS', #12 # VX9116
+ 32800 => 'Sony E PZ 18-105mm F4 G OSS', #JR # VX9116
32802 => 'Sony FE 90mm F2.8 Macro G OSS', # VX?
32803 => 'Sony E 18-50mm F4-5.6',
@@ -87,19 +87,19 @@ my %sonyLensTypes2 = (
32807 => 'Sony E PZ 18-200mm F3.5-6.3 OSS', # VX9123
32808 => 'Sony FE 55mm F1.8 ZA', # VX9124
- 32810 => 'Sony FE 70-200mm F4 G OSS', #12 # VX9126
- 32811 => 'Sony FE 16-35mm F4 ZA OSS', #12 # VX9127
+ 32810 => 'Sony FE 70-200mm F4 G OSS', #JR # VX9126
+ 32811 => 'Sony FE 16-35mm F4 ZA OSS', #JR # VX9127
32813 => 'Sony FE 28-70mm F3.5-5.6 OSS', # VX9129
32814 => 'Sony FE 35mm F1.4 ZA', # VX?
32815 => 'Sony FE 24-240mm F3.5-6.3 OSS', # VX?
- 32816 => 'Sony FE 28mm F2', #12 # VX?
- 32817 => 'Sony FE PZ 28-135mm F4 G OSS',#12 # VX?
+ 32816 => 'Sony FE 28mm F2', #JR # VX?
+ 32817 => 'Sony FE PZ 28-135mm F4 G OSS',#JR # VX?
- 32826 => 'Sony FE 21mm F2.8 (SEL28F20 + SEL075UWC)', #12 # (+ Ultra-wide converter)
- 32827 => 'Sony FE 16mm F3.5 Fisheye (SEL28F20 + SEL057FEC)', #12 # (+ Fisheye converter)
+ 32826 => 'Sony FE 21mm F2.8 (SEL28F20 + SEL075UWC)', #JR # (+ Ultra-wide converter)
+ 32827 => 'Sony FE 16mm F3.5 Fisheye (SEL28F20 + SEL057FEC)', #JR # (+ Fisheye converter)
- # yet to be determined (ref 12):
+ # yet to be determined (ref JR):
# 32xxx => 'Sony FE 24-240mm F3.5-6.3 OSS # (SEL24240)
# 32xxx => 'Sony FE 35mm F1.4 ZA # (SEL35F14Z)
# 32xxx => 'Sony FE 90mm F2.8 Macro G # (SEL90M28G)
@@ -123,7 +123,7 @@ my %sonyExposureProgram = (
35 => 'Auto No Flash', # (A330)
);
-# ExposureProgram values in CameraSettings3 (ref 12)
+# ExposureProgram values in CameraSettings3 (ref JR)
my %sonyExposureProgram2 = ( # A580 Mode Dial setting:
1 => 'Program AE', # P
2 => 'Aperture-priority AE', # A
@@ -143,7 +143,7 @@ my %sonyExposureProgram2 = ( # A580 Mode Dial setting:
56 => 'Handheld Night Shot', # SCN (also called "Hand-held Twilight")
57 => '3D Sweep Panorama', # "Panorama" symbol
64 => 'Auto 2', #PH (A33 AUTO)
- 65 => 'Auto 2 (no flash)', #12 (NC, A35)
+ 65 => 'Auto 2 (no flash)', #JR (NC, A35)
80 => 'Sweep Panorama', # "Panorama" symbol
96 => 'Anti Motion Blur', #PH (NEX-5)
# 128-138 are A35 picture effects (combined SCN/Picture effect mode dial position)
@@ -160,7 +160,7 @@ my %sonyExposureProgram2 = ( # A580 Mode Dial setting:
138 => 'High Contrast Monochrome',
);
-# ExposureProgram values in Tags 2010 and 94xx (ref 12)
+# ExposureProgram values in Tags 2010 and 94xx (ref JR)
my %sonyExposureProgram3 = (
0 => 'Program AE',
1 => 'Aperture-priority AE',
@@ -196,7 +196,7 @@ my %sonyExposureProgram3 = (
43 => 'Cont. Priority AE',
);
-# WhiteBalanceSetting values (ref 12)
+# WhiteBalanceSetting values (ref JR)
my %whiteBalanceSetting = (
0x10 => 'Auto (-3)', #(NC)
0x11 => 'Auto (-2)', #(NC)
@@ -251,7 +251,7 @@ my %whiteBalanceSetting = (
0xf3 => 'Color Temperature/Color Filter',
);
-# AF points for cameras with 15-point AF (ref 12)
+# AF points for cameras with 15-point AF (ref JR)
my %afPoint15 = (
0 => 'Upper-left',
1 => 'Left',
@@ -348,7 +348,7 @@ my %meterInfo2 = (
},
0x0010 => [ #PH
# appears to contain mostly AF related information;
- # for SLT-A77V and newer, similar info is found in 0x940e AFInfo" (ref 12)
+ # for SLT-A77V and newer, similar info is found in 0x940e AFInfo" (ref JR)
{
Name => 'CameraInfo',
# count: A700=368, A850/A900=5478
@@ -378,11 +378,11 @@ my %meterInfo2 = (
SubDirectory => { TagTable => 'Image::ExifTool::Sony::CameraInfoUnknown' },
},
],
- # 0x0018 - starts with "GYRO" for sweep panorama images (ref 12)
+ # 0x0018 - starts with "GYRO" for sweep panorama images (ref JR)
# - contains ImageStabilization information for Minolta
0x0020 => [
# similar to WBInfoA100 in Minolta.pm.
- # appears to contain various types of information, as in MoreInfo. (ref 12)
+ # appears to contain various types of information, as in MoreInfo. (ref JR)
{
Name => 'FocusInfo', #PH
# count: A200/A230/A290/A300/A330/A350/A380/A390==19154, A700/A850/A900=19148
@@ -392,7 +392,7 @@ my %meterInfo2 = (
ByteOrder => 'LittleEndian',
},
},{
- Name => 'MoreInfo', #12
+ Name => 'MoreInfo', #JR
# count: A450/A500/A550/A560/A580/A33/A35/A55/NEX-3/5/C3/VG10E==20480
SubDirectory => {
TagTable => 'Image::ExifTool::Sony::MoreInfo',
@@ -481,9 +481,9 @@ my %meterInfo2 = (
0x70 => 'Custom',
},
},
- # Tag 0x0116: extra hardware info (ref 12)
+ # Tag 0x0116: extra hardware info (ref JR)
# (tag not present for A100, A200, A300, A350, A700, nor for A37, A57, A65, A77)
- 0x0116 => [ #12
+ 0x0116 => [ #JR
{
Name => 'ExtraInfo',
Condition => '$$self{Model} =~ /^DSLR-A(850|900)\b/',
@@ -528,7 +528,7 @@ my %meterInfo2 = (
0x1003 => { #9 (64 bytes, contains Panorama info for various DSC, NEX, SLT and DSLR models)
Name => 'Panorama',
# panorama: first 4 bytes '1 1 0 0' (little-endian) or '0 0 1 1' (big-endian)
- # non-panorama: all bytes are '0' (ref 12)
+ # non-panorama: all bytes are '0' (ref JR)
Condition => '$$self{Panorama} = ($$valPt =~ /^(\0\0)?\x01\x01/)', # (little- or big-endian int32u = 257)
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Panorama' },
},
@@ -575,9 +575,9 @@ my %meterInfo2 = (
return Set32u(length $val) . $size . ("\0" x 8) . $size . ("\0" x 4) . $val;
},
},
- 0x2002 => { #12 (written by Sony IDC)
+ 0x2002 => { #JR (written by Sony IDC)
Name => 'Rating',
- Writable => 'int32u', # (0-5 stars) (4294967295 for an HX9V iSweep Panorama, ref 12)
+ Writable => 'int32u', # (0-5 stars) (4294967295 for an HX9V iSweep Panorama, ref JR)
},
# 0x2003 - string[256]: all 0 for DSLR, SLT, NEX; data for DSC-HX9V
0x2004 => { #PH (NEX-5)
@@ -626,7 +626,7 @@ my %meterInfo2 = (
2 => 'Normal',
3 => 'High',
256 => 'Auto',
- # it seems that all DSC models except DSC-RX models give n/a here (ref 12)
+ # it seems that all DSC models except DSC-RX models give n/a here (ref JR)
65535 => 'n/a',
},
},
@@ -651,7 +651,7 @@ my %meterInfo2 = (
0x18 => '5.0 EV',
0x19 => '5.5 EV',
0x1a => '6.0 EV',
- },{ #12 (A580)
+ },{ #JR (A580)
0 => 'Uncorrected image', # A580 stores 2 images: uncorrected and HDR
1 => 'HDR image (good)',
2 => 'HDR image (fail 1)', # alignment problem?
@@ -675,26 +675,26 @@ my %meterInfo2 = (
Writable => 'int16u',
PrintConv => {
0 => 'Off',
- 1 => 'Toy Camera', #12 (A35)
- 2 => 'Pop Color', # (also A35/NEX-C3, ref 12)
- 3 => 'Posterization', #12 (A35)
- 4 => 'Posterization B/W', #12 (A35)
- 5 => 'Retro Photo', #12 (A35, NEX-5)
- 6 => 'Soft High Key', # (also A65V, A35/NEX-C3 call this "High-key", ref 12)
- 7 => 'Partial Color (red)', #12 (A35)
- 8 => 'Partial Color (green)', #12 (A35, NEX-5)
- 9 => 'Partial Color (blue)', #12 (A35)
- 10 => 'Partial Color (yellow)', #12 (A35, NEX-5)
- 13 => 'High Contrast Monochrome', #12 (A35)
- 16 => 'Toy Camera (normal)', # (also A65, ref 12)
+ 1 => 'Toy Camera', #JR (A35)
+ 2 => 'Pop Color', # (also A35/NEX-C3, ref JR)
+ 3 => 'Posterization', #JR (A35)
+ 4 => 'Posterization B/W', #JR (A35)
+ 5 => 'Retro Photo', #JR (A35, NEX-5)
+ 6 => 'Soft High Key', # (also A65V, A35/NEX-C3 call this "High-key", ref JR)
+ 7 => 'Partial Color (red)', #JR (A35)
+ 8 => 'Partial Color (green)', #JR (A35, NEX-5)
+ 9 => 'Partial Color (blue)', #JR (A35)
+ 10 => 'Partial Color (yellow)', #JR (A35, NEX-5)
+ 13 => 'High Contrast Monochrome', #JR (A35)
+ 16 => 'Toy Camera (normal)', # (also A65, ref JR)
17 => 'Toy Camera (cool)', # (RX100)
18 => 'Toy Camera (warm)', # (RX100)
19 => 'Toy Camera (green)', # (RX100)
20 => 'Toy Camera (magenta)', # (RX100)
- 32 => 'Soft Focus (low)', #12 (RX100)
- 33 => 'Soft Focus', #12 (A65V)
+ 32 => 'Soft Focus (low)', #JR (RX100)
+ 33 => 'Soft Focus', #JR (A65V)
34 => 'Soft Focus (high)', # (RX100)
- 48 => 'Miniature (auto)', #12 (A65V/NEX-7, horizontal)
+ 48 => 'Miniature (auto)', #JR (A65V/NEX-7, horizontal)
49 => 'Miniature (top)', # (RX100)
50 => 'Miniature (middle horizontal)', # (WX100/HX20V, horizontal)
51 => 'Miniature (bottom)', # (WX100, rotate 90 CW)
@@ -702,9 +702,9 @@ my %meterInfo2 = (
53 => 'Miniature (middle vertical)', # (RX100)
54 => 'Miniature (right)', # (RX100)
64 => 'HDR Painting (low)', # (RX100)
- 65 => 'HDR Painting', # (also A65V, ref 12)
+ 65 => 'HDR Painting', # (also A65V, ref JR)
66 => 'HDR Painting (high)', # (RX100)
- 80 => 'Rich-tone Monochrome', # (also A65V, ref 12)
+ 80 => 'Rich-tone Monochrome', # (also A65V, ref JR)
97 => 'Water Color', # (HX200V)
98 => 'Water Color 2',
112 => 'Illustration (low)', # (RX100)
@@ -720,12 +720,12 @@ my %meterInfo2 = (
1 => 'Low',
2 => 'Mid',
3 => 'High',
- # 0x10001 - seen (ref 12)
- # 0x10002 - seen for landscape and portrait flash (ref 12)
+ # 0x10001 - seen (ref JR)
+ # 0x10002 - seen for landscape and portrait flash (ref JR)
0xffffffff => 'n/a', # (A35)
},
},
- 0x2010 => [ #12
+ 0x2010 => [ #JR
# different camera models have similar content but at different offsets, appears to correlate with:
# 0x1206 - 0x1207 deciphered (0x1205 changes with firmware version):
# ad c3 - NEX-5N
@@ -805,7 +805,7 @@ my %meterInfo2 = (
0xffffffff => 'n/a', # (RX100)
},
},
- 0x2013 => { #PH (A77, NEX-5N) ("Setting"; application of such correction is indicated in Tag9405 - ref 12)
+ 0x2013 => { #PH (A77, NEX-5N) ("Setting"; application of such correction is indicated in Tag9405 - ref JR)
Name => 'DistortionCorrectionSetting',
Writable => 'int32u',
PrintConv => {
@@ -814,7 +814,7 @@ my %meterInfo2 = (
0xffffffff => 'n/a', # (RX100)
},
},
- 0x2014 => { #12/9
+ 0x2014 => { #JR/9
Name => 'WBShiftAB_GM',
Writable => 'int32s',
Count => 2,
@@ -831,7 +831,7 @@ my %meterInfo2 = (
PrintConv => { 0 => 'No', 1 => 'Yes' },
},
# 0x2017 - int32u: flash mode. 0=off, 1=fired, 2=red-eye (PH, NEX-6) (also in A99, RX1, NEX-5R)
- 0x2017 => { #12
+ 0x2017 => { #JR
Name => 'FlashAction',
Writable => 'int32u',
PrintConv => {
@@ -855,7 +855,7 @@ my %meterInfo2 = (
7 => 'AF-D', # "Depth Map Assist Continuous AF"
},
},
- 0x201c => [ #12
+ 0x201c => [ #JR
{
Name => 'AFAreaModeSetting',
Condition => '$$self{Model} =~ /^(SLT-|HV)/',
@@ -896,12 +896,12 @@ my %meterInfo2 = (
},
},
],
- 0x201d => { #12
+ 0x201d => { #JR
Name => 'FlexibleSpotPosition',
Condition => '$$self{Model} =~ /^(NEX-|ILCE-)/',
Writable => 'int16u',
Count => 2,
- # position in an 11x9 grid. Values are (ref 12, NC in brackets)
+ # position in an 11x9 grid. Values are (ref JR, NC in brackets)
# X = 135,165,196,227,(258),289,320,281,412,442/443
# Y = (70?),104,(138),(172),206,240,274,308,342,(376?)
Notes => q{
@@ -915,7 +915,7 @@ my %meterInfo2 = (
Writable => 'int8u',
PrintConvColumns => 2,
PrintConv => {
- 0 => 'Auto', # (NC) (always 0 for NEX/ILCE unless AFAreaModeSetting is Zone, ref 12)
+ 0 => 'Auto', # (NC) (always 0 for NEX/ILCE unless AFAreaModeSetting is Zone, ref JR)
1 => 'Center',
2 => 'Top',
3 => 'Upper-right',
@@ -977,7 +977,7 @@ my %meterInfo2 = (
0x9050 => {
Name => 'Tag9050',
# 944 bytes for A37, A57, A99, NEX-F3, NEX-5R, NEX-6, DSC-RX1, DSC-RX100
- # 3072 bytes for A65, A77, NEX-5N, NEX-7, NEX-VG20 (ref 12)
+ # 3072 bytes for A65, A77, NEX-5N, NEX-7, NEX-VG20 (ref JR)
SubDirectory => {
TagTable => 'Image::ExifTool::Sony::Tag9050',
ByteOrder => 'LittleEndian',
@@ -1015,7 +1015,7 @@ my %meterInfo2 = (
0x9401 => {
Name => 'Sony_0x9401',
%unknownCipherData,
- # notes for data in this block (ref PH/12):
+ # notes for data in this block (ref PH/JR):
# 0x02-0x03 appear to have some relation to start-offset of data...
# 0x00 - 0x03 Metering
# Mode
@@ -1142,7 +1142,7 @@ my %meterInfo2 = (
0x9406 => [{
Name => 'Tag9406',
# - first byte must be 0x01 or 0x02 (enciphered 0x01 or 0x08) and
- # third byte must be 0x02 or 0x03 (enciphered 0x08 or 0x1b) - ref 12
+ # third byte must be 0x02 or 0x03 (enciphered 0x08 or 0x1b) - ref JR
# (applies to most SLT and NEX models, but no DSC models)
Condition => '$$valPt =~ /^[\x01\x08].[\x08\x1b]/s',
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9406' },
@@ -1224,7 +1224,7 @@ my %meterInfo2 = (
'3 1 0 0' => 'ARW 2.1',
'3 2 0 0' => 'ARW 2.2', #PH (NEX-5)
'3 3 0 0' => 'ARW 2.3', #PH (SLT-A65,SLT-A77)
- '3 3 1 0' => 'ARW 2.3.1', #PH/12 (RX1R,RX100M2)
+ '3 3 1 0' => 'ARW 2.3.1', #PH/JR (RX1R,RX100M2)
# what about cRAW images?
},
},
@@ -1258,45 +1258,45 @@ my %meterInfo2 = (
282 => 'DSLR-A560', #PH
283 => 'DSLR-A580', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2881.0.html
284 => 'NEX-C3', #PH
- 285 => 'SLT-A35', #12
+ 285 => 'SLT-A35', #JR
286 => 'SLT-A65 / SLT-A65V', #PH
287 => 'SLT-A77 / SLT-A77V', #PH
288 => 'NEX-5N', #PH
- 289 => 'NEX-7', #PH (also Hasselblad Lunar, ref 12)
- 290 => 'NEX-VG20E', #12
- 291 => 'SLT-A37', #12
- 292 => 'SLT-A57', #12
+ 289 => 'NEX-7', #PH (also Hasselblad Lunar, ref JR)
+ 290 => 'NEX-VG20E', #JR
+ 291 => 'SLT-A37', #JR
+ 292 => 'SLT-A57', #JR
293 => 'NEX-F3', #PH
- 294 => 'SLT-A99 / SLT-A99V', #12 (also Hasselblad HV)
- 295 => 'NEX-6', #12
- 296 => 'NEX-5R', #12
- 297 => 'DSC-RX100', #PH (also Hasselblad Stellar, ref 12)
- 298 => 'DSC-RX1', #12
- 299 => 'NEX-VG900', #12
- 300 => 'NEX-VG30E', #12
- 302 => 'ILCE-3000 / ILCE-3500', #12
- 303 => 'SLT-A58', #12
+ 294 => 'SLT-A99 / SLT-A99V', #JR (also Hasselblad HV)
+ 295 => 'NEX-6', #JR
+ 296 => 'NEX-5R', #JR
+ 297 => 'DSC-RX100', #PH (also Hasselblad Stellar, ref JR)
+ 298 => 'DSC-RX1', #JR
+ 299 => 'NEX-VG900', #JR
+ 300 => 'NEX-VG30E', #JR
+ 302 => 'ILCE-3000 / ILCE-3500', #JR
+ 303 => 'SLT-A58', #JR
305 => 'NEX-3N', #PH
- 306 => 'ILCE-7', #12
- 307 => 'NEX-5T', #12
- 308 => 'DSC-RX100M2', #12
- 309 => 'DSC-RX10', #12
- 310 => 'DSC-RX1R', #12
- 311 => 'ILCE-7R', #12
- 312 => 'ILCE-6000', #12
- 313 => 'ILCE-5000', #12
- 317 => 'DSC-RX100M3', #12
- 318 => 'ILCE-7S', #12
+ 306 => 'ILCE-7', #JR
+ 307 => 'NEX-5T', #JR
+ 308 => 'DSC-RX100M2', #JR
+ 309 => 'DSC-RX10', #JR
+ 310 => 'DSC-RX1R', #JR
+ 311 => 'ILCE-7R', #JR
+ 312 => 'ILCE-6000', #JR
+ 313 => 'ILCE-5000', #JR
+ 317 => 'DSC-RX100M3', #JR
+ 318 => 'ILCE-7S', #JR
319 => 'ILCA-77M2', #14
- 339 => 'ILCE-5100', #12
- 340 => 'ILCE-7M2', #12
+ 339 => 'ILCE-5100', #JR
+ 340 => 'ILCE-7M2', #JR
346 => 'ILCE-QX1', #14
},
},
0xb020 => { #2
Name => 'CreativeStyle',
Writable => 'string',
- # (all of these values have been observed, ref 12 and PH)
+ # (all of these values have been observed, ref JR and PH)
# - this PrintConv is included to make these strings consistent with
# other CreativeStyle tags, and to facilitate the language translations
# - these values are always English, regardless of the camera language settings
@@ -1374,7 +1374,7 @@ my %meterInfo2 = (
PrintConv => {
0 => 'Off',
1 => 'On',
- 0xffffffff => 'n/a', # (HX9V sweep panorama, ref 12)
+ 0xffffffff => 'n/a', # (HX9V sweep panorama, ref JR)
},
},
0xb027 => { #2
@@ -1470,7 +1470,7 @@ my %meterInfo2 = (
14 => 'Smile Shutter', #9 (T200)
15 => 'Manual',
18 => 'High Sensitivity', #9
- 19 => 'Macro', #12
+ 19 => 'Macro', #JR
20 => 'Advanced Sports Shooting', #9
29 => 'Underwater', #9
# 30 seen for DSC-W110 and W390, maybe something with Face or Portrait ??
@@ -1482,8 +1482,8 @@ my %meterInfo2 = (
38 => 'Backlight Correction HDR', #9
39 => 'Superior Auto', #9
40 => 'Background Defocus', #PH (HX20V)
- 41 => 'Soft Skin', #12 (HX9V) (HX200V Portrait - PH)
- 42 => '3D Image', #12 (HX9V)
+ 41 => 'Soft Skin', #JR (HX9V) (HX200V Portrait - PH)
+ 42 => '3D Image', #JR (HX9V)
# 50 seen for DSC-W530
65535 => 'n/a', #PH (A100)
},
@@ -1513,7 +1513,7 @@ my %meterInfo2 = (
# AFAreaMode only for older models;
# exclude newest DSC models, which give AFAreaMode in Tag9402 0x0017 (eg. RX100 - PH)
Writable => 'int16u',
- Condition => 'not $$self{MetaVersion} or $$self{MetaVersion} ne "DC7303320222000"', #12
+ Condition => 'not $$self{MetaVersion} or $$self{MetaVersion} ne "DC7303320222000"', #JR
RawConv => '$val == 65535 ? undef : $val',
Notes => 'older models',
PrintConv => {
@@ -1524,11 +1524,11 @@ my %meterInfo2 = (
3 => 'Spot',
4 => 'Flexible Spot', # (T200)
6 => 'Touch',
- 14 => 'Tracking', #12 (HX9V) ("Manual" for the T200?, ref 9)
+ 14 => 'Tracking', #JR (HX9V) ("Manual" for the T200?, ref 9)
15 => 'Face Tracking', # (not set when in face detect mode and no faces detected)
65535 => 'n/a', #PH (A100)
},
- },{ #12
+ },{ #JR
Name => 'AFAreaMode',
# AFAreaMode for DSC-HX9V generation, having values that appear to be different from older models.
Writable => 'int16u',
@@ -1564,20 +1564,20 @@ my %meterInfo2 = (
PrintConv => {
0 => 'Standard',
1 => 'Fine',
- 2 => 'Extra Fine', #12
+ 2 => 'Extra Fine', #JR
65535 => 'n/a', #PH (A100)
},
},
0xb048 => { #9
- Name => 'FlashLevel', #12 other name, but values -9 to 9 match FlashExposureCompensation
+ Name => 'FlashLevel', #JR other name, but values -9 to 9 match FlashExposureCompensation
Writable => 'int16s',
RawConv => '($val == -1 and $$self{Model} =~ /DSLR-A100\b/) ? undef : $val',
PrintConv => {
-32768 => 'Low',
- -9 => '-9/3', #12
- -6 => '-6/3', #12
- -5 => '-5/3', #12
- -4 => '-4/3', #12
+ -9 => '-9/3', #JR
+ -6 => '-6/3', #JR
+ -5 => '-5/3', #JR
+ -4 => '-4/3', #JR
-3 => '-3/3',
-2 => '-2/3',
-1 => '-1/3', # (for the A100, -1 is effectively 'n/a' - PH)
@@ -1585,10 +1585,10 @@ my %meterInfo2 = (
1 => '+1/3',
2 => '+2/3',
3 => '+3/3',
- 4 => '+4/3', #12 (NC)
- 5 => '+5/3', #12 (NC)
- 6 => '+6/3', #12
- 128 => 'n/a', #12 (HX9V)
+ 4 => '+4/3', #JR (NC)
+ 5 => '+5/3', #JR (NC)
+ 6 => '+6/3', #JR
+ 128 => 'n/a', #JR (HX9V)
32767 => 'High',
},
},
@@ -1626,9 +1626,9 @@ my %meterInfo2 = (
65535 => 'n/a',
},
},
- # 0xb04c - rational64u: 10/10 (seen 5 for HX9V Manual-exposure images, ref 12)
+ # 0xb04c - rational64u: 10/10 (seen 5 for HX9V Manual-exposure images, ref JR)
# 0xb04d - int16u: 0
- # (the Kamisaka decoding of 0xb04e seems wrong - ref 12)
+ # (the Kamisaka decoding of 0xb04e seems wrong - ref JR)
# 0xb04e => { #2
# Name => 'LongExposureNoiseReduction',
# Notes => 'LongExposureNoiseReduction for other models',
@@ -1642,9 +1642,9 @@ my %meterInfo2 = (
# 65535 => 'n/a', #PH (A100)
# },
# },
- 0xb04e => { #PH (RX100) - but not in RX100M3 anymore (ref 12)
+ 0xb04e => { #PH (RX100) - but not in RX100M3 anymore (ref JR)
Name => 'FocusMode',
- Condition => '$$self{MetaVersion} and $$self{MetaVersion} eq "DC7303320222000"', #12
+ Condition => '$$self{MetaVersion} and $$self{MetaVersion} eq "DC7303320222000"', #JR
Notes => 'valid for DSC-HX9V generation and newer',
Writable => 'int16u',
PrintConv => {
@@ -1653,7 +1653,7 @@ my %meterInfo2 = (
2 => 'AF-S',
3 => 'AF-C',
# 4 - seen for HDR-CX360E/CX700E
- 5 => 'Semi-manual', #12 (HX9V)
+ 5 => 'Semi-manual', #JR (HX9V)
6 => 'DMF', # "Direct Manual Focus"
},
},
@@ -1677,8 +1677,8 @@ my %meterInfo2 = (
0 => 'Normal',
1 => 'High',
2 => 'Low',
- 3 => 'Off', #12
- # it seems that all SLT and NEX models give n/a here (ref 12)
+ 3 => 'Off', #JR
+ # it seems that all SLT and NEX models give n/a here (ref JR)
65535 => 'n/a',
},
},
@@ -1693,7 +1693,7 @@ my %meterInfo2 = (
},
},
# 0xb053 - int16u: normally 0, but got 1 for a superior auto backlight picture (RX100)
- 0xb054 => { #PH/9/12 (TX1,TX7,RX100,HX9V)
+ 0xb054 => { #PH/9/JR (TX1,TX7,RX100,HX9V)
Name => 'WhiteBalance',
Writable => 'int16u',
Notes => q{
@@ -1705,12 +1705,12 @@ my %meterInfo2 = (
4 => 'Custom', # (manual)
5 => 'Daylight',
6 => 'Cloudy',
- # PrintConv names matching Exif Fluorescent LightSource names (ref 12)
+ # PrintConv names matching Exif Fluorescent LightSource names (ref JR)
# (Sony uses conflicting names for some models)
- 7 => 'Cool White Fluorescent', # (RX100) (TX7/HX9V "Fluorescent 1 (White)", ref 9/12)
- 8 => 'Day White Fluorescent', # (RX100) (TX7/HX9V "Fluorescent 2 (Natural White)", ref 9/12)
- 9 => 'Daylight Fluorescent', # (RX100) (TX7/HX9V "Fluorescent 3 (Day White)", ref 9/12)
- 10 => 'Incandescent2', #12 (HX9V)
+ 7 => 'Cool White Fluorescent', # (RX100) (TX7/HX9V "Fluorescent 1 (White)", ref 9/JR)
+ 8 => 'Day White Fluorescent', # (RX100) (TX7/HX9V "Fluorescent 2 (Natural White)", ref 9/JR)
+ 9 => 'Daylight Fluorescent', # (RX100) (TX7/HX9V "Fluorescent 3 (Day White)", ref 9/JR)
+ 10 => 'Incandescent2', #JR (HX9V)
11 => 'Warm White Fluorescent',
14 => 'Incandescent',
15 => 'Flash',
@@ -1750,7 +1750,7 @@ my %meterInfo2 = (
},
);
-# camera information for the A700/A850/A900 (ref 12)
+# camera information for the A700/A850/A900 (ref JR)
%Image::ExifTool::Sony::CameraInfo = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -1903,7 +1903,7 @@ my %meterInfo2 = (
# 0x0166 - 40 x 128 int8u values: AF Info Blocks for A850 and A900, not for A700
);
-# camera information for other DSLR models (ref 12)
+# camera information for other DSLR models (ref JR)
%Image::ExifTool::Sony::CameraInfo2 = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -1923,7 +1923,7 @@ my %meterInfo2 = (
0x0014 => {
Name => 'AFPointSelected',
PrintConvColumns => 2,
- PrintConv => { #12 (NC) same list as A100, A700/A900, as all have 9 point AF
+ PrintConv => { #JR (NC) same list as A100, A700/A900, as all have 9 point AF
0 => 'Auto',
1 => 'Center',
2 => 'Top',
@@ -1990,7 +1990,7 @@ my %meterInfo2 = (
);
# Camera information for the A55 (ref PH)
-# (also valid for A33, A35, A560, A580 - ref 12)
+# (also valid for A33, A35, A560, A580 - ref JR)
%Image::ExifTool::Sony::CameraInfo3 = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -2000,7 +2000,7 @@ my %meterInfo2 = (
A580, NEX-3/5/5C/C3 and VG10E. Some tags are valid only for some of these
models.
},
- 0x00 => { #12
+ 0x00 => { #JR
Name => 'LensSpec',
Condition => '$$self{Model} !~ /^NEX-5C/',
Format => 'undef[8]',
@@ -2009,7 +2009,7 @@ my %meterInfo2 = (
PrintConv => \&PrintLensSpec,
PrintConvInv => \&PrintInvLensSpec,
},
- 0x0e => { #12
+ 0x0e => { #JR
Name => 'FocalLength',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
Format => 'int16u',
@@ -2019,7 +2019,7 @@ my %meterInfo2 = (
PrintConv => 'sprintf("%.1f mm",$val)',
PrintConvInv => '$val =~ s/ mm//; $val',
},
- 0x10 => { #12
+ 0x10 => { #JR
Name => 'FocalLengthTeleZoom',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
Format => 'int16u',
@@ -2034,10 +2034,10 @@ my %meterInfo2 = (
# 1) DSLR-A450/A500/A550 with 9 point AF system: decoding/offsets identical to A200 - A390 in CameraInfo
# 2) SLT-A33/A35/A55 and DSLR-A560/A580 with 15 point AF system: similar/more info but at different offsets
#
- 0x14 => { #12
+ 0x14 => { #JR
Name => 'AFPointSelected',
Condition => '$$self{Model} =~ /^(DSLR-A(450|500|550))\b/',
- # (these cameras have a 9-point AF system, ref 12)
+ # (these cameras have a 9-point AF system, ref JR)
PrintConvColumns => 2,
PrintConv => {
0 => 'Auto', # (seen in Wide mode and for Manual Focus)
@@ -2052,7 +2052,7 @@ my %meterInfo2 = (
9 => 'Upper-left',
},
},
- 0x15 => { #12
+ 0x15 => { #JR
Name => 'FocusMode',
Condition => '$$self{Model} =~ /^(DSLR-A(450|500|550))\b/',
PrintConv => {
@@ -2062,7 +2062,7 @@ my %meterInfo2 = (
3 => 'AF-A',
},
},
- 0x18 => { #12
+ 0x18 => { #JR
Name => 'AFPoint',
Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
PrintConv => {
@@ -2076,7 +2076,7 @@ my %meterInfo2 = (
7 => 'Bottom-left',
},
},
- 0x19 => { #12
+ 0x19 => { #JR
Name => 'FocusStatus',
Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
Notes => 'not valid with Contrast AF or for NEX models',
@@ -2094,7 +2094,7 @@ my %meterInfo2 = (
64 => 'AF-S - Confirmed',
},
},
- 0x1b => { #12
+ 0x1b => { #JR
Name => 'AFStatusActiveSensor',
Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
%Image::ExifTool::Minolta::afStatusInfo,
@@ -2102,8 +2102,8 @@ my %meterInfo2 = (
0x1c => {
Name => 'AFPointSelected', # (v8.88: renamed from LocalAFAreaPointSelected)
Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
- Notes => 'not valid for Contrast AF', #12
- # (all of these cameras have an 15-point three-cross AF system, ref 12)
+ Notes => 'not valid for Contrast AF', #JR
+ # (all of these cameras have an 15-point three-cross AF system, ref JR)
PrintConvColumns => 2,
PrintConv => {
0 => 'Auto', # (seen in Wide mode)
@@ -2134,28 +2134,28 @@ my %meterInfo2 = (
2 => 'AF-C',
3 => 'AF-A',
},
- },{ #12
+ },{ #JR
Name => 'AFStatusTop-right',
Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
%Image::ExifTool::Minolta::afStatusInfo,
},
],
- 0x1f => { #12
+ 0x1f => { #JR
Name => 'AFStatusBottom-right',
Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
%Image::ExifTool::Minolta::afStatusInfo,
},
- 0x20 => { #12
+ 0x20 => { #JR
Name => 'AFPoint', # (v8.88: renamed from LocalAFAreaPointUsed)
Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
Notes => 'the AF sensor used for focusing. Not valid for Contrast AF',
PrintConvColumns => 2,
PrintConv => {
%afPoint15,
- 255 => '(none)', #PH (A55, guess; also A35 with non-AF lens, ref 12)
+ 255 => '(none)', #PH (A55, guess; also A35 with non-AF lens, ref JR)
},
},
- 0x21 => [ #12
+ 0x21 => [ #JR
{
Name => 'AFStatusActiveSensor',
Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
@@ -2166,7 +2166,7 @@ my %meterInfo2 = (
%Image::ExifTool::Minolta::afStatusInfo,
},
],
- 0x23 => [ #12
+ 0x23 => [ #JR
{
Name => 'AFStatus15',
Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
@@ -2188,7 +2188,7 @@ my %meterInfo2 = (
0x31 => { Name => 'AFStatusRight', Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/', %Image::ExifTool::Minolta::afStatusInfo },
# 0x0166 - starting here there are 96 AF Info blocks of 155 bytes each for the SLT-A33/A35/A55 and DSLR-A560/A580,
# starting here there are 86 AF Info blocks of 174 bytes each for the DSLR-A450/A500/A550,
- # but NOT for NEX, and not for the A580 in Contrast-AF mode (ref 12)
+ # but NOT for NEX, and not for the A580 in Contrast-AF mode (ref JR)
# The 43rd byte of each block for A580 appears to be the AFPoint as in offset 0x20,
# possibly also 73rd and 74th byte
);
@@ -2208,7 +2208,7 @@ my %meterInfo2 = (
More camera settings and focus information decoded for models such as the
A200, A230, A290, A300, A330, A350, A380, A390, A700, A850 and A900.
},
- 0x0e => [{ #7/12
+ 0x0e => [{ #7/JR
Name => 'DriveMode2',
Condition => '$$self{Model} =~ /^DSLR-A(230|290|330|380|390)$/',
Notes => 'A230, A290, A330, A380 and A390',
@@ -2231,20 +2231,20 @@ my %meterInfo2 = (
PrintConv => {
0x01 => 'Single Frame',
0x02 => 'Continuous High', # A700/A900; not on A850
- 0x12 => 'Continuous Low', #12
+ 0x12 => 'Continuous Low', #JR
0x04 => 'Self-timer 10 sec',
0x05 => 'Self-timer 2 sec, Mirror Lock-up',
0x06 => 'Single-frame Bracketing',
0x07 => 'Continuous Bracketing',
- 0x18 => 'White Balance Bracketing Low', #12
- 0x28 => 'White Balance Bracketing High', #12
- 0x19 => 'D-Range Optimizer Bracketing Low', #12
- 0x29 => 'D-Range Optimizer Bracketing High', #12
- 0x0a => 'Remote Commander', #12
- 0x0b => 'Mirror Lock-up', #12 (A850/A900; not on A700)
+ 0x18 => 'White Balance Bracketing Low', #JR
+ 0x28 => 'White Balance Bracketing High', #JR
+ 0x19 => 'D-Range Optimizer Bracketing Low', #JR
+ 0x29 => 'D-Range Optimizer Bracketing High', #JR
+ 0x0a => 'Remote Commander', #JR
+ 0x0b => 'Mirror Lock-up', #JR (A850/A900; not on A700)
},
}],
- 0x10 => { #12 (1 and 2 inverted!)
+ 0x10 => { #JR (1 and 2 inverted!)
Name => 'Rotation',
PrintConv => {
0 => 'Horizontal (normal)',
@@ -2265,11 +2265,11 @@ my %meterInfo2 = (
3 => 'Advanced Level',
},
},
- 0x2b => { #12 seen 2,1,3 for both WB and DRO bracketing
+ 0x2b => { #JR seen 2,1,3 for both WB and DRO bracketing
Name => 'BracketShotNumber',
Notes => 'WB and DRO bracketing',
},
- 0x2c => { #12
+ 0x2c => { #JR
Name => 'WhiteBalanceBracketing',
PrintConv => {
0 => 'Off',
@@ -2277,10 +2277,10 @@ my %meterInfo2 = (
2 => 'High',
},
},
- 0x2d => { #12 seen 2,1,3 for both WB and DRO bracketing
+ 0x2d => { #JR seen 2,1,3 for both WB and DRO bracketing
Name => 'BracketShotNumber2',
},
- 0x2e => { # 12
+ 0x2e => { #JR
Name => 'DynamicRangeOptimizerBracket',
PrintConv => {
0 => 'Off',
@@ -2288,15 +2288,15 @@ my %meterInfo2 = (
2 => 'High',
},
},
- 0x2f => { #12 seen 0,1,2 and 0,1,2,3,4 for 3 and 5 image bracketing sequences
+ 0x2f => { #JR seen 0,1,2 and 0,1,2,3,4 for 3 and 5 image bracketing sequences
Name => 'ExposureBracketShotNumber',
},
- 0x3f => { #12
+ 0x3f => { #JR
Name => 'ExposureProgram',
SeparateTable => 'ExposureProgram',
PrintConv => \%sonyExposureProgram,
},
- 0x41 => { #12 style actually used (combination of mode dial + creative style menu)
+ 0x41 => { #JR style actually used (combination of mode dial + creative style menu)
Name => 'CreativeStyle',
PrintConvColumns => 2,
PrintConv => {
@@ -2330,7 +2330,7 @@ my %meterInfo2 = (
PrintConv => '$val ? sprintf("%.0f",$val) : "Auto"',
PrintConvInv => '$val =~ /auto/i ? 0 : $val',
},
- 0x77 => { #12
+ 0x77 => { #JR
Name => 'DynamicRangeOptimizerMode',
PrintConv => {
0 => 'Off',
@@ -2385,7 +2385,7 @@ my %meterInfo2 = (
},
);
-# more camera setting information (ref 12)
+# more camera setting information (ref JR)
# - many of these tags are the same as in CameraSettings3
%Image::ExifTool::Sony::MoreInfo = (
PROCESS_PROC => \&ProcessMoreInfo,
@@ -2415,8 +2415,8 @@ my %meterInfo2 = (
# 0x0102: 1804 bytes
# 0x0103: 176 bytes
# 0x0104: 1088 bytes
- # 0x0105: 160 bytes (all zero unless flash is used, ref 12)
- # 0x0106: 256 bytes (faces detected if first byte is non-zero? ref 12)
+ # 0x0105: 160 bytes (all zero unless flash is used, ref JR)
+ # 0x0106: 256 bytes (faces detected if first byte is non-zero? ref JR)
0x0107 => { # (7200 bytes: 3 sets of 40x30 int16u values in the range 0-1023)
Name => 'TiffMeteringImage',
Notes => q{
@@ -2482,21 +2482,21 @@ my %meterInfo2 = (
# },
0x011b => { #13
Name => 'ImageCount',
- Condition => '$$self{Model} !~ /^DSLR-A(450|500|550)$/', #12
+ Condition => '$$self{Model} !~ /^DSLR-A(450|500|550)$/', #JR
Format => 'int32u',
Notes => 'not valid for the A450, A500 or A550',
RawConv => '$val & 0x00ffffff',
},
0x0125 => { #13
Name => 'ShutterCount',
- Condition => '$$self{Model} !~ /^DSLR-A(450|500|550)$/', #12
+ Condition => '$$self{Model} !~ /^DSLR-A(450|500|550)$/', #JR
Format => 'int32u',
Notes => 'not valid for the A450, A500 or A550',
RawConv => '$val & 0x00ffffff',
},
0x014a => { #13
Name => 'ShutterCount', # (=ImageCount for these models)
- Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)$/', #12
+ Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)$/', #JR
Format => 'int32u',
Notes => 'A450, A500 and A550 only',
RawConv => '$val & 0x00ffffff',
@@ -2507,7 +2507,7 @@ my %meterInfo2 = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
PRIORITY => 0,
- 0x044e => { #12
+ 0x044e => { #JR
Name => 'ShotNumberSincePowerUp',
Condition => '$$self{Model} !~ /^NEX-(3|5)$/',
Format => 'int32u',
@@ -2531,7 +2531,7 @@ my %meterInfo2 = (
# 0x118d - int16u LensType Condition => '$$self{Model} =~ /^SLT-A35/',
);
-# more camera setting information (ref 12)
+# more camera setting information (ref JR)
# - many of these tags are the same as in CameraSettings3
%Image::ExifTool::Sony::MoreSettings = (
%binaryDataAttrs,
@@ -2595,7 +2595,7 @@ my %meterInfo2 = (
160 => 'Sunset',
},
},
- 0x08 => { #12
+ 0x08 => { #JR
Name => 'ContrastSetting',
Format => 'int8s',
PrintConv => '$val > 0 ? "+$val" : $val',
@@ -2698,9 +2698,9 @@ my %meterInfo2 = (
PrintConvColumns => 3,
PrintConv => {
33 => '1 EV',
- 34 => '1.5 EV', #12 (NC)
+ 34 => '1.5 EV', #JR (NC)
35 => '2 EV',
- 36 => '2.5 EV', #12 (NC)
+ 36 => '2.5 EV', #JR (NC)
37 => '3 EV',
38 => '3.5 EV', #PH (NC)
39 => '4 EV',
@@ -3058,7 +3058,7 @@ my %meterInfo2 = (
},
);
-# Face detection information (ref 12)
+# Face detection information (ref JR)
my %faceInfo = (
Format => 'int16u[4]',
# re-order to top,left,height,width and scale to full-sized image like other Sony models
@@ -3230,54 +3230,54 @@ my %faceInfo = (
FORMAT => 'int16u',
PRIORITY => 0,
NOTES => 'Camera settings for the A200, A300, A350, A700, A850 and A900.',
- 0x00 => { #12
+ 0x00 => { #JR
Name => 'ExposureTime',
ValueConv => '$val ? 2 ** (6 - $val/8) : 0',
ValueConvInv => '$val ? int((6 - log($val) / log(2)) * 8 + 0.5) : 0',
PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
},
- 0x01 => { #12
+ 0x01 => { #JR
Name => 'FNumber',
ValueConv => '2 ** (($val/8 - 1) / 2)',
ValueConvInv => 'int((log($val) * 2 / log(2) + 1) * 8 + 0.5)',
PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
PrintConvInv => '$val',
},
- 0x02 => { #12 (requires external flash)
+ 0x02 => { #JR (requires external flash)
Name => 'HighSpeedSync',
PrintConv => {
0 => 'Off',
1 => 'On',
},
},
- 0x03 => { #12
+ 0x03 => { #JR
Name => 'ExposureCompensationSet',
ValueConv => '($val - 128) / 24',
ValueConvInv => 'int($val * 24 + 128.5)',
PrintConv => '$val ? sprintf("%+.1f",$val) : $val',
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
},
- 0x04 => { #7/12
+ 0x04 => { #7/JR
Name => 'DriveMode',
Mask => 0xff, # (not sure what upper byte is for)
PrintConv => {
0x01 => 'Single Frame',
0x02 => 'Continuous High', # A700/A900; not on A850
- 0x12 => 'Continuous Low', #12
+ 0x12 => 'Continuous Low', #JR
0x04 => 'Self-timer 10 sec',
0x05 => 'Self-timer 2 sec, Mirror Lock-up',
0x06 => 'Single-frame Bracketing',
0x07 => 'Continuous Bracketing', # (A200 val=0x1107)
- 0x18 => 'White Balance Bracketing Low', #12
- 0x28 => 'White Balance Bracketing High', #12
- 0x19 => 'D-Range Optimizer Bracketing Low', #12
- 0x29 => 'D-Range Optimizer Bracketing High', #12
- 0x0a => 'Remote Commander', #12
- 0x0b => 'Mirror Lock-up', #12 (A850/A900; not on A700)
+ 0x18 => 'White Balance Bracketing Low', #JR
+ 0x28 => 'White Balance Bracketing High', #JR
+ 0x19 => 'D-Range Optimizer Bracketing Low', #JR
+ 0x29 => 'D-Range Optimizer Bracketing High', #JR
+ 0x0a => 'Remote Commander', #JR
+ 0x0b => 'Mirror Lock-up', #JR (A850/A900; not on A700)
},
},
- 0x05 => { #12
+ 0x05 => { #JR
Name => 'WhiteBalanceSetting',
PrintConv => {
2 => 'Auto',
@@ -3293,18 +3293,18 @@ my %faceInfo = (
34 => 'Custom 3',
},
},
- 0x06 => { #7 (A700) (ref 12: at least also valid for A200, ValueConv as for ColorCompensationFilterSet)
+ 0x06 => { #7 (A700) (ref JR: at least also valid for A200, ValueConv as for ColorCompensationFilterSet)
Name => 'WhiteBalanceFineTune',
ValueConv => '$val > 128 ? $val - 256 : $val',
},
- 0x07 => { #12 as set in WB "Color Temperature/Color Filter" and in White Balance Bracketing
+ 0x07 => { #JR as set in WB "Color Temperature/Color Filter" and in White Balance Bracketing
Name => 'ColorTemperatureSet',
ValueConv => '$val * 100',
ValueConvInv => '$val / 100',
PrintConv => '"$val K"',
PrintConvInv => '$val =~ s/ ?K$//i; $val',
},
- 0x08 => { #12 as set in WB "Color Temperature/Color Filter"
+ 0x08 => { #JR as set in WB "Color Temperature/Color Filter"
Name => 'ColorCompensationFilterSet',
Notes => 'negative is green, positive is magenta',
ValueConv => '$val > 128 ? $val - 256 : $val',
@@ -3312,14 +3312,14 @@ my %faceInfo = (
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
- 0x0c => { #12 as set in WB "Custom" and in White Balance Bracketing
+ 0x0c => { #JR as set in WB "Custom" and in White Balance Bracketing
Name => 'ColorTemperatureCustom',
ValueConv => '$val * 100',
ValueConvInv => '$val / 100',
PrintConv => '"$val K"',
PrintConvInv => '$val =~ s/ ?K$//i; $val',
},
- 0x0d => { #12 as set in WB "Custom"
+ 0x0d => { #JR as set in WB "Custom"
Name => 'ColorCompensationFilterCustom',
Notes => 'negative is green, positive is magenta',
ValueConv => '$val > 128 ? $val - 256 : $val',
@@ -3327,7 +3327,7 @@ my %faceInfo = (
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
- 0x0f => { #12
+ 0x0f => { #JR
Name => 'WhiteBalance',
PrintConv => {
2 => 'Auto',
@@ -3349,7 +3349,7 @@ my %faceInfo = (
1 => 'AF-S',
2 => 'AF-C',
3 => 'AF-A',
- 4 => 'DMF', #12
+ 4 => 'DMF', #JR
},
},
0x11 => { #JD (A700)
@@ -3365,9 +3365,9 @@ my %faceInfo = (
Format => 'int16u',
# The AF point as selected by the user in AFAreaMode=Local or Spot;
# Reported value remains at the last-set position in AFAreaModes=Wide.
- # A200, A300, A350: 9-point centre-cross (ref 12)
- # A700: 11-point centre-dual-cross (ref 12)
- # A850, A900: 9-point centre-dual-cross with 10 assist-points (ref 12)
+ # A200, A300, A350: 9-point centre-cross (ref JR)
+ # A700: 11-point centre-dual-cross (ref JR)
+ # A850, A900: 9-point centre-dual-cross with 10 assist-points (ref JR)
PrintConvColumns => 2,
PrintConv => {
1 => 'Center',
@@ -3383,7 +3383,7 @@ my %faceInfo = (
11 => 'Far Left', # (presumably A700 only)
},
},
- 0x13 => { #12
+ 0x13 => { #JR
Name => 'FlashMode',
PrintConv => {
0 => 'Autoflash',
@@ -3394,7 +3394,7 @@ my %faceInfo = (
6 => 'Slow Sync',
},
},
- 0x14 => { #12
+ 0x14 => { #JR
Name => 'FlashExposureCompSet',
Description => 'Flash Exposure Comp. Setting',
# (as pre-selected by the user, not zero if flash didn't fire)
@@ -3451,7 +3451,7 @@ my %faceInfo = (
16 => 'Sepia', #7
},
},
- 0x1b => { #12
+ 0x1b => { #JR
Name => 'ColorSpace',
PrintConv => {
0 => 'sRGB',
@@ -3549,19 +3549,19 @@ my %faceInfo = (
129 => 'StyleBox1',
130 => 'StyleBox2',
131 => 'StyleBox3',
- 132 => 'StyleBox4', #12 (A850)
- 133 => 'StyleBox5', #12 (A850)
- 134 => 'StyleBox6', #12 (A850)
+ 132 => 'StyleBox4', #JR (A850)
+ 133 => 'StyleBox5', #JR (A850)
+ 134 => 'StyleBox6', #JR (A850)
},
},
- 0x2e => { #12 (may not apply to A200/A300/A350 -- they don't have the AF/MF button)
+ 0x2e => { #JR (may not apply to A200/A300/A350 -- they don't have the AF/MF button)
Name => 'FocusModeSwitch',
PrintConv => {
0 => 'AF',
1 => 'Manual',
},
},
- 0x2f => { #12
+ 0x2f => { #JR
Name => 'ShutterSpeedSetting',
Notes => 'used in M, S and Program Shift S modes',
ValueConv => '$val ? 2 ** (6 - $val/8) : 0',
@@ -3569,7 +3569,7 @@ my %faceInfo = (
PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
},
- 0x30 => { #12
+ 0x30 => { #JR
Name => 'ApertureSetting',
Notes => 'used in M, A and Program Shift A modes',
ValueConv => '2 ** (($val/8 - 1) / 2)',
@@ -3586,7 +3586,7 @@ my %faceInfo = (
Name => 'ImageStabilizationSetting',
PrintConv => { 0 => 'Off', 1 => 'On' },
},
- 0x3e => { #12
+ 0x3e => { #JR
Name => 'FlashAction',
PrintConv => {
0 => 'Did not fire',
@@ -3603,14 +3603,14 @@ my %faceInfo = (
2 => 'Rotate 270 CW',
},
},
- 0x40 => { #12
+ 0x40 => { #JR
Name => 'AELock',
PrintConv => {
1 => 'Off',
2 => 'On',
},
},
- 0x4c => { #12
+ 0x4c => { #JR
Name => 'FlashAction2',
PrintConv => {
1 => 'Fired, Autoflash',
@@ -3624,17 +3624,17 @@ my %faceInfo = (
34 => 'Fired, Fill-flash, HSS',
},
},
- 0x4d => { #12
+ 0x4d => { #JR
Name => 'FocusMode', # (focus mode actually used)
PrintConv => {
0 => 'Manual',
1 => 'AF-S',
2 => 'AF-C',
3 => 'AF-A',
- 4 => 'DMF', #12
+ 4 => 'DMF', #JR
},
},
- 0x50 => { #12
+ 0x50 => { #JR
Name => 'BatteryState',
PrintConv => {
2 => 'Empty', # 0%
@@ -3644,12 +3644,12 @@ my %faceInfo = (
6 => 'Full', # > 80%
},
},
- 0x51 => { #12
+ 0x51 => { #JR
Name => 'BatteryLevel',
PrintConv => '"$val%"',
PrintConvInv => '$val=~s/\s*\%//; $val',
},
- 0x53 => { #12
+ 0x53 => { #JR
Name => 'FocusStatus',
PrintConv => {
0 => 'Not confirmed',
@@ -3695,20 +3695,20 @@ my %faceInfo = (
50 => '1/2 EV',
},
},
- 0x6a => { #12
+ 0x6a => { #JR
Name => 'RedEyeReduction',
PrintConv => {
0 => 'Off',
1 => 'On',
},
},
- 0x9a => { #12
+ 0x9a => { #JR
Name => 'FolderNumber',
Mask => 0x03ff, # (not sure what the upper 6 bits are for)
PrintConv => 'sprintf("%.3d",$val)',
PrintConvInv => '$val',
},
- 0x9b => { #12
+ 0x9b => { #JR
Name => 'ImageNumber',
Mask => 0x3fff, # (not sure what the upper 2 bits are for)
PrintConv => 'sprintf("%.4d",$val)',
@@ -3724,28 +3724,28 @@ my %faceInfo = (
PRIORITY => 0,
NOTES => 'Camera settings for the A230, A290, A330, A380 and A390.',
### 0x00-0x03: same TagID as CameraSettings
- 0x00 => { #12
+ 0x00 => { #JR
Name => 'ExposureTime',
ValueConv => '$val ? 2 ** (6 - $val/8) : 0',
ValueConvInv => '$val ? int((6 - log($val) / log(2)) * 8 + 0.5) : 0',
PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
},
- 0x01 => { #12
+ 0x01 => { #JR
Name => 'FNumber',
ValueConv => '2 ** (($val/8 - 1) / 2)',
ValueConvInv => 'int((log($val) * 2 / log(2) + 1) * 8 + 0.5)',
PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
PrintConvInv => '$val',
},
- 0x02 => { #12 (requires external flash)
+ 0x02 => { #JR (requires external flash)
Name => 'HighSpeedSync',
PrintConv => {
0 => 'Off',
1 => 'On',
},
},
- 0x03 => { #12
+ 0x03 => { #JR
Name => 'ExposureCompensationSet',
ValueConv => '($val - 128) / 24',
ValueConvInv => 'int($val * 24 + 128.5)',
@@ -3753,7 +3753,7 @@ my %faceInfo = (
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
},
### 0x04-0x11: subtract 1 from CameraSettings TagID
- 0x04 => { #12
+ 0x04 => { #JR
Name => 'WhiteBalanceSetting',
PrintConv => {
2 => 'Auto',
@@ -3769,18 +3769,18 @@ my %faceInfo = (
34 => 'Custom 3',
},
},
- 0x05 => { #12
+ 0x05 => { #JR
Name => 'WhiteBalanceFineTune',
ValueConv => '$val > 128 ? $val - 256 : $val',
},
- 0x06 => { #12 as set in WB "Color Temperature/Color Filter" and in White Balance Bracketing
+ 0x06 => { #JR as set in WB "Color Temperature/Color Filter" and in White Balance Bracketing
Name => 'ColorTemperatureSet',
ValueConv => '$val * 100',
ValueConvInv => '$val / 100',
PrintConv => '"$val K"',
PrintConvInv => '$val =~ s/ ?K$//i; $val',
},
- 0x07 => { #12 as set in WB "Color Temperature/Color Filter"
+ 0x07 => { #JR as set in WB "Color Temperature/Color Filter"
Name => 'ColorCompensationFilterSet',
Notes => 'negative is green, positive is magenta',
ValueConv => '$val > 128 ? $val - 256 : $val',
@@ -3788,18 +3788,18 @@ my %faceInfo = (
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
- 0x08 => { #12
+ 0x08 => { #JR
Name => 'CustomWB_RGBLevels',
Format => 'int16u[3]',
},
- 0x0b => { #12 as set in WB "Custom" and in White Balance Bracketing
+ 0x0b => { #JR as set in WB "Custom" and in White Balance Bracketing
Name => 'ColorTemperatureCustom',
ValueConv => '$val * 100',
ValueConvInv => '$val / 100',
PrintConv => '"$val K"',
PrintConvInv => '$val =~ s/ ?K$//i; $val',
},
- 0x0c => { #12 as set in WB "Custom"
+ 0x0c => { #JR as set in WB "Custom"
Name => 'ColorCompensationFilterCustom',
Notes => 'negative is green, positive is magenta',
ValueConv => '$val > 128 ? $val - 256 : $val',
@@ -3807,7 +3807,7 @@ my %faceInfo = (
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
- 0x0e => { #12
+ 0x0e => { #JR
Name => 'WhiteBalance',
PrintConv => {
2 => 'Auto',
@@ -3822,7 +3822,7 @@ my %faceInfo = (
17 => 'Shade',
},
},
- 0x0f => { #12/PH (educated guess)
+ 0x0f => { #JR/PH (educated guess)
Name => 'FocusModeSetting',
PrintConv => {
0 => 'Manual',
@@ -3832,7 +3832,7 @@ my %faceInfo = (
# seen 5 for A380 (FocusMode was Manual and FocusStatus was Confirmed)
},
},
- 0x10 => { #12/PH (educated guess)
+ 0x10 => { #JR/PH (educated guess)
Name => 'AFAreaMode',
PrintConv => {
0 => 'Wide',
@@ -3840,12 +3840,12 @@ my %faceInfo = (
2 => 'Spot',
},
},
- 0x11 => { #12/PH (educated guess)
+ 0x11 => { #JR/PH (educated guess)
Name => 'AFPointSetting',
Format => 'int16u',
# The AF point as selected by the user in AFAreaMode=Local or Spot;
# Reported value remains at the last-set position in AFAreaModes=Wide.
- # (all of these cameras have a 9-point centre-cross AF system, ref 12)
+ # (all of these cameras have a 9-point centre-cross AF system, ref JR)
PrintConvColumns => 2,
PrintConv => {
1 => 'Center',
@@ -3860,7 +3860,7 @@ my %faceInfo = (
},
},
### 0x12-0x18: subtract 2 from CameraSettings TagID
- 0x12 => { #12
+ 0x12 => { #JR
Name => 'FlashExposureCompSet',
Description => 'Flash Exposure Comp. Setting',
# (as pre-selected by the user, not zero if flash didn't fire)
@@ -3992,11 +3992,11 @@ my %faceInfo = (
SeparateTable => 'ExposureProgram',
PrintConv => \%sonyExposureProgram,
},
- 0x3d => { # (copied from CameraSettings, ref 12)
+ 0x3d => { # (copied from CameraSettings, ref JR)
Name => 'ImageStabilizationSetting',
PrintConv => { 0 => 'Off', 1 => 'On' },
},
- 0x3e => { #12
+ 0x3e => { #JR
Name => 'FlashAction',
PrintConv => {
0 => 'Did not fire',
@@ -4013,14 +4013,14 @@ my %faceInfo = (
2 => 'Rotate 270 CW',
},
},
- 0x40 => { #12
+ 0x40 => { #JR
Name => 'AELock',
PrintConv => {
1 => 'Off',
2 => 'On',
},
},
- 0x4c => { #12
+ 0x4c => { #JR
Name => 'FlashAction2',
PrintConv => {
1 => 'Fired, Autoflash',
@@ -4034,7 +4034,7 @@ my %faceInfo = (
34 => 'Fired, Fill-flash, HSS',
},
},
- 0x4d => { #12
+ 0x4d => { #JR
Name => 'FocusMode', # (focus mode actually used)
PrintConv => {
0 => 'Manual',
@@ -4043,7 +4043,7 @@ my %faceInfo = (
3 => 'AF-A',
},
},
- 0x53 => { #12 (copied from CameraSettings, but all bits may not be applicable for these models)
+ 0x53 => { #JR (copied from CameraSettings, but all bits may not be applicable for these models)
Name => 'FocusStatus',
PrintConv => {
0 => 'Not confirmed',
@@ -4063,14 +4063,14 @@ my %faceInfo = (
3 => 'Small',
},
},
- 0x55 => { # (copied from CameraSettings, ref 12)
+ 0x55 => { # (copied from CameraSettings, ref JR)
Name => 'AspectRatio',
PrintConv => {
1 => '3:2',
2 => '16:9',
},
},
- 0x56 => { # (copied from CameraSettings, ref 12)
+ 0x56 => { # (copied from CameraSettings, ref JR)
Name => 'Quality',
PrintConv => {
0 => 'RAW',
@@ -4082,7 +4082,7 @@ my %faceInfo = (
48 => 'Standard',
},
},
- 0x58 => { # (copied from CameraSettings, ref 12)
+ 0x58 => { # (copied from CameraSettings, ref JR)
Name => 'ExposureLevelIncrements',
PrintConv => {
33 => '1/3 EV',
@@ -4091,14 +4091,14 @@ my %faceInfo = (
},
### 0x5a onwards: subtract 1 from CameraSettings TagID
# (0x69 not confirmed)
- #0x69 => { #12
+ #0x69 => { #JR
# Name => 'RedEyeReduction',
# PrintConv => {
# 0 => 'Off',
# 1 => 'On',
# },
#},
- 0x7e => { #12
+ 0x7e => { #JR
Name => 'DriveMode',
Mask => 0xff, # (not sure what upper byte is for)
PrintConv => { # (values confirmed for specified models - PH)
@@ -4111,7 +4111,7 @@ my %faceInfo = (
0x0b => 'Continuous Self-timer', # (A230 val=0x800b [5 shots], A330 val=0x400b [3 shots])
},
},
- 0x7f => { #12
+ 0x7f => { #JR
Name => 'FlashMode',
PrintConv => {
0 => 'Autoflash',
@@ -4144,7 +4144,7 @@ my %faceInfo = (
Camera settings for models such as the A33, A35, A55, A450, A500, A550,
A560, A580, NEX-3, NEX-5, NEX-C3 and NEX-VG10E.
},
- 0x00 => { #12
+ 0x00 => { #JR
Name => 'ShutterSpeedSetting',
Notes => 'used only in M and S exposure modes',
ValueConv => '$val ? 2 ** (6 - $val/8) : 0',
@@ -4152,7 +4152,7 @@ my %faceInfo = (
PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
},
- 0x01 => { #12
+ 0x01 => { #JR
Name => 'ApertureSetting',
Notes => 'used only in M and A exposure modes',
ValueConv => '2 ** (($val/8 - 1) / 2)',
@@ -4174,14 +4174,14 @@ my %faceInfo = (
254 => 'n/a', # get this for multi-shot noise reduction
},
},
- 0x03 => { #12
+ 0x03 => { #JR
Name => 'ExposureCompensationSet',
ValueConv => '($val - 128) / 24', #PH
ValueConvInv => 'int($val * 24 + 128.5)',
PrintConv => '$val ? sprintf("%+.1f",$val) : $val',
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
},
- 0x04 => { #12
+ 0x04 => { #JR
Name => 'DriveModeSetting',
# Same drivemode info is repeated in 0x0034, but with at least the following exceptions:
# - 0x0034 not for A550 ? - seen "0"
@@ -4205,7 +4205,7 @@ my %faceInfo = (
0xc0 => 'Remote Commander',
},
},
- 0x05 => { #12
+ 0x05 => { #JR
Name => 'ExposureProgram',
# Camera exposure program/mode as selected with the Mode dial.
# For SCN a further selection is done via the menu
@@ -4213,7 +4213,7 @@ my %faceInfo = (
SeparateTable => 'ExposureProgram2',
PrintConv => \%sonyExposureProgram2,
},
- 0x06 => { #12
+ 0x06 => { #JR
Name => 'FocusModeSetting',
PrintConv => {
17 => 'AF-S',
@@ -4223,7 +4223,7 @@ my %faceInfo = (
48 => 'DMF', # (NC) (seen for NEX-5)
},
},
- 0x07 => { #12
+ 0x07 => { #JR
Name => 'MeteringMode',
PrintConv => {
1 => 'Multi-segment',
@@ -4231,7 +4231,7 @@ my %faceInfo = (
3 => 'Spot',
},
},
- 0x09 => { #12
+ 0x09 => { #JR
Name => 'SonyImageSize',
PrintConv => { # values confirmed as noted for the A580 and A33
21 => 'Large (3:2)', # A580: 16M (4912x3264), A33: 14M (4592x3056)
@@ -4242,7 +4242,7 @@ my %faceInfo = (
27 => 'Small (16:9)', # A580: 3.4M (2448x1376)
},
},
- 0x0a => { #12
+ 0x0a => { #JR
Name => 'AspectRatio',
# normally 4 for A580 3:2 ratio images
# seen 8 when selecting 16:9 via menu, and when selecting Panorama mode
@@ -4251,7 +4251,7 @@ my %faceInfo = (
8 => '16:9',
},
},
- 0x0b => { #12
+ 0x0b => { #JR
Name => 'Quality',
PrintConv => {
2 => 'RAW',
@@ -4269,14 +4269,14 @@ my %faceInfo = (
},
},
0x0d => 'DynamicRangeOptimizerLevel',
- 0x0e => { #12
+ 0x0e => { #JR
Name => 'ColorSpace',
PrintConv => {
1 => 'sRGB',
2 => 'Adobe RGB',
},
},
- 0x0f => { #12
+ 0x0f => { #JR
Name => 'CreativeStyleSetting',
PrintConvColumns => 2,
PrintConv => {
@@ -4288,25 +4288,25 @@ my %faceInfo = (
160 => 'Sunset',
},
},
- 0x10 => { #12 (seen values 253, 254, 255, 0, 1, 2, 3)
+ 0x10 => { #JR (seen values 253, 254, 255, 0, 1, 2, 3)
Name => 'ContrastSetting',
Format => 'int8s',
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
- 0x11 => { #12
+ 0x11 => { #JR
Name => 'SaturationSetting',
Format => 'int8s',
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
- 0x12 => { #12
+ 0x12 => { #JR
Name => 'SharpnessSetting',
Format => 'int8s',
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
- 0x16 => { #12
+ 0x16 => { #JR
Name => 'WhiteBalanceSetting',
# many guessed, based on "logical system" as observed for Daylight and Shade and steps of 16 between the modes
PrintHex => 1,
@@ -4314,7 +4314,7 @@ my %faceInfo = (
PrintConv => \%whiteBalanceSetting,
SeparateTable => 1,
},
- 0x17 => { #12
+ 0x17 => { #JR
Name => 'ColorTemperatureSetting',
# matches "0xb021 ColorTemperature" when WB set to "Custom" or "Color Temperature/Color Filter"
ValueConv => '$val * 100',
@@ -4322,7 +4322,7 @@ my %faceInfo = (
PrintConv => '"$val K"',
PrintConvInv => '$val =~ s/ ?K$//i; $val',
},
- 0x18 => { #12
+ 0x18 => { #JR
Name => 'ColorCompensationFilterSet',
# seen 0, 1-9 and 245-255, corresponding to 0, M1-M9 and G9-G1 on camera display
# matches "0xb022 ColorCompensationFilter" when WB set to "Custom" or "Color Temperature/Color Filter"
@@ -4331,15 +4331,15 @@ my %faceInfo = (
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
- 0x19 => { #12
+ 0x19 => { #JR
Name => 'CustomWB_RGBLevels',
Format => 'int16uRev[3]',
# 0x19 - 0x1e are related to Custom WB measurements performed by the camera.
# The values change only each time when measuring and setting a new Custom WB.
# (0x19,0x1a) and (0x1d,0x1e) are same as MoreSettings (0x1a,0x1b) and (0x1c,0x1d)
},
- # 0x1f - always 2 (ref 12)
- 0x20 => { #12
+ # 0x1f - always 2 (ref JR)
+ 0x20 => { #JR
Name => 'FlashMode',
PrintConvColumns => 2,
PrintConv => {
@@ -4351,14 +4351,14 @@ my %faceInfo = (
20 => 'Wireless',
},
},
- 0x21 => { #12
+ 0x21 => { #JR
Name => 'FlashControl',
PrintConv => {
1 => 'ADI Flash',
2 => 'Pre-flash TTL',
},
},
- 0x23 => { #12
+ 0x23 => { #JR
Name => 'FlashExposureCompSet',
Description => 'Flash Exposure Comp. Setting',
# (as pre-selected by the user, not zero if flash didn't fire)
@@ -4373,25 +4373,25 @@ my %faceInfo = (
1 => 'Wide',
2 => 'Spot',
3 => 'Local',
- 4 => 'Flexible', #12
+ 4 => 'Flexible', #JR
# (Flexible Spot is a grid of 17x11 points for the NEX-5)
},
},
- 0x25 => { #12
+ 0x25 => { #JR
Name => 'LongExposureNoiseReduction',
PrintConv => {
1 => 'Off',
16 => 'On', # (unused or dark subject)
},
},
- 0x26 => { #12
+ 0x26 => { #JR
Name => 'HighISONoiseReduction',
PrintConv => {
16 => 'Low',
19 => 'Auto',
},
},
- 0x27 => { #12
+ 0x27 => { #JR
Name => 'SmileShutterMode',
PrintConv => {
17 => 'Slight Smile',
@@ -4399,7 +4399,7 @@ my %faceInfo = (
19 => 'Big Smile',
},
},
- 0x28 => { #12
+ 0x28 => { #JR
Name => 'RedEyeReduction',
PrintConv => {
1 => 'Off',
@@ -4419,9 +4419,9 @@ my %faceInfo = (
PrintConvColumns => 3,
PrintConv => {
33 => '1 EV',
- 34 => '1.5 EV', #12 (NC)
+ 34 => '1.5 EV', #JR (NC)
35 => '2 EV',
- 36 => '2.5 EV', #12 (NC)
+ 36 => '2.5 EV', #JR (NC)
37 => '3 EV',
38 => '3.5 EV', #PH (NC)
39 => '4 EV',
@@ -4429,7 +4429,7 @@ my %faceInfo = (
41 => '6 EV',
},
},
- 0x2f => { #12 (not sure what is difference with 0x85)
+ 0x2f => { #JR (not sure what is difference with 0x85)
Name => 'ViewingMode',
PrintConv => {
16 => 'ViewFinder',
@@ -4437,21 +4437,21 @@ my %faceInfo = (
34 => 'Quick AF Live View',
},
},
- 0x30 => { #12
+ 0x30 => { #JR
Name => 'FaceDetection',
PrintConv => {
1 => 'Off',
16 => 'On',
},
},
- 0x31 => { #12
+ 0x31 => { #JR
Name => 'SmileShutter',
PrintConv => {
1 => 'Off',
16 => 'On',
},
},
- 0x32 => { #12
+ 0x32 => { #JR
Name => 'SweepPanoramaSize',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
PrintConv => {
@@ -4459,7 +4459,7 @@ my %faceInfo = (
2 => 'Wide',
},
},
- 0x33 => { #12
+ 0x33 => { #JR
Name => 'SweepPanoramaDirection',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
PrintConv => {
@@ -4469,7 +4469,7 @@ my %faceInfo = (
4 => 'Down',
},
},
- 0x34 => { #12
+ 0x34 => { #JR
Name => 'DriveMode', # (drive mode actually used)
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
PrintHex => 1,
@@ -4503,7 +4503,7 @@ my %faceInfo = (
255 => 'None', # seen for NEX-3/5/C3
},
},
- 0x36 => { #12 (not 100% sure about this one)
+ 0x36 => { #JR (not 100% sure about this one)
Name => 'LiveViewAFSetting',
Condition => '$$self{Model} !~ /^(NEX-|DSLR-(A450|A500|A550)$)/',
PrintConv => {
@@ -4515,7 +4515,7 @@ my %faceInfo = (
# - changes into Phase-AF when switching to Quick AF LV.
},
},
- 0x38 => { #12
+ 0x38 => { #JR
Name => 'PanoramaSize3D',
Description => '3D Panorama Size',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
@@ -4526,7 +4526,7 @@ my %faceInfo = (
3 => '16:9',
},
},
- 0x83 => { #12
+ 0x83 => { #JR
Name => 'AFButtonPressed',
# only indicates pressing and holding the "AF" button (centre-controller),
# not pressing the shutter release button halfway down
@@ -4536,7 +4536,7 @@ my %faceInfo = (
16 => 'Yes',
},
},
- 0x84 => { #12 (not 100% sure about this one)
+ 0x84 => { #JR (not 100% sure about this one)
Name => 'LiveViewMetering',
Condition => '$$self{Model} !~ /^(NEX-|DSLR-(A450|A500|A550)$)/',
PrintConv => {
@@ -4545,7 +4545,7 @@ my %faceInfo = (
32 => '1200-zone Evaluative', # SLT, or DSLR with LiveView/OVF switch in LiveView position
},
},
- 0x85 => { #12 (not sure what is difference with 0x2f)
+ 0x85 => { #JR (not sure what is difference with 0x2f)
Name => 'ViewingMode2',
Condition => '$$self{Model} !~ /^(NEX-|DSLR-(A450|A500|A550)$)/',
PrintConv => {
@@ -4555,7 +4555,7 @@ my %faceInfo = (
34 => 'Quick AF Live View',
},
},
- 0x86 => { #12
+ 0x86 => { #JR
Name => 'AELock',
Condition => '$$self{Model} !~ /^(NEX-|DSLR-(A450|A500|A550)$)/',
PrintConv => {
@@ -4563,7 +4563,7 @@ my %faceInfo = (
2 => 'Off',
},
},
- 0x87 => { #12
+ 0x87 => { #JR
Name => 'FlashStatusBuilt-in',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)/',
PrintConv => {
@@ -4571,7 +4571,7 @@ my %faceInfo = (
2 => 'On',
},
},
- 0x88 => { #12
+ 0x88 => { #JR
Name => 'FlashStatusExternal',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)/',
PrintConv => {
@@ -4580,7 +4580,7 @@ my %faceInfo = (
3 => 'On',
},
},
-# 0x8a => { #12
+# 0x8a => { #JR
# Name => 'LensAF',
# Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
# PrintConv => {
@@ -4588,7 +4588,7 @@ my %faceInfo = (
# 16 => 'AF Lens',
# },
# },
- 0x8b => { #12
+ 0x8b => { #JR
Name => 'LiveViewFocusMode',
Condition => '$$self{Model} !~ /^(NEX-|DSLR-(A450|A500|A550)$)/',
PrintConv => {
@@ -4597,7 +4597,7 @@ my %faceInfo = (
16 => 'Manual',
},
},
-# 0x8e => { #12
+# 0x8e => { #JR
# Name => 'LensSAM',
# Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
# PrintConv => {
@@ -4605,7 +4605,7 @@ my %faceInfo = (
# 16 => 'SAM Lens',
# },
# },
- 0x99 => { #12
+ 0x99 => { #JR
Name => 'LensMount',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
DataMember => 'LensMount',
@@ -4616,7 +4616,7 @@ my %faceInfo = (
17 => 'E-mount',
},
},
-# 0x9b => { #12
+# 0x9b => { #JR
# Name => 'LensOSS',
# Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
# PrintConv => {
@@ -4626,7 +4626,7 @@ my %faceInfo = (
# },
# },
# 0x9c - 1; 2 for multi-shot modes
- 0x10c => { #12
+ 0x10c => { #JR
Name => 'SequenceNumber',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/', # seen 18 for A550, so better exclude ?
# normally 0; seen 1,2,3 for bracketing, 6 for Handheld Night Shot, 3 for HDR, 6 for MFNR
@@ -4640,7 +4640,7 @@ my %faceInfo = (
# - upper 8 bits (0x0117): always value 4, meaning unknown
# - next 10 bits: FolderNumber (max. 999 according to manual)
# - last 14 bits: ImageNumber (max 9999)
- 0x0114 => { #12
+ 0x0114 => { #JR
Name => 'FolderNumber',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
Format => 'int32u',
@@ -4650,7 +4650,7 @@ my %faceInfo = (
PrintConv => 'sprintf("%.3d",$val)',
PrintConvInv => '$val',
},
- 276.1 => { #12 (0x0114.1)
+ 276.1 => { #JR (0x0114.1)
Name => 'ImageNumber',
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
Format => 'int32u',
@@ -4658,7 +4658,7 @@ my %faceInfo = (
PrintConv => 'sprintf("%.4d",$val)',
PrintConvInv => '$val',
},
- 0x200 => { #12
+ 0x200 => { #JR
Name => 'ShotNumberSincePowerUp2',
Notes => q{
same as ShotNumberSincePowerUp for single-shot images, but includes all
@@ -4669,7 +4669,7 @@ my %faceInfo = (
Condition => '$$self{Model} !~ /^DSLR-(A450|A500|A550)$/',
Format => 'int32u',
},
- 0x283 => { #12
+ 0x283 => { #JR
Name => 'AFButtonPressed',
# only indicates pressing and holding the "AF" button (centre-controller),
# not pressing the shutter release button halfway down
@@ -4679,7 +4679,7 @@ my %faceInfo = (
16 => 'Yes',
},
},
- 0x284 => { #12 (not 100% sure about this one)
+ 0x284 => { #JR (not 100% sure about this one)
Name => 'LiveViewMetering',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
PrintConv => {
@@ -4688,7 +4688,7 @@ my %faceInfo = (
32 => '1200-zone Evaluative', # DSLR with LiveView/OVF switch in LiveView position
},
},
- 0x285 => { #12 (not sure what is difference with 0x2f)
+ 0x285 => { #JR (not sure what is difference with 0x2f)
Name => 'ViewingMode2',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
PrintConv => {
@@ -4698,7 +4698,7 @@ my %faceInfo = (
34 => 'Quick AF Live View',
},
},
- 0x286 => { #12
+ 0x286 => { #JR
Name => 'AELock',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
PrintConv => {
@@ -4706,7 +4706,7 @@ my %faceInfo = (
2 => 'Off',
},
},
- 0x287 => { #12
+ 0x287 => { #JR
Name => 'FlashStatusBuilt-in',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
Notes => 'A450, A500 and A550',
@@ -4715,7 +4715,7 @@ my %faceInfo = (
2 => 'On',
},
},
- 0x288 => { #12
+ 0x288 => { #JR
Name => 'FlashStatusExternal',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
Notes => 'A450, A500 and A550',
@@ -4725,7 +4725,7 @@ my %faceInfo = (
3 => 'On',
},
},
- 0x28b => { #12
+ 0x28b => { #JR
Name => 'LiveViewFocusMode',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
PrintConv => {
@@ -4734,7 +4734,7 @@ my %faceInfo = (
16 => 'Manual',
},
},
- 0x30c => { #12
+ 0x30c => { #JR
Name => 'SequenceNumber',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
Notes => 'A450, A500 and A550',
@@ -4745,7 +4745,7 @@ my %faceInfo = (
OTHER => sub { shift }, # pass all other numbers straight through
},
},
- 0x314 => { #12
+ 0x314 => { #JR
Name => 'ImageNumber',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
Format => 'int16u',
@@ -4754,7 +4754,7 @@ my %faceInfo = (
PrintConv => 'sprintf("%.4d",$val)',
PrintConvInv => '$val',
},
- 0x316 => { #12
+ 0x316 => { #JR
Name => 'FolderNumber',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
Notes => 'A450, A500 and A550',
@@ -4778,14 +4778,14 @@ my %faceInfo = (
PrintConvInv => 'my @a=split(/\./,$val);(hex($a[0])<<8)|hex($a[1])',
# seen values 1.00, 1.01, 1.02, 1.03 and 1.04 for NEX-3/5/5C/C3/VG10/VG10E with various Firmware versions.
},
- 0x3f7 => { #12
+ 0x3f7 => { #JR
Name => 'LensType2',
Condition => '($$self{Model} =~ /^NEX-/) and ($$self{LensMount} != 1)',
Format => 'int16u',
SeparateTable => 1,
PrintConv => \%sonyLensTypes2,
},
- 0x400 => { #12
+ 0x400 => { #JR
Name => 'ImageNumber',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
Format => 'int16u',
@@ -4794,7 +4794,7 @@ my %faceInfo = (
PrintConv => 'sprintf("%.4d",$val)',
PrintConvInv => '$val',
},
- 0x402 => { #12
+ 0x402 => { #JR
Name => 'FolderNumber',
Condition => '$$self{Model} =~ /^DSLR-(A450|A500|A550)$/',
Format => 'int16u',
@@ -4812,7 +4812,7 @@ my %faceInfo = (
FORMAT => 'int16u',
);
-# extra hardware information (ref 12)
+# extra hardware information (ref JR)
%Image::ExifTool::Sony::ExtraInfo = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -4899,7 +4899,7 @@ my %faceInfo = (
},
);
-# extra hardware information (ref 12)
+# extra hardware information (ref JR)
%Image::ExifTool::Sony::ExtraInfo2 = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -4918,7 +4918,7 @@ my %faceInfo = (
},
);
-# extra hardware information (ref 12)
+# extra hardware information (ref JR)
%Image::ExifTool::Sony::ExtraInfo3 = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -5090,7 +5090,7 @@ my %faceInfo = (
);
-# more AF information (ref 12)
+# more AF information (ref JR)
%Image::ExifTool::Sony::AFInfo2 = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -5164,11 +5164,11 @@ my %faceInfo = (
PrintConv => '$self->ConvertDateTime($val)',
PrintConvInv => '$self->InverseDateTime($val,0)',
},
- 0x1a => { #12
+ 0x1a => { #JR
Name => 'SonyImageHeight',
Format => 'int16u',
},
- 0x1c => { #12
+ 0x1c => { #JR
Name => 'SonyImageWidth',
Format => 'int16u',
},
@@ -5228,10 +5228,10 @@ my %sequenceFileNumber = ( #PH
Name => 'SequenceFileNumber',
Notes => 'file number in burst sequence',
Format => 'int32u',
- ValueConv => '$val + 1', #12
+ ValueConv => '$val + 1', #JR
ValueConvInv => '$val - 1',
);
-my %releaseMode2 = ( #12
+my %releaseMode2 = ( #JR
Name => 'ReleaseMode2',
SeparateTable => 'ReleaseMode2',
PrintConv => {
@@ -5245,11 +5245,11 @@ my %releaseMode2 = ( #12
8 => 'Continuous - Anti-Motion Blur, Hand-held Twilight', # (HX9V)
9 => 'Continuous - HDR',
10 => 'Continuous - Background defocus', # (HX9V)
- 13 => 'Continuous - 3D Sweep Panorama', #PH/12
- 15 => 'Continuous - High Resolution Sweep Panorama', #12 (HX50V)
+ 13 => 'Continuous - 3D Sweep Panorama', #PH/JR
+ 15 => 'Continuous - High Resolution Sweep Panorama', #JR (HX50V)
16 => 'Continuous - 3D Image', # (HX9V)
- 17 => 'Continuous - Burst 2', # (WX7 - PH) (#12 9400-SequenceLength=10 shots)
- 19 => 'Continuous - Speed/Advance Priority', #PH/12 (RX100)
+ 17 => 'Continuous - Burst 2', # (WX7 - PH) (#JR 9400-SequenceLength=10 shots)
+ 19 => 'Continuous - Speed/Advance Priority', #PH/JR (RX100)
20 => 'Continuous - Multi Frame NR',
23 => 'Single-frame - Exposure Bracketing', # (NC, seen for ILCE-7)
26 => 'Continuous Low', #PH (A77)
@@ -5260,7 +5260,7 @@ my %releaseMode2 = ( #12
},
);
-# tag definitions for Tag2010 tables (ref 12)
+# tag definitions for Tag2010 tables (ref JR)
my %sonyDateTime2010 = (
Name => 'SonyDateTime',
Format => 'undef[7]',
@@ -5282,7 +5282,7 @@ my %releaseMode2010 = (
PrintConv => {
0 => 'Normal',
1 => 'Continuous',
- 2 => 'Bracketing', # (also white balance bracketing - PH) (also Single-frame Exposure Bracketing - ref 12)
+ 2 => 'Bracketing', # (also white balance bracketing - PH) (also Single-frame Exposure Bracketing - ref JR)
# 3 => 'Remote Commander', (NC) (seen this when other ReleaseMode and ReleaseMode2 are 'Normal' - PH, A77)
# 4 => 'Continuous - Burst', (NC)
5 => 'Continuous - Speed/Advance Priority',
@@ -5394,7 +5394,7 @@ my %exposureProgram2010 = (
PrintConv => \%sonyExposureProgram3,
);
-%Image::ExifTool::Sony::Tag2010a = ( #12
+%Image::ExifTool::Sony::Tag2010a = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -5427,7 +5427,7 @@ my %exposureProgram2010 = (
#0x1a0c => { Name => 'SonyImageHeight', Format => 'int16u' },
);
-%Image::ExifTool::Sony::Tag2010b = ( #12
+%Image::ExifTool::Sony::Tag2010b = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -5490,7 +5490,7 @@ my %exposureProgram2010 = (
},
);
-%Image::ExifTool::Sony::Tag2010c = ( #12
+%Image::ExifTool::Sony::Tag2010c = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -5550,7 +5550,7 @@ my %exposureProgram2010 = (
#0x1a0c => { Name => 'SonyImageHeight', Format => 'int16u' },
);
-%Image::ExifTool::Sony::Tag2010d = ( #12
+%Image::ExifTool::Sony::Tag2010d = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -5606,7 +5606,7 @@ my %exposureProgram2010 = (
},
);
-%Image::ExifTool::Sony::Tag2010e = ( #12
+%Image::ExifTool::Sony::Tag2010e = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -5735,7 +5735,7 @@ my %exposureProgram2010 = (
2 => 'E-mount',
},
},
- 0x1893 => { #12
+ 0x1893 => { #JR
Name => 'LensType2',
Condition => '$$self{LensMount} == 2',
Format => 'int16u',
@@ -5757,7 +5757,7 @@ my %exposureProgram2010 = (
#0x1930 => { Name => 'SonyImageHeight', Format => 'int16u' },
);
-%Image::ExifTool::Sony::Tag2010f = ( #12
+%Image::ExifTool::Sony::Tag2010f = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -5828,7 +5828,7 @@ my %exposureProgram2010 = (
#0x1930 => { Name => 'SonyImageHeight', Format => 'int16u' },
);
-%Image::ExifTool::Sony::Tag2010g = ( #12
+%Image::ExifTool::Sony::Tag2010g = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -5920,7 +5920,7 @@ my %exposureProgram2010 = (
2 => 'E-mount',
},
},
- 0x18bf => { #12
+ 0x18bf => { #JR
Name => 'LensType2',
Condition => '$$self{LensMount} == 2',
Format => 'int16u',
@@ -5938,7 +5938,7 @@ my %exposureProgram2010 = (
},
);
-# possible metering information (ref 12)
+# possible metering information (ref JR)
%Image::ExifTool::Sony::MeterInfo = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
@@ -6004,7 +6004,7 @@ my %exposureProgram2010 = (
0x0714 => { Name => 'MeterInfo2Row9', %meterInfo2 },
);
-%Image::ExifTool::Sony::Tag900b = ( #12
+%Image::ExifTool::Sony::Tag900b = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -6035,7 +6035,7 @@ my %exposureProgram2010 = (
},
);
-%Image::ExifTool::Sony::Tag9050 = ( #12
+%Image::ExifTool::Sony::Tag9050 = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -6070,7 +6070,7 @@ my %exposureProgram2010 = (
# appears to be difference between used FNumber and MaxAperture, 256 being +1 APEX or stop
# however, not always valid e.g. bracketing, Shutter-prio e.a.
# difference between 0x0002 and 0x0004 mostly 0.0, 0.1 or 0.2 stops.
- 0x0031 => { #12
+ 0x0031 => { #JR
Condition => '$$self{Model} !~ /^(DSC-|Stellar)/',
Name => 'FlashStatus',
RawConv => '$$self{FlashFired} = $val',
@@ -6143,13 +6143,13 @@ my %exposureProgram2010 = (
PrintConv => '$self->ConvertDateTime($val)',
PrintConvInv => '$self->InverseDateTime($val,0)',
},
- 0x007c => { #12 valid for ILCE and most NEX
+ 0x007c => { #JR valid for ILCE and most NEX
Name => 'InternalSerialNumber', # (NC)
Condition => '$$self{Model} !~ /^(DSC-|Stellar|Lunar|NEX-(5N|7|VG20E)|SLT-|HV|ILCA-)/',
Format => 'int8u[4]',
PrintConv => 'unpack "H*", pack "C*", split " ", $val',
},
- 0x00f0 => { #12 valid for SLT/ILCA models
+ 0x00f0 => { #JR valid for SLT/ILCA models
Name => 'InternalSerialNumber', # (NC)
Condition => '$$self{Model} =~ /^(SLT-|HV|ILCA-)/',
Format => 'int8u[5]',
@@ -6282,7 +6282,7 @@ my %exposureProgram2010 = (
# 0x037b => {%gain2010,Condition=>'$$self{Model}=~/^(SLT-A(65V|77V)|Lunar|NEX-(7|VG20E))/'},
);
-%Image::ExifTool::Sony::Tag9400a = ( #12
+%Image::ExifTool::Sony::Tag9400a = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -6366,7 +6366,7 @@ my %exposureProgram2010 = (
},
);
-%Image::ExifTool::Sony::Tag9400b = ( #12
+%Image::ExifTool::Sony::Tag9400b = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -6442,7 +6442,7 @@ my %exposureProgram2010 = (
},
);
-%Image::ExifTool::Sony::Tag9400c = ( #12
+%Image::ExifTool::Sony::Tag9400c = ( #JR
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -6536,7 +6536,7 @@ my %exposureProgram2010 = (
PrintConv => '"$val C"',
PrintConvInv => '$val=~s/ ?C//; $val',
},
- 0x16 => { #12
+ 0x16 => { #JR
Name => 'FocusMode',
Mask => 0x7f, # (often +128, not sure what upper bit is for)
PrintConv => {
@@ -6556,7 +6556,7 @@ my %exposureProgram2010 = (
2 => 'Spot', # (NC) seen for DSC-WX300
3 => 'Flexible Spot',
10 => 'Selective (for Miniature effect)', # seen for DSC-HX30V,TX30,WX60,WX100
- 11 => 'Zone', #12 (NC) seen in ILCE-7R images
+ 11 => 'Zone', #JR (NC) seen in ILCE-7R images
14 => 'Tracking',
15 => 'Face Tracking',
255 => 'Manual',
@@ -6642,7 +6642,7 @@ my %exposureProgram2010 = (
# 0x18 - maybe another temperature?
);
-# Tag9404 (ref 12)
+# Tag9404 (ref JR)
%Image::ExifTool::Sony::Tag9404a = (
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
@@ -6682,7 +6682,7 @@ my %exposureProgram2010 = (
},
);
-# Tag9405 (ref 12)
+# Tag9405 (ref JR)
%Image::ExifTool::Sony::Tag9405a = (
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
@@ -6747,7 +6747,7 @@ my %exposureProgram2010 = (
},
);
-# Tag9405b (ref 12)
+# Tag9405b (ref JR)
%Image::ExifTool::Sony::Tag9405b = (
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
@@ -6908,7 +6908,7 @@ my %exposureProgram2010 = (
},
);
-# Tag9406 (ref 12)
+# Tag9406 (ref JR)
%Image::ExifTool::Sony::Tag9406 = (
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
@@ -6966,7 +6966,7 @@ my %exposureProgram2010 = (
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
NOTES => 'These tags are currently extracted for SLT models only.',
# 0x00 - 10(A65,A77,NEX-5N,7,VG20E), 11(A37,A57,A99,NEX-5R,6,F3,RX1,RX100),
- # 9(HX9V), 4,68,86,110(panoramas) - ref 12
+ # 9(HX9V), 4,68,86,110(panoramas) - ref JR
0x04 => {
Name => 'AFPointsSelected',
Format => 'int32u',
@@ -6981,7 +6981,7 @@ my %exposureProgram2010 = (
0x7fffffff => '(all)',
# 0xffffffff - 'n/a' - RX1 and NEX models always give this
# (on Wide AFAreaMode, outer focus points are dropped
- # at progressively higher digital zoom ratios, ref 12)
+ # at progressively higher digital zoom ratios, ref JR)
BITMASK => {
0 => 'Center', # (1.04 gave this for Upper-middle and Near Left)
1 => 'Top', # (1.04 didn't give this value)
@@ -7002,7 +7002,7 @@ my %exposureProgram2010 = (
16 => 'Lower Far Right',# (1.04 OK, but gave this for Far Right and Lower-right too)
17 => 'Lower Far Left', # (1.04 didn't give this value)
18 => 'Upper Far Left', # (1.04 OK)
- # higher bits may be used in panorama images - ref 12
+ # higher bits may be used in panorama images - ref JR
},
},
},
@@ -7010,7 +7010,7 @@ my %exposureProgram2010 = (
# 0xa6 - 8 bytes face detection info ?; starts with 1, otherwise all 0
);
-# Tag940c (ref 12)
+# Tag940c (ref JR)
%Image::ExifTool::Sony::Tag940c = (
PROCESS_PROC => \&ProcessEnciphered,
WRITE_PROC => \&WriteEnciphered,
@@ -7094,7 +7094,7 @@ my %exposureProgram2010 = (
DATAMEMBER => [ 0x02 ],
IS_SUBDIR => [ 0x11 ],
NOTES => 'These tags are currently extracted for SLT models only.',
- # first 4 bytes (deciphered) (ref 12):
+ # first 4 bytes (deciphered) (ref JR):
# (perhaps 0x02 indicates the 15- or 19-point AF?)
# 2 1 1 0 for A65V
# 2 1 2 0 for A77V
@@ -7115,14 +7115,14 @@ my %exposureProgram2010 = (
3 => '79-point', # (NC) seen for ILCA-77M2
},
},
- # 0x04 start 74 Blocks of 164 bytes each for NEX with LA-EA2 15-point Phase-detect AF adapter and A-mount lens (ref 12).
+ # 0x04 start 74 Blocks of 164 bytes each for NEX with LA-EA2 15-point Phase-detect AF adapter and A-mount lens (ref JR).
# For the NEX probably only the 11th byte might be the AFPoint.
0x04 => {
Name => 'AFStatusActiveSensor',
Condition => '$$self{Model} !~ /^ILCA-/',
%Image::ExifTool::Minolta::afStatusInfo,
},
- 0x05 => { #12
+ 0x05 => { #JR
Name => 'FocusMode',
Condition => '$$self{Model} =~ /^ILCA-/',
Notes => 'ILCA models only',
@@ -7219,8 +7219,8 @@ my %exposureProgram2010 = (
7 => 'AF-D', # (unique to A99)
},
},
- # 0x10 - for ILCA-77M2: 10 bytes identical to 0x2020, and probably indicating 'AFPointsUsed' (ref 12)
- 0x11 => [ #12
+ # 0x10 - for ILCA-77M2: 10 bytes identical to 0x2020, and probably indicating 'AFPointsUsed' (ref JR)
+ 0x11 => [ #JR
{
Name => 'AFStatus15',
Condition => '$$self{AFType} == 1',
@@ -7233,7 +7233,7 @@ my %exposureProgram2010 = (
SubDirectory => { TagTable => 'Image::ExifTool::Sony::AFStatus19' },
},
],
- 0x3a => { #12
+ 0x3a => { #JR
Name => 'AFAreaMode',
Condition => '$$self{Model} =~ /^ILCA-/',
PrintConv => {
@@ -7250,21 +7250,21 @@ my %exposureProgram2010 = (
Format => 'int8s',
},
# 0x007d - AFStatus79 ? - 95 int16s values which would match ILCA-77M2 79 AF points + 15 cross + 1 F2.8
- # 0x016e - for SLT: 4 bytes identical to 0x2020 first 4 bytes, and indicating 'AFPointsUsed' (ref 12)
- 0x017d => { #PH (verified for the A77/A99; likely valid for other SLT models - ref 12)
+ # 0x016e - for SLT: 4 bytes identical to 0x2020 first 4 bytes, and indicating 'AFPointsUsed' (ref JR)
+ 0x017d => { #PH (verified for the A77/A99; likely valid for other SLT models - ref JR)
# (different from AFMicroAdjValue because it is 0 when the adjustment is off)
Name => 'AFMicroAdj',
Condition => '$$self{Model} !~ /^ILCA-/',
Format => 'int8s',
},
- 0x017e => { #12
+ 0x017e => { #JR
Name => 'ExposureProgram',
Condition => '$$self{Model} !~ /^ILCA-/',
Priority => 0,
SeparateTable => 'ExposureProgram3',
PrintConv => \%sonyExposureProgram3,
},
- # 0x01b8 - 65 AF Info blocks of 180 bytes each for SLT (ref 12)
+ # 0x01b8 - 65 AF Info blocks of 180 bytes each for SLT (ref JR)
# In each block, the 9th, 10th and 11th byte appear to relate to AFPoint as at offsets 0x07, 0x08, 0x09 above..
# Possibly, these blocks relate to sequential focusing attempts and/or object tracking,
# the first byte being an Index or Counter.
@@ -7279,7 +7279,7 @@ my %exposureProgram2010 = (
# 0x14fa, 0x1570, 0x1572, 0x15ae, 0x1f48
);
-# AF Point Status (ref 12)
+# AF Point Status (ref JR)
%Image::ExifTool::Sony::AFStatus15 = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -7304,7 +7304,7 @@ my %exposureProgram2010 = (
0x22 => { Name => 'AFStatusLower-middle', %Image::ExifTool::Minolta::afStatusInfo },
);
-# AF Point Status (ref 12)
+# AF Point Status (ref JR)
%Image::ExifTool::Sony::AFStatus19 = (
%binaryDataAttrs,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -7449,7 +7449,7 @@ my %exposureProgram2010 = (
cameras. The width/height values of these tags are not affected by camera
rotation -- the width is always the longer dimension.
},
- # 0: 257 for panorama images, 0 for all other images (ref 12)
+ # 0: 257 for panorama images, 0 for all other images (ref JR)
1 => 'PanoramaFullWidth', # (including black/grey borders)
2 => 'PanoramaFullHeight',
3 => {
@@ -7707,7 +7707,7 @@ my %exposureProgram2010 = (
Name => 'Barcode',
ValueConv => 'length($val) > 12 ? substr($val,0,12) : $val',
},
- # 'EvA:' - exposure compensation * 10 (ref 12)
+ # 'EvA:' - exposure compensation * 10 (ref JR)
# for documentation only -- this IFD is handled manually
IFD => {
Name => 'PIC_IFD',
@@ -8018,13 +8018,13 @@ my @lensFeatures = (
# Mask { Bits Name Bits Name } Prefix flag
# ------ ------ ----- ------ ----- -----------
[ 0x4000, { 0x4000 => 'PZ' }, 1 ],
- [ 0x0300, { 0x0100 => 'DT', 0x0200 => 'FE', 0x0300 => 'E' }, 1 ], # (will come before preceding prefix), FE added (ref 12)
+ [ 0x0300, { 0x0100 => 'DT', 0x0200 => 'FE', 0x0300 => 'E' }, 1 ], # (will come before preceding prefix), FE added (ref JR)
[ 0x00e0, { 0x0020 => 'STF', 0x0040 => 'Reflex', 0x0060 => 'Macro', 0x0080 => 'Fisheye' } ],
[ 0x000c, { 0x0004 => 'ZA', 0x0008 => 'G' } ],
[ 0x0003, { 0x0001 => 'SSM', 0x0002 => 'SAM' } ],
[ 0x8000, { 0x8000 => 'OSS' } ],
- [ 0x2000, { 0x2000 => 'LE' } ], #12
- [ 0x0800, { 0x0800 => 'II' } ], #12
+ [ 0x2000, { 0x2000 => 'LE' } ], #JR
+ [ 0x0800, { 0x0800 => 'II' } ], #JR
);
sub PrintLensSpec($)
{
diff --git a/lib/Image/ExifTool/TagLookup.pm b/lib/Image/ExifTool/TagLookup.pm
index 7ab75087..d5fa23ba 100644
--- a/lib/Image/ExifTool/TagLookup.pm
+++ b/lib/Image/ExifTool/TagLookup.pm
@@ -4794,7 +4794,11 @@ my %tagExists = (
'_stream' => 1,
'a100dataoffset' => 1,
'aas' => 1,
+ 'ab_uid' => 1,
+ 'abdate' => 1,
+ 'ablabel' => 1,
'abovecolor' => 1,
+ 'abrelatednames' => 1,
'abstract' => 1,
'accelerometertime' => 1,
'accessdate' => 1,
@@ -4856,6 +4860,7 @@ my %tagExists = (
'afstatus15' => 1,
'afstatus19' => 1,
'aftune' => 1,
+ 'aim' => 1,
'aimetadata' => 1,
'aipdfprivatedata' => 1,
'aiprivatedata' => 1,
@@ -6122,6 +6127,7 @@ my %tagExists = (
'filesizebytes' => 1,
'filesubtype' => 1,
'filetype' => 1,
+ 'filetypeextension' => 1,
'fileurl' => 1,
'fileversionnumber' => 1,
'fillattributes' => 1,
@@ -6410,6 +6416,7 @@ my %tagExists = (
'iconfilename' => 1,
'iconindex' => 1,
'iconuri' => 1,
+ 'icq' => 1,
'ics' => 1,
'id' => 1,
'id3' => 1,
@@ -6492,6 +6499,7 @@ my %tagExists = (
'imgprofversion' => 1,
'immediatedatabytes' => 1,
'importance' => 1,
+ 'impp' => 1,
'imprint' => 1,
'includedfileid' => 1,
'incomplete' => 1,
@@ -6761,6 +6769,7 @@ my %tagExists = (
'locationrole' => 1,
'lockedpropertylist' => 1,
'locks' => 1,
+ 'logo' => 1,
'logoiconurl' => 1,
'logourl' => 1,
'longdescription' => 1,
@@ -7293,6 +7302,7 @@ my %tagExists = (
'pfmheader' => 1,
'pfmversion' => 1,
'pgfversion' => 1,
+ 'photo' => 1,
'photoeffectsdata' => 1,
'photofinishername' => 1,
'photomech' => 1,
@@ -7935,6 +7945,7 @@ my %tagExists = (
'sminsamplevalue' => 1,
'snapshotid' => 1,
'snapshotname' => 1,
+ 'socialprofile' => 1,
'soctemperature' => 1,
'softedit' => 1,
'softfocusfilter' => 1,
@@ -7949,6 +7960,7 @@ my %tagExists = (
'sortcomposer' => 1,
'sortname' => 1,
'sortshow' => 1,
+ 'sound' => 1,
'soundfile' => 1,
'soundschemetitle' => 1,
'sourcecreatedate' => 1,
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index 69dd3833..9268ec3f 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/lib/Image/ExifTool/TagNames.pod
@@ -3364,6 +3364,17 @@ XMP Dynamic Media namespace tags.
Unit string
W real
+=head3 XMP Area Struct
+
+ Field Name Writable
+ ---------- --------
+ D real
+ H real
+ Unit string
+ W real
+ X real
+ Y real
+
=head3 XMP xmpMM Tags
XMP Media Management namespace tags.
@@ -27605,26 +27616,45 @@ default language of "en".
=head2 VCard Tags
-This table lists only those VCard tags which are renamed by ExifTool, but
-any existing VCard tag will be extracted. Tag names may have "Pref" added
-to indicate the preferred instance of a VCard property. Other "TYPE"
-parameters are also added to the tag name. See
-L<https://tools.ietf.org/html/rfc6350> for the VCard 4.0 specification.
+This table lists only a few common vCard tags, but ExifTool will also
+extract any other vCard tags found. Tag names may have "Pref" added to
+indicate the preferred instance of a vCard property, and other "TYPE"
+parameters may also added to the tag name. See
+L<https://tools.ietf.org/html/rfc6350> for the vCard 4.0 specification.
- Tag ID Tag Name Writable
- ------ -------- --------
- 'Adr' Address N
- 'Bday' Birthday N
- 'Fn' FormattedName N
- 'Geo' Geolocation N
- 'N' Name N
- 'Org' Organization N
- 'Prodid' Software N
- 'Rev' Revision N
- 'Tel' Telephone N
- 'Tz' TimeZone N
- 'Uid' UID N
- 'Version' VCardVersion N
+ Tag ID Tag Name Writable
+ ------ -------- --------
+ 'Adr' Address N
+ 'Anniversary' Anniversary N
+ 'Bday' Birthday N
+ 'Email' Email N
+ 'Fn' FormattedName N
+ 'Gender' Gender N
+ 'Geo' Geolocation N
+ 'Impp' IMPP N
+ 'Lang' Language N
+ 'Logo' Logo N
+ 'N' Name N
+ 'Nickname' Nickname N
+ 'Note' Note N
+ 'Org' Organization N
+ 'Photo' Photo N
+ 'Prodid' Software N
+ 'Rev' Revision N
+ 'Sound' Sound N
+ 'Tel' Telephone N
+ 'Title' JobTitle N
+ 'Tz' TimeZone N
+ 'Uid' UID N
+ 'Url' URL N
+ 'Version' VCardVersion N
+ 'X-ABLabel' ABLabel N
+ 'X-abdate' ABDate N
+ 'X-abrelatednames' ABRelatedNames N
+ 'X-abuid' AB_UID N
+ 'X-aim' AIM N
+ 'X-icq' ICQ N
+ 'X-socialprofile' SocialProfile N
=head2 RSRC Tags
@@ -27877,6 +27907,7 @@ tag is used for dry run testing of writes to FileName.
FileSequence ExifTool N
FileSize System N
FileType File N
+ FileTypeExtension File N
Geosync - Y
Geotag - Y
Geotime - Y
@@ -27951,7 +27982,7 @@ values, may created via the ExifTool configuration file.
FocusDistance
SubjectDistance
ObjectDistance
- AverageFocusDistance
+ ApproximateFocusDistance
FocusDistanceLower
FocusDistanceUpper
DateCreated Kodak:YearCreated N
@@ -28448,7 +28479,8 @@ EXIF/IPTC/XMP records that exist.
Contrary to the EXIF specification, the MWG recommends that EXIF "ASCII"
string values be stored as UTF-8. To honour this, the exiftool application
sets the default internal EXIF string encoding to "UTF8" when the MWG module
-is loaded (but this setting does not change automatically via the API).
+is loaded, but via the API this must be done manually by setting the
+CharsetEXIF option.
A complication of the MWG specification is that although the MWG:Creator
property may consist of multiple values, the associated EXIF tag
@@ -28571,17 +28603,6 @@ L<http://www.metadataworkinggroup.org/> for the official specification.
Type string
SeeAlso string
-=head3 XMP Area Struct
-
- Field Name Writable
- ---------- --------
- D real
- H real
- Unit string
- W real
- X real
- Y real
-
=head3 MWG Extensions Struct
This structure may contain any top-level XMP tags, but none have been
diff --git a/lib/Image/ExifTool/VCard.pm b/lib/Image/ExifTool/VCard.pm
index 0e3fd524..74753fd6 100644
--- a/lib/Image/ExifTool/VCard.pm
+++ b/lib/Image/ExifTool/VCard.pm
@@ -15,47 +15,67 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.00';
+$VERSION = '1.01';
my %unescapeVCard = ( '\\'=>'\\', ','=>',', 'n'=>"\n", 'N'=>"\n" );
-# VCard tags (ref 1)
+# vCard tags (ref 1/2/PH)
%Image::ExifTool::VCard::Main = (
GROUPS => { 2 => 'Document' },
NOTES => q{
- This table lists only those VCard tags which are renamed by ExifTool, but
- any existing VCard tag will be extracted. Tag names may have "Pref" added
- to indicate the preferred instance of a VCard property. Other "TYPE"
- parameters are also added to the tag name. See
- L<https://tools.ietf.org/html/rfc6350> for the VCard 4.0 specification.
+ This table lists only a few common vCard tags, but ExifTool will also
+ extract any other vCard tags found. Tag names may have "Pref" added to
+ indicate the preferred instance of a vCard property, and other "TYPE"
+ parameters may also added to the tag name. See
+ L<https://tools.ietf.org/html/rfc6350> for the vCard 4.0 specification.
},
- Version => 'VCardVersion',
- VCardVersion => { Description => 'VCard Version', Hidden => 1 }, # (for the Description)
- Prodid => 'Software',
- Fn => { Name => 'FormattedName', Groups => { 2 => 'Author' } },
- N => { Name => 'Name', Groups => { 2 => 'Author' } },
- Bday => { Name => 'Birthday', Groups => { 2 => 'Time' } },
- Tz => { Name => 'TimeZone', Groups => { 2 => 'Time' } },
- Adr => { Name => 'Address', Groups => { 2 => 'Location' } },
- Geo => { Name => 'Geolocation', Groups => { 2 => 'Location' } },
- Rev => 'Revision',
- Org => 'Organization',
- Tel => 'Telephone',
- Uid => 'UID',
+ Version => { Name => 'VCardVersion', Description => 'VCard Version' },
+ Fn => { Name => 'FormattedName', Groups => { 2 => 'Author' } },
+ N => { Name => 'Name', Groups => { 2 => 'Author' } },
+ Bday => { Name => 'Birthday', Groups => { 2 => 'Time' } },
+ Tz => { Name => 'TimeZone', Groups => { 2 => 'Time' } },
+ Adr => { Name => 'Address', Groups => { 2 => 'Location' } },
+ Geo => { Name => 'Geolocation', Groups => { 2 => 'Location' } },
+ Anniversary => { },
+ Email => { },
+ Gender => { },
+ Impp => 'IMPP',
+ Lang => 'Language',
+ Logo => { },
+ Nickname => { },
+ Note => { },
+ Org => 'Organization',
+ Photo => { },
+ Prodid => 'Software',
+ Rev => 'Revision',
+ Sound => { },
+ Tel => 'Telephone',
+ Title => 'JobTitle',
+ Uid => 'UID',
+ Url => 'URL',
+ 'X-ABLabel' => { Name => 'ABLabel', PrintConv => '$val =~ s/^_\$!<(.*)>!\$_$/$1/; $val' },
+ 'X-abdate' => { Name => 'ABDate', Groups => { 2 => 'Time' } },
+ 'X-aim' => 'AIM',
+ 'X-icq' => 'ICQ',
+ 'X-abuid' => 'AB_UID',
+ 'X-abrelatednames' => 'ABRelatedNames',
+ 'X-socialprofile' => 'SocialProfile',
);
#------------------------------------------------------------------------------
-# Get VCard tag, creating if necessary
-# Inputs: 0) tag table ref, 1) tag ID, 2) source tagInfo ref, 3) language code
+# Get vCard tag, creating if necessary
+# Inputs: 0) ExifTool ref, 1) tag table ref, 2) tag ID, 3) tag Name,
+# 4) source tagInfo ref, 5) lang code
# Returns: tagInfo ref
-sub GetVCardTag($$;$$)
+sub GetVCardTag($$$$;$$)
{
- my ($tagTablePtr, $tag, $srcInfo, $langCode) = @_;
+ my ($et, $tagTablePtr, $tag, $name, $srcInfo, $langCode) = @_;
my $tagInfo = $$tagTablePtr{$tag};
unless ($tagInfo) {
$tagInfo = $srcInfo ? { %$srcInfo } : { };
- $$tagInfo{Name} = $tag;
+ $$tagInfo{Name} = $name;
delete $$tagInfo{Description}; # create new description
+ $et->VPrint(0, $$et{INDENT}, "[adding $tag]\n");
AddTagToTable($tagTablePtr, $tag, $tagInfo);
}
# handle alternate languages (the "language" parameter)
@@ -64,8 +84,8 @@ sub GetVCardTag($$;$$)
}
#------------------------------------------------------------------------------
-# Decode VCard text
-# Inputs: 0) ExifTool ref, 1) VCard text, 2) encoding
+# Decode vCard text
+# Inputs: 0) ExifTool ref, 1) vCard text, 2) encoding
# Returns: decoded text (or array ref for a list of values)
sub DecodeVCardText($$;$)
{
@@ -93,9 +113,9 @@ sub DecodeVCardText($$;$)
}
#------------------------------------------------------------------------------
-# Read information in a VCard file
+# Read information in a vCard file
# Inputs: 0) ExifTool ref, 1) dirInfo ref
-# Returns: 1 on success, 0 if this wasn't a valid VCard file
+# Returns: 1 on success, 0 if this wasn't a valid vCard file
sub ProcessVCard($$)
{
local $_;
@@ -137,12 +157,12 @@ sub ProcessVCard($$)
} else {
delete $$et{SET_GROUP1};
}
- # avoid ugly all-caps tag names
+ # avoid ugly all-caps tag ID's (they are case-insensitive)
$tag = ucfirst($tag =~ /[a-z]/ ? $tag : lc $tag);
- my (%param, $p, @val);
+ my (%param, $p, @val, $name);
while ($val =~ s/^;([-A-Za-z0-9]*)(=?)//) {
$p = lc $1;
- # convert old VCard 2.x parameters to the new "TYPE=" format
+ # convert old vCard 2.x parameters to the new "TYPE=" format
$2 or $val = $1 . $val, $p = 'type';
for (;;) {
last unless $val =~ s/^"([^"]*)",?// or $val =~ s/^([^";:,]+,?)//;
@@ -158,28 +178,37 @@ sub ProcessVCard($$)
$val =~ s/^:// or $et->WarnOnce('Invalid line in VCard file'), next;
# get source tagInfo reference
my $srcInfo = $et->GetTagInfo($tagTablePtr, $tag);
- $tag = $$srcInfo{Name} if $srcInfo; # translate name if necessary
- $tag .= $param{type} if $param{type}; # add 'type' parameter to name
+ if ($srcInfo) {
+ $name = $$srcInfo{Name}; # use our name
+ } else {
+ # use tag ID as name (with leading "X-" removed)
+ ($name = $tag) =~ s/^X-//i and $name = ucfirst $name;
+ }
+ # add 'type' parameter to id and name if it exists
+ $param{type} and $tag .= $param{type}, $name .= $param{type};
# convert base64-encoded data
if ($val =~ s{^data:(\w+)/(\w+);base64,}{}) {
- $tag .= ucfirst(lc $1) . ucfirst(lc $2);
+ my $xtra = ucfirst(lc $1) . ucfirst(lc $2);
+ $tag .= $xtra;
+ $name .= $xtra;
$param{encoding} = 'base64';
}
$val = DecodeVCardText($et, $val, $param{encoding});
- my $tagInfo = GetVCardTag($tagTablePtr, $tag, $srcInfo, $param{language});
+ my $tagInfo = GetVCardTag($et, $tagTablePtr, $tag, $name, $srcInfo, $param{language});
$et->HandleTag($tagTablePtr, $tag, $val, TagInfo => $tagInfo);
+ # handle 'geo' and 'label' parameters
foreach $p (qw(geo label)) {
next unless defined $param{$p};
- my $t = $tag . ucfirst($p);
# set group 2 to "Location" for "geo" parameters
my $srcTag2;
if ($p eq 'geo') {
$srcTag2 = { Groups => { 2 => 'Location' } };
- $param{$p} =~ s/^geo://; # remove "geo:" prefix of VCard 4.0
+ $param{$p} =~ s/^geo://; # remove "geo:" prefix of vCard 4.0
}
$val = DecodeVCardText($et, $param{$p});
- $tagInfo = GetVCardTag($tagTablePtr, $t, $srcTag2, $param{language});
- $et->HandleTag($tagTablePtr, $t, $val, TagInfo => $tagInfo);
+ my ($tg, $nm) = ($tag . ucfirst($p), $name . ucfirst($p));
+ $tagInfo = GetVCardTag($et, $tagTablePtr, $tg, $nm, $srcTag2, $param{language});
+ $et->HandleTag($tagTablePtr, $tg, $val, TagInfo => $tagInfo);
}
}
delete $$et{SET_GROUP1};
@@ -203,7 +232,7 @@ This module is used by Image::ExifTool
=head1 DESCRIPTION
This module contains definitions required by Image::ExifTool to read meta
-information from VCard files.
+information from vCard files.
=head1 AUTHOR
diff --git a/lib/Image/ExifTool/WriteXMP.pl b/lib/Image/ExifTool/WriteXMP.pl
index 3bed917c..29f0a8fb 100644
--- a/lib/Image/ExifTool/WriteXMP.pl
+++ b/lib/Image/ExifTool/WriteXMP.pl
@@ -235,13 +235,25 @@ sub SetPropertyPath($$;$$$$)
my ($tagTablePtr, $tagID, $parentID, $structPtr, $propList, $isType) = @_;
my $table = $structPtr || $tagTablePtr;
my $tagInfo = $$table{$tagID};
+ my $flatInfo;
- return if ref($tagInfo) ne 'HASH' or $$tagInfo{PropertyPath};
+ return if ref($tagInfo) ne 'HASH'; # (shouldn't happen)
- # don't override existing main table entry if already set by a Struct
if ($structPtr) {
+ my $flatID = $parentID . ucfirst($tagID);
+ $flatInfo = $$tagTablePtr{$flatID};
+ if ($flatInfo) {
+ return if $$flatInfo{PropertyPath};
+ } else {
+ # flattened tag doesn't exist, so create it now
+ # (could happen if we were just writing a structure)
+ $flatInfo = { Name => ucfirst($flatID), Flat => 1 };
+ AddTagToTable($tagTablePtr, $flatID, $flatInfo);
+ }
$isType = 1 if $$structPtr{TYPE};
} else {
+ # don't override existing main table entry if already set by a Struct
+ return if $$tagInfo{PropertyPath};
# use property path from original tagInfo if this is an alternate-language tag
my $srcInfo = $$tagInfo{SrcTagInfo};
$$tagInfo{PropertyPath} = GetPropertyPath($srcInfo) if $srcInfo;
@@ -294,14 +306,7 @@ sub SetPropertyPath($$;$$$$)
# if this was a structure field and not a normal tag,
# we set PropertyPath in the corresponding flattened tag
if ($structPtr) {
- my $flatID = $parentID . ucfirst($tagID);
- $tagInfo = $$tagTablePtr{$flatID};
- # create flattened tag now if necessary
- # (could happen if we were just writing a structure)
- unless ($tagInfo) {
- $tagInfo = { Name => ucfirst($flatID), Flat => 1 };
- AddTagToTable($tagTablePtr, $flatID, $tagInfo);
- }
+ $tagInfo = $flatInfo;
# set StructType flag if any containing structure has a TYPE
$$tagInfo{StructType} = 1 if $isType;
}
diff --git a/lib/Image/ExifTool/Writer.pl b/lib/Image/ExifTool/Writer.pl
index c7e0ea5f..d6235ad4 100644
--- a/lib/Image/ExifTool/Writer.pl
+++ b/lib/Image/ExifTool/Writer.pl
@@ -5767,7 +5767,9 @@ sub Rename($$$)
}
for (;;) {
if ($winUni) {
- $result = Win32API::File::MoveFileExW($old, $new, Win32API::File::MOVEFILE_REPLACE_EXISTING());
+ $result = Win32API::File::MoveFileExW($old, $new,
+ Win32API::File::MOVEFILE_REPLACE_EXISTING() |
+ Win32API::File::MOVEFILE_COPY_ALLOWED());
} else {
$result = rename($old, $new);
}
diff --git a/lib/Image/ExifTool/XMP.pm b/lib/Image/ExifTool/XMP.pm
index 14efb1f6..7d89ec8e 100644
--- a/lib/Image/ExifTool/XMP.pm
+++ b/lib/Image/ExifTool/XMP.pm
@@ -2842,7 +2842,7 @@ sub ScanForXMP($$)
}
unless ($$et{VALUE}{FileType}) {
$$et{FILE_TYPE} = $$et{FILE_EXT};
- $et->SetFileType('<unknown file containing XMP>');
+ $et->SetFileType('<unknown file containing XMP>', undef, '');
}
my %dirInfo = (
DataPt => \$xmp,
@@ -3713,6 +3713,8 @@ sub ProcessXMP($$;$)
$type = 'SVG';
} elsif ($isXML and not $hasXMP and not $isRDF) {
$type = 'XML';
+ my $ext = $$et{FILE_EXT};
+ $type = $ext if $ext and $ext eq 'COS'; # recognize COS by extension
}
}
$et->SetFileType($type);
diff --git a/lib/Image/ExifTool/XMP2.pl b/lib/Image/ExifTool/XMP2.pl
index 1f9f13eb..71906e96 100644
--- a/lib/Image/ExifTool/XMP2.pl
+++ b/lib/Image/ExifTool/XMP2.pl
@@ -1498,8 +1498,14 @@ my %sSubVersion = (
version => 'SVGVersion',
id => 'ID',
metadataId => 'MetadataID',
- width => 'ImageWidth',
- height => 'ImageHeight',
+ width => {
+ Name => 'ImageWidth',
+ ValueConv => '$val =~ s/px$//; $val',
+ },
+ height => {
+ Name => 'ImageHeight',
+ ValueConv => '$val =~ s/px$//; $val',
+ },
);
# table to add tags in other namespaces