exiftool-vendored.pl 12.62.0 → 12.67.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.
Files changed (56) hide show
  1. package/bin/Changes +96 -1
  2. package/bin/MANIFEST +4 -0
  3. package/bin/META.json +5 -3
  4. package/bin/META.yml +5 -3
  5. package/bin/Makefile.PL +7 -1
  6. package/bin/README +50 -46
  7. package/bin/config_files/guano.config +161 -0
  8. package/bin/exiftool +116 -79
  9. package/bin/lib/Image/ExifTool/7Z.pm +793 -0
  10. package/bin/lib/Image/ExifTool/Apple.pm +19 -8
  11. package/bin/lib/Image/ExifTool/BigTIFF.pm +8 -1
  12. package/bin/lib/Image/ExifTool/Canon.pm +33 -12
  13. package/bin/lib/Image/ExifTool/CanonRaw.pm +4 -4
  14. package/bin/lib/Image/ExifTool/CanonVRD.pm +4 -1
  15. package/bin/lib/Image/ExifTool/Exif.pm +31 -14
  16. package/bin/lib/Image/ExifTool/FlashPix.pm +8 -2
  17. package/bin/lib/Image/ExifTool/FujiFilm.pm +6 -3
  18. package/bin/lib/Image/ExifTool/GPS.pm +5 -2
  19. package/bin/lib/Image/ExifTool/Geotag.pm +5 -2
  20. package/bin/lib/Image/ExifTool/Jpeg2000.pm +226 -28
  21. package/bin/lib/Image/ExifTool/Lang/fr.pm +1467 -202
  22. package/bin/lib/Image/ExifTool/MPF.pm +2 -1
  23. package/bin/lib/Image/ExifTool/Matroska.pm +16 -1
  24. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  25. package/bin/lib/Image/ExifTool/Nikon.pm +948 -31
  26. package/bin/lib/Image/ExifTool/NikonCustom.pm +874 -63
  27. package/bin/lib/Image/ExifTool/PDF.pm +23 -5
  28. package/bin/lib/Image/ExifTool/PLIST.pm +8 -1
  29. package/bin/lib/Image/ExifTool/PLUS.pm +19 -4
  30. package/bin/lib/Image/ExifTool/PNG.pm +6 -6
  31. package/bin/lib/Image/ExifTool/Pentax.pm +3 -1
  32. package/bin/lib/Image/ExifTool/PhaseOne.pm +5 -5
  33. package/bin/lib/Image/ExifTool/QuickTime.pm +91 -30
  34. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -19
  35. package/bin/lib/Image/ExifTool/README +2 -2
  36. package/bin/lib/Image/ExifTool/RIFF.pm +11 -9
  37. package/bin/lib/Image/ExifTool/Samsung.pm +227 -227
  38. package/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
  39. package/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  40. package/bin/lib/Image/ExifTool/Sony.pm +229 -30
  41. package/bin/lib/Image/ExifTool/TagLookup.pm +4758 -4633
  42. package/bin/lib/Image/ExifTool/TagNames.pod +715 -23
  43. package/bin/lib/Image/ExifTool/Validate.pm +17 -1
  44. package/bin/lib/Image/ExifTool/WriteExif.pl +9 -7
  45. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +21 -9
  46. package/bin/lib/Image/ExifTool/WriteXMP.pl +2 -2
  47. package/bin/lib/Image/ExifTool/Writer.pl +36 -12
  48. package/bin/lib/Image/ExifTool/XMP.pm +14 -2
  49. package/bin/lib/Image/ExifTool/XMP2.pl +33 -1
  50. package/bin/lib/Image/ExifTool/XMPStruct.pl +96 -28
  51. package/bin/lib/Image/ExifTool/ZIP.pm +5 -5
  52. package/bin/lib/Image/ExifTool.pm +184 -132
  53. package/bin/lib/Image/ExifTool.pod +124 -58
  54. package/bin/perl-Image-ExifTool.spec +44 -44
  55. package/bin/pp_build_exe.args +7 -4
  56. package/package.json +3 -3
