diff --git a/bin/Changes b/bin/Changes index 27e70ee5..f382f815 100644 --- a/bin/Changes +++ b/bin/Changes @@ -7,6 +7,16 @@ RSS feed: https://exiftool.org/rss.xml Note: The most recent production release is Version 12.16. (Other versions are considered development releases, and are not uploaded to MetaCPAN.) +Feb. 9, 2021 - Version 12.18 + + - Added a new SonyModelID + - Decode a number of Sony tags for the ILCE-1 (thanks Jos Roost) + - Decode a couple of new Canon tags (thanks LibRaw) + - Patched to read differently formatted UserData:Keywords as written by iPhone + - Patched to tolerate out-of-order Nikon MakerNote IFD entries when obtaining + tags necessary for decryption + - Fixed a few possible Condition warnings for some NikonSettings tags + Feb. 3, 2021 - Version 12.17 - Added a new Canon FocusMode value diff --git a/bin/META.json b/bin/META.json index f2b197f8..718fc180 100644 --- a/bin/META.json +++ b/bin/META.json @@ -47,5 +47,5 @@ } }, "release_status" : "stable", - "version" : "12.17" + "version" : "12.18" } diff --git a/bin/META.yml b/bin/META.yml index 05bc5920..a1530ca6 100644 --- a/bin/META.yml +++ b/bin/META.yml @@ -28,4 +28,4 @@ recommends: Time::HiRes: 0 requires: perl: 5.004 -version: 12.17 +version: 12.18 diff --git a/bin/README b/bin/README index fb6d08b7..b676556d 100644 --- a/bin/README +++ b/bin/README @@ -106,8 +106,8 @@ your home directory, then you would type the following commands in a terminal window to extract and run ExifTool: cd ~/Desktop - gzip -dc Image-ExifTool-12.17.tar.gz | tar -xf - - cd Image-ExifTool-12.17 + gzip -dc Image-ExifTool-12.18.tar.gz | tar -xf - + cd Image-ExifTool-12.18 ./exiftool t/images/ExifTool.jpg Note: These commands extract meta information from one of the test images. diff --git a/bin/exiftool b/bin/exiftool index 647a6c0d..51bf37a2 100755 --- a/bin/exiftool +++ b/bin/exiftool @@ -10,7 +10,7 @@ use strict; require 5.004; -my $version = '12.17'; +my $version = '12.18'; # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool' my $exeDir; @@ -5369,7 +5369,7 @@ with this command: produces output like this: - -- Generated by ExifTool 12.17 -- + -- Generated by ExifTool 12.18 -- File: a.jpg - 2003:10:31 15:44:19 (f/5.6, 1/60s, ISO 100) File: b.jpg - 2006:05:23 11:57:38 diff --git a/bin/lib/Image/ExifTool.pm b/bin/lib/Image/ExifTool.pm index 734bb873..4869c884 100644 --- a/bin/lib/Image/ExifTool.pm +++ b/bin/lib/Image/ExifTool.pm @@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd %jpegMarker %specialTags %fileTypeLookup $testLen $exePath); -$VERSION = '12.17'; +$VERSION = '12.18'; $RELEASE = ''; @ISA = qw(Exporter); %EXPORT_TAGS = ( diff --git a/bin/lib/Image/ExifTool/Canon.pm b/bin/lib/Image/ExifTool/Canon.pm index 94602568..bbe25cf3 100644 --- a/bin/lib/Image/ExifTool/Canon.pm +++ b/bin/lib/Image/ExifTool/Canon.pm @@ -88,7 +88,7 @@ sub ProcessCTMD($$$); sub ProcessExifInfo($$$); sub SwapWords($); -$VERSION = '4.43'; +$VERSION = '4.44'; # Note: Removed 'USM' from 'L' lenses since it is redundant - PH # (or is it? Ref 32 shows 5 non-USM L-type lenses) @@ -4539,6 +4539,16 @@ my %ciMaxFocal = ( 2 => 'Rotate 270 CW', }, }, + 0x3a => { #IB + Name => 'CameraOrientation', + Condition => '$$self{Model} =~ /\b(1200D|REBEL T5|Kiss X70)\b/', + Notes => '1200D only', + PrintConv => { + 0 => 'Horizontal (normal)', + 1 => 'Rotate 90 CW', + 2 => 'Rotate 270 CW', + }, + }, 0x55 => { Name => 'FocusDistanceUpper', Condition => '$$self{Model} =~ /EOS 60D$/', @@ -4679,7 +4689,7 @@ my %ciMaxFocal = ( FIRST_ENTRY => 0, PRIORITY => 0, GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' }, - NOTES => 'CameraInfo tags for the EOS 70D.', + NOTES => 'CameraInfo tags for the EOS 80D.', 0x03 => { %ciFNumber }, 0x04 => { %ciExposureTime }, 0x06 => { %ciISO }, @@ -5255,6 +5265,14 @@ my %ciMaxFocal = ( 0x06 => { %ciISO }, 0x1b => { %ciCameraTemperature }, # (700D + 0) 0x23 => { %ciFocalLength }, # (700D + 0) + 0x96 => { #IB (700D + 0x19) + Name => 'CameraOrientation', + PrintConv => { + 0 => 'Horizontal (normal)', + 1 => 'Rotate 90 CW', + 2 => 'Rotate 270 CW', + }, + }, 0xa5 => { # (700D + 0x19) Name => 'FocusDistanceUpper', %focusDistanceByteSwap, diff --git a/bin/lib/Image/ExifTool/Nikon.pm b/bin/lib/Image/ExifTool/Nikon.pm index 3e451e87..392fa800 100644 --- a/bin/lib/Image/ExifTool/Nikon.pm +++ b/bin/lib/Image/ExifTool/Nikon.pm @@ -62,7 +62,7 @@ use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::Exif; use Image::ExifTool::GPS; -$VERSION = '3.92'; +$VERSION = '3.93'; sub LensIDConv($$$); sub ProcessNikonAVI($$$); @@ -9945,12 +9945,10 @@ sub PrescanExif($$$) $dataLen = length $data; $dirStart = 0; } - # loop through necessary IFD entries - my ($lastTag) = sort { $b <=> $a } keys %$tagHash; # (reverse sort) + # loop through Nikon MakerNote IFD entries for ($index=0; $index<$numEntries; ++$index) { my $entry = $dirStart + 2 + 12 * $index; my $tagID = Get16u($dataPt, $entry); - last if $tagID > $lastTag; # (assuming tags are in order) next unless exists $$tagHash{$tagID}; # only extract required tags my $format = Get16u($dataPt, $entry+2); next if $format < 1 or $format > 13; diff --git a/bin/lib/Image/ExifTool/NikonSettings.pm b/bin/lib/Image/ExifTool/NikonSettings.pm index 0bcca9c3..69f6fde3 100644 --- a/bin/lib/Image/ExifTool/NikonSettings.pm +++ b/bin/lib/Image/ExifTool/NikonSettings.pm @@ -17,7 +17,7 @@ use strict; use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.01'; +$VERSION = '1.02'; sub ProcessNikonSettings($$$); @@ -911,14 +911,14 @@ my %infoD6 = ( }, 0x05a => [{ # CSf6-b-1 and CSf6-b-2 (D6), CSf5-b-1 and CSf5-b-2 (Z7_2), (continued from above) Name => 'CmdDialsChangeMainSub', - Condition => '$$self{CmdDialsChangeMainSubExposure} == 1', + Condition => '$$self{CmdDialsChangeMainSubExposure} and $$self{CmdDialsChangeMainSubExposure} == 1', PrintConv => { 1 => 'Autofocus On, Exposure On', 2 => 'Autofocus Off, Exposure On', }, },{ Name => 'CmdDialsChangeMainSub', - Condition => '$$self{CmdDialsChangeMainSubExposure} == 2', + Condition => '$$self{CmdDialsChangeMainSubExposure} and $$self{CmdDialsChangeMainSubExposure} == 2', PrintConv => { 1 => 'Autofocus On, Exposure On (Mode A)', 2 => 'Autofocus Off, Exposure On (Mode A)', @@ -1014,7 +1014,7 @@ my %infoD6 = ( }], 0x08b => [{ # CSf6-a-1 and CSf6-a-2 (D6), CSf5-a-1 and CSf5-a-2 (Z7_2), (continued from above) Name => 'CmdDialsReverseRotation', - Condition => '$$self{CmdDialsReverseRotExposureComp} == 1', + Condition => '$$self{CmdDialsReverseRotExposureComp} and $$self{CmdDialsReverseRotExposureComp} == 1', PrintConv => { 1 => 'No', 2 => 'Shutter Speed & Aperture', @@ -1313,7 +1313,7 @@ my %infoD6 = ( 1 => 'Power Aperture (Open)', 2 => 'Exposure Compensation', 3 => 'Subject Tracking', - 4 => 'LiveView Info Display On/Off)', + 4 => 'LiveView Info Display On/Off', 5 => 'Grid Display', 6 => 'Zoom (Low)', 7 => 'Zoom (1:1)', @@ -1357,7 +1357,7 @@ my %infoD6 = ( 1 => 'Power Aperture (Close)', 2 => 'Exposure Compensation', 3 => 'Subject Tracking', - 4 => 'LiveView Info Display On/Off)', + 4 => 'LiveView Info Display On/Off', 5 => 'Grid Display', 6 => 'Zoom (Low)', 7 => 'Zoom (1:1)', @@ -1578,7 +1578,7 @@ my %infoD6 = ( }, },{ Name => 'BracketProgram', - Condition => '$$self{BracketSet} == 4', + Condition => '$$self{BracketSet} and $$self{BracketSet} == 4', Notes => 'White Balance Bracketing', RawConv => '$$self{BracketProgram} = $val', PrintConv => { @@ -1595,7 +1595,7 @@ my %infoD6 = ( }, },{ Name => 'BracketProgram', - Condition => '$$self{BracketSet} == 5', + Condition => '$$self{BracketSet} and $$self{BracketSet} == 5', Notes => 'Active-D Bracketing', RawConv => '$$self{BracketProgram} = $val', Mask => 0x0f, @@ -1802,9 +1802,9 @@ my %infoD6 = ( }, }, 0x139 => { Name => 'PlaybackFlickUp', RawConv => '$$self{PlaybackFlickUp} = $val', PrintConv => \%flickUpDownD6 }, # CSf12-1-a # (D6) - 0x13a => { Name => 'PlaybackFlickUpRating', Condition => '$$self{PlaybackFlickUp} == 1', Notes => 'Meaningful only when PlaybackFlickUp is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-1-b # (D6) + 0x13a => { Name => 'PlaybackFlickUpRating', Condition => '$$self{PlaybackFlickUp} and $$self{PlaybackFlickUp} == 1', Notes => 'Meaningful only when PlaybackFlickUp is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-1-b # (D6) 0x13b => { Name => 'PlaybackFlickDown', RawConv => '$$self{PlaybackFlickDown} = $val', PrintConv => \%flickUpDownD6 }, # CSf12-2-a # (D6) - 0x13c => { Name => 'PlaybackFlickDownRating', Condition => '$$self{PlaybackFlickDown} == 1', Notes => 'Meaningful only when PlaybackFlickDown is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-2-b # (D6) + 0x13c => { Name => 'PlaybackFlickDownRating', Condition => '$$self{PlaybackFlickDown} and $$self{PlaybackFlickDown} == 1', Notes => 'Meaningful only when PlaybackFlickDown is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-2-b # (D6) 0x13d => { # CSg2-d (D6) Name => 'MovieFunc3Button', PrintConv => { diff --git a/bin/lib/Image/ExifTool/QuickTime.pm b/bin/lib/Image/ExifTool/QuickTime.pm index e4082ac3..ed04991e 100644 --- a/bin/lib/Image/ExifTool/QuickTime.pm +++ b/bin/lib/Image/ExifTool/QuickTime.pm @@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::Exif; use Image::ExifTool::GPS; -$VERSION = '2.57'; +$VERSION = '2.58'; sub ProcessMOV($$;$); sub ProcessKeys($$$); @@ -258,11 +258,15 @@ my %unknownInfo = ( Unknown => 1, ValueConv => '$val =~ /^([\x20-\x7e]*)\0*$/ ? $1 : \$val', ); + +# multi-language text with 6-byte header +my %langText = ( IText => 6 ); + # parsing for most of the 3gp udta language text boxes -my %langText = ( +my %langText3gp = ( Notes => 'used in 3gp videos', - IText => 6, Avoid => 1, + IText => 6, ); # 4-character Vendor ID codes (ref PH) @@ -1545,15 +1549,15 @@ my %eeBox2 = ( # the following are 3gp tags, references: # http://atomicparsley.sourceforge.net # http://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/TSGS4_25/Docs/ - # (note that all %langText tags are Avoid => 1) - cprt => { Name => 'Copyright', %langText, Groups => { 2 => 'Author' } }, - auth => { Name => 'Author', %langText, Groups => { 2 => 'Author' } }, - titl => { Name => 'Title', %langText }, - dscp => { Name => 'Description',%langText }, - perf => { Name => 'Performer', %langText }, - gnre => { Name => 'Genre', %langText }, - albm => { Name => 'Album', %langText }, - coll => { Name => 'CollectionName', %langText }, #17 + # (note that all %langText3gp tags are Avoid => 1) + cprt => { Name => 'Copyright', %langText3gp, Groups => { 2 => 'Author' } }, + auth => { Name => 'Author', %langText3gp, Groups => { 2 => 'Author' } }, + titl => { Name => 'Title', %langText3gp }, + dscp => { Name => 'Description',%langText3gp }, + perf => { Name => 'Performer', %langText3gp }, + gnre => { Name => 'Genre', %langText3gp }, + albm => { Name => 'Album', %langText3gp }, + coll => { Name => 'CollectionName', %langText3gp }, #17 rtng => { Name => 'Rating', # (4-byte flags, 4-char entity, 4-char criteria, 2-byte lang, string) @@ -1584,8 +1588,11 @@ my %eeBox2 = ( }, kywd => { Name => 'Keywords', - # (4 byte flags, 2-byte lang, 1-byte count, count x pascal strings) + # (4 byte flags, 2-byte lang, 1-byte count, count x pascal strings, ref 17) + # (but I have also seen a simple string written by iPhone) RawConv => q{ + my $sep = $self->Options('ListSep'); + return join($sep, split /\0+/, $val) unless $val =~ /^\0/; # (iPhone) return '' unless length $val >= 7; my $lang = Image::ExifTool::QuickTime::UnpackLang(Get16u(\$val, 4)); $lang = $lang ? "($lang) " : ''; @@ -1601,7 +1608,6 @@ my %eeBox2 = ( push @vals, $v; $pos += $len; } - my $sep = $self->Options('ListSep'); return $lang . join($sep, @vals); }, }, @@ -2037,7 +2043,7 @@ my %eeBox2 = ( SubDirectory => { TagTable => 'Image::ExifTool::Olympus::thmb' }, },{ #17 (format is in bytes 3-7) Name => 'ThumbnailImage', - Condition => '$$valPt =~ /^.{8}\xff\xd8\xff\xdb/s', + Condition => '$$valPt =~ /^.{8}\xff\xd8\xff[\xdb\xe0]/s', Groups => { 2 => 'Preview' }, RawConv => 'substr($val, 8)', Binary => 1, diff --git a/bin/lib/Image/ExifTool/Sony.pm b/bin/lib/Image/ExifTool/Sony.pm index faa530b8..dc0cb9b4 100644 --- a/bin/lib/Image/ExifTool/Sony.pm +++ b/bin/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.35'; +$VERSION = '3.36'; sub ProcessSRF($$$); sub ProcessSR2($$$); @@ -71,8 +71,8 @@ sub PrintInvLensSpec($;$$); '0.12' => 'Zeiss Loxia 35mm F2', # (firmware Ver.01) 1 => 'Sony LA-EA1 or Sigma MC-11 Adapter', # MC-11 with not-supported lenses 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 + 3 => 'Sony LA-EA3 Adapter', + 6 => 'Sony LA-EA4 Adapter', 7 => 'Sony LA-EA5 Adapter', #JR # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB) 44 => 'Metabones Canon EF Smart Adapter', #JR @@ -80,6 +80,7 @@ sub PrintInvLensSpec($;$$); 184 => 'Metabones Canon EF Speed Booster Ultra', #JR ('Green' mode, LensMount reported as A-mount) 234 => 'Metabones Canon EF Smart Adapter Mark IV', #JR (LensMount reported as A-mount) 239 => 'Metabones Canon EF Speed Booster', #JR + 24593 => 'LA-EA4r MonsterAdapter', # 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 @@ -1538,7 +1539,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets { Name => 'Tag9050a', - Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|7SM2|7SM3|9|9M2)|ILCA-99M2|ZV-)/', + Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|7SM2|7SM3|9|9M2)|ILCA-99M2|ZV-)/', SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9050a', ByteOrder => 'LittleEndian', @@ -1552,7 +1553,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); }, },{ Name => 'Tag9050c', - Condition => '$$self{Model} =~ /^(ILCE-7SM3)/', + Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3))/', SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9050c', ByteOrder => 'LittleEndian', @@ -1572,8 +1573,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); # 0x24 (e) for ILCA-99M2,ILCE-5100/6300/6500/7M2/7RM2/7S/7SM2/QX1, DSC-HX80/HX90V/QX30/RX0/RX100M3/RX100M4/RX100M5/RX10M2/RX10M3/RX1RM2/WX500 # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99 # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1 - # 0x31 (e) for ILCE-7SM3 - # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28 respectively + # 0x31 (e) for ILCE-1, 7SM3 + # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively { Name => 'Tag9400a', Condition => q{ @@ -1957,6 +1958,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); 380 => 'ZV-1', #JR 381 => 'ILCE-7C', #JR 383 => 'ILCE-7SM3', + 384 => 'ILCE-1', #PH }, }, 0xb020 => { #2 @@ -7788,7 +7790,7 @@ my %isoSetting2010 = ( CHECK_PROC => \&Image::ExifTool::CheckBinaryData, FORMAT => 'int8u', NOTES => q{ - Valid from July 2020 for ILCE-7SM3. + Valid from July 2020 for ILCE-1/7SM3. }, WRITABLE => 1, FIRST_ENTRY => 0, @@ -7849,13 +7851,12 @@ my %isoSetting2010 = ( }, 0x0050 => { Name => 'ShutterCount2', - Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-7SM3)/)', + Condition => '($$self{FlashFired} & 0x01) != 1', Format => 'int32u', RawConv => '$val & 0x00ffffff', }, 0x0066 => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes Name => 'SonyExposureTime', - Condition => '$$self{Model} =~ /^(ILCE-7SM3)/', Format => 'int16u', ValueConv => '$val ? 2 ** (16 - $val/256) : 0', ValueConvInv => '$val ? int((16 - log($val) / log(2)) * 256 + 0.5) : 0', @@ -7864,7 +7865,6 @@ my %isoSetting2010 = ( }, 0x0068 => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes Name => 'SonyFNumber', - Condition => '$$self{Model} =~ /^(ILCE-7SM3)/', Format => 'int16u', ValueConv => '2 ** (($val/256 - 16) / 2)', ValueConvInv => '(log($val)*2/log(2)+16)*256', @@ -7873,7 +7873,6 @@ my %isoSetting2010 = ( }, 0x006b => { Name => 'ReleaseMode2', - Condition => '$$self{Model} =~ /^(ILCE-7SM3)/', %releaseMode2, }, 0x0088 => { @@ -8052,7 +8051,7 @@ my %isoSetting2010 = ( NOTES => q{ Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/ RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/ - WX350/WX500, ILCE-7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/ + WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/ 5100/6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2. }, FIRST_ENTRY => 0, @@ -8109,7 +8108,7 @@ my %isoSetting2010 = ( }, 0x002a => { Name => 'Quality2', - Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/', + Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3))\b/', PrintConv => { 0 => 'JPEG', 1 => 'RAW', @@ -8119,13 +8118,13 @@ my %isoSetting2010 = ( }, 0x0047 => { Name => 'SonyImageHeight', - Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/', + Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3))\b/', Format => 'int16u', PrintConv => '$val > 0 ? 8*$val : "n.a."', }, 0x0053 => { Name => 'ModelReleaseYear', - Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/', + Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3))\b/', Format => 'int8u', PrintConv => 'sprintf("20%.2d", $val)', }, @@ -8144,7 +8143,7 @@ my %isoSetting2010 = ( 0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' }, 0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, - 0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 160', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, + 0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, 0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, 0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, 0x0634 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 68', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, @@ -8902,6 +8901,7 @@ my %isoSetting2010 = ( # 1 0 0 0 for ILCE-5000/5100/6000/7/7M2/7R/7S/QX1 # 6 0 0 0 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2 # 9 . . . for ILCE-7SM3 + # 11 . . . for ILCE-1 # 0 2 0 0 for NEX/ILCE with LA-EA2/EA4 Phase-AF adapter # 2 0 0 0 seen for a few NEX-5N images # 2 2 0 0 seen for a few NEX-5N/7 images with LA-EA2 adapter @@ -9411,7 +9411,7 @@ my %isoSetting2010 = ( WRITE_PROC => \&WriteEnciphered, CHECK_PROC => \&Image::ExifTool::CheckBinaryData, FORMAT => 'int8u', - NOTES => 'Valid for the ILCE-7SM3.', + NOTES => 'Valid for the ILCE-1/7SM3.', FIRST_ENTRY => 0, GROUPS => { 0 => 'MakerNotes', 2 => 'Image' }, 0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' }, diff --git a/bin/lib/Image/ExifTool/TagLookup.pm b/bin/lib/Image/ExifTool/TagLookup.pm index 59edff46..2a483bef 100644 --- a/bin/lib/Image/ExifTool/TagLookup.pm +++ b/bin/lib/Image/ExifTool/TagLookup.pm @@ -1248,7 +1248,7 @@ my %tagLookup = ( 'cameramodelrestriction' => { 467 => 'CameraModelRestriction', 469 => 'CameraModelRestriction' }, 'cameramotion' => { 364 => 'direction.motion' }, 'cameramove' => { 493 => 'cameraMove' }, - 'cameraorientation' => { 7 => 0x30, 9 => 0x7d, 11 => 0x30, 13 => 0x35, 14 => 0x30, 15 => 0x30, 16 => 0x31, 17 => 0x31, 18 => 0x35, 19 => 0x27, 20 => 0x31, 21 => 0x7d, 22 => 0x38, 23 => 0x36, 24 => 0x7d, 25 => 0x83, 26 => 0x84, 28 => 0x35, 29 => 0x96, 310 => 0x8f, 349 => 0x1, 354 => 0x100, 403 => [0x16,0x18], 431 => 0x28, 432 => 0x24, 433 => 0x29 }, + 'cameraorientation' => { 7 => 0x30, 9 => 0x7d, 11 => 0x30, 13 => 0x35, 14 => 0x30, 15 => 0x30, 16 => 0x31, 17 => 0x31, 18 => 0x35, 19 => 0x27, 20 => 0x31, 21 => 0x7d, 22 => 0x38, 23 => [0x36,0x3a], 24 => 0x7d, 25 => 0x83, 26 => 0x84, 27 => 0x96, 28 => 0x35, 29 => 0x96, 310 => 0x8f, 349 => 0x1, 354 => 0x100, 403 => [0x16,0x18], 431 => 0x28, 432 => 0x24, 433 => 0x29 }, 'cameraowner' => { 138 => 0xc353 }, 'cameraparameters' => { 292 => 0x2050 }, 'camerapicturestyle' => { 28 => 0xaf }, diff --git a/bin/lib/Image/ExifTool/TagNames.pod b/bin/lib/Image/ExifTool/TagNames.pod index 782089a5..e79605f2 100644 --- a/bin/lib/Image/ExifTool/TagNames.pod +++ b/bin/lib/Image/ExifTool/TagNames.pod @@ -12,7 +12,7 @@ meta information extracted from or written to a file. =head1 TAG TABLES The tables listed below give the names of all tags recognized by ExifTool. -They contain a total of 24075 tags, with 15588 unique tag names. +They contain a total of 24077 tags, with 15588 unique tag names. B, B or B is given in the first column of each table. A B is the computer-readable equivalent of a tag name, and @@ -6879,6 +6879,7 @@ CameraInfo tags for the EOS 60D and 1200D. 25 CameraTemperature int8u 30 FocalLength int16uRev 54 CameraOrientation int8u + 58 CameraOrientation int8u 85 FocusDistanceUpper int16uRev 87 FocusDistanceLower int16uRev 125 ColorTemperature int16u @@ -6916,7 +6917,7 @@ CameraInfo tags for the EOS 70D. =head3 Canon CameraInfo80D Tags -CameraInfo tags for the EOS 70D. +CameraInfo tags for the EOS 80D. Index1 Tag Name Writable ------ -------- -------- @@ -7084,6 +7085,7 @@ CameraInfo tags for the EOS 750D and 760D. 6 ISO int8u 27 CameraTemperature int8u 35 FocalLength int16uRev + 150 CameraOrientation int8u 165 FocusDistanceUpper int16uRev 167 FocusDistanceLower int16uRev 305 WhiteBalance int16u @@ -18597,7 +18599,7 @@ Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/ =head3 Sony Tag9050c Tags -Valid from July 2020 for ILCE-7SM3. +Valid from July 2020 for ILCE-1/7SM3. Index1 Tag Name Writable ------ -------- -------- @@ -18652,7 +18654,7 @@ DSC-HX50V, DSC-QX10/QX100. Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/ RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/ -WX350/WX500, ILCE-7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/ +WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/ 5100/6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2. Index1 Tag Name Writable @@ -19003,7 +19005,7 @@ E-mount models. =head3 Sony Tag9416 Tags -Valid for the ILCE-7SM3. +Valid for the ILCE-1/7SM3. Index1 Tag Name Writable ------ -------- -------- diff --git a/bin/perl-Image-ExifTool.spec b/bin/perl-Image-ExifTool.spec index f4a72e5c..077a1580 100644 --- a/bin/perl-Image-ExifTool.spec +++ b/bin/perl-Image-ExifTool.spec @@ -1,6 +1,6 @@ Summary: perl module for image data extraction Name: perl-Image-ExifTool -Version: 12.17 +Version: 12.18 Release: 1 License: Artistic/GPL Group: Development/Libraries/Perl diff --git a/lib/exiftool_vendored/version.rb b/lib/exiftool_vendored/version.rb index 9200b452..65c7e0c5 100644 --- a/lib/exiftool_vendored/version.rb +++ b/lib/exiftool_vendored/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module ExiftoolVendored - VERSION = Gem::Version.new('12.17.1') + VERSION = Gem::Version.new('12.18.0') end