summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Image/ExifTool.pm2
-rw-r--r--lib/Image/ExifTool/Canon.pm12
-rw-r--r--lib/Image/ExifTool/Exif.pm4
-rw-r--r--lib/Image/ExifTool/MacOS.pm18
-rw-r--r--lib/Image/ExifTool/MakerNotes.pm13
-rw-r--r--lib/Image/ExifTool/Nikon.pm1
-rw-r--r--lib/Image/ExifTool/Olympus.pm3
-rw-r--r--lib/Image/ExifTool/QuickTime.pm2
-rw-r--r--lib/Image/ExifTool/QuickTimeStream.pl4
-rw-r--r--lib/Image/ExifTool/Shortcuts.pm3
-rw-r--r--lib/Image/ExifTool/Sony.pm10
-rw-r--r--lib/Image/ExifTool/TagLookup.pm1
-rw-r--r--lib/Image/ExifTool/TagNames.pod3
-rw-r--r--lib/Image/ExifTool/WriteQuickTime.pl4
14 files changed, 54 insertions, 26 deletions
diff --git a/lib/Image/ExifTool.pm b/lib/Image/ExifTool.pm
index 7789b125..7be47cea 100644
--- a/lib/Image/ExifTool.pm
+++ b/lib/Image/ExifTool.pm
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
%static_vars);
-$VERSION = '12.40';
+$VERSION = '12.41';
$RELEASE = '';
@ISA = qw(Exporter);
%EXPORT_TAGS = (
diff --git a/lib/Image/ExifTool/Canon.pm b/lib/Image/ExifTool/Canon.pm
index e66ed8c4..e042c12b 100644
--- a/lib/Image/ExifTool/Canon.pm
+++ b/lib/Image/ExifTool/Canon.pm
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
sub ProcessExifInfo($$$);
sub SwapWords($);
-$VERSION = '4.56';
+$VERSION = '4.57';
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -208,6 +208,7 @@ $VERSION = '4.56';
53 => 'Canon EF-S 18-55mm f/3.5-5.6 III', #Jon Charnas
54 => 'Canon EF-S 55-250mm f/4-5.6 IS II', #47
60 => 'Irix 11mm f/4', #50
+ 63 => 'Irix 30mm F1.4 Dragonfly', #IB
80 => 'Canon TS-E 50mm f/2.8L Macro', #42
81 => 'Canon TS-E 90mm f/2.8L Macro', #42
82 => 'Canon TS-E 135mm f/4L Macro', #42
@@ -599,6 +600,9 @@ $VERSION = '4.56';
'61182.25' => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC)
'61182.26' => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC)
'61182.27' => 'Canon RF 16mm F2.8 STM', #42
+ '61182.28' => 'Canon RF 400mm F2.8L IS USM', #IB
+ '61182.29' => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
+ '61182.30' => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
#'61182.xx' => 'Canon RF 100mm F2.8L MACRO IS USM',
65535 => 'n/a',
);
@@ -1018,7 +1022,7 @@ my %canonWhiteBalance = (
20 => 'PC Set4', #PH
21 => 'PC Set5', #PH
# 22 - Custom 2?
- 23 => 'Auto (ambience priority)', #PH (5DS)
+ 23 => 'Auto (ambience priority)', #PH (5DS) (perhaps this needs re-thinking?: forum13295)
# 30 - Click White Balance?
# 31 - Shot Settings?
# 137 - Tungsten?
@@ -2133,6 +2137,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
4 => 'Continuous, Low', #PH
5 => 'Continuous, High', #PH
6 => 'Silent Single', #PH
+ 8 => 'Continuous, High+', #WolfgangGulcker
# ref A: https://exiftool.org/forum/index.php/topic,5701.msg27843.html#msg27843
9 => 'Single, Silent', #A
10 => 'Continuous, Silent', #A
@@ -6796,6 +6801,9 @@ my %ciMaxFocal = (
284 => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC)
285 => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC)
288 => 'Canon RF 16mm F2.8 STM', #42
+ 289 => 'Canon RF 400mm F2.8L IS USM', #IB
+ 290 => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
+ 291 => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
#xxx => 'Canon RF 100mm F2.8L MACRO IS USM',
# Note: add new RF lenses to %canonLensTypes with ID 61182
},
diff --git a/lib/Image/ExifTool/Exif.pm b/lib/Image/ExifTool/Exif.pm
index b6dab1cd..ed9c626a 100644
--- a/lib/Image/ExifTool/Exif.pm
+++ b/lib/Image/ExifTool/Exif.pm
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::MakerNotes;
-$VERSION = '4.39';
+$VERSION = '4.40';
sub ProcessExif($$$);
sub WriteExif($$$);
@@ -6605,7 +6605,7 @@ sub ProcessExif($$$)
#### eval Validate ($val, $dirData, $subdirStart, $size)
my $ok = 0;
if (defined $$subdir{Validate} and not eval $$subdir{Validate}) {
- $et->Warn("Invalid $tagStr data");
+ $et->Warn("Invalid $tagStr data", $inMakerNotes);
$invalid = 1;
} else {
if (not $subdirInfo{DirName} and $inMakerNotes) {
diff --git a/lib/Image/ExifTool/MacOS.pm b/lib/Image/ExifTool/MacOS.pm
index d221d0a6..7803f334 100644
--- a/lib/Image/ExifTool/MacOS.pm
+++ b/lib/Image/ExifTool/MacOS.pm
@@ -12,7 +12,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.11';
+$VERSION = '1.12';
sub MDItemLocalTime($);
sub ProcessATTR($$$);
@@ -381,7 +381,7 @@ sub SetMacOSTags($$$)
$val = Image::ExifTool::ConvertUnixTime($time, 1) if $time;
}
$val =~ s{(\d{4}):(\d{2}):(\d{2})}{$2/$3/$1}; # reformat for setfile
- $cmd = "setfile -d '${val}' '${f}'";
+ $cmd = "/usr/bin/setfile -d '${val}' '${f}'";
} elsif ($tag eq 'MDItemUserTags') {
# (tested with "tag" version 0.9.0)
($f = $file) =~ s/'/'\\''/g;
@@ -391,7 +391,7 @@ sub SetMacOSTags($$$)
my @dels = @{$$nvHash{DelValue}};
s/'/'\\''/g foreach @dels;
my $del = join ',', @dels;
- $err = system "tag -r '${del}' '${f}'>/dev/null 2>&1";
+ $err = system "/usr/local/bin/tag -r '${del}' '${f}'>/dev/null 2>&1";
unless ($err) {
$et->VerboseValue("- $tag", $del);
$result = 1;
@@ -403,13 +403,13 @@ sub SetMacOSTags($$$)
s/'/'\\''/g foreach @vals;
my $opt = $overwrite > 0 ? '-s' : '-a';
$val = @vals ? join(',', @vals) : '';
- $cmd = "tag $opt '${val}' '${f}'";
+ $cmd = "/usr/local/bin/tag $opt '${val}' '${f}'";
$et->VPrint(1," - $tag = (all)\n") if $overwrite > 0;
undef $val if $val eq '';
}
} elsif ($tag eq 'XAttrQuarantine') {
($f = $file) =~ s/'/'\\''/g;
- $cmd = "xattr -d com.apple.quarantine '${f}'";
+ $cmd = "/usr/bin/xattr -d com.apple.quarantine '${f}'";
$silentErr = 256; # (will get this error if attribute doesn't exist)
} else {
($f = $file) =~ s/(["\\])/\\$1/g; # escape necessary characters for script
@@ -426,7 +426,7 @@ sub SetMacOSTags($$$)
$v = $val ? 8 - $val : 0; # convert from label to label index (0 for no label)
$attr = 'label index';
}
- $cmd = qq(osascript -e 'set fp to POSIX file "$f" as alias' -e \\
+ $cmd = qq(/usr/bin/osascript -e 'set fp to POSIX file "$f" as alias' -e \\
'tell application "Finder" to set $attr of file fp to "$v"');
}
if (defined $cmd) {
@@ -455,7 +455,7 @@ sub ExtractMDItemTags($$)
($fn = $file) =~ s/([`"\$\\])/\\$1/g; # escape necessary characters
$et->VPrint(0, '(running mdls)');
- my @mdls = `mdls "$fn" 2> /dev/null`; # get MacOS metadata
+ my @mdls = `/usr/bin/mdls "$fn" 2> /dev/null`; # get MacOS metadata
if ($? or not @mdls) {
$et->Warn('Error running "mdls" to extract MDItem tags');
return;
@@ -565,7 +565,7 @@ sub ExtractXAttrTags($$)
($fn = $file) =~ s/([`"\$\\])/\\$1/g; # escape necessary characters
$et->VPrint(0, '(running xattr)');
- my @xattr = `xattr -lx "$fn" 2> /dev/null`; # get MacOS extended attributes
+ my @xattr = `/usr/bin/xattr -lx "$fn" 2> /dev/null`; # get MacOS extended attributes
if ($? or not @xattr) {
$? and $et->Warn('Error running "xattr" to extract XAttr tags');
return;
@@ -611,7 +611,7 @@ sub GetFileCreateDate($$)
($fn = $file) =~ s/([`"\$\\])/\\$1/g; # escape necessary characters
$et->VPrint(0, '(running stat)');
- my $time = `stat -f '%SB' -t '%Y:%m:%d %H:%M:%S%z' "$fn" 2> /dev/null`;
+ my $time = `/usr/bin/stat -f '%SB' -t '%Y:%m:%d %H:%M:%S%z' "$fn" 2> /dev/null`;
if ($? or not $time or $time !~ s/([-+]\d{2})(\d{2})\s*$/$1:$2/) {
$et->Warn('Error running "stat" to extract FileCreateDate');
return;
diff --git a/lib/Image/ExifTool/MakerNotes.pm b/lib/Image/ExifTool/MakerNotes.pm
index ce8166dd..b5757801 100644
--- a/lib/Image/ExifTool/MakerNotes.pm
+++ b/lib/Image/ExifTool/MakerNotes.pm
@@ -21,7 +21,7 @@ sub ProcessKodakPatch($$$);
sub WriteUnknownOrPreview($$$);
sub FixLeicaBase($$;$);
-$VERSION = '2.10';
+$VERSION = '2.11';
my $debug; # set to 1 to enable debugging code
@@ -571,6 +571,17 @@ my $debug; # set to 1 to enable debugging code
},
},
{
+ Name => 'MakerNoteOlympus3',
+ # new Olympus maker notes start with "OLYMPUS\0"
+ Condition => '$$valPt =~ /^OM SYSTEM\0/',
+ SubDirectory => {
+ TagTable => 'Image::ExifTool::Olympus::Main',
+ Start => '$valuePtr + 16',
+ Base => '$start - 16',
+ ByteOrder => 'Unknown',
+ },
+ },
+ {
Name => 'MakerNoteLeica',
# (starts with "LEICA\0\0\0")
Condition => '$$self{Make} eq "LEICA"',
diff --git a/lib/Image/ExifTool/Nikon.pm b/lib/Image/ExifTool/Nikon.pm
index fd9d7d2f..863c3993 100644
--- a/lib/Image/ExifTool/Nikon.pm
+++ b/lib/Image/ExifTool/Nikon.pm
@@ -437,6 +437,7 @@ sub GetAFPointGrid($$;$);
'A5 40 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC OS HSM',
# LensFStops varies with FocalLength for this lens (ref 2):
'92 2C 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC Macro OS HSM', #2
+ '87 2C 2D 8E 2C 40 4B 0E' => 'Sigma 18-300mm F3.5-6.3 DC Macro HSM', #30
# '92 2C 2D 88 2C 40 4B 0E' (250mm)
# '92 2B 2D 88 2C 40 4B 0E' (210mm)
# '92 2C 2D 88 2C 40 4B 0E' (185mm)
diff --git a/lib/Image/ExifTool/Olympus.pm b/lib/Image/ExifTool/Olympus.pm
index 9ebed706..dc7d16d9 100644
--- a/lib/Image/ExifTool/Olympus.pm
+++ b/lib/Image/ExifTool/Olympus.pm
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::APP12;
-$VERSION = '2.76';
+$VERSION = '2.77';
sub PrintLensInfo($$$);
@@ -432,6 +432,7 @@ my %olympusCameraTypes = (
S0089 => 'E-M5MarkIII',
S0092 => 'E-M1MarkIII', #IB
S0093 => 'E-P7', #IB
+ S0095 => 'OM-1', #IB
SR45 => 'D220',
SR55 => 'D320L',
SR83 => 'D340L',
diff --git a/lib/Image/ExifTool/QuickTime.pm b/lib/Image/ExifTool/QuickTime.pm
index 85b8718d..d51c9b3a 100644
--- a/lib/Image/ExifTool/QuickTime.pm
+++ b/lib/Image/ExifTool/QuickTime.pm
@@ -2232,7 +2232,7 @@ my %eeBox2 = (
# 4 ? - "1e 00"
# 6 int16u - record length in bytes
# 8 ? - "23 01 00 00 00 00 00 00"
- # 16 - start of records (each record ends in an int64u timestamp in ns)
+ # 16 - start of records (each record ends in an int64u timestamp "ts" in ns)
# RDTA - float[4],ts: "-0.31289672 -0.2245330 11.303817 0 775.780"
# RDTB - float[4],ts: "-0.04841613 -0.2166595 0.0724792 0 775.780"
# RDTC - float[4],ts: "27.60925 -27.10037 -13.27285 0 775.829"
diff --git a/lib/Image/ExifTool/QuickTimeStream.pl b/lib/Image/ExifTool/QuickTimeStream.pl
index d080b7f6..a2273743 100644
--- a/lib/Image/ExifTool/QuickTimeStream.pl
+++ b/lib/Image/ExifTool/QuickTimeStream.pl
@@ -1144,13 +1144,13 @@ sub ProcessSamples($)
}
@$size < @$start + $samplesPerChunk and $et->WarnOnce('Sample size error'), last;
my $sampleStart = $chunkStart;
- for ($i=0; ; ) {
+Sample: for ($i=0; ; ) {
push @$start, $sampleStart;
if (defined $time) {
until ($timeCount) {
if (@$stts < 2) {
undef $time;
- last;
+ last Sample;
}
$timeCount = shift @$stts;
$timeDelta = shift @$stts;
diff --git a/lib/Image/ExifTool/Shortcuts.pm b/lib/Image/ExifTool/Shortcuts.pm
index d765598d..b0f7889d 100644
--- a/lib/Image/ExifTool/Shortcuts.pm
+++ b/lib/Image/ExifTool/Shortcuts.pm
@@ -19,7 +19,7 @@ package Image::ExifTool::Shortcuts;
use strict;
use vars qw($VERSION);
-$VERSION = '1.65';
+$VERSION = '1.66';
# this is a special table used to define command-line shortcuts
# (documentation Notes may be added for these via %shortcutNotes in BuildTagLookup.pm)
@@ -158,6 +158,7 @@ $VERSION = '1.65';
'MakerNoteNintendo',
'MakerNoteOlympus',
'MakerNoteOlympus2',
+ 'MakerNoteOlympus3',
'MakerNoteLeica',
'MakerNoteLeica2',
'MakerNoteLeica3',
diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm
index 424a7a19..d96eaf45 100644
--- a/lib/Image/ExifTool/Sony.pm
+++ b/lib/Image/ExifTool/Sony.pm
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::Minolta;
-$VERSION = '3.49';
+$VERSION = '3.50';
sub ProcessSRF($$$);
sub ProcessSR2($$$);
@@ -244,7 +244,8 @@ sub PrintInvLensSpec($;$$);
50529 => 'Sigma 90mm F2.8 DG DN | C', #JR (021)
50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
-
+ 50532 => 'Sigma 20mm F2 DG DN | C', #JR (022)
+
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
@@ -278,6 +279,7 @@ sub PrintInvLensSpec($;$$);
51515 => 'Samyang AF 12mm F2.0', #JR
51516 => 'Samyang AF 24-70mm F2.8', #JR
51517 => 'Samyang AF 50mm F1.4 II', #JR
+ 51518 => 'Samyang AF 135mm F1.8', #JR
);
# ExposureProgram values (ref PH, mainly decoded from A200)
@@ -1790,7 +1792,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
# 15 0 35 2 2 ILCA-68/77M2, ILCE-5000/5100/6000/7/7R/7S/7M2/QX1, DSC-HX60V/HX350/HX400V/QX30/RX10/RX100M3/WX220/WX350
# 16 0 85 2 2 DSC-HX80/HX90V/WX500
# 17 0 232 1 2 DSC-RX0/RX0M2/RX1RM2/RX10M2/RX10M3/RX10M4/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/HX99, ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, ILCA-99M2, ZV-1
- # 18 0 20 0 164 ILCE-7SM3
+ # 18 0 20 0 164 ILCE-7SM3
# other values for Panorama images and several other models
0x9404 => [{
Name => 'Tag9404a',
@@ -8386,7 +8388,7 @@ my %isoSetting2010 = (
DATAMEMBER => [ 0x04 ],
0x04 => {
# seen values 0,2,3,18,19,32,49,50,83,130,132,148,213,229,255
- # CameraTemperature is valid for all values above except ==0 and >=130
+ # CameraTemperature is valid for all values above except ==0 and >=130
Name => 'TempTest2',
DataMember => 'TempTest2',
Hidden => 1,
diff --git a/lib/Image/ExifTool/TagLookup.pm b/lib/Image/ExifTool/TagLookup.pm
index 2a2f2f60..5c07879c 100644
--- a/lib/Image/ExifTool/TagLookup.pm
+++ b/lib/Image/ExifTool/TagLookup.pm
@@ -4075,6 +4075,7 @@ my %tagLookup = (
'makernoteoffset' => { 396 => 0xff },
'makernoteolympus' => { 117 => 'MakN', 119 => 0x927c },
'makernoteolympus2' => { 117 => 'MakN', 119 => 0x927c },
+ 'makernoteolympus3' => { 117 => 'MakN', 119 => 0x927c },
'makernotepanasonic' => { 117 => 'MakN', 119 => 0x927c },
'makernotepanasonic2' => { 117 => 'MakN', 119 => 0x927c },
'makernotepanasonic3' => { 117 => 'MakN', 119 => 0x927c },
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index f1f5c8bf..456bc209 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/lib/Image/ExifTool/TagNames.pod
@@ -669,6 +669,7 @@ for the official EXIF 2.32 specification.
MakerNoteNintendo ExifIFD Nintendo
MakerNoteOlympus ExifIFD Olympus
MakerNoteOlympus2 ExifIFD Olympus
+ MakerNoteOlympus3 ExifIFD Olympus
MakerNoteLeica ExifIFD Panasonic
MakerNoteLeica2 ExifIFD Panasonic Leica2
MakerNoteLeica3 ExifIFD Panasonic Leica3
@@ -20994,6 +20995,7 @@ still proprietary) Adobe format.
MakerNoteNintendo Nintendo
MakerNoteOlympus Olympus
MakerNoteOlympus2 Olympus
+ MakerNoteOlympus3 Olympus
MakerNoteLeica Panasonic
MakerNoteLeica2 Panasonic Leica2
MakerNoteLeica3 Panasonic Leica3
@@ -37534,6 +37536,7 @@ for more details.
MakerNoteNintendo
MakerNoteOlympus
MakerNoteOlympus2
+ MakerNoteOlympus3
MakerNoteLeica
MakerNoteLeica2
MakerNoteLeica3
diff --git a/lib/Image/ExifTool/WriteQuickTime.pl b/lib/Image/ExifTool/WriteQuickTime.pl
index e61f7d6d..fbfa0d3c 100644
--- a/lib/Image/ExifTool/WriteQuickTime.pl
+++ b/lib/Image/ExifTool/WriteQuickTime.pl
@@ -1391,8 +1391,8 @@ sub WriteQuickTime($$$)
$pos += $siz;
}
if ($msg) {
- # (allow empty sample description for 'url ' handler type)
- if ($$et{HandlerType} or length($buff) > 8) {
+ # (allow empty sample description for non-audio/video handler types, eg. 'url ', 'meta')
+ if ($$et{HandlerType}) {
my $grp = $$et{CUR_WRITE_GROUP} || $parent;
$et->Error("$msg for $grp");
return $rtnErr;