exiftool_vendored 11.94.0 → 12.06.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.
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) {
|