exiftool_vendored 11.98.0 → 12.10.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 +198 -2
- data/bin/MANIFEST +8 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +43 -42
- data/bin/exiftool +102 -75
- data/bin/lib/Image/ExifTool.pm +163 -111
- data/bin/lib/Image/ExifTool.pod +127 -93
- data/bin/lib/Image/ExifTool/AIFF.pm +2 -2
- data/bin/lib/Image/ExifTool/APE.pm +2 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +21 -10
- data/bin/lib/Image/ExifTool/Canon.pm +202 -14
- data/bin/lib/Image/ExifTool/CanonCustom.pm +82 -16
- data/bin/lib/Image/ExifTool/DPX.pm +56 -2
- data/bin/lib/Image/ExifTool/DarwinCore.pm +22 -3
- data/bin/lib/Image/ExifTool/EXE.pm +8 -5
- data/bin/lib/Image/ExifTool/Exif.pm +15 -6
- data/bin/lib/Image/ExifTool/Font.pm +9 -2
- data/bin/lib/Image/ExifTool/GIF.pm +6 -1
- data/bin/lib/Image/ExifTool/GeoTiff.pm +2 -0
- data/bin/lib/Image/ExifTool/Geotag.pm +2 -2
- data/bin/lib/Image/ExifTool/GoPro.pm +48 -22
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +91 -12
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -0
- data/bin/lib/Image/ExifTool/JSON.pm +27 -4
- data/bin/lib/Image/ExifTool/Lang/de.pm +3 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +19 -19
- data/bin/lib/Image/ExifTool/MacOS.pm +154 -38
- data/bin/lib/Image/ExifTool/Matroska.pm +3 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +7 -2
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +11 -10
- data/bin/lib/Image/ExifTool/Nikon.pm +164 -20
- data/bin/lib/Image/ExifTool/Olympus.pm +39 -17
- data/bin/lib/Image/ExifTool/PNG.pm +14 -3
- data/bin/lib/Image/ExifTool/PPM.pm +5 -5
- data/bin/lib/Image/ExifTool/Panasonic.pm +148 -14
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +34 -0
- data/bin/lib/Image/ExifTool/Parrot.pm +2 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +3 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +289 -37
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +419 -60
- data/bin/lib/Image/ExifTool/README +26 -22
- data/bin/lib/Image/ExifTool/RSRC.pm +17 -11
- data/bin/lib/Image/ExifTool/RTF.pm +12 -7
- data/bin/lib/Image/ExifTool/Radiance.pm +7 -2
- data/bin/lib/Image/ExifTool/Ricoh.pm +19 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -0
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +40 -33
- data/bin/lib/Image/ExifTool/Sony.pm +426 -40
- data/bin/lib/Image/ExifTool/TagLookup.pm +5799 -5671
- data/bin/lib/Image/ExifTool/TagNames.pod +584 -97
- data/bin/lib/Image/ExifTool/Validate.pm +4 -4
- data/bin/lib/Image/ExifTool/WriteExif.pl +3 -2
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +26 -18
- data/bin/lib/Image/ExifTool/Writer.pl +47 -24
- data/bin/lib/Image/ExifTool/XMP.pm +99 -17
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -0
- data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +123 -0
- data/bin/perl-Image-ExifTool.spec +42 -41
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +8 -7
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -65,46 +65,47 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
65
65
|
|
66
66
|
File Types
|
67
67
|
------------+-------------+-------------+-------------+------------
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
68
|
+
360 r/w | DPX r | ITC r | ODP r | RIFF r
|
69
|
+
3FR r | DR4 r/w/c | J2C r | ODS r | RSRC r
|
70
|
+
3G2 r/w | DSS r | JNG r/w | ODT r | RTF r
|
71
|
+
3GP r/w | DV r | JP2 r/w | OFR r | RW2 r/w
|
72
|
+
A r | DVB r/w | JPEG r/w | OGG r | RWL r/w
|
73
|
+
AA r | DVR-MS r | JSON r | OGV r | RWZ r
|
74
|
+
AAE r | DYLIB r | K25 r | ONP r | RM r
|
75
|
+
AAX r/w | EIP r | KDC r | OPUS r | SEQ r
|
76
|
+
ACR r | EPS r/w | KEY r | ORF r/w | SKETCH r
|
77
|
+
AFM r | EPUB r | LA r | OTF r | SO r
|
78
|
+
AI r/w | ERF r/w | LFP r | PAC r | SR2 r/w
|
79
|
+
AIFF r | EXE r | LNK r | PAGES r | SRF r
|
80
|
+
APE r | EXIF r/w/c | LRV r/w | PBM r/w | SRW r/w
|
81
|
+
ARQ r/w | EXR r | M2TS r | PCD r | SVG r
|
82
|
+
ARW r/w | EXV r/w/c | M4A/V r/w | PCX r | SWF r
|
83
|
+
ASF r | F4A/V r/w | MACOS r | PDB r | THM r/w
|
84
|
+
AVI r | FFF r/w | MAX r | PDF r/w | TIFF r/w
|
85
|
+
AVIF r/w | FITS r | MEF r/w | PEF r/w | TORRENT r
|
86
|
+
AZW r | FLA r | MIE r/w/c | PFA r | TTC r
|
87
|
+
BMP r | FLAC r | MIFF r | PFB r | TTF r
|
88
|
+
BPG r | FLIF r/w | MKA r | PFM r | TXT r
|
89
|
+
BTF r | FLV r | MKS r | PGF r | VCF r
|
90
|
+
CHM r | FPF r | MKV r | PGM r/w | VRD r/w/c
|
91
|
+
COS r | FPX r | MNG r/w | PLIST r | VSD r
|
92
|
+
CR2 r/w | GIF r/w | MOBI r | PICT r | WAV r
|
93
|
+
CR3 r/w | GPR r/w | MODD r | PMP r | WDP r/w
|
94
|
+
CRM r/w | GZ r | MOI r | PNG r/w | WEBP r
|
95
|
+
CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBM r
|
96
|
+
CS1 r/w | HDR r | MOV r/w | PPT r | WMA r
|
97
|
+
CSV r | HEIC r/w | MP3 r | PPTX r | WMV r
|
98
|
+
CZI r | HEIF r/w | MP4 r/w | PS r/w | WTV r
|
99
|
+
DCM r | HTML r | MPC r | PSB r/w | WV r
|
100
|
+
DCP r/w | ICC r/w/c | MPG r | PSD r/w | X3F r/w
|
101
|
+
DCR r | ICS r | MPO r/w | PSP r | XCF r
|
102
|
+
DFONT r | IDML r | MQV r/w | QTIF r/w | XLS r
|
103
|
+
DIVX r | IIQ r/w | MRW r/w | R3D r | XLSX r
|
104
|
+
DJVU r | IND r/w | MXF r | RA r | XMP r/w/c
|
105
|
+
DLL r | INSP r/w | NEF r/w | RAF r/w | ZIP r
|
106
|
+
DNG r/w | INSV r | NRW r/w | RAM r |
|
107
|
+
DOC r | INX r | NUMBERS r | RAR r |
|
108
|
+
DOCX r | ISO r | O r | RAW r/w |
|
108
109
|
|
109
110
|
Meta Information
|
110
111
|
----------------------+----------------------+---------------------
|
@@ -306,7 +307,7 @@ L</Options> settings.
|
|
306
307
|
|
307
308
|
=item Return Values:
|
308
309
|
|
309
|
-
L</ImageInfo> returns a reference to a hash of tag
|
310
|
+
L</ImageInfo> returns a reference to a hash of tag-key/value pairs. The tag
|
310
311
|
keys are identifiers -- essentially case-sensitive tag names with an
|
311
312
|
appended instance number if multiple tags with the same name were extracted
|
312
313
|
from the image. Many of the ExifTool functions require a tag key as an
|
@@ -662,7 +663,7 @@ option is disabled.
|
|
662
663
|
Perl expression used to filter PrintConv values when writing. The
|
663
664
|
expression acts on the value of the Perl default variable ($_), and changes
|
664
665
|
the value of this variable as required. The current ExifTool object may be
|
665
|
-
accessed through $self. The
|
666
|
+
accessed through $self. The tag is not written if $_ is set to undef.
|
666
667
|
|
667
668
|
=item FixBase
|
668
669
|
|
@@ -731,6 +732,11 @@ to be excluded by preceding group name with a '-'. See L</GetGroup> for a
|
|
731
732
|
description of group families, and L</GetAllGroups [static]> for lists of
|
732
733
|
group names.
|
733
734
|
|
735
|
+
=item HexTagIDs
|
736
|
+
|
737
|
+
Use hexadecimal instead of decimal for the family 7 group names of tags with
|
738
|
+
numerical ID's.
|
739
|
+
|
734
740
|
=item HtmlDump
|
735
741
|
|
736
742
|
Dump information in hex to dynamic HTML web page. The value may be 0-3 for
|
@@ -809,6 +815,11 @@ formatting expression returns undef). If not set, a minor error is issued
|
|
809
815
|
for missing values, or the value is set to '' if L</IgnoreMinorErrors> is
|
810
816
|
set. Default is undef.
|
811
817
|
|
818
|
+
=item NoMultiExif
|
819
|
+
|
820
|
+
Raise error when attempting to write multi-segment EXIF in a JPEG image.
|
821
|
+
Default is undef.
|
822
|
+
|
812
823
|
=item NoPDFList
|
813
824
|
|
814
825
|
Flag to avoid splitting PDF list-type tag values into separate items.
|
@@ -839,9 +850,10 @@ causing conversion to local time when they are extracted and from local time
|
|
839
850
|
when written. According to the QuickTime specification date/time values
|
840
851
|
should be UTC, but many digital cameras store local time instead (presumably
|
841
852
|
because they don't know the time zone), so the default is to not convert
|
842
|
-
these times
|
843
|
-
|
844
|
-
1904 as per the
|
853
|
+
these times (except for Canon CR3 files, which always use UTC times). This
|
854
|
+
option also disables the autodetection of incorrect time-zero offsets in
|
855
|
+
QuickTime date/time values, and enforces a time zero of 1904 as per the
|
856
|
+
QuickTime specification.
|
845
857
|
|
846
858
|
=item RequestAll
|
847
859
|
|
@@ -1128,11 +1140,17 @@ created in the destination file as required to store the specified
|
|
1128
1140
|
information. May be called repeatedly to write the same information to
|
1129
1141
|
additional files without the need to call L</SetNewValue> again.
|
1130
1142
|
|
1131
|
-
|
1143
|
+
ExifTool queues all new values that are assigned via calls to
|
1144
|
+
L</SetNewValue>, then applies them to any number of files through one or
|
1145
|
+
more calls to L</WriteInfo>. These queued values may be accessed through
|
1146
|
+
L</GetNewValue>, and are completely separate from metadata extracted from
|
1147
|
+
files via L</ExtractInfo> or L</ImageInfo> and accessed through L</GetInfo>
|
1148
|
+
or L</GetValue>.
|
1149
|
+
|
1150
|
+
To be clear, it is NOT necessary to call L</ExtractInfo> or L</ImageInfo>
|
1132
1151
|
before L</WriteInfo>. L</WriteInfo> changes only metadata specified by
|
1133
1152
|
previous calls to L</SetNewValue>.
|
1134
1153
|
|
1135
|
-
|
1136
1154
|
# add information to a source file, writing output to new file
|
1137
1155
|
$exifTool->WriteInfo($srcfile, $dstfile);
|
1138
1156
|
|
@@ -1601,7 +1619,8 @@ values in list context.
|
|
1601
1619
|
|
1602
1620
|
0) ExifTool object reference
|
1603
1621
|
|
1604
|
-
1) Tag name (case sensitive, may be prefixed by family 0 or
|
1622
|
+
1) Tag name (case sensitive, may be prefixed by family 0, 1 or 7 group
|
1623
|
+
names, separated by colons)
|
1605
1624
|
|
1606
1625
|
=item Return Values:
|
1607
1626
|
|
@@ -1663,34 +1682,35 @@ in a specified file.
|
|
1663
1682
|
|
1664
1683
|
2-N) [optional] List of tag names to set or options hash references. All
|
1665
1684
|
writable tags are set if none are specified. The tag names are not case
|
1666
|
-
sensitive, and may be prefixed by one or more family 0, 1 or
|
1667
|
-
with optional leading family numbers, separated by colons (eg.
|
1668
|
-
A leading '-' indicates tags to be excluded (eg. '-comment'),
|
1669
|
-
'#' causes the ValueConv value to be copied (same as setting
|
1670
|
-
to 'ValueConv' for this tag only). Wildcards ('*' and '?')
|
1671
|
-
the tag name. A tag name of '*' is commonly used when a
|
1672
|
-
to copy all tags in the group (eg. 'XMP:*'). A special
|
1673
|
-
names of the form 'DSTTAGE<lt>SRCTAG' (or
|
1674
|
-
specified to copy information to a tag with a
|
1675
|
-
group. Both 'SRCTAG' and 'DSTTAG' may contain
|
1676
|
-
by a group name (eg.
|
1677
|
-
and/or suffixed by a '#'
|
1678
|
-
|
1679
|
-
'DSTTAG+E<lt>SRCTAG' or
|
1680
|
-
|
1681
|
-
|
1682
|
-
|
1683
|
-
Braces '{}' may be used
|
1684
|
-
|
1685
|
-
|
1686
|
-
The tag value may be modified
|
1687
|
-
|
1688
|
-
following the tag name (see the last
|
1689
|
-
after the tag name (before the
|
1690
|
-
|
1691
|
-
|
1692
|
-
references may be passed to set
|
1693
|
-
Options apply to subsequent tags in
|
1685
|
+
sensitive, and may be prefixed by one or more family 0, 1, 2 or 7 group
|
1686
|
+
names with optional leading family numbers, separated by colons (eg.
|
1687
|
+
'exif:iso'). A leading '-' indicates tags to be excluded (eg. '-comment'),
|
1688
|
+
or a trailing '#' causes the ValueConv value to be copied (same as setting
|
1689
|
+
the Type option to 'ValueConv' for this tag only). Wildcards ('*' and '?')
|
1690
|
+
may be used in the tag name. A tag name of '*' is commonly used when a
|
1691
|
+
group is specified to copy all tags in the group (eg. 'XMP:*'). A special
|
1692
|
+
feature allows tag names of the form 'DSTTAGE<lt>SRCTAG' (or
|
1693
|
+
'SRCTAGE<gt>DSTTAG') to be specified to copy information to a tag with a
|
1694
|
+
different name or a specified group. Both 'SRCTAG' and 'DSTTAG' may contain
|
1695
|
+
wildcards and/or be prefixed by a group name (eg.
|
1696
|
+
'fileModifyDateE<lt>modifyDate' or 'xmp:*E<lt>*'), and/or suffixed by a '#'
|
1697
|
+
to disable print conversion. Copied tags may also be added or deleted from
|
1698
|
+
a list with arguments of the form 'DSTTAG+E<lt>SRCTAG' or
|
1699
|
+
'DSTTAG-E<lt>SRCTAG'. Tags are evaluated in order, so exclusions apply only
|
1700
|
+
to tags included earlier in the list. An extension of this feature allows
|
1701
|
+
the tag value to be set from a string containing tag names with leading '$'
|
1702
|
+
symbols (eg. 'CommentE<lt>the file is $filename'). Braces '{}' may be used
|
1703
|
+
around the tag name to separate it from subsequent text, and a '$$' is used
|
1704
|
+
to to represent a '$' symbol. The behaviour for missing tags in expressions
|
1705
|
+
is defined by the L</MissingTagValue> option. The tag value may be modified
|
1706
|
+
via changes to the default input variable ($_) in a Perl expression placed
|
1707
|
+
inside the braces and after a semicolon following the tag name (see the last
|
1708
|
+
example above). A '@' may be added after the tag name (before the
|
1709
|
+
semicolon) to make the expression act on individual list items instead of
|
1710
|
+
the concatenated string for list-type tags. Braces within the expression
|
1711
|
+
must be balanced. Multiple options hash references may be passed to set
|
1712
|
+
different options for different tags. Options apply to subsequent tags in
|
1713
|
+
the argument list.
|
1694
1714
|
|
1695
1715
|
By default, this routine will commute information between same-named tags in
|
1696
1716
|
different groups, allowing information to be translated between images with
|
@@ -2067,6 +2087,14 @@ Family 6 is currently used only for EXIF/TIFF metadata, and gives the format
|
|
2067
2087
|
type of the extracted value. Generated only if the L</SaveFormat> option is
|
2068
2088
|
used when extracting.
|
2069
2089
|
|
2090
|
+
Family 7 is used for tag ID's. The group names are "ID-" followed by the
|
2091
|
+
tag ID with characters other than [-_A-Za-z0-9] converted to hex. Numerical
|
2092
|
+
tag ID's are given in hex if the L</HexTagIDs> option is set. When
|
2093
|
+
specifying a family 7 group name, numerical ID's may be in hex or decimal,
|
2094
|
+
and non-numercal ID's may or may not have characters other than
|
2095
|
+
[-_A-Za-z0-9] converted to hex. Note that unlike other group names, family
|
2096
|
+
7 group names are case sensitive (except for the leading "ID-").
|
2097
|
+
|
2070
2098
|
See L</GetAllGroups [static]> for complete lists of group names.
|
2071
2099
|
|
2072
2100
|
=back
|
@@ -2260,22 +2288,22 @@ ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh,
|
|
2260
2288
|
ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,
|
2261
2289
|
InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JVC, Jpeg2000,
|
2262
2290
|
KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD,
|
2263
|
-
KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lytro, M2TS, MAC,
|
2264
|
-
MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS,
|
2265
|
-
MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta,
|
2266
|
-
MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
|
2267
|
-
MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
|
2268
|
-
MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
|
2269
|
-
MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
|
2270
|
-
Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG,
|
2271
|
-
Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD,
|
2272
|
-
Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM,
|
2273
|
-
Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
|
2274
|
-
Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4,
|
2275
|
-
Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
|
2276
|
-
SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim,
|
2277
|
-
System, Theora, Torrent, Track#, UserData, UserParam, VCalendar,
|
2278
|
-
Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio,
|
2291
|
+
KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC,
|
2292
|
+
MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS,
|
2293
|
+
MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta,
|
2294
|
+
MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
|
2295
|
+
MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
|
2296
|
+
MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
|
2297
|
+
Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
|
2298
|
+
NikonScan, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG,
|
2299
|
+
PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD,
|
2300
|
+
PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM,
|
2301
|
+
ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
|
2302
|
+
Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4,
|
2303
|
+
Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
|
2304
|
+
SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim,
|
2305
|
+
SubIFD, System, Theora, Torrent, Track#, UserData, UserParam, VCalendar,
|
2306
|
+
VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio,
|
2279
2307
|
XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage,
|
2280
2308
|
XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
|
2281
2309
|
XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc,
|
@@ -2309,6 +2337,12 @@ eg. JPEG-APP1-IFD0-ExifIFD
|
|
2309
2337
|
int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s,
|
2310
2338
|
rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
|
2311
2339
|
|
2340
|
+
=item Family 7 (Tag ID):
|
2341
|
+
|
2342
|
+
ID-xxx (where xxx is the tag ID. Numerical ID's are given in hex with a
|
2343
|
+
leading "0x" if the HexTagIDs option is set, as are characters in
|
2344
|
+
non-numerical ID's which are not valid in a group name)
|
2345
|
+
|
2312
2346
|
=back
|
2313
2347
|
|
2314
2348
|
=head2 GetDeleteGroups [static]
|
@@ -2588,7 +2622,7 @@ IPTC Core and Extension specifications actually use the XMP format.)
|
|
2588
2622
|
|
2589
2623
|
=head2 XMP
|
2590
2624
|
|
2591
|
-
|
2625
|
+
ExifTool reads XMP encoded as UTF-8, UTF-16 or UTF-32, and converts them all
|
2592
2626
|
to UTF-8 internally. Also, all XML character entity references and numeric
|
2593
2627
|
character references are converted. When writing, ExifTool always encodes
|
2594
2628
|
XMP as UTF-8, converting the following 5 characters to XML character
|
@@ -18,7 +18,7 @@ use vars qw($VERSION);
|
|
18
18
|
use Image::ExifTool qw(:DataAccess :Utils);
|
19
19
|
use Image::ExifTool::ID3;
|
20
20
|
|
21
|
-
$VERSION = '1.
|
21
|
+
$VERSION = '1.11';
|
22
22
|
|
23
23
|
# information for time/date-based tags (time zero is Jan 1, 1904)
|
24
24
|
my %timeInfo = (
|
@@ -73,12 +73,12 @@ my %timeInfo = (
|
|
73
73
|
ProcessProc => \&Image::ExifTool::ID3::ProcessID3,
|
74
74
|
},
|
75
75
|
},
|
76
|
+
APPL => 'ApplicationData', # (first 4 bytes are the application signature)
|
76
77
|
# SSND => 'SoundData',
|
77
78
|
# MARK => 'Marker',
|
78
79
|
# INST => 'Instrument',
|
79
80
|
# MIDI => 'MidiData',
|
80
81
|
# AESD => 'AudioRecording',
|
81
|
-
# APPL => 'ApplicationSpecific',
|
82
82
|
);
|
83
83
|
|
84
84
|
%Image::ExifTool::AIFF::Common = (
|
@@ -15,7 +15,7 @@ use strict;
|
|
15
15
|
use vars qw($VERSION);
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.06';
|
19
19
|
|
20
20
|
# APE metadata blocks
|
21
21
|
%Image::ExifTool::APE::Main = (
|
@@ -166,7 +166,7 @@ sub ProcessAPE($$)
|
|
166
166
|
# look for the APE trailer footer...
|
167
167
|
my $footPos = -32;
|
168
168
|
# (...but before the ID3v1 trailer if it exists)
|
169
|
-
$footPos -=
|
169
|
+
$footPos -= $$et{DoneID3} if $$et{DoneID3} > 1;
|
170
170
|
$raf->Seek($footPos, 2) or return 1;
|
171
171
|
$raf->Read($buff, 32) == 32 or return 1;
|
172
172
|
$buff =~ /^APETAGEX/ or return 1;
|
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
|
|
35
35
|
use Image::ExifTool::Validate;
|
36
36
|
use Image::ExifTool::MacOS;
|
37
37
|
|
38
|
-
$VERSION = '3.
|
38
|
+
$VERSION = '3.39';
|
39
39
|
@ISA = qw(Exporter);
|
40
40
|
|
41
41
|
sub NumbersFirst($$);
|
@@ -415,7 +415,7 @@ IPTC group only in the standard location.
|
|
415
415
|
},
|
416
416
|
QuickTime => q{
|
417
417
|
The QuickTime format is used for many different types of audio, video and
|
418
|
-
image files (most notably, MOV/MP4 videos and HEIC/CR3 images).
|
418
|
+
image files (most notably, MOV/MP4 videos and HEIC/CR3 images). ExifTool
|
419
419
|
extracts standard meta information and a variety of audio, video and image
|
420
420
|
parameters, as well as proprietary information written by many camera
|
421
421
|
models. Tags with a question mark after their name are not extracted unless
|
@@ -444,10 +444,10 @@ country code to the tag name (eg. "ItemList:Artist-deu" or
|
|
444
444
|
"ItemList::Artist-deu-DE"). Most
|
445
445
|
L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> tags support a
|
446
446
|
language code, but without a country code. If no language code is specified
|
447
|
-
when writing,
|
448
|
-
language code to write the default
|
449
|
-
languages. Note that "eng" is treated
|
450
|
-
but not when writing.
|
447
|
+
when writing, the default language is written and alternate languages for
|
448
|
+
the tag are deleted. Use the "und" language code to write the default
|
449
|
+
language without deleting alternate languages. Note that "eng" is treated
|
450
|
+
as a default language when reading, but not when writing.
|
451
451
|
|
452
452
|
According to the specification, integer-format QuickTime date/time tags
|
453
453
|
should be stored as UTC. Unfortunately, digital cameras often store local
|
@@ -633,7 +633,8 @@ L<http://www.metadataworkinggroup.org/> for the official MWG specification.
|
|
633
633
|
MacOS => q{
|
634
634
|
On MacOS systems, the there are additional MDItem and XAttr Finder tags that
|
635
635
|
may be extracted. These tags are not extracted by default -- they must be
|
636
|
-
specifically requested or enabled via an API option.
|
636
|
+
specifically requested or enabled via an API option. (Except when reading
|
637
|
+
MacOS "._" files directly, see below.)
|
637
638
|
|
638
639
|
The tables below list some of the tags that may be extracted, but ExifTool
|
639
640
|
will extract all available information even for tags not listed.
|
@@ -877,6 +878,11 @@ TagID: foreach $tagID (@keys) {
|
|
877
878
|
$case{$lc} = $name;
|
878
879
|
}
|
879
880
|
my $format = $$tagInfo{Format};
|
881
|
+
# check TagID's to make sure they don't start with 'ID-'
|
882
|
+
my @grps = $et->GetGroup($tagInfo);
|
883
|
+
foreach (@grps) {
|
884
|
+
warn "Group name starts with 'ID-' for $short $name\n" if /^ID-/i;
|
885
|
+
}
|
880
886
|
# validate Name (must not start with a digit or else XML output will not be valid;
|
881
887
|
# must not start with a dash or exiftool command line may get confused)
|
882
888
|
if ($name !~ /^[_A-Za-z][-\w]+$/ and
|
@@ -1023,9 +1029,14 @@ TagID: foreach $tagID (@keys) {
|
|
1023
1029
|
$note =~ s/(^[ \t]+|[ \t]+$)//mg;
|
1024
1030
|
push @values, "($note)";
|
1025
1031
|
}
|
1026
|
-
if ($isXMP and lc $tagID ne lc $name) {
|
1027
|
-
|
1028
|
-
|
1032
|
+
if ($isXMP and (lc $tagID ne lc $name or $$tagInfo{NotFlat})) {
|
1033
|
+
my $note;
|
1034
|
+
if ($$tagInfo{NotFlat}) {
|
1035
|
+
$note = 'NOT a flattened tag!';
|
1036
|
+
} else {
|
1037
|
+
# add note about different XMP Tag ID
|
1038
|
+
$note = $$tagInfo{RootTagInfo} ? $tagID : "called $tagID by the spec";
|
1039
|
+
}
|
1029
1040
|
if ($$tagInfo{Notes}) {
|
1030
1041
|
$values[-1] =~ s/^\(/($note; /;
|
1031
1042
|
} else {
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.40';
|
92
92
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
@@ -474,8 +474,9 @@ $VERSION = '4.37';
|
|
474
474
|
253.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 2x', #PH (NC)
|
475
475
|
# 253.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367
|
476
476
|
254 => 'Canon EF 100mm f/2.8L Macro IS USM', #42
|
477
|
-
255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other
|
477
|
+
255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Lens', #50
|
478
478
|
255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50
|
479
|
+
255.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD', #exiv issue 1202 (A009)
|
479
480
|
368 => 'Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens', #IB (A018)
|
480
481
|
368.1 => 'Sigma 20mm f/1.4 DG HSM | A', #50 (newer firmware)
|
481
482
|
368.2 => 'Sigma 50mm f/1.4 DG HSM | A', #50
|
@@ -486,8 +487,9 @@ $VERSION = '4.37';
|
|
486
487
|
368.7 => 'Sigma 85mm f/1.4 DG HSM | A', #IB (016)
|
487
488
|
368.8 => 'Sigma 105mm f/1.4 DG HSM', #IB (A018)
|
488
489
|
368.9 => 'Sigma 14-24mm f/2.8 DG HSM', #IB (A018)
|
489
|
-
|
490
|
-
'368.
|
490
|
+
'368.10' => 'Sigma 35mm f/1.4 DG HSM | A', #PH (012)
|
491
|
+
'368.11' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018)
|
492
|
+
'368.12' => 'Sigma 18-35mm f/1.8 DC HSM | A', #50
|
491
493
|
# Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
|
492
494
|
488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
|
493
495
|
489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek
|
@@ -565,14 +567,27 @@ $VERSION = '4.37';
|
|
565
567
|
61494 => 'Canon CN-E 85mm T1.3 L F', #PH
|
566
568
|
61495 => 'Canon CN-E 135mm T2.2 L F', #PH
|
567
569
|
61496 => 'Canon CN-E 35mm T1.5 L F', #PH
|
568
|
-
|
569
|
-
61182
|
570
|
-
61182.
|
571
|
-
61182.
|
572
|
-
61182.
|
573
|
-
61182.
|
574
|
-
61182.
|
575
|
-
61182.
|
570
|
+
# see RFLensType tag for master list of 61182 RF lenses
|
571
|
+
61182 => 'Canon RF 50mm F1.2L USM or other Canon RF Lens',
|
572
|
+
61182.1 => 'Canon RF 24-105mm F4L IS USM',
|
573
|
+
61182.2 => 'Canon RF 28-70mm F2L USM',
|
574
|
+
61182.3 => 'Canon RF 35mm F1.8 MACRO IS STM',
|
575
|
+
61182.4 => 'Canon RF 85mm F1.2L USM',
|
576
|
+
61182.5 => 'Canon RF 85mm F1.2L USM DS',
|
577
|
+
61182.6 => 'Canon RF 24-70mm F2.8L IS USM',
|
578
|
+
61182.7 => 'Canon RF 15-35mm F2.8L IS USM',
|
579
|
+
61182.8 => 'Canon RF 24-240mm F4-6.3 IS USM',
|
580
|
+
61182.9 => 'Canon RF 70-200mm F2.8L IS USM',
|
581
|
+
61182.10 => 'Canon RF 600mm F11 IS STM',
|
582
|
+
61182.11 => 'Canon RF 600mm F11 IS STM + RF1.4x',
|
583
|
+
61182.12 => 'Canon RF 600mm F11 IS STM + RF2x',
|
584
|
+
61182.13 => 'Canon RF 800mm F11 IS STM',
|
585
|
+
61182.14 => 'Canon RF 800mm F11 IS STM + RF1.4x',
|
586
|
+
61182.15 => 'Canon RF 800mm F11 IS STM + RF2x',
|
587
|
+
61182.16 => 'Canon RF 24-105mm F4-7.1 IS STM',
|
588
|
+
61182.17 => 'Canon RF 100-500mm F4.5-7.1L IS USM',
|
589
|
+
61182.18 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x',
|
590
|
+
61182.19 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
|
576
591
|
65535 => 'n/a',
|
577
592
|
);
|
578
593
|
|
@@ -918,13 +933,16 @@ $VERSION = '4.37';
|
|
918
933
|
0x80000406 => 'EOS 6D Mark II', #IB/42
|
919
934
|
0x80000408 => 'EOS 77D / 9000D',
|
920
935
|
0x80000417 => 'EOS Rebel SL2 / 200D / Kiss X9', #IB/42
|
936
|
+
0x80000421 => 'EOS R5', #PH
|
921
937
|
0x80000422 => 'EOS Rebel T100 / 4000D / 3000D', #IB (3000D in China; Kiss? - PH)
|
922
938
|
0x80000424 => 'EOS R', #IB
|
923
939
|
0x80000428 => 'EOS-1D X Mark III', #IB
|
924
940
|
0x80000432 => 'EOS Rebel T7 / 2000D / 1500D / Kiss X90', #IB
|
925
941
|
0x80000433 => 'EOS RP',
|
942
|
+
0x80000435 => 'EOS Rebel T8i / 850D / X10i', #JR/PH
|
926
943
|
0x80000436 => 'EOS SL3 / 250D / Kiss X10', #25
|
927
944
|
0x80000437 => 'EOS 90D', #IB
|
945
|
+
0x80000453 => 'EOS R6', #PH
|
928
946
|
0x80000520 => 'EOS D2000C', #IB
|
929
947
|
0x80000560 => 'EOS D6000C', #PH (guess)
|
930
948
|
);
|
@@ -1881,6 +1899,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
1881
1899
|
Name => 'ColorData9',
|
1882
1900
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData9' },
|
1883
1901
|
},
|
1902
|
+
{ # (int16u[2024|3656]) - 1DXmkIII (2024) ref IB, R5/R6 (3656) ref PH
|
1903
|
+
Condition => '$count == 2024 or $count == 3656',
|
1904
|
+
Name => 'ColorData10',
|
1905
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData10' },
|
1906
|
+
},
|
1884
1907
|
{
|
1885
1908
|
Name => 'ColorDataUnknown',
|
1886
1909
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorDataUnknown' },
|
@@ -5660,6 +5683,13 @@ my %ciMaxFocal = (
|
|
5660
5683
|
ValueConv => 'unpack("H*",$val)',
|
5661
5684
|
ValueConvInv => 'length($val) < 10 and $val = 0 x (10-length($val)) . $val; pack("H*",$val)',
|
5662
5685
|
},
|
5686
|
+
0x5c1 => {
|
5687
|
+
Name => 'FirmwareVersion',
|
5688
|
+
Format => 'string[6]',
|
5689
|
+
Writable => 0,
|
5690
|
+
Condition => '$$valPt =~ /^\d\.\d\.\d\0/',
|
5691
|
+
Notes => 'M50', # (firmware 1.0.0)
|
5692
|
+
},
|
5663
5693
|
);
|
5664
5694
|
|
5665
5695
|
# Picture Style information for various cameras (ref 48)
|
@@ -6692,7 +6722,17 @@ my %ciMaxFocal = (
|
|
6692
6722
|
264 => 'Canon RF 15-35mm F2.8L IS USM',
|
6693
6723
|
265 => 'Canon RF 24-240mm F4-6.3 IS USM',
|
6694
6724
|
266 => 'Canon RF 70-200mm F2.8L IS USM',
|
6725
|
+
268 => 'Canon RF 600mm F11 IS STM',
|
6726
|
+
269 => 'Canon RF 600mm F11 IS STM + RF1.4x',
|
6727
|
+
270 => 'Canon RF 600mm F11 IS STM + RF2x',
|
6728
|
+
271 => 'Canon RF 800mm F11 IS STM',
|
6729
|
+
272 => 'Canon RF 800mm F11 IS STM + RF1.4x',
|
6730
|
+
273 => 'Canon RF 800mm F11 IS STM + RF2x',
|
6695
6731
|
274 => 'Canon RF 24-105mm F4-7.1 IS STM',
|
6732
|
+
275 => 'Canon RF 100-500mm F4.5-7.1L IS USM',
|
6733
|
+
276 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x',
|
6734
|
+
277 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
|
6735
|
+
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
6696
6736
|
},
|
6697
6737
|
},
|
6698
6738
|
);
|
@@ -8037,7 +8077,6 @@ my %ciMaxFocal = (
|
|
8037
8077
|
0x149 => { #IB
|
8038
8078
|
Name => 'PerChannelBlackLevel',
|
8039
8079
|
Format => 'int16u[4]',
|
8040
|
-
Notes => '1300D',
|
8041
8080
|
},
|
8042
8081
|
# 0x318 - PerChannelBlackLevel again (ref IB)
|
8043
8082
|
0x31c => { #IB
|
@@ -8055,6 +8094,128 @@ my %ciMaxFocal = (
|
|
8055
8094
|
},
|
8056
8095
|
);
|
8057
8096
|
|
8097
|
+
# Color data (MakerNotes tag 0x4001, count=2024,3656)
|
8098
|
+
# (same as ColorData9 but shifted up by 0x0e, ref PH)
|
8099
|
+
%Image::ExifTool::Canon::ColorData10 = (
|
8100
|
+
%binaryDataAttrs,
|
8101
|
+
FORMAT => 'int16s',
|
8102
|
+
FIRST_ENTRY => 0,
|
8103
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8104
|
+
DATAMEMBER => [ 0 ],
|
8105
|
+
IS_SUBDIR => [ 0x118 ],
|
8106
|
+
0x00 => {
|
8107
|
+
Name => 'ColorDataVersion',
|
8108
|
+
DataMember => 'ColorDataVersion',
|
8109
|
+
RawConv => '$$self{ColorDataVersion} = $val',
|
8110
|
+
PrintConv => {
|
8111
|
+
32 => '32 (1DXmkIII)', #IB
|
8112
|
+
33 => '33 (R5/R6)',
|
8113
|
+
},
|
8114
|
+
},
|
8115
|
+
0x55 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
|
8116
|
+
0x59 => 'ColorTempAsShot',
|
8117
|
+
0x5a => { Name => 'WB_RGGBLevelsAuto', Format => 'int16s[4]' },
|
8118
|
+
0x5e => 'ColorTempAuto',
|
8119
|
+
0x5f => { Name => 'WB_RGGBLevelsMeasured', Format => 'int16s[4]' },
|
8120
|
+
0x63 => 'ColorTempMeasured',
|
8121
|
+
0x64 => { Name => 'WB_RGGBLevelsUnknown', Format => 'int16s[4]', Unknown => 1 },
|
8122
|
+
0x68 => { Name => 'ColorTempUnknown', Unknown => 1 },
|
8123
|
+
0x69 => { Name => 'WB_RGGBLevelsUnknown2', Format => 'int16s[4]', Unknown => 1 },
|
8124
|
+
0x6d => { Name => 'ColorTempUnknown2', Unknown => 1 },
|
8125
|
+
0x6e => { Name => 'WB_RGGBLevelsUnknown3', Format => 'int16s[4]', Unknown => 1 },
|
8126
|
+
0x72 => { Name => 'ColorTempUnknown3', Unknown => 1 },
|
8127
|
+
0x73 => { Name => 'WB_RGGBLevelsUnknown4', Format => 'int16s[4]', Unknown => 1 },
|
8128
|
+
0x77 => { Name => 'ColorTempUnknown4', Unknown => 1 },
|
8129
|
+
0x78 => { Name => 'WB_RGGBLevelsUnknown5', Format => 'int16s[4]', Unknown => 1 },
|
8130
|
+
0x7c => { Name => 'ColorTempUnknown5', Unknown => 1 },
|
8131
|
+
0x7d => { Name => 'WB_RGGBLevelsUnknown6', Format => 'int16s[4]', Unknown => 1 },
|
8132
|
+
0x81 => { Name => 'ColorTempUnknown6', Unknown => 1 },
|
8133
|
+
0x82 => { Name => 'WB_RGGBLevelsUnknown7', Format => 'int16s[4]', Unknown => 1 },
|
8134
|
+
0x86 => { Name => 'ColorTempUnknown7', Unknown => 1 },
|
8135
|
+
0x87 => { Name => 'WB_RGGBLevelsUnknown8', Format => 'int16s[4]', Unknown => 1 },
|
8136
|
+
0x8b => { Name => 'ColorTempUnknown8', Unknown => 1 },
|
8137
|
+
0x8c => { Name => 'WB_RGGBLevelsUnknown9', Format => 'int16s[4]', Unknown => 1 },
|
8138
|
+
0x90 => { Name => 'ColorTempUnknown9', Unknown => 1 },
|
8139
|
+
0x91 => { Name => 'WB_RGGBLevelsUnknown10', Format => 'int16s[4]', Unknown => 1 },
|
8140
|
+
0x95 => { Name => 'ColorTempUnknown10', Unknown => 1 },
|
8141
|
+
0x96 => { Name => 'WB_RGGBLevelsDaylight', Format => 'int16s[4]' },
|
8142
|
+
0x9a => 'ColorTempDaylight',
|
8143
|
+
0x9b => { Name => 'WB_RGGBLevelsShade', Format => 'int16s[4]' },
|
8144
|
+
0x9f => 'ColorTempShade',
|
8145
|
+
0xa0 => { Name => 'WB_RGGBLevelsCloudy', Format => 'int16s[4]' },
|
8146
|
+
0xa4 => 'ColorTempCloudy',
|
8147
|
+
0xa5 => { Name => 'WB_RGGBLevelsTungsten', Format => 'int16s[4]' },
|
8148
|
+
0xa9 => 'ColorTempTungsten',
|
8149
|
+
0xaa => { Name => 'WB_RGGBLevelsFluorescent',Format => 'int16s[4]' },
|
8150
|
+
0xae => 'ColorTempFluorescent',
|
8151
|
+
0xaf => { Name => 'WB_RGGBLevelsKelvin', Format => 'int16s[4]' },
|
8152
|
+
0xb3 => 'ColorTempKelvin',
|
8153
|
+
0xb4 => { Name => 'WB_RGGBLevelsFlash', Format => 'int16s[4]' },
|
8154
|
+
0xb8 => 'ColorTempFlash',
|
8155
|
+
0xb9 => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 },
|
8156
|
+
0xbd => { Name => 'ColorTempUnknown11', Unknown => 1 },
|
8157
|
+
0xbe => { Name => 'WB_RGGBLevelsUnknown12', Format => 'int16s[4]', Unknown => 1 },
|
8158
|
+
0xc2 => { Name => 'ColorTempUnknown12', Unknown => 1 },
|
8159
|
+
0xc3 => { Name => 'WB_RGGBLevelsUnknown13', Format => 'int16s[4]', Unknown => 1 },
|
8160
|
+
0xc7 => { Name => 'ColorTempUnknown13', Unknown => 1 },
|
8161
|
+
0xc8 => { Name => 'WB_RGGBLevelsUnknown14', Format => 'int16s[4]', Unknown => 1 },
|
8162
|
+
0xcc => { Name => 'ColorTempUnknown14', Unknown => 1 },
|
8163
|
+
0xcd => { Name => 'WB_RGGBLevelsUnknown15', Format => 'int16s[4]', Unknown => 1 },
|
8164
|
+
0xd1 => { Name => 'ColorTempUnknown15', Unknown => 1 },
|
8165
|
+
0xd2 => { Name => 'WB_RGGBLevelsUnknown16', Format => 'int16s[4]', Unknown => 1 },
|
8166
|
+
0xd6 => { Name => 'ColorTempUnknown16', Unknown => 1 },
|
8167
|
+
0xd7 => { Name => 'WB_RGGBLevelsUnknown17', Format => 'int16s[4]', Unknown => 1 },
|
8168
|
+
0xdb => { Name => 'ColorTempUnknown17', Unknown => 1 },
|
8169
|
+
0xdc => { Name => 'WB_RGGBLevelsUnknown18', Format => 'int16s[4]', Unknown => 1 },
|
8170
|
+
0xe0 => { Name => 'ColorTempUnknown18', Unknown => 1 },
|
8171
|
+
0xe1 => { Name => 'WB_RGGBLevelsUnknown19', Format => 'int16s[4]', Unknown => 1 },
|
8172
|
+
0xe5 => { Name => 'ColorTempUnknown19', Unknown => 1 },
|
8173
|
+
0xe6 => { Name => 'WB_RGGBLevelsUnknown20', Format => 'int16s[4]', Unknown => 1 },
|
8174
|
+
0xea => { Name => 'ColorTempUnknown20', Unknown => 1 },
|
8175
|
+
0xeb => { Name => 'WB_RGGBLevelsUnknown21', Format => 'int16s[4]', Unknown => 1 },
|
8176
|
+
0xef => { Name => 'ColorTempUnknown21', Unknown => 1 },
|
8177
|
+
0xf0 => { Name => 'WB_RGGBLevelsUnknown22', Format => 'int16s[4]', Unknown => 1 },
|
8178
|
+
0xf4 => { Name => 'ColorTempUnknown22', Unknown => 1 },
|
8179
|
+
0xf5 => { Name => 'WB_RGGBLevelsUnknown23', Format => 'int16s[4]', Unknown => 1 },
|
8180
|
+
0xf9 => { Name => 'ColorTempUnknown23', Unknown => 1 },
|
8181
|
+
0xfa => { Name => 'WB_RGGBLevelsUnknown24', Format => 'int16s[4]', Unknown => 1 },
|
8182
|
+
0xfe => { Name => 'ColorTempUnknown24', Unknown => 1 },
|
8183
|
+
0xff => { Name => 'WB_RGGBLevelsUnknown25', Format => 'int16s[4]', Unknown => 1 },
|
8184
|
+
0x103=> { Name => 'ColorTempUnknown25', Unknown => 1 },
|
8185
|
+
0x104=> { Name => 'WB_RGGBLevelsUnknown26', Format => 'int16s[4]', Unknown => 1 },
|
8186
|
+
0x108=> { Name => 'ColorTempUnknown26', Unknown => 1 },
|
8187
|
+
0x109=> { Name => 'WB_RGGBLevelsUnknown27', Format => 'int16s[4]', Unknown => 1 },
|
8188
|
+
0x10d=> { Name => 'ColorTempUnknown27', Unknown => 1 },
|
8189
|
+
0x10e=> { Name => 'WB_RGGBLevelsUnknown28', Format => 'int16s[4]', Unknown => 1 },
|
8190
|
+
0x112=> { Name => 'ColorTempUnknown28', Unknown => 1 },
|
8191
|
+
0x113=> { Name => 'WB_RGGBLevelsUnknown29', Format => 'int16s[4]', Unknown => 1 },
|
8192
|
+
0x117=> { Name => 'ColorTempUnknown29', Unknown => 1 },
|
8193
|
+
0x118 => {
|
8194
|
+
Name => 'ColorCalib',
|
8195
|
+
Format => 'undef[120]',
|
8196
|
+
Unknown => 1,
|
8197
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' }
|
8198
|
+
},
|
8199
|
+
0x157 => {
|
8200
|
+
Name => 'PerChannelBlackLevel',
|
8201
|
+
Format => 'int16u[4]',
|
8202
|
+
},
|
8203
|
+
# 0x326 - PerChannelBlackLevel again
|
8204
|
+
0x32a => {
|
8205
|
+
Name => 'NormalWhiteLevel',
|
8206
|
+
Format => 'int16u',
|
8207
|
+
RawConv => '$val || undef',
|
8208
|
+
},
|
8209
|
+
0x32b => {
|
8210
|
+
Name => 'SpecularWhiteLevel',
|
8211
|
+
Format => 'int16u',
|
8212
|
+
},
|
8213
|
+
0x32c => {
|
8214
|
+
Name => 'LinearityUpperMargin',
|
8215
|
+
Format => 'int16u',
|
8216
|
+
},
|
8217
|
+
);
|
8218
|
+
|
8058
8219
|
# Unknown color data (MakerNotes tag 0x4001)
|
8059
8220
|
%Image::ExifTool::Canon::ColorDataUnknown = (
|
8060
8221
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
@@ -8563,7 +8724,7 @@ my %filterConv = (
|
|
8563
8724
|
Name => 'MakerNoteCanon',
|
8564
8725
|
SubDirectory => {
|
8565
8726
|
TagTable => 'Image::ExifTool::Canon::Main',
|
8566
|
-
ProcessProc => \&
|
8727
|
+
ProcessProc => \&ProcessCMT3,
|
8567
8728
|
WriteProc => \&Image::ExifTool::WriteTIFF,
|
8568
8729
|
},
|
8569
8730
|
},
|
@@ -9509,6 +9670,33 @@ sub CanonEvInv($)
|
|
9509
9670
|
return $sign * ($val * 0x20 + $frac);
|
9510
9671
|
}
|
9511
9672
|
|
9673
|
+
#------------------------------------------------------------------------------
|
9674
|
+
# Read CMT3 maker notes from CR3 file
|
9675
|
+
# Inputs: 0) ExifTool object reference, 1) dirInfo ref, 2) tag table ref
|
9676
|
+
# Returns: data block (may be empty if no Exif data) or undef on error
|
9677
|
+
sub ProcessCMT3($$$)
|
9678
|
+
{
|
9679
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
9680
|
+
|
9681
|
+
# extract the static maker notes to copying to other file types if requested
|
9682
|
+
# Note: this won't copy makernotes in the timed metadata since these are stored
|
9683
|
+
# separately, but the only records they have that aren't in the static maker notes
|
9684
|
+
# (for the M50) are: ColorData9, Flavor, CanonCameraInfoUnknown,
|
9685
|
+
# VignettingCorrUnknown1, Canon_0x4033 and Canon_0x402e
|
9686
|
+
if (($et->Options('MakerNotes') or $$et{REQ_TAG_LOOKUP}{makernotecanon}) and
|
9687
|
+
$$dirInfo{DirLen} > 8)
|
9688
|
+
{
|
9689
|
+
my $dataPt = $$dirInfo{DataPt};
|
9690
|
+
# remove old (unused) trailer
|
9691
|
+
$$dataPt =~ s/(II\x2a\0|MM\0\x2a)\0{4,10}$//;
|
9692
|
+
# remove TIFF header and append as the Canon makernote trailer
|
9693
|
+
# (so offsets will be interpreted correctly)
|
9694
|
+
my $val = substr($$dataPt,8) . substr($$dataPt,0,8);
|
9695
|
+
$et->FoundTag($Image::ExifTool::Canon::uuid{CMT3}, \$val);
|
9696
|
+
}
|
9697
|
+
return $et->ProcessTIFF($dirInfo, $tagTablePtr);
|
9698
|
+
}
|
9699
|
+
|
9512
9700
|
#------------------------------------------------------------------------------
|
9513
9701
|
# Process CTMD EXIF information
|
9514
9702
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|