Skip to content

Commit

Permalink
v11.47
Browse files Browse the repository at this point in the history
  • Loading branch information
mceachen committed Jun 1, 2019
1 parent 45ccb4b commit 688dc7c
Show file tree
Hide file tree
Showing 28 changed files with 916 additions and 274 deletions.
47 changes: 46 additions & 1 deletion bin/Changes
Expand Up @@ -7,6 +7,51 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
Note: The most recent production release is Version 11.30. (Other versions are
considered development releases, and are not uploaded to CPAN.)

May 31, 2019 - Version 11.47

- Fixed problem which resulted in a warning for one of the CanonVRD tests on
some platforms

May 31, 2019 - Version 11.46 - "CR3 update"

- Added ability to write CanonVRD tags in CR3 images
- Decode a couple more tags from Canon CR3 images
- Enhanced Validate option to check for duplicate QuickTime atoms
- Relaxed contraints when writing IPTC date tags to allow use of separators
other than a colon
- Fixed CR3 writing to update CTBO table with any changed offsets or sizes
(although this table doesn't seem to be used by any RAW viewer, it may be
used in-camera to improve response time when browsing images)

May 29, 2019 - Version 11.45

- CORRUPTION WARNING: Patched problem where Canon DPP would destroy a CR3
image if the file had previously been edited by DPP then Exiftool
(If you have edited any CR3 images with ExifTool that had been previously
edited by DPP, then re-edit with ExifTool 11.45 or later to restructure the
file so DPP doesn't destroy it if used to edit the file later)
- Added ability to create and delete QuickTime Keys tags
- Added sample config file (mini0806.config) to generate GPS tags from
subtitle Text in Mini 0806 dashcam videos
- Added new Canon and Nikon lenses (thanks LibRaw)
- Added a new Olympus CameraType (thanks LibRaw)
- Decode CanonVRD tags from CR3 images
- Improved handling of QuickTime language tags when writing
- Fixed bug introduced in 11.38 which could cause "Use of uninitialized value"
runtime warning when reading XMP GPS tags
- Fixed bug where QuickTime tags could be written when another group was
specified
- API Changes:
- Added QuickTimeHandler option

May 21, 2019 - Version 11.44

- Added ability to extract XMP as a block from XMP files
- Prevent ExifIFD from being deleted from any RAW file type
- Fixed problem where some Canon tags couldn't be written in CR3 files
- Fixed problem reading QuickTime Keys tags with a space in the tag ID
- Fixed incorrect family 1 group when reading some QuickTime Keys tags

May 17, 2019 - Version 11.43 - "Write HEIC and CR3"

- Added ability to write/create EXIF and write ICC_Profile in HEIC images
Expand All @@ -21,7 +66,7 @@ May 17, 2019 - Version 11.43 - "Write HEIC and CR3"
- Fixed writing of XMP in HEIC files to conform with the HEIC specification
(obviously, Apple couldn't put this XMP in the same place as any other
QuickTime-based file format, because Apple is, after all, king of "Let's
re-invent the wheel!")
reinvent the wheel!")
- Fixed problem where API WriteMode option wouldn't always prevent groups from
being created when group creation was disabled

Expand Down
4 changes: 4 additions & 0 deletions bin/MANIFEST
Expand Up @@ -22,6 +22,7 @@ config_files/dji.config
config_files/example.config
config_files/fotoware.config
config_files/gps2utm.config
config_files/mini0806.config
config_files/nksc.config
config_files/photoshop_paths.config
config_files/picasa_faces.config
Expand Down Expand Up @@ -444,6 +445,8 @@ t/CanonVRD_19.out
t/CanonVRD_2.out
t/CanonVRD_20.out
t/CanonVRD_21.out
t/CanonVRD_22.out
t/CanonVRD_24.out
t/CanonVRD_3.out
t/CanonVRD_4.out
t/CanonVRD_5.out
Expand Down Expand Up @@ -736,6 +739,7 @@ t/QuickTime.t
t/QuickTime_10.out
t/QuickTime_11.out
t/QuickTime_12.out
t/QuickTime_13.out
t/QuickTime_2.out
t/QuickTime_3.out
t/QuickTime_4.out
Expand Down
2 changes: 1 addition & 1 deletion bin/META.json
Expand Up @@ -47,5 +47,5 @@
}
},
"release_status" : "stable",
"version" : "11.43"
"version" : "11.47"
}
2 changes: 1 addition & 1 deletion bin/META.yml
Expand Up @@ -28,4 +28,4 @@ recommends:
Time::HiRes: 0
requires:
perl: 5.004
version: 11.43
version: 11.47
5 changes: 3 additions & 2 deletions bin/README
Expand Up @@ -104,8 +104,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-11.43.tar.gz | tar -xf -
cd Image-ExifTool-11.43
gzip -dc Image-ExifTool-11.47.tar.gz | tar -xf -
cd Image-ExifTool-11.47
./exiftool t/images/ExifTool.jpg

