exiftool_vendored 13.57.1 → 13.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +38 -2
- data/bin/MANIFEST +1 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -2
- data/bin/config_files/example.config +1 -1
- data/bin/config_files/novelty.config +51 -0
- data/bin/exiftool +13 -10
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -4
- data/bin/lib/Image/ExifTool/Canon.pm +41 -39
- data/bin/lib/Image/ExifTool/DJI.pm +22 -5
- data/bin/lib/Image/ExifTool/Exif.pm +7 -7
- data/bin/lib/Image/ExifTool/FujiFilm.pm +17 -12
- data/bin/lib/Image/ExifTool/Garmin.pm +185 -3221
- data/bin/lib/Image/ExifTool/Import.pm +18 -9
- data/bin/lib/Image/ExifTool/M2TS.pm +24 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +4 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +6 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +4 -1
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +68 -28
- data/bin/lib/Image/ExifTool/TagLookup.pm +39 -37
- data/bin/lib/Image/ExifTool/TagNames.pod +83 -59
- data/bin/lib/Image/ExifTool/WriteXMP.pl +9 -0
- data/bin/lib/Image/ExifTool/Writer.pl +12 -0
- data/bin/lib/Image/ExifTool/XMP.pm +28 -7
- data/bin/lib/Image/ExifTool.pm +41 -15
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
|
@@ -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 33487 tags, with 21437 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
|
|
@@ -9628,18 +9628,18 @@ These tags are used by the EOS R3, R7, R50 and R6mkII
|
|
|
9628
9628
|
169 ColorTempUnknown10? int16s
|
|
9629
9629
|
170 WB_RGGBLevelsUnknown11? int16s[4]
|
|
9630
9630
|
174 ColorTempUnknown11? int16s
|
|
9631
|
-
175
|
|
9632
|
-
179
|
|
9633
|
-
180
|
|
9634
|
-
184
|
|
9635
|
-
185
|
|
9636
|
-
189
|
|
9637
|
-
190
|
|
9638
|
-
194
|
|
9639
|
-
195
|
|
9640
|
-
199
|
|
9641
|
-
200
|
|
9642
|
-
204
|
|
9631
|
+
175 WB_RGGBLevelsUnknown12? int16s[4]
|
|
9632
|
+
179 ColorTempUnknown12? int16s
|
|
9633
|
+
180 WB_RGGBLevelsUnknown13? int16s[4]
|
|
9634
|
+
184 ColorTempUnknown13? int16s
|
|
9635
|
+
185 WB_RGGBLevelsUnknown14? int16s[4]
|
|
9636
|
+
189 ColorTempUnknown14? int16s
|
|
9637
|
+
190 WB_RGGBLevelsUnknown15? int16s[4]
|
|
9638
|
+
194 ColorTempUnknown15? int16s
|
|
9639
|
+
195 WB_RGGBLevelsUnknown16? int16s[4]
|
|
9640
|
+
199 ColorTempUnknown16? int16s
|
|
9641
|
+
200 WB_RGGBLevelsUnknown17? int16s[4]
|
|
9642
|
+
204 ColorTempUnknown17? int16s
|
|
9643
9643
|
205 WB_RGGBLevelsDaylight int16s[4]
|
|
9644
9644
|
209 ColorTempDaylight int16s
|
|
9645
9645
|
210 WB_RGGBLevelsShade int16s[4]
|
|
@@ -9654,28 +9654,28 @@ These tags are used by the EOS R3, R7, R50 and R6mkII
|
|
|
9654
9654
|
234 ColorTempKelvin int16s
|
|
9655
9655
|
235 WB_RGGBLevelsFlash int16s[4]
|
|
9656
9656
|
239 ColorTempFlash int16s
|
|
9657
|
-
240
|
|
9658
|
-
244
|
|
9659
|
-
245
|
|
9660
|
-
249
|
|
9661
|
-
250
|
|
9662
|
-
254
|
|
9663
|
-
255
|
|
9664
|
-
259
|
|
9665
|
-
260
|
|
9666
|
-
264
|
|
9667
|
-
265
|
|
9668
|
-
269
|
|
9669
|
-
270
|
|
9670
|
-
274
|
|
9671
|
-
275
|
|
9672
|
-
279
|
|
9673
|
-
280
|
|
9674
|
-
284
|
|
9675
|
-
285
|
|
9676
|
-
289
|
|
9677
|
-
290
|
|
9678
|
-
294
|
|
9657
|
+
240 WB_RGGBLevelsUnknown18? int16s[4]
|
|
9658
|
+
244 ColorTempUnknown18? int16s
|
|
9659
|
+
245 WB_RGGBLevelsUnknown19? int16s[4]
|
|
9660
|
+
249 ColorTempUnknown19? int16s
|
|
9661
|
+
250 WB_RGGBLevelsUnknown20? int16s[4]
|
|
9662
|
+
254 ColorTempUnknown20? int16s
|
|
9663
|
+
255 WB_RGGBLevelsUnknown21? int16s[4]
|
|
9664
|
+
259 ColorTempUnknown21? int16s
|
|
9665
|
+
260 WB_RGGBLevelsUnknown22? int16s[4]
|
|
9666
|
+
264 ColorTempUnknown22? int16s
|
|
9667
|
+
265 WB_RGGBLevelsUnknown23? int16s[4]
|
|
9668
|
+
269 ColorTempUnknown23? int16s
|
|
9669
|
+
270 WB_RGGBLevelsUnknown24? int16s[4]
|
|
9670
|
+
274 ColorTempUnknown24? int16s
|
|
9671
|
+
275 WB_RGGBLevelsUnknown25? int16s[4]
|
|
9672
|
+
279 ColorTempUnknown25? int16s
|
|
9673
|
+
280 WB_RGGBLevelsUnknown26? int16s[4]
|
|
9674
|
+
284 ColorTempUnknown26? int16s
|
|
9675
|
+
285 WB_RGGBLevelsUnknown27? int16s[4]
|
|
9676
|
+
289 ColorTempUnknown27? int16s
|
|
9677
|
+
290 WB_RGGBLevelsUnknown28? int16s[4]
|
|
9678
|
+
294 ColorTempUnknown28? int16s
|
|
9679
9679
|
300 ColorCalib? Canon ColorCalib
|
|
9680
9680
|
363 PerChannelBlackLevel int16u[4]
|
|
9681
9681
|
640 NormalWhiteLevel int16u
|
|
@@ -11157,6 +11157,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11157
11157
|
'dvtm_AVATA2_1-1-10' Model no
|
|
11158
11158
|
'dvtm_AVATA2_2-2-3-1' SerialNumber2 no
|
|
11159
11159
|
'dvtm_AVATA2_2-3' FrameInfo DJI FrameInfo
|
|
11160
|
+
'dvtm_AVATA2_3-1-1' FrameNumber no
|
|
11160
11161
|
'dvtm_AVATA2_3-1-2' TimeStamp no
|
|
11161
11162
|
'dvtm_AVATA2_3-2-2-1' ISO no
|
|
11162
11163
|
'dvtm_AVATA2_3-2-4-1' ShutterSpeed no
|
|
@@ -11168,6 +11169,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11168
11169
|
'dvtm_AVATA2_3-4-5-1' RelativeAltitude no
|
|
11169
11170
|
'dvtm_Air3_1-1-5' SerialNumber no
|
|
11170
11171
|
'dvtm_Air3_2-3' FrameInfo DJI FrameInfo
|
|
11172
|
+
'dvtm_Air3_3-1-1' FrameNumber no
|
|
11171
11173
|
'dvtm_Air3_3-1-2' TimeStamp no
|
|
11172
11174
|
'dvtm_Air3_3-2-7-1' ISO no
|
|
11173
11175
|
'dvtm_Air3_3-2-10-1' ShutterSpeed no
|
|
@@ -11180,6 +11182,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11180
11182
|
'dvtm_Air3_3-4-3' GimbalInfo DJI GimbalInfo
|
|
11181
11183
|
'dvtm_Air3s_1-1-5' SerialNumber no
|
|
11182
11184
|
'dvtm_Air3s_2-3' FrameInfo DJI FrameInfo
|
|
11185
|
+
'dvtm_Air3s_3-1-1' FrameNumber no
|
|
11183
11186
|
'dvtm_Air3s_3-1-2' TimeStamp no
|
|
11184
11187
|
'dvtm_Air3s_3-2-7-1' ISO no
|
|
11185
11188
|
'dvtm_Air3s_3-2-10-1' ShutterSpeed no
|
|
@@ -11193,6 +11196,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11193
11196
|
'dvtm_Mavic4_1-1-5' SerialNumber no
|
|
11194
11197
|
'dvtm_Mavic4_1-1-10' Model no
|
|
11195
11198
|
'dvtm_Mavic4_2-3' FrameInfo DJI FrameInfo
|
|
11199
|
+
'dvtm_Mavic4_3-1-1' FrameNumber no
|
|
11196
11200
|
'dvtm_Mavic4_3-1-2' TimeStamp no
|
|
11197
11201
|
'dvtm_Mavic4_3-2-9-1' ISO no
|
|
11198
11202
|
'dvtm_Mavic4_3-2-10-1' ShutterSpeed no
|
|
@@ -11205,6 +11209,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11205
11209
|
'dvtm_Mini4_Pro_1-1-5' SerialNumber no
|
|
11206
11210
|
'dvtm_Mini4_Pro_1-1-10' Model no
|
|
11207
11211
|
'dvtm_Mini4_Pro_2-3' FrameInfo DJI FrameInfo
|
|
11212
|
+
'dvtm_Mini4_Pro_3-1-1' FrameNumber no
|
|
11208
11213
|
'dvtm_Mini4_Pro_3-2-7-1' ISO no
|
|
11209
11214
|
'dvtm_Mini4_Pro_3-3-3' DroneInfo DJI DroneInfo
|
|
11210
11215
|
'dvtm_Mini4_Pro_3-3-4-1' GPSInfo DJI GPSInfo
|
|
@@ -11213,6 +11218,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11213
11218
|
'dvtm_Mini4_Pro_3-4-3' GimbalInfo DJI GimbalInfo
|
|
11214
11219
|
'dvtm_Mini5Pro_1-1-5' SerialNumber no
|
|
11215
11220
|
'dvtm_Mini5Pro_1-1-10' Model no
|
|
11221
|
+
'dvtm_Mini5Pro_3-1-1' FrameNumber no
|
|
11216
11222
|
'dvtm_Mini5Pro_3-2-37-1' Temperature no
|
|
11217
11223
|
'dvtm_Mini5Pro_3-3-4-1' GPSInfo DJI GPSInfo
|
|
11218
11224
|
'dvtm_Mini5Pro_3-3-4-2' AbsoluteAltitude no
|
|
@@ -11223,6 +11229,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11223
11229
|
'dvtm_PP-101_1-1-5' SerialNumber no
|
|
11224
11230
|
'dvtm_PP-101_1-1-10' Model no
|
|
11225
11231
|
'dvtm_PP-101_2-3' FrameInfo DJI FrameInfo
|
|
11232
|
+
'dvtm_PP-101_3-1-1' FrameNumber no
|
|
11226
11233
|
'dvtm_PP-101_3-1-2' TimeStamp no
|
|
11227
11234
|
'dvtm_PP-101_3-2-9-1' ISO no
|
|
11228
11235
|
'dvtm_PP-101_3-2-10-1' ShutterSpeed no
|
|
@@ -11230,7 +11237,8 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11230
11237
|
'dvtm_ac203_1-1-5' SerialNumber no
|
|
11231
11238
|
'dvtm_ac203_1-1-10' Model no
|
|
11232
11239
|
'dvtm_ac203_2-3' FrameInfo DJI FrameInfo
|
|
11233
|
-
'dvtm_ac203_3-
|
|
11240
|
+
'dvtm_ac203_3-1-1' FrameNumber no
|
|
11241
|
+
'dvtm_ac203_3-2-3-1' ISO no
|
|
11234
11242
|
'dvtm_ac203_3-2-4-1' ShutterSpeed no
|
|
11235
11243
|
'dvtm_ac203_3-2-6-1' ColorTemperature no
|
|
11236
11244
|
'dvtm_ac203_3-2-10-2' AccelerometerX no
|
|
@@ -11242,6 +11250,8 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11242
11250
|
'dvtm_ac204_1-1-5' SerialNumber no
|
|
11243
11251
|
'dvtm_ac204_1-1-10' Model no
|
|
11244
11252
|
'dvtm_ac204_2-3' FrameInfo DJI FrameInfo
|
|
11253
|
+
'dvtm_ac204_3-1-1' FrameNumber no
|
|
11254
|
+
'dvtm_ac204_3-2-3-1' ISO no
|
|
11245
11255
|
'dvtm_ac204_3-2-4-1' ShutterSpeed no
|
|
11246
11256
|
'dvtm_ac204_3-2-6-1' ColorTemperature no
|
|
11247
11257
|
'dvtm_ac204_3-2-10-2' AccelerometerX no
|
|
@@ -11253,6 +11263,8 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11253
11263
|
'dvtm_ac206_1-1-5' SerialNumber no
|
|
11254
11264
|
'dvtm_ac206_1-1-10' Model no
|
|
11255
11265
|
'dvtm_ac206_2-3' FrameInfo DJI FrameInfo
|
|
11266
|
+
'dvtm_ac206_3-1-1' FrameNumber no
|
|
11267
|
+
'dvtm_ac206_3-2-3-1' ISO no
|
|
11256
11268
|
'dvtm_ac206_3-2-4-1' ShutterSpeed no
|
|
11257
11269
|
'dvtm_ac206_3-2-6-1' ColorTemperature no
|
|
11258
11270
|
'dvtm_ac206_3-2-10-2' AccelerometerX no
|
|
@@ -11265,6 +11277,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11265
11277
|
'dvtm_dji_neo_1-1-10' Model no
|
|
11266
11278
|
'dvtm_dji_neo_2-2-3-1' SerialNumber2 no
|
|
11267
11279
|
'dvtm_dji_neo_2-3' FrameInfo DJI FrameInfo
|
|
11280
|
+
'dvtm_dji_neo_3-1-1' FrameNumber no
|
|
11268
11281
|
'dvtm_dji_neo_3-1-2' TimeStamp no
|
|
11269
11282
|
'dvtm_dji_neo_3-2-2-1' ISO no
|
|
11270
11283
|
'dvtm_dji_neo_3-2-4-1' ShutterSpeed no
|
|
@@ -11276,6 +11289,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11276
11289
|
'dvtm_oq101_1-1-5' SerialNumber no
|
|
11277
11290
|
'dvtm_oq101_1-1-10' Model no
|
|
11278
11291
|
'dvtm_oq101_1-14-1' FNumber no
|
|
11292
|
+
'dvtm_oq101_3-1-1' FrameNumber no
|
|
11279
11293
|
'dvtm_oq101_3-1-2' TimeStamp no
|
|
11280
11294
|
'dvtm_oq101_3-2-3-1' ISO no
|
|
11281
11295
|
'dvtm_oq101_3-2-4-1' ShutterSpeed no
|
|
@@ -11289,6 +11303,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11289
11303
|
'dvtm_pm320_1-1-5' SerialNumber no
|
|
11290
11304
|
'dvtm_pm320_1-1-10' Model no
|
|
11291
11305
|
'dvtm_pm320_2-2' FrameInfo DJI FrameInfo
|
|
11306
|
+
'dvtm_pm320_3-1-1' FrameNumber no
|
|
11292
11307
|
'dvtm_pm320_3-2-2-1' ISO no
|
|
11293
11308
|
'dvtm_pm320_3-2-3-1' ShutterSpeed no
|
|
11294
11309
|
'dvtm_pm320_3-2-4-1' FNumber no
|
|
@@ -11301,6 +11316,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11301
11316
|
'dvtm_wa345e_1-1-5' SerialNumber no
|
|
11302
11317
|
'dvtm_wa345e_1-1-10' Model no
|
|
11303
11318
|
'dvtm_wa345e_2-2' FrameInfo DJI FrameInfo
|
|
11319
|
+
'dvtm_wa345e_3-1-1' FrameNumber no
|
|
11304
11320
|
'dvtm_wa345e_3-1-2' TimeStamp no
|
|
11305
11321
|
'dvtm_wa345e_3-3-3' DroneInfo DJI DroneInfo
|
|
11306
11322
|
'dvtm_wa345e_3-3-4-1' GPSInfo DJI GPSInfo
|
|
@@ -11311,6 +11327,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11311
11327
|
'dvtm_wm261_1-1-5' SerialNumber no
|
|
11312
11328
|
'dvtm_wm261_1-1-10' Model no
|
|
11313
11329
|
'dvtm_wm261_2-3' FrameInfo DJI FrameInfo
|
|
11330
|
+
'dvtm_wm261_3-1-1' FrameNumber no
|
|
11314
11331
|
'dvtm_wm261_3-1-2' TimeStamp no
|
|
11315
11332
|
'dvtm_wm261_3-2-9-1' ISO no
|
|
11316
11333
|
'dvtm_wm261_3-2-10-1' ShutterSpeed no
|
|
@@ -11324,6 +11341,7 @@ for a given protocol should be considered to have the default value of 0.
|
|
|
11324
11341
|
'dvtm_wm265e_1-1-5' SerialNumber no
|
|
11325
11342
|
'dvtm_wm265e_1-1-10' Model no
|
|
11326
11343
|
'dvtm_wm265e_2-2' FrameInfo DJI FrameInfo
|
|
11344
|
+
'dvtm_wm265e_3-1-1' FrameNumber no
|
|
11327
11345
|
'dvtm_wm265e_3-2-2-1' ISO no
|
|
11328
11346
|
'dvtm_wm265e_3-2-3-1' ShutterSpeed no
|
|
11329
11347
|
'dvtm_wm265e_3-2-6-1' DigitalZoom no
|
|
@@ -12001,7 +12019,7 @@ Tags extracted from the header of RAF images.
|
|
|
12001
12019
|
|
|
12002
12020
|
Index1 Tag Name Writable
|
|
12003
12021
|
------ -------- --------
|
|
12004
|
-
60
|
|
12022
|
+
60 FirmwareVersion no
|
|
12005
12023
|
108 RAFCompression no
|
|
12006
12024
|
|
|
12007
12025
|
=head3 FujiFilm RAF Tags
|
|
@@ -12032,6 +12050,7 @@ RAF-format information.
|
|
|
12032
12050
|
0x2310 WB_GRGBLevelsWarmWhiteFluor no
|
|
12033
12051
|
0x2311 WB_GRGBLevelsLivingRoomWarmWhiteFluor no
|
|
12034
12052
|
0x2400 WB_GRGBLevelsTungsten no
|
|
12053
|
+
0x2410 WB_GRGBLevelsFlash no
|
|
12035
12054
|
0x2ff0 WB_GRGBLevels no
|
|
12036
12055
|
0x9200 RelativeExposure no
|
|
12037
12056
|
0x9650 RawExposureBias no
|
|
@@ -20650,6 +20669,7 @@ These tags are used in Pentax/Asahi/Ricoh cameras.
|
|
|
20650
20669
|
0x0095 SkinToneCorrection int8s[2]
|
|
20651
20670
|
SkinToneCorrection int8s[3]
|
|
20652
20671
|
0x0096 ClarityControl int8s[2]
|
|
20672
|
+
0x009e HDF int8u
|
|
20653
20673
|
0x0200 BlackPoint int16u[4]
|
|
20654
20674
|
0x0201 WhitePoint int16u[4]
|
|
20655
20675
|
0x0203 ColorMatrixA int16s[9]
|
|
@@ -23708,8 +23728,8 @@ Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
|
|
|
23708
23728
|
|
|
23709
23729
|
=head3 Sony Tag9050d Tags
|
|
23710
23730
|
|
|
23711
|
-
Valid for ILCE-6700/7CM2/7CR/ZV-E1. Also for ILCE-1M2/7M5 when using
|
|
23712
|
-
shutter.
|
|
23731
|
+
Valid for ILCE-6700/7CM2/7CR/ZV-E1. Also for ILCE-1M2/7M5/7RM6 when using
|
|
23732
|
+
mechanical shutter.
|
|
23713
23733
|
|
|
23714
23734
|
Index1 Tag Name Writable
|
|
23715
23735
|
------ -------- --------
|
|
@@ -24125,8 +24145,8 @@ E-mount models.
|
|
|
24125
24145
|
|
|
24126
24146
|
=head3 Sony Tag9416 Tags
|
|
24127
24147
|
|
|
24128
|
-
Valid for the ILCE-1/6700/7CM2/7CR/7M4/7M5/7RM5/7SM3/9M3,
|
|
24129
|
-
ZV-E1/E10M2, but ILCE-7M5 has different offsets.
|
|
24148
|
+
Valid for the ILCE-1/6700/7CM2/7CR/7M4/7M5/7RM5/7RM6/7SM3/9M3,
|
|
24149
|
+
ILME-FX2/FX3/FX30, ZV-E1/E10M2, but ILCE-7M5 has different offsets.
|
|
24130
24150
|
|
|
24131
24151
|
Index1 Tag Name Writable
|
|
24132
24152
|
------ -------- --------
|
|
@@ -24151,8 +24171,11 @@ ZV-E1/E10M2, but ILCE-7M5 has different offsets.
|
|
|
24151
24171
|
115 MinFocalLength no
|
|
24152
24172
|
117 MaxFocalLength no
|
|
24153
24173
|
1794 VignettingCorrParams no
|
|
24174
|
+
1800 VignettingCorrParams no
|
|
24154
24175
|
1866 APS-CSizeCapture no
|
|
24176
|
+
1871 APS-CSizeCapture no
|
|
24155
24177
|
2107 ChromaticAberrationCorrParams no
|
|
24178
|
+
2115 ChromaticAberrationCorrParams no
|
|
24156
24179
|
2191 VignettingCorrParams no
|
|
24157
24180
|
2193 VignettingCorrParams no
|
|
24158
24181
|
2205 VignettingCorrParams no
|
|
@@ -31050,7 +31073,7 @@ for the official QuickTime specification.
|
|
|
31050
31073
|
The tags below are extracted from timed metadata in QuickTime and other
|
|
31051
31074
|
formats of video files when the ExtractEmbedded option is used. Although
|
|
31052
31075
|
most of these tags are combined into the single table below, ExifTool
|
|
31053
|
-
currently reads
|
|
31076
|
+
currently reads 124 different types of timed GPS metadata.
|
|
31054
31077
|
|
|
31055
31078
|
Tag ID Tag Name Writable
|
|
31056
31079
|
------ -------- --------
|
|
@@ -43114,15 +43137,17 @@ L<XMP DICOM Tags|Image::ExifTool::TagNames/XMP DICOM Tags>.
|
|
|
43114
43137
|
=head3 Garmin FIT Tags
|
|
43115
43138
|
|
|
43116
43139
|
Information extracted from Garmin FIT (Flexible and Interoperable data
|
|
43117
|
-
Transfer) files.
|
|
43118
|
-
|
|
43119
|
-
|
|
43120
|
-
|
|
43121
|
-
|
|
43122
|
-
|
|
43123
|
-
|
|
43124
|
-
|
|
43125
|
-
|
|
43140
|
+
Transfer) files. The main reason for adding FIT support was to allow
|
|
43141
|
+
geotagging directly from FIT files using the -geotag option. For this
|
|
43142
|
+
reason, only timestamps and GPS-related FIT messages are decoded by default,
|
|
43143
|
+
and the rest are marked as Unknown to be extracted only if the Unknown
|
|
43144
|
+
(-u) option is used. And unless the ExtractEmbedded (-ee) option is used,
|
|
43145
|
+
only the first FIT message of each type is extracted. When both of these
|
|
43146
|
+
options are used, a significant amount of information may be extracted, and
|
|
43147
|
+
processing times may be lengthy. The family 1 group names of the extracted
|
|
43148
|
+
tags correspond to the FIT message names. The first table below lists the
|
|
43149
|
+
FIT messages, and subsequent tables list the extracted tags. See
|
|
43150
|
+
L<https://developer.garmin.com/fit/> for the specification.
|
|
43126
43151
|
|
|
43127
43152
|
Tag ID Tag Name Writable
|
|
43128
43153
|
------ -------- --------
|
|
@@ -47589,6 +47614,7 @@ FileName.
|
|
|
47589
47614
|
MakerNoteByteOrder File no
|
|
47590
47615
|
MaxVal File no
|
|
47591
47616
|
NewGUID ExifTool no
|
|
47617
|
+
NewUUID ExifTool no
|
|
47592
47618
|
Now ExifTool no
|
|
47593
47619
|
NumPlanes File no
|
|
47594
47620
|
OtherImage File no
|
|
@@ -47600,8 +47626,6 @@ FileName.
|
|
|
47600
47626
|
PreviewTIFF File no
|
|
47601
47627
|
PreviewWMF File no
|
|
47602
47628
|
ProcessingTime ExifTool no
|
|
47603
|
-
RAFCompression File no
|
|
47604
|
-
RAFVersion File no
|
|
47605
47629
|
ResourceForkSize System no
|
|
47606
47630
|
SphericalVideoXML GSpherical yes!
|
|
47607
47631
|
SymLink - yes!
|
|
@@ -47913,14 +47937,14 @@ values, may created via the ExifTool configuration file.
|
|
|
47913
47937
|
SegWidth
|
|
47914
47938
|
SegHeight
|
|
47915
47939
|
SubSecCreateDate EXIF:CreateDate yes
|
|
47916
|
-
SubSecTimeDigitized
|
|
47917
|
-
OffsetTimeDigitized
|
|
47940
|
+
EXIF:SubSecTimeDigitized
|
|
47941
|
+
EXIF:OffsetTimeDigitized
|
|
47918
47942
|
SubSecDateTimeOriginal EXIF:DateTimeOriginal yes
|
|
47919
|
-
SubSecTimeOriginal
|
|
47920
|
-
OffsetTimeOriginal
|
|
47943
|
+
EXIF:SubSecTimeOriginal
|
|
47944
|
+
EXIF:OffsetTimeOriginal
|
|
47921
47945
|
SubSecModifyDate EXIF:ModifyDate yes
|
|
47922
|
-
SubSecTime
|
|
47923
|
-
OffsetTime
|
|
47946
|
+
EXIF:SubSecTime
|
|
47947
|
+
EXIF:OffsetTime
|
|
47924
47948
|
ThumbnailImage ThumbnailOffset yes
|
|
47925
47949
|
ThumbnailLength
|
|
47926
47950
|
ThumbnailTIFF SubfileType no
|
|
@@ -33,6 +33,9 @@ my %extendedRes = (
|
|
|
33
33
|
'crss' => 1,
|
|
34
34
|
);
|
|
35
35
|
|
|
36
|
+
# namespaces to validate more completely when Validate option is used
|
|
37
|
+
my %validateNS = ( tiff => 1, exif => 1, exifEX => 1 );
|
|
38
|
+
|
|
36
39
|
my $rdfDesc = 'rdf:Description';
|
|
37
40
|
#
|
|
38
41
|
# packet/xmp/rdf headers and trailers
|
|
@@ -118,6 +121,12 @@ sub ValidateProperty($$;$)
|
|
|
118
121
|
}
|
|
119
122
|
}
|
|
120
123
|
}
|
|
124
|
+
if ($$propList[-1] =~ /^(\w+):(\w+)/ and $validateNS{$1} or
|
|
125
|
+
$$propList[-1] eq 'rdf:li' and $$propList[-3] =~ /^(\w+):(\w+)/ and $validateNS{$1})
|
|
126
|
+
{
|
|
127
|
+
my $tbl = GetTagTable("Image::ExifTool::XMP::$1");
|
|
128
|
+
$et->Warn("Non-standard XMP property: $1:$2") if $tbl and not $$tbl{$2};
|
|
129
|
+
}
|
|
121
130
|
my $xmpValidate = $$et{XmpValidate};
|
|
122
131
|
my $path = join('/', @$propList[3..$#$propList]);
|
|
123
132
|
if (defined $$xmpValidate{$path}) {
|
|
@@ -4929,6 +4929,18 @@ sub NewGUID()
|
|
|
4929
4929
|
$$ & 0xffff, rand(0x10000), rand(0x10000), rand(0x10000));
|
|
4930
4930
|
}
|
|
4931
4931
|
|
|
4932
|
+
#------------------------------------------------------------------------------
|
|
4933
|
+
# Generate a version 4 ("random"), variant 1 UUID (RFC 9562, Section 5.4) (github #421)
|
|
4934
|
+
# Inputs: <none>
|
|
4935
|
+
# Returns: UUID string
|
|
4936
|
+
sub NewUUID()
|
|
4937
|
+
{
|
|
4938
|
+
my @rnd = map {int(rand(256))} 1 .. 16;
|
|
4939
|
+
$rnd[6] = ($rnd[6] & 0x0f) | 0x40;
|
|
4940
|
+
$rnd[8] = ($rnd[8] & 0x3f) | 0x80;
|
|
4941
|
+
return uc scalar unpack('H32', join '', map {chr} @rnd);
|
|
4942
|
+
}
|
|
4943
|
+
|
|
4932
4944
|
#------------------------------------------------------------------------------
|
|
4933
4945
|
# Make TIFF header for raw data
|
|
4934
4946
|
# Inputs: 0) width, 1) height, 2) num colour components, 3) bits, 4) resolution
|
|
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
|
|
|
50
50
|
use Image::ExifTool::GPS;
|
|
51
51
|
require Exporter;
|
|
52
52
|
|
|
53
|
-
$VERSION = '3.
|
|
53
|
+
$VERSION = '3.79';
|
|
54
54
|
@ISA = qw(Exporter);
|
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
|
56
56
|
|
|
@@ -3661,7 +3661,7 @@ NoLoop:
|
|
|
3661
3661
|
my $v = UnescapeXML(substr($val, 0, $p - length($1) - 12)) . $1;
|
|
3662
3662
|
while ($val =~ /<!\[CDATA\[(.*?)\]\]>/sg) {
|
|
3663
3663
|
my $p1 = pos $val;
|
|
3664
|
-
$v .= UnescapeXML(substr($val, $p, $p1 - length($1) - 12)) . $1;
|
|
3664
|
+
$v .= UnescapeXML(substr($val, $p, $p1 - $p - length($1) - 12)) . $1;
|
|
3665
3665
|
$p = $p1;
|
|
3666
3666
|
}
|
|
3667
3667
|
$val = $v . UnescapeXML(substr($val, $p));
|
|
@@ -3774,6 +3774,7 @@ sub ParseXMPElement($$$;$$$$)
|
|
|
3774
3774
|
my $isSVG = $$et{XMP_IS_SVG};
|
|
3775
3775
|
my $saveNS; # save xlatNS lookup if changed for the scope of this element
|
|
3776
3776
|
my (%definedNS, %usedNS); # namespaces defined and used in this scope
|
|
3777
|
+
my $err;
|
|
3777
3778
|
|
|
3778
3779
|
# get our parse procs
|
|
3779
3780
|
my ($attrProc, $foundProc);
|
|
@@ -3803,11 +3804,16 @@ sub ParseXMPElement($$$;$$$$)
|
|
|
3803
3804
|
last if pos($$dataPt) > $end - 4;
|
|
3804
3805
|
# reset nodeID before processing each element
|
|
3805
3806
|
my $nodeID = $$blankInfo{NodeID} = $oldNodeID;
|
|
3806
|
-
#
|
|
3807
|
-
last if $$dataPt !~ m{<([?/]?)([-\w:.\x80-\xff]+|!--)([^>]*)
|
|
3807
|
+
# find start of next element, skipping over "<![CDATA[xxx]]>" sections
|
|
3808
|
+
last if $$dataPt !~ m{<([?/]?)([-\w:.\x80-\xff]+|!--)([^>]*)>|(<!\[CDATA\[)}sg or pos($$dataPt) > $end;
|
|
3808
3809
|
# (the only reason we match '<[?/]' is to keep from scanning past the
|
|
3809
3810
|
# "<?xpacket end..." terminator or other closing token, so
|
|
3810
3811
|
next if $1;
|
|
3812
|
+
if ($4) { # skip CDATA
|
|
3813
|
+
next if $$dataPt =~ /\]\]>/sg and pos($$dataPt) <= $end;
|
|
3814
|
+
$err = "Missing CDATA terminator";
|
|
3815
|
+
last Element;
|
|
3816
|
+
}
|
|
3811
3817
|
my ($prop, $attrs) = ($2, $3);
|
|
3812
3818
|
# skip comments
|
|
3813
3819
|
if ($prop eq '!--') {
|
|
@@ -3815,7 +3821,7 @@ sub ParseXMPElement($$$;$$$$)
|
|
|
3815
3821
|
last;
|
|
3816
3822
|
}
|
|
3817
3823
|
my $valStart = pos($$dataPt);
|
|
3818
|
-
my $valEnd;
|
|
3824
|
+
my ($valEnd, $wasComment);
|
|
3819
3825
|
# only look for closing token if this is not an empty element
|
|
3820
3826
|
# (empty elements end with '/', eg. <a:b/>)
|
|
3821
3827
|
if ($attrs !~ s/\/$//) {
|
|
@@ -3827,12 +3833,23 @@ sub ParseXMPElement($$$;$$$$)
|
|
|
3827
3833
|
# my $val2 = $1;
|
|
3828
3834
|
# find next matching closing token, or the next opening token
|
|
3829
3835
|
# of a nested same-named element
|
|
3830
|
-
if ($$dataPt !~ m{<(/?)$prop([-\w:.\x80-\xff]*)(.*?(/?))
|
|
3836
|
+
if ($$dataPt !~ m{<(?:(/?)\Q$prop\E([-\w:.\x80-\xff]*)(.*?(/?))>|(!\[CDATA\[|!--))}sg or
|
|
3831
3837
|
pos($$dataPt) > $end)
|
|
3832
3838
|
{
|
|
3833
|
-
$
|
|
3839
|
+
$err = "XMP format error (no closing tag for $prop)";
|
|
3834
3840
|
last Element;
|
|
3835
3841
|
}
|
|
3842
|
+
if ($5) { # find end of CDATA or comment section
|
|
3843
|
+
if ($5 eq '![CDATA[') {
|
|
3844
|
+
next if $$dataPt =~ /\]\]>/sg and pos($$dataPt) <= $end;
|
|
3845
|
+
$err = 'Missing CDATA terminator';
|
|
3846
|
+
last Element;
|
|
3847
|
+
} else {
|
|
3848
|
+
$$dataPt =~ /-->/sg and pos($$dataPt) <= $end and $wasComment = 1, next;
|
|
3849
|
+
$err = 'Missing comment terminator';
|
|
3850
|
+
last Element;
|
|
3851
|
+
}
|
|
3852
|
+
}
|
|
3836
3853
|
next if $2; # ignore opening properties with different names
|
|
3837
3854
|
if ($1) {
|
|
3838
3855
|
next if --$nesting;
|
|
@@ -4161,6 +4178,8 @@ sub ParseXMPElement($$$;$$$$)
|
|
|
4161
4178
|
# remove comments and whitespace from rdf:Description only
|
|
4162
4179
|
if ($prop eq 'rdf:Description' and $val) {
|
|
4163
4180
|
$val =~ s/<!--.*?-->//g; $val =~ s/^\s+//; $val =~ s/\s+$//;
|
|
4181
|
+
} elsif ($wasComment and $val) {
|
|
4182
|
+
$val =~ s/<!--.*?-->//g;
|
|
4164
4183
|
}
|
|
4165
4184
|
# if element value is empty, take value from RDF 'value' or 'resource' attribute
|
|
4166
4185
|
# (preferentially) or 'about' attribute (if no 'value' or 'resource')
|
|
@@ -4214,6 +4233,8 @@ sub ParseXMPElement($$$;$$$$)
|
|
|
4214
4233
|
pos($$dataPt) = $start;
|
|
4215
4234
|
$$dataPt =~ /\G\s+/gc; # skip white space after closing token
|
|
4216
4235
|
}
|
|
4236
|
+
# handle any error which aborted processing
|
|
4237
|
+
$isWriting ? $et->Error($err) : $et->Warn($err) if $err;
|
|
4217
4238
|
#
|
|
4218
4239
|
# process resources referenced by blank nodeID's
|
|
4219
4240
|
#
|
data/bin/lib/Image/ExifTool.pm
CHANGED
|
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
|
|
30
30
|
%static_vars $advFmtSelf $configFile @configFiles $noConfig);
|
|
31
31
|
|
|
32
|
-
$VERSION = '13.
|
|
32
|
+
$VERSION = '13.59';
|
|
33
33
|
$RELEASE = '';
|
|
34
34
|
@ISA = qw(Exporter);
|
|
35
35
|
%EXPORT_TAGS = (
|
|
@@ -121,6 +121,7 @@ sub CopyFileAttrs($$$);
|
|
|
121
121
|
sub TimeNow(;$$);
|
|
122
122
|
sub InverseDateTime($$;$$);
|
|
123
123
|
sub NewGUID();
|
|
124
|
+
sub NewUUID();
|
|
124
125
|
sub MakeTiffHeader($$$$;$$);
|
|
125
126
|
|
|
126
127
|
# other subroutine definitions
|
|
@@ -1873,8 +1874,6 @@ my %systemTagsNotes = (
|
|
|
1873
1874
|
},
|
|
1874
1875
|
PrintConv => 'sprintf("%.3g s", $val)',
|
|
1875
1876
|
},
|
|
1876
|
-
RAFVersion => { Notes => 'RAF file version number' },
|
|
1877
|
-
RAFCompression => { PrintConv => { 0 => 'Uncompressed', 2 => 'Compressed' } }, # 1 maybe lossy?
|
|
1878
1877
|
JPEGDigest => {
|
|
1879
1878
|
Notes => q{
|
|
1880
1879
|
an MD5 digest of the JPEG quantization tables is combined with the component
|
|
@@ -1921,6 +1920,15 @@ my %systemTagsNotes = (
|
|
|
1921
1920
|
},
|
|
1922
1921
|
PrintConv => '$val =~ s/(.{8})(.{4})(.{4})(.{4})/$1-$2-$3-$4-/; $val',
|
|
1923
1922
|
},
|
|
1923
|
+
NewUUID => {
|
|
1924
|
+
Groups => { 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'Other' },
|
|
1925
|
+
Notes => q{
|
|
1926
|
+
generates a version 4 ("random"), variant 1 UUID as per RFC 9562, Section
|
|
1927
|
+
5.4. Not generated unless specifically requested or the API L<RequestAll|../ExifTool.html#RequestAll>
|
|
1928
|
+
option is set
|
|
1929
|
+
},
|
|
1930
|
+
PrintConv => '$val =~ s/(.{8})(.{4})(.{4})(.{4})/$1-$2-$3-$4-/; $val',
|
|
1931
|
+
},
|
|
1924
1932
|
ID3Size => { Notes => 'size of the ID3 data block' },
|
|
1925
1933
|
Geotag => {
|
|
1926
1934
|
Writable => 1,
|
|
@@ -2771,6 +2779,7 @@ sub ExtractInfo($;@)
|
|
|
2771
2779
|
$self->FoundTag('ExifToolVersion', "$VERSION$RELEASE");
|
|
2772
2780
|
$self->FoundTag('Now', $self->TimeNow()) if $$req{now} or $reqAll;
|
|
2773
2781
|
$self->FoundTag('NewGUID', NewGUID()) if $$req{newguid} or $reqAll;
|
|
2782
|
+
$self->FoundTag('NewUUID', NewUUID()) if $$req{newuuid} or $reqAll;
|
|
2774
2783
|
# generate sequence number if necessary
|
|
2775
2784
|
$self->FoundTag('FileSequence', $$self{FILE_SEQUENCE}) if $$req{filesequence} or $reqAll;
|
|
2776
2785
|
|
|
@@ -3388,7 +3397,7 @@ sub GetTagList($;$$$)
|
|
|
3388
3397
|
$$fileOrder{$a} <=> $$fileOrder{$b} } @$foundTags;
|
|
3389
3398
|
} elsif ($sort eq 'Descr') {
|
|
3390
3399
|
my $desc = $self->GetDescriptions($foundTags);
|
|
3391
|
-
return sort { $$desc{$a} cmp $$desc{$b} } @$foundTags;
|
|
3400
|
+
return sort { $$desc{$a} cmp $$desc{$b} or $a cmp $b } @$foundTags;
|
|
3392
3401
|
} else {
|
|
3393
3402
|
return sort { $$fileOrder{$a} <=> $$fileOrder{$b} } @$foundTags;
|
|
3394
3403
|
}
|
|
@@ -5411,7 +5420,7 @@ sub SetFoundTags($)
|
|
|
5411
5420
|
# put entry in return list even without value (value is undef)
|
|
5412
5421
|
$matches[0] = $byValue ? "$tag #(0)" : "$tag (0)";
|
|
5413
5422
|
# bogus file order entry to avoid warning if sorting in file order
|
|
5414
|
-
$$self{FILE_ORDER}{$matches[0]} =
|
|
5423
|
+
$$self{FILE_ORDER}{$matches[0]} = 999999999;
|
|
5415
5424
|
}
|
|
5416
5425
|
# copy over necessary information for tags from alternate files
|
|
5417
5426
|
if ($g8) {
|
|
@@ -10171,7 +10180,7 @@ sub ProcessBinaryData($$$)
|
|
|
10171
10180
|
push @configFiles, $configFile if defined $configFile;
|
|
10172
10181
|
until ($noConfig) {
|
|
10173
10182
|
my $config = shift @configFiles;
|
|
10174
|
-
my $file;
|
|
10183
|
+
my ($file, $wasConfig);
|
|
10175
10184
|
if (not defined $config) {
|
|
10176
10185
|
$config = '.ExifTool_config';
|
|
10177
10186
|
# get our home directory (HOMEDRIVE and HOMEPATH are used in Windows cmd shell)
|
|
@@ -10182,17 +10191,34 @@ until ($noConfig) {
|
|
|
10182
10191
|
} else {
|
|
10183
10192
|
length $config or last; # filename of "" disables configuration
|
|
10184
10193
|
$file = $config;
|
|
10194
|
+
$wasConfig = 1;
|
|
10185
10195
|
}
|
|
10186
|
-
|
|
10187
|
-
|
|
10188
|
-
|
|
10189
|
-
|
|
10190
|
-
|
|
10191
|
-
|
|
10196
|
+
if ($file eq '-') {
|
|
10197
|
+
local *FH;
|
|
10198
|
+
if (open(\*FH, '<-')) {
|
|
10199
|
+
my $buff;
|
|
10200
|
+
my $n = read(\*FH, $buff, 100000000);
|
|
10201
|
+
close \*FH;
|
|
10202
|
+
if ($n == 100000000) {
|
|
10203
|
+
warn("Piped config file is too large\n");
|
|
10204
|
+
} elsif ($n) {
|
|
10205
|
+
eval $buff;
|
|
10206
|
+
} else {
|
|
10207
|
+
undef $@;
|
|
10208
|
+
}
|
|
10209
|
+
}
|
|
10210
|
+
} else {
|
|
10211
|
+
# also check executable directory unless path is absolute
|
|
10212
|
+
$exeDir = ($0 =~ /(.*)[\\\/]/) ? $1 : '.' unless defined $exeDir;
|
|
10213
|
+
-r $file or $config =~ /^\// or $file = "$exeDir/$config";
|
|
10214
|
+
unless (-r $file) {
|
|
10215
|
+
warn("Config file not found\n") if $wasConfig;
|
|
10216
|
+
last;
|
|
10217
|
+
}
|
|
10218
|
+
unshift @INC, '.'; # look in current directory first
|
|
10219
|
+
eval { require $file }; # load the config file
|
|
10220
|
+
shift @INC;
|
|
10192
10221
|
}
|
|
10193
|
-
unshift @INC, '.'; # look in current directory first
|
|
10194
|
-
eval { require $file }; # load the config file
|
|
10195
|
-
shift @INC;
|
|
10196
10222
|
# print warning (minus "Compilation failed" part)
|
|
10197
10223
|
$@ and $_=$@, s/Compilation failed.*//s, warn $_;
|
|
10198
10224
|
last unless @configFiles;
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: exiftool_vendored
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 13.
|
|
4
|
+
version: 13.59.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matthew McEachen
|
|
@@ -63,6 +63,7 @@ files:
|
|
|
63
63
|
- bin/config_files/guano.config
|
|
64
64
|
- bin/config_files/local_time.config
|
|
65
65
|
- bin/config_files/nksc.config
|
|
66
|
+
- bin/config_files/novelty.config
|
|
66
67
|
- bin/config_files/onone.config
|
|
67
68
|
- bin/config_files/photoshop_paths.config
|
|
68
69
|
- bin/config_files/picasa_faces.config
|
|
@@ -344,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
344
345
|
- !ruby/object:Gem::Version
|
|
345
346
|
version: '0'
|
|
346
347
|
requirements: []
|
|
347
|
-
rubygems_version: 4.0.
|
|
348
|
+
rubygems_version: 4.0.10
|
|
348
349
|
specification_version: 4
|
|
349
350
|
summary: Vendored version of exiftool
|
|
350
351
|
test_files: []
|