exiftool_vendored 13.12.0 → 13.14.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 +52 -22
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/arg_files/exif2xmp.args +4 -0
- data/bin/arg_files/xmp2exif.args +2 -1
- data/bin/build_geolocation +1 -1
- data/bin/exiftool +5 -5
- data/bin/lib/Image/ExifTool/AFCP.pm +5 -5
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +24 -13
- data/bin/lib/Image/ExifTool/DJI.pm +64 -11
- data/bin/lib/Image/ExifTool/EXE.pm +2 -2
- data/bin/lib/Image/ExifTool/Geolocation.pm +16 -7
- data/bin/lib/Image/ExifTool/JPEG.pm +5 -1
- data/bin/lib/Image/ExifTool/LigoGPS.pm +1 -0
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -0
- data/bin/lib/Image/ExifTool/Protobuf.pm +25 -7
- data/bin/lib/Image/ExifTool/QuickTime.pm +161 -50
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +3438 -3430
- data/bin/lib/Image/ExifTool/TagNames.pod +89 -22
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -2
- data/bin/lib/Image/ExifTool/Vivo.pm +124 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +69 -40
- data/bin/lib/Image/ExifTool/Writer.pl +12 -8
- data/bin/lib/Image/ExifTool.pm +22 -6
- data/bin/lib/Image/ExifTool.pod +43 -41
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84e9102db0da669ac4a4f0a5c4cb35058eee35318fa727ecf365f36341e9d9b9
|
4
|
+
data.tar.gz: baef093ba9ac71da9d59fc8239d9ca9ea3a5bab5a856fca5f33a3f8fcf6e6ba8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a4abf6f32a17150d1b3b30b43204b8440b1e0c600df23ac992085a423942105067e02922cdcfdfa3a185fa867e138eab5e1a3a4cf3add9b8113afa6e167a038
|
7
|
+
data.tar.gz: da5b5975b6c1d20dc90d3c45179892297ab655f5e2dd76bac6180221ff5598895da66abc76a073561175d30a490444d56f701860e54fc70f21e93cd55cc0fd2d
|
data/bin/Changes
CHANGED
@@ -7,6 +7,29 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 13.10. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Jan. 20, 2025 - Version 13.14
|
11
|
+
|
12
|
+
- Fixed bug where ItemList tags weren't created when creating new AudioKeys or
|
13
|
+
VideoKeys tags in the same command and neither tag group pre-existed in the
|
14
|
+
file
|
15
|
+
|
16
|
+
Jan. 20, 2025 - Version 13.13
|
17
|
+
|
18
|
+
- Added ability to write tags to the audio/video tracks of MOV/MP4 videos
|
19
|
+
using the new AudioKeys and VideoKeys group names
|
20
|
+
- Added support for another DJI protobuf format (Mavic 3)
|
21
|
+
- Decode yet another type of LIGOGPSINFO timed GPS from a dashcam video
|
22
|
+
- Extract some proprietary information from JPEG images of Vivo phones
|
23
|
+
- Enhanced Geolocation feature to allow the nearest cities to a specified city
|
24
|
+
to be returned
|
25
|
+
- Updated xmp2exif.args and exif2xmp.args to properly handle time zones in
|
26
|
+
XMP-exif date/time tags
|
27
|
+
- Changed family 1 group names for Keys, ItemList and UserData tags in a track
|
28
|
+
- Patched github #306 issue where a torrent file would return a format error
|
29
|
+
when reading if it didn't contain an "announce" or "created by" entry
|
30
|
+
- Fixed "uninitialized value" runtime warning when reading some EXE files
|
31
|
+
- Fixed -diff output to add colon missing from some lines when used with -g
|
32
|
+
|
10
33
|
Jan. 13, 2025 - Version 13.12
|
11
34
|
|
12
35
|
- Added a few new Panasonic AFAreaMode values (thanks Andrew J)
|
@@ -15,12 +38,12 @@ Jan. 13, 2025 - Version 13.12
|
|
15
38
|
- Decode AF points for some newer Nikon models (thanks Warren Hatch)
|
16
39
|
- Decode a new Panasonic tag (thanks Andrew J)
|
17
40
|
- Decode a couple of previously unknown tags from LIGOGPSINFO records
|
18
|
-
- Extract some PDB information if available from Win32 EXE files (github#303)
|
41
|
+
- Extract some PDB information if available from Win32 EXE files (github #303)
|
19
42
|
- Improved handling of duplicate tags in -diff output
|
20
43
|
- Improved handling of QuickTime zero date/time values
|
21
44
|
- Enchanced -csv= and -json= options to allow group names and wildcards to be
|
22
45
|
used when specifying which tags to import
|
23
|
-
- Updated some EXIF:Compression values (github#304)
|
46
|
+
- Updated some EXIF:Compression values (github #304)
|
24
47
|
- Changed wording of warning when file time couldn't be updated
|
25
48
|
- Fixed bug introduced in 13.11 reading EXIF from some EXV files
|
26
49
|
- Fixed bug introduced in 12.99 where empty entries in a CSV file weren't
|
@@ -33,7 +56,7 @@ Jan. 13, 2025 - Version 13.12
|
|
33
56
|
Jan. 1, 2025 - Version 13.11
|
34
57
|
|
35
58
|
- Added warning for an unknown DJI protobuf schema
|
36
|
-
- Decode timed GPS from
|
59
|
+
- Decode timed GPS from DJI Osmo Action 5 videos
|
37
60
|
- Decode yet another type of LIGOGPSINFO timed GPS from a dashcam video
|
38
61
|
- Made Matroska Keywords and Instruments List-type tags
|
39
62
|
- Fixed problem were EXIF couldn't be added to some AVIF files
|
@@ -286,7 +309,7 @@ July 24, 2024 - Version 12.92
|
|
286
309
|
|
287
310
|
July 24, 2024 - Version 12.91
|
288
311
|
|
289
|
-
- Added a couple of new OpenEXR Compression values (github#276)
|
312
|
+
- Added a couple of new OpenEXR Compression values (github #276)
|
290
313
|
- Updated 2 test files that were causing failed tests (ExifTool itself is
|
291
314
|
unchanged)
|
292
315
|
|
@@ -753,7 +776,7 @@ Aug. 10, 2023 - Version 12.65
|
|
753
776
|
provided
|
754
777
|
- Lowered priority of IFD1 tags in ARW images so IFD0/SubIFD take precedence
|
755
778
|
- Changed QuickTime tag names for atID (AlbumTitleID to ArtistID) and plID
|
756
|
-
(PlayListID to AlbumID) (github
|
779
|
+
(PlayListID to AlbumID) (github #216), and added cmID (ComposerID)
|
757
780
|
- Changed Apple:MediaGroupUUID tag name back to ContentIdentifier
|
758
781
|
- Patched the -d option to handle the %s format code internally when writing
|
759
782
|
(avoids problems due to inconsistent behaviour of this format code in the
|
@@ -1304,7 +1327,15 @@ Dec. 8, 2021 - Version 12.37
|
|
1304
1327
|
- Extract TransparentColor from GIF images
|
1305
1328
|
- Improved parsing of input time values for GPSTimeStamp to properly handle a
|
1306
1329
|
"." separator
|
1307
|
-
- Improved warning when incorrectly using "
|
1330
|
+
- Improved warning when incorrectly using "<" instead of "=" to assign a tag
|
1331
|
+
value
|
1332
|
+
- Shortened a few of the new obscenely-long XMP-crs tag names
|
1333
|
+
- Avoid writing XMP-dwc:EventID and XMP-tiff:NativeDigest
|
1334
|
+
- Avoid printing same structure twice in -j and -X output when -l is used
|
1335
|
+
- Fixed typo in a QuickTime tag name (thanks Hubert)
|
1336
|
+
- Fixed two XMP-crs tag names and typo in a NikonSettings value (thanks Herb)
|
1337
|
+
- Fixed patch of version 12.25 to avoid writing XMP which contains an
|
1338
|
+
undefined namespace
|
1308
1339
|
|
1309
1340
|
Nov. 16, 2021 - Version 12.36
|
1310
1341
|
|
@@ -1616,7 +1647,7 @@ Feb. 3, 2021 - Version 12.17
|
|
1616
1647
|
- Avoid extracting audio/video data from AVI videos when -ee -u is used
|
1617
1648
|
- Patched decoding of Canon ContinuousShootingSpeed for newer firmware
|
1618
1649
|
versions of the EOS-1DXmkIII
|
1619
|
-
- Re-worked LensID patch of version 12.00 (github
|
1650
|
+
- Re-worked LensID patch of version 12.00 (github #51)
|
1620
1651
|
- Fixed a few typos in newly-added NikonSettings tags (thanks Herb)
|
1621
1652
|
- Fixed problem where group could not be specified for PNG-pHYs tags when
|
1622
1653
|
writing
|
@@ -1687,7 +1718,7 @@ Nov. 27, 2020 - Version 12.11
|
|
1687
1718
|
|
1688
1719
|
- Added -csvDelim option
|
1689
1720
|
- Added new Canon and Olympus LensType values (thanks LibRaw)
|
1690
|
-
- Added a warning if ICC_Profile is deleted from an image (github
|
1721
|
+
- Added a warning if ICC_Profile is deleted from an image (github #63)
|
1691
1722
|
- EndDir() function for -if option now works when -fileOrder is used
|
1692
1723
|
- Changed FileSize conversion to use binary prefixes since that is how the
|
1693
1724
|
conversion is currently done (eg. MiB instead of MB)
|
@@ -2061,7 +2092,7 @@ Jan. 8, 2020 - Version 11.82
|
|
2061
2092
|
- Added a new Canon LensType
|
2062
2093
|
- Added a new CanonModelID (thanks LibRaw)
|
2063
2094
|
- Added ability to process SubDirectories in QuickTime Keys tags
|
2064
|
-
- Removed minor error when writing PDF 2.0 files (github
|
2095
|
+
- Removed minor error when writing PDF 2.0 files (github #30)
|
2065
2096
|
- Fixed problem where trailing null bytes were removed from binary values in
|
2066
2097
|
the -php output when the -b option was used
|
2067
2098
|
|
@@ -2075,8 +2106,7 @@ Jan. 2, 2020 - Version 11.81
|
|
2075
2106
|
- Patched Composite sub-second date/time tags to do additional validation of
|
2076
2107
|
source EXIF date/time tags before adding sub seconds
|
2077
2108
|
- Fixed problem where -json output could produce invalid JSON when -struct was
|
2078
|
-
used and the structure field names contained special characters (github
|
2079
|
-
issue #32)
|
2109
|
+
used and the structure field names contained special characters (github #32)
|
2080
2110
|
- Fixed spelling in a Panasonic SceneMode value (thanks Hubert)
|
2081
2111
|
|
2082
2112
|
Dec. 17, 2019 - Version 11.80
|
@@ -2096,7 +2126,7 @@ Dec. 12, 2019 - Version 11.79
|
|
2096
2126
|
|
2097
2127
|
- Added support for AVIF files
|
2098
2128
|
- Added new Canon, Sigma and Sony LensType values (thanks LibRaw)
|
2099
|
-
- Made PDF 2.0 writable at your own risk with the -m option (github
|
2129
|
+
- Made PDF 2.0 writable at your own risk with the -m option (github #30)
|
2100
2130
|
- Enhanced -validate feature to warn about duplicate languages in an XMP
|
2101
2131
|
lang-alt list
|
2102
2132
|
- Fixed inconsistency between documentation and ExifTool capabilities for
|
@@ -2182,7 +2212,7 @@ Oct. 16, 2019 - Version 11.71
|
|
2182
2212
|
Oct. 10, 2019 - Version 11.70 (production release)
|
2183
2213
|
|
2184
2214
|
- Added a new CanonModelID (thanks Laurent Clevy)
|
2185
|
-
- Improved identification of Office Open XML files (github
|
2215
|
+
- Improved identification of Office Open XML files (github #27)
|
2186
2216
|
- Removed RAF version check when writing FujiFilm RAF files
|
2187
2217
|
- Limited the number of accelerometer records that ExifTool will read by
|
2188
2218
|
default with the -ee option from INSV files to avoid excessive processing
|
@@ -2264,7 +2294,7 @@ Aug. 20, 2019 - Version 11.63 - "PNG Early Text"
|
|
2264
2294
|
- Added a few new Sigma lenses (thanks LibRaw)
|
2265
2295
|
- Improved handling of Canon CNTH atom in MOV/MP4 videos
|
2266
2296
|
- Changed PNG writer to place all text chunks before IDAT (not just XMP)
|
2267
|
-
(github
|
2297
|
+
(github #23)
|
2268
2298
|
- Issue minor warning for any text chunk after PNG IDAT (not just XMP)
|
2269
2299
|
- Enhanced ForceWrite feature to allow "PNG" to be specified (to move existing
|
2270
2300
|
text chunks to before IDAT without editing any metadata)
|
@@ -2421,7 +2451,7 @@ June 17, 2019 - Version 11.52
|
|
2421
2451
|
- Fixed problem where reading a large, corrupt AIFF file may could take an
|
2422
2452
|
excessively long time
|
2423
2453
|
- API Changes:
|
2424
|
-
- Enhanced Compact option to add levels 3, 4 and 5 (github
|
2454
|
+
- Enhanced Compact option to add levels 3, 4 and 5 (github #16)
|
2425
2455
|
|
2426
2456
|
June 13, 2019 - Version 11.51
|
2427
2457
|
|
@@ -2559,7 +2589,7 @@ May 3, 2019 - Version 11.39 - "Create QuickTime tags"
|
|
2559
2589
|
- Decode Canon EOS D60 black levels
|
2560
2590
|
- Split off some QuickTime tags into different family 1 groups
|
2561
2591
|
- Fixed "Chunk offset outside movie data" error when writing some HEIC files
|
2562
|
-
- Fixed decoding of Pentax AutoBracketing for K-1 and K-5 (github
|
2592
|
+
- Fixed decoding of Pentax AutoBracketing for K-1 and K-5 (github #15)
|
2563
2593
|
- Fixed some QuickTime family 2 group names
|
2564
2594
|
- Fixed bug introduced in 11.38 that broke extraction of thumbnail images from
|
2565
2595
|
Canon MOV videos
|
@@ -2663,7 +2693,7 @@ Mar. 14, 2019 - Version 11.32
|
|
2663
2693
|
Mar. 7, 2019 - Version 11.31
|
2664
2694
|
|
2665
2695
|
- Added read support for FITS images
|
2666
|
-
- Another try at removing spaces from some DICOM values (github
|
2696
|
+
- Another try at removing spaces from some DICOM values (github #10 and #12)
|
2667
2697
|
|
2668
2698
|
Mar. 6, 2019 - Version 11.30 (production release)
|
2669
2699
|
|
@@ -2672,7 +2702,7 @@ Mar. 6, 2019 - Version 11.30 (production release)
|
|
2672
2702
|
- Decode Reconyx HF2 PRO maker notes
|
2673
2703
|
- Decode ColorData for some new Canon models (thanks LibRaw)
|
2674
2704
|
- Enhanced -geotag feature to set AmbientTemperature if available
|
2675
|
-
- Remove non-significant spaces from some DICOM values (github
|
2705
|
+
- Remove non-significant spaces from some DICOM values (github #10 and #12)
|
2676
2706
|
- Fixed possible "'x' outside of string" error when reading corrupted EXIF
|
2677
2707
|
- Fixed incorrect write group for GeoTIFF tags added in version 11.24
|
2678
2708
|
|
@@ -2680,13 +2710,13 @@ Feb. 28, 2019 - Version 11.29
|
|
2680
2710
|
|
2681
2711
|
- Added support for Ricoh GR III maker notes
|
2682
2712
|
- Added a new Canon LensType (thanks Claude Jolicoeur)
|
2683
|
-
- Added a new XMP-crs tag (github
|
2713
|
+
- Added a new XMP-crs tag (github #8)
|
2684
2714
|
- Enhanced -csv option to output base64-encoded binary data when combined with
|
2685
2715
|
-b or when the -charset option is used and the text has invalid characters
|
2686
|
-
(github
|
2687
|
-
- Remove trailing space from even-length DICOM values (github
|
2716
|
+
(github #11)
|
2717
|
+
- Remove trailing space from even-length DICOM values (github #9)
|
2688
2718
|
- Patched to avoid "Hexadecimal number > 0xffffffff non-portable" warning
|
2689
|
-
(github
|
2719
|
+
(github #6)
|
2690
2720
|
- Fixed meta charset attribute in -htmlDump output
|
2691
2721
|
|
2692
2722
|
Feb. 21, 2019 - Version 11.28
|
data/bin/MANIFEST
CHANGED
@@ -180,6 +180,7 @@ html/TagNames/Theora.html
|
|
180
180
|
html/TagNames/Torrent.html
|
181
181
|
html/TagNames/Unknown.html
|
182
182
|
html/TagNames/VCard.html
|
183
|
+
html/TagNames/Vivo.html
|
183
184
|
html/TagNames/Vorbis.html
|
184
185
|
html/TagNames/WPG.html
|
185
186
|
html/TagNames/WTV.html
|
@@ -431,6 +432,7 @@ lib/Image/ExifTool/Torrent.pm
|
|
431
432
|
lib/Image/ExifTool/Unknown.pm
|
432
433
|
lib/Image/ExifTool/VCard.pm
|
433
434
|
lib/Image/ExifTool/Validate.pm
|
435
|
+
lib/Image/ExifTool/Vivo.pm
|
434
436
|
lib/Image/ExifTool/Vorbis.pm
|
435
437
|
lib/Image/ExifTool/WPG.pm
|
436
438
|
lib/Image/ExifTool/WTV.pm
|
@@ -826,7 +828,10 @@ t/QuickTime_14.out
|
|
826
828
|
t/QuickTime_15.out
|
827
829
|
t/QuickTime_16.out
|
828
830
|
t/QuickTime_17.out
|
831
|
+
t/QuickTime_18.out
|
832
|
+
t/QuickTime_19.out
|
829
833
|
t/QuickTime_2.out
|
834
|
+
t/QuickTime_20.out
|
830
835
|
t/QuickTime_3.out
|
831
836
|
t/QuickTime_4.out
|
832
837
|
t/QuickTime_5.out
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
|
|
109
109
|
terminal window to extract and run ExifTool:
|
110
110
|
|
111
111
|
cd ~/Desktop
|
112
|
-
gzip -dc Image-ExifTool-13.
|
113
|
-
cd Image-ExifTool-13.
|
112
|
+
gzip -dc Image-ExifTool-13.14.tar.gz | tar -xf -
|
113
|
+
cd Image-ExifTool-13.14
|
114
114
|
./exiftool t/images/ExifTool.jpg
|
115
115
|
|
116
116
|
Note: These commands extract meta information from one of the test images.
|
data/bin/arg_files/exif2xmp.args
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
# 2018/05/07 - PH Added support for GPSDestXxxRef tags
|
15
15
|
# 2022/03/31 - PH IPTC Photometadata Mapping Guidelines 2202.1 update
|
16
16
|
# 2024/10/24 - PH Additions for the 2024 EXIF for XMP spec
|
17
|
+
# 2025/01/16 - PH Copy Composite SubSec tags to XMP-exif
|
17
18
|
#
|
18
19
|
# References: http://www.metadataworkinggroup.org/specs/
|
19
20
|
# https://iptc.org/std/photometadata/documentation/mappingguidelines/
|
@@ -54,4 +55,7 @@
|
|
54
55
|
# new for the 2024 EXIF for XMP specification
|
55
56
|
-XMP-exifEX:PhotographicSensitivity < EXIF:ISO
|
56
57
|
-XMP-exif:DateTimeDigitized < EXIF:CreateDate
|
58
|
+
# add sub-seconds and time-zone to XMP-exif tags if available
|
59
|
+
-XMP-exif:DateTimeOriginal < Composite:SubSecDateTimeOriginal
|
60
|
+
-XMP-exif:DateTimeDigitized < Composite:SubSecCreateDate
|
57
61
|
# end
|
data/bin/arg_files/xmp2exif.args
CHANGED
@@ -18,6 +18,7 @@
|
|
18
18
|
# 2023/01/30 - PH Also write Composite:SubSecDateTimeOriginal from
|
19
19
|
# XMP-exif:DateTimeOriginal
|
20
20
|
# 2024/10/24 - PH Additions for the 2024 EXIF for XMP spec
|
21
|
+
# 2025/01/16 - PH Write Composite:SubSecCreateDate from XMP-exif
|
21
22
|
#
|
22
23
|
# References: http://www.metadataworkinggroup.org/specs/
|
23
24
|
# https://iptc.org/std/photometadata/documentation/mappingguidelines/
|
@@ -39,11 +40,11 @@
|
|
39
40
|
-EXIF:DateTimeOriginal < XMP-photoshop:DateCreated
|
40
41
|
# new for the 2024 EXIF for XMP specification
|
41
42
|
-EXIF:ISO < XMP-exifEX:PhotographicSensitivity
|
42
|
-
-EXIF:CreateDate < XMP-exif:DateTimeDigitized
|
43
43
|
# the following SubSec tags also write/delete the corresponding EXIF
|
44
44
|
# SubSecTime and OffsetTime tags as appropriate
|
45
45
|
-Composite:SubSecDateTimeOriginal < XMP-exif:DateTimeOriginal
|
46
46
|
-Composite:SubSecDateTimeOriginal < XMP-photoshop:DateCreated
|
47
|
+
-Composite:SubSecCreateDate < XMP-exif:DateTimeDigitized
|
47
48
|
-Composite:SubSecCreateDate < XMP-xmp:CreateDate
|
48
49
|
-Composite:SubSecModifyDate < XMP-xmp:ModifyDate
|
49
50
|
-EXIF:Software < XMP-xmp:CreatorTool
|
data/bin/build_geolocation
CHANGED
@@ -228,7 +228,7 @@ Options:
|
|
228
228
|
feature-code list may begin with a dash to remove entries from
|
229
229
|
the default list, or a plus sign to add entries. May be
|
230
230
|
multiple -c options for each intput DBFILE. Country/region and
|
231
|
-
feature names are case insensitive.
|
231
|
+
feature names are case insensitive. Default is "$defaults{def_codes}".
|
232
232
|
-cp CODE - Additional features to include if above minimum population.
|
233
233
|
Default is "$defcp".
|
234
234
|
-l LANG - Alternate languages to read from $altNamesFile if
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '13.
|
14
|
+
my $version = '13.14';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
my $exePath;
|
@@ -2455,7 +2455,7 @@ T2: foreach $t2 (@tags2) {
|
|
2455
2455
|
} else {
|
2456
2456
|
push @diffs, sprintf "< %s%s: %s\n", $desc, $pad, Printable($val);
|
2457
2457
|
$desc = ' ' x $len if $v < 3;
|
2458
|
-
push @diffs, sprintf "> %s%s
|
2458
|
+
push @diffs, sprintf "> %s%s: %s\n", $desc, $pad, Printable($val2) if defined $val2;
|
2459
2459
|
}
|
2460
2460
|
}
|
2461
2461
|
$done2{$tag2} = 1 if defined $tag2;
|
@@ -5983,7 +5983,7 @@ with this command:
|
|
5983
5983
|
|
5984
5984
|
produces output like this:
|
5985
5985
|
|
5986
|
-
-- Generated by ExifTool 13.
|
5986
|
+
-- Generated by ExifTool 13.14 --
|
5987
5987
|
File: a.jpg - 2003:10:31 15:44:19
|
5988
5988
|
(f/5.6, 1/60s, ISO 100)
|
5989
5989
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -6000,8 +6000,8 @@ name, a value of 1 is returned if any tag exists in the specified group, or
|
|
6000
6000
|
values of all matching tags are joined).
|
6001
6001
|
|
6002
6002
|
The B<-p> output iterates through the family 3 group names, with each
|
6003
|
-
sub-document producing additional output
|
6004
|
-
|
6003
|
+
sub-document producing additional output when combined with the B<-ee>
|
6004
|
+
(ExtractEmbedded) option.
|
6005
6005
|
|
6006
6006
|
If a specified tag does not exist, a minor warning is issued and the line
|
6007
6007
|
with the missing tag is not printed. However, the B<-f> option may be used
|
@@ -14,7 +14,7 @@ use strict;
|
|
14
14
|
use vars qw($VERSION);
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
|
17
|
-
$VERSION = '1.
|
17
|
+
$VERSION = '1.10';
|
18
18
|
|
19
19
|
sub ProcessAFCP($$);
|
20
20
|
|
@@ -63,10 +63,10 @@ for the AFCP specification.
|
|
63
63
|
#------------------------------------------------------------------------------
|
64
64
|
# Read/write AFCP information in a file
|
65
65
|
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
66
|
-
# (Set '
|
66
|
+
# (Set 'ScanForTrailer' member in dirInfo to scan from current position for AFCP)
|
67
67
|
# Returns: 1 on success, 0 if this file didn't contain AFCP information
|
68
68
|
# -1 on write error or if the offsets were incorrect on reading
|
69
|
-
# - updates DataPos to point to actual AFCP start if
|
69
|
+
# - updates DataPos to point to actual AFCP start if ScanForTrailer is set
|
70
70
|
# - updates DirLen to trailer length
|
71
71
|
# - returns Fixup reference in dirInfo hash when writing
|
72
72
|
sub ProcessAFCP($$)
|
@@ -91,8 +91,8 @@ NoAFCP: for (;;) {
|
|
91
91
|
$fix = 0;
|
92
92
|
} else {
|
93
93
|
$rtnVal = -1;
|
94
|
-
# look for start of AXS trailer if '
|
95
|
-
last unless $$dirInfo{
|
94
|
+
# look for start of AXS trailer if 'ScanForTrailer'
|
95
|
+
last unless $$dirInfo{ScanForTrailer} and $raf->Seek($curPos, 0);
|
96
96
|
my $actualPos = $curPos;
|
97
97
|
# first look for header right at current position
|
98
98
|
for (;;) {
|
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
|
|
35
35
|
use Image::ExifTool::Validate;
|
36
36
|
use Image::ExifTool::MacOS;
|
37
37
|
|
38
|
-
$VERSION = '3.
|
38
|
+
$VERSION = '3.61';
|
39
39
|
@ISA = qw(Exporter);
|
40
40
|
|
41
41
|
sub NumbersFirst($$);
|
@@ -84,7 +84,8 @@ my %tweakOrder = (
|
|
84
84
|
Nintendo => 'NikonCapture',
|
85
85
|
Pentax => 'Panasonic',
|
86
86
|
SonyIDC => 'Sony',
|
87
|
-
|
87
|
+
Vivo => 'SonyIDC',
|
88
|
+
Unknown => 'Vivo',
|
88
89
|
DNG => 'Unknown',
|
89
90
|
PrintIM => 'ICC_Profile',
|
90
91
|
Vorbis => 'Ogg',
|
@@ -100,6 +101,8 @@ my %tweakOrder = (
|
|
100
101
|
MWG => 'Shortcuts',
|
101
102
|
'FujiFilm::RAF' => 'FujiFilm::RAFHeader',
|
102
103
|
'FujiFilm::RAFData' => 'FujiFilm::RAF',
|
104
|
+
'QuickTime::AudioKeys' => 'QuickTime::Keys',
|
105
|
+
'QuickTime::VideoKeys' => 'QuickTime::AudioKeys',
|
103
106
|
);
|
104
107
|
|
105
108
|
# list of all recognized Format strings
|
@@ -437,15 +440,22 @@ appropriate table in the config file (see
|
|
437
440
|
L<example.config|../config.html#PREF> in the full distribution for an
|
438
441
|
example). Note that some tags with the same name but different ID's may
|
439
442
|
exist in the same location, but the family 7 group names may be used to
|
440
|
-
differentiate these.
|
441
|
-
QuickTime-based files; it extracts other track-specific and timed metadata,
|
442
|
-
but can not yet edit tags in these locations (with the exception of
|
443
|
-
track-level date/time tags).
|
443
|
+
differentiate these.
|
444
444
|
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
445
|
+
ExifTool currently writes
|
446
|
+
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
|
447
|
+
L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> only as
|
448
|
+
top-level metadata, but select Keys tags are may be written to the audio or
|
449
|
+
video track. See the
|
450
|
+
L<AudioKeys|Image::ExifTool::TagNames/QuickTime AudioKeys Tags> and
|
451
|
+
L<VideoKeys|Image::ExifTool::TagNames/QuickTime VideoKeys Tags> tags for
|
452
|
+
more information.
|
453
|
+
|
454
|
+
Beware that the values of the Keys tags are actually stored inside an
|
455
|
+
ItemList atom in the file, so deleting the ItemList group as a block (ie.
|
456
|
+
C<-ItemList:all=>) also deletes Keys tags. Instead, to preserve Keys tags
|
457
|
+
the ItemList tags may be deleted individually with
|
458
|
+
C<-QuickTime:ItemList:all=>.
|
449
459
|
|
450
460
|
Alternate language tags may be accessed for
|
451
461
|
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
|
@@ -1783,9 +1793,10 @@ sub NumbersFirst($$)
|
|
1783
1793
|
$rtnVal = $numbersFirst;
|
1784
1794
|
} else {
|
1785
1795
|
my ($a2, $b2) = ($a, $b);
|
1786
|
-
# expand numbers to 3 digits (with restrictions to avoid messing up
|
1787
|
-
|
1788
|
-
$
|
1796
|
+
# expand numbers to 3 digits (with restrictions to avoid messing up
|
1797
|
+
# ascii-hex tags -- Nikon LensID's are 23 characters long)
|
1798
|
+
$a2 =~ s/(\d+)/sprintf("%.3d",$1)/eg if $a2 =~ /^(APP|DMC-\w+ |dvtm_.*)?[.0-9 ]*$/ and length($a2)<23;
|
1799
|
+
$b2 =~ s/(\d+)/sprintf("%.3d",$1)/eg if $b2 =~ /^(APP|DMC-\w+ |dvtm_.*)?[.0-9 ]*$/ and length($b2)<23;
|
1789
1800
|
$caseInsensitive and $rtnVal = (lc($a2) cmp lc($b2));
|
1790
1801
|
$rtnVal or $rtnVal = ($a2 cmp $b2);
|
1791
1802
|
}
|
@@ -18,14 +18,15 @@ use Image::ExifTool::XMP;
|
|
18
18
|
use Image::ExifTool::GPS;
|
19
19
|
use Image::ExifTool::Protobuf;
|
20
20
|
|
21
|
-
$VERSION = '1.
|
21
|
+
$VERSION = '1.12';
|
22
22
|
|
23
23
|
sub ProcessDJIInfo($$$);
|
24
24
|
|
25
25
|
%knownProtocol = (
|
26
|
-
'dvtm_ac203.proto' => 1,
|
27
|
-
'dvtm_ac204.proto' => 1,
|
28
|
-
'dvtm_AVATA2.proto' => 1,
|
26
|
+
'dvtm_ac203.proto' => 1, # Osmo Action 4
|
27
|
+
'dvtm_ac204.proto' => 1, # Osmo Action 5
|
28
|
+
'dvtm_AVATA2.proto' => 1, # Avanta 2
|
29
|
+
'dvtm_wm265e.proto' => 1, # Mavic 3
|
29
30
|
);
|
30
31
|
|
31
32
|
my %convFloat2 = (
|
@@ -200,15 +201,19 @@ my %convFloat2 = (
|
|
200
201
|
TAG_PREFIX => '',
|
201
202
|
PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
|
202
203
|
NOTES => q{
|
203
|
-
Tags found in protobuf-format DJI djmd and dbgi timed metadata.
|
204
|
-
tags are
|
205
|
-
the Unknown option to 1
|
206
|
-
ID's are composed of the corresponding .proto
|
207
|
-
hierarchical protobuf field numbers.
|
204
|
+
Tags found in protobuf-format DJI djmd and dbgi timed metadata. The known
|
205
|
+
tags listed below are extracted by default, but unknown djmd tags may be
|
206
|
+
extracted as well by setting the Unknown option to 1, or 2 to also extract
|
207
|
+
unknown dbgi debug tags. Tag ID's are composed of the corresponding .proto
|
208
|
+
file name combined with the hierarchical protobuf field numbers.
|
208
209
|
|
209
210
|
ExifTool currently extracts timed GPS plus a few other tags from DJI devices
|
210
211
|
which use the following protocols: dvtm_AVATA2.proto (Avanta 2),
|
211
|
-
dvtm_ac203.proto (Osmo Action 4),
|
212
|
+
dvtm_ac203.proto (Osmo Action 4), dvtm_ac204.proto (Osmo Action 5) and
|
213
|
+
dvtm_wm265e.proto (Mavic 3).
|
214
|
+
|
215
|
+
Note that with the protobuf format, numerical tags missing from the output
|
216
|
+
for a given protocol should be considered to have the default value of 0.
|
212
217
|
},
|
213
218
|
Protocol => {
|
214
219
|
RawConv => q{
|
@@ -218,6 +223,10 @@ my %convFloat2 = (
|
|
218
223
|
return $val;
|
219
224
|
},
|
220
225
|
},
|
226
|
+
#
|
227
|
+
# Osmo Action 4
|
228
|
+
#
|
229
|
+
'dvtm_ac203_1-1-5' => 'SerialNumber', # (NC)
|
221
230
|
# dvtm_ac203_1-1-6 - some version number
|
222
231
|
'dvtm_ac203_1-1-10' => 'Model',
|
223
232
|
'dvtm_ac203_2-3' => {
|
@@ -243,6 +252,10 @@ my %convFloat2 = (
|
|
243
252
|
ValueConv => '$val =~ tr/-/:/; $val',
|
244
253
|
PrintConv => '$self->ConvertDateTime($val)',
|
245
254
|
},
|
255
|
+
#
|
256
|
+
# Osmo Action 5
|
257
|
+
#
|
258
|
+
'dvtm_ac204_1-1-5' => 'SerialNumber', # (NC)
|
246
259
|
# dvtm_ac204_1-1-6 - some version number
|
247
260
|
'dvtm_ac204_1-1-10' => 'Model',
|
248
261
|
'dvtm_ac204_2-3' => {
|
@@ -254,6 +267,7 @@ my %convFloat2 = (
|
|
254
267
|
Name => 'GPSInfo',
|
255
268
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
|
256
269
|
},
|
270
|
+
# dvtm_ac204_3-2-4-1 - shutter speed? (rational)
|
257
271
|
'dvtm_ac204_3-4-2-2' => {
|
258
272
|
Name => 'GPSAltitude',
|
259
273
|
Groups => { 2 => 'Location' },
|
@@ -268,10 +282,15 @@ my %convFloat2 = (
|
|
268
282
|
ValueConv => '$val =~ tr/-/:/; $val',
|
269
283
|
PrintConv => '$self->ConvertDateTime($val)',
|
270
284
|
},
|
285
|
+
#
|
286
|
+
# Avanta 2
|
287
|
+
#
|
271
288
|
# dvtm_AVATA2_1-1-2 - some version number
|
272
289
|
# dvtm_AVATA2_1-1-3 - some version number
|
290
|
+
'dvtm_AVATA2_1-1-5' => 'SerialNumber', # (NC)
|
273
291
|
'dvtm_AVATA2_1-1-10' => 'Model',
|
274
|
-
|
292
|
+
# dvtm_AVATA2_2-2-1-4 - model code?
|
293
|
+
'dvtm_AVATA2_2-2-3-1' => 'SerialNumber2', # (NC)
|
275
294
|
'dvtm_AVATA2_2-3' => {
|
276
295
|
Name => 'FrameInfo',
|
277
296
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
@@ -285,11 +304,45 @@ my %convFloat2 = (
|
|
285
304
|
ValueConv => '$val / 1e6',
|
286
305
|
},
|
287
306
|
# dvtm_AVATA2_3-2-1-4 - model code?
|
307
|
+
# dvtm_AVATA2_3-2-1-5 - frame rate?
|
308
|
+
# dvtm_AVATA2_3-2-4-1 - shutter speed? (rational)
|
288
309
|
# dvtm_AVATA2_3-4-1-4 - model code?
|
310
|
+
# dvtm_AVATA2_3-4-3-1,2,3 - YPR? (int64s)
|
289
311
|
'dvtm_AVATA2_3-4-4-1' => {
|
290
312
|
Name => 'GPSInfo',
|
291
313
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
|
292
314
|
},
|
315
|
+
#
|
316
|
+
# Mavic 3
|
317
|
+
#
|
318
|
+
'dvtm_wm265e_1-1-5' => 'SerialNumber', # (confirmed)
|
319
|
+
'dvtm_wm265e_1-1-10' => 'Model',
|
320
|
+
'dvtm_wm265e_2-2' => {
|
321
|
+
Name => 'FrameInfo',
|
322
|
+
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
323
|
+
},
|
324
|
+
# dvtm_wm265e_3-2-1-4 - model code?
|
325
|
+
'dvtm_wm265e_3-2-2-1' => { Name => 'ISO', Format => 'float' },
|
326
|
+
'dvtm_wm265e_3-2-3-1' => {
|
327
|
+
Name => 'ShutterSpeed',
|
328
|
+
Format => 'rational',
|
329
|
+
ValueConv => '$val =~ m{(.*)/(.*)} ? $1 / $2 : $val',
|
330
|
+
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
|
331
|
+
},
|
332
|
+
# dvtm_wm265e_3-2-5-1 - unknown rational (xxxx / 1000)
|
333
|
+
'dvtm_wm265e_3-2-6-1' => { Name => 'DigitalZoom', Format => 'float' },
|
334
|
+
'dvtm_wm265e_3-3-4-1' => {
|
335
|
+
Name => 'GPSInfo',
|
336
|
+
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
|
337
|
+
},
|
338
|
+
'dvtm_wm265e_3-3-3-1' => { Name => 'DroneRoll', Format => 'int64s', ValueConv => '$val/10' },
|
339
|
+
'dvtm_wm265e_3-3-3-2' => { Name => 'DronePitch', Format => 'int64s', ValueConv => '$val/10' },
|
340
|
+
'dvtm_wm265e_3-3-3-3' => { Name => 'DroneYaw', Format => 'int64s', ValueConv => '$val/10' },
|
341
|
+
'dvtm_wm265e_3-3-4-2' => { Name => 'AbsoluteAltitude', ValueConv => '$val / 1000' },
|
342
|
+
'dvtm_wm265e_3-3-5-1' => { Name => 'RelativeAltitude', Format => 'float', ValueConv => '$val / 1000' },
|
343
|
+
'dvtm_wm265e_3-4-3-1' => { Name => 'GimbalPitch',Format => 'int64s', ValueConv => '$val / 10' },
|
344
|
+
'dvtm_wm265e_3-4-3-2' => { Name => 'GimbalRoll', Format => 'int64s', ValueConv => '$val / 10' },
|
345
|
+
'dvtm_wm265e_3-4-3-3' => { Name => 'GimbalYaw', Format => 'int64s', ValueConv => '$val / 10' },
|
293
346
|
);
|
294
347
|
|
295
348
|
%Image::ExifTool::DJI::FrameInfo = (
|
@@ -22,7 +22,7 @@ use strict;
|
|
22
22
|
use vars qw($VERSION);
|
23
23
|
use Image::ExifTool qw(:DataAccess :Utils);
|
24
24
|
|
25
|
-
$VERSION = '1.
|
25
|
+
$VERSION = '1.21';
|
26
26
|
|
27
27
|
sub ProcessPEResources($$);
|
28
28
|
sub ProcessPEVersion($$);
|
@@ -1283,7 +1283,7 @@ sub ProcessEXE($$)
|
|
1283
1283
|
# read the rest of the optional header if necessary
|
1284
1284
|
my $optSize = Get16u(\$buff, 20);
|
1285
1285
|
my $more = $optSize + 24 - $size;
|
1286
|
-
my $magic;
|
1286
|
+
my $magic = 0;
|
1287
1287
|
if ($more > 0) {
|
1288
1288
|
if ($raf->Read($buf2, $more) == $more) {
|
1289
1289
|
$buff .= $buf2;
|