diff options
author | exiftool <exiftool@users.sourceforge.net> | 2020-12-24 13:23:09 -0500 |
---|---|---|
committer | exiftool <exiftool@users.sourceforge.net> | 2020-12-24 13:23:09 -0500 |
commit | 263cdd585e0ca7766a4abe0c2e943834d1526832 (patch) | |
tree | e988fabe7061f0cf540a4d6cc3788dbc213ab6fe /lib | |
parent | fc6a8b55fc90528376cc85d1653bf21fe1011d22 (diff) |
Update to 12.13
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Image/ExifTool.pm | 2 | ||||
-rw-r--r-- | lib/Image/ExifTool.pod | 4 | ||||
-rw-r--r-- | lib/Image/ExifTool/BuildTagLookup.pm | 7 | ||||
-rw-r--r-- | lib/Image/ExifTool/Nikon.pm | 7 | ||||
-rw-r--r-- | lib/Image/ExifTool/QuickTime.pm | 18 | ||||
-rw-r--r-- | lib/Image/ExifTool/Sony.pm | 4 | ||||
-rw-r--r-- | lib/Image/ExifTool/TagLookup.pm | 4 | ||||
-rw-r--r-- | lib/Image/ExifTool/TagNames.pod | 12 | ||||
-rw-r--r-- | lib/Image/ExifTool/Writer.pl | 26 | ||||
-rw-r--r-- | lib/Image/ExifTool/XMP2.pl | 4 |
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) |