Note: These commands extract meta information from one of the test images.
Expand Down Expand Up @@ -195,6 +195,7 @@ distribution package:
example.config - General example showing config features
fotoware.config - Definitions for writing Fotoware XMP tags
gps2utm.config - Generate UTM coordinate tags from GPS info
mini0806.config - Composite tags for GPS in Mini 0806 videos
nksc.config - Decode tags in Nikon ViewNX NKSC files
photoshop_paths.config - For extracting or copying Photoshop paths
picasa_faces.config - Convert from Picasa to MWG/MP face regions
Expand Down
5 changes: 5 additions & 0 deletions bin/config_files/example.config
Expand Up @@ -344,6 +344,11 @@ use Image::ExifTool::MIE;
TTT => 'JPEG',
);

# Change default location for writing QuickTime tags so Keys is preferred
# (by default, the PREFERRED levels are: ItemList=2, UserData=1, Keys=0)
use Image::ExifTool::QuickTime;
$Image::ExifTool::QuickTime::Keys{PREFERRED} = 3;

# Specify default ExifTool option values
# (see the Options function documentation for available options)
%Image::ExifTool::UserDefined::Options = (
Expand Down
99 changes: 99 additions & 0 deletions bin/config_files/mini0806.config
@@ -0,0 +1,99 @@
#------------------------------------------------------------------------------
# File: mini0806.config
#
# Description: This config file defines Composite tags to convert embedded
# metadata in Mini 0806 dashcam videos
#
# Usage: exiftool -config mini0806.config -ee FILE
#
# Example command to create .gpx log file from Mini 0806 video
# (requires gpx.fmt available in the full Exiftool distribution):
#
# exiftool -config mini0806.config -p gpx.fmt -ee FILE
#
# Requires: ExifTool version 10.75 or later
#
# Revisions: 2019/05/28 - P. Harvey Created
#------------------------------------------------------------------------------

%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
GROUPS => { 2 => 'Location' },
#
# Example embedded "Text" from a Mini 0806 MOV video:
#
# "A,270519,201555.000,3356.8925,N,08420.2071,W,000.0,331.0M,+01.84,-09.80,-00.61;\n"
#
# Note: SubDoc flag is set for all these tags so they will be generated for
# all embedded documents
#
GPSDateTime => {
Description => 'GPS Date/Time',
Groups => { 2 => 'Time' },
SubDoc => 1,
Require => 'Text',
RawConv => q{
if ($val[0] =~ /^A,(\d{2})(\d{2})(\d{2}),(\d{2})(\d{2})(\d{2}(\.\d+)?)/) {
return "20$3:$2:$1 $4:$5:$6Z";
} else {
return undef;
}
},
PrintConv => '$self->ConvertDateTime($val)',
},
GPSLatitude => {
SubDoc => 1,
Require => 'Text',
RawConv => q{
if ($val[0] =~ /^A,.*?,.*?,(\d{2})(\d+\.\d+),([NS])/) {
return ($1 + $2/60) * ($3 eq 'S' ? -1 : 1);
} else {
return undef;
}
},
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
},
GPSLongitude => {
SubDoc => 1,
Require => 'Text',
RawConv => q{
if ($val[0] =~ /^A,.*?,.*?,.*?,.*?,(\d{3})(\d+\.\d+),([EW])/) {
return ($1 + $2/60) * ($3 eq 'W' ? -1 : 1);
} else {
return undef;
}
},
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
},
GPSAltitude => {
SubDoc => 1,
Require => 'Text',
RawConv => q{
my @a = split ',', $val[0];
return undef unless $a[0] eq 'A' and $a[8] =~ s/M$//;
return $a[8];
},
PrintConv => '"$val m"',
},
GPSSpeed => {
SubDoc => 1,
Require => 'Text',
RawConv => q{
my @a = split ',', $val[0];
return undef unless $a[0] eq 'A' and $a[7] =~ /^\d+\.\d+$/;
return $a[7]; # (NC)
},
},
Accelerometer => {
SubDoc => 1,
Require => 'Text',
RawConv => q{
my @a = split ',', $val[0];
return undef unless $a[11] =~ s/;\s*$//;
return "$a[9] $a[10] $a[11]";
},
},
},
);

1; #end
4 changes: 2 additions & 2 deletions bin/exiftool
Expand Up @@ -12,7 +12,7 @@
use strict;
require 5.004;

my $version = '11.43';
my $version = '11.47';

# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
my $exeDir;
Expand Down Expand Up @@ -5119,7 +5119,7 @@ with this command:
produces output like this:
-- Generated by ExifTool 11.43 --
-- Generated by ExifTool 11.47 --
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
21 changes: 14 additions & 7 deletions bin/lib/Image/ExifTool.pm
Expand Up @@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
%jpegMarker %specialTags %fileTypeLookup);

