exiftool_vendored 13.37.0 → 13.38.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 +18 -3
- data/bin/MANIFEST +4 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +47 -47
- data/bin/exiftool +65 -63
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +2 -2
- data/bin/lib/Image/ExifTool/DSF.pm +138 -0
- data/bin/lib/Image/ExifTool/EXE.pm +3 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +3 -1
- data/bin/lib/Image/ExifTool/GoPro.pm +6 -3
- data/bin/lib/Image/ExifTool/Google.pm +16 -6
- data/bin/lib/Image/ExifTool/ID3.pm +11 -10
- data/bin/lib/Image/ExifTool/M2TS.pm +32 -23
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -0
- data/bin/lib/Image/ExifTool/Sony.pm +7 -7
- data/bin/lib/Image/ExifTool/TagLookup.pm +8 -1
- data/bin/lib/Image/ExifTool/TagNames.pod +4269 -4233
- data/bin/lib/Image/ExifTool/WavPack.pm +144 -0
- data/bin/lib/Image/ExifTool/XMP.pm +12 -7
- data/bin/lib/Image/ExifTool.pm +39 -24
- data/bin/lib/Image/ExifTool.pod +57 -56
- data/bin/perl-Image-ExifTool.spec +46 -46
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41c912cc465c00eabd73bd1192f484d997d3c2b8c2dfaf3b63bb49251d53be0c
|
4
|
+
data.tar.gz: 742291182313e01c2c318ee7e9df71f4dfc4d4e9479d725e7d50eb218b6e9436
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c31b6b771b02395a5a78d86f0c531ba82c21f491811c2d1f181f6445fe878a8a59b32f4eeb6fa9874b12309a6ea69098d77f5635859fef2a092004b35d72b9c
|
7
|
+
data.tar.gz: 1537c480de198d70e14d832dc48d4f9591016cbec09c99ee0d9fab69327236819040c37756478a796ad4483da1e149ada4addfcd1bb0a148c4dc4ecb864de59e
|
data/bin/Changes
CHANGED
@@ -7,6 +7,21 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 13.36. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Sept. 30, 2025 - Version 13.38
|
11
|
+
|
12
|
+
- Added read support for DSF audio files (github #331)
|
13
|
+
- Decode a couple more GoPro tags
|
14
|
+
- Improved WavPack audio file support to recognize the WVP extension and
|
15
|
+
extract more than just RIFF metadata
|
16
|
+
- Updated Sony decoding for the ILCE-6400A (thanks Jos Roost)
|
17
|
+
- Set family 0 group name to "Composite" for approximated GPSDateTime in timed
|
18
|
+
video metadata
|
19
|
+
- Patched to recognize M2TS videos which begin in the middle of a packet
|
20
|
+
- Patched to attempt reading XMP which has an invalid encoding (github #348)
|
21
|
+
- Patched to avoid possible runtime warning when reading a EXE file with
|
22
|
+
corrupt resources (github #354)
|
23
|
+
- Fixed typo in a GoPro tag name
|
24
|
+
|
10
25
|
Sept. 22, 2025 - Version 13.37
|
11
26
|
|
12
27
|
- Added support for geotagging from Columbus GPS logger CSV files
|
@@ -15,12 +30,12 @@ Sept. 22, 2025 - Version 13.37
|
|
15
30
|
- Added new Canon RFLensType and CanonModelID values (thanks Norbert Wasser
|
16
31
|
and Hubert Figuiere, github #350)
|
17
32
|
- Added a new FujiFilm FaceElementType value
|
33
|
+
- Decode Google HDRP maker notes (both text and Protobuf formats)
|
18
34
|
- Decode Reconyx MicroFire and Hyperfire 4K maker notes (thanks Reconyx)
|
19
35
|
- Decode a number of new Canon and Pentax tags and add a number of new values
|
20
36
|
(thanks Karsten Gieselmann)
|
21
37
|
- Decode maker notes from Ricoh GR III videos
|
22
38
|
- Decode a new Sony tag (thanks Jos Roost)
|
23
|
-
- Decode Google HDRP maker notes
|
24
39
|
- Raised size limit on QuickTime atoms extracted for the -ee option, and added
|
25
40
|
a minor warning and allow bypassing with the -m option if over this limit
|
26
41
|
- Minor change to verbose output for XMP metadata
|
@@ -28,7 +43,7 @@ Sept. 22, 2025 - Version 13.37
|
|
28
43
|
- Fixed incorrect FujiFilm PanoramaDirection values
|
29
44
|
- API Changes:
|
30
45
|
- Fixed GeoDir option so alternate languages are loaded properly when a
|
31
|
-
relative path is
|
46
|
+
relative path is specified
|
32
47
|
|
33
48
|
Sept. 9, 2025 - Version 13.36 (production release)
|
34
49
|
|
@@ -3091,7 +3106,7 @@ Feb. 14, 2019 - Version 11.27
|
|
3091
3106
|
Jan. 21, 2019 - Version 11.26
|
3092
3107
|
|
3093
3108
|
- Added a new Nikon LensID (thanks LibRaw)
|
3094
|
-
- Decode more tags for the Sony
|
3109
|
+
- Decode more tags for the Sony ILCE-6400 (thanks Jos Roost and LibRaw)
|
3095
3110
|
- Enhanced -htmldump feature to highlight IFD when mousing over IFD offset
|
3096
3111
|
|
3097
3112
|
Jan. 15, 2019 - Version 11.25
|
data/bin/MANIFEST
CHANGED
@@ -65,6 +65,7 @@ html/TagNames/DICOM.html
|
|
65
65
|
html/TagNames/DJI.html
|
66
66
|
html/TagNames/DNG.html
|
67
67
|
html/TagNames/DPX.html
|
68
|
+
html/TagNames/DSF.html
|
68
69
|
html/TagNames/DV.html
|
69
70
|
html/TagNames/DarwinCore.html
|
70
71
|
html/TagNames/DjVu.html
|
@@ -188,6 +189,7 @@ html/TagNames/VCard.html
|
|
188
189
|
html/TagNames/Vorbis.html
|
189
190
|
html/TagNames/WPG.html
|
190
191
|
html/TagNames/WTV.html
|
192
|
+
html/TagNames/WavPack.html
|
191
193
|
html/TagNames/XISF.html
|
192
194
|
html/TagNames/XMP.html
|
193
195
|
html/TagNames/ZIP.html
|
@@ -291,6 +293,7 @@ lib/Image/ExifTool/DICOM.pm
|
|
291
293
|
lib/Image/ExifTool/DJI.pm
|
292
294
|
lib/Image/ExifTool/DNG.pm
|
293
295
|
lib/Image/ExifTool/DPX.pm
|
296
|
+
lib/Image/ExifTool/DSF.pm
|
294
297
|
lib/Image/ExifTool/DV.pm
|
295
298
|
lib/Image/ExifTool/DarwinCore.pm
|
296
299
|
lib/Image/ExifTool/DjVu.pm
|
@@ -451,6 +454,7 @@ lib/Image/ExifTool/Validate.pm
|
|
451
454
|
lib/Image/ExifTool/Vorbis.pm
|
452
455
|
lib/Image/ExifTool/WPG.pm
|
453
456
|
lib/Image/ExifTool/WTV.pm
|
457
|
+
lib/Image/ExifTool/WavPack.pm
|
454
458
|
lib/Image/ExifTool/WriteCanonRaw.pl
|
455
459
|
lib/Image/ExifTool/WriteExif.pl
|
456
460
|
lib/Image/ExifTool/WriteIPTC.pl
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -14,51 +14,51 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
14
14
|
|
15
15
|
File Types
|
16
16
|
------------+-------------+-------------+-------------+------------
|
17
|
-
360 r/w | DPX r |
|
18
|
-
3FR r | DR4 r/w/c |
|
19
|
-
3G2 r/w |
|
20
|
-
3GP r/w |
|
21
|
-
7Z r |
|
22
|
-
A r |
|
23
|
-
AA r |
|
24
|
-
AAC r |
|
25
|
-
AAE r |
|
26
|
-
AAX r/w |
|
27
|
-
ACR r |
|
28
|
-
AFM r |
|
29
|
-
AI r/w |
|
30
|
-
AIFF r |
|
31
|
-
APE r |
|
32
|
-
ARQ r/w |
|
33
|
-
ARW r/w |
|
34
|
-
ASF r |
|
35
|
-
AVI r |
|
36
|
-
AVIF r/w |
|
37
|
-
AZW r |
|
38
|
-
BMP r |
|
39
|
-
BPG r |
|
40
|
-
BTF r |
|
41
|
-
C2PA r |
|
42
|
-
CHM r |
|
43
|
-
COS r |
|
44
|
-
CR2 r/w |
|
45
|
-
CR3 r/w |
|
46
|
-
CRM r/w |
|
47
|
-
CRW r/w |
|
48
|
-
CS1 r/w |
|
49
|
-
CSV r |
|
50
|
-
CUR r |
|
51
|
-
CZI r |
|
52
|
-
DCM r |
|
53
|
-
DCP r/w |
|
54
|
-
DCR r |
|
55
|
-
DFONT r |
|
56
|
-
DIVX r |
|
57
|
-
DJVU r |
|
58
|
-
DLL r |
|
59
|
-
DNG r/w |
|
60
|
-
DOC r |
|
61
|
-
DOCX r |
|
17
|
+
360 r/w | DPX r | J2C r | O r | RIFF r
|
18
|
+
3FR r | DR4 r/w/c | JNG r/w | ODP r | RSRC r
|
19
|
+
3G2 r/w | DSF r | JP2 r/w | ODS r | RTF r
|
20
|
+
3GP r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
|
21
|
+
7Z r | DV r | JSON r | OFR r | RWL r/w
|
22
|
+
A r | DVB r/w | JXL r/w | OGG r | RWZ r
|
23
|
+
AA r | DVR-MS r | K25 r | OGV r | RM r
|
24
|
+
AAC r | DYLIB r | KDC r | ONP r | SEQ r
|
25
|
+
AAE r | EIP r | KEY r | OPUS r | SKETCH r
|
26
|
+
AAX r/w | EPS r/w | LA r | ORF r/w | SO r
|
27
|
+
ACR r | EPUB r | LFP r | ORI r/w | SR2 r/w
|
28
|
+
AFM r | ERF r/w | LIF r | OTF r | SRF r
|
29
|
+
AI r/w | EXE r | LNK r | PAC r | SRW r/w
|
30
|
+
AIFF r | EXIF r/w/c | LRV r/w | PAGES r | SVG r
|
31
|
+
APE r | EXR r | M2TS r | PBM r/w | SWF r
|
32
|
+
ARQ r/w | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
|
33
|
+
ARW r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
|
34
|
+
ASF r | FFF r/w | MAX r | PCD r | TNEF r
|
35
|
+
AVI r | FITS r | MEF r/w | PCX r | TORRENT r
|
36
|
+
AVIF r/w | FLA r | MIE r/w/c | PDB r | TTC r
|
37
|
+
AZW r | FLAC r | MIFF r | PDF r/w | TTF r
|
38
|
+
BMP r | FLIF r/w | MKA r | PEF r/w | TXT r
|
39
|
+
BPG r | FLV r | MKS r | PFA r | VCF r
|
40
|
+
BTF r | FPF r | MKV r | PFB r | VNT r
|
41
|
+
C2PA r | FPX r | MNG r/w | PFM r | VRD r/w/c
|
42
|
+
CHM r | GIF r/w | MOBI r | PGF r | VSD r
|
43
|
+
COS r | GLV r/w | MODD r | PGM r/w | WAV r
|
44
|
+
CR2 r/w | GPR r/w | MOI r | PLIST r | WDP r/w
|
45
|
+
CR3 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
|
46
|
+
CRM r/w | HDP r/w | MOV r/w | PMP r | WEBM r
|
47
|
+
CRW r/w | HDR r | MP3 r | PNG r/w | WMA r
|
48
|
+
CS1 r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
|
49
|
+
CSV r | HEIF r/w | MPC r | PPT r | WPG r
|
50
|
+
CUR r | HTML r | MPG r | PPTX r | WTV r
|
51
|
+
CZI r | ICC r/w/c | MPO r/w | PS r/w | WV r
|
52
|
+
DCM r | ICO r | MQV r/w | PSB r/w | X3F r/w
|
53
|
+
DCP r/w | ICS r | MRC r | PSD r/w | XCF r
|
54
|
+
DCR r | IDML r | MRW r/w | PSP r | XISF r
|
55
|
+
DFONT r | IIQ r/w | MXF r | QTIF r/w | XLS r
|
56
|
+
DIVX r | IND r/w | NEF r/w | R3D r | XLSX r
|
57
|
+
DJVU r | INSP r/w | NKA r | RA r | XMP r/w/c
|
58
|
+
DLL r | INSV r | NKSC r/w | RAF r/w | ZIP r
|
59
|
+
DNG r/w | INX r | NRW r/w | RAM r |
|
60
|
+
DOC r | ISO r | NUMBERS r | RAR r |
|
61
|
+
DOCX r | ITC r | NXD r | RAW r/w |
|
62
62
|
|
63
63
|
Meta Information
|
64
64
|
----------------------+----------------------+---------------------
|
@@ -110,8 +110,8 @@ your home directory, then you would type the following commands in a
|
|
110
110
|
terminal window to extract and run ExifTool:
|
111
111
|
|
112
112
|
cd ~/Desktop
|
113
|
-
gzip -dc Image-ExifTool-13.
|
114
|
-
cd Image-ExifTool-13.
|
113
|
+
gzip -dc Image-ExifTool-13.38.tar.gz | tar -xf -
|
114
|
+
cd Image-ExifTool-13.38
|
115
115
|
./exiftool t/images/ExifTool.jpg
|
116
116
|
|
117
117
|
Note: These commands extract meta information from one of the test images.
|
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.38';
|
15
15
|
|
16
16
|
$^W = 1; # enable global warnings
|
17
17
|
|
@@ -5079,51 +5079,51 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
5079
5079
|
|
5080
5080
|
File Types
|
5081
5081
|
------------+-------------+-------------+-------------+------------
|
5082
|
-
360 r/w | DPX r |
|
5083
|
-
3FR r | DR4 r/w/c |
|
5084
|
-
3G2 r/w |
|
5085
|
-
3GP r/w |
|
5086
|
-
7Z r |
|
5087
|
-
A r |
|
5088
|
-
AA r |
|
5089
|
-
AAC r |
|
5090
|
-
AAE r |
|
5091
|
-
AAX r/w |
|
5092
|
-
ACR r |
|
5093
|
-
AFM r |
|
5094
|
-
AI r/w |
|
5095
|
-
AIFF r |
|
5096
|
-
APE r |
|
5097
|
-
ARQ r/w |
|
5098
|
-
ARW r/w |
|
5099
|
-
ASF r |
|
5100
|
-
AVI r |
|
5101
|
-
AVIF r/w |
|
5102
|
-
AZW r |
|
5103
|
-
BMP r |
|
5104
|
-
BPG r |
|
5105
|
-
BTF r |
|
5106
|
-
C2PA r |
|
5107
|
-
CHM r |
|
5108
|
-
COS r |
|
5109
|
-
CR2 r/w |
|
5110
|
-
CR3 r/w |
|
5111
|
-
CRM r/w |
|
5112
|
-
CRW r/w |
|
5113
|
-
CS1 r/w |
|
5114
|
-
CSV r |
|
5115
|
-
CUR r |
|
5116
|
-
CZI r |
|
5117
|
-
DCM r |
|
5118
|
-
DCP r/w |
|
5119
|
-
DCR r |
|
5120
|
-
DFONT r |
|
5121
|
-
DIVX r |
|
5122
|
-
DJVU r |
|
5123
|
-
DLL r |
|
5124
|
-
DNG r/w |
|
5125
|
-
DOC r |
|
5126
|
-
DOCX r |
|
5082
|
+
360 r/w | DPX r | J2C r | O r | RIFF r
|
5083
|
+
3FR r | DR4 r/w/c | JNG r/w | ODP r | RSRC r
|
5084
|
+
3G2 r/w | DSF r | JP2 r/w | ODS r | RTF r
|
5085
|
+
3GP r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
|
5086
|
+
7Z r | DV r | JSON r | OFR r | RWL r/w
|
5087
|
+
A r | DVB r/w | JXL r/w | OGG r | RWZ r
|
5088
|
+
AA r | DVR-MS r | K25 r | OGV r | RM r
|
5089
|
+
AAC r | DYLIB r | KDC r | ONP r | SEQ r
|
5090
|
+
AAE r | EIP r | KEY r | OPUS r | SKETCH r
|
5091
|
+
AAX r/w | EPS r/w | LA r | ORF r/w | SO r
|
5092
|
+
ACR r | EPUB r | LFP r | ORI r/w | SR2 r/w
|
5093
|
+
AFM r | ERF r/w | LIF r | OTF r | SRF r
|
5094
|
+
AI r/w | EXE r | LNK r | PAC r | SRW r/w
|
5095
|
+
AIFF r | EXIF r/w/c | LRV r/w | PAGES r | SVG r
|
5096
|
+
APE r | EXR r | M2TS r | PBM r/w | SWF r
|
5097
|
+
ARQ r/w | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
|
5098
|
+
ARW r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
|
5099
|
+
ASF r | FFF r/w | MAX r | PCD r | TNEF r
|
5100
|
+
AVI r | FITS r | MEF r/w | PCX r | TORRENT r
|
5101
|
+
AVIF r/w | FLA r | MIE r/w/c | PDB r | TTC r
|
5102
|
+
AZW r | FLAC r | MIFF r | PDF r/w | TTF r
|
5103
|
+
BMP r | FLIF r/w | MKA r | PEF r/w | TXT r
|
5104
|
+
BPG r | FLV r | MKS r | PFA r | VCF r
|
5105
|
+
BTF r | FPF r | MKV r | PFB r | VNT r
|
5106
|
+
C2PA r | FPX r | MNG r/w | PFM r | VRD r/w/c
|
5107
|
+
CHM r | GIF r/w | MOBI r | PGF r | VSD r
|
5108
|
+
COS r | GLV r/w | MODD r | PGM r/w | WAV r
|
5109
|
+
CR2 r/w | GPR r/w | MOI r | PLIST r | WDP r/w
|
5110
|
+
CR3 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
|
5111
|
+
CRM r/w | HDP r/w | MOV r/w | PMP r | WEBM r
|
5112
|
+
CRW r/w | HDR r | MP3 r | PNG r/w | WMA r
|
5113
|
+
CS1 r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
|
5114
|
+
CSV r | HEIF r/w | MPC r | PPT r | WPG r
|
5115
|
+
CUR r | HTML r | MPG r | PPTX r | WTV r
|
5116
|
+
CZI r | ICC r/w/c | MPO r/w | PS r/w | WV r
|
5117
|
+
DCM r | ICO r | MQV r/w | PSB r/w | X3F r/w
|
5118
|
+
DCP r/w | ICS r | MRC r | PSD r/w | XCF r
|
5119
|
+
DCR r | IDML r | MRW r/w | PSP r | XISF r
|
5120
|
+
DFONT r | IIQ r/w | MXF r | QTIF r/w | XLS r
|
5121
|
+
DIVX r | IND r/w | NEF r/w | R3D r | XLSX r
|
5122
|
+
DJVU r | INSP r/w | NKA r | RA r | XMP r/w/c
|
5123
|
+
DLL r | INSV r | NKSC r/w | RAF r/w | ZIP r
|
5124
|
+
DNG r/w | INX r | NRW r/w | RAM r |
|
5125
|
+
DOC r | ISO r | NUMBERS r | RAR r |
|
5126
|
+
DOCX r | ITC r | NXD r | RAW r/w |
|
5127
5127
|
|
5128
5128
|
Meta Information
|
5129
5129
|
----------------------+----------------------+---------------------
|
@@ -5722,10 +5722,12 @@ as the exported file. The first row of the I<CSVFILE> must be the ExifTool
|
|
5722
5722
|
tag names (with optional group names) for each column of the file, and
|
5723
5723
|
values must be separated by commas. A special "SourceFile" column specifies
|
5724
5724
|
the files associated with each row of information (and a SourceFile of "*"
|
5725
|
-
may be used to define default tags to be imported for all files which are
|
5726
|
-
combined with any tags specified for the specific SourceFile
|
5727
|
-
|
5728
|
-
|
5725
|
+
may be used to define default tags to be imported for all files, which are
|
5726
|
+
then combined with any tags specified for the specific SourceFile
|
5727
|
+
processed). To be clear, the imported CSV file acts as a lookup table to
|
5728
|
+
obtain the tags for import based on the files/directories and tags specified
|
5729
|
+
on the command line. The B<-csvDelim> option may be used to change the
|
5730
|
+
input/output field delimiter if something other than a comma is required.
|
5729
5731
|
|
5730
5732
|
The following examples demonstrate basic use of the B<-csv> option:
|
5731
5733
|
|
@@ -5924,18 +5926,18 @@ convert arrays into strings. For example:
|
|
5924
5926
|
|
5925
5927
|
exiftool -j -api structformat=jsonq -sep ", " ...
|
5926
5928
|
|
5927
|
-
If I<JSONFILE> is specified, the file is imported and the tag
|
5928
|
-
from the
|
5929
|
-
|
5930
|
-
|
5931
|
-
|
5932
|
-
|
5933
|
-
|
5934
|
-
|
5935
|
-
|
5936
|
-
|
5937
|
-
|
5938
|
-
print conversion.
|
5929
|
+
If I<JSONFILE> is specified, the JSON file is imported and the tag
|
5930
|
+
definitions from the JSON are used to set tag values on a per-file basis for
|
5931
|
+
each file specified on the command line. A special "SourceFile" entry in
|
5932
|
+
each JSON object associates the information with a specific target file. An
|
5933
|
+
object with a missing SourceFile or a SourceFile of "*" defines default tags
|
5934
|
+
for all target files which are combined with any tags specified for the
|
5935
|
+
specific SourceFile processed. The imported JSON file must have the same
|
5936
|
+
format as the exported JSON files with the exception that options exporting
|
5937
|
+
JSON objects instead of simple values are not compatible with the import
|
5938
|
+
file format (ie. export with B<-D>, B<-H>, B<-l>, or B<-T> is not
|
5939
|
+
compatible, and use B<-G> instead of B<-g>). Additionally, tag names in the
|
5940
|
+
input JSON file may be suffixed with a C<#> to disable print conversion.
|
5939
5941
|
|
5940
5942
|
Specific tags may be imported from the JSON database by adding B<->I<TAG>
|
5941
5943
|
options to the command, or excluded with B<-->I<TAG>, with exclusions taking
|
@@ -6082,7 +6084,7 @@ with this command:
|
|
6082
6084
|
|
6083
6085
|
produces output like this:
|
6084
6086
|
|
6085
|
-
-- Generated by ExifTool 13.
|
6087
|
+
-- Generated by ExifTool 13.38 --
|
6086
6088
|
File: a.jpg - 2003:10:31 15:44:19
|
6087
6089
|
(f/5.6, 1/60s, ISO 100)
|
6088
6090
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -248,7 +248,7 @@ my %fixed2_30 = (
|
|
248
248
|
);
|
249
249
|
|
250
250
|
#------------------------------------------------------------------------------
|
251
|
-
# Extract
|
251
|
+
# Extract metadata from a BMP image
|
252
252
|
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
253
253
|
# Returns: 1 on success, 0 if this wasn't a valid BMP file
|
254
254
|
sub ProcessBMP($$)
|
@@ -74,7 +74,8 @@ my %tweakOrder = (
|
|
74
74
|
DJI => 'Casio',
|
75
75
|
FLIR => 'DJI',
|
76
76
|
FujiFilm => 'FLIR',
|
77
|
-
|
77
|
+
Google => 'GE',
|
78
|
+
GoPro => 'Google',
|
78
79
|
Kodak => 'JVC',
|
79
80
|
Leaf => 'Kodak',
|
80
81
|
Lytro => 'Leaf',
|
@@ -109,7 +110,6 @@ my %tweakOrder = (
|
|
109
110
|
'FujiFilm::RAFData' => 'FujiFilm::RAF',
|
110
111
|
'QuickTime::AudioKeys' => 'QuickTime::Keys',
|
111
112
|
'QuickTime::VideoKeys' => 'QuickTime::AudioKeys',
|
112
|
-
'Google::HDRPText' => 'Google::HDRPlusMakerNote',
|
113
113
|
);
|
114
114
|
|
115
115
|
# list of all recognized Format strings
|
@@ -0,0 +1,138 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# File: DSF.pm
|
3
|
+
#
|
4
|
+
# Description: Read DSF meta information
|
5
|
+
#
|
6
|
+
# Revisions: 2025-09-24 - P. Harvey Created
|
7
|
+
#
|
8
|
+
# References: 1) https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf
|
9
|
+
#------------------------------------------------------------------------------
|
10
|
+
|
11
|
+
package Image::ExifTool::DSF;
|
12
|
+
|
13
|
+
use strict;
|
14
|
+
use vars qw($VERSION);
|
15
|
+
use Image::ExifTool qw(:DataAccess :Utils);
|
16
|
+
|
17
|
+
$VERSION = '1.00';
|
18
|
+
|
19
|
+
# DSF header format
|
20
|
+
%Image::ExifTool::DSF::Main = (
|
21
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
22
|
+
GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Audio' },
|
23
|
+
FORMAT => 'int32u',
|
24
|
+
NOTES => q{
|
25
|
+
Tags read from the 'fmt ' header of a DSF (DSD Stream File) audio files. As
|
26
|
+
well, ID3 metadata may also exist in these files. See
|
27
|
+
L<https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf>
|
28
|
+
for the specification.
|
29
|
+
},
|
30
|
+
3 => 'FormatVersion',
|
31
|
+
4 => { Name => 'FormatID', PrintConv => { 0 => 'DSD Raw' }},
|
32
|
+
5 => {
|
33
|
+
Name => 'ChannelType',
|
34
|
+
PrintConv => {
|
35
|
+
1 => 'Mono',
|
36
|
+
2 => 'Stereo (Left, Right)',
|
37
|
+
3 => '3 Channels (Left, Right, Center)',
|
38
|
+
4 => 'Quad (Left, Right, Back L, Back R)',
|
39
|
+
5 => '4 Channels (Left, Right, Center, Bass)',
|
40
|
+
6 => '5 Channels (Left, Right, Center, Back L, Back R)',
|
41
|
+
7 => '5.1 Channels (Left, Right, Center, Bass, Back L, Back R)',
|
42
|
+
},
|
43
|
+
},
|
44
|
+
6 => 'ChannelCount',
|
45
|
+
7 => 'SampleRate',
|
46
|
+
8 => 'BitsPerSample',
|
47
|
+
9 => { Name => 'SampleCount', Format => 'int64u' },
|
48
|
+
11 => 'BlockSize',
|
49
|
+
);
|
50
|
+
|
51
|
+
#------------------------------------------------------------------------------
|
52
|
+
# Extract metadata from a DSF file
|
53
|
+
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
54
|
+
# Returns: 1 on success, 0 if this wasn't a valid DSF file
|
55
|
+
sub ProcessDSF($$)
|
56
|
+
{
|
57
|
+
my ($et, $dirInfo) = @_;
|
58
|
+
my $raf = $$dirInfo{RAF};
|
59
|
+
my ($buff, $buf2, $tagTablePtr);
|
60
|
+
|
61
|
+
# verify this is a valid DSF file
|
62
|
+
return 0 unless $raf->Read($buff, 40) == 40;
|
63
|
+
return 0 unless $buff =~ /^DSD \x1c\0{7}.{16}fmt /s;
|
64
|
+
$et->SetFileType(); # set the FileType tag
|
65
|
+
my $tagTbl = GetTagTable('Image::ExifTool::DSF::Main');
|
66
|
+
SetByteOrder('II');
|
67
|
+
my $fmtLen = Get64u(\$buff,32);
|
68
|
+
unless ($fmtLen > 12 and $fmtLen < 1000 and
|
69
|
+
$raf->Read($buf2, $fmtLen - 12) == $fmtLen - 12)
|
70
|
+
{
|
71
|
+
$et->Warn('Error reading DSF fmt chunk');
|
72
|
+
return 1;
|
73
|
+
}
|
74
|
+
my $fileSize = Get64u(\$buff, 12);
|
75
|
+
my $metaPos = Get64u(\$buff, 20);
|
76
|
+
$buff = substr($buff, 28) . $buf2;
|
77
|
+
#
|
78
|
+
# process the DSF 'fmt ' chunk
|
79
|
+
#
|
80
|
+
my %dirInfo = (
|
81
|
+
DataPt => \$buff,
|
82
|
+
DirStart => 0,
|
83
|
+
DirLen => length($buff),
|
84
|
+
);
|
85
|
+
$et->ProcessBinaryData(\%dirInfo, $tagTbl);
|
86
|
+
#
|
87
|
+
# process ID3v2 if it exists
|
88
|
+
#
|
89
|
+
my $metaLen = $fileSize - $metaPos;
|
90
|
+
if ($metaPos and $metaLen > 0 and $metaLen < 20000000 and
|
91
|
+
$raf->Seek($metaPos, 0) and $raf->Read($buff, $metaLen) == $metaLen)
|
92
|
+
{
|
93
|
+
$dirInfo{DataPos} = $metaPos;
|
94
|
+
$dirInfo{DirLen} = $metaLen;
|
95
|
+
my $id3Tbl = GetTagTable('Image::ExifTool::ID3::Main');
|
96
|
+
$et->ProcessDirectory(\%dirInfo, $id3Tbl);
|
97
|
+
}
|
98
|
+
return 1;
|
99
|
+
}
|
100
|
+
|
101
|
+
1; # end
|
102
|
+
|
103
|
+
__END__
|
104
|
+
|
105
|
+
=head1 NAME
|
106
|
+
|
107
|
+
Image::ExifTool::DSF - Read DSF meta information
|
108
|
+
|
109
|
+
=head1 SYNOPSIS
|
110
|
+
|
111
|
+
This module is used by Image::ExifTool
|
112
|
+
|
113
|
+
=head1 DESCRIPTION
|
114
|
+
|
115
|
+
This module contains definitions required by Image::ExifTool to read DSF
|
116
|
+
(DSD Stream File) audio files.
|
117
|
+
|
118
|
+
=head1 AUTHOR
|
119
|
+
|
120
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
121
|
+
|
122
|
+
This library is free software; you can redistribute it and/or modify it
|
123
|
+
under the same terms as Perl itself.
|
124
|
+
|
125
|
+
=head1 REFERENCES
|
126
|
+
|
127
|
+
=over 4
|
128
|
+
|
129
|
+
=item L<https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf>
|
130
|
+
|
131
|
+
=back
|
132
|
+
|
133
|
+
=head1 SEE ALSO
|
134
|
+
|
135
|
+
L<Image::ExifTool::TagNames/DSF Tags>,
|
136
|
+
L<Image::ExifTool(3pm)|Image::ExifTool>
|
137
|
+
|
138
|
+
=cut
|
@@ -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.25';
|
26
26
|
|
27
27
|
sub ProcessPEResources($$);
|
28
28
|
sub ProcessPEVersion($$);
|
@@ -962,6 +962,7 @@ sub ProcessPEVersion($$)
|
|
962
962
|
$pos = ($pos + 3) & 0xfffffffc; # align on a 4-byte boundary
|
963
963
|
last if $pos + 6 > $end;
|
964
964
|
$len = Get16u($dataPt, $pos);
|
965
|
+
return 0 if $pos + $len > $end;
|
965
966
|
$valLen = Get16u($dataPt, $pos + 2);
|
966
967
|
$type = Get16u($dataPt, $pos + 4);
|
967
968
|
return 0 unless $len or $valLen; # prevent possible infinite loop
|
@@ -989,6 +990,7 @@ sub ProcessPEVersion($$)
|
|
989
990
|
$valLen = Get16u($dataPt, $pt + 2);
|
990
991
|
# $type = Get16u($dataPt, $pt + 4);
|
991
992
|
my $entryEnd = $pt + $len;
|
993
|
+
return 0 if $entryEnd > $end;
|
992
994
|
# get tag ID (converted to UTF8)
|
993
995
|
($string, $pt) = ReadUnicodeStr($dataPt, $pt + 6, $entryEnd);
|
994
996
|
unless ($index) {
|
@@ -20,6 +20,7 @@
|
|
20
20
|
# 2024/11/26 - PH Also write GPSMeasureMode and GPSDOP
|
21
21
|
# 2024/11/05 - PH Added support for Google Maps "Export timeline data"
|
22
22
|
# JSON format
|
23
|
+
# 2025/09/22 - PH Added ability to read Columbus CSV log files
|
23
24
|
#
|
24
25
|
# References: 1) http://www.topografix.com/GPX/1/1/
|
25
26
|
# 2) http://www.gpsinformation.org/dale/nmea.htm#GSA
|
@@ -1557,7 +1558,8 @@ This module loads GPS track logs, interpolates to determine position based
|
|
1557
1558
|
on time, and sets new GPS values for geotagging images. Currently supported
|
1558
1559
|
formats are GPX, NMEA RMC/GGA/GLL/GSA/ZDA, KML, IGC, Garmin XML and TCX,
|
1559
1560
|
Magellan PMGNTRK, Honeywell PTNTHPR, Bramor gEO, Winplus Beacon text,
|
1560
|
-
GPS/IMU CSV, DJI CSV
|
1561
|
+
GPS/IMU CSV, DJI/Columbus/ExifTool CSV format and 3 different Google JSON
|
1562
|
+
formats.
|
1561
1563
|
|
1562
1564
|
Methods in this module should not be called directly. Instead, the Geotag
|
1563
1565
|
feature is accessed by writing the values of the ExifTool Geotag, Geosync
|