exiftool_vendored 12.25.0 → 12.32.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +114 -4
- data/bin/MANIFEST +11 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +44 -43
- data/bin/arg_files/xmp2exif.args +2 -1
- data/bin/config_files/convert_regions.config +25 -14
- data/bin/config_files/example.config +1 -1
- data/bin/exiftool +72 -56
- data/bin/fmt_files/gpx.fmt +1 -1
- data/bin/fmt_files/gpx_wpt.fmt +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +10 -2
- data/bin/lib/Image/ExifTool/CBOR.pm +277 -0
- data/bin/lib/Image/ExifTool/Canon.pm +25 -18
- data/bin/lib/Image/ExifTool/DPX.pm +13 -2
- data/bin/lib/Image/ExifTool/Exif.pm +11 -6
- data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
- data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -0
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -2
- data/bin/lib/Image/ExifTool/GoPro.pm +16 -1
- data/bin/lib/Image/ExifTool/ID3.pm +15 -3
- data/bin/lib/Image/ExifTool/JPEG.pm +68 -2
- data/bin/lib/Image/ExifTool/JSON.pm +4 -2
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +58 -26
- data/bin/lib/Image/ExifTool/LIF.pm +153 -0
- data/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
- data/bin/lib/Image/ExifTool/M2TS.pm +103 -7
- data/bin/lib/Image/ExifTool/MIE.pm +2 -1
- data/bin/lib/Image/ExifTool/MRC.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +15 -4
- data/bin/lib/Image/ExifTool/NikonSettings.pm +10 -2
- data/bin/lib/Image/ExifTool/Olympus.pm +5 -2
- data/bin/lib/Image/ExifTool/Other.pm +93 -0
- data/bin/lib/Image/ExifTool/PDF.pm +9 -12
- data/bin/lib/Image/ExifTool/PNG.pm +7 -6
- data/bin/lib/Image/ExifTool/Panasonic.pm +14 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +28 -5
- data/bin/lib/Image/ExifTool/Photoshop.pm +6 -0
- data/bin/lib/Image/ExifTool/QuickTime.pm +103 -24
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +203 -121
- data/bin/lib/Image/ExifTool/README +3 -0
- data/bin/lib/Image/ExifTool/RIFF.pm +7 -2
- data/bin/lib/Image/ExifTool/Samsung.pm +47 -10
- data/bin/lib/Image/ExifTool/Sony.pm +84 -33
- data/bin/lib/Image/ExifTool/TagLookup.pm +50 -3
- data/bin/lib/Image/ExifTool/TagNames.pod +135 -29
- data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
- data/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +11 -4
- data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +3 -0
- data/bin/lib/Image/ExifTool/XMP.pm +17 -5
- data/bin/lib/Image/ExifTool/XMP2.pl +2 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +121 -2
- data/bin/lib/Image/ExifTool.pm +79 -37
- data/bin/lib/Image/ExifTool.pod +62 -60
- data/bin/perl-Image-ExifTool.spec +43 -42
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +6 -3
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
12
12
|
=head1 TAG TABLES
|
13
13
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
15
|
-
They contain a total of
|
15
|
+
They contain a total of 24338 tags, with 15779 unique tag names.
|
16
16
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
@@ -115,6 +115,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
|
|
115
115
|
PreviewImage no
|
116
116
|
'APP3' Meta Kodak Meta
|
117
117
|
Stim Stim
|
118
|
+
JPS JPEG JPS
|
118
119
|
ThermalData no
|
119
120
|
PreviewImage no
|
120
121
|
'APP4' Scalado Scalado
|
@@ -174,6 +175,18 @@ images).
|
|
174
175
|
------ -------- --------
|
175
176
|
'Rev' OcadRevision no
|
176
177
|
|
178
|
+
=head3 JPEG JPS Tags
|
179
|
+
|
180
|
+
Tags found in JPEG Stereo (JPS) images.
|
181
|
+
|
182
|
+
Index1 Tag Name Writable
|
183
|
+
------ -------- --------
|
184
|
+
10 JPSSeparation no
|
185
|
+
11 JPSFlags no
|
186
|
+
12 JPSLayout no
|
187
|
+
13 JPSType no
|
188
|
+
16 JPSComment no
|
189
|
+
|
177
190
|
=head3 JPEG EPPIM Tags
|
178
191
|
|
179
192
|
APP6 is used in by the Toshiba PDR-M700 to store a TIFF structure containing
|
@@ -3506,7 +3519,8 @@ These tags belong to the ExifTool XMP-iptcCore family 1 group.
|
|
3506
3519
|
|
3507
3520
|
This table contains tags defined by the IPTC Extension schema version 1.5.
|
3508
3521
|
The actual namespace prefix is "Iptc4xmpExt", but ExifTool shortens this for
|
3509
|
-
the family 1 group name. (see
|
3522
|
+
the family 1 group name. (see
|
3523
|
+
L<http://www.iptc.org/standards/photo-metadata/iptc-standard/>)
|
3510
3524
|
|
3511
3525
|
These tags belong to the ExifTool XMP-iptcExt family 1 group.
|
3512
3526
|
|
@@ -5924,6 +5938,7 @@ Unknown only to reduce the volume of the normal output.
|
|
5924
5938
|
0x0023 FocusPointWrap no
|
5925
5939
|
0x0025 ManualFocusPointIllumination no
|
5926
5940
|
0x0026 AF-AssistIlluminator no
|
5941
|
+
0x0027 ManualFocusRingInAFMode no
|
5927
5942
|
0x0029 ISOStepSize no
|
5928
5943
|
0x002a ExposureControlStepSize no
|
5929
5944
|
0x002b EasyExposureCompensation no
|
@@ -6102,6 +6117,7 @@ Unknown only to reduce the volume of the normal output.
|
|
6102
6117
|
0x016c LimitAF-AreaModeSelWideLAnimals? no
|
6103
6118
|
0x016e AFAreaMode no
|
6104
6119
|
0x0170 PreferSubSelectorCenter no
|
6120
|
+
0x0171 KeepExposureWithTeleconverter no
|
6105
6121
|
0x0174 FocusPointSelectionSpeed no
|
6106
6122
|
|
6107
6123
|
=head2 Canon Tags
|
@@ -15606,6 +15622,7 @@ These tags are used in Panasonic/Leica cameras.
|
|
15606
15622
|
0x00d1 ISO int32u
|
15607
15623
|
0x00d2 MonochromeGrainEffect int16u
|
15608
15624
|
0x00d6 NoiseReductionStrength rational64s
|
15625
|
+
0x00e4 LensTypeModel int16u
|
15609
15626
|
0x0e00 PrintIM PrintIM
|
15610
15627
|
0x2003 TimeInfo Panasonic TimeInfo
|
15611
15628
|
0x8000 MakerNoteVersion undef
|
@@ -15963,6 +15980,7 @@ These tags are used in Pentax/Asahi cameras.
|
|
15963
15980
|
0x008b ISO int32u
|
15964
15981
|
0x0092 IntervalShooting int16u[2]
|
15965
15982
|
0x0095 SkinToneCorrection int8s[2]
|
15983
|
+
SkinToneCorrection int8s[3]
|
15966
15984
|
0x0096 ClarityControl int8s[2]
|
15967
15985
|
0x0200 BlackPoint int16u[4]
|
15968
15986
|
0x0201 WhitePoint int16u[4]
|
@@ -15995,6 +16013,8 @@ These tags are used in Pentax/Asahi cameras.
|
|
15995
16013
|
0x0215 CameraInfo Pentax CameraInfo
|
15996
16014
|
0x0216 BatteryInfo Pentax BatteryInfo
|
15997
16015
|
0x021b SaturationInfo? no
|
16016
|
+
0x021c ColorMatrixA2 undef[18]
|
16017
|
+
0x021d ColorMatrixB2 undef[18]
|
15998
16018
|
0x021f AFInfo Pentax AFInfo
|
15999
16019
|
0x0220 HuffmanTable? no
|
16000
16020
|
0x0221 KelvinWB Pentax KelvinWB
|
@@ -17023,11 +17043,13 @@ Camera orientation information written by the Gear 360 (SM-C200).
|
|
17023
17043
|
|
17024
17044
|
Tags extracted from the trailer of JPEG images written when using certain
|
17025
17045
|
features (such as "Sound & Shot" or "Shot & More") from Samsung models such
|
17026
|
-
as the Galaxy S4 and Tab S
|
17046
|
+
as the Galaxy S4 and Tab S, and from the 'sefd' atom in HEIC images from the
|
17047
|
+
Samsung S10+.
|
17027
17048
|
|
17028
17049
|
Tag Name Writable
|
17029
17050
|
-------- --------
|
17030
17051
|
DepthMapData no
|
17052
|
+
DepthMapData2 no
|
17031
17053
|
DepthMapName no
|
17032
17054
|
DualCameraImage no
|
17033
17055
|
DualCameraImageName no
|
@@ -17035,9 +17057,11 @@ as the Galaxy S4 and Tab S.
|
|
17035
17057
|
EmbeddedAudioFile no
|
17036
17058
|
EmbeddedAudioFileName no
|
17037
17059
|
EmbeddedImage no
|
17060
|
+
EmbeddedImage2 no
|
17038
17061
|
EmbeddedImageName no
|
17039
17062
|
EmbeddedVideoFile no
|
17040
17063
|
EmbeddedVideoType no
|
17064
|
+
MCCData no
|
17041
17065
|
SingleShotDepthMap no
|
17042
17066
|
SingleShotMeta Samsung SingleShotMeta
|
17043
17067
|
SurroundShotVideo no
|
@@ -19234,6 +19258,8 @@ some models when the ExtractEmbedded option is used.
|
|
19234
19258
|
0x851d GPSDateStamp no
|
19235
19259
|
0xe303 WhiteBalance no
|
19236
19260
|
0xe304 DateTime no
|
19261
|
+
0xe43b PitchRollYaw no
|
19262
|
+
0xe44b Accelerometer no
|
19237
19263
|
|
19238
19264
|
=head2 SonyIDC Tags
|
19239
19265
|
|
@@ -20480,6 +20506,7 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
20480
20506
|
'EISA' ElectronicImageStabilization no
|
20481
20507
|
'EMPT' Empty? no
|
20482
20508
|
'ESCS' EscapeStatus? no
|
20509
|
+
'EXPT' MaximumShutterAngle no
|
20483
20510
|
'FACE' FaceDetected no
|
20484
20511
|
'FCNM' FaceNumbers no
|
20485
20512
|
'FMWR' FirmwareVersion no
|
@@ -20497,7 +20524,11 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
20497
20524
|
'LNED' LocalPositionNED no
|
20498
20525
|
'MAGN' Magnetometer no
|
20499
20526
|
'MINF' Model no
|
20527
|
+
'MTRX' AccelerometerMatrix no
|
20528
|
+
'MUID' MediaUniqueID no
|
20500
20529
|
'OREN' AutoRotation no
|
20530
|
+
'ORIN' InputOrientation no
|
20531
|
+
'ORIO' OutputOrientation no
|
20501
20532
|
'PHDR' HDRSetting no
|
20502
20533
|
'PIMN' AutoISOMin no
|
20503
20534
|
'PIMX' AutoISOMax no
|
@@ -20514,6 +20545,7 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
20514
20545
|
'SHUT' ExposureTimes no
|
20515
20546
|
'SIMU' ScaledIMU no
|
20516
20547
|
'SIUN' SIUnits? no
|
20548
|
+
'SROT' SensorReadoutTime no
|
20517
20549
|
'STMP' TimeStamp no
|
20518
20550
|
'STNM' StreamName? no
|
20519
20551
|
'STRM' NestedSignalStream GoPro GPMF
|
@@ -20521,6 +20553,7 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
20521
20553
|
'TMPC' CameraTemperature no
|
20522
20554
|
'TSMP' TotalSamples? no
|
20523
20555
|
'TYPE' StructureType? no
|
20556
|
+
'UNIF' InputUniformity no
|
20524
20557
|
'UNIT' Units? no
|
20525
20558
|
'VERS' MetadataVersion no
|
20526
20559
|
'VFOV' FieldOfView no
|
@@ -21790,16 +21823,19 @@ even if it is not listed in this table.
|
|
21790
21823
|
|
21791
21824
|
=head2 Jpeg2000 Tags
|
21792
21825
|
|
21793
|
-
The tags below are
|
21794
|
-
|
21795
|
-
tags in Jpeg2000 images.
|
21826
|
+
The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
|
21827
|
+
images, but not all of these are extracted. Note that ExifTool currently
|
21828
|
+
writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
|
21796
21829
|
|
21797
21830
|
Tag ID Tag Name Writable
|
21798
21831
|
------ -------- --------
|
21799
21832
|
'Exif' EXIF EXIF
|
21800
21833
|
'asoc' Association Jpeg2000
|
21834
|
+
'bfdb' BinaryDataType no
|
21801
21835
|
'bfil' BinaryFilter no
|
21836
|
+
'bidb' BinaryData no
|
21802
21837
|
'bpcc' BitsPerComponent no
|
21838
|
+
'cbor' CBORData CBOR
|
21803
21839
|
'cdef' ComponentDefinition no
|
21804
21840
|
'cgrp' ColorGroup no
|
21805
21841
|
'chck' DigitalSignature no
|
@@ -21853,6 +21889,7 @@ tags in Jpeg2000 images.
|
|
21853
21889
|
UUID-GeoJP2 EXIF
|
21854
21890
|
UUID-Photoshop Photoshop
|
21855
21891
|
UUID-Signature no
|
21892
|
+
UUID-C2PAClaimSignature -
|
21856
21893
|
UUID-Unknown no
|
21857
21894
|
'xml ' XML XMP XML
|
21858
21895
|
XMP -
|
@@ -21891,13 +21928,13 @@ tags in Jpeg2000 images.
|
|
21891
21928
|
|
21892
21929
|
Information extracted from the JUMBF description box.
|
21893
21930
|
|
21894
|
-
Tag ID
|
21895
|
-
------
|
21896
|
-
'
|
21897
|
-
'
|
21898
|
-
'
|
21899
|
-
'
|
21900
|
-
'
|
21931
|
+
Tag ID Tag Name Writable
|
21932
|
+
------ -------- --------
|
21933
|
+
'id' JUMDID no
|
21934
|
+
'label' JUMDLabel no
|
21935
|
+
'sig' JUMDSignature no
|
21936
|
+
'toggles' JUMDToggles? no
|
21937
|
+
'type' JUMDType no
|
21901
21938
|
|
21902
21939
|
=head3 Jpeg2000 CaptureResolution Tags
|
21903
21940
|
|
@@ -21934,6 +21971,24 @@ JSON-formatted files.
|
|
21934
21971
|
ON1_SettingsMetadataUsage no
|
21935
21972
|
ON1_SettingsMetadataVisibleToUser no
|
21936
21973
|
|
21974
|
+
=head2 CBOR Tags
|
21975
|
+
|
21976
|
+
The tags below are extracted from CBOR (Concise Binary Object
|
21977
|
+
Representation) metadata. The C2PA specification uses this format for some
|
21978
|
+
metadata. As well as these tags, ExifTool will read any existing tags.
|
21979
|
+
|
21980
|
+
Tag Name Writable
|
21981
|
+
-------- --------
|
21982
|
+
AuthorIdentifier no
|
21983
|
+
AuthorName no
|
21984
|
+
DocumentID no
|
21985
|
+
Format no
|
21986
|
+
InstanceID no
|
21987
|
+
Relationship no
|
21988
|
+
ThumbnailHash no+
|
21989
|
+
ThumbnailURL no
|
21990
|
+
Title no
|
21991
|
+
|
21937
21992
|
=head2 PLIST Tags
|
21938
21993
|
|
21939
21994
|
Apple Property List tags. ExifTool reads both XML and binary-format PLIST
|
@@ -23929,6 +23984,8 @@ available. Alternate language tags and values containing special characters
|
|
23929
23984
|
if the Compress option is used and Compress::Zlib is available. Raw profile
|
23930
23985
|
information is always created as compressed zTXt if Compress::Zlib is
|
23931
23986
|
available, or tEXt otherwise. Standard XMP is written as uncompressed iTXt.
|
23987
|
+
User-defined tags may set an 'iTXt' flag in the tag definition to be written
|
23988
|
+
only as iTXt.
|
23932
23989
|
|
23933
23990
|
Alternate languages are accessed by suffixing the tag name with a '-',
|
23934
23991
|
followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or
|
@@ -24362,6 +24419,7 @@ Tags extracted from DPX (Digital Picture Exchange) images.
|
|
24362
24419
|
1532 SourceCreateDate no
|
24363
24420
|
1556 InputDeviceName no
|
24364
24421
|
1588 InputDeviceSerialNumber no
|
24422
|
+
1628 AspectRatio no
|
24365
24423
|
1724 OriginalFrameRate no
|
24366
24424
|
1728 ShutterAngle no
|
24367
24425
|
1732 FrameID no
|
@@ -24577,6 +24635,16 @@ Tags extracted from FEI1 and FEI2 extended headers.
|
|
24577
24635
|
868 PhasePlatePosition no
|
24578
24636
|
872 ObjectiveAperture no
|
24579
24637
|
|
24638
|
+
=head2 LIF Tags
|
24639
|
+
|
24640
|
+
Tags extracted from Leica Image Format (LIF) imaging files. As well as the
|
24641
|
+
tags listed below, all available information is extracted from the
|
24642
|
+
XML-format metadata in the LIF header.
|
24643
|
+
|
24644
|
+
Tag Name Writable
|
24645
|
+
-------- --------
|
24646
|
+
TimeStampList no
|
24647
|
+
|
24580
24648
|
=head2 MIFF Tags
|
24581
24649
|
|
24582
24650
|
The MIFF (Magick Image File Format) format allows aribrary tag names to be
|
@@ -24763,6 +24831,18 @@ specification.
|
|
24763
24831
|
'software' Software no
|
24764
24832
|
'view' View no
|
24765
24833
|
|
24834
|
+
=head3 Other PFM Tags
|
24835
|
+
|
24836
|
+
Tags extracted from Portable FloatMap images. See
|
24837
|
+
L<http://www.pauldebevec.com/Research/HDR/PFM/> for the specification.
|
24838
|
+
|
24839
|
+
Tag Name Writable
|
24840
|
+
-------- --------
|
24841
|
+
ByteOrder no
|
24842
|
+
ColorSpace no
|
24843
|
+
ImageHeight no
|
24844
|
+
ImageWidth no
|
24845
|
+
|
24766
24846
|
=head2 PDF Tags
|
24767
24847
|
|
24768
24848
|
The tags listed in the PDF tables below are those which are used by ExifTool
|
@@ -24941,11 +25021,12 @@ This is the PDF document catalog.
|
|
24941
25021
|
|
24942
25022
|
Tag ID Tag Name Writable
|
24943
25023
|
------ -------- --------
|
24944
|
-
'
|
25024
|
+
'CS0' CS0 PDF ICCBased
|
25025
|
+
'Cs1' Cs1 PDF ICCBased
|
24945
25026
|
'DefaultCMYK' DefaultCMYK PDF DefaultRGB
|
24946
25027
|
'DefaultRGB' DefaultRGB PDF DefaultRGB
|
24947
25028
|
|
24948
|
-
=head3 PDF
|
25029
|
+
=head3 PDF ICCBased Tags
|
24949
25030
|
|
24950
25031
|
Tag ID Tag Name Writable
|
24951
25032
|
------ -------- --------
|
@@ -24957,12 +25038,6 @@ This is the PDF document catalog.
|
|
24957
25038
|
------ -------- --------
|
24958
25039
|
'ICCBased' ICCBased PDF ICCBased
|
24959
25040
|
|
24960
|
-
=head3 PDF ICCBased Tags
|
24961
|
-
|
24962
|
-
Tag ID Tag Name Writable
|
24963
|
-
------ -------- --------
|
24964
|
-
'_stream' _stream ICC_Profile
|
24965
|
-
|
24966
25041
|
=head3 PDF Properties Tags
|
24967
25042
|
|
24968
25043
|
Tag ID Tag Name Writable
|
@@ -25074,8 +25149,8 @@ Additional document permissions imposed by digital signatures.
|
|
25074
25149
|
|
25075
25150
|
=head2 ID3 Tags
|
25076
25151
|
|
25077
|
-
ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG,
|
25078
|
-
FLAC, APE, MPC and RealAudio files. ID3v2 tags which support multiple
|
25152
|
+
ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, AIFF,
|
25153
|
+
OGG, FLAC, APE, MPC and RealAudio files. ID3v2 tags which support multiple
|
25079
25154
|
languages (eg. Comment and Lyrics) are extracted by specifying the tag name,
|
25080
25155
|
followed by a dash ('-'), then a 3-character ISO 639-2 language code (eg.
|
25081
25156
|
"Comment-spa"). See L<http://www.id3.org/> for the official ID3
|
@@ -26005,6 +26080,7 @@ for the official specification.
|
|
26005
26080
|
'pict' PreviewPICT no
|
26006
26081
|
'pnot' Preview QuickTime Preview
|
26007
26082
|
'prrt' ARDroneTelemetry no
|
26083
|
+
'sefd' SamsungTrailer Samsung Trailer
|
26008
26084
|
'skip' CanonSkip Canon Skip
|
26009
26085
|
PreviewImage no
|
26010
26086
|
Skip? no
|
@@ -26046,10 +26122,10 @@ Tags found in Pittasoft Blackvue dashcam "free" data.
|
|
26046
26122
|
|
26047
26123
|
=head3 QuickTime Stream Tags
|
26048
26124
|
|
26049
|
-
|
26050
|
-
the ExtractEmbedded option is used. Although
|
26051
|
-
combined into the single table below, ExifTool
|
26052
|
-
formats of timed GPS metadata from video files.
|
26125
|
+
The tags below are extracted from timed metadata in QuickTime and other
|
26126
|
+
formats of video files when the ExtractEmbedded option is used. Although
|
26127
|
+
most of these tags are combined into the single table below, ExifTool
|
26128
|
+
currently reads 57 different formats of timed GPS metadata from video files.
|
26053
26129
|
|
26054
26130
|
Tag Name Writable
|
26055
26131
|
-------- --------
|
@@ -26105,8 +26181,10 @@ formats of timed GPS metadata from video files.
|
|
26105
26181
|
camm6 QuickTime camm6
|
26106
26182
|
camm7 QuickTime camm7
|
26107
26183
|
fdsc GoPro fdsc
|
26108
|
-
|
26184
|
+
gpmd_Kingslim QuickTime Stream
|
26109
26185
|
gpmd_Rove QuickTime Stream
|
26186
|
+
gpmd_FMAS QuickTime Stream
|
26187
|
+
gpmd_GoPro GoPro GPMF
|
26110
26188
|
marl QuickTime marl
|
26111
26189
|
mebx QuickTime Keys
|
26112
26190
|
mett Parrot mett
|
@@ -26534,21 +26612,42 @@ QuickTimeHandler option may be set to 0 to avoid this.
|
|
26534
26612
|
=head3 QuickTime iTunesInfo Tags
|
26535
26613
|
|
26536
26614
|
ExifTool will extract any iTunesInfo tags that exist, even if they are not
|
26537
|
-
defined in this table.
|
26615
|
+
defined in this table. These tags belong to the family 1 "iTunes" group,
|
26616
|
+
and are not currently writable.
|
26538
26617
|
|
26539
26618
|
Tag ID Tag Name Writable
|
26540
26619
|
------ -------- --------
|
26620
|
+
'ARTISTS' Artists no
|
26621
|
+
'BARCODE' Barcode no
|
26622
|
+
'CATALOGNUMBER' CatalogNumber no
|
26541
26623
|
'DISCNUMBER' DiscNumber no
|
26624
|
+
'Dynamic Range (DR)' DynamicRange no
|
26625
|
+
'Dynamic Range (R128)' DynamicRangeR128 no
|
26542
26626
|
'Encoding Params' EncodingParams QuickTime EncodingParams
|
26627
|
+
'LABEL' Label no
|
26628
|
+
'MEDIA' Media no
|
26629
|
+
'MOOD' Mood no
|
26630
|
+
'Peak Level (R128)' PeakLevelR128 no
|
26631
|
+
'Peak Level (Sample)' PeakLevelSample no
|
26632
|
+
'RATING' Rating no
|
26633
|
+
'SCRIPT' Script no
|
26543
26634
|
'TRACKNUMBER' TrackNumber no
|
26635
|
+
'Volume Level (R128)' VolumeLevelR128 no
|
26636
|
+
'Volume Level (ReplayGain)' ReplayVolumeLevel no
|
26544
26637
|
'iTunEXTC' ContentRating no
|
26545
26638
|
'iTunMOVI' iTunMOVI PLIST
|
26546
26639
|
'iTunNORM' VolumeNormalization no
|
26547
26640
|
'iTunSMPB' iTunSMPB no
|
26548
26641
|
'iTunes_CDDB_1' CDDB1Info no
|
26549
26642
|
'iTunes_CDDB_TrackNumber' CDDBTrackNumber no
|
26643
|
+
'initialkey' InitialKey no
|
26644
|
+
'originaldate' OriginalDate no
|
26645
|
+
'originalyear' OriginalYear no
|
26550
26646
|
'popularimeter' Popularimeter no
|
26647
|
+
'replaygain_track_gain' ReplayTrackGain no
|
26648
|
+
'replaygain_track_peak' ReplayTrackPeak no
|
26551
26649
|
'tool' iTunTool no
|
26650
|
+
'~length' Length no
|
26552
26651
|
|
26553
26652
|
=head3 QuickTime EncodingParams Tags
|
26554
26653
|
|
@@ -27203,6 +27302,7 @@ the config file.
|
|
27203
27302
|
'lrcu' LyricsURI string
|
27204
27303
|
'lvlm' LevelMeter? rational64s
|
27205
27304
|
'manu' Make no
|
27305
|
+
'mcvr' PreviewImage string
|
27206
27306
|
'meta' Meta QuickTime Meta
|
27207
27307
|
'modl' Model no
|
27208
27308
|
'name' Name string
|
@@ -30063,6 +30163,7 @@ sub-documents, but the Duration is calculated for the full video.
|
|
30063
30163
|
'gps0' GPSTrack QuickTime Stream
|
30064
30164
|
'gsen' GSensor QuickTime Stream
|
30065
30165
|
'iXML' IXML XMP XML
|
30166
|
+
'id3 ' ID3 ID3
|
30066
30167
|
'inst' Instrument RIFF Instrument
|
30067
30168
|
'labl' CuePointLabel no
|
30068
30169
|
'list' ListType no
|
@@ -30184,6 +30285,7 @@ by some software.
|
|
30184
30285
|
'ISTD' ProductionStudio no
|
30185
30286
|
'ISTR' Starring no
|
30186
30287
|
'ITCH' Technician no
|
30288
|
+
'ITRK' TrackNumber no
|
30187
30289
|
'IWMU' WatermarkURL no
|
30188
30290
|
'IWRI' WrittenBy no
|
30189
30291
|
'LANG' Language no
|
@@ -35478,11 +35580,15 @@ values, may created via the ExifTool configuration file.
|
|
35478
35580
|
GPS:GPSLatitudeRef
|
35479
35581
|
GPSLatitude QuickTime:GPSCoordinates no
|
35480
35582
|
GPSLatitude QuickTime:LocationInformation no
|
35583
|
+
GPSLatitude Sony:GPSLatitude no
|
35584
|
+
Sony:GPSLatitudeRef
|
35481
35585
|
GPSLatitudeRef XMP-exif:GPSLatitude no
|
35482
35586
|
GPSLongitude GPS:GPSLongitude no
|
35483
35587
|
GPS:GPSLongitudeRef
|
35484
35588
|
GPSLongitude QuickTime:GPSCoordinates no
|
35485
35589
|
GPSLongitude QuickTime:LocationInformation no
|
35590
|
+
GPSLongitude Sony:GPSLongitude no
|
35591
|
+
Sony:GPSLongitudeRef
|
35486
35592
|
GPSLongitudeRef XMP-exif:GPSLongitude no
|
35487
35593
|
GPSPosition GPSLatitude no
|
35488
35594
|
GPSLongitude
|
@@ -13,10 +13,11 @@ package Image::ExifTool::Torrent;
|
|
13
13
|
use strict;
|
14
14
|
use vars qw($VERSION);
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
|
+
use Image::ExifTool::XMP;
|
16
17
|
|
17
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.05';
|
18
19
|
|
19
|
-
sub ReadBencode(
|
20
|
+
sub ReadBencode($$$);
|
20
21
|
sub ExtractTags($$$;$$@);
|
21
22
|
|
22
23
|
# tags extracted from BitTorrent files
|
@@ -99,12 +100,12 @@ sub ReadMore($$)
|
|
99
100
|
|
100
101
|
#------------------------------------------------------------------------------
|
101
102
|
# Read bencoded value
|
102
|
-
# Inputs: 0) input file,
|
103
|
+
# Inputs: 0) ExifTool ref, 1) input file, 2) buffer (pos must be set to current position)
|
103
104
|
# Returns: HASH ref, ARRAY ref, SCALAR ref, SCALAR, or undef on error or end of data
|
104
105
|
# Notes: Sets BencodeError element of RAF on any error
|
105
|
-
sub ReadBencode(
|
106
|
+
sub ReadBencode($$$)
|
106
107
|
{
|
107
|
-
my ($raf, $dataPt) = @_;
|
108
|
+
my ($et, $raf, $dataPt) = @_;
|
108
109
|
|
109
110
|
# read more if necessary (keep a minimum of 64 bytes in the buffer)
|
110
111
|
my $pos = pos($$dataPt);
|
@@ -123,21 +124,21 @@ sub ReadBencode($$)
|
|
123
124
|
} elsif ($tok eq 'd') { # dictionary
|
124
125
|
$val = { };
|
125
126
|
for (;;) {
|
126
|
-
my $k = ReadBencode($raf, $dataPt);
|
127
|
+
my $k = ReadBencode($et, $raf, $dataPt);
|
127
128
|
last unless defined $k;
|
128
129
|
# the key must be a byte string
|
129
130
|
if (ref $k) {
|
130
131
|
ref $k ne 'SCALAR' and $$raf{BencodeError} = 'Bad dictionary key', last;
|
131
132
|
$k = $$k;
|
132
133
|
}
|
133
|
-
my $v = ReadBencode($raf, $dataPt);
|
134
|
+
my $v = ReadBencode($et, $raf, $dataPt);
|
134
135
|
last unless defined $v;
|
135
136
|
$$val{$k} = $v;
|
136
137
|
}
|
137
138
|
} elsif ($tok eq 'l') { # list
|
138
139
|
$val = [ ];
|
139
140
|
for (;;) {
|
140
|
-
my $v = ReadBencode($raf, $dataPt);
|
141
|
+
my $v = ReadBencode($et, $raf, $dataPt);
|
141
142
|
last unless defined $v;
|
142
143
|
push @$val, $v;
|
143
144
|
}
|
@@ -165,8 +166,14 @@ sub ReadBencode($$)
|
|
165
166
|
}
|
166
167
|
if (defined $value) {
|
167
168
|
# return as binary data unless it is a reasonable-length ASCII string
|
168
|
-
if (length($value) > 256
|
169
|
+
if (length($value) > 256) {
|
169
170
|
$val = \$value;
|
171
|
+
} elsif ($value =~ /[^\t\x20-\x7e]/) {
|
172
|
+
if (Image::ExifTool::XMP::IsUTF8(\$value) >= 0) {
|
173
|
+
$val = $et->Decode($value, 'UTF8');
|
174
|
+
} else {
|
175
|
+
$val = \$value;
|
176
|
+
}
|
170
177
|
} else {
|
171
178
|
$val = $value;
|
172
179
|
}
|
@@ -206,7 +213,7 @@ sub ExtractTags($$$;$$@)
|
|
206
213
|
my $tagInfo = $et->GetTagInfo($tagTablePtr, $id) or next;
|
207
214
|
if (ref $val eq 'ARRAY') {
|
208
215
|
if ($$tagInfo{JoinPath}) {
|
209
|
-
$val = join '/', @$val;
|
216
|
+
$val = join '/', map { ref $_ ? '(Binary data)' : $_ } @$val;
|
210
217
|
} else {
|
211
218
|
push @more, @$val;
|
212
219
|
next if ref $more[0] eq 'ARRAY'; # continue expanding nested lists
|
@@ -273,7 +280,7 @@ sub ProcessTorrent($$)
|
|
273
280
|
my $raf = $$dirInfo{RAF};
|
274
281
|
my $buff = '';
|
275
282
|
pos($buff) = 0;
|
276
|
-
my $dict = ReadBencode($raf, \$buff);
|
283
|
+
my $dict = ReadBencode($et, $raf, \$buff);
|
277
284
|
my $err = $$raf{BencodeError};
|
278
285
|
$et->Warn("Bencode error: $err") if $err;
|
279
286
|
if (ref $dict eq 'HASH' and ($$dict{announce} or $$dict{'created by'})) {
|
@@ -170,7 +170,7 @@ sub FormatIPTC($$$$$;$)
|
|
170
170
|
} else {
|
171
171
|
my $len = int(($1 || 0) / 8);
|
172
172
|
if ($len == 1) { # 1 byte
|
173
|
-
$$valPtr = chr($$valPtr);
|
173
|
+
$$valPtr = chr($$valPtr & 0xff);
|
174
174
|
} elsif ($len == 2) { # 2-byte integer
|
175
175
|
$$valPtr = pack('n', $$valPtr);
|
176
176
|
} else { # 4-byte integer
|
@@ -293,6 +293,7 @@ sub WritePDF($$)
|
|
293
293
|
my $newTool = new Image::ExifTool;
|
294
294
|
$newTool->Options(List => 1);
|
295
295
|
$newTool->Options(Password => $et->Options('Password'));
|
296
|
+
$newTool->Options(NoPDFList => $et->Options('NoPDFList'));
|
296
297
|
$$newTool{PDF_CAPTURE} = \%capture;
|
297
298
|
my $info = $newTool->ImageInfo($raf, 'XMP', 'PDF:*', 'Error', 'Warning');
|
298
299
|
# not a valid PDF file unless we got a version number
|
@@ -179,6 +179,8 @@ sub BuildTextChunk($$$$$)
|
|
179
179
|
$tag =~ s/-$lang$//; # remove language code from tagID
|
180
180
|
} elsif ($$et{OPTIONS}{Charset} ne 'Latin' and $val =~ /[\x80-\xff]/) {
|
181
181
|
$iTXt = 1; # write as iTXt if it contains non-Latin special characters
|
182
|
+
} elsif ($$tagInfo{iTXt}) {
|
183
|
+
$iTXt = 1; # write as iTXt if specified in user-defined tag
|
182
184
|
}
|
183
185
|
}
|
184
186
|
if ($comp) {
|
@@ -163,6 +163,9 @@ sub ConvInvISO6709($)
|
|
163
163
|
# latitude must have 2 digits before the decimal, and longitude 3,
|
164
164
|
# and all values must start with a "+" or "-", and Google Photos
|
165
165
|
# requires at least 3 digits after the decimal point
|
166
|
+
# (and as of Apr 2021, Google Photos doesn't accept coordinats
|
167
|
+
# with more than 5 digits after the decimal place:
|
168
|
+
# https://exiftool.org/forum/index.php?topic=11055.msg67171#msg67171 )
|
166
169
|
my @fmt = ('%s%02d.%s%s','%s%03d.%s%s','%s%d.%s%s');
|
167
170
|
foreach (@a) {
|
168
171
|
return undef unless Image::ExifTool::IsFloat($_);
|
@@ -314,7 +317,7 @@ sub FormatQTValue($$;$$)
|
|
314
317
|
if ($writable and $qtFormat{$writable}) {
|
315
318
|
$flags = $qtFormat{$writable};
|
316
319
|
} else {
|
317
|
-
$flags = $qtFormat{$format} || 0;
|
320
|
+
$flags = $qtFormat{$format || 0} || 0;
|
318
321
|
}
|
319
322
|
} elsif ($$valPt =~ /^\xff\xd8\xff/) {
|
320
323
|
$flags = 0x0d; # JPG
|
@@ -846,7 +849,7 @@ sub WriteQuickTime($$$)
|
|
846
849
|
# --> hold this terminator to the end
|
847
850
|
$term = $hdr;
|
848
851
|
} elsif ($n != 0) {
|
849
|
-
$et->Error(
|
852
|
+
$et->Error("Unknown $n bytes at end of file", 1);
|
850
853
|
}
|
851
854
|
last;
|
852
855
|
}
|
@@ -1086,7 +1089,9 @@ sub WriteQuickTime($$$)
|
|
1086
1089
|
$$et{CHANGED} = $oldChanged if $$et{DemoteErrors} > 1;
|
1087
1090
|
delete $$et{DemoteErrors};
|
1088
1091
|
}
|
1089
|
-
if (defined $newData and not length $newData and $$
|
1092
|
+
if (defined $newData and not length $newData and ($$tagInfo{Permanent} or
|
1093
|
+
($$tagTablePtr{PERMANENT} and not defined $$tagInfo{Permanent})))
|
1094
|
+
{
|
1090
1095
|
# do nothing if trying to delete tag from a PERMANENT table
|
1091
1096
|
$$et{CHANGED} = $oldChanged;
|
1092
1097
|
undef $newData;
|
@@ -1094,7 +1099,9 @@ sub WriteQuickTime($$$)
|
|
1094
1099
|
$$et{CUR_WRITE_GROUP} = $oldWriteGroup;
|
1095
1100
|
SetByteOrder('MM');
|
1096
1101
|
# add back header if necessary
|
1097
|
-
if ($start and defined $newData and length $newData
|
1102
|
+
if ($start and defined $newData and (length $newData or
|
1103
|
+
(defined $$tagInfo{Permanent} and not $$tagInfo{Permanent})))
|
1104
|
+
{
|
1098
1105
|
$newData = substr($buff,0,$start) . $newData;
|
1099
1106
|
$$_[1] += $start foreach @chunkOffset;
|
1100
1107
|
}
|
@@ -1469,7 +1469,7 @@ sub WriteXMP($$;$)
|
|
1469
1469
|
$long[-2] .= "$nl$sp<$prop rdf:about='${about}'";
|
1470
1470
|
# generate et:toolkit attribute if this is an exiftool RDF/XML output file
|
1471
1471
|
if (@ns and $nsCur{$ns[0]} =~ m{^http://ns.exiftool.(?:ca|org)/}) {
|
1472
|
-
$long[-2] .= "\n$sp${sp}xmlns:et='http://ns.exiftool.
|
1472
|
+
$long[-2] .= "\n$sp${sp}xmlns:et='http://ns.exiftool.org/1.0/'" .
|
1473
1473
|
" et:toolkit='Image::ExifTool $Image::ExifTool::VERSION'";
|
1474
1474
|
}
|
1475
1475
|
$long[-2] .= "\n$sp${sp}xmlns:$_='$nsCur{$_}'" foreach @ns;
|
@@ -574,6 +574,9 @@ sub SetNewValue($;$$%)
|
|
574
574
|
my $pre = $wantGroup ? $wantGroup . ':' : '';
|
575
575
|
$err = "Tag '$pre${origTag}' is not defined";
|
576
576
|
$err .= ' or has a bad language code' if $origTag =~ /-/;
|
577
|
+
if (not $pre and uc($origTag) eq 'TAG') {
|
578
|
+
$err .= " (specify a writable tag name, not '${origTag}' literally)"
|
579
|
+
}
|
577
580
|
} else {
|
578
581
|
$err = "Invalid tag name '${tag}'";
|
579
582
|
$err .= " (remove the leading '\$')" if $tag =~ /^\$/;
|