$VERSION = '11.43';
$VERSION = '11.47';
$RELEASE = '';
@ISA = qw(Exporter);
%EXPORT_TAGS = (
Expand Down Expand Up @@ -942,10 +942,12 @@ my %processType = map { $_ => 1 } qw(JPEG TIFF XMP AIFF EXE Font PS Real VCard);
maccroatian => 'MacCroatian', cp10082 => 'MacCroatian',
);

# default group priority for writing
# default family 0 group priority for writing
# (NOTE: tags in groups not specified here will not be written unless
# overridden by the module or specified when writing)
my @defaultWriteGroups = qw(EXIF IPTC XMP MakerNotes Photoshop ICC_Profile CanonVRD Adobe);
my @defaultWriteGroups = qw(
EXIF IPTC XMP MakerNotes QuickTime Photoshop ICC_Profile CanonVRD Adobe
);

# group hash for ExifTool-generated tags
my %allGroupsExifTool = ( 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'ExifTool' );
Expand Down Expand Up @@ -2144,6 +2146,7 @@ sub ClearOptions($)
Password => undef, # password for password-protected PDF documents
PNGEarlyXMP => undef, # write XMP in PNG images before IDAT chunk
PrintConv => 1, # flag to enable print conversion
QuickTimeHandler => undef, # flag to add mdir Handler to newly created Meta box
QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
RequestAll => undef, # extract all tags that must be specifically requested
RequestTags => undef, # extra tags to request (on top of those in the tag list)
Expand Down Expand Up @@ -2961,6 +2964,7 @@ sub GetValue($$;$)
my $oldFilter = $$self{OPTIONS}{Filter};
delete $$self{OPTIONS}{Filter};
foreach (keys %$val) {
next unless defined $$val{$_};
$raw[$_] = $$rawValue{$$val{$_}};
($val[$_], $prt[$_]) = $self->GetValue($$val{$_}, 'Both');
next if defined $val[$_] or not $$tagInfo{Require}{$_};
Expand Down Expand Up @@ -3289,13 +3293,14 @@ sub SetNewGroups($;@)
local $_;
my ($self, @groups) = @_;
@groups or @groups = @defaultWriteGroups;
my $count = @groups;
my $count = @groups * 10;
my %priority;
foreach (@groups) {
$priority{lc($_)} = $count--;
$priority{lc($_)} = $count;
$count -= 10;
}
$priority{file} = 10; # 'File' group is always written (Comment)
$priority{composite} = 10; # 'Composite' group is always written
$priority{file} = 500; # 'File' group is always written (Comment)
$priority{composite} = 500; # 'Composite' group is always written
# set write priority (higher # is higher priority)
$$self{WRITE_PRIORITY} = \%priority;
$$self{WRITE_GROUPS} = \@groups;
Expand Down Expand Up @@ -6907,6 +6912,8 @@ sub DoProcessTIFF($$;$)
my $ifdName = ($$dirInfo{DirName} and $$dirInfo{DirName} =~ /^(ExifIFD|GPS)$/) ? $1 : 'IFD0';
if (not $tagTablePtr or $$tagTablePtr{GROUPS}{0} eq 'EXIF') {
$self->FoundTag('ExifByteOrder', $byteOrder) unless $outfile;
} elsif ($$tagTablePtr{GROUPS}{0} eq 'MakerNotes') { # (for writing CR3 maker notes)
$ifdName = $$tagTablePtr{GROUPS}{0};
} else {
$ifdName = $$tagTablePtr{GROUPS}{1};
}
Expand Down
12 changes: 10 additions & 2 deletions bin/lib/Image/ExifTool.pod
Expand Up @@ -814,6 +814,13 @@ a warning to be issued if standard XMP is found after the IDAT chunk.
Flag to enable automatic print conversion. Also enables inverse
print conversion for writing. Default is 1.

=item QuickTimeHandler

Flag set to add an 'mdir' Handler to a newly created Meta box when adding
QuickTime ItemList tags. Adobe Bridge does not add this Handler, but it is
commonly found in samples from other software, so it is possible that this
could affect the interoperability of ItemList tags. Default is undef.

=item QuickTimeUTC

Flag set to assume that QuickTime date/time values are stored as UTC,
Expand Down Expand Up @@ -1860,8 +1867,9 @@ Set the order of the preferred groups when adding new information. In
subsequent calls to L</SetNewValue>, new information will be created in the
first valid group of this list. This has an impact only if the group is not
specified when calling L</SetNewValue> and if the tag name exists in more
than one group. The default order is EXIF, IPTC then XMP. Any family 0
group name may be used. Case is not significant.
than one group. The default order is EXIF, IPTC, XMP, MakerNotes,
QuickTime, Photoshop, ICC_Profile, CanonVRD, Adobe. Any family 0 group name
may be used. Case is not significant.

$exifTool->SetNewGroups('XMP','EXIF','IPTC');

Expand Down

0 comments on commit 688dc7c

Please sign in to comment.