diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Image/ExifTool.pm | 2 | ||||
-rw-r--r-- | lib/Image/ExifTool/Canon.pm | 12 | ||||
-rw-r--r-- | lib/Image/ExifTool/Exif.pm | 4 | ||||
-rw-r--r-- | lib/Image/ExifTool/MacOS.pm | 18 | ||||
-rw-r--r-- | lib/Image/ExifTool/MakerNotes.pm | 13 | ||||
-rw-r--r-- | lib/Image/ExifTool/Nikon.pm | 1 | ||||
-rw-r--r-- | lib/Image/ExifTool/Olympus.pm | 3 | ||||
-rw-r--r-- | lib/Image/ExifTool/QuickTime.pm | 2 | ||||
-rw-r--r-- | lib/Image/ExifTool/QuickTimeStream.pl | 4 | ||||
-rw-r--r-- | lib/Image/ExifTool/Shortcuts.pm | 3 | ||||
-rw-r--r-- | lib/Image/ExifTool/Sony.pm | 10 | ||||
-rw-r--r-- | lib/Image/ExifTool/TagLookup.pm | 1 | ||||
-rw-r--r-- | lib/Image/ExifTool/TagNames.pod | 3 | ||||
-rw-r--r-- | lib/Image/ExifTool/WriteQuickTime.pl | 4 |
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; |