exiftool_vendored 11.44.0 → 11.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +37 -0
- data/bin/MANIFEST +4 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -2
- data/bin/config_files/example.config +5 -0
- data/bin/config_files/mini0806.config +99 -0
- data/bin/exiftool +2 -2
- data/bin/lib/Image/ExifTool.pm +12 -7
- data/bin/lib/Image/ExifTool.pod +10 -2
- data/bin/lib/Image/ExifTool/Canon.pm +39 -5
- data/bin/lib/Image/ExifTool/CanonVRD.pm +24 -2
- data/bin/lib/Image/ExifTool/ID3.pm +2 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +3 -2
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +117 -69
- data/bin/lib/Image/ExifTool/README +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +3 -0
- data/bin/lib/Image/ExifTool/TagNames.pod +47 -15
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +434 -132
- data/bin/lib/Image/ExifTool/Writer.pl +35 -15
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 04eb85989f4a38928c79a180c772d512edf2b8c9
|
|
4
|
+
data.tar.gz: 9835759f399b1a7beecad1c210026b90126ed996
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 79945cb02e7f1a35e654fce3540c6f0039f191e447d9437ac1e783639adb0fb89488ab3d23e1a72e077b1b1b30af68e9c3113c09e5fbf4dc75cd0762c4576814
|
|
7
|
+
data.tar.gz: c1dca4b4c42f8d18c98d7069488a616f8e4a14cb7375317ae2880ba7dbbe2de9108c2de02d25ae7809a09f356dba5615d501de1938e4441cc4c88040861c54f0
|
data/bin/Changes
CHANGED
|
@@ -7,6 +7,43 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 11.30. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to CPAN.)
|
|
9
9
|
|
|
10
|
+
May 31, 2019 - Version 11.47
|
|
11
|
+
|
|
12
|
+
- Fixed problem which resulted in a warning for one of the CanonVRD tests on
|
|
13
|
+
some platforms
|
|
14
|
+
|
|
15
|
+
May 31, 2019 - Version 11.46 - "CR3 update"
|
|
16
|
+
|
|
17
|
+
- Added ability to write CanonVRD tags in CR3 images
|
|
18
|
+
- Decode a couple more tags from Canon CR3 images
|
|
19
|
+
- Enhanced Validate option to check for duplicate QuickTime atoms
|
|
20
|
+
- Relaxed contraints when writing IPTC date tags to allow use of separators
|
|
21
|
+
other than a colon
|
|
22
|
+
- Fixed CR3 writing to update CTBO table with any changed offsets or sizes
|
|
23
|
+
(although this table doesn't seem to be used by any RAW viewer, it may be
|
|
24
|
+
used in-camera to improve response time when browsing images)
|
|
25
|
+
|
|
26
|
+
May 29, 2019 - Version 11.45
|
|
27
|
+
|
|
28
|
+
- CORRUPTION WARNING: Patched problem where Canon DPP would destroy a CR3
|
|
29
|
+
image if the file had previously been edited by DPP then Exiftool
|
|
30
|
+
(If you have edited any CR3 images with ExifTool that had been previously
|
|
31
|
+
edited by DPP, then re-edit with ExifTool 11.45 or later to restructure the
|
|
32
|
+
file so DPP doesn't destroy it if used to edit the file later)
|
|
33
|
+
- Added ability to create and delete QuickTime Keys tags
|
|
34
|
+
- Added sample config file (mini0806.config) to generate GPS tags from
|
|
35
|
+
subtitle Text in Mini 0806 dashcam videos
|
|
36
|
+
- Added new Canon and Nikon lenses (thanks LibRaw)
|
|
37
|
+
- Added a new Olympus CameraType (thanks LibRaw)
|
|
38
|
+
- Decode CanonVRD tags from CR3 images
|
|
39
|
+
- Improved handling of QuickTime language tags when writing
|
|
40
|
+
- Fixed bug introduced in 11.38 which could cause "Use of uninitialized value"
|
|
41
|
+
runtime warning when reading XMP GPS tags
|
|
42
|
+
- Fixed bug where QuickTime tags could be written when another group was
|
|
43
|
+
specified
|
|
44
|
+
- API Changes:
|
|
45
|
+
- Added QuickTimeHandler option
|
|
46
|
+
|
|
10
47
|
May 21, 2019 - Version 11.44
|
|
11
48
|
|
|
12
49
|
- Added ability to extract XMP as a block from XMP files
|
data/bin/MANIFEST
CHANGED
|
@@ -22,6 +22,7 @@ config_files/dji.config
|
|
|
22
22
|
config_files/example.config
|
|
23
23
|
config_files/fotoware.config
|
|
24
24
|
config_files/gps2utm.config
|
|
25
|
+
config_files/mini0806.config
|
|
25
26
|
config_files/nksc.config
|
|
26
27
|
config_files/photoshop_paths.config
|
|
27
28
|
config_files/picasa_faces.config
|
|
@@ -444,6 +445,8 @@ t/CanonVRD_19.out
|
|
|
444
445
|
t/CanonVRD_2.out
|
|
445
446
|
t/CanonVRD_20.out
|
|
446
447
|
t/CanonVRD_21.out
|
|
448
|
+
t/CanonVRD_22.out
|
|
449
|
+
t/CanonVRD_24.out
|
|
447
450
|
t/CanonVRD_3.out
|
|
448
451
|
t/CanonVRD_4.out
|
|
449
452
|
t/CanonVRD_5.out
|
|
@@ -736,6 +739,7 @@ t/QuickTime.t
|
|
|
736
739
|
t/QuickTime_10.out
|
|
737
740
|
t/QuickTime_11.out
|
|
738
741
|
t/QuickTime_12.out
|
|
742
|
+
t/QuickTime_13.out
|
|
739
743
|
t/QuickTime_2.out
|
|
740
744
|
t/QuickTime_3.out
|
|
741
745
|
t/QuickTime_4.out
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
|
@@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a
|
|
|
104
104
|
terminal window to extract and run ExifTool:
|
|
105
105
|
|
|
106
106
|
cd ~/Desktop
|
|
107
|
-
gzip -dc Image-ExifTool-11.
|
|
108
|
-
cd Image-ExifTool-11.
|
|
107
|
+
gzip -dc Image-ExifTool-11.47.tar.gz | tar -xf -
|
|
108
|
+
cd Image-ExifTool-11.47
|
|
109
109
|
./exiftool t/images/ExifTool.jpg
|
|
110
110
|
|
|
111
111
|
Note: These commands extract meta information from one of the test images.
|
|
@@ -195,6 +195,7 @@ distribution package:
|
|
|
195
195
|
example.config - General example showing config features
|
|
196
196
|
fotoware.config - Definitions for writing Fotoware XMP tags
|
|
197
197
|
gps2utm.config - Generate UTM coordinate tags from GPS info
|
|
198
|
+
mini0806.config - Composite tags for GPS in Mini 0806 videos
|
|
198
199
|
nksc.config - Decode tags in Nikon ViewNX NKSC files
|
|
199
200
|
photoshop_paths.config - For extracting or copying Photoshop paths
|
|
200
201
|
picasa_faces.config - Convert from Picasa to MWG/MP face regions
|
|
@@ -344,6 +344,11 @@ use Image::ExifTool::MIE;
|
|
|
344
344
|
TTT => 'JPEG',
|
|
345
345
|
);
|
|
346
346
|
|
|
347
|
+
# Change default location for writing QuickTime tags so Keys is preferred
|
|
348
|
+
# (by default, the PREFERRED levels are: ItemList=2, UserData=1, Keys=0)
|
|
349
|
+
use Image::ExifTool::QuickTime;
|
|
350
|
+
$Image::ExifTool::QuickTime::Keys{PREFERRED} = 3;
|
|
351
|
+
|
|
347
352
|
# Specify default ExifTool option values
|
|
348
353
|
# (see the Options function documentation for available options)
|
|
349
354
|
%Image::ExifTool::UserDefined::Options = (
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
# File: mini0806.config
|
|
3
|
+
#
|
|
4
|
+
# Description: This config file defines Composite tags to convert embedded
|
|
5
|
+
# metadata in Mini 0806 dashcam videos
|
|
6
|
+
#
|
|
7
|
+
# Usage: exiftool -config mini0806.config -ee FILE
|
|
8
|
+
#
|
|
9
|
+
# Example command to create .gpx log file from Mini 0806 video
|
|
10
|
+
# (requires gpx.fmt available in the full Exiftool distribution):
|
|
11
|
+
#
|
|
12
|
+
# exiftool -config mini0806.config -p gpx.fmt -ee FILE
|
|
13
|
+
#
|
|
14
|
+
# Requires: ExifTool version 10.75 or later
|
|
15
|
+
#
|
|
16
|
+
# Revisions: 2019/05/28 - P. Harvey Created
|
|
17
|
+
#------------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
%Image::ExifTool::UserDefined = (
|
|
20
|
+
'Image::ExifTool::Composite' => {
|
|
21
|
+
GROUPS => { 2 => 'Location' },
|
|
22
|
+
#
|
|
23
|
+
# Example embedded "Text" from a Mini 0806 MOV video:
|
|
24
|
+
#
|
|
25
|
+
# "A,270519,201555.000,3356.8925,N,08420.2071,W,000.0,331.0M,+01.84,-09.80,-00.61;\n"
|
|
26
|
+
#
|
|
27
|
+
# Note: SubDoc flag is set for all these tags so they will be generated for
|
|
28
|
+
# all embedded documents
|
|
29
|
+
#
|
|
30
|
+
GPSDateTime => {
|
|
31
|
+
Description => 'GPS Date/Time',
|
|
32
|
+
Groups => { 2 => 'Time' },
|
|
33
|
+
SubDoc => 1,
|
|
34
|
+
Require => 'Text',
|
|
35
|
+
RawConv => q{
|
|
36
|
+
if ($val[0] =~ /^A,(\d{2})(\d{2})(\d{2}),(\d{2})(\d{2})(\d{2}(\.\d+)?)/) {
|
|
37
|
+
return "20$3:$2:$1 $4:$5:$6Z";
|
|
38
|
+
} else {
|
|
39
|
+
return undef;
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
|
43
|
+
},
|
|
44
|
+
GPSLatitude => {
|
|
45
|
+
SubDoc => 1,
|
|
46
|
+
Require => 'Text',
|
|
47
|
+
RawConv => q{
|
|
48
|
+
if ($val[0] =~ /^A,.*?,.*?,(\d{2})(\d+\.\d+),([NS])/) {
|
|
49
|
+
return ($1 + $2/60) * ($3 eq 'S' ? -1 : 1);
|
|
50
|
+
} else {
|
|
51
|
+
return undef;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
|
55
|
+
},
|
|
56
|
+
GPSLongitude => {
|
|
57
|
+
SubDoc => 1,
|
|
58
|
+
Require => 'Text',
|
|
59
|
+
RawConv => q{
|
|
60
|
+
if ($val[0] =~ /^A,.*?,.*?,.*?,.*?,(\d{3})(\d+\.\d+),([EW])/) {
|
|
61
|
+
return ($1 + $2/60) * ($3 eq 'W' ? -1 : 1);
|
|
62
|
+
} else {
|
|
63
|
+
return undef;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
|
67
|
+
},
|
|
68
|
+
GPSAltitude => {
|
|
69
|
+
SubDoc => 1,
|
|
70
|
+
Require => 'Text',
|
|
71
|
+
RawConv => q{
|
|
72
|
+
my @a = split ',', $val[0];
|
|
73
|
+
return undef unless $a[0] eq 'A' and $a[8] =~ s/M$//;
|
|
74
|
+
return $a[8];
|
|
75
|
+
},
|
|
76
|
+
PrintConv => '"$val m"',
|
|
77
|
+
},
|
|
78
|
+
GPSSpeed => {
|
|
79
|
+
SubDoc => 1,
|
|
80
|
+
Require => 'Text',
|
|
81
|
+
RawConv => q{
|
|
82
|
+
my @a = split ',', $val[0];
|
|
83
|
+
return undef unless $a[0] eq 'A' and $a[7] =~ /^\d+\.\d+$/;
|
|
84
|
+
return $a[7]; # (NC)
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
Accelerometer => {
|
|
88
|
+
SubDoc => 1,
|
|
89
|
+
Require => 'Text',
|
|
90
|
+
RawConv => q{
|
|
91
|
+
my @a = split ',', $val[0];
|
|
92
|
+
return undef unless $a[11] =~ s/;\s*$//;
|
|
93
|
+
return "$a[9] $a[10] $a[11]";
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
1; #end
|
data/bin/exiftool
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
use strict;
|
|
13
13
|
require 5.004;
|
|
14
14
|
|
|
15
|
-
my $version = '11.
|
|
15
|
+
my $version = '11.47';
|
|
16
16
|
|
|
17
17
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
18
18
|
my $exeDir;
|
|
@@ -5119,7 +5119,7 @@ with this command:
|
|
|
5119
5119
|
|
|
5120
5120
|
produces output like this:
|
|
5121
5121
|
|
|
5122
|
-
-- Generated by ExifTool 11.
|
|
5122
|
+
-- Generated by ExifTool 11.47 --
|
|
5123
5123
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5124
5124
|
(f/5.6, 1/60s, ISO 100)
|
|
5125
5125
|
File: b.jpg - 2006:05:23 11:57:38
|
data/bin/lib/Image/ExifTool.pm
CHANGED
|
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
|
28
28
|
%jpegMarker %specialTags %fileTypeLookup);
|
|
29
29
|
|
|
30
|
-
$VERSION = '11.
|
|
30
|
+
$VERSION = '11.47';
|
|
31
31
|
$RELEASE = '';
|
|
32
32
|
@ISA = qw(Exporter);
|
|
33
33
|
%EXPORT_TAGS = (
|
|
@@ -942,10 +942,12 @@ my %processType = map { $_ => 1 } qw(JPEG TIFF XMP AIFF EXE Font PS Real VCard);
|
|
|
942
942
|
maccroatian => 'MacCroatian', cp10082 => 'MacCroatian',
|
|
943
943
|
);
|
|
944
944
|
|
|
945
|
-
# default group priority for writing
|
|
945
|
+
# default family 0 group priority for writing
|
|
946
946
|
# (NOTE: tags in groups not specified here will not be written unless
|
|
947
947
|
# overridden by the module or specified when writing)
|
|
948
|
-
my @defaultWriteGroups = qw(
|
|
948
|
+
my @defaultWriteGroups = qw(
|
|
949
|
+
EXIF IPTC XMP MakerNotes QuickTime Photoshop ICC_Profile CanonVRD Adobe
|
|
950
|
+
);
|
|
949
951
|
|
|
950
952
|
# group hash for ExifTool-generated tags
|
|
951
953
|
my %allGroupsExifTool = ( 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'ExifTool' );
|
|
@@ -2144,6 +2146,7 @@ sub ClearOptions($)
|
|
|
2144
2146
|
Password => undef, # password for password-protected PDF documents
|
|
2145
2147
|
PNGEarlyXMP => undef, # write XMP in PNG images before IDAT chunk
|
|
2146
2148
|
PrintConv => 1, # flag to enable print conversion
|
|
2149
|
+
QuickTimeHandler => undef, # flag to add mdir Handler to newly created Meta box
|
|
2147
2150
|
QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
|
|
2148
2151
|
RequestAll => undef, # extract all tags that must be specifically requested
|
|
2149
2152
|
RequestTags => undef, # extra tags to request (on top of those in the tag list)
|
|
@@ -2961,6 +2964,7 @@ sub GetValue($$;$)
|
|
|
2961
2964
|
my $oldFilter = $$self{OPTIONS}{Filter};
|
|
2962
2965
|
delete $$self{OPTIONS}{Filter};
|
|
2963
2966
|
foreach (keys %$val) {
|
|
2967
|
+
next unless defined $$val{$_};
|
|
2964
2968
|
$raw[$_] = $$rawValue{$$val{$_}};
|
|
2965
2969
|
($val[$_], $prt[$_]) = $self->GetValue($$val{$_}, 'Both');
|
|
2966
2970
|
next if defined $val[$_] or not $$tagInfo{Require}{$_};
|
|
@@ -3289,13 +3293,14 @@ sub SetNewGroups($;@)
|
|
|
3289
3293
|
local $_;
|
|
3290
3294
|
my ($self, @groups) = @_;
|
|
3291
3295
|
@groups or @groups = @defaultWriteGroups;
|
|
3292
|
-
my $count = @groups;
|
|
3296
|
+
my $count = @groups * 10;
|
|
3293
3297
|
my %priority;
|
|
3294
3298
|
foreach (@groups) {
|
|
3295
|
-
$priority{lc($_)} = $count
|
|
3299
|
+
$priority{lc($_)} = $count;
|
|
3300
|
+
$count -= 10;
|
|
3296
3301
|
}
|
|
3297
|
-
$priority{file} =
|
|
3298
|
-
$priority{composite} =
|
|
3302
|
+
$priority{file} = 500; # 'File' group is always written (Comment)
|
|
3303
|
+
$priority{composite} = 500; # 'Composite' group is always written
|
|
3299
3304
|
# set write priority (higher # is higher priority)
|
|
3300
3305
|
$$self{WRITE_PRIORITY} = \%priority;
|
|
3301
3306
|
$$self{WRITE_GROUPS} = \@groups;
|
data/bin/lib/Image/ExifTool.pod
CHANGED
|
@@ -814,6 +814,13 @@ a warning to be issued if standard XMP is found after the IDAT chunk.
|
|
|
814
814
|
Flag to enable automatic print conversion. Also enables inverse
|
|
815
815
|
print conversion for writing. Default is 1.
|
|
816
816
|
|
|
817
|
+
=item QuickTimeHandler
|
|
818
|
+
|
|
819
|
+
Flag set to add an 'mdir' Handler to a newly created Meta box when adding
|
|
820
|
+
QuickTime ItemList tags. Adobe Bridge does not add this Handler, but it is
|
|
821
|
+
commonly found in samples from other software, so it is possible that this
|
|
822
|
+
could affect the interoperability of ItemList tags. Default is undef.
|
|
823
|
+
|
|
817
824
|
=item QuickTimeUTC
|
|
818
825
|
|
|
819
826
|
Flag set to assume that QuickTime date/time values are stored as UTC,
|
|
@@ -1860,8 +1867,9 @@ Set the order of the preferred groups when adding new information. In
|
|
|
1860
1867
|
subsequent calls to L</SetNewValue>, new information will be created in the
|
|
1861
1868
|
first valid group of this list. This has an impact only if the group is not
|
|
1862
1869
|
specified when calling L</SetNewValue> and if the tag name exists in more
|
|
1863
|
-
than one group. The default order is EXIF, IPTC
|
|
1864
|
-
|
|
1870
|
+
than one group. The default order is EXIF, IPTC, XMP, MakerNotes,
|
|
1871
|
+
QuickTime, Photoshop, ICC_Profile, CanonVRD, Adobe. Any family 0 group name
|
|
1872
|
+
may be used. Case is not significant.
|
|
1865
1873
|
|
|
1866
1874
|
$exifTool->SetNewGroups('XMP','EXIF','IPTC');
|
|
1867
1875
|
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
# 51) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4110.0.html
|
|
68
68
|
# 52) Kai Harrekilde-Petersen private communication
|
|
69
69
|
# 53) Anton Reiser private communication
|
|
70
|
+
# 54) https://github.com/lclevy/canon_cr3
|
|
70
71
|
# IB) Iliah Borg private communication (LibRaw)
|
|
71
72
|
# JD) Jens Duttke private communication
|
|
72
73
|
# JR) Jos Roost private communication
|
|
@@ -87,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
87
88
|
sub ProcessExifInfo($$$);
|
|
88
89
|
sub SwapWords($);
|
|
89
90
|
|
|
90
|
-
$VERSION = '4.
|
|
91
|
+
$VERSION = '4.14';
|
|
91
92
|
|
|
92
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
|
93
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
|
@@ -427,7 +428,8 @@ $VERSION = '4.12';
|
|
|
427
428
|
250 => 'Canon EF 24mm f/1.4L II USM or Sigma Lens', #41
|
|
428
429
|
250.1 => 'Sigma 20mm f/1.4 DG HSM | A', #IB
|
|
429
430
|
250.2 => 'Sigma 20mm f/1.5 FF High-Speed Prime | 017', #IB
|
|
430
|
-
|
|
431
|
+
250.3 => 'Tokina Opera 16-28mm f/2.8 FF', #IB
|
|
432
|
+
251 => 'Canon EF 70-200mm f/2.8L IS II USM', # (also version III, ref IB. May be distinguised by EXIF:LensModel "EF70-200mm f/2.8L IS III USM" -- add extra logic to LensID?)
|
|
431
433
|
252 => 'Canon EF 70-200mm f/2.8L IS II USM + 1.4x', #50 (1.4x Mk II)
|
|
432
434
|
253 => 'Canon EF 70-200mm f/2.8L IS II USM + 2x', #PH (NC)
|
|
433
435
|
# 253.1 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367
|
|
@@ -8396,7 +8398,7 @@ my %filterConv = (
|
|
|
8396
8398
|
},
|
|
8397
8399
|
},
|
|
8398
8400
|
# CTBO - (CR3 files) int32u entry count N, N x (int32u index, int64u offset, int64u size)
|
|
8399
|
-
# index 1=XMP, 2=PRVW, 3=mdat
|
|
8401
|
+
# index: 1=XMP, 2=PRVW, 3=mdat, 4=?, 5=?
|
|
8400
8402
|
CMT1 => { # (CR3 files)
|
|
8401
8403
|
Name => 'IFD0',
|
|
8402
8404
|
SubDirectory => {
|
|
@@ -8442,6 +8444,18 @@ my %filterConv = (
|
|
|
8442
8444
|
},
|
|
8443
8445
|
);
|
|
8444
8446
|
|
|
8447
|
+
# Canon top-level uuid atoms (ref PH, written by DPP4)
|
|
8448
|
+
%Image::ExifTool::Canon::uuid2 = (
|
|
8449
|
+
WRITE_PROC => 'Image::ExifTool::QuickTime::WriteQuickTime',
|
|
8450
|
+
CNOP => {
|
|
8451
|
+
Name => 'CanonVRD',
|
|
8452
|
+
SubDirectory => {
|
|
8453
|
+
TagTable => 'Image::ExifTool::CanonVRD::Main',
|
|
8454
|
+
WriteProc => 'Image::ExifTool::CanonVRD::WriteCanonDR4',
|
|
8455
|
+
},
|
|
8456
|
+
},
|
|
8457
|
+
);
|
|
8458
|
+
|
|
8445
8459
|
%Image::ExifTool::Canon::UnknownIFD = (
|
|
8446
8460
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8447
8461
|
);
|
|
@@ -8452,10 +8466,30 @@ my %filterConv = (
|
|
|
8452
8466
|
# CCDT - int32u[3]: 0. 0, 1. decoder type?, 2. 0, 3. index
|
|
8453
8467
|
);
|
|
8454
8468
|
|
|
8469
|
+
# 'CMP1' atom information (ref 54, CR3 files)
|
|
8470
|
+
%Image::ExifTool::Canon::CMP1 = (
|
|
8471
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
8472
|
+
GROUPS => { 0 => 'MakerNotes', 1 => 'Canon', 2 => 'Image' },
|
|
8473
|
+
FORMAT => 'int16u',
|
|
8474
|
+
FIRST_ENTRY => 0,
|
|
8475
|
+
PRIORITY => 0,
|
|
8476
|
+
8 => { Name => 'ImageWidth', Format => 'int32u' },
|
|
8477
|
+
10 => { Name => 'ImageHeight', Format => 'int32u' },
|
|
8478
|
+
# (the rest of the documented tags don't seem to produced good values with my samples - PH)
|
|
8479
|
+
);
|
|
8480
|
+
|
|
8455
8481
|
# 'CDI1' atom information (ref PH, CR3 files)
|
|
8456
8482
|
%Image::ExifTool::Canon::CDI1 = (
|
|
8457
|
-
GROUPS => { 0 => '
|
|
8458
|
-
|
|
8483
|
+
GROUPS => { 0 => 'MakerNotes', 1 => 'Canon', 2 => 'Image' },
|
|
8484
|
+
IAD1 => { Name => 'IAD1', SubDirectory => { TagTable => 'Image::ExifTool::Canon::IAD1' } },
|
|
8485
|
+
);
|
|
8486
|
+
|
|
8487
|
+
# 'IAD1' atom information (ref 54, CR3 files)
|
|
8488
|
+
%Image::ExifTool::Canon::IAD1 = (
|
|
8489
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
8490
|
+
GROUPS => { 0 => 'MakerNotes', 1 => 'Canon', 2 => 'Image' },
|
|
8491
|
+
FORMAT => 'int16u',
|
|
8492
|
+
FIRST_ENTRY => 0,
|
|
8459
8493
|
);
|
|
8460
8494
|
|
|
8461
8495
|
# Canon Timed MetaData (ref PH, CR3 files)
|
|
@@ -23,7 +23,7 @@ use vars qw($VERSION);
|
|
|
23
23
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
24
24
|
use Image::ExifTool::Canon;
|
|
25
25
|
|
|
26
|
-
$VERSION = '1.
|
|
26
|
+
$VERSION = '1.33';
|
|
27
27
|
|
|
28
28
|
sub ProcessCanonVRD($$;$);
|
|
29
29
|
sub WriteCanonVRD($$;$);
|
|
@@ -1954,6 +1954,28 @@ sub WriteCanonVRD($$;$)
|
|
|
1954
1954
|
return $val;
|
|
1955
1955
|
}
|
|
1956
1956
|
|
|
1957
|
+
#------------------------------------------------------------------------------
|
|
1958
|
+
# Write DR4-type CanonVRD edit record
|
|
1959
|
+
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|
|
1960
|
+
# Returns: VRD data block (may be empty if deleted, of undef on error)
|
|
1961
|
+
sub WriteCanonDR4($$;$)
|
|
1962
|
+
{
|
|
1963
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
|
1964
|
+
$et or return 1; # allow dummy access
|
|
1965
|
+
my $nvHash = $et->GetNewValueHash($Image::ExifTool::Extra{CanonDR4});
|
|
1966
|
+
my $val = $et->GetNewValue($nvHash);
|
|
1967
|
+
if (defined $val) {
|
|
1968
|
+
return undef unless $et->IsOverwriting($nvHash, $val);
|
|
1969
|
+
$et->VPrint(0, " Writing CanonDR4 as a block\n");
|
|
1970
|
+
++$$et{CHANGED};
|
|
1971
|
+
return WrapDR4($val);
|
|
1972
|
+
}
|
|
1973
|
+
my $buff = '';
|
|
1974
|
+
$$dirInfo{OutFile} = \$buff;
|
|
1975
|
+
return $buff if ProcessCanonVRD($et, $dirInfo, $tagTablePtr) > 0;
|
|
1976
|
+
return undef;
|
|
1977
|
+
}
|
|
1978
|
+
|
|
1957
1979
|
#------------------------------------------------------------------------------
|
|
1958
1980
|
# Read/write CanonVRD information (from VRD file or VRD trailer)
|
|
1959
1981
|
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
|
@@ -2015,7 +2037,7 @@ sub ProcessCanonVRD($$;$)
|
|
|
2015
2037
|
# (so we must disable all Write() calls for this case)
|
|
2016
2038
|
$dataPt = $outfile;
|
|
2017
2039
|
}
|
|
2018
|
-
if ($fromFile) {
|
|
2040
|
+
if ($fromFile or $$dirInfo{DirStart}) {
|
|
2019
2041
|
$dataPt = \$buff unless $dataPt;
|
|
2020
2042
|
# read VRD data into memory if necessary
|
|
2021
2043
|
unless ($raf->Read($$dataPt, $dirLen) == $dirLen) {
|