summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorexiftool <exiftool@users.sourceforge.net>2020-12-24 13:23:09 -0500
committerexiftool <exiftool@users.sourceforge.net>2020-12-24 13:23:09 -0500
commit263cdd585e0ca7766a4abe0c2e943834d1526832 (patch)
treee988fabe7061f0cf540a4d6cc3788dbc213ab6fe /lib
parentfc6a8b55fc90528376cc85d1653bf21fe1011d22 (diff)
Update to 12.13
Diffstat (limited to 'lib')
-rw-r--r--lib/Image/ExifTool.pm2
-rw-r--r--lib/Image/ExifTool.pod4
-rw-r--r--lib/Image/ExifTool/BuildTagLookup.pm7
-rw-r--r--lib/Image/ExifTool/Nikon.pm7
-rw-r--r--lib/Image/ExifTool/QuickTime.pm18
-rw-r--r--lib/Image/ExifTool/Sony.pm4
-rw-r--r--lib/Image/ExifTool/TagLookup.pm4
-rw-r--r--lib/Image/ExifTool/TagNames.pod12
-rw-r--r--lib/Image/ExifTool/Writer.pl26
-rw-r--r--lib/Image/ExifTool/XMP2.pl4
10 files changed, 60 insertions, 28 deletions
diff --git a/lib/Image/ExifTool.pm b/lib/Image/ExifTool.pm
index 2ca1c20e..ed58334e 100644
--- a/lib/Image/ExifTool.pm
+++ b/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.12';
+$VERSION = '12.13';
$RELEASE = '';
@ISA = qw(Exporter);
%EXPORT_TAGS = (
diff --git a/lib/Image/ExifTool.pod b/lib/Image/ExifTool.pod
index 1b6cfa60..1e73b2f0 100644
--- a/lib/Image/ExifTool.pod
+++ b/lib/Image/ExifTool.pod
@@ -1902,7 +1902,9 @@ file or creating the link.
=item Notes:
-Will not overwrite existing files. New directories are created as necessary.
+Will not overwrite existing files. New directories are created as necessary.
+If the file is successfully renamed, the new file name may be accessed via
+C<$$exifTool{NewName}>.
=back
diff --git a/lib/Image/ExifTool/BuildTagLookup.pm b/lib/Image/ExifTool/BuildTagLookup.pm
index dc3fc597..f413e896 100644
--- a/lib/Image/ExifTool/BuildTagLookup.pm
+++ b/lib/Image/ExifTool/BuildTagLookup.pm
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
use Image::ExifTool::Validate;
use Image::ExifTool::MacOS;
-$VERSION = '3.39';
+$VERSION = '3.40';
@ISA = qw(Exporter);
sub NumbersFirst($$);
@@ -457,6 +457,11 @@ values. However, if the L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> API optio
assume these values are properly stored as UTC, and will convert them to
local time when extracting.
+When writing string-based date/time tags, the system time zone is added if
+the PrintConv option is enabled and no time zone is specified. This is
+because Apple software may display a crazy values if the time zone is
+missing for some tags.
+
See
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
for the official specification.
diff --git a/lib/Image/ExifTool/Nikon.pm b/lib/Image/ExifTool/Nikon.pm
index ebca331c..a97ef738 100644
--- a/lib/Image/ExifTool/Nikon.pm
+++ b/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.89';
+$VERSION = '3.90';
sub LensIDConv($$$);
sub ProcessNikonAVI($$$);
@@ -1401,8 +1401,9 @@ my %binaryDataAttrs = (
16 => 'Electronic',
# 33 => ? seen for 1J2
48 => 'Electronic Front Curtain',
- # 80 => ? seen for the Z6II
- # 81 => ? seen for Z50
+ 64 => 'Electronic (Movie)', #JanSkoda (Z6II)
+ 80 => 'Auto (Mechanical)', #JanSkoda (Z6II)
+ 81 => 'Auto (Electronic Front Curtain)', #JanSkoda (Z6II)
},
},
0x0035 => { #32
diff --git a/lib/Image/ExifTool/QuickTime.pm b/lib/Image/ExifTool/QuickTime.pm
index 4a1ef344..ac8d07cc 100644
--- a/lib/Image/ExifTool/QuickTime.pm
+++ b/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.55';
+$VERSION = '2.56';
sub ProcessMOV($$;$);
sub ProcessKeys($$$);
@@ -214,7 +214,7 @@ my %ftypLookup = (
'crx ' => 'Canon Raw (.CRX)', #PH (CR3 or CRM; use Canon CompressorVersion to decide)
);
-# information for time/date-based tags (time zero is Jan 1, 1904)
+# information for int32u date/time tags (time zero is Jan 1, 1904)
my %timeInfo = (
Notes => 'converted from UTC to local time if the QuickTimeUTC option is set',
Shift => 'Time',
@@ -682,7 +682,7 @@ my %eeBox = (
ValueConv => '$val=~tr/-/:/; $val',
ValueConvInv => '$val=~s/(\d+):(\d+):/$1-$2-/; $val',
PrintConv => '$self->ConvertDateTime($val)',
- PrintConvInv => '$self->InverseDateTime($val)',
+ PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
},
gps0 => { #PH (DuDuBell M1, VSYS M6L)
Name => 'GPSTrack',
@@ -1415,7 +1415,7 @@ my %eeBox = (
return $val;
},
PrintConv => '$self->ConvertDateTime($val)',
- PrintConvInv => '$self->InverseDateTime($val)',
+ PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
},
"\xa9ART" => 'Artist', #PH (iTunes 8.0.2)
"\xa9alb" => 'Album', #PH (iTunes 8.0.2)
@@ -1689,7 +1689,7 @@ my %eeBox = (
return $val;
},
PrintConv => '$self->ConvertDateTime($val)',
- PrintConvInv => '$self->InverseDateTime($val)',
+ PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
},
manu => { # (SX280)
Name => 'Make',
@@ -2124,7 +2124,7 @@ my %eeBox = (
return $val;
},
PrintConv => '$self->ConvertDateTime($val)',
- PrintConvInv => '$self->InverseDateTime($val)',
+ PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
},
'@xyz' => { #PH (iPhone 3GS)
Name => 'GPSCoordinates',
@@ -3022,7 +3022,7 @@ my %eeBox = (
return $val;
},
PrintConv => '$self->ConvertDateTime($val)',
- PrintConvInv => '$self->InverseDateTime($val)',
+ PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
},
"\xa9des" => 'Description', #4
"\xa9enc" => 'EncodedBy', #10
@@ -6200,7 +6200,7 @@ my %eeBox = (
return $val;
},
PrintConv => '$self->ConvertDateTime($val)',
- PrintConvInv => '$self->InverseDateTime($val)',
+ PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
},
description => { },
director => { },
@@ -6260,7 +6260,7 @@ my %eeBox = (
return $val;
},
PrintConv => '$self->ConvertDateTime($val)',
- PrintConvInv => '$self->InverseDateTime($val)',
+ PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
},
'direction.facing' => { Name => 'CameraDirection', Groups => { 2 => 'Location' } },
'direction.motion' => { Name => 'CameraMotion', Groups => { 2 => 'Location' } },
diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm
index 8f8945ca..6153f1a4 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.33';
+$VERSION = '3.34';
sub ProcessSRF($$$);
sub ProcessSR2($$$);
@@ -6064,6 +6064,7 @@ my %pictureProfile2010 = (
29 => 'Gamma ITU709 (800%)',
31 => 'Gamma S-Log3 (PP8 or PP9)', #14
33 => 'Gamma HLG2 (PP10)', #14
+ 34 => 'Gamma HLG3', #IB
},
);
my %isoSetting2010 = (
@@ -9507,6 +9508,7 @@ my %isoSetting2010 = (
Name => 'DistortionCorrParams',
Format => 'int16s[16]',
},
+ 0x0070 => { %pictureProfile2010 }, #IB
0x0071 => {
Name => 'FocalLength',
Format => 'int16u',
diff --git a/lib/Image/ExifTool/TagLookup.pm b/lib/Image/ExifTool/TagLookup.pm
index bbcb5525..e6b61c7c 100644
--- a/lib/Image/ExifTool/TagLookup.pm
+++ b/lib/Image/ExifTool/TagLookup.pm
@@ -3976,6 +3976,10 @@ my %tagLookup = (
'meteringtime' => { 267 => '22.2', 269 => '3.2', 272 => '17.1', 273 => '18.1', 276 => '7.3', 277 => '18.1', 278 => '3.2', 282 => '19.1' },
'micro1version' => { 369 => 0x1f },
'micro2version' => { 369 => 0x2d },
+ 'microvideo' => { 447 => 'MicroVideo' },
+ 'microvideooffset' => { 447 => 'MicroVideoOffset' },
+ 'microvideopresentationtimestampus' => { 447 => 'MicroVideoPresentationTimestampUs' },
+ 'microvideoversion' => { 447 => 'MicroVideoVersion' },
'midrangesharpness' => { 224 => 0x3b },
'mieversion' => { 161 => '0Vers' },
'mime' => { 449 => 'Mime' },
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index 31d75cb5..e60f059a 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/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 23716 tags, with 15419 unique tag names.
+They contain a total of 23721 tags, with 15423 unique tag names.
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -3129,6 +3129,10 @@ These tags belong to the ExifTool XMP-GCamera family 1 group.
BurstPrimary string
DisableAutoCreation string+
HDRPMakerNote string
+ MicroVideo integer
+ MicroVideoOffset integer
+ MicroVideoPresentationTimestampUs integer
+ MicroVideoVersion integer
PortraitNote string
PortraitRequest string
PortraitVersion string
@@ -18642,6 +18646,7 @@ Valid for the ILCE-7SM3.
75 LensType2 no
77 LensType no
79 DistortionCorrParams no
+ 112 PictureProfile no
113 FocalLength no
115 MinFocalLength no
117 MaxFocalLength no
@@ -25340,6 +25345,11 @@ values. However, if the QuickTimeUTC API option is set, then ExifTool will
assume these values are properly stored as UTC, and will convert them to
local time when extracting.
+When writing string-based date/time tags, the system time zone is added if
+the PrintConv option is enabled and no time zone is specified. This is
+because Apple software may display a crazy values if the time zone is
+missing for some tags.
+
See
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
for the official specification.
diff --git a/lib/Image/ExifTool/Writer.pl b/lib/Image/ExifTool/Writer.pl
index 816aa907..b2ed2a1e 100644
--- a/lib/Image/ExifTool/Writer.pl
+++ b/lib/Image/ExifTool/Writer.pl
@@ -1987,12 +1987,12 @@ sub SetFileName($$;$$$)
local (*EXIFTOOL_SFN_IN, *EXIFTOOL_SFN_OUT);
# renaming didn't work, so copy the file instead
unless ($self->Open(\*EXIFTOOL_SFN_IN, $file)) {
- $self->Warn("Error opening '${file}'");
+ $self->Error("Error opening '${file}'");
return -1;
}
unless ($self->Open(\*EXIFTOOL_SFN_OUT, $newName, '>')) {
close EXIFTOOL_SFN_IN;
- $self->Warn("Error creating '${newName}'");
+ $self->Error("Error creating '${newName}'");
return -1;
}
binmode EXIFTOOL_SFN_IN;
@@ -2005,7 +2005,7 @@ sub SetFileName($$;$$$)
close EXIFTOOL_SFN_IN;
if ($err) {
$self->Unlink($newName); # erase bad output file
- $self->Warn("Error writing '${newName}'");
+ $self->Error("Error writing '${newName}'");
return -1;
}
# preserve modification time
@@ -2133,20 +2133,24 @@ sub WriteInfo($$;$$)
}
if ($numNew == $numPseudo) {
$rtnVal = 2;
+ if ((defined $newFileName or defined $newDir) and not ref $infile) {
+ my $result = $self->SetFileName($infile);
+ if ($result > 0) {
+ $infile = $$self{NewName}; # file name changed
+ $rtnVal = 1;
+ } elsif ($result < 0) {
+ return 0; # don't try to do anything else
+ }
+ }
if (not ref $infile or UNIVERSAL::isa($infile,'GLOB')) {
$self->SetFileModifyDate($infile) > 0 and $rtnVal = 1 if $setModDate;
$self->SetFileModifyDate($infile, undef, 'FileCreateDate') > 0 and $rtnVal = 1 if $setCreateDate;
$self->SetSystemTags($infile) > 0 and $rtnVal = 1;
}
- if ((defined $newFileName or defined $newDir) and not ref $infile) {
- $self->SetFileName($infile) > 0 and $rtnVal = 1;
- }
if (defined $hardLink or defined $symLink or defined $testName) {
- my $src = $$self{NewName};
- $src = $infile unless defined $src;
- $hardLink and $self->SetFileName($src, $hardLink, 'HardLink') and $rtnVal = 1;
- $symLink and $self->SetFileName($src, $symLink, 'SymLink') and $rtnVal = 1;
- $testName and $self->SetFileName($src, $testName, 'Test') and $rtnVal = 1;
+ $hardLink and $self->SetFileName($infile, $hardLink, 'HardLink') and $rtnVal = 1;
+ $symLink and $self->SetFileName($infile, $symLink, 'SymLink') and $rtnVal = 1;
+ $testName and $self->SetFileName($infile, $testName, 'Test') and $rtnVal = 1;
}
return $rtnVal;
} elsif (defined $newFileName and length $newFileName) {
diff --git a/lib/Image/ExifTool/XMP2.pl b/lib/Image/ExifTool/XMP2.pl
index dbc52a31..97c8e24a 100644
--- a/lib/Image/ExifTool/XMP2.pl
+++ b/lib/Image/ExifTool/XMP2.pl
@@ -1839,6 +1839,10 @@ my %sSubVersion = (
ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)',
},
+ MicroVideo => { Writable => 'integer' },
+ MicroVideoVersion => { Writable => 'integer' },
+ MicroVideoOffset => { Writable => 'integer' },
+ MicroVideoPresentationTimestampUs => { Writable => 'integer' },
);
# Google creations namespace (ref PH)