package/bin/Changes CHANGED
@@ -7,11 +7,106 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.60. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Sept. 19, 2023 - Version 12.67
11
+
12
+ - Added a new Pentax LensType (thanks dmont)
13
+ - Added a new FujiFilm FilmMode and FaceElementTypes values (thanks Greybeard)
14
+ - Fixed error writing new DataMining tag where URI prefix wasn't being
15
+ properly added to the value
16
+
17
+ Sept. 19, 2023 - Version 12.66
18
+
19
+ - Added a few new Canon LensType values (thanks Norbert Wasser)
20
+ - Added conversions for a few Apple:ImageCaptureType values
21
+ - Added new XMP tag for PLUS version 2.0.1
22
+ - Added a new CanonModelID (thanks Laurent Clevy)
23
+ - Decode another tag from Canon 1DS raw images (Hubert Figuiere, github #219)
24
+ - Decode JPGCompression for newer Nikon models (thanks Warren Hatch)
25
+ - Fixed bug introduced in 12.65 where duplicate tags were not returned even
26
+ when the groups where specified explicitly
27
+ - API Changes:
28
+ - Added WindowsWideFile option
29
+
30
+ Aug. 10, 2023 - Version 12.65
31
+
32
+ - Added a new QuickTime Keys tag
33
+ - Added a new CanonModelID (thanks Laurent Clevy)
34
+ - Added a new Canon LensType (thanks Norbert Wasser)
35
+ - Added number in brackets to converted Samsung MCCData value
36
+ - Decode a number of new Sony tags (thanks Jos Roost)
37
+ - Decode a few new FlashPix tags (github #217)
38
+ - Improved decoding of Nikon Z9 firmware 4.0 tags (thanks Warren Hatch)
39
+ - Improved parsing of PDF:Keywords to support semicolon-separated lists
40
+ - Enhanced -api option to show list of available options if no argument is
41
+ provided
42
+ - Lowered priority of IFD1 tags in ARW images so IFD0/SubIFD take precedence
43
+ - Changed QuickTime tag names for atID (AlbumTitleID to ArtistID) and plID
44
+ (PlayListID to AlbumID) (github issue #216), and added cmID (ComposerID)
45
+ - Changed Apple:MediaGroupUUID tag name back to ContentIdentifier
46
+ - Patched the -d option to handle the %s format code internally when writing
47
+ (avoids problems due to inconsistent behaviour of this format code in the
48
+ strptime function on different systems)
49
+ - Patched patch of version 12.32 to restore ability to read from named pipes
50
+ - Fixed bug which could cause a hang when processing a corrupt BigTIFF image
51
+ - Fixed document number for auxiliary image metadata in HEIC files
52
+ - Fixed misspelt Apple tag name (thanks Neal Krawetz)
53
+ - API Changes:
54
+ - Added AvailableOptions method
55
+
56
+ June 28, 2023 - Version 12.64
57
+
58
+ - Added a new Sony LensType (thanks Jos Roost)
59
+ - Added config_files/guano.config to the distribution (thanks StarGeek)
60
+ - Added support for Garmin Low-resolution Video (GLV) files
61
+ - Added JUMBF to the list of deletable groups
62
+ - Added (untested) read support for spherical video tags in Matroska videos
63
+ - Decode a number of new Nikon Z9 tags (thanks Warren Hatch)
64
+ - Decode AmbisonicAudio tags in spherical MP4 vidoes
65
+ - Decode another Apple tag
66
+ - Improved French translations (thanks Philippe Bonnaure of GraphicConverter)
67
+ - Patched to allow writing QuickTime-based videos where the audio/video sample
68
+ description comes after the sample pointers
69
+ - Fixed parsing of GPS from Insta360 videos to properly skip void fixes
70
+ - Fixed problem where Apple iPhone 14 images produced invalid XML in -X output
71
+ when using -struct option
72
+ - API Changes:
73
+ - Added StructFormat option to allow JSON-format serialized structures
74
+ - Added NoDups option to eliminate duplicate items from queued values when
75
+ writing List-type tags
76
+
77
+ June 8, 2023 - Version 12.63
78
+
79
+ - Added ability to read/write/create Brotli-compressed metadata in JXL images
80
+ (requires IO::Compress::Brotli)
81
+ - Added partial support for Exif 3.0 specification:
82
+ - Added new EXIF tags
83
+ - Added MPF Original Preservation Image type
84
+ - Support for reading 'utf8' values (but still write only as 'string')
85
+ - Added support for Adobe XMP-hdrgm (HDR Gain Map) tags
86
+ - Added support for reading 7z files (thanks Amir Gooran, github #205) (but
87
+ currently this doesn't work for the Windows .exe version because I haven't
88
+ been able to install Compress::Raw::Lzma for ActivePerl)
89
+ - Added XMP-panorama tags
90
+ - Added warning if -csv is used with -p
91
+ - Added warning if trying to geotag from a UTF-16 track log
92
+ - Decode ImageWidth/Height from JXL images using partial codestreams
93
+ - Decode more Sony tags for some newer models (thanks Jos Roost)
94
+ - Extract GainMapImage (hrgm box) from JXL files
95
+ - Extract Guano information from WAV files
96
+ - Enhanced ImageDataMD5 feature and renamed to ImageDataHash (with
97
+ ImageDataMD5 alias for backward compatibility)
98
+ - Changed RARVersion tag name to FileVersion
99
+ - Fixed bug introduced in 12.46 which could cause a hang when reading a
100
+ corrupted RIFF-based file
101
+ - Fixed writing of Composition:GPSPosition when -n is used
102
+ - API Changes:
103
+ - Added ImageHashType option
104
+
10
105
  May 3, 2023 - Version 12.62
11
106
 
12
107
  - Added basic read support for WPG images
13
108
  - Added ImageDataMD5 support for HEIC images
14
- - Added support for RAR version 5.0 compressed files (thanks Amir Gooran)
109
+ - Added support for RAR version 5.0 files (thanks Amir Gooran, github #203)
15
110
  - Added a few new XMP-aux tags (thanks John Ellis)
16
111
  - Made Composite tags available for use in -fileNUM argument
17
112
  - Better handling of FlashPix VT_EMPTY value
package/bin/MANIFEST CHANGED
@@ -25,6 +25,7 @@ config_files/example.config
25
25
  config_files/fotoware.config
26
26
  config_files/frameCount.config
27
27
  config_files/gps2utm.config
28
+ config_files/guano.config
28
29
  config_files/nksc.config
29
30
  config_files/photoshop_paths.config
30
31
  config_files/picasa_faces.config
@@ -211,6 +212,7 @@ lib/File/RandomAccess.pm
211
212
  lib/File/RandomAccess.pod
212
213
  lib/Image/ExifTool.pm
213
214
  lib/Image/ExifTool.pod
215
+ lib/Image/ExifTool/7Z.pm
214
216
  lib/Image/ExifTool/AES.pm
215
217
  lib/Image/ExifTool/AFCP.pm
216
218
  lib/Image/ExifTool/AIFF.pm
@@ -633,6 +635,7 @@ t/JVC_3.out
633
635
  t/JXL.t
634
636
  t/JXL_2.out
635
637
  t/JXL_3.out
638
+ t/JXL_4.out
636
639
  t/Jpeg2000.t
637
640
  t/Jpeg2000_2.out
638
641
  t/Jpeg2000_3.out
@@ -1052,6 +1055,7 @@ t/images/JSON.json
1052
1055
  t/images/JVC.jpg
1053
1056
  t/images/JVC2.jpg
1054
1057
  t/images/JXL.jxl
1058
+ t/images/JXL2.jxl
1055
1059
  t/images/Jpeg2000.j2c
1056
1060
  t/images/Jpeg2000.jp2
1057
1061
  t/images/Kodak.jpg
package/bin/META.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "Phil Harvey (philharvey66 at gmail.com)"
5
5
  ],
6
6
  "dynamic_config" : 0,
7
- "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.133380, CPAN::Meta::Converter version 2.143240, CPAN::Meta::Converter version 2.150010",
7
+ "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.143240, CPAN::Meta::Converter version 2.133380",
8
8
  "license" : [
9
9
  "perl_5"
10
10
  ],
@@ -33,10 +33,13 @@
33
33
  "runtime" : {
34
34
  "recommends" : {
35
35
  "Archive::Zip" : "0",
36
+ "Compress::Raw::Lzma" : "0",
36
37
  "Compress::Zlib" : "0",
37
38
  "Digest::MD5" : "0",
38
39
  "Digest::SHA" : "0",
40
+ "IO::Compress::Brotli" : "0",
39
41
  "IO::Compress::RawDeflate" : "0",
42
+ "IO::Uncompress::Brotli" : "0",
40
43
  "IO::Uncompress::RawInflate" : "0",
41
44
  "POSIX::strptime" : "0",
42
45
  "Time::HiRes" : "0"
@@ -47,6 +50,5 @@
47
50
  }
48
51
  },
49
52
  "release_status" : "stable",
50
- "version" : "12.62",
51
- "x_serialization_backend" : "JSON::PP version 4.02"
53
+ "version" : "12.67"
52
54
  }
package/bin/META.yml CHANGED
@@ -7,7 +7,7 @@ build_requires:
7
7
  configure_requires:
8
8
  ExtUtils::MakeMaker: 0
9
9
  dynamic_config: 0
10
- generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.133380, CPAN::Meta::Converter version 2.143240, CPAN::Meta::Converter version 2.150010'
10
+ generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.143240, CPAN::Meta::Converter version 2.133380'
11
11
  license: perl
12
12
  meta-spec:
13
13
  url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -19,14 +19,16 @@ no_index:
19
19
  - inc
20
20
  recommends:
21
21
  Archive::Zip: 0
22
+ Compress::Raw::Lzma: 0
22
23
  Compress::Zlib: 0
23
24
  Digest::MD5: 0
24
25
  Digest::SHA: 0
26
+ IO::Compress::Brotli: 0
25
27
  IO::Compress::RawDeflate: 0
28
+ IO::Uncompress::Brotli: 0
26
29
  IO::Uncompress::RawInflate: 0
27
30
  POSIX::strptime: 0
28
31
  Time::HiRes: 0
29
32
  requires:
30
33
  perl: 5.004
31
- version: 12.62
32
- x_serialization_backend: 'JSON::PP version 4.02'
34
+ version: 12.67
package/bin/Makefile.PL CHANGED
@@ -17,8 +17,11 @@ WriteMakefile(
17
17
  " Digest::SHA: 0\n" .
18
18
  " Time::HiRes: 0\n" .
19
19
  " POSIX::strptime: 0\n" .
20
+ " Compress::Raw::Lzma: 0\n" .
20
21
  " IO::Compress::RawDeflate: 0\n" .
21
- " IO::Uncompress::RawInflate: 0\n" ,
22
+ " IO::Uncompress::RawInflate: 0\n" .
23
+ " IO::Compress::Brotli: 0\n" .
24
+ " IO::Uncompress::Brotli: 0\n",
22
25
  # (not worth recommending -- only for column alignment of some languages)
23
26
  # " Unicode::LineBreak: 0\n",
24
27
  # (not worth recommending -- only for Rawzor files)
@@ -33,8 +36,11 @@ WriteMakefile(
33
36
  'Digest::SHA' => 0,
34
37
  'Time::HiRes' => 0,
35
38
  'POSIX::strptime' => 0,
39
+ 'Compress::Raw::Lzma' => 0,
36
40
  'IO::Compress::RawDeflate' => 0,
37
41
  'IO::Uncompress::RawInflate' => 0,
42
+ 'IO::Compress::Brotli' => 0,
43
+ 'IO::Uncompress::Brotli' => 0,
38
44
  # 'Unicode::LineBreak' => 0,
39
45
  # 'IO::Compress::Bzip2' => 0,
40
46
  },
package/bin/README CHANGED
@@ -14,49 +14,49 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RSRC r
18
- 3FR r | DSS r | JP2 r/w | ODS r | RTF r
19
- 3G2 r/w | DV r | JPEG r/w | ODT r | RW2 r/w
20
- 3GP r/w | DVB r/w | JSON r | OFR r | RWL r/w
21
- A r | DVR-MS r | JXL r | OGG r | RWZ r
22
- AA r | DYLIB r | K25 r | OGV r | RM r
23
- AAE r | EIP r | KDC r | ONP r | SEQ r
24
- AAX r/w | EPS r/w | KEY r | OPUS r | SKETCH r
25
- ACR r | EPUB r | LA r | ORF r/w | SO r
26
- AFM r | ERF r/w | LFP r | ORI r/w | SR2 r/w
27
- AI r/w | EXE r | LIF r | OTF r | SRF r
28
- AIFF r | EXIF r/w/c | LNK r | PAC r | SRW r/w
29
- APE r | EXR r | LRV r/w | PAGES r | SVG r
30
- ARQ r/w | EXV r/w/c | M2TS r | PBM r/w | SWF r
31
- ARW r/w | F4A/V r/w | M4A/V r/w | PCD r | THM r/w
32
- ASF r | FFF r/w | MACOS r | PCX r | TIFF r/w
33
- AVI r | FITS r | MAX r | PDB r | TORRENT r
34
- AVIF r/w | FLA r | MEF r/w | PDF r/w | TTC r
35
- AZW r | FLAC r | MIE r/w/c | PEF r/w | TTF r
36
- BMP r | FLIF r/w | MIFF r | PFA r | TXT r
37
- BPG r | FLV r | MKA r | PFB r | VCF r
38
- BTF r | FPF r | MKS r | PFM r | VNT r
39
- CHM r | FPX r | MKV r | PGF r | VRD r/w/c
40
- COS r | GIF r/w | MNG r/w | PGM r/w | VSD r
41
- CR2 r/w | GPR r/w | MOBI r | PLIST r | WAV r
42
- CR3 r/w | GZ r | MODD r | PICT r | WDP r/w
43
- CRM r/w | HDP r/w | MOI r | PMP r | WEBP r/w
44
- CRW r/w | HDR r | MOS r/w | PNG r/w | WEBM r
45
- CS1 r/w | HEIC r/w | MOV r/w | PPM r/w | WMA r
46
- CSV r | HEIF r/w | MP3 r | PPT r | WMV r
47
- CUR r | HTML r | MP4 r/w | PPTX r | WPG r
48
- CZI r | ICC r/w/c | MPC r | PS r/w | WTV r
49
- DCM r | ICO r | MPG r | PSB r/w | WV r
50
- DCP r/w | ICS r | MPO r/w | PSD r/w | X3F r/w
51
- DCR r | IDML r | MQV r/w | PSP r | XCF r
52
- DFONT r | IIQ r/w | MRC r | QTIF r/w | XLS r
53
- DIVX r | IND r/w | MRW r/w | R3D r | XLSX r
54
- DJVU r | INSP r/w | MXF r | RA r | XMP r/w/c
55
- DLL r | INSV r | NEF r/w | RAF r/w | ZIP r
56
- DNG r/w | INX r | NKSC r/w | RAM r |
57
- DOC r | ISO r | NRW r/w | RAR r |
58
- DOCX r | ITC r | NUMBERS r | RAW r/w |
59
- DPX r | J2C r | O r | RIFF r |
17
+ 360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
18
+ 3FR r | DR4 r/w/c | J2C r | O r | RIFF r
19
+ 3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
20
+ 3GP r/w | DV r | JP2 r/w | ODS r | RTF r
21
+ 7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
22
+ A r | DVR-MS r | JSON r | OFR r | RWL r/w
23
+ AA r | DYLIB r | JXL r | OGG r | RWZ r
24
+ AAE r | EIP r | K25 r | OGV r | RM r
25
+ AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
26
+ ACR r | EPUB r | KEY r | OPUS r | SKETCH r
27
+ AFM r | ERF r/w | LA r | ORF r/w | SO r
28
+ AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
29
+ AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
30
+ APE r | EXR r | LNK r | PAC r | SRW r/w
31
+ ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
32
+ ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
33
+ ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
34
+ AVI r | FITS r | MACOS r | PCX r | TIFF r/w
35
+ AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
36
+ AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
37
+ BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
38
+ BPG r | FLV r | MIFF r | PFA r | TXT r
39
+ BTF r | FPF r | MKA r | PFB r | VCF r
40
+ CHM r | FPX r | MKS r | PFM r | VNT r
41
+ COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
42
+ CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
43
+ CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
44
+ CRM r/w | GZ r | MODD r | PICT r | WDP r/w
45
+ CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
46
+ CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
47
+ CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
48
+ CUR r | HEIF r/w | MP3 r | PPT r | WMV r
49
+ CZI r | HTML r | MP4 r/w | PPTX r | WPG r
50
+ DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
51
+ DCP r/w | ICO r | MPG r | PSB r/w | WV r
52
+ DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
53
+ DFONT r | IDML r | MQV r/w | PSP r | XCF r
54
+ DIVX r | IIQ r/w | MRC r | QTIF r/w | XLS r
55
+ DJVU r | IND r/w | MRW r/w | R3D r | XLSX r
56
+ DLL r | INSP r/w | MXF r | RA r | XMP r/w/c
57
+ DNG r/w | INSV r | NEF r/w | RAF r/w | ZIP r
58
+ DOC r | INX r | NKSC r/w | RAM r |
59
+ DOCX r | ISO r | NRW r/w | RAR r |
60
60
 
61
61
  Meta Information
62
62
  ----------------------+----------------------+---------------------
@@ -108,8 +108,8 @@ your home directory, then you would type the following commands in a
108
108
  terminal window to extract and run ExifTool:
109
109
 
110
110
  cd ~/Desktop
111
- gzip -dc Image-ExifTool-12.62.tar.gz | tar -xf -
112
- cd Image-ExifTool-12.62
111
+ gzip -dc Image-ExifTool-12.67.tar.gz | tar -xf -
112
+ cd Image-ExifTool-12.67
113
113
  ./exiftool t/images/ExifTool.jpg
114
114
 
115
115
  Note: These commands extract meta information from one of the test images.
@@ -158,8 +158,11 @@ for calculating digest values and providing other features listed below:
158
158
  Win32::API (for proper handling of Windows file times)
159
159
  Win32::FindFile (for Windows Unicode directory support, app only)
160
160
  Win32API::File (for Windows Unicode file names and file times)
161
+ Compress::Raw::Lzma (for reading encoded 7z files)
161
162
  IO::Compress::RawDeflate (for writing FLIF images)
162
163
  IO::Uncompress::RawInflate (for reading FLIF images)
164
+ IO::Compress::Brotli (for writing compressed JXL metadata)
165
+ IO::Uncompress::Brotli (for reading compressed JXL metadata)
163
166
 
164
167
  COPYRIGHT AND LICENSE
165
168
 
@@ -202,10 +205,11 @@ distribution package:
202
205
  fotoware.config - Definitions for writing Fotoware XMP tags
203
206
  frameCount.config - Extract FrameCount from MP4 videos
204
207
  gps2utm.config - Generate UTM coordinate tags from GPS info
205
- gpsdatetime.config - Make GPSDateTime from CreateDate+SampleTime
208
+ guano.config - Decode individual tags from Guano metadata
206
209
  nksc.config - Decode tags in Nikon ViewNX NKSC files
207
210
  photoshop_paths.config - For extracting or copying Photoshop paths
208
211
  picasa_faces.config - Convert from Picasa to MWG/MP face regions
212
+ pix4d.config - Definitions for writing Pix4D XMP tags
209
213
  rotate_regions.config - Rotate MWG and MP region tags
210
214
  tiff_version.config - Determine the version of a TIFF file
211
215
  time_zone.config - Calculate time zone from EXIF tags
@@ -0,0 +1,161 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: Guano.config
3
+ #
4
+ # Description: User-defined Composite tag definitions to extract individual entries
5
+ # from the RIFF:Guano text block.
6
+ #
7
+ # Requires exiftool version 12.63+
8
+ #
9
+ # See GUANO - Grand Unified Acoustic Notation Ontology
10
+ # https://github.com/riggsd/guano-spec/blob/master/guano_specification.md
11
+ #
12
+ # The code itself is simply a regex match. If other entries are needed,
13
+ # then all that needs to be done is to copy/paste one of the blocks, change
14
+ # the name and edit the regex
15
+ #
16
+ # Examples:
17
+ # This will list the Make and Model from the Guano text block, if they exist
18
+ # exiftool -config Guano.config -GuanoModel -GuanoMake /path/to/files/
19
+ #
20
+ # Lists all the Guano entries in the Guano text block
21
+ # exiftool -config Guano.config -Guano* /path/to/files/
22
+ #
23
+ # Revisions: 2023/06/09 - Bryan K. Williams (aka StarGeek) Created
24
+ #------------------------------------------------------------------------------
25
+
26
+ %Image::ExifTool::UserDefined = (
27
+ 'Image::ExifTool::Composite' => {
28
+ GuanoVersion => {
29
+ Require => 'Guano',
30
+ ValueConv => '$val =~ /GUANO\|Version:\s+(.*)/m ? $1 : undef',
31
+ },
32
+ GuanoMake => {
33
+ Require => 'Guano',
34
+ ValueConv => '$val =~ /Make:\s+(.*)/m ? $1 : undef',
35
+ },
36
+ GuanoModel => {
37
+ Require => 'Guano',
38
+ ValueConv => '$val =~ /Model:\s+(.*)/m ? $1 : undef',
39
+ },
40
+ GuanoFirmwareVersion => {
41
+ Require => 'Guano',
42
+ ValueConv => '$val =~ /Firmware Version:\s+(.*)/m ? $1 : undef',
43
+ },
44
+ GuanoSerial => {
45
+ Require => 'Guano',
46
+ ValueConv => '$val =~ /Serial:\s+(.*)/m ? $1 : undef',
47
+ },
48
+ GuanoTimestamp => {
49
+ Require => 'Guano',
50
+ Groups => { 2 => 'Time' },
51
+ ValueConv => '$val =~ /Timestamp:\s+(.*)/m ? $1 : undef',
52
+ PrintConv => '$self->ConvertDateTime($val)',
53
+ },
54
+ GuanoLocPosition => {
55
+ Require => 'Guano',
56
+ Groups => { 2 => 'Location' },
57
+ ValueConv => '$val =~ /Loc Position:\s+(.*)/m ? $1 : undef',
58
+ PrintConv => q{
59
+ require Image::ExifTool::GPS;
60
+ my @v = split ' ', $val;
61
+ return Image::ExifTool::GPS::ToDMS($self, $v[0], 1, "N") . ', ' .
62
+ Image::ExifTool::GPS::ToDMS($self, $v[1], 1, "E");
63
+ },
64
+ },
65
+ GuanoLocElevation => {
66
+ Require => 'Guano',
67
+ Groups => { 2 => 'Location' },
68
+ ValueConv => '$val =~ /Loc Elevation:\s+(.*)/m ? $1 : undef',
69
+ },
70
+ GuanoTemperatureInt => {
71
+ Require => 'Guano',
72
+ ValueConv => '$val =~ /Temperature Int:\s+(.*)/m ? $1 : undef',
73
+ },
74
+ GuanoFilterHP => {
75
+ Require => 'Guano',
76
+ ValueConv => '$val =~ /^Filter HP:\s+(.*)/m ? $1 : undef',
77
+ },
78
+ GuanoAnabatBatteryVoltage => {
79
+ Require => 'Guano',
80
+ ValueConv => '$val =~ /Anabat\|Battery voltage:\s+(.*)/m ? $1 : undef',
81
+ },
82
+ GuanoAnabatMicrophone => {
83
+ Require => 'Guano',
84
+ ValueConv => '$val =~ /Anabat\|Microphone:\s+(.*)/m ? $1 : undef',
85
+ },
86
+ GuanoAnabatActivation => {
87
+ Require => 'Guano',
88
+ ValueConv => '$val =~ /Anabat\|Activation:\s+(.*)/m ? $1 : undef',
89
+ },
90
+ GuanoAnabatZcSensitivity => {
91
+ Require => 'Guano',
92
+ ValueConv => '$val =~ /Anabat\|Zc Sensitivity:\s+(.*)/m ? $1 : undef',
93
+ },
94
+ GuanoAnabatTriggerMinFreq => {
95
+ Require => 'Guano',
96
+ ValueConv => '$val =~ /Anabat\|Trigger min freq:\s+(.*)/m ? $1 : undef',
97
+ },
98
+ GuanoAnabatTriggerMaxFreq => {
99
+ Require => 'Guano',
100
+ ValueConv => '$val =~ /Anabat\|Trigger max freq:\s+(.*)/m ? $1 : undef',
101
+ },
102
+ GuanoAnabatMinEvent => {
103
+ Require => 'Guano',
104
+ ValueConv => '$val =~ /Anabat\|Min event:\s+(.*)/m ? $1 : undef',
105
+ },
106
+ GuanoAnabatTriggerWindow => {
107
+ Require => 'Guano',
108
+ ValueConv => '$val =~ /Anabat\|Trigger Window:\s+(.*)/m ? $1 : undef',
109
+ },
110
+ GuanoAnabatMaximumFileDuration => {
111
+ Require => 'Guano',
112
+ ValueConv => '$val =~ /Anabat\|Maximum File Duration:\s+(.*)/m ? $1 : undef',
113
+ },
114
+ GuanoSBVersion => {
115
+ Require => 'Guano',
116
+ ValueConv => '$val =~ /SB\|Version:\s+(.*)/m ? $1 : undef',
117
+ },
118
+ GuanoSBSpeciesAutoID => {
119
+ Require => 'Guano',
120
+ ValueConv => '$val =~ /SB\|Species Auto ID:\s+(.*)/m ? $1 : undef',
121
+ },
122
+ GuanoSpeciesAutoID => {
123
+ Require => 'Guano',
124
+ ValueConv => '$val =~ /Species Auto ID:\s+(.*)/m ? $1 : undef',
125
+ },
126
+ GuanoSpeciesManualID => {
127
+ Require => 'Guano',
128
+ ValueConv => '$val =~ /Species Manual ID:\s+(.*)/m ? $1 : undef',
129
+ },
130
+ GuanoSampleRate => {
131
+ Require => 'Guano',
132
+ ValueConv => '$val =~ /Samplerate:\s+(.*)/m ? $1 : undef',
133
+ },
134
+ GuanoLength => {
135
+ Require => 'Guano',
136
+ ValueConv => '$val =~ /Length:\s+(.*)/m ? $1 : undef',
137
+ },
138
+ GuanoTE => {
139
+ Require => 'Guano',
140
+ ValueConv => '$val =~ /TE:\s+(.*)/m ? $1 : undef',
141
+ },
142
+ GuanoSBFilterHP => {
143
+ Require => 'Guano',
144
+ ValueConv => '$val =~ /SB\|Filter HP:\s+(.*)/m ? $1 : undef',
145
+ },
146
+ GuanoNote => {
147
+ Require => 'Guano',
148
+ ValueConv => '$val =~ /Note:\s+(.*)/m ? $1 : undef',
149
+ },
150
+ GuanoSBRegion => {
151
+ Require => 'Guano',
152
+ ValueConv => '$val =~ /SB\|Region:\s+(.*)/m ? $1 : undef',
153
+ },
154
+ GuanoSBClassifier => {
155
+ Require => 'Guano',
156
+ ValueConv => '$val =~ /SB\|Classifier:\s+(.*)/m ? $1 : undef',
157
+ },
158
+ },
159
+ );
160
+ #------------------------------------------------------------------------------
161
+ 1; #end