exiftool_vendored 13.12.0 → 13.14.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 +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;
|