exiftool-vendored.pl 12.85.0 → 12.91.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.
- package/bin/Changes +87 -0
- package/bin/MANIFEST +1 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +16 -16
- package/bin/README +3 -2
- package/bin/build_geolocation +7 -4
- package/bin/build_tag_lookup +29 -11
- package/bin/config_files/example.config +5 -0
- package/bin/config_files/onone.config +28 -0
- package/bin/exiftool +23 -15
- package/bin/lib/Image/ExifTool/AIFF.pm +8 -4
- package/bin/lib/Image/ExifTool/ASF.pm +4 -1
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +14 -8
- package/bin/lib/Image/ExifTool/Canon.pm +102 -12
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonVRD.pm +5 -2
- package/bin/lib/Image/ExifTool/FujiFilm.pm +46 -4
- package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/lib/Image/ExifTool/Geolocation.pm +6 -0
- package/bin/lib/Image/ExifTool/ID3.pm +39 -33
- package/bin/lib/Image/ExifTool/InDesign.pm +8 -4
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +0 -1
- package/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
- package/bin/lib/Image/ExifTool/Matroska.pm +66 -10
- package/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
- package/bin/lib/Image/ExifTool/Nikon.pm +36 -2
- package/bin/lib/Image/ExifTool/Olympus.pm +27 -17
- package/bin/lib/Image/ExifTool/PNG.pm +10 -2
- package/bin/lib/Image/ExifTool/Panasonic.pm +1 -0
- package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -0
- package/bin/lib/Image/ExifTool/Pentax.pm +80 -14
- package/bin/lib/Image/ExifTool/QuickTime.pm +58 -13
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +111 -8
- package/bin/lib/Image/ExifTool/RIFF.pm +20 -10
- package/bin/lib/Image/ExifTool/Samsung.pm +56 -19
- package/bin/lib/Image/ExifTool/Sony.pm +21 -11
- package/bin/lib/Image/ExifTool/TagLookup.pm +6808 -6788
- package/bin/lib/Image/ExifTool/TagNames.pod +120 -55
- package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +84 -15
- package/bin/lib/Image/ExifTool/Writer.pl +7 -4
- package/bin/lib/Image/ExifTool/XMP.pm +8 -8
- package/bin/lib/Image/ExifTool/XMP2.pl +51 -30
- package/bin/lib/Image/ExifTool/ZIP.pm +8 -4
- package/bin/lib/Image/ExifTool.pm +65 -42
- package/bin/lib/Image/ExifTool.pod +28 -20
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +4 -4
- package/package.json +3 -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 27895 tags, with 17462 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
|
|
@@ -1390,6 +1390,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
|
|
|
1390
1390
|
fpv XMP fpv
|
|
1391
1391
|
GAudio XMP GAudio
|
|
1392
1392
|
GCamera XMP GCamera
|
|
1393
|
+
GContainer XMP GContainer
|
|
1393
1394
|
GCreations XMP GCreations
|
|
1394
1395
|
GDepth XMP GDepth
|
|
1395
1396
|
getty XMP GettyImages
|
|
@@ -4794,6 +4795,7 @@ These tags belong to the ExifTool XMP-GCamera family 1 group.
|
|
|
4794
4795
|
BurstID string
|
|
4795
4796
|
BurstPrimary string
|
|
4796
4797
|
DisableAutoCreation string+
|
|
4798
|
+
DisableSuggestedAction string+
|
|
4797
4799
|
HDRPMakerNote string
|
|
4798
4800
|
HdrPlusMakernote string
|
|
4799
4801
|
MicroVideo integer
|
|
@@ -4809,6 +4811,42 @@ These tags belong to the ExifTool XMP-GCamera family 1 group.
|
|
|
4809
4811
|
ShotLogData string
|
|
4810
4812
|
SpecialTypeID string+
|
|
4811
4813
|
|
|
4814
|
+
=head3 XMP GContainer Tags
|
|
4815
|
+
|
|
4816
|
+
Google Container namespace. ExifTool uses the prefix 'GContainer' instead
|
|
4817
|
+
of 'Container' to avoid a conflict with the Google Device Container
|
|
4818
|
+
namespace.
|
|
4819
|
+
|
|
4820
|
+
These tags belong to the ExifTool XMP-GContainer family 1 group.
|
|
4821
|
+
|
|
4822
|
+
Tag Name Writable
|
|
4823
|
+
-------- --------
|
|
4824
|
+
ContainerDirectory Directory Struct+
|
|
4825
|
+
DirectoryItem Item Struct_+
|
|
4826
|
+
DirectoryItemLabel string_+
|
|
4827
|
+
DirectoryItemLength integer_+
|
|
4828
|
+
DirectoryItemMime string_+
|
|
4829
|
+
DirectoryItemPadding integer_+
|
|
4830
|
+
DirectoryItemSemantic string_+
|
|
4831
|
+
DirectoryItemURI string_+
|
|
4832
|
+
|
|
4833
|
+
=head3 XMP Directory Struct
|
|
4834
|
+
|
|
4835
|
+
Field Name Writable
|
|
4836
|
+
---------- --------
|
|
4837
|
+
Item Item Struct
|
|
4838
|
+
|
|
4839
|
+
=head3 XMP Item Struct
|
|
4840
|
+
|
|
4841
|
+
Field Name Writable
|
|
4842
|
+
---------- --------
|
|
4843
|
+
Label string
|
|
4844
|
+
Length integer
|
|
4845
|
+
Mime string
|
|
4846
|
+
Padding integer
|
|
4847
|
+
Semantic string
|
|
4848
|
+
URI string
|
|
4849
|
+
|
|
4812
4850
|
=head3 XMP GCreations Tags
|
|
4813
4851
|
|
|
4814
4852
|
Google creations tags.
|
|
@@ -8052,19 +8090,23 @@ Flash information tags for the K10D, K20D and K200D.
|
|
|
8052
8090
|
Index1 Tag Name Writable
|
|
8053
8091
|
------ -------- --------
|
|
8054
8092
|
0.1 PowerSource int8u & 0x0f
|
|
8055
|
-
|
|
8093
|
+
0.2 PowerAvailable int8u & 0xf0
|
|
8056
8094
|
1.1 BodyBatteryState int8u & 0xf0
|
|
8057
|
-
BodyBatteryState? int8u & 0xf0
|
|
8058
8095
|
1.2 GripBatteryState int8u & 0x0f
|
|
8059
|
-
GripBatteryState? int8u & 0x0f
|
|
8060
8096
|
2 BodyBatteryADNoLoad int8u
|
|
8061
8097
|
BodyBatteryVoltage1 int16u
|
|
8098
|
+
BodyBatteryState int8u
|
|
8062
8099
|
3 BodyBatteryADLoad int8u
|
|
8100
|
+
BodyBatteryPercent int8u
|
|
8063
8101
|
4 GripBatteryADNoLoad int8u
|
|
8064
8102
|
BodyBatteryVoltage2 int16u
|
|
8103
|
+
BodyBatteryVoltage int32u
|
|
8065
8104
|
5 GripBatteryADLoad int8u
|
|
8066
8105
|
6 BodyBatteryVoltage3 int16u
|
|
8067
8106
|
8 BodyBatteryVoltage4 int16u
|
|
8107
|
+
16 GripBatteryState int8u
|
|
8108
|
+
17 GripBatteryPercent int8u
|
|
8109
|
+
18 GripBatteryVoltage int32u
|
|
8068
8110
|
|
|
8069
8111
|
=head3 Pentax AFInfo Tags
|
|
8070
8112
|
|
|
@@ -8236,6 +8278,7 @@ Tags decoded from the electronic level information for the K-3 III.
|
|
|
8236
8278
|
|
|
8237
8279
|
Index1 Tag Name Writable
|
|
8238
8280
|
------ -------- --------
|
|
8281
|
+
1 CameraOrientation int8s
|
|
8239
8282
|
3 RollAngle int16s
|
|
8240
8283
|
5 PitchAngle int16s
|
|
8241
8284
|
|
|
@@ -9311,6 +9354,7 @@ Unknown only to reduce the volume of the normal output.
|
|
|
9311
9354
|
0x4026 LogInfo Canon LogInfo
|
|
9312
9355
|
0x4028 AFConfig Canon AFConfig
|
|
9313
9356
|
0x403f RawBurstModeRoll Canon RawBurstInfo
|
|
9357
|
+
0x4059 LevelInfo Canon LevelInfo
|
|
9314
9358
|
|
|
9315
9359
|
=head3 Canon CameraSettings Tags
|
|
9316
9360
|
|
|
@@ -10197,7 +10241,7 @@ CameraInfo tags for the EOS 1000D.
|
|
|
10197
10241
|
|
|
10198
10242
|
=head3 Canon CameraInfoR6 Tags
|
|
10199
10243
|
|
|
10200
|
-
CameraInfo tags for the EOS R6.
|
|
10244
|
+
CameraInfo tags for the EOS R5 and R6.
|
|
10201
10245
|
|
|
10202
10246
|
Index1 Tag Name Writable
|
|
10203
10247
|
------ -------- --------
|
|
@@ -10432,6 +10476,7 @@ WB tags for the Canon G9.
|
|
|
10432
10476
|
21 FocusDistanceLower int16u
|
|
10433
10477
|
23 ShutterMode int16s
|
|
10434
10478
|
25 FlashExposureLock int16s
|
|
10479
|
+
32 AntiFlicker int16s
|
|
10435
10480
|
61 RFLensType int16u
|
|
10436
10481
|
|
|
10437
10482
|
=head3 Canon SerialInfo Tags
|
|
@@ -11539,6 +11584,8 @@ Information about creative filter settings.
|
|
|
11539
11584
|
17 VFDisplayIllumination int32s
|
|
11540
11585
|
18 AFStatusViewfinder int32s
|
|
11541
11586
|
19 InitialAFPointInServo int32s
|
|
11587
|
+
20 SubjectToDetect int32s
|
|
11588
|
+
24 EyeDetection int32s
|
|
11542
11589
|
|
|
11543
11590
|
=head3 Canon RawBurstInfo Tags
|
|
11544
11591
|
|
|
@@ -11547,6 +11594,16 @@ Information about creative filter settings.
|
|
|
11547
11594
|
1 RawBurstImageNum int32u
|
|
11548
11595
|
2 RawBurstImageCount int32u
|
|
11549
11596
|
|
|
11597
|
+
=head3 Canon LevelInfo Tags
|
|
11598
|
+
|
|
11599
|
+
Index4 Tag Name Writable
|
|
11600
|
+
------ -------- --------
|
|
11601
|
+
4 RollAngle int32s
|
|
11602
|
+
5 PitchAngle int32s
|
|
11603
|
+
7 FocalLength int32s
|
|
11604
|
+
8 MinFocalLength int32s
|
|
11605
|
+
9 MaxFocalLength int32s
|
|
11606
|
+
|
|
11550
11607
|
=head3 Canon CTMD Tags
|
|
11551
11608
|
|
|
11552
11609
|
Canon Timed MetaData tags found in CR3 images. The ExtractEmbedded option
|
|
@@ -13316,6 +13373,15 @@ Face recognition information.
|
|
|
13316
13373
|
Face8Category no
|
|
13317
13374
|
Face8Name no
|
|
13318
13375
|
|
|
13376
|
+
=head3 FujiFilm RAFHeader Tags
|
|
13377
|
+
|
|
13378
|
+
Tags extracted from the header of RAF images.
|
|
13379
|
+
|
|
13380
|
+
Index1 Tag Name Writable
|
|
13381
|
+
------ -------- --------
|
|
13382
|
+
60 RAFVersion no
|
|
13383
|
+
108 RAFCompression no
|
|
13384
|
+
|
|
13319
13385
|
=head3 FujiFilm RAF Tags
|
|
13320
13386
|
|
|
13321
13387
|
FujiFilm RAF images contain meta information stored in a proprietary
|
|
@@ -15948,7 +16014,7 @@ Tags written by some Nikon GPS-equipped cameras like the AW100.
|
|
|
15948
16014
|
Index1 Tag Name Writable
|
|
15949
16015
|
------ -------- --------
|
|
15950
16016
|
0 FirmwareVersion51 no
|
|
15951
|
-
10 NEFCompression int16u
|
|
16017
|
+
10 NEFCompression int16u
|
|
15952
16018
|
|
|
15953
16019
|
=head3 Nikon MakerNotes0x56 Tags
|
|
15954
16020
|
|
|
@@ -19839,23 +19905,23 @@ any information found here will be extracted, even if the tag is not listed.
|
|
|
19839
19905
|
Tag ID Tag Name Writable
|
|
19840
19906
|
------ -------- --------
|
|
19841
19907
|
0x0000 ImageProcessingVersion undef[4]
|
|
19842
|
-
0x0100 WB_RBLevels int16u[
|
|
19843
|
-
0x0102 WB_RBLevels3000K int16u[
|
|
19844
|
-
0x0103 WB_RBLevels3300K int16u[
|
|
19845
|
-
0x0104 WB_RBLevels3600K int16u[
|
|
19846
|
-
0x0105 WB_RBLevels3900K int16u[
|
|
19847
|
-
0x0106 WB_RBLevels4000K int16u[
|
|
19848
|
-
0x0107 WB_RBLevels4300K int16u[
|
|
19849
|
-
0x0108 WB_RBLevels4500K int16u[
|
|
19850
|
-
0x0109 WB_RBLevels4800K int16u[
|
|
19851
|
-
0x010a WB_RBLevels5300K int16u[
|
|
19852
|
-
0x010b WB_RBLevels6000K int16u[
|
|
19853
|
-
0x010c WB_RBLevels6600K int16u[
|
|
19854
|
-
0x010d WB_RBLevels7500K int16u[
|
|
19855
|
-
0x010e WB_RBLevelsCWB1 int16u[
|
|
19856
|
-
0x010f WB_RBLevelsCWB2 int16u[
|
|
19857
|
-
0x0110 WB_RBLevelsCWB3 int16u[
|
|
19858
|
-
0x0111 WB_RBLevelsCWB4 int16u[
|
|
19908
|
+
0x0100 WB_RBLevels int16u[n]
|
|
19909
|
+
0x0102 WB_RBLevels3000K int16u[n]
|
|
19910
|
+
0x0103 WB_RBLevels3300K int16u[n]
|
|
19911
|
+
0x0104 WB_RBLevels3600K int16u[n]
|
|
19912
|
+
0x0105 WB_RBLevels3900K int16u[n]
|
|
19913
|
+
0x0106 WB_RBLevels4000K int16u[n]
|
|
19914
|
+
0x0107 WB_RBLevels4300K int16u[n]
|
|
19915
|
+
0x0108 WB_RBLevels4500K int16u[n]
|
|
19916
|
+
0x0109 WB_RBLevels4800K int16u[n]
|
|
19917
|
+
0x010a WB_RBLevels5300K int16u[n]
|
|
19918
|
+
0x010b WB_RBLevels6000K int16u[n]
|
|
19919
|
+
0x010c WB_RBLevels6600K int16u[n]
|
|
19920
|
+
0x010d WB_RBLevels7500K int16u[n]
|
|
19921
|
+
0x010e WB_RBLevelsCWB1 int16u[n]
|
|
19922
|
+
0x010f WB_RBLevelsCWB2 int16u[n]
|
|
19923
|
+
0x0110 WB_RBLevelsCWB3 int16u[n]
|
|
19924
|
+
0x0111 WB_RBLevelsCWB4 int16u[n]
|
|
19859
19925
|
0x0113 WB_GLevel3000K int16u
|
|
19860
19926
|
0x0114 WB_GLevel3300K int16u
|
|
19861
19927
|
0x0115 WB_GLevel3600K int16u
|
|
@@ -20228,6 +20294,7 @@ These tags are found in IFD0 of Panasonic/Leica RAW, RW2 and RWL images.
|
|
|
20228
20294
|
0x0030 CropLeft int16u
|
|
20229
20295
|
0x0031 CropBottom int16u
|
|
20230
20296
|
0x0032 CropRight int16u
|
|
20297
|
+
0x0037 ISO int32u
|
|
20231
20298
|
0x010f Make string
|
|
20232
20299
|
0x0110 Model string
|
|
20233
20300
|
0x0111 StripOffsets no
|
|
@@ -20803,10 +20870,10 @@ Camera orientation information written by the Gear 360 (SM-C200).
|
|
|
20803
20870
|
|
|
20804
20871
|
=head3 Samsung Trailer Tags
|
|
20805
20872
|
|
|
20806
|
-
Tags extracted from the trailer of JPEG images written when
|
|
20807
|
-
features (such as "Sound & Shot" or "Shot & More") from
|
|
20808
|
-
as the Galaxy S4 and Tab S, and from the 'sefd' atom in
|
|
20809
|
-
|
|
20873
|
+
Tags extracted from the SEFT trailer of JPEG and PNG images written when
|
|
20874
|
+
using certain features (such as "Sound & Shot" or "Shot & More") from
|
|
20875
|
+
Samsung models such as the Galaxy S4 and Tab S, and from the 'sefd' atom in
|
|
20876
|
+
HEIC images from models such as the S10+.
|
|
20810
20877
|
|
|
20811
20878
|
Tag Name Writable
|
|
20812
20879
|
-------- --------
|
|
@@ -20824,6 +20891,9 @@ Samsung S10+.
|
|
|
20824
20891
|
EmbeddedVideoFile no
|
|
20825
20892
|
EmbeddedVideoType no
|
|
20826
20893
|
MCCData no
|
|
20894
|
+
PEg_Info JSON
|
|
20895
|
+
RemasterInfo no
|
|
20896
|
+
SamsungCaptureInfo no
|
|
20827
20897
|
SingleShotDepthMap no
|
|
20828
20898
|
SingleShotMeta Samsung SingleShotMeta
|
|
20829
20899
|
SurroundShotVideo no
|
|
@@ -22890,7 +22960,7 @@ E-mount models.
|
|
|
22890
22960
|
|
|
22891
22961
|
=head3 Sony Tag9416 Tags
|
|
22892
22962
|
|
|
22893
|
-
Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1.
|
|
22963
|
+
Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1/E10M2.
|
|
22894
22964
|
|
|
22895
22965
|
Index1 Tag Name Writable
|
|
22896
22966
|
------ -------- --------
|
|
@@ -23188,7 +23258,8 @@ The following tags are decoded in unsupported maker notes. Use the Unknown
|
|
|
23188
23258
|
|
|
23189
23259
|
The main DNG tags are found in the EXIF table. The tables below define only
|
|
23190
23260
|
information found within structures of these main DNG tag values. See
|
|
23191
|
-
L<
|
|
23261
|
+
L<https://helpx.adobe.com/camera-raw/digital-negative.html> for the official
|
|
23262
|
+
DNG specification.
|
|
23192
23263
|
|
|
23193
23264
|
=head3 DNG AdobeData Tags
|
|
23194
23265
|
|
|
@@ -23609,7 +23680,7 @@ These tags are used in Minolta RAW format (MRW) images.
|
|
|
23609
23680
|
4 WBMode int8u~
|
|
23610
23681
|
5 ProgramMode int8u
|
|
23611
23682
|
6 ISOSetting int8u
|
|
23612
|
-
7 ColorMode
|
|
23683
|
+
7 ColorMode int8u
|
|
23613
23684
|
8 WB_RBLevelsTungsten int16u[2]
|
|
23614
23685
|
12 WB_RBLevelsDaylight int16u[2]
|
|
23615
23686
|
16 WB_RBLevelsCloudy int16u[2]
|
|
@@ -25750,7 +25821,7 @@ the image undisplayable.
|
|
|
25750
25821
|
2 ColorSpecApproximation int8s!
|
|
25751
25822
|
3 ICC_Profile ICC_Profile
|
|
25752
25823
|
ColorSpace int32u!
|
|
25753
|
-
ColorSpecData undef!
|
|
25824
|
+
ColorSpecData undef[$size-3]!
|
|
25754
25825
|
|
|
25755
25826
|
=head3 Jpeg2000 FileType Tags
|
|
25756
25827
|
|
|
@@ -29146,7 +29217,7 @@ ID3 version 2.2 tags. (These are the tags written by iTunes 5.0.)
|
|
|
29146
29217
|
'TT2' Title no
|
|
29147
29218
|
'TT3' Subtitle no
|
|
29148
29219
|
'TXT' Lyricist no
|
|
29149
|
-
'TXX'
|
|
29220
|
+
'TXX' UserDefinedText no
|
|
29150
29221
|
'TYE' Year no
|
|
29151
29222
|
'ULT' Lyrics no
|
|
29152
29223
|
'WAF' FileURL no
|
|
@@ -29155,7 +29226,7 @@ ID3 version 2.2 tags. (These are the tags written by iTunes 5.0.)
|
|
|
29155
29226
|
'WCM' CommercialURL no
|
|
29156
29227
|
'WCP' CopyrightURL no
|
|
29157
29228
|
'WPB' PublisherURL no
|
|
29158
|
-
'WXX'
|
|
29229
|
+
'WXX' UserDefinedURL no
|
|
29159
29230
|
|
|
29160
29231
|
=head3 ID3 SynLyrics Tags
|
|
29161
29232
|
|
|
@@ -29167,15 +29238,6 @@ The following tags are extracted from synchronized lyrics/text frames.
|
|
|
29167
29238
|
SynchronizedLyricsText no+
|
|
29168
29239
|
SynchronizedLyricsType no
|
|
29169
29240
|
|
|
29170
|
-
=head3 ID3 UserDefined Tags
|
|
29171
|
-
|
|
29172
|
-
ID3 user-defined text and URL tags will be dynamically added to this table
|
|
29173
|
-
by name when found.
|
|
29174
|
-
|
|
29175
|
-
Tag ID Tag Name Writable
|
|
29176
|
-
------ -------- --------
|
|
29177
|
-
[no tags known]
|
|
29178
|
-
|
|
29179
29241
|
=head3 ID3 v2_3 Tags
|
|
29180
29242
|
|
|
29181
29243
|
ID3 version 2.3 tags. Includes some non-standard tags written by other
|
|
@@ -29245,7 +29307,7 @@ software.
|
|
|
29245
29307
|
'TSOC' ComposerSortOrder no
|
|
29246
29308
|
'TSRC' ISRC no
|
|
29247
29309
|
'TSSE' EncoderSettings no
|
|
29248
|
-
'TXXX'
|
|
29310
|
+
'TXXX' UserDefinedText no
|
|
29249
29311
|
'TYER' Year no
|
|
29250
29312
|
'USER' TermsOfUse no
|
|
29251
29313
|
'USLT' Lyrics no
|
|
@@ -29258,7 +29320,7 @@ software.
|
|
|
29258
29320
|
'WORS' InternetRadioStationURL no
|
|
29259
29321
|
'WPAY' PaymentURL no
|
|
29260
29322
|
'WPUB' PublisherURL no
|
|
29261
|
-
'WXXX'
|
|
29323
|
+
'WXXX' UserDefinedURL no
|
|
29262
29324
|
'XDOR' OriginalReleaseTime no
|
|
29263
29325
|
'XOLY' OlympusDSS Olympus DSS
|
|
29264
29326
|
'XSOA' AlbumSortOrder no
|
|
@@ -29369,7 +29431,7 @@ software.
|
|
|
29369
29431
|
'TSRC' ISRC no
|
|
29370
29432
|
'TSSE' EncoderSettings no
|
|
29371
29433
|
'TSST' SetSubtitle no
|
|
29372
|
-
'TXXX'
|
|
29434
|
+
'TXXX' UserDefinedText no
|
|
29373
29435
|
'USER' TermsOfUse no
|
|
29374
29436
|
'USLT' Lyrics no
|
|
29375
29437
|
'WCOM' CommercialURL no
|
|
@@ -29381,7 +29443,7 @@ software.
|
|
|
29381
29443
|
'WORS' InternetRadioStationURL no
|
|
29382
29444
|
'WPAY' PaymentURL no
|
|
29383
29445
|
'WPUB' PublisherURL no
|
|
29384
|
-
'WXXX'
|
|
29446
|
+
'WXXX' UserDefinedURL no
|
|
29385
29447
|
'XDOR' OriginalReleaseTime no
|
|
29386
29448
|
'XOLY' OlympusDSS Olympus DSS
|
|
29387
29449
|
'XSOA' AlbumSortOrder no
|
|
@@ -29441,11 +29503,11 @@ parameters, as well as proprietary information written by many camera
|
|
|
29441
29503
|
models. Tags with a question mark after their name are not extracted unless
|
|
29442
29504
|
the Unknown option is set.
|
|
29443
29505
|
|
|
29444
|
-
When writing, ExifTool creates both QuickTime and XMP tags by
|
|
29445
|
-
the group may be specified to write one or the other
|
|
29446
|
-
location is specified, newly created QuickTime tags are
|
|
29447
|
-
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags>
|
|
29448
|
-
possible, otherwise in
|
|
29506
|
+
When writing video files, ExifTool creates both QuickTime and XMP tags by
|
|
29507
|
+
default, but the group may be specified to write one or the other
|
|
29508
|
+
separately. If no location is specified, newly created QuickTime tags are
|
|
29509
|
+
added in the L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags>
|
|
29510
|
+
location if possible, otherwise in
|
|
29449
29511
|
L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags>, and
|
|
29450
29512
|
finally in L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags>,
|
|
29451
29513
|
but this order may be changed by setting the PREFERRED level of the
|
|
@@ -29496,7 +29558,7 @@ the original size by padding with nulls if necessary.
|
|
|
29496
29558
|
|
|
29497
29559
|
See
|
|
29498
29560
|
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
|
|
29499
|
-
for the official specification.
|
|
29561
|
+
for the official QuickTime specification.
|
|
29500
29562
|
|
|
29501
29563
|
Tag ID Tag Name Writable
|
|
29502
29564
|
------ -------- --------
|
|
@@ -29556,7 +29618,7 @@ for the official specification.
|
|
|
29556
29618
|
The tags below are extracted from timed metadata in QuickTime and other
|
|
29557
29619
|
formats of video files when the ExtractEmbedded option is used. Although
|
|
29558
29620
|
most of these tags are combined into the single table below, ExifTool
|
|
29559
|
-
currently reads
|
|
29621
|
+
currently reads 76 different formats of timed GPS metadata from video files.
|
|
29560
29622
|
|
|
29561
29623
|
Tag Name Writable
|
|
29562
29624
|
-------- --------
|
|
@@ -29568,6 +29630,7 @@ currently reads 74 different formats of timed GPS metadata from video files.
|
|
|
29568
29630
|
CameraModel no
|
|
29569
29631
|
Car no
|
|
29570
29632
|
DateTimeOriginal no
|
|
29633
|
+
DateTimeStamp no
|
|
29571
29634
|
Distance no
|
|
29572
29635
|
ExposureCompensation no
|
|
29573
29636
|
ExposureTime no
|
|
@@ -30765,7 +30828,7 @@ the config file.
|
|
|
30765
30828
|
'RDTC' RicohRDTC Ricoh RDTC
|
|
30766
30829
|
'RDTG' RicohRDTG Ricoh RDTG
|
|
30767
30830
|
'RDTL' RicohRDTL Ricoh RDTL
|
|
30768
|
-
'RICO' RicohInfo
|
|
30831
|
+
'RICO' RicohInfo JPEG
|
|
30769
30832
|
'RMKN' RicohRMKN EXIF
|
|
30770
30833
|
'RTHU' PreviewImage no
|
|
30771
30834
|
'SDLN' PlayMode string
|
|
@@ -32678,7 +32741,8 @@ Other tags are extracted with the Unknown option.
|
|
|
32678
32741
|
|
|
32679
32742
|
The following tags are extracted from Matroska multimedia container files.
|
|
32680
32743
|
This container format is used by file types such as MKA, MKV, MKS and WEBM.
|
|
32681
|
-
For speed, by default ExifTool extracts tags only up to the first Cluster
|
|
32744
|
+
For speed, by default ExifTool extracts tags only up to the first Cluster
|
|
32745
|
+
unless a Seek element specifies the position of a Tags element after this.
|
|
32682
32746
|
However, the Verbose (-v) and Unknown = 2 (-U) options force processing of
|
|
32683
32747
|
Cluster data, and the ExtractEmbedded (-ee) option skips over Clusters to
|
|
32684
32748
|
read subsequent tags. See
|
|
@@ -40126,6 +40190,7 @@ FileName.
|
|
|
40126
40190
|
PreviewTIFF File no
|
|
40127
40191
|
PreviewWMF File no
|
|
40128
40192
|
ProcessingTime ExifTool no
|
|
40193
|
+
RAFCompression File no
|
|
40129
40194
|
RAFVersion File no
|
|
40130
40195
|
ResourceForkSize System no
|
|
40131
40196
|
SphericalVideoXML GSpherical yes!
|
|
@@ -215,7 +215,7 @@ sub FormatIPTC($$$$$;$)
|
|
|
215
215
|
sub IptcDate($)
|
|
216
216
|
{
|
|
217
217
|
my $val = shift;
|
|
218
|
-
unless ($val =~ s{
|
|
218
|
+
unless ($val =~ s{^.*?(\d{4})[-:/.]?(\d{2})[-:/.]?(\d{2}).*}{$1$2$3}s) {
|
|
219
219
|
warn "Invalid date format (use YYYY:mm:dd)\n";
|
|
220
220
|
undef $val;
|
|
221
221
|
}
|
|
@@ -507,10 +507,16 @@ sub WriteItemInfo($$$)
|
|
|
507
507
|
my ($warn, $extent, $buff, @edit);
|
|
508
508
|
$warn = 'Missing iloc box' unless $$boxPos{iloc};
|
|
509
509
|
$warn = "No Extents for $type item" unless $$item{Extents} and @{$$item{Extents}};
|
|
510
|
-
|
|
510
|
+
if ($$item{ContentEncoding}) {
|
|
511
|
+
if ($$item{ContentEncoding} ne 'deflate') {
|
|
512
|
+
$warn = "Can't currently decode $$item{ContentEncoding} encoded $type metadata";
|
|
513
|
+
} elsif (not eval { require Compress::Zlib }) {
|
|
514
|
+
$warn = "Install Compress::Zlib to decode deflated $type metadata";
|
|
515
|
+
}
|
|
516
|
+
}
|
|
511
517
|
$warn = "Can't currently decode protected $type metadata" if $$item{ProtectionIndex};
|
|
512
518
|
$warn = "Can't currently extract $type with construction method $$item{ConstructionMethod}" if $$item{ConstructionMethod};
|
|
513
|
-
$warn = "$type metadata is not this file" if $$item{DataReferenceIndex};
|
|
519
|
+
$warn = "$type metadata is not in this file" if $$item{DataReferenceIndex};
|
|
514
520
|
$warn and $et->Warn($warn), next;
|
|
515
521
|
my $base = $$item{BaseOffset} || 0;
|
|
516
522
|
my $val = '';
|
|
@@ -527,6 +533,25 @@ sub WriteItemInfo($$$)
|
|
|
527
533
|
}
|
|
528
534
|
next unless defined $buff;
|
|
529
535
|
$buff = $val . $buff if length $val;
|
|
536
|
+
my $comp = $et->Options('Compress');
|
|
537
|
+
if (defined $comp and ($comp xor $$item{ContentEncoding})) {
|
|
538
|
+
#TODO: add ability to edit infe entry in iinf to change encoding according to Compress option if set
|
|
539
|
+
$et->Warn("Can't currently change compression when rewriting $name in HEIC",1);
|
|
540
|
+
}
|
|
541
|
+
my $wasDeflated;
|
|
542
|
+
if ($$item{ContentEncoding}) {
|
|
543
|
+
my ($v2, $stat);
|
|
544
|
+
my $inflate = Compress::Zlib::inflateInit();
|
|
545
|
+
$inflate and ($v2, $stat) = $inflate->inflate($buff);
|
|
546
|
+
$et->VPrint(0, " (Inflating stored $name metadata)\n");
|
|
547
|
+
if ($inflate and $stat == Compress::Zlib::Z_STREAM_END()) {
|
|
548
|
+
$buff = $v2;
|
|
549
|
+
$wasDeflated = 1;
|
|
550
|
+
} else {
|
|
551
|
+
$et->WarnOnce("Error inflating $name metadata");
|
|
552
|
+
next;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
530
555
|
my ($hdr, $subTable, $proc);
|
|
531
556
|
if ($name eq 'EXIF') {
|
|
532
557
|
if (not length $buff) {
|
|
@@ -560,6 +585,17 @@ sub WriteItemInfo($$$)
|
|
|
560
585
|
($dirInfo{DirLen} or length $newVal))
|
|
561
586
|
{
|
|
562
587
|
$newVal = $hdr . $newVal if length $hdr and length $newVal;
|
|
588
|
+
if ($wasDeflated) {
|
|
589
|
+
my $deflate = Compress::Zlib::deflateInit();
|
|
590
|
+
if ($deflate) {
|
|
591
|
+
$et->VPrint(0, " (Re-deflating new $name metadata)\n");
|
|
592
|
+
$buff = $deflate->deflate($newVal);
|
|
593
|
+
if (defined $buff) {
|
|
594
|
+
$buff .= $deflate->flush();
|
|
595
|
+
$newVal = $buff;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
563
599
|
$edit[0][2] = \$newVal; # replace the old chunk with the new data
|
|
564
600
|
$edit[0][3] = $id; # mark this chunk with the item ID
|
|
565
601
|
push @mdatEdit, @edit;
|
|
@@ -640,21 +676,38 @@ sub WriteItemInfo($$$)
|
|
|
640
676
|
# add new infe to iinf
|
|
641
677
|
$add{iinf} = $add{iref} = $add{iloc} = '' unless defined $add{iinf};
|
|
642
678
|
my ($type, $mime);
|
|
679
|
+
my $enc = '';
|
|
643
680
|
if ($name eq 'XMP') {
|
|
644
681
|
$type = "mime\0";
|
|
645
682
|
$mime = "application/rdf+xml\0";
|
|
683
|
+
# write compressed XMP if Compress option is set
|
|
684
|
+
if ($et->Options('Compress') and length $newVal) {
|
|
685
|
+
if (not eval { require Compress::Zlib }) {
|
|
686
|
+
$et->WarnOnce('Install Compress::Zlib to write compressed metadata');
|
|
687
|
+
} else {
|
|
688
|
+
my $deflate = Compress::Zlib::deflateInit();
|
|
689
|
+
if ($deflate) {
|
|
690
|
+
$et->VPrint(0, " (Deflating new $name metadata)\n");
|
|
691
|
+
my $buff = $deflate->deflate($newVal);
|
|
692
|
+
if (defined $buff) {
|
|
693
|
+
$newVal = $buff . $deflate->flush();
|
|
694
|
+
$enc = "deflate\0";
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}
|
|
646
699
|
} else {
|
|
647
700
|
$type = "Exif\0";
|
|
648
701
|
$mime = '';
|
|
649
702
|
}
|
|
650
703
|
my $id = 1;
|
|
651
704
|
++$id while $$items{$id} or $usedID{$id}; # find next unused item ID
|
|
652
|
-
my $n = length($type) + length($mime) + 16;
|
|
705
|
+
my $n = length($type) + length($mime) + length($enc) + 16;
|
|
653
706
|
if ($id < 0x10000) {
|
|
654
|
-
$add{iinf} .= pack('Na4CCCCnn', $n, 'infe', 2, 0, 0, 1, $id, 0) . $type . $mime;
|
|
707
|
+
$add{iinf} .= pack('Na4CCCCnn', $n, 'infe', 2, 0, 0, 1, $id, 0) . $type . $mime . $enc;
|
|
655
708
|
} else {
|
|
656
709
|
$n += 2;
|
|
657
|
-
$add{iinf} .= pack('Na4CCCCNn', $n, 'infe', 3, 0, 0, 1, $id, 0) . $type . $mime;
|
|
710
|
+
$add{iinf} .= pack('Na4CCCCNn', $n, 'infe', 3, 0, 0, 1, $id, 0) . $type . $mime . $enc;
|
|
658
711
|
}
|
|
659
712
|
# add new cdsc to iref
|
|
660
713
|
if ($irefVer) {
|
|
@@ -733,28 +786,36 @@ sub WriteItemInfo($$$)
|
|
|
733
786
|
$add{$tag} = Set32u(12 + length $add{$tag}) . $tag .
|
|
734
787
|
Set8u($$boxPos{$tag}[2]) . "\0\0\0" . $add{$tag};
|
|
735
788
|
} elsif ($tag ne 'hdlr') {
|
|
736
|
-
my $n = Get32u($outfile, $pos);
|
|
737
|
-
Set32u($n
|
|
789
|
+
my $n = Get32u($outfile, $pos) + length($add{$tag});
|
|
790
|
+
Set32u($n, $outfile, $pos); # increase box size
|
|
738
791
|
}
|
|
739
792
|
if ($tag eq 'iinf') {
|
|
740
793
|
my $iinfVer = Get8u($outfile, $pos + 8);
|
|
741
794
|
if ($iinfVer == 0) {
|
|
742
|
-
my $n = Get16u($outfile, $pos + 12);
|
|
743
|
-
|
|
795
|
+
my $n = Get16u($outfile, $pos + 12) + $countNew;
|
|
796
|
+
if ($n > 0xffff) {
|
|
797
|
+
$et->Error("Can't currently handle rollover to long item count");
|
|
798
|
+
return undef;
|
|
799
|
+
}
|
|
800
|
+
Set16u($n, $outfile, $pos + 12); # incr count
|
|
744
801
|
} else {
|
|
745
|
-
my $n = Get32u($outfile, $pos + 12);
|
|
746
|
-
Set32u($n
|
|
802
|
+
my $n = Get32u($outfile, $pos + 12) + $countNew;
|
|
803
|
+
Set32u($n, $outfile, $pos + 12); # incr count
|
|
747
804
|
}
|
|
748
805
|
} elsif ($tag eq 'iref') {
|
|
749
806
|
# nothing more to do
|
|
750
807
|
} elsif ($tag eq 'iloc') {
|
|
751
808
|
my $ilocVer = Get8u($outfile, $pos + 8);
|
|
752
809
|
if ($ilocVer < 2) {
|
|
753
|
-
my $n = Get16u($outfile, $pos + 14);
|
|
754
|
-
Set16u($n
|
|
810
|
+
my $n = Get16u($outfile, $pos + 14) + $countNew;
|
|
811
|
+
Set16u($n, $outfile, $pos + 14); # incr count
|
|
812
|
+
if ($n > 0xffff) {
|
|
813
|
+
$et->Error("Can't currently handle rollover to long item count");
|
|
814
|
+
return undef;
|
|
815
|
+
}
|
|
755
816
|
} else {
|
|
756
|
-
my $n = Get32u($outfile, $pos + 14);
|
|
757
|
-
Set32u($n
|
|
817
|
+
my $n = Get32u($outfile, $pos + 14) + $countNew;
|
|
818
|
+
Set32u($n, $outfile, $pos + 14); # incr count
|
|
758
819
|
}
|
|
759
820
|
# must also update pointer locations in this box
|
|
760
821
|
if ($added) {
|
|
@@ -895,6 +956,8 @@ sub WriteQuickTime($$$)
|
|
|
895
956
|
} elsif (not $et->Options('LargeFileSupport')) {
|
|
896
957
|
$et->Error('End of processing at large atom (LargeFileSupport not enabled)');
|
|
897
958
|
last;
|
|
959
|
+
} elsif ($et->Options('LargeFileSupport') eq '2') {
|
|
960
|
+
$et->WarnOnce('Processing large atom (LargeFileSupport is 2)');
|
|
898
961
|
}
|
|
899
962
|
}
|
|
900
963
|
$size = $hi * 4294967296 + $lo - 16;
|
|
@@ -1447,7 +1510,13 @@ sub WriteQuickTime($$$)
|
|
|
1447
1510
|
$writeLast = ($writeLast || '') . $hdr . $buff;
|
|
1448
1511
|
} else {
|
|
1449
1512
|
# save position of this box in the output buffer
|
|
1513
|
+
#TODO do this:
|
|
1514
|
+
#TODO my $bp = $boxPos{$tag} || ($boxPos{$tag} = [ ]);
|
|
1515
|
+
#TODO push @$bp, length($$outfile), length($hdr) + length($buff);
|
|
1516
|
+
#TODO instead of this:
|
|
1450
1517
|
$boxPos{$tag} = [ length($$outfile), length($hdr) + length($buff) ];
|
|
1518
|
+
#TODO then we have the positions of all the infe boxes -- we then only need
|
|
1519
|
+
#TODO to know the index of the box to edit if the encoding changes for one of them
|
|
1451
1520
|
# copy the existing atom
|
|
1452
1521
|
Write($outfile, $hdr, $buff) or $rtnVal=$rtnErr, $err=1, last;
|
|
1453
1522
|
}
|
|
@@ -3844,7 +3844,6 @@ sub GetGeolocateTags($$;$)
|
|
|
3844
3844
|
'iptc' => [ qw(City Province-State Country-PrimaryLocationCode Country-PrimaryLocationName) ],
|
|
3845
3845
|
'gps' => [ qw(GPSLatitude GPSLongitude GPSLatitudeRef GPSLongitudeRef) ],
|
|
3846
3846
|
'xmp-exif' => [ qw(GPSLatitude GPSLongitude) ],
|
|
3847
|
-
'keys' => [ 'GPSCoordinates', 'LocationName' ],
|
|
3848
3847
|
'itemlist' => [ 'GPSCoordinates' ],
|
|
3849
3848
|
'userdata' => [ 'GPSCoordinates' ],
|
|
3850
3849
|
# more general groups not in this lookup: XMP and QuickTime
|
|
@@ -3855,12 +3854,16 @@ sub GetGeolocateTags($$;$)
|
|
|
3855
3854
|
$tagGroups{$grp} and push @tags, map("$grp:$_", @{$tagGroups{$grp}});
|
|
3856
3855
|
}
|
|
3857
3856
|
# set default XMP City tags if necessary
|
|
3858
|
-
if (not $writeGPS
|
|
3859
|
-
push @tags,
|
|
3857
|
+
if (not $writeGPS) {
|
|
3858
|
+
push @tags, 'Keys:LocationName' if $grps{'keys'};
|
|
3859
|
+
if ($grps{xmp} or (not @tags and not $grps{quicktime})) {
|
|
3860
|
+
push @tags, qw(XMP:City XMP:State XMP:CountryCode XMP:Country Keys:LocationName);
|
|
3861
|
+
}
|
|
3860
3862
|
}
|
|
3861
3863
|
$writeGPS = 1 unless defined $writeGPS; # (delete both City and GPS)
|
|
3864
|
+
push @tags, 'Keys:GPSCoordinates' if $writeGPS and $grps{'keys'};
|
|
3862
3865
|
# set default QuickTime tag if necessary
|
|
3863
|
-
my $didQT = grep /
|
|
3866
|
+
my $didQT = grep /GPSCoordinates$/, @tags;
|
|
3864
3867
|
if (($grps{quicktime} and not $didQT) or ($writeGPS and not @tags and not $grps{xmp})) {
|
|
3865
3868
|
push @tags, 'QuickTime:GPSCoordinates';
|
|
3866
3869
|
}
|