exiftool_vendored 12.70.0 → 12.73.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 +53 -1
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +11 -11
- data/bin/exiftool +47 -27
- data/bin/lib/File/RandomAccess.pm +1 -1
- data/bin/lib/File/RandomAccess.pod +2 -2
- data/bin/lib/Image/ExifTool/AAC.pm +177 -0
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/APE.pm +1 -1
- data/bin/lib/Image/ExifTool/APP12.pm +1 -1
- data/bin/lib/Image/ExifTool/ASF.pm +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +1 -1
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BPG.pm +1 -1
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -3
- data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +22 -7
- data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +1 -1
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +1 -1
- data/bin/lib/Image/ExifTool/DNG.pm +1 -1
- data/bin/lib/Image/ExifTool/DPX.pm +1 -1
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +31 -10
- data/bin/lib/Image/ExifTool/FITS.pm +1 -1
- data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +60 -7
- data/bin/lib/Image/ExifTool/Font.pm +1 -1
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +6 -3
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- data/bin/lib/Image/ExifTool/GPS.pm +1 -1
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- data/bin/lib/Image/ExifTool/GoPro.pm +17 -2
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ICO.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +8 -5
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
- data/bin/lib/Image/ExifTool/ISO.pm +1 -1
- data/bin/lib/Image/ExifTool/ITC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +1 -1
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +5 -2
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +5 -2
- data/bin/lib/Image/ExifTool/JVC.pm +3 -3
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +17 -6
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/LIF.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +4 -4
- data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +4 -5
- data/bin/lib/Image/ExifTool/Lang/it.pm +3 -3
- data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- data/bin/lib/Image/ExifTool/Leaf.pm +3 -3
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +22 -17
- data/bin/lib/Image/ExifTool/MIE.pm +3 -3
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/MISB.pm +1 -1
- data/bin/lib/Image/ExifTool/MNG.pm +1 -1
- data/bin/lib/Image/ExifTool/MOI.pm +1 -1
- data/bin/lib/Image/ExifTool/MPC.pm +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MPF.pm +1 -1
- data/bin/lib/Image/ExifTool/MRC.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +166 -97
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/Other.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +1 -1
- data/bin/lib/Image/ExifTool/PDF.pm +1 -1
- data/bin/lib/Image/ExifTool/PGF.pm +1 -1
- data/bin/lib/Image/ExifTool/PICT.pm +1 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +24 -2
- data/bin/lib/Image/ExifTool/PPM.pm +1 -1
- data/bin/lib/Image/ExifTool/PSP.pm +1 -1
- data/bin/lib/Image/ExifTool/Palm.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +27 -2
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +46 -16
- data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -4
- data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +50 -11
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +148 -12
- data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +1 -1
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- data/bin/lib/Image/ExifTool/Red.pm +1 -1
- data/bin/lib/Image/ExifTool/Ricoh.pm +111 -3
- data/bin/lib/Image/ExifTool/Samsung.pm +4 -3
- data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +85 -6
- data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- data/bin/lib/Image/ExifTool/Stim.pm +1 -1
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +4878 -4830
- data/bin/lib/Image/ExifTool/TagNames.pod +11518 -11379
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +1 -1
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WPG.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +20 -5
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +4 -1
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +5 -3
- data/bin/lib/Image/ExifTool/Writer.pl +87 -15
- data/bin/lib/Image/ExifTool/XISF.pm +1 -1
- data/bin/lib/Image/ExifTool/XMP.pm +19 -3
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +35 -8
- data/bin/lib/Image/ExifTool.pod +29 -16
- data/bin/perl-Image-ExifTool.spec +9 -9
- 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: 6e4bebb394e40270c3e7794a1c5e269d227a7e41ac88fe231d5b8e04433eb88b
|
4
|
+
data.tar.gz: 781a0260d3d75e23d60b1350d342b7e46af136b39471c673883e2d11dc71152f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d294cedfc656675286e39e782d484fcf2b659e85cc8e445dc17999ca3c656a2f6dd2e241e3b23b1da9cda02ab8c15a064bc0c40d20439c853ccd3e5f6214523
|
7
|
+
data.tar.gz: ce99e91f91e27be93453645e19d3ec3f3206eb7f06b1d610fadd5f0cc4401e1376a8831f3756ceb3d7896651a9ebbbc4bf1f04d6fc09acce47a78191133e0ff3
|
data/bin/Changes
CHANGED
@@ -7,7 +7,59 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 12.70. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
-
|
10
|
+
Jan. 10, 2024 - Version 12.73
|
11
|
+
|
12
|
+
- Added write support for Leica XMP-xmpDSA tags
|
13
|
+
- Added read support for timed GPS from Yada RoadCam Pro 4K dashcam videos
|
14
|
+
- Added read support for PNG cpIp chunk
|
15
|
+
- Added range checks on lat/long values when writing QuickTime:GPSCoordinates
|
16
|
+
- Decode a number of new values for Ricoh GR III tags
|
17
|
+
- Decode a new Leica tag
|
18
|
+
- Improved handling of Brotli compression errors
|
19
|
+
- Enhanced API NoWarning option to also apply to app "Warning:" outputs
|
20
|
+
- Identify PNG Plus files
|
21
|
+
- Changed name of Pentax ISOAutoParameters to ISOAutoMinSpeed and improved
|
22
|
+
decoding
|
23
|
+
- Fixed writing of date/time tags in XMP-xmpMM:Pantry structure
|
24
|
+
- API Changes:
|
25
|
+
- Added LimitLongValues option
|
26
|
+
|
27
|
+
Dec. 29, 2023 - Version 12.72
|
28
|
+
|
29
|
+
- Added read support for AAC audio files
|
30
|
+
- Added a new QuickTime Keys Android tag
|
31
|
+
- Added a number of new values for some Ricoh GR III tags
|
32
|
+
- Decode timed metadata from Intsa360 Ace Pro MP4 videos
|
33
|
+
- Decode GPSDateTime milliseconds in timed Insta360 metadata
|
34
|
+
- Decode timed metadata from INNOV K5 TS videos
|
35
|
+
- Decode a number of new GoPro timed-metadata tags
|
36
|
+
- Decode a few new Xiaomi EXIF tags
|
37
|
+
- Fixed writing of JPG/ARW images from some newer Sony models to preserve
|
38
|
+
HiddenData
|
39
|
+
|
40
|
+
Dec. 21, 2023 - Version 12.71
|
41
|
+
|
42
|
+
- Added a warning if there was an error reading an alternate file with the
|
43
|
+
-fileNUM option
|
44
|
+
- Added the ability to write QuickTime Keys:Encoder
|
45
|
+
- Added a few new Canon LensType values (thanks Norbert Wasser)
|
46
|
+
- Added a new, obscure EXIF tag (thanks Neal Krawetz)
|
47
|
+
- Decode real-time metadata from Ricoh Theta videos
|
48
|
+
- Decode SpecularWhiteLevel for more Canon models (github #232)
|
49
|
+
- Decode Canon DualPixelRaw tag (thanks John Moyer)
|
50
|
+
- Decode a few new Nikon tags (thanks Warren Hatch)
|
51
|
+
- Decode more FujiFilm M-RAW tags (thanks Greybeard)
|
52
|
+
- Improved generation of tag names for some JSON tag ID's containing colons
|
53
|
+
- Fixed "Undefined subroutine" error when writing makernotes as a block
|
54
|
+
- Fixed missing ID in family 7 group name for ID3 tags which are not valid for
|
55
|
+
the specified ID3 version
|
56
|
+
- Fixed bug where some tags from alternate files (with the -fileNUM option)
|
57
|
+
could show up as "not defined" when used in expressions even though they did
|
58
|
+
exist
|
59
|
+
- API Changes:
|
60
|
+
- Added NoMandatory option
|
61
|
+
|
62
|
+
Nov. 19, 2023 - Version 12.70 (production release) - "20th Anniversary"
|
11
63
|
|
12
64
|
- This marks the 20th anniversary of the initial ExifTool release!
|
13
65
|
- Added ability to read/delete C2PA CAI JUMBF metadata from TIFF-based images
|
data/bin/MANIFEST
CHANGED
@@ -41,6 +41,7 @@ fmt_files/kml_track.fmt
|
|
41
41
|
html/ExifTool.html
|
42
42
|
html/MIE1.1-20070121.pdf
|
43
43
|
html/Shift.html
|
44
|
+
html/TagNames/AAC.html
|
44
45
|
html/TagNames/AFCP.html
|
45
46
|
html/TagNames/AIFF.html
|
46
47
|
html/TagNames/APE.html
|
@@ -214,6 +215,7 @@ lib/File/RandomAccess.pod
|
|
214
215
|
lib/Image/ExifTool.pm
|
215
216
|
lib/Image/ExifTool.pod
|
216
217
|
lib/Image/ExifTool/7Z.pm
|
218
|
+
lib/Image/ExifTool/AAC.pm
|
217
219
|
lib/Image/ExifTool/AES.pm
|
218
220
|
lib/Image/ExifTool/AFCP.pm
|
219
221
|
lib/Image/ExifTool/AIFF.pm
|
@@ -441,6 +443,8 @@ lib/Image/ExifTool/ZIP.pm
|
|
441
443
|
lib/Image/ExifTool/ZISRAW.pm
|
442
444
|
lib/Image/ExifTool/iWork.pm
|
443
445
|
perl-Image-ExifTool.spec
|
446
|
+
t/AAC.t
|
447
|
+
t/AAC_2.out
|
444
448
|
t/AFCP.t
|
445
449
|
t/AFCP_2.out
|
446
450
|
t/AFCP_3.out
|
@@ -979,6 +983,7 @@ t/ZIP_7.out
|
|
979
983
|
t/ZIP_8.out
|
980
984
|
t/ZISRAW.t
|
981
985
|
t/ZISRAW_2.out
|
986
|
+
t/images/AAC.aac
|
982
987
|
t/images/AFCP.jpg
|
983
988
|
t/images/AIFF.aif
|
984
989
|
t/images/APE.ape
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -14,13 +14,14 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
14
14
|
|
15
15
|
File Types
|
16
16
|
------------+-------------+-------------+-------------+------------
|
17
|
-
360 r/w |
|
18
|
-
3FR r |
|
19
|
-
3G2 r/w |
|
20
|
-
3GP r/w |
|
21
|
-
7Z r |
|
22
|
-
A r |
|
23
|
-
AA r |
|
17
|
+
360 r/w | DOCX r | ISO r | NRW r/w | RAR r
|
18
|
+
3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
|
19
|
+
3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
|
20
|
+
3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
|
21
|
+
7Z r | DV r | JP2 r/w | ODS r | RTF r
|
22
|
+
A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
|
23
|
+
AA r | DVR-MS r | JSON r | OFR r | RWL r/w
|
24
|
+
AAC r | DYLIB r | JXL r | OGG r | RWZ r
|
24
25
|
AAE r | EIP r | K25 r | OGV r | RM r
|
25
26
|
AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
|
26
27
|
ACR r | EPUB r | KEY r | OPUS r | SKETCH r
|
@@ -56,7 +57,6 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
56
57
|
DLL r | INSP r/w | MXF r | RA r | XLSX r
|
57
58
|
DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
|
58
59
|
DOC r | INX r | NKSC r/w | RAM r | ZIP 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.
|
112
|
-
cd Image-ExifTool-12.
|
111
|
+
gzip -dc Image-ExifTool-12.73.tar.gz | tar -xf -
|
112
|
+
cd Image-ExifTool-12.73
|
113
113
|
./exiftool t/images/ExifTool.jpg
|
114
114
|
|
115
115
|
Note: These commands extract meta information from one of the test images.
|
@@ -166,7 +166,7 @@ for calculating digest values and providing other features listed below:
|
|
166
166
|
|
167
167
|
COPYRIGHT AND LICENSE
|
168
168
|
|
169
|
-
Copyright 2003-
|
169
|
+
Copyright 2003-2024, Phil Harvey
|
170
170
|
|
171
171
|
This is free software; you can redistribute it and/or modify it under the
|
172
172
|
same terms as Perl itself.
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '12.
|
14
|
+
my $version = '12.73';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
my $exePath;
|
@@ -58,6 +58,7 @@ sub ConvertBinary($);
|
|
58
58
|
sub IsEqual($$);
|
59
59
|
sub Infile($;$);
|
60
60
|
sub AddSetTagsFile($;$);
|
61
|
+
sub Warning($$);
|
61
62
|
sub DoSetFromFile($$$);
|
62
63
|
sub CleanFilename($);
|
63
64
|
sub SetWindowTitle($);
|
@@ -1642,7 +1643,10 @@ if (@newValues) {
|
|
1642
1643
|
if ($tag =~ /^(All)?TagsFromFile$/i) {
|
1643
1644
|
defined $newVal or Error("Need file name for -tagsFromFile\n"), next Command;
|
1644
1645
|
++$isWriting;
|
1645
|
-
if ($newVal eq '@' or not defined FilenameSPrintf($newVal)
|
1646
|
+
if ($newVal eq '@' or not defined FilenameSPrintf($newVal) or
|
1647
|
+
# can't set tags yet if we are using tags from other files with the -fileNUM option
|
1648
|
+
grep /\bfile\d+:/i, @{$setTags{$newVal}})
|
1649
|
+
{
|
1646
1650
|
push @dynamicFiles, $newVal;
|
1647
1651
|
next; # set tags from dynamic file later
|
1648
1652
|
}
|
@@ -1702,7 +1706,7 @@ if (@newValues) {
|
|
1702
1706
|
my ($rtn, $wrn) = $mt->SetNewValue($tag, $newVal, %opts);
|
1703
1707
|
$needSave = 1;
|
1704
1708
|
++$isWriting if $rtn;
|
1705
|
-
$wrn and
|
1709
|
+
$wrn and Warning($mt, $wrn);
|
1706
1710
|
}
|
1707
1711
|
# exclude specified tags
|
1708
1712
|
foreach (@exclude) {
|
@@ -2715,7 +2719,7 @@ TAG: foreach $tag (@foundTags) {
|
|
2715
2719
|
$padLen -= $gcstr->columns;
|
2716
2720
|
} else {
|
2717
2721
|
$padLen -= length Encode::decode_utf8($desc);
|
2718
|
-
|
2722
|
+
Warning($et, 'Unicode::GCString problem. Columns may be misaligned');
|
2719
2723
|
$fixLen = 1;
|
2720
2724
|
}
|
2721
2725
|
}
|
@@ -2985,7 +2989,7 @@ sub SetImageInfo($$$)
|
|
2985
2989
|
my $newFileName = $et->GetNewValues('FileName');
|
2986
2990
|
my $newDir = $et->GetNewValues('Directory');
|
2987
2991
|
if (defined $newFileName and not length $newFileName) {
|
2988
|
-
|
2992
|
+
Warning($et,"New file name is empty - $infile");
|
2989
2993
|
undef $newFileName;
|
2990
2994
|
}
|
2991
2995
|
if (defined $testName) {
|
@@ -3644,9 +3648,22 @@ sub Infile($;$)
|
|
3644
3648
|
return $file;
|
3645
3649
|
}
|
3646
3650
|
|
3651
|
+
#------------------------------------------------------------------------------
|
3652
|
+
# Issue warning to stderr, adding leading "Warning: " and trailing newline
|
3653
|
+
# if the warning isn't suppressed by the API NoWarning option
|
3654
|
+
# Inputs: 0) ExifTool ref, 1) warning string
|
3655
|
+
sub Warning($$)
|
3656
|
+
{
|
3657
|
+
my ($et, $str) = @_;
|
3658
|
+
my $noWarn = $et->Options('NoWarning');
|
3659
|
+
if (not defined $noWarn or not eval { $str =~ /$noWarn/ }) {
|
3660
|
+
Warn "Warning: $str\n";
|
3661
|
+
}
|
3662
|
+
}
|
3663
|
+
|
3647
3664
|
#------------------------------------------------------------------------------
|
3648
3665
|
# Set new values from file
|
3649
|
-
# Inputs: 0)
|
3666
|
+
# Inputs: 0) ExifTool ref, 1) filename, 2) reference to list of values to set
|
3650
3667
|
# Returns: 0 on error (and increments $countBadWr)
|
3651
3668
|
sub DoSetFromFile($$$)
|
3652
3669
|
{
|
@@ -3659,19 +3676,18 @@ sub DoSetFromFile($$$)
|
|
3659
3676
|
# delete all error and warning tags
|
3660
3677
|
my @warns = grep /^(Error|Warning)\b/, keys %$info;
|
3661
3678
|
$numSet -= scalar(@warns);
|
3662
|
-
# issue a warning for the main error
|
3663
|
-
|
3664
|
-
|
3665
|
-
|
3666
|
-
|
3667
|
-
}
|
3679
|
+
# issue a warning only for the main error
|
3680
|
+
my $err = $$info{Error};
|
3681
|
+
delete $$info{$_} foreach @warns;
|
3682
|
+
my $noWarn = $et->Options('NoWarning');
|
3683
|
+
$$info{Warning} = $err unless defined $noWarn and eval { $err =~ /$noWarn/ };
|
3668
3684
|
} elsif ($$info{Warning}) {
|
3669
3685
|
my $warns = 1;
|
3670
3686
|
++$warns while $$info{"Warning ($warns)"};
|
3671
3687
|
$numSet -= $warns;
|
3672
3688
|
}
|
3673
3689
|
PrintErrors($et, $info, $file) and EFile($file), ++$countBadWr, return 0;
|
3674
|
-
|
3690
|
+
Warning($et,"No writable tags set from $file") unless $numSet;
|
3675
3691
|
return 1;
|
3676
3692
|
}
|
3677
3693
|
|
@@ -3817,7 +3833,7 @@ sub ScanDir($$;$)
|
|
3817
3833
|
if ($evalWarning) {
|
3818
3834
|
chomp $evalWarning;
|
3819
3835
|
$evalWarning =~ s/ at .*//s;
|
3820
|
-
|
3836
|
+
Warning($et,"[Win32::FindFile] $evalWarning - $dir");
|
3821
3837
|
$winSurrogate = 1 if $evalWarning =~ /surrogate/;
|
3822
3838
|
} else {
|
3823
3839
|
$et->Options(CharsetFileName => 'UTF8'); # now using UTF8
|
@@ -4628,13 +4644,14 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
4628
4644
|
|
4629
4645
|
File Types
|
4630
4646
|
------------+-------------+-------------+-------------+------------
|
4631
|
-
360 r/w |
|
4632
|
-
3FR r |
|
4633
|
-
3G2 r/w |
|
4634
|
-
3GP r/w |
|
4635
|
-
7Z r |
|
4636
|
-
A r |
|
4637
|
-
AA r |
|
4647
|
+
360 r/w | DOCX r | ISO r | NRW r/w | RAR r
|
4648
|
+
3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
|
4649
|
+
3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
|
4650
|
+
3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
|
4651
|
+
7Z r | DV r | JP2 r/w | ODS r | RTF r
|
4652
|
+
A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
|
4653
|
+
AA r | DVR-MS r | JSON r | OFR r | RWL r/w
|
4654
|
+
AAC r | DYLIB r | JXL r | OGG r | RWZ r
|
4638
4655
|
AAE r | EIP r | K25 r | OGV r | RM r
|
4639
4656
|
AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
|
4640
4657
|
ACR r | EPUB r | KEY r | OPUS r | SKETCH r
|
@@ -4670,7 +4687,6 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
4670
4687
|
DLL r | INSP r/w | MXF r | RA r | XLSX r
|
4671
4688
|
DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
|
4672
4689
|
DOC r | INX r | NKSC r/w | RAM r | ZIP r
|
4673
|
-
DOCX r | ISO r | NRW r/w | RAR r |
|
4674
4690
|
|
4675
4691
|
Meta Information
|
4676
4692
|
----------------------+----------------------+---------------------
|
@@ -5440,7 +5456,7 @@ tags specified for the specific SourceFile processed. The imported JSON
|
|
5440
5456
|
file must have the same format as the exported JSON files with the exception
|
5441
5457
|
that options exporting JSON objects instead of simple values are not
|
5442
5458
|
compatible with the import file format (ie. export with B<-D>, B<-H>, B<-l>,
|
5443
|
-
or B<-T> is not
|
5459
|
+
or B<-T> is not compatible, and use B<-G> instead of B<-g>). Additionally,
|
5444
5460
|
tag names in the input JSON file may be suffixed with a C<#> to disable
|
5445
5461
|
print conversion.
|
5446
5462
|
|
@@ -5582,7 +5598,7 @@ with this command:
|
|
5582
5598
|
|
5583
5599
|
produces output like this:
|
5584
5600
|
|
5585
|
-
-- Generated by ExifTool 12.
|
5601
|
+
-- Generated by ExifTool 12.73 --
|
5586
5602
|
File: a.jpg - 2003:10:31 15:44:19
|
5587
5603
|
(f/5.6, 1/60s, ISO 100)
|
5588
5604
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -6605,8 +6621,12 @@ Rights from the original file could look like this:
|
|
6605
6621
|
|
6606
6622
|
exiftool -file1 '$originalfilename' '-rights<file1:rights' edited.jpg
|
6607
6623
|
|
6608
|
-
|
6609
|
-
|
6624
|
+
Subtle note: If a B<-tagsFromFile> option is used, tags in the I<ALTFILE>
|
6625
|
+
argument come from the I<SRCFILE> that applies to the first argument
|
6626
|
+
accessing tags from the corresponding C<FileNUM> group.
|
6627
|
+
|
6628
|
+
User-defined Composite tags may access tags from alternate files using the
|
6629
|
+
appropriate (case-sensitive) family 8 group name.
|
6610
6630
|
|
6611
6631
|
=item B<-list_dir>
|
6612
6632
|
|
@@ -7447,7 +7467,7 @@ the commands if B<-execute> was used).
|
|
7447
7467
|
|
7448
7468
|
=head1 AUTHOR
|
7449
7469
|
|
7450
|
-
Copyright 2003-
|
7470
|
+
Copyright 2003-2024, Phil Harvey
|
7451
7471
|
|
7452
7472
|
This is free software; you can redistribute it and/or modify it under the
|
7453
7473
|
same terms as Perl itself.
|
@@ -25,7 +25,7 @@
|
|
25
25
|
#
|
26
26
|
# May also be used for string i/o (just pass a scalar reference)
|
27
27
|
#
|
28
|
-
# Legal: Copyright (c) 2003-
|
28
|
+
# Legal: Copyright (c) 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
29
29
|
# This library is free software; you can redistribute it and/or
|
30
30
|
# modify it under the same terms as Perl itself.
|
31
31
|
#------------------------------------------------------------------------------
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# Description: Buffer to support random access reading of sequential file
|
5
5
|
#
|
6
|
-
# Legal: Copyright (c) 2003-
|
6
|
+
# Legal: Copyright (c) 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
7
7
|
# This library is free software; you can redistribute it and/or
|
8
8
|
# modify it under the same terms as Perl itself.
|
9
9
|
#------------------------------------------------------------------------------
|
@@ -236,7 +236,7 @@ the end of file is not allowed.
|
|
236
236
|
|
237
237
|
=head1 AUTHOR
|
238
238
|
|
239
|
-
Copyright 2003-
|
239
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
240
240
|
|
241
241
|
This library is free software; you can redistribute it and/or modify it
|
242
242
|
under the same terms as Perl itself.
|
@@ -0,0 +1,177 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# File: AAC.pm
|
3
|
+
#
|
4
|
+
# Description: Read AAC audio files
|
5
|
+
#
|
6
|
+
# Revisions: 2023-12-29 - P. Harvey Created
|
7
|
+
#------------------------------------------------------------------------------
|
8
|
+
|
9
|
+
package Image::ExifTool::AAC;
|
10
|
+
|
11
|
+
use strict;
|
12
|
+
use vars qw($VERSION);
|
13
|
+
use Image::ExifTool qw(:DataAccess :Utils);
|
14
|
+
use Image::ExifTool::FLAC;
|
15
|
+
|
16
|
+
$VERSION = '1.00';
|
17
|
+
|
18
|
+
my %convSampleRate = (
|
19
|
+
0 => 96000, 7 => 22050,
|
20
|
+
1 => 88200, 8 => 16000,
|
21
|
+
2 => 64000, 9 => 12000,
|
22
|
+
3 => 48000, 10 => 11025,
|
23
|
+
4 => 44100, 11 => 8000,
|
24
|
+
5 => 32000, 12 => 7350,
|
25
|
+
6 => 24000,
|
26
|
+
);
|
27
|
+
|
28
|
+
%Image::ExifTool::AAC::Main = (
|
29
|
+
PROCESS_PROC => \&Image::ExifTool::FLAC::ProcessBitStream,
|
30
|
+
GROUPS => { 2 => 'Audio' },
|
31
|
+
NOTES => 'Tags extracted from Advanced Audio Coding (AAC) files.',
|
32
|
+
# Bit000-011 - sync word (all 1's)
|
33
|
+
# Bit012 - ID (seems to be always 0)
|
34
|
+
# Bit013-014 - layer (00)
|
35
|
+
# Bit015 - CRC absent (0=crc exists, 1=no crc)
|
36
|
+
'Bit016-017' => {
|
37
|
+
Name => 'ProfileType',
|
38
|
+
PrintConv => {
|
39
|
+
0 => 'Main',
|
40
|
+
1 => 'Low Complexity',
|
41
|
+
2 => 'Scalable Sampling Rate',
|
42
|
+
},
|
43
|
+
},
|
44
|
+
'Bit018-021' => {
|
45
|
+
Name => 'SampleRate',
|
46
|
+
ValueConv => \%convSampleRate,
|
47
|
+
},
|
48
|
+
# Bit022 - private
|
49
|
+
'Bit023-025' => {
|
50
|
+
Name => 'Channels',
|
51
|
+
PrintConv => {
|
52
|
+
0 => '?',
|
53
|
+
1 => 1,
|
54
|
+
2 => 2,
|
55
|
+
3 => 3,
|
56
|
+
4 => 4,
|
57
|
+
5 => 5,
|
58
|
+
6 => '5+1',
|
59
|
+
7 => '7+1',
|
60
|
+
},
|
61
|
+
},
|
62
|
+
# Bit026 - original/copy
|
63
|
+
# Bit027 - home
|
64
|
+
# Bit028 - copyright ID
|
65
|
+
# Bit029 - copyright start
|
66
|
+
# Bit030-042 - FrameLength
|
67
|
+
# Bit043-053 - buffer fullness
|
68
|
+
# Bit054-055 - BlocksInFrame (minus 1)
|
69
|
+
# Note: Bitrate for frame = FrameLength * 8 * SampleRate / ((BlocksInFrame+1) * 1024)
|
70
|
+
# - but all frames must be scanned to calculate average bitrate
|
71
|
+
Encoder => {
|
72
|
+
Name => 'Encoder',
|
73
|
+
Notes => 'taken from filler payload of first frame',
|
74
|
+
},
|
75
|
+
);
|
76
|
+
|
77
|
+
#------------------------------------------------------------------------------
|
78
|
+
# Read information from an AAC file
|
79
|
+
# Inputs: 0) ExifTool object reference, 1) Directory information reference
|
80
|
+
# Returns: 1 on success, 0 if this wasn't a valid AAC file
|
81
|
+
sub ProcessAAC($$)
|
82
|
+
{
|
83
|
+
my ($et, $dirInfo) = @_;
|
84
|
+
my $raf = $$dirInfo{RAF};
|
85
|
+
my ($buff, $buf2);
|
86
|
+
|
87
|
+
# format of frame header (7 bytes):
|
88
|
+
# SSSS SSSS SSSS ILLC PPRR RRpC CCoh csff ffff ffff fffb bbbb bbbb bbNN
|
89
|
+
# 1111 1111 1111 0001 0110 0000 0100 0000 0000 0101 0101 1111 1111 1100 (eg.)
|
90
|
+
# S = sync word o = original/copy
|
91
|
+
# I = ID h = home
|
92
|
+
# L = layer (00) c = copyright ID
|
93
|
+
# C = CRC absent s = copyright start
|
94
|
+
# P = profile object type f = frame length
|
95
|
+
# R = sampling rate index b = buffer fullness
|
96
|
+
# p = private N = number of raw data blocks in frame
|
97
|
+
# C = channel configuration
|
98
|
+
|
99
|
+
$raf->Read($buff, 7) == 7 or return 0;
|
100
|
+
return 0 unless $buff =~ /^\xff[\xf0\xf1]/;
|
101
|
+
my @t = unpack('NnC', $buff);
|
102
|
+
return 0 if (($t[0] >> 16) & 0x03) == 3; # (reserved profile type)
|
103
|
+
return 0 if (($t[0] >> 12) & 0x0f) > 12; # validate sampling frequency index
|
104
|
+
my $len = (($t[0] << 11) & 0x1800) | (($t[1] >> 5) & 0x07ff);
|
105
|
+
return 0 if $len < 7;
|
106
|
+
|
107
|
+
$et->SetFileType();
|
108
|
+
|
109
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::AAC::Main');
|
110
|
+
$et->ProcessDirectory({ DataPt => \$buff }, $tagTablePtr);
|
111
|
+
|
112
|
+
# read the first frame data to check for a filler with the encoder name
|
113
|
+
while ($len > 8 and $raf->Read($buff, $len-7) == $len-7) {
|
114
|
+
my $noCRC = ($t[0] & 0x00010000);
|
115
|
+
my $blocks = ($t[2] & 0x03);
|
116
|
+
my $pos = 0;
|
117
|
+
$pos += 2 + 2 * $blocks unless $noCRC;
|
118
|
+
last if $pos + 2 > length($buff);
|
119
|
+
my $tmp = unpack("x${pos}n", $buff);
|
120
|
+
my $id = $tmp >> 13;
|
121
|
+
# read filler payload
|
122
|
+
if ($id == 6) {
|
123
|
+
my $cnt = ($tmp >> 9) & 0x0f;
|
124
|
+
++$pos;
|
125
|
+
if ($cnt == 15) {
|
126
|
+
$cnt += (($tmp >> 1) & 0xff) - 1;
|
127
|
+
++$pos;
|
128
|
+
}
|
129
|
+
if ($pos + $cnt <= length($buff)) {
|
130
|
+
my $dat = substr($buff, $pos, $cnt);
|
131
|
+
$dat =~ s/^\0+//;
|
132
|
+
$dat =~ s/\0+$//;
|
133
|
+
$et->HandleTag($tagTablePtr, Encoder => $dat) if $dat =~ /^[\x20-\x7e]+$/;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
last;
|
137
|
+
}
|
138
|
+
|
139
|
+
return 1;
|
140
|
+
}
|
141
|
+
|
142
|
+
1; # end
|
143
|
+
|
144
|
+
__END__
|
145
|
+
|
146
|
+
=head1 NAME
|
147
|
+
|
148
|
+
Image::ExifTool::AAC - Read AAC audio files
|
149
|
+
|
150
|
+
=head1 SYNOPSIS
|
151
|
+
|
152
|
+
This module is used by Image::ExifTool
|
153
|
+
|
154
|
+
=head1 DESCRIPTION
|
155
|
+
|
156
|
+
This module contains definitions required by Image::ExifTool to read
|
157
|
+
Advanced Audio Coding (AAC) files.
|
158
|
+
|
159
|
+
=head1 NOTES
|
160
|
+
|
161
|
+
Since ISO charges money for the official AAC specification, this module is
|
162
|
+
based on unofficial sources which may be incomplete, inaccurate or outdated.
|
163
|
+
|
164
|
+
=head1 AUTHOR
|
165
|
+
|
166
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
167
|
+
|
168
|
+
This library is free software; you can redistribute it and/or modify it
|
169
|
+
under the same terms as Perl itself.
|
170
|
+
|
171
|
+
=head1 SEE ALSO
|
172
|
+
|
173
|
+
L<Image::ExifTool::TagNames/AAC Tags>,
|
174
|
+
L<Image::ExifTool(3pm)|Image::ExifTool>
|
175
|
+
|
176
|
+
=cut
|
177
|
+
|
@@ -477,7 +477,7 @@ main purpose of encryption, so this really can't be considered a bug.
|
|
477
477
|
|
478
478
|
=head1 AUTHOR
|
479
479
|
|
480
|
-
Copyright 2003-
|
480
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
481
481
|
|
482
482
|
This library is free software; you can redistribute it and/or modify it
|
483
483
|
under the same terms as Perl itself.
|
@@ -259,7 +259,7 @@ scanning for AFCP information.
|
|
259
259
|
|
260
260
|
=head1 AUTHOR
|
261
261
|
|
262
|
-
Copyright 2003-
|
262
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
263
263
|
|
264
264
|
This library is free software; you can redistribute it and/or modify it
|
265
265
|
under the same terms as Perl itself.
|
@@ -287,7 +287,7 @@ information from AIFF (Audio Interchange File Format) audio files.
|
|
287
287
|
|
288
288
|
=head1 AUTHOR
|
289
289
|
|
290
|
-
Copyright 2003-
|
290
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
291
291
|
|
292
292
|
This library is free software; you can redistribute it and/or modify it
|
293
293
|
under the same terms as Perl itself.
|
@@ -263,7 +263,7 @@ Currently doesn't parse MAC header unless it is at the start of the file.
|
|
263
263
|
|
264
264
|
=head1 AUTHOR
|
265
265
|
|
266
|
-
Copyright 2003-
|
266
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
267
267
|
|
268
268
|
This library is free software; you can redistribute it and/or modify it
|
269
269
|
under the same terms as Perl itself.
|
@@ -305,7 +305,7 @@ APP12 meta information.
|
|
305
305
|
|
306
306
|
=head1 AUTHOR
|
307
307
|
|
308
|
-
Copyright 2003-
|
308
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
309
309
|
|
310
310
|
This library is free software; you can redistribute it and/or modify it
|
311
311
|
under the same terms as Perl itself.
|
@@ -876,7 +876,7 @@ Windows Media Audio (WMA) and Windows Media Video (WMV) files.
|
|
876
876
|
|
877
877
|
=head1 AUTHOR
|
878
878
|
|
879
|
-
Copyright 2003-
|
879
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
880
880
|
|
881
881
|
This library is free software; you can redistribute it and/or modify it
|
882
882
|
under the same terms as Perl itself.
|
@@ -343,7 +343,7 @@ Apple maker notes in EXIF information.
|
|
343
343
|
|
344
344
|
=head1 AUTHOR
|
345
345
|
|
346
|
-
Copyright 2003-
|
346
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
347
347
|
|
348
348
|
This library is free software; you can redistribute it and/or modify it
|
349
349
|
under the same terms as Perl itself.
|
@@ -291,7 +291,7 @@ information from Audible audio books.
|
|
291
291
|
|
292
292
|
=head1 AUTHOR
|
293
293
|
|
294
|
-
Copyright 2003-
|
294
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
295
295
|
|
296
296
|
This library is free software; you can redistribute it and/or modify it
|
297
297
|
under the same terms as Perl itself.
|
@@ -335,7 +335,7 @@ This module contains definitions required by Image::ExifTool to read BMP
|
|
335
335
|
|
336
336
|
=head1 AUTHOR
|
337
337
|
|
338
|
-
Copyright 2003-
|
338
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
339
339
|
|
340
340
|
This library is free software; you can redistribute it and/or modify it
|
341
341
|
under the same terms as Perl itself.
|
@@ -231,7 +231,7 @@ This module contains definitions required by Image::ExifTool to read BPG
|
|
231
231
|
|
232
232
|
=head1 AUTHOR
|
233
233
|
|
234
|
-
Copyright 2003-
|
234
|
+
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
|
235
235
|
|
236
236
|
This library is free software; you can redistribute it and/or modify it
|
237
237
|
under the same terms as Perl itself.
|