exiftool_vendored 11.94.0 → 12.06.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 +5 -5
- data/bin/Changes +163 -3
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +32 -32
- data/bin/exiftool +152 -52
- data/bin/lib/Image/ExifTool.pm +166 -115
- data/bin/lib/Image/ExifTool.pod +108 -81
- 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 +13 -7
- data/bin/lib/Image/ExifTool/Canon.pm +6 -3
- 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 +16 -3
- 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 +5 -0
- data/bin/lib/Image/ExifTool/GeoTiff.pm +2 -0
- data/bin/lib/Image/ExifTool/Geotag.pm +69 -21
- data/bin/lib/Image/ExifTool/GoPro.pm +10 -1
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +2 -2
- data/bin/lib/Image/ExifTool/ID3.pm +91 -12
- 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 +44 -24
- data/bin/lib/Image/ExifTool/MWG.pm +9 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +3 -2
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +11 -10
- data/bin/lib/Image/ExifTool/Nikon.pm +156 -18
- data/bin/lib/Image/ExifTool/Olympus.pm +34 -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 +147 -13
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +33 -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 +277 -33
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +460 -67
- data/bin/lib/Image/ExifTool/README +21 -20
- data/bin/lib/Image/ExifTool/RIFF.pm +123 -3
- data/bin/lib/Image/ExifTool/RTF.pm +12 -7
- 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 +379 -12
- data/bin/lib/Image/ExifTool/TagLookup.pm +1959 -1874
- data/bin/lib/Image/ExifTool/TagNames.pod +346 -55
- 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 -15
- data/bin/lib/Image/ExifTool/Writer.pl +52 -23
- data/bin/lib/Image/ExifTool/XMP.pm +41 -4
- data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +123 -0
- data/bin/perl-Image-ExifTool.spec +31 -31
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +4 -4
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -65,35 +65,36 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
65
65
|
|
66
66
|
File Types
|
67
67
|
------------+-------------+-------------+-------------+------------
|
68
|
-
3FR r |
|
69
|
-
3G2 r/w |
|
70
|
-
3GP r/w |
|
71
|
-
A r |
|
72
|
-
AA r |
|
73
|
-
AAE r |
|
74
|
-
AAX r/w |
|
75
|
-
ACR r |
|
76
|
-
AFM r |
|
77
|
-
AI r/w |
|
78
|
-
AIFF r |
|
79
|
-
APE r |
|
80
|
-
ARQ r/w |
|
81
|
-
ARW r/w |
|
82
|
-
ASF r |
|
83
|
-
AVI r |
|
84
|
-
AVIF r/w |
|
85
|
-
AZW r |
|
86
|
-
BMP r |
|
87
|
-
BPG r |
|
88
|
-
BTF r |
|
89
|
-
CHM r |
|
90
|
-
COS r |
|
91
|
-
CR2 r/w |
|
92
|
-
CR3 r/w |
|
93
|
-
CRM r/w |
|
94
|
-
CRW r/w |
|
95
|
-
CS1 r/w |
|
96
|
-
CSV r |
|
68
|
+
3FR r | DPX r | ISO r | O r | RAW r/w
|
69
|
+
3G2 r/w | DR4 r/w/c | ITC r | ODP r | RIFF r
|
70
|
+
3GP r/w | DSS r | J2C r | ODS r | RSRC r
|
71
|
+
A r | DV r | JNG r/w | ODT r | RTF r
|
72
|
+
AA r | DVB r/w | JP2 r/w | OFR r | RW2 r/w
|
73
|
+
AAE r | DVR-MS r | JPEG r/w | OGG r | RWL r/w
|
74
|
+
AAX r/w | DYLIB r | JSON r | OGV r | RWZ r
|
75
|
+
ACR r | EIP r | K25 r | OPUS r | RM r
|
76
|
+
AFM r | EPS r/w | KDC r | ORF r/w | SEQ r
|
77
|
+
AI r/w | EPUB r | KEY r | OTF r | SKETCH r
|
78
|
+
AIFF r | ERF r/w | LA r | PAC r | SO r
|
79
|
+
APE r | EXE r | LFP r | PAGES r | SR2 r/w
|
80
|
+
ARQ r/w | EXIF r/w/c | LNK r | PBM r/w | SRF r
|
81
|
+
ARW r/w | EXR r | LRV r/w | PCD r | SRW r/w
|
82
|
+
ASF r | EXV r/w/c | M2TS r | PCX r | SVG r
|
83
|
+
AVI r | F4A/V r/w | M4A/V r/w | PDB r | SWF r
|
84
|
+
AVIF r/w | FFF r/w | MAX r | PDF r/w | THM r/w
|
85
|
+
AZW r | FITS r | MEF r/w | PEF r/w | TIFF r/w
|
86
|
+
BMP r | FLA r | MIE r/w/c | PFA r | TORRENT r
|
87
|
+
BPG r | FLAC r | MIFF r | PFB r | TTC r
|
88
|
+
BTF r | FLIF r/w | MKA r | PFM r | TTF r
|
89
|
+
CHM r | FLV r | MKS r | PGF r | TXT r
|
90
|
+
COS r | FPF r | MKV r | PGM r/w | VCF r
|
91
|
+
CR2 r/w | FPX r | MNG r/w | PLIST r | VRD r/w/c
|
92
|
+
CR3 r/w | GIF r/w | MOBI r | PICT r | VSD r
|
93
|
+
CRM r/w | GPR r/w | MODD r | PMP r | WAV r
|
94
|
+
CRW r/w | GZ r | MOI r | PNG r/w | WDP r/w
|
95
|
+
CS1 r/w | HDP r/w | MOS r/w | PPM r/w | WEBP r
|
96
|
+
CSV r | HDR r | MOV r/w | PPT r | WEBM r
|
97
|
+
CZI r | HEIC r/w | MP3 r | PPTX r | WMA r
|
97
98
|
DCM r | HEIF r/w | MP4 r/w | PS r/w | WMV r
|
98
99
|
DCP r/w | HTML r | MPC r | PSB r/w | WTV r
|
99
100
|
DCR r | ICC r/w/c | MPG r | PSD r/w | WV r
|
@@ -104,7 +105,6 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
104
105
|
DNG r/w | INSP r/w | NEF r/w | RAF r/w | XMP r/w/c
|
105
106
|
DOC r | INSV r | NRW r/w | RAM r | ZIP r
|
106
107
|
DOCX r | INX r | NUMBERS r | RAR r |
|
107
|
-
DPX r | ISO r | O r | RAW r/w |
|
108
108
|
|
109
109
|
Meta Information
|
110
110
|
----------------------+----------------------+---------------------
|
@@ -652,16 +652,17 @@ based on the file's extension. Default is undef.
|
|
652
652
|
|
653
653
|
Perl expression used to filter values for all tags. The expression acts on
|
654
654
|
the value of the Perl default variable ($_), and changes the value of this
|
655
|
-
variable as required. The
|
656
|
-
|
657
|
-
|
655
|
+
variable as required. The current ExifTool object may be accessed through
|
656
|
+
$self. The value is not changed if $_ is set to undef. List items are
|
657
|
+
filtered individually. Applies to all returned values unless PrintConv
|
658
|
+
option is disabled.
|
658
659
|
|
659
660
|
=item FilterW
|
660
661
|
|
661
662
|
Perl expression used to filter PrintConv values when writing. The
|
662
663
|
expression acts on the value of the Perl default variable ($_), and changes
|
663
|
-
the value of this variable as required. The
|
664
|
-
set to undef.
|
664
|
+
the value of this variable as required. The current ExifTool object may be
|
665
|
+
accessed through $self. The tag is not written if $_ is set to undef.
|
665
666
|
|
666
667
|
=item FixBase
|
667
668
|
|
@@ -730,6 +731,11 @@ to be excluded by preceding group name with a '-'. See L</GetGroup> for a
|
|
730
731
|
description of group families, and L</GetAllGroups [static]> for lists of
|
731
732
|
group names.
|
732
733
|
|
734
|
+
=item HexTagIDs
|
735
|
+
|
736
|
+
Use hexadecimal instead of decimal for the family 7 group names of tags with
|
737
|
+
numerical ID's.
|
738
|
+
|
733
739
|
=item HtmlDump
|
734
740
|
|
735
741
|
Dump information in hex to dynamic HTML web page. The value may be 0-3 for
|
@@ -808,6 +814,11 @@ formatting expression returns undef). If not set, a minor error is issued
|
|
808
814
|
for missing values, or the value is set to '' if L</IgnoreMinorErrors> is
|
809
815
|
set. Default is undef.
|
810
816
|
|
817
|
+
=item NoMultiExif
|
818
|
+
|
819
|
+
Raise error when attempting to write multi-segment EXIF in a JPEG image.
|
820
|
+
Default is undef.
|
821
|
+
|
811
822
|
=item NoPDFList
|
812
823
|
|
813
824
|
Flag to avoid splitting PDF list-type tag values into separate items.
|
@@ -1600,7 +1611,8 @@ values in list context.
|
|
1600
1611
|
|
1601
1612
|
0) ExifTool object reference
|
1602
1613
|
|
1603
|
-
1) Tag name (case sensitive, may be prefixed by family 0 or
|
1614
|
+
1) Tag name (case sensitive, may be prefixed by family 0, 1 or 7 group
|
1615
|
+
names, separated by colons)
|
1604
1616
|
|
1605
1617
|
=item Return Values:
|
1606
1618
|
|
@@ -1662,34 +1674,35 @@ in a specified file.
|
|
1662
1674
|
|
1663
1675
|
2-N) [optional] List of tag names to set or options hash references. All
|
1664
1676
|
writable tags are set if none are specified. The tag names are not case
|
1665
|
-
sensitive, and may be prefixed by one or more family 0, 1 or
|
1666
|
-
with optional leading family numbers, separated by colons (eg.
|
1667
|
-
A leading '-' indicates tags to be excluded (eg. '-comment'),
|
1668
|
-
'#' causes the ValueConv value to be copied (same as setting
|
1669
|
-
to 'ValueConv' for this tag only). Wildcards ('*' and '?')
|
1670
|
-
the tag name. A tag name of '*' is commonly used when a
|
1671
|
-
to copy all tags in the group (eg. 'XMP:*'). A special
|
1672
|
-
names of the form 'DSTTAGE<lt>SRCTAG' (or
|
1673
|
-
specified to copy information to a tag with a
|
1674
|
-
group. Both 'SRCTAG' and 'DSTTAG' may contain
|
1675
|
-
by a group name (eg.
|
1676
|
-
and/or suffixed by a '#'
|
1677
|
-
|
1678
|
-
'DSTTAG+E<lt>SRCTAG' or
|
1679
|
-
|
1680
|
-
|
1681
|
-
|
1682
|
-
Braces '{}' may be used
|
1683
|
-
|
1684
|
-
|
1685
|
-
The tag value may be modified
|
1686
|
-
|
1687
|
-
following the tag name (see the last
|
1688
|
-
after the tag name (before the
|
1689
|
-
|
1690
|
-
|
1691
|
-
references may be passed to set
|
1692
|
-
Options apply to subsequent tags in
|
1677
|
+
sensitive, and may be prefixed by one or more family 0, 1, 2 or 7 group
|
1678
|
+
names with optional leading family numbers, separated by colons (eg.
|
1679
|
+
'exif:iso'). A leading '-' indicates tags to be excluded (eg. '-comment'),
|
1680
|
+
or a trailing '#' causes the ValueConv value to be copied (same as setting
|
1681
|
+
the Type option to 'ValueConv' for this tag only). Wildcards ('*' and '?')
|
1682
|
+
may be used in the tag name. A tag name of '*' is commonly used when a
|
1683
|
+
group is specified to copy all tags in the group (eg. 'XMP:*'). A special
|
1684
|
+
feature allows tag names of the form 'DSTTAGE<lt>SRCTAG' (or
|
1685
|
+
'SRCTAGE<gt>DSTTAG') to be specified to copy information to a tag with a
|
1686
|
+
different name or a specified group. Both 'SRCTAG' and 'DSTTAG' may contain
|
1687
|
+
wildcards and/or be prefixed by a group name (eg.
|
1688
|
+
'fileModifyDateE<lt>modifyDate' or 'xmp:*E<lt>*'), and/or suffixed by a '#'
|
1689
|
+
to disable print conversion. Copied tags may also be added or deleted from
|
1690
|
+
a list with arguments of the form 'DSTTAG+E<lt>SRCTAG' or
|
1691
|
+
'DSTTAG-E<lt>SRCTAG'. Tags are evaluated in order, so exclusions apply only
|
1692
|
+
to tags included earlier in the list. An extension of this feature allows
|
1693
|
+
the tag value to be set from a string containing tag names with leading '$'
|
1694
|
+
symbols (eg. 'CommentE<lt>the file is $filename'). Braces '{}' may be used
|
1695
|
+
around the tag name to separate it from subsequent text, and a '$$' is used
|
1696
|
+
to to represent a '$' symbol. The behaviour for missing tags in expressions
|
1697
|
+
is defined by the L</MissingTagValue> option. The tag value may be modified
|
1698
|
+
via changes to the default input variable ($_) in a Perl expression placed
|
1699
|
+
inside the braces and after a semicolon following the tag name (see the last
|
1700
|
+
example above). A '@' may be added after the tag name (before the
|
1701
|
+
semicolon) to make the expression act on individual list items instead of
|
1702
|
+
the concatenated string for list-type tags. Braces within the expression
|
1703
|
+
must be balanced. Multiple options hash references may be passed to set
|
1704
|
+
different options for different tags. Options apply to subsequent tags in
|
1705
|
+
the argument list.
|
1693
1706
|
|
1694
1707
|
By default, this routine will commute information between same-named tags in
|
1695
1708
|
different groups, allowing information to be translated between images with
|
@@ -2066,6 +2079,14 @@ Family 6 is currently used only for EXIF/TIFF metadata, and gives the format
|
|
2066
2079
|
type of the extracted value. Generated only if the L</SaveFormat> option is
|
2067
2080
|
used when extracting.
|
2068
2081
|
|
2082
|
+
Family 7 is used for tag ID's. The group names are "ID-" followed by the
|
2083
|
+
tag ID with characters other than [-_A-Za-z0-9] converted to hex. Numerical
|
2084
|
+
tag ID's are given in hex if the L</HexTagIDs> option is set. When
|
2085
|
+
specifying a family 7 group name, numerical ID's may be in hex or decimal,
|
2086
|
+
and non-numercal ID's may or may not have characters other than
|
2087
|
+
[-_A-Za-z0-9] converted to hex. Note that unlike other group names, family
|
2088
|
+
7 group names are case sensitive (except for the leading "ID-").
|
2089
|
+
|
2069
2090
|
See L</GetAllGroups [static]> for complete lists of group names.
|
2070
2091
|
|
2071
2092
|
=back
|
@@ -2259,22 +2280,22 @@ ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh,
|
|
2259
2280
|
ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,
|
2260
2281
|
InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JVC, Jpeg2000,
|
2261
2282
|
KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD,
|
2262
|
-
KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lytro, M2TS, MAC,
|
2263
|
-
MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS,
|
2264
|
-
MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta,
|
2265
|
-
MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
|
2266
|
-
MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
|
2267
|
-
MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
|
2268
|
-
MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
|
2269
|
-
Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG,
|
2270
|
-
Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD,
|
2271
|
-
Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM,
|
2272
|
-
Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
|
2273
|
-
Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4,
|
2274
|
-
Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
|
2275
|
-
SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim,
|
2276
|
-
System, Theora, Torrent, Track#, UserData, UserParam, VCalendar,
|
2277
|
-
Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio,
|
2283
|
+
KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC,
|
2284
|
+
MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS,
|
2285
|
+
MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta,
|
2286
|
+
MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
|
2287
|
+
MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
|
2288
|
+
MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
|
2289
|
+
Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
|
2290
|
+
NikonScan, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG,
|
2291
|
+
PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD,
|
2292
|
+
PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM,
|
2293
|
+
ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
|
2294
|
+
Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4,
|
2295
|
+
Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
|
2296
|
+
SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim,
|
2297
|
+
SubIFD, System, Theora, Torrent, Track#, UserData, UserParam, VCalendar,
|
2298
|
+
VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio,
|
2278
2299
|
XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage,
|
2279
2300
|
XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
|
2280
2301
|
XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc,
|
@@ -2308,6 +2329,12 @@ eg. JPEG-APP1-IFD0-ExifIFD
|
|
2308
2329
|
int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s,
|
2309
2330
|
rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
|
2310
2331
|
|
2332
|
+
=item Family 7 (Tag ID):
|
2333
|
+
|
2334
|
+
ID-xxx (where xxx is the tag ID. Numerical ID's are given in hex with a
|
2335
|
+
leading "0x" if the HexTagIDs option is set, as are characters in
|
2336
|
+
non-numerical ID's which are not valid in a group name)
|
2337
|
+
|
2311
2338
|
=back
|
2312
2339
|
|
2313
2340
|
=head2 GetDeleteGroups [static]
|
@@ -2587,7 +2614,7 @@ IPTC Core and Extension specifications actually use the XMP format.)
|
|
2587
2614
|
|
2588
2615
|
=head2 XMP
|
2589
2616
|
|
2590
|
-
|
2617
|
+
ExifTool reads XMP encoded as UTF-8, UTF-16 or UTF-32, and converts them all
|
2591
2618
|
to UTF-8 internally. Also, all XML character entity references and numeric
|
2592
2619
|
character references are converted. When writing, ExifTool always encodes
|
2593
2620
|
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.37';
|
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
|
@@ -877,6 +877,11 @@ TagID: foreach $tagID (@keys) {
|
|
877
877
|
$case{$lc} = $name;
|
878
878
|
}
|
879
879
|
my $format = $$tagInfo{Format};
|
880
|
+
# check TagID's to make sure they don't start with 'ID-'
|
881
|
+
my @grps = $et->GetGroup($tagInfo);
|
882
|
+
foreach (@grps) {
|
883
|
+
warn "Group name starts with 'ID-' for $short $name\n" if /^ID-/i;
|
884
|
+
}
|
880
885
|
# validate Name (must not start with a digit or else XML output will not be valid;
|
881
886
|
# must not start with a dash or exiftool command line may get confused)
|
882
887
|
if ($name !~ /^[_A-Za-z][-\w]+$/ and
|
@@ -1474,7 +1479,8 @@ TagID: foreach $tagID (@keys) {
|
|
1474
1479
|
my $tag;
|
1475
1480
|
foreach $tag (sort keys %$struct) {
|
1476
1481
|
my $tagInfo = $$struct{$tag};
|
1477
|
-
next unless ref $tagInfo eq 'HASH' and $tag ne 'NAMESPACE';
|
1482
|
+
next unless ref $tagInfo eq 'HASH' and $tag ne 'NAMESPACE' and $tag ne 'GROUPS';
|
1483
|
+
warn "WARNING: $strName Struct containes $tag\n" if $Image::ExifTool::specialTags{$tag};
|
1478
1484
|
my $writable = $$tagInfo{Writable};
|
1479
1485
|
my @vals;
|
1480
1486
|
unless ($writable) {
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.39';
|
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.36';
|
|
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,6 +487,7 @@ $VERSION = '4.36';
|
|
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)
|
490
|
+
368.10 => 'Sigma 35mm f/1.4 DG HSM | A', #PH (012)
|
489
491
|
'368.10' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018)
|
490
492
|
# Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
|
491
493
|
488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
|
@@ -532,7 +534,7 @@ $VERSION = '4.36';
|
|
532
534
|
757 => 'Canon EF 400mm f/2.8L IS III USM', #IB
|
533
535
|
758 => 'Canon EF 600mm f/4L IS III USM', #IB
|
534
536
|
|
535
|
-
1136 => 'Sigma 24-70mm f/2.8 DG OS HSM |
|
537
|
+
1136 => 'Sigma 24-70mm f/2.8 DG OS HSM | A', #IB (017)
|
536
538
|
# (STM lenses - 0x10xx)
|
537
539
|
4142 => 'Canon EF-S 18-135mm f/3.5-5.6 IS STM',
|
538
540
|
4143 => 'Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens',
|
@@ -922,6 +924,7 @@ $VERSION = '4.36';
|
|
922
924
|
0x80000428 => 'EOS-1D X Mark III', #IB
|
923
925
|
0x80000432 => 'EOS Rebel T7 / 2000D / 1500D / Kiss X90', #IB
|
924
926
|
0x80000433 => 'EOS RP',
|
927
|
+
0x80000435 => 'EOS Rebel T8i / 850D / X10i', #JR/PH
|
925
928
|
0x80000436 => 'EOS SL3 / 250D / Kiss X10', #25
|
926
929
|
0x80000437 => 'EOS 90D', #IB
|
927
930
|
0x80000520 => 'EOS D2000C', #IB
|
@@ -19,7 +19,7 @@ use Image::ExifTool qw(:DataAccess);
|
|
19
19
|
use Image::ExifTool::Canon;
|
20
20
|
use Image::ExifTool::Exif;
|
21
21
|
|
22
|
-
$VERSION = '1.
|
22
|
+
$VERSION = '1.57';
|
23
23
|
|
24
24
|
sub ProcessCanonCustom($$$);
|
25
25
|
sub ProcessCanonCustom2($$$);
|
@@ -1326,9 +1326,15 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
1326
1326
|
2 => 'Enable (ISO speed)',
|
1327
1327
|
},
|
1328
1328
|
},
|
1329
|
-
0x0109 => {
|
1329
|
+
0x0109 => [{ # (1DXmkIII)
|
1330
1330
|
Name => 'UsableShootingModes',
|
1331
|
-
|
1331
|
+
Condition => '$count == 1',
|
1332
|
+
Count => 1,
|
1333
|
+
PrintConv => 'sprintf("Flags 0x%x",$val)',
|
1334
|
+
PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
1335
|
+
},{
|
1336
|
+
Name => 'UsableShootingModes',
|
1337
|
+
Count => 2,
|
1332
1338
|
PrintConv => [
|
1333
1339
|
\%disableEnable,
|
1334
1340
|
'sprintf("Flags 0x%x",$val)', # (M, Tv, Av, P, Bulb)
|
@@ -1337,10 +1343,16 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
1337
1343
|
undef,
|
1338
1344
|
'$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
1339
1345
|
],
|
1340
|
-
},
|
1341
|
-
0x010a => {
|
1346
|
+
}],
|
1347
|
+
0x010a => [{ # (1DXmkIII)
|
1342
1348
|
Name => 'UsableMeteringModes',
|
1343
|
-
|
1349
|
+
Condition => '$count == 1',
|
1350
|
+
Count => 1,
|
1351
|
+
PrintConv => 'sprintf("Flags 0x%x",$val)',
|
1352
|
+
PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
1353
|
+
},{
|
1354
|
+
Name => 'UsableMeteringModes',
|
1355
|
+
Count => 2,
|
1344
1356
|
PrintConv => [
|
1345
1357
|
\%disableEnable,
|
1346
1358
|
'sprintf("Flags 0x%x",$val)', # (evaluative,partial,spot,center-weighted average)
|
@@ -1349,7 +1361,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
1349
1361
|
undef,
|
1350
1362
|
'$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
1351
1363
|
],
|
1352
|
-
},
|
1364
|
+
}],
|
1353
1365
|
0x010b => {
|
1354
1366
|
Name => 'ExposureModeInManual',
|
1355
1367
|
PrintConv => {
|
@@ -2066,7 +2078,27 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2066
2078
|
2 => 'Enable: Down with Set',
|
2067
2079
|
},
|
2068
2080
|
},
|
2069
|
-
0x0610 => {
|
2081
|
+
0x0610 => [{ # (1DXmkIII)
|
2082
|
+
Name => 'ContinuousShootingSpeed',
|
2083
|
+
Condition => '$count == 6',
|
2084
|
+
Count => 6,
|
2085
|
+
PrintConv => [
|
2086
|
+
\%disableEnable,
|
2087
|
+
'"Hi $val"',
|
2088
|
+
'"Cont $val"',
|
2089
|
+
'"Lo $val"',
|
2090
|
+
'"Soft $val"',
|
2091
|
+
'"Soft LS $val"',
|
2092
|
+
],
|
2093
|
+
PrintConvInv => [
|
2094
|
+
undef,
|
2095
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2096
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2097
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2098
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2099
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2100
|
+
],
|
2101
|
+
},{ # others
|
2070
2102
|
Name => 'ContinuousShootingSpeed',
|
2071
2103
|
Count => 3,
|
2072
2104
|
PrintConv => [
|
@@ -2079,7 +2111,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2079
2111
|
'$val=~/(\d+)/ ? $1 : 0',
|
2080
2112
|
'$val=~/(\d+)/ ? $1 : 0',
|
2081
2113
|
],
|
2082
|
-
},
|
2114
|
+
}],
|
2083
2115
|
0x0611 => {
|
2084
2116
|
Name => 'ContinuousShotLimit',
|
2085
2117
|
Count => 2,
|
@@ -2092,9 +2124,15 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2092
2124
|
'$val=~/(\d+)/ ? $1 : 0',
|
2093
2125
|
],
|
2094
2126
|
},
|
2095
|
-
0x0612 => { # (
|
2127
|
+
0x0612 => [{ # (1DXmkIII)
|
2128
|
+
Name => 'RestrictDriveModes',
|
2129
|
+
Condition => '$count == 1',
|
2130
|
+
Count => 1,
|
2131
|
+
PrintConv => 'sprintf("Flags 0x%x",$val)',
|
2132
|
+
PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
2133
|
+
},{ # (1DX)
|
2096
2134
|
Name => 'RestrictDriveModes',
|
2097
|
-
Count => 2,
|
2135
|
+
Count => 2,
|
2098
2136
|
PrintConv => [
|
2099
2137
|
\%disableEnable,
|
2100
2138
|
'sprintf("Flags 0x%x",$val)', # (Single,Cont Hi,Cont Lo,Timer 10,Timer 2,Silent,Super Hi)
|
@@ -2103,7 +2141,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2103
2141
|
undef,
|
2104
2142
|
'$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
2105
2143
|
],
|
2106
|
-
},
|
2144
|
+
}],
|
2107
2145
|
#### 4a) Operation
|
2108
2146
|
0x0701 => [
|
2109
2147
|
{
|
@@ -2458,7 +2496,21 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2458
2496
|
},
|
2459
2497
|
},
|
2460
2498
|
],
|
2461
|
-
0x080c => {
|
2499
|
+
0x080c => [{ # (1DXmkIII)
|
2500
|
+
Name => 'TimerLength',
|
2501
|
+
Condition => '$count == 3',
|
2502
|
+
Count => 3,
|
2503
|
+
PrintConv => [
|
2504
|
+
'"6 s: $val"',
|
2505
|
+
'"16 s: $val"',
|
2506
|
+
'"After release: $val"',
|
2507
|
+
],
|
2508
|
+
PrintConvInv => [
|
2509
|
+
'$val=~/(\d+)$/ ? $1 : 0',
|
2510
|
+
'$val=~/(\d+)$/ ? $1 : 0',
|
2511
|
+
'$val=~/(\d+)$/ ? $1 : 0',
|
2512
|
+
],
|
2513
|
+
},{
|
2462
2514
|
Name => 'TimerLength',
|
2463
2515
|
Count => 4,
|
2464
2516
|
PrintConv => [
|
@@ -2473,7 +2525,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2473
2525
|
'$val=~/(\d+)$/ ? $1 : 0',
|
2474
2526
|
'$val=~/(\d+)$/ ? $1 : 0',
|
2475
2527
|
],
|
2476
|
-
},
|
2528
|
+
}],
|
2477
2529
|
0x080d => {
|
2478
2530
|
Name => 'ShortReleaseTimeLag',
|
2479
2531
|
PrintConv => \%disableEnable,
|
@@ -2520,6 +2572,8 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2520
2572
|
PrintConv => {
|
2521
2573
|
0 => 'Cancel selected',
|
2522
2574
|
1 => 'Erase selected',
|
2575
|
+
2 => 'Erase RAW selected', # (1DXmkIII)
|
2576
|
+
3 => 'Erase non-RAW selected', # (1DXmkIII)
|
2523
2577
|
},
|
2524
2578
|
},
|
2525
2579
|
0x0814 => { # (5DS)
|
@@ -2595,7 +2649,7 @@ sub ProcessCanonCustom2($$$)
|
|
2595
2649
|
my $recPos = $pos;
|
2596
2650
|
my $recEnd = $pos + $recLen - 8;
|
2597
2651
|
if ($recEnd > $end) {
|
2598
|
-
$et->Warn(
|
2652
|
+
$et->Warn("Corrupted CanonCustom2 group $recNum");
|
2599
2653
|
return 0;
|
2600
2654
|
}
|
2601
2655
|
if ($verbose and not $write) {
|
@@ -2605,8 +2659,17 @@ sub ProcessCanonCustom2($$$)
|
|
2605
2659
|
for ($i=0; $recPos + 8 < $recEnd; ++$i, $recPos+=4*$num) {
|
2606
2660
|
$tag = Get32u($dataPt, $recPos);
|
2607
2661
|
$num = Get32u($dataPt, $recPos + 4);
|
2662
|
+
my $nextRec = $recPos + 8 + $num * 4;
|
2663
|
+
last if $nextRec > $recEnd;
|
2664
|
+
# patch for EOS-1DXmkIII firmware 1.0.0 bug:
|
2665
|
+
if ($tag == 0x70c and $num == 0x66 and $nextRec + 8 < $recEnd) {
|
2666
|
+
my $tmp = Get32u($dataPt, $nextRec + 4);
|
2667
|
+
if ($tmp == 0x70f) {
|
2668
|
+
$et->Warn('Fixed incorrect CanonCustom tag 0x70c size', 1);
|
2669
|
+
++$num; # (count should be one greater)
|
2670
|
+
}
|
2671
|
+
}
|
2608
2672
|
$recPos += 8;
|
2609
|
-
last if $recPos + $num * 4 > $recEnd;
|
2610
2673
|
my $val = ReadValue($dataPt, $recPos, 'int32s', $num, $num * 4);
|
2611
2674
|
if ($write) {
|
2612
2675
|
# write new value
|
@@ -2638,6 +2701,9 @@ sub ProcessCanonCustom2($$$)
|
|
2638
2701
|
}
|
2639
2702
|
}
|
2640
2703
|
}
|
2704
|
+
if ($i != $recCount) {
|
2705
|
+
$et->Warn('Missing '.($recCount-$i)." entries in CanonCustom2 group $recNum directory", 1);
|
2706
|
+
}
|
2641
2707
|
$pos = $recEnd;
|
2642
2708
|
}
|
2643
2709
|
if ($pos != $end) {
|