Skip to content

Commit

Permalink
Upgrading to exiftool v12.18
Browse files Browse the repository at this point in the history
  • Loading branch information
morozgrafix committed Feb 11, 2021
1 parent 180c50a commit 78ba693
Show file tree
Hide file tree
Showing 15 changed files with 98 additions and 64 deletions.
10 changes: 10 additions & 0 deletions bin/Changes
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion bin/META.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,5 @@
}
},
"release_status" : "stable",
"version" : "12.17"
"version" : "12.18"
}
2 changes: 1 addition & 1 deletion bin/META.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ recommends:
Time::HiRes: 0
requires:
perl: 5.004
version: 12.17
version: 12.18
4 changes: 2 additions & 2 deletions bin/README
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions bin/exiftool
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion bin/lib/Image/ExifTool.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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 = (
Expand Down
22 changes: 20 additions & 2 deletions bin/lib/Image/ExifTool/Canon.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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$/',
Expand Down Expand Up @@ -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 },
Expand Down Expand Up @@ -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,
Expand Down
6 changes: 2 additions & 4 deletions bin/lib/Image/ExifTool/Nikon.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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($$$);
Expand Down Expand Up @@ -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;
Expand Down
20 changes: 10 additions & 10 deletions bin/lib/Image/ExifTool/NikonSettings.pm
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);

$VERSION = '1.01';
$VERSION = '1.02';

sub ProcessNikonSettings($$$);

Expand Down Expand Up @@ -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)',
Expand Down Expand Up @@ -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',
Expand Down Expand Up @@ -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)',
Expand Down Expand Up @@ -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)',
Expand Down Expand Up @@ -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 => {
Expand All @@ -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,
Expand Down Expand Up @@ -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 => {
Expand Down
36 changes: 21 additions & 15 deletions bin/lib/Image/ExifTool/QuickTime.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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($$$);
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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 '<err>' unless length $val >= 7;
my $lang = Image::ExifTool::QuickTime::UnpackLang(Get16u(\$val, 4));
$lang = $lang ? "($lang) " : '';
Expand All @@ -1601,7 +1608,6 @@ my %eeBox2 = (
push @vals, $v;
$pos += $len;
}
my $sep = $self->Options('ListSep');
return $lang . join($sep, @vals);
},
},
Expand Down Expand Up @@ -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,
Expand Down
Loading

0 comments on commit 78ba693

Please sign in to comment.