exiftool_vendored 11.99.0 → 12.11.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 +201 -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 +172 -99
- data/bin/lib/Image/ExifTool.pm +170 -117
- data/bin/lib/Image/ExifTool.pod +132 -97
- 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 -13
- 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 +86 -12
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -0
- data/bin/lib/Image/ExifTool/Import.pm +12 -9
- 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 +1 -1
- data/bin/lib/Image/ExifTool/MPF.pm +2 -2
- 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/Nikon.pm +143 -17
- data/bin/lib/Image/ExifTool/Olympus.pm +40 -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 +11 -3
- data/bin/lib/Image/ExifTool/Photoshop.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +240 -37
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +419 -60
- data/bin/lib/Image/ExifTool/README +25 -21
- data/bin/lib/Image/ExifTool/RSRC.pm +17 -11
- 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 +423 -39
- data/bin/lib/Image/ExifTool/Stim.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +5798 -5675
- data/bin/lib/Image/ExifTool/TagNames.pod +575 -100
- data/bin/lib/Image/ExifTool/Validate.pm +4 -4
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +30 -21
- data/bin/lib/Image/ExifTool/Writer.pl +49 -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 +9 -8
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
|
|
@@ -643,10 +644,11 @@ file types. With a value of 2, ExifTool will also avoid extracting any EXIF
|
|
|
643
644
|
MakerNote information, and will stop parsing at the IDAT chunk of PNG
|
|
644
645
|
images. (By the PNG specification, metadata is allowed after IDAT, but
|
|
645
646
|
ExifTool always writes it before because some utilities will ignore it
|
|
646
|
-
otherwise.) When set to 3 or
|
|
647
|
-
generated. For 3, the file header is read to provide an educated guess
|
|
648
|
-
FileType. For 4, the file is not read at all and FileType is determined
|
|
649
|
-
based on the file's extension.
|
|
647
|
+
otherwise.) When set to 3 or higher, only pseudo system tags and FileType
|
|
648
|
+
are generated. For 3, the file header is read to provide an educated guess
|
|
649
|
+
at FileType. For 4, the file is not read at all and FileType is determined
|
|
650
|
+
based on the file's extension. For 5, generation of Composite tags is also
|
|
651
|
+
disabled (like setting L</Composite> to 0). Default is undef.
|
|
650
652
|
|
|
651
653
|
=item Filter
|
|
652
654
|
|
|
@@ -662,7 +664,7 @@ option is disabled.
|
|
|
662
664
|
Perl expression used to filter PrintConv values when writing. The
|
|
663
665
|
expression acts on the value of the Perl default variable ($_), and changes
|
|
664
666
|
the value of this variable as required. The current ExifTool object may be
|
|
665
|
-
accessed through $self. The
|
|
667
|
+
accessed through $self. The tag is not written if $_ is set to undef.
|
|
666
668
|
|
|
667
669
|
=item FixBase
|
|
668
670
|
|
|
@@ -731,6 +733,11 @@ to be excluded by preceding group name with a '-'. See L</GetGroup> for a
|
|
|
731
733
|
description of group families, and L</GetAllGroups [static]> for lists of
|
|
732
734
|
group names.
|
|
733
735
|
|
|
736
|
+
=item HexTagIDs
|
|
737
|
+
|
|
738
|
+
Use hexadecimal instead of decimal for the family 7 group names of tags with
|
|
739
|
+
numerical ID's.
|
|
740
|
+
|
|
734
741
|
=item HtmlDump
|
|
735
742
|
|
|
736
743
|
Dump information in hex to dynamic HTML web page. The value may be 0-3 for
|
|
@@ -809,6 +816,11 @@ formatting expression returns undef). If not set, a minor error is issued
|
|
|
809
816
|
for missing values, or the value is set to '' if L</IgnoreMinorErrors> is
|
|
810
817
|
set. Default is undef.
|
|
811
818
|
|
|
819
|
+
=item NoMultiExif
|
|
820
|
+
|
|
821
|
+
Raise error when attempting to write multi-segment EXIF in a JPEG image.
|
|
822
|
+
Default is undef.
|
|
823
|
+
|
|
812
824
|
=item NoPDFList
|
|
813
825
|
|
|
814
826
|
Flag to avoid splitting PDF list-type tag values into separate items.
|
|
@@ -839,9 +851,10 @@ causing conversion to local time when they are extracted and from local time
|
|
|
839
851
|
when written. According to the QuickTime specification date/time values
|
|
840
852
|
should be UTC, but many digital cameras store local time instead (presumably
|
|
841
853
|
because they don't know the time zone), so the default is to not convert
|
|
842
|
-
these times
|
|
843
|
-
|
|
844
|
-
1904 as per the
|
|
854
|
+
these times (except for Canon CR3 files, which always use UTC times). This
|
|
855
|
+
option also disables the autodetection of incorrect time-zero offsets in
|
|
856
|
+
QuickTime date/time values, and enforces a time zero of 1904 as per the
|
|
857
|
+
QuickTime specification.
|
|
845
858
|
|
|
846
859
|
=item RequestAll
|
|
847
860
|
|
|
@@ -1128,11 +1141,17 @@ created in the destination file as required to store the specified
|
|
|
1128
1141
|
information. May be called repeatedly to write the same information to
|
|
1129
1142
|
additional files without the need to call L</SetNewValue> again.
|
|
1130
1143
|
|
|
1131
|
-
|
|
1144
|
+
ExifTool queues all new values that are assigned via calls to
|
|
1145
|
+
L</SetNewValue>, then applies them to any number of files through one or
|
|
1146
|
+
more calls to L</WriteInfo>. These queued values may be accessed through
|
|
1147
|
+
L</GetNewValue>, and are completely separate from metadata extracted from
|
|
1148
|
+
files via L</ExtractInfo> or L</ImageInfo> and accessed through L</GetInfo>
|
|
1149
|
+
or L</GetValue>.
|
|
1150
|
+
|
|
1151
|
+
To be clear, it is NOT necessary to call L</ExtractInfo> or L</ImageInfo>
|
|
1132
1152
|
before L</WriteInfo>. L</WriteInfo> changes only metadata specified by
|
|
1133
1153
|
previous calls to L</SetNewValue>.
|
|
1134
1154
|
|
|
1135
|
-
|
|
1136
1155
|
# add information to a source file, writing output to new file
|
|
1137
1156
|
$exifTool->WriteInfo($srcfile, $dstfile);
|
|
1138
1157
|
|
|
@@ -1601,7 +1620,8 @@ values in list context.
|
|
|
1601
1620
|
|
|
1602
1621
|
0) ExifTool object reference
|
|
1603
1622
|
|
|
1604
|
-
1) Tag name (case sensitive, may be prefixed by family 0 or
|
|
1623
|
+
1) Tag name (case sensitive, may be prefixed by family 0, 1 or 7 group
|
|
1624
|
+
names, separated by colons)
|
|
1605
1625
|
|
|
1606
1626
|
=item Return Values:
|
|
1607
1627
|
|
|
@@ -1663,34 +1683,35 @@ in a specified file.
|
|
|
1663
1683
|
|
|
1664
1684
|
2-N) [optional] List of tag names to set or options hash references. All
|
|
1665
1685
|
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
|
|
1686
|
+
sensitive, and may be prefixed by one or more family 0, 1, 2 or 7 group
|
|
1687
|
+
names with optional leading family numbers, separated by colons (eg.
|
|
1688
|
+
'exif:iso'). A leading '-' indicates tags to be excluded (eg. '-comment'),
|
|
1689
|
+
or a trailing '#' causes the ValueConv value to be copied (same as setting
|
|
1690
|
+
the Type option to 'ValueConv' for this tag only). Wildcards ('*' and '?')
|
|
1691
|
+
may be used in the tag name. A tag name of '*' is commonly used when a
|
|
1692
|
+
group is specified to copy all tags in the group (eg. 'XMP:*'). A special
|
|
1693
|
+
feature allows tag names of the form 'DSTTAGE<lt>SRCTAG' (or
|
|
1694
|
+
'SRCTAGE<gt>DSTTAG') to be specified to copy information to a tag with a
|
|
1695
|
+
different name or a specified group. Both 'SRCTAG' and 'DSTTAG' may contain
|
|
1696
|
+
wildcards and/or be prefixed by a group name (eg.
|
|
1697
|
+
'fileModifyDateE<lt>modifyDate' or 'xmp:*E<lt>*'), and/or suffixed by a '#'
|
|
1698
|
+
to disable print conversion. Copied tags may also be added or deleted from
|
|
1699
|
+
a list with arguments of the form 'DSTTAG+E<lt>SRCTAG' or
|
|
1700
|
+
'DSTTAG-E<lt>SRCTAG'. Tags are evaluated in order, so exclusions apply only
|
|
1701
|
+
to tags included earlier in the list. An extension of this feature allows
|
|
1702
|
+
the tag value to be set from a string containing tag names with leading '$'
|
|
1703
|
+
symbols (eg. 'CommentE<lt>the file is $filename'). Braces '{}' may be used
|
|
1704
|
+
around the tag name to separate it from subsequent text, and a '$$' is used
|
|
1705
|
+
to to represent a '$' symbol. The behaviour for missing tags in expressions
|
|
1706
|
+
is defined by the L</MissingTagValue> option. The tag value may be modified
|
|
1707
|
+
via changes to the default input variable ($_) in a Perl expression placed
|
|
1708
|
+
inside the braces and after a semicolon following the tag name (see the last
|
|
1709
|
+
example above). A '@' may be added after the tag name (before the
|
|
1710
|
+
semicolon) to make the expression act on individual list items instead of
|
|
1711
|
+
the concatenated string for list-type tags. Braces within the expression
|
|
1712
|
+
must be balanced. Multiple options hash references may be passed to set
|
|
1713
|
+
different options for different tags. Options apply to subsequent tags in
|
|
1714
|
+
the argument list.
|
|
1694
1715
|
|
|
1695
1716
|
By default, this routine will commute information between same-named tags in
|
|
1696
1717
|
different groups, allowing information to be translated between images with
|
|
@@ -2067,6 +2088,14 @@ Family 6 is currently used only for EXIF/TIFF metadata, and gives the format
|
|
|
2067
2088
|
type of the extracted value. Generated only if the L</SaveFormat> option is
|
|
2068
2089
|
used when extracting.
|
|
2069
2090
|
|
|
2091
|
+
Family 7 is used for tag ID's. The group names are "ID-" followed by the
|
|
2092
|
+
tag ID with characters other than [-_A-Za-z0-9] converted to hex. Numerical
|
|
2093
|
+
tag ID's are given in hex if the L</HexTagIDs> option is set. When
|
|
2094
|
+
specifying a family 7 group name, numerical ID's may be in hex or decimal,
|
|
2095
|
+
and non-numercal ID's may or may not have characters other than
|
|
2096
|
+
[-_A-Za-z0-9] converted to hex. Note that unlike other group names, family
|
|
2097
|
+
7 group names are case sensitive (except for the leading "ID-").
|
|
2098
|
+
|
|
2070
2099
|
See L</GetAllGroups [static]> for complete lists of group names.
|
|
2071
2100
|
|
|
2072
2101
|
=back
|
|
@@ -2260,22 +2289,22 @@ ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh,
|
|
|
2260
2289
|
ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,
|
|
2261
2290
|
InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JVC, Jpeg2000,
|
|
2262
2291
|
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,
|
|
2292
|
+
KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC,
|
|
2293
|
+
MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS,
|
|
2294
|
+
MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta,
|
|
2295
|
+
MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
|
|
2296
|
+
MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
|
|
2297
|
+
MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
|
|
2298
|
+
Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
|
|
2299
|
+
NikonScan, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG,
|
|
2300
|
+
PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD,
|
|
2301
|
+
PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM,
|
|
2302
|
+
ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
|
|
2303
|
+
Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4,
|
|
2304
|
+
Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
|
|
2305
|
+
SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim,
|
|
2306
|
+
SubIFD, System, Theora, Torrent, Track#, UserData, UserParam, VCalendar,
|
|
2307
|
+
VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio,
|
|
2279
2308
|
XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage,
|
|
2280
2309
|
XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
|
|
2281
2310
|
XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc,
|
|
@@ -2309,6 +2338,12 @@ eg. JPEG-APP1-IFD0-ExifIFD
|
|
|
2309
2338
|
int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s,
|
|
2310
2339
|
rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
|
|
2311
2340
|
|
|
2341
|
+
=item Family 7 (Tag ID):
|
|
2342
|
+
|
|
2343
|
+
ID-xxx (where xxx is the tag ID. Numerical ID's are given in hex with a
|
|
2344
|
+
leading "0x" if the HexTagIDs option is set, as are characters in
|
|
2345
|
+
non-numerical ID's which are not valid in a group name)
|
|
2346
|
+
|
|
2312
2347
|
=back
|
|
2313
2348
|
|
|
2314
2349
|
=head2 GetDeleteGroups [static]
|
|
@@ -2588,7 +2623,7 @@ IPTC Core and Extension specifications actually use the XMP format.)
|
|
|
2588
2623
|
|
|
2589
2624
|
=head2 XMP
|
|
2590
2625
|
|
|
2591
|
-
|
|
2626
|
+
ExifTool reads XMP encoded as UTF-8, UTF-16 or UTF-32, and converts them all
|
|
2592
2627
|
to UTF-8 internally. Also, all XML character entity references and numeric
|
|
2593
2628
|
character references are converted. When writing, ExifTool always encodes
|
|
2594
2629
|
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.41';
|
|
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)
|
|
@@ -487,8 +487,9 @@ $VERSION = '4.38';
|
|
|
487
487
|
368.7 => 'Sigma 85mm f/1.4 DG HSM | A', #IB (016)
|
|
488
488
|
368.8 => 'Sigma 105mm f/1.4 DG HSM', #IB (A018)
|
|
489
489
|
368.9 => 'Sigma 14-24mm f/2.8 DG HSM', #IB (A018)
|
|
490
|
-
|
|
491
|
-
'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
|
|
492
493
|
# Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
|
|
493
494
|
488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
|
|
494
495
|
489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek
|
|
@@ -566,14 +567,28 @@ $VERSION = '4.38';
|
|
|
566
567
|
61494 => 'Canon CN-E 85mm T1.3 L F', #PH
|
|
567
568
|
61495 => 'Canon CN-E 135mm T2.2 L F', #PH
|
|
568
569
|
61496 => 'Canon CN-E 35mm T1.5 L F', #PH
|
|
569
|
-
|
|
570
|
-
61182
|
|
571
|
-
61182.
|
|
572
|
-
61182.
|
|
573
|
-
61182.
|
|
574
|
-
61182.
|
|
575
|
-
61182.
|
|
576
|
-
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 85mm F2 MACRO IS STM',
|
|
582
|
+
61182.11 => 'Canon RF 600mm F11 IS STM',
|
|
583
|
+
61182.12 => 'Canon RF 600mm F11 IS STM + RF1.4x',
|
|
584
|
+
61182.13 => 'Canon RF 600mm F11 IS STM + RF2x',
|
|
585
|
+
61182.14 => 'Canon RF 800mm F11 IS STM',
|
|
586
|
+
61182.15 => 'Canon RF 800mm F11 IS STM + RF1.4x',
|
|
587
|
+
61182.16 => 'Canon RF 800mm F11 IS STM + RF2x',
|
|
588
|
+
61182.17 => 'Canon RF 24-105mm F4-7.1 IS STM',
|
|
589
|
+
61182.18 => 'Canon RF 100-500mm F4.5-7.1L IS USM',
|
|
590
|
+
61182.19 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x',
|
|
591
|
+
61182.20 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
|
|
577
592
|
65535 => 'n/a',
|
|
578
593
|
);
|
|
579
594
|
|
|
@@ -919,13 +934,16 @@ $VERSION = '4.38';
|
|
|
919
934
|
0x80000406 => 'EOS 6D Mark II', #IB/42
|
|
920
935
|
0x80000408 => 'EOS 77D / 9000D',
|
|
921
936
|
0x80000417 => 'EOS Rebel SL2 / 200D / Kiss X9', #IB/42
|
|
937
|
+
0x80000421 => 'EOS R5', #PH
|
|
922
938
|
0x80000422 => 'EOS Rebel T100 / 4000D / 3000D', #IB (3000D in China; Kiss? - PH)
|
|
923
939
|
0x80000424 => 'EOS R', #IB
|
|
924
940
|
0x80000428 => 'EOS-1D X Mark III', #IB
|
|
925
941
|
0x80000432 => 'EOS Rebel T7 / 2000D / 1500D / Kiss X90', #IB
|
|
926
942
|
0x80000433 => 'EOS RP',
|
|
943
|
+
0x80000435 => 'EOS Rebel T8i / 850D / X10i', #JR/PH
|
|
927
944
|
0x80000436 => 'EOS SL3 / 250D / Kiss X10', #25
|
|
928
945
|
0x80000437 => 'EOS 90D', #IB
|
|
946
|
+
0x80000453 => 'EOS R6', #PH
|
|
929
947
|
0x80000520 => 'EOS D2000C', #IB
|
|
930
948
|
0x80000560 => 'EOS D6000C', #PH (guess)
|
|
931
949
|
);
|
|
@@ -1882,6 +1900,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
1882
1900
|
Name => 'ColorData9',
|
|
1883
1901
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData9' },
|
|
1884
1902
|
},
|
|
1903
|
+
{ # (int16u[2024|3656]) - 1DXmkIII (2024) ref IB, R5/R6 (3656) ref PH
|
|
1904
|
+
Condition => '$count == 2024 or $count == 3656',
|
|
1905
|
+
Name => 'ColorData10',
|
|
1906
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData10' },
|
|
1907
|
+
},
|
|
1885
1908
|
{
|
|
1886
1909
|
Name => 'ColorDataUnknown',
|
|
1887
1910
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorDataUnknown' },
|
|
@@ -5661,6 +5684,13 @@ my %ciMaxFocal = (
|
|
|
5661
5684
|
ValueConv => 'unpack("H*",$val)',
|
|
5662
5685
|
ValueConvInv => 'length($val) < 10 and $val = 0 x (10-length($val)) . $val; pack("H*",$val)',
|
|
5663
5686
|
},
|
|
5687
|
+
0x5c1 => {
|
|
5688
|
+
Name => 'FirmwareVersion',
|
|
5689
|
+
Format => 'string[6]',
|
|
5690
|
+
Writable => 0,
|
|
5691
|
+
Condition => '$$valPt =~ /^\d\.\d\.\d\0/',
|
|
5692
|
+
Notes => 'M50', # (firmware 1.0.0)
|
|
5693
|
+
},
|
|
5664
5694
|
);
|
|
5665
5695
|
|
|
5666
5696
|
# Picture Style information for various cameras (ref 48)
|
|
@@ -6693,7 +6723,18 @@ my %ciMaxFocal = (
|
|
|
6693
6723
|
264 => 'Canon RF 15-35mm F2.8L IS USM',
|
|
6694
6724
|
265 => 'Canon RF 24-240mm F4-6.3 IS USM',
|
|
6695
6725
|
266 => 'Canon RF 70-200mm F2.8L IS USM',
|
|
6726
|
+
267 => 'Canon RF 85mm F2 MACRO IS STM',
|
|
6727
|
+
268 => 'Canon RF 600mm F11 IS STM',
|
|
6728
|
+
269 => 'Canon RF 600mm F11 IS STM + RF1.4x',
|
|
6729
|
+
270 => 'Canon RF 600mm F11 IS STM + RF2x',
|
|
6730
|
+
271 => 'Canon RF 800mm F11 IS STM',
|
|
6731
|
+
272 => 'Canon RF 800mm F11 IS STM + RF1.4x',
|
|
6732
|
+
273 => 'Canon RF 800mm F11 IS STM + RF2x',
|
|
6696
6733
|
274 => 'Canon RF 24-105mm F4-7.1 IS STM',
|
|
6734
|
+
275 => 'Canon RF 100-500mm F4.5-7.1L IS USM',
|
|
6735
|
+
276 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x',
|
|
6736
|
+
277 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
|
|
6737
|
+
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
|
6697
6738
|
},
|
|
6698
6739
|
},
|
|
6699
6740
|
);
|
|
@@ -8038,7 +8079,6 @@ my %ciMaxFocal = (
|
|
|
8038
8079
|
0x149 => { #IB
|
|
8039
8080
|
Name => 'PerChannelBlackLevel',
|
|
8040
8081
|
Format => 'int16u[4]',
|
|
8041
|
-
Notes => '1300D',
|
|
8042
8082
|
},
|
|
8043
8083
|
# 0x318 - PerChannelBlackLevel again (ref IB)
|
|
8044
8084
|
0x31c => { #IB
|
|
@@ -8056,6 +8096,128 @@ my %ciMaxFocal = (
|
|
|
8056
8096
|
},
|
|
8057
8097
|
);
|
|
8058
8098
|
|
|
8099
|
+
# Color data (MakerNotes tag 0x4001, count=2024,3656)
|
|
8100
|
+
# (same as ColorData9 but shifted up by 0x0e, ref PH)
|
|
8101
|
+
%Image::ExifTool::Canon::ColorData10 = (
|
|
8102
|
+
%binaryDataAttrs,
|
|
8103
|
+
FORMAT => 'int16s',
|
|
8104
|
+
FIRST_ENTRY => 0,
|
|
8105
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8106
|
+
DATAMEMBER => [ 0 ],
|
|
8107
|
+
IS_SUBDIR => [ 0x118 ],
|
|
8108
|
+
0x00 => {
|
|
8109
|
+
Name => 'ColorDataVersion',
|
|
8110
|
+
DataMember => 'ColorDataVersion',
|
|
8111
|
+
RawConv => '$$self{ColorDataVersion} = $val',
|
|
8112
|
+
PrintConv => {
|
|
8113
|
+
32 => '32 (1DXmkIII)', #IB
|
|
8114
|
+
33 => '33 (R5/R6)',
|
|
8115
|
+
},
|
|
8116
|
+
},
|
|
8117
|
+
0x55 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
|
|
8118
|
+
0x59 => 'ColorTempAsShot',
|
|
8119
|
+
0x5a => { Name => 'WB_RGGBLevelsAuto', Format => 'int16s[4]' },
|
|
8120
|
+
0x5e => 'ColorTempAuto',
|
|
8121
|
+
0x5f => { Name => 'WB_RGGBLevelsMeasured', Format => 'int16s[4]' },
|
|
8122
|
+
0x63 => 'ColorTempMeasured',
|
|
8123
|
+
0x64 => { Name => 'WB_RGGBLevelsUnknown', Format => 'int16s[4]', Unknown => 1 },
|
|
8124
|
+
0x68 => { Name => 'ColorTempUnknown', Unknown => 1 },
|
|
8125
|
+
0x69 => { Name => 'WB_RGGBLevelsUnknown2', Format => 'int16s[4]', Unknown => 1 },
|
|
8126
|
+
0x6d => { Name => 'ColorTempUnknown2', Unknown => 1 },
|
|
8127
|
+
0x6e => { Name => 'WB_RGGBLevelsUnknown3', Format => 'int16s[4]', Unknown => 1 },
|
|
8128
|
+
0x72 => { Name => 'ColorTempUnknown3', Unknown => 1 },
|
|
8129
|
+
0x73 => { Name => 'WB_RGGBLevelsUnknown4', Format => 'int16s[4]', Unknown => 1 },
|
|
8130
|
+
0x77 => { Name => 'ColorTempUnknown4', Unknown => 1 },
|
|
8131
|
+
0x78 => { Name => 'WB_RGGBLevelsUnknown5', Format => 'int16s[4]', Unknown => 1 },
|
|
8132
|
+
0x7c => { Name => 'ColorTempUnknown5', Unknown => 1 },
|
|
8133
|
+
0x7d => { Name => 'WB_RGGBLevelsUnknown6', Format => 'int16s[4]', Unknown => 1 },
|
|
8134
|
+
0x81 => { Name => 'ColorTempUnknown6', Unknown => 1 },
|
|
8135
|
+
0x82 => { Name => 'WB_RGGBLevelsUnknown7', Format => 'int16s[4]', Unknown => 1 },
|
|
8136
|
+
0x86 => { Name => 'ColorTempUnknown7', Unknown => 1 },
|
|
8137
|
+
0x87 => { Name => 'WB_RGGBLevelsUnknown8', Format => 'int16s[4]', Unknown => 1 },
|
|
8138
|
+
0x8b => { Name => 'ColorTempUnknown8', Unknown => 1 },
|
|
8139
|
+
0x8c => { Name => 'WB_RGGBLevelsUnknown9', Format => 'int16s[4]', Unknown => 1 },
|
|
8140
|
+
0x90 => { Name => 'ColorTempUnknown9', Unknown => 1 },
|
|
8141
|
+
0x91 => { Name => 'WB_RGGBLevelsUnknown10', Format => 'int16s[4]', Unknown => 1 },
|
|
8142
|
+
0x95 => { Name => 'ColorTempUnknown10', Unknown => 1 },
|
|
8143
|
+
0x96 => { Name => 'WB_RGGBLevelsDaylight', Format => 'int16s[4]' },
|
|
8144
|
+
0x9a => 'ColorTempDaylight',
|
|
8145
|
+
0x9b => { Name => 'WB_RGGBLevelsShade', Format => 'int16s[4]' },
|
|
8146
|
+
0x9f => 'ColorTempShade',
|
|
8147
|
+
0xa0 => { Name => 'WB_RGGBLevelsCloudy', Format => 'int16s[4]' },
|
|
8148
|
+
0xa4 => 'ColorTempCloudy',
|
|
8149
|
+
0xa5 => { Name => 'WB_RGGBLevelsTungsten', Format => 'int16s[4]' },
|
|
8150
|
+
0xa9 => 'ColorTempTungsten',
|
|
8151
|
+
0xaa => { Name => 'WB_RGGBLevelsFluorescent',Format => 'int16s[4]' },
|
|
8152
|
+
0xae => 'ColorTempFluorescent',
|
|
8153
|
+
0xaf => { Name => 'WB_RGGBLevelsKelvin', Format => 'int16s[4]' },
|
|
8154
|
+
0xb3 => 'ColorTempKelvin',
|
|
8155
|
+
0xb4 => { Name => 'WB_RGGBLevelsFlash', Format => 'int16s[4]' },
|
|
8156
|
+
0xb8 => 'ColorTempFlash',
|
|
8157
|
+
0xb9 => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 },
|
|
8158
|
+
0xbd => { Name => 'ColorTempUnknown11', Unknown => 1 },
|
|
8159
|
+
0xbe => { Name => 'WB_RGGBLevelsUnknown12', Format => 'int16s[4]', Unknown => 1 },
|
|
8160
|
+
0xc2 => { Name => 'ColorTempUnknown12', Unknown => 1 },
|
|
8161
|
+
0xc3 => { Name => 'WB_RGGBLevelsUnknown13', Format => 'int16s[4]', Unknown => 1 },
|
|
8162
|
+
0xc7 => { Name => 'ColorTempUnknown13', Unknown => 1 },
|
|
8163
|
+
0xc8 => { Name => 'WB_RGGBLevelsUnknown14', Format => 'int16s[4]', Unknown => 1 },
|
|
8164
|
+
0xcc => { Name => 'ColorTempUnknown14', Unknown => 1 },
|
|
8165
|
+
0xcd => { Name => 'WB_RGGBLevelsUnknown15', Format => 'int16s[4]', Unknown => 1 },
|
|
8166
|
+
0xd1 => { Name => 'ColorTempUnknown15', Unknown => 1 },
|
|
8167
|
+
0xd2 => { Name => 'WB_RGGBLevelsUnknown16', Format => 'int16s[4]', Unknown => 1 },
|
|
8168
|
+
0xd6 => { Name => 'ColorTempUnknown16', Unknown => 1 },
|
|
8169
|
+
0xd7 => { Name => 'WB_RGGBLevelsUnknown17', Format => 'int16s[4]', Unknown => 1 },
|
|
8170
|
+
0xdb => { Name => 'ColorTempUnknown17', Unknown => 1 },
|
|
8171
|
+
0xdc => { Name => 'WB_RGGBLevelsUnknown18', Format => 'int16s[4]', Unknown => 1 },
|
|
8172
|
+
0xe0 => { Name => 'ColorTempUnknown18', Unknown => 1 },
|
|
8173
|
+
0xe1 => { Name => 'WB_RGGBLevelsUnknown19', Format => 'int16s[4]', Unknown => 1 },
|
|
8174
|
+
0xe5 => { Name => 'ColorTempUnknown19', Unknown => 1 },
|
|
8175
|
+
0xe6 => { Name => 'WB_RGGBLevelsUnknown20', Format => 'int16s[4]', Unknown => 1 },
|
|
8176
|
+
0xea => { Name => 'ColorTempUnknown20', Unknown => 1 },
|
|
8177
|
+
0xeb => { Name => 'WB_RGGBLevelsUnknown21', Format => 'int16s[4]', Unknown => 1 },
|
|
8178
|
+
0xef => { Name => 'ColorTempUnknown21', Unknown => 1 },
|
|
8179
|
+
0xf0 => { Name => 'WB_RGGBLevelsUnknown22', Format => 'int16s[4]', Unknown => 1 },
|
|
8180
|
+
0xf4 => { Name => 'ColorTempUnknown22', Unknown => 1 },
|
|
8181
|
+
0xf5 => { Name => 'WB_RGGBLevelsUnknown23', Format => 'int16s[4]', Unknown => 1 },
|
|
8182
|
+
0xf9 => { Name => 'ColorTempUnknown23', Unknown => 1 },
|
|
8183
|
+
0xfa => { Name => 'WB_RGGBLevelsUnknown24', Format => 'int16s[4]', Unknown => 1 },
|
|
8184
|
+
0xfe => { Name => 'ColorTempUnknown24', Unknown => 1 },
|
|
8185
|
+
0xff => { Name => 'WB_RGGBLevelsUnknown25', Format => 'int16s[4]', Unknown => 1 },
|
|
8186
|
+
0x103=> { Name => 'ColorTempUnknown25', Unknown => 1 },
|
|
8187
|
+
0x104=> { Name => 'WB_RGGBLevelsUnknown26', Format => 'int16s[4]', Unknown => 1 },
|
|
8188
|
+
0x108=> { Name => 'ColorTempUnknown26', Unknown => 1 },
|
|
8189
|
+
0x109=> { Name => 'WB_RGGBLevelsUnknown27', Format => 'int16s[4]', Unknown => 1 },
|
|
8190
|
+
0x10d=> { Name => 'ColorTempUnknown27', Unknown => 1 },
|
|
8191
|
+
0x10e=> { Name => 'WB_RGGBLevelsUnknown28', Format => 'int16s[4]', Unknown => 1 },
|
|
8192
|
+
0x112=> { Name => 'ColorTempUnknown28', Unknown => 1 },
|
|
8193
|
+
0x113=> { Name => 'WB_RGGBLevelsUnknown29', Format => 'int16s[4]', Unknown => 1 },
|
|
8194
|
+
0x117=> { Name => 'ColorTempUnknown29', Unknown => 1 },
|
|
8195
|
+
0x118 => {
|
|
8196
|
+
Name => 'ColorCalib',
|
|
8197
|
+
Format => 'undef[120]',
|
|
8198
|
+
Unknown => 1,
|
|
8199
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' }
|
|
8200
|
+
},
|
|
8201
|
+
0x157 => {
|
|
8202
|
+
Name => 'PerChannelBlackLevel',
|
|
8203
|
+
Format => 'int16u[4]',
|
|
8204
|
+
},
|
|
8205
|
+
# 0x326 - PerChannelBlackLevel again
|
|
8206
|
+
0x32a => {
|
|
8207
|
+
Name => 'NormalWhiteLevel',
|
|
8208
|
+
Format => 'int16u',
|
|
8209
|
+
RawConv => '$val || undef',
|
|
8210
|
+
},
|
|
8211
|
+
0x32b => {
|
|
8212
|
+
Name => 'SpecularWhiteLevel',
|
|
8213
|
+
Format => 'int16u',
|
|
8214
|
+
},
|
|
8215
|
+
0x32c => {
|
|
8216
|
+
Name => 'LinearityUpperMargin',
|
|
8217
|
+
Format => 'int16u',
|
|
8218
|
+
},
|
|
8219
|
+
);
|
|
8220
|
+
|
|
8059
8221
|
# Unknown color data (MakerNotes tag 0x4001)
|
|
8060
8222
|
%Image::ExifTool::Canon::ColorDataUnknown = (
|
|
8061
8223
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
@@ -8564,7 +8726,7 @@ my %filterConv = (
|
|
|
8564
8726
|
Name => 'MakerNoteCanon',
|
|
8565
8727
|
SubDirectory => {
|
|
8566
8728
|
TagTable => 'Image::ExifTool::Canon::Main',
|
|
8567
|
-
ProcessProc => \&
|
|
8729
|
+
ProcessProc => \&ProcessCMT3,
|
|
8568
8730
|
WriteProc => \&Image::ExifTool::WriteTIFF,
|
|
8569
8731
|
},
|
|
8570
8732
|
},
|
|
@@ -9510,6 +9672,33 @@ sub CanonEvInv($)
|
|
|
9510
9672
|
return $sign * ($val * 0x20 + $frac);
|
|
9511
9673
|
}
|
|
9512
9674
|
|
|
9675
|
+
#------------------------------------------------------------------------------
|
|
9676
|
+
# Read CMT3 maker notes from CR3 file
|
|
9677
|
+
# Inputs: 0) ExifTool object reference, 1) dirInfo ref, 2) tag table ref
|
|
9678
|
+
# Returns: data block (may be empty if no Exif data) or undef on error
|
|
9679
|
+
sub ProcessCMT3($$$)
|
|
9680
|
+
{
|
|
9681
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
|
9682
|
+
|
|
9683
|
+
# extract the static maker notes to copying to other file types if requested
|
|
9684
|
+
# Note: this won't copy makernotes in the timed metadata since these are stored
|
|
9685
|
+
# separately, but the only records they have that aren't in the static maker notes
|
|
9686
|
+
# (for the M50) are: ColorData9, Flavor, CanonCameraInfoUnknown,
|
|
9687
|
+
# VignettingCorrUnknown1, Canon_0x4033 and Canon_0x402e
|
|
9688
|
+
if (($et->Options('MakerNotes') or $$et{REQ_TAG_LOOKUP}{makernotecanon}) and
|
|
9689
|
+
$$dirInfo{DirLen} > 8)
|
|
9690
|
+
{
|
|
9691
|
+
my $dataPt = $$dirInfo{DataPt};
|
|
9692
|
+
# remove old (unused) trailer
|
|
9693
|
+
$$dataPt =~ s/(II\x2a\0|MM\0\x2a)\0{4,10}$//;
|
|
9694
|
+
# remove TIFF header and append as the Canon makernote trailer
|
|
9695
|
+
# (so offsets will be interpreted correctly)
|
|
9696
|
+
my $val = substr($$dataPt,8) . substr($$dataPt,0,8);
|
|
9697
|
+
$et->FoundTag($Image::ExifTool::Canon::uuid{CMT3}, \$val);
|
|
9698
|
+
}
|
|
9699
|
+
return $et->ProcessTIFF($dirInfo, $tagTablePtr);
|
|
9700
|
+
}
|
|
9701
|
+
|
|
9513
9702
|
#------------------------------------------------------------------------------
|
|
9514
9703
|
# Process CTMD EXIF information
|
|
9515
9704
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|