exiftool_vendored 11.44.0 → 11.47.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- 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) {
|