exiftool_vendored 9.78.0 → 9.99.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Image-ExifTool-9.99/Changes +7164 -0
- data/bin/Image-ExifTool-9.99/MANIFEST +937 -0
- data/bin/Image-ExifTool-9.99/META.yml +27 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/Makefile.PL +0 -0
- data/bin/Image-ExifTool-9.99/README +233 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/exif2iptc.args +0 -0
- data/bin/Image-ExifTool-9.99/arg_files/exif2xmp.args +45 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/gps2xmp.args +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/iptc2exif.args +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/iptc2xmp.args +0 -0
- data/bin/Image-ExifTool-9.99/arg_files/iptcCore.args +224 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/pdf2xmp.args +0 -0
- data/bin/Image-ExifTool-9.99/arg_files/xmp2exif.args +46 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/xmp2gps.args +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/xmp2iptc.args +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/xmp2pdf.args +0 -0
- data/bin/Image-ExifTool-9.99/config_files/convert_regions.config +81 -0
- data/bin/Image-ExifTool-9.99/config_files/example.config +343 -0
- data/bin/Image-ExifTool-9.99/config_files/photoshop_paths.config +54 -0
- data/bin/Image-ExifTool-9.99/config_files/picasa_faces.config +369 -0
- data/bin/Image-ExifTool-9.99/exiftool +6245 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/fmt_files/gpx.fmt +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/fmt_files/gpx_wpt.fmt +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/fmt_files/kml.fmt +0 -0
- data/bin/Image-ExifTool-9.99/html/ExifTool.html +2067 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/MIE1.1-20070121.pdf +0 -0
- data/bin/Image-ExifTool-9.99/html/Shift.html +173 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/AFCP.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/AIFF.html +146 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/APE.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/APP12.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/ASF.html +1066 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Apple.html +74 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Audible.html +177 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/BMP.html +110 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Canon.html +9318 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/CanonCustom.html +2081 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/CanonRaw.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/CanonVRD.html +1958 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Casio.html +1606 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Composite.html +704 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/DICOM.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/DNG.html +289 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/DPX.html +224 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/DV.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/DarwinCore.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/DjVu.html +313 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/EXE.html +697 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/EXIF.html +3381 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Extra.html +437 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/FLAC.html +183 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/FLIR.html +1340 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Flash.html +419 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/FlashPix.html +1465 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Font.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/FotoStation.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/FujiFilm.html +813 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/GE.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/GIF.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/GIMP.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/GPS.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/GeoTiff.html +2298 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/H264.html +393 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/HP.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/HTML.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/ICC_Profile.html +711 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/ID3.html +1593 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/IPTC.html +903 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/ITC.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/JFIF.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/JPEG.html +602 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/JVC.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Jpeg2000.html +464 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Kodak.html +1891 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/KyoceraRaw.html +92 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/LNK.html +478 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Leaf.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Lytro.html +122 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/M2TS.html +133 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MIE.html +1026 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/MIFF.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MNG.html +847 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MOI.html +60 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MPC.html +97 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MPEG.html +249 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MPF.html +199 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MWG.html +577 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MXF.html +6673 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Matroska.html +1069 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Microsoft.html +2073 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Minolta.html +2612 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/MinoltaRaw.html +326 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Nikon.html +4814 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/NikonCapture.html +799 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/NikonCustom.html +5633 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Nintendo.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/OOXML.html +280 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Ogg.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Olympus.html +3531 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/OpenEXR.html +222 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/PDF.html +745 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/PGF.html +80 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PICT.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PLIST.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PNG.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PSP.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Palm.html +388 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Panasonic.html +1690 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/PanasonicRaw.html +451 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Pentax.html +4655 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/PhaseOne.html +253 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/PhotoCD.html +402 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/PhotoMechanic.html +196 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Photoshop.html +570 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PostScript.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PrintIM.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Qualcomm.html +4778 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/QuickTime.html +6036 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/RIFF.html +1314 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/RSRC.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/RTF.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Radiance.html +87 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Rawzor.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Real.html +780 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Reconyx.html +132 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Ricoh.html +800 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Samsung.html +604 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Sanyo.html +366 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Scalado.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Shortcuts.html +276 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Sigma.html +469 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/SigmaRaw.html +438 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/Sony.html +8640 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/SonyIDC.html +267 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Stim.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Theora.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Torrent.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Unknown.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/VCard.html +433 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Vorbis.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/XMP.html +9175 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/ZIP.html +205 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/iWork.html +0 -0
- data/bin/Image-ExifTool-9.99/html/TagNames/index.html +211 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/style.css +0 -0
- data/bin/Image-ExifTool-9.99/html/ancient_history.html +7608 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/canon_raw.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/commentary.html +0 -0
- data/bin/Image-ExifTool-9.99/html/config.html +355 -0
- data/bin/Image-ExifTool-9.99/html/data_members.html +279 -0
- data/bin/Image-ExifTool-9.99/html/exiftool_pod.html +2503 -0
- data/bin/Image-ExifTool-9.99/html/faq.html +1530 -0
- data/bin/Image-ExifTool-9.99/html/filename.html +352 -0
- data/bin/Image-ExifTool-9.99/html/geotag.html +654 -0
- data/bin/Image-ExifTool-9.99/html/history.html +488 -0
- data/bin/Image-ExifTool-9.99/html/htmldump.html +738 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/idiosyncracies.html +0 -0
- data/bin/Image-ExifTool-9.99/html/index.html +1330 -0
- data/bin/Image-ExifTool-9.99/html/install.html +251 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/metafiles.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/overview.png +0 -0
- data/bin/Image-ExifTool-9.99/html/standards.html +286 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/struct.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/style.css +0 -0
- data/bin/Image-ExifTool-9.99/html/under.html +128 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/verbose.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/writing.html +0 -0
- data/bin/Image-ExifTool-9.99/lib/File/RandomAccess.pm +378 -0
- data/bin/Image-ExifTool-9.99/lib/File/RandomAccess.pod +231 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool.pm +7498 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool.pod +2494 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/AES.pm +501 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/AFCP.pm +286 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/AIFF.pm +289 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/APE.pm +264 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/APP12.pm +322 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ASF.pm +885 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Apple.pm +126 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Audible.pm +317 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/BMP.pm +179 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/BZZ.pm +472 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/BigTIFF.pm +282 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/BuildTagLookup.pm +2508 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Canon.pm +8457 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/CanonCustom.pm +2582 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/CanonRaw.pm +910 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/CanonVRD.pm +2228 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/CaptureOne.pm +235 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Casio.pm +2058 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Charset.pm +396 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Arabic.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Baltic.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Cyrillic.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Greek.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Hebrew.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/JIS.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Latin.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Latin2.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacArabic.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacChineseCN.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacChineseTW.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacCroatian.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacCyrillic.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacGreek.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacHebrew.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacIceland.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacJapanese.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacKorean.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacLatin2.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacRSymbol.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacRoman.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacRomanian.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacThai.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacTurkish.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/PDFDoc.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/ShiftJIS.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Symbol.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Thai.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Turkish.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Vietnam.pm +0 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DICOM.pm +3874 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DNG.pm +835 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DPX.pm +181 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DV.pm +319 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DarwinCore.pm +322 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DjVu.pm +376 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/EXE.pm +1250 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Exif.pm +4672 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FLAC.pm +297 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FLIR.pm +1533 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Fixup.pm +354 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Flash.pm +755 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FlashPix.pm +1935 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Font.pm +647 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FotoStation.pm +261 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FujiFilm.pm +1195 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GE.pm +81 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GIF.pm +542 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GIMP.pm +258 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GPS.pm +558 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GeoTiff.pm +2263 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Geotag.pm +1219 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/H264.pm +1112 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/HP.pm +263 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/HTML.pm +576 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/HtmlDump.pm +895 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ICC_Profile.pm +1000 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ID3.pm +1569 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/IPTC.pm +1264 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ITC.pm +215 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Import.pm +329 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/InDesign.pm +277 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/JPEG.pm +605 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/JPEGDigest.pm +2511 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/JVC.pm +130 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Jpeg2000.pm +873 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Kodak.pm +2096 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/KyoceraRaw.pm +173 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/LNK.pm +723 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/cs.pm +1588 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/de.pm +8692 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/en_ca.pm +848 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/en_gb.pm +863 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/es.pm +4019 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/fi.pm +2854 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/fr.pm +4758 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/it.pm +7918 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/ja.pm +5835 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/ko.pm +2330 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/nl.pm +3222 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/pl.pm +1276 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/ru.pm +768 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/sv.pm +638 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/tr.pm +544 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/zh_cn.pm +1330 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/zh_tw.pm +801 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Leaf.pm +516 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lytro.pm +217 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/M2TS.pm +725 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MIE.pm +2564 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MIEUnits.pod +377 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MIFF.pm +279 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MNG.pm +684 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MOI.pm +158 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MPC.pm +156 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MPEG.pm +736 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MPF.pm +292 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MWG.pm +753 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MXF.pm +3032 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MakerNotes.pm +1713 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Matroska.pm +892 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Microsoft.pm +893 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Minolta.pm +2950 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MinoltaRaw.pm +534 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Nikon.pm +6728 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/NikonCapture.pm +940 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/NikonCustom.pm +6331 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Nintendo.pm +128 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/OOXML.pm +409 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Ogg.pm +237 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Olympus.pm +3796 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/OpenEXR.pm +324 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PDF.pm +2328 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PGF.pm +143 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PICT.pm +1260 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PLIST.pm +453 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PNG.pm +1190 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PPM.pm +169 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PSP.pm +306 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Palm.pm +403 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Panasonic.pm +2366 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PanasonicRaw.pm +639 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Pentax.pm +5941 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PhaseOne.pm +551 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PhotoCD.pm +507 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PhotoMechanic.pm +256 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Photoshop.pm +650 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PostScript.pm +696 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PrintIM.pm +125 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Qualcomm.pm +1344 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/QuickTime.pm +6572 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/README +981 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/RIFF.pm +1478 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/RSRC.pm +241 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/RTF.pm +383 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Radiance.pm +144 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Rawzor.pm +189 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Real.pm +739 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Reconyx.pm +190 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Ricoh.pm +1121 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Samsung.pm +1168 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Sanyo.pm +440 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Scalado.pm +141 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Shift.pl +596 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Shortcuts.pm +335 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Sigma.pm +684 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/SigmaRaw.pm +668 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Sony.pm +9086 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/SonyIDC.pm +331 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Stim.pm +196 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/TagInfoXML.pm +826 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/TagLookup.pm +8931 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/TagNames.pod +29124 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Theora.pm +145 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Torrent.pm +317 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Unknown.pm +66 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/VCard.pm +405 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Vorbis.pm +238 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteCanonRaw.pl +637 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteExif.pl +3743 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteIPTC.pl +702 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WritePDF.pl +768 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WritePNG.pl +390 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WritePhotoshop.pl +266 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WritePostScript.pl +772 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteQuickTime.pl +358 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteXMP.pl +1367 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Writer.pl +6164 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/XMP.pm +4034 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/XMP2.pl +1579 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/XMPStruct.pl +826 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ZIP.pm +667 -0
- data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/iWork.pm +223 -0
- data/bin/Image-ExifTool-9.99/perl-Image-ExifTool.spec +112 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/AFCP.t +0 -0
- data/bin/Image-ExifTool-9.99/t/AFCP_2.out +39 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/AFCP_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/AIFF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/AIFF_2.out +33 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/APE.t +0 -0
- data/bin/Image-ExifTool-9.99/t/APE_2.out +29 -0
- data/bin/Image-ExifTool-9.99/t/APE_3.out +58 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ASF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/ASF_2.out +56 -0
- data/bin/Image-ExifTool-9.99/t/Audible.t +28 -0
- data/bin/Image-ExifTool-9.99/t/Audible_2.out +40 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/BMP.t +0 -0
- data/bin/Image-ExifTool-9.99/t/BMP_2.out +23 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/BigTIFF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/BigTIFF_2.out +21 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Canon.t +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonRaw.t +0 -0
- data/bin/Image-ExifTool-9.99/t/CanonRaw_2.out +169 -0
- data/bin/Image-ExifTool-9.99/t/CanonRaw_4.out +220 -0
- data/bin/Image-ExifTool-9.99/t/CanonRaw_5.out +209 -0
- data/bin/Image-ExifTool-9.99/t/CanonRaw_6.out +233 -0
- data/bin/Image-ExifTool-9.99/t/CanonRaw_7.out +250 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD.t +220 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_11.out +121 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_12.out +13 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_13.out +102 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_14.out +101 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_15.out +5 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_16.out +5 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_17.out +5 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_18.out +5 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_19.out +5 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_2.out +119 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_20.out +5 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_21.out +1 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_3.out +119 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_4.out +0 -0
- data/bin/Image-ExifTool-9.99/t/CanonVRD_5.out +2 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_6.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_7.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_8.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_9.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Canon_2.out +356 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Canon_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Casio.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Casio_2.out +72 -0
- data/bin/Image-ExifTool-9.99/t/Casio_3.out +102 -0
- data/bin/Image-ExifTool-9.99/t/Casio_4.out +28 -0
- data/bin/Image-ExifTool-9.99/t/Casio_5.out +80 -0
- data/bin/Image-ExifTool-9.99/t/Casio_6.out +117 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DICOM.t +0 -0
- data/bin/Image-ExifTool-9.99/t/DICOM_2.out +109 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DNG.t +0 -0
- data/bin/Image-ExifTool-9.99/t/DNG_2.out +328 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DNG_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DPX.t +0 -0
- data/bin/Image-ExifTool-9.99/t/DPX_2.out +39 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DV.t +0 -0
- data/bin/Image-ExifTool-9.99/t/DV_2.out +26 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DjVu.t +0 -0
- data/bin/Image-ExifTool-9.99/t/DjVu_2.out +46 -0
- data/bin/Image-ExifTool-9.99/t/EXE.t +31 -0
- data/bin/Image-ExifTool-9.99/t/EXE_2.out +41 -0
- data/bin/Image-ExifTool-9.99/t/EXE_3.out +16 -0
- data/bin/Image-ExifTool-9.99/t/EXE_4.out +15 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool.t +0 -0
- data/bin/Image-ExifTool-9.99/t/ExifTool_16.out +184 -0
- data/bin/Image-ExifTool-9.99/t/ExifTool_17.out +598 -0
- data/bin/Image-ExifTool-9.99/t/ExifTool_2.out +418 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_20.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_21.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_22.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_23.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_24.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_25.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_26.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_27.out +0 -0
- data/bin/Image-ExifTool-9.99/t/ExifTool_28.out +11 -0
- data/bin/Image-ExifTool-9.99/t/ExifTool_3.out +89 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_4.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_5.out +0 -0
- data/bin/Image-ExifTool-9.99/t/ExifTool_6.out +71 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_7.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_8.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_9.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FLAC.t +0 -0
- data/bin/Image-ExifTool-9.99/t/FLAC_2.out +26 -0
- data/bin/Image-ExifTool-9.99/t/FLAC_3.out +20 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FLIR.t +0 -0
- data/bin/Image-ExifTool-9.99/t/FLIR_2.out +112 -0
- data/bin/Image-ExifTool-9.99/t/FLIR_3.out +49 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Flash.t +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FlashPix.t +0 -0
- data/bin/Image-ExifTool-9.99/t/FlashPix_2.out +49 -0
- data/bin/Image-ExifTool-9.99/t/Flash_2.out +22 -0
- data/bin/Image-ExifTool-9.99/t/Flash_3.out +55 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Font.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Font_2.out +24 -0
- data/bin/Image-ExifTool-9.99/t/Font_3.out +36 -0
- data/bin/Image-ExifTool-9.99/t/Font_4.out +27 -0
- data/bin/Image-ExifTool-9.99/t/Font_5.out +27 -0
- data/bin/Image-ExifTool-9.99/t/Font_6.out +37 -0
- data/bin/Image-ExifTool-9.99/t/Font_7.out +37 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FotoStation.t +0 -0
- data/bin/Image-ExifTool-9.99/t/FotoStation_2.out +41 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FotoStation_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FujiFilm.t +0 -0
- data/bin/Image-ExifTool-9.99/t/FujiFilm_2.out +89 -0
- data/bin/Image-ExifTool-9.99/t/FujiFilm_3.out +90 -0
- data/bin/Image-ExifTool-9.99/t/FujiFilm_4.out +141 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FujiFilm_5.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GE.t +0 -0
- data/bin/Image-ExifTool-9.99/t/GE_2.out +86 -0
- data/bin/Image-ExifTool-9.99/t/GE_3.out +86 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GIF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/GIF_2.out +42 -0
- data/bin/Image-ExifTool-9.99/t/GIF_3.out +43 -0
- data/bin/Image-ExifTool-9.99/t/GIF_4.out +18 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GIMP.t +0 -0
- data/bin/Image-ExifTool-9.99/t/GIMP_2.out +65 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GPS.t +0 -0
- data/bin/Image-ExifTool-9.99/t/GPS_2.out +96 -0
- data/bin/Image-ExifTool-9.99/t/GPS_3.out +98 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GeoTiff.t +0 -0
- data/bin/Image-ExifTool-9.99/t/GeoTiff_2.out +38 -0
- data/bin/Image-ExifTool-9.99/t/GeoTiff_3.out +38 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GeoTiff_4.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Geotag.t +172 -0
- data/bin/Image-ExifTool-9.99/t/Geotag_10.out +15 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_2.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_5.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_6.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_7.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_8.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_9.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/HTML.t +0 -0
- data/bin/Image-ExifTool-9.99/t/HTML_2.out +69 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC.t +0 -0
- data/bin/Image-ExifTool-9.99/t/IPTC_2.out +60 -0
- data/bin/Image-ExifTool-9.99/t/IPTC_4.out +58 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC_5.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC_6.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC_7.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC_8.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ITC.t +0 -0
- data/bin/Image-ExifTool-9.99/t/ITC_2.out +21 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/InDesign.t +0 -0
- data/bin/Image-ExifTool-9.99/t/InDesign_2.out +20 -0
- data/bin/Image-ExifTool-9.99/t/InDesign_3.out +22 -0
- data/bin/Image-ExifTool-9.99/t/InDesign_4.out +12 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/JVC.t +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/JVC_2.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/JVC_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Jpeg2000.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Jpeg2000_2.out +65 -0
- data/bin/Image-ExifTool-9.99/t/Jpeg2000_3.out +53 -0
- data/bin/Image-ExifTool-9.99/t/Jpeg2000_4.out +17 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Kodak.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Kodak_2.out +111 -0
- data/bin/Image-ExifTool-9.99/t/Kodak_3.out +121 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/KyoceraRaw.t +0 -0
- data/bin/Image-ExifTool-9.99/t/KyoceraRaw_2.out +28 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/LNK.t +0 -0
- data/bin/Image-ExifTool-9.99/t/LNK_2.out +46 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang.t +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_1.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_10.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_11.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_12.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_13.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_14.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_15.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_16.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_17.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_18.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_2.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_4.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_5.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_6.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_7.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_8.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_9.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lytro.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Lytro_2.out +109 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/M2TS.t +0 -0
- data/bin/Image-ExifTool-9.99/t/M2TS_2.out +29 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MIE.t +0 -0
- data/bin/Image-ExifTool-9.99/t/MIE_2.out +69 -0
- data/bin/Image-ExifTool-9.99/t/MIE_3.out +136 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MIE_5.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MIE_6.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MIFF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/MIFF_2.out +110 -0
- data/bin/Image-ExifTool-9.99/t/MOI.t +27 -0
- data/bin/Image-ExifTool-9.99/t/MOI_2.out +11 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MP3.t +0 -0
- data/bin/Image-ExifTool-9.99/t/MP3_2.out +46 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG.t +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_2.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_4.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_5.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_6.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MXF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/MXF_2.out +79 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Matroska.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Matroska_2.out +66 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Minolta.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Minolta_2.out +135 -0
- data/bin/Image-ExifTool-9.99/t/Minolta_3.out +148 -0
- data/bin/Image-ExifTool-9.99/t/Minolta_4.out +150 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Nikon.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Nikon_2.out +84 -0
- data/bin/Image-ExifTool-9.99/t/Nikon_3.out +100 -0
- data/bin/Image-ExifTool-9.99/t/Nikon_4.out +176 -0
- data/bin/Image-ExifTool-9.99/t/Nikon_5.out +169 -0
- data/bin/Image-ExifTool-9.99/t/Nikon_7.out +261 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Nikon_8.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Olympus.t +94 -0
- data/bin/Image-ExifTool-9.99/t/Olympus_2.out +81 -0
- data/bin/Image-ExifTool-9.99/t/Olympus_3.out +83 -0
- data/bin/Image-ExifTool-9.99/t/Olympus_4.out +194 -0
- data/bin/Image-ExifTool-9.99/t/Olympus_5.out +266 -0
- data/bin/Image-ExifTool-9.99/t/Olympus_6.out +153 -0
- data/bin/Image-ExifTool-9.99/t/Olympus_7.out +483 -0
- data/bin/Image-ExifTool-9.99/t/Olympus_8.out +15 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/OpenEXR.t +0 -0
- data/bin/Image-ExifTool-9.99/t/OpenEXR_2.out +25 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF.t +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_10.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_11.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_12.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_14.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_15.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_16.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_17.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_18.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_19.out +0 -0
- data/bin/Image-ExifTool-9.99/t/PDF_2.out +118 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_20.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_22.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_4.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_5.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_6.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_7.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_8.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_9.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PGF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PGF_2.out +34 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PICT.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PICT_2.out +17 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PLIST.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PLIST_2.out +21 -0
- data/bin/Image-ExifTool-9.99/t/PLIST_3.out +21 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PNG.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PNG_2.out +24 -0
- data/bin/Image-ExifTool-9.99/t/PNG_3.out +123 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PNG_4.out +0 -0
- data/bin/Image-ExifTool-9.99/t/PNG_5.out +18 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PPM.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PPM_2.out +17 -0
- data/bin/Image-ExifTool-9.99/t/PPM_3.out +11 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PSP.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PSP_2.out +34 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Palm.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Palm_2.out +32 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Panasonic.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Panasonic_2.out +101 -0
- data/bin/Image-ExifTool-9.99/t/Panasonic_3.out +121 -0
- data/bin/Image-ExifTool-9.99/t/Panasonic_4.out +206 -0
- data/bin/Image-ExifTool-9.99/t/Panasonic_5.out +244 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Pentax.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Pentax_2.out +225 -0
- data/bin/Image-ExifTool-9.99/t/Pentax_3.out +266 -0
- data/bin/Image-ExifTool-9.99/t/Pentax_4.out +131 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PhotoCD.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PhotoCD_2.out +37 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PhotoMechanic.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PhotoMechanic_2.out +83 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PhotoMechanic_3.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Photoshop.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Photoshop_2.out +98 -0
- data/bin/Image-ExifTool-9.99/t/Photoshop_3.out +110 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PostScript.t +0 -0
- data/bin/Image-ExifTool-9.99/t/PostScript_2.out +66 -0
- data/bin/Image-ExifTool-9.99/t/PostScript_3.out +134 -0
- data/bin/Image-ExifTool-9.99/t/QuickTime.t +54 -0
- data/bin/Image-ExifTool-9.99/t/QuickTime_2.out +133 -0
- data/bin/Image-ExifTool-9.99/t/QuickTime_3.out +73 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/QuickTime_4.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/QuickTime_5.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/RIFF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/RIFF_2.out +25 -0
- data/bin/Image-ExifTool-9.99/t/RIFF_3.out +54 -0
- data/bin/Image-ExifTool-9.99/t/RIFF_4.out +18 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/RTF.t +0 -0
- data/bin/Image-ExifTool-9.99/t/RTF_2.out +21 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Radiance.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Radiance_2.out +24 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Real.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Real_2.out +69 -0
- data/bin/Image-ExifTool-9.99/t/Real_3.out +19 -0
- data/bin/Image-ExifTool-9.99/t/Real_4.out +12 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Ricoh.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Ricoh_2.out +72 -0
- data/bin/Image-ExifTool-9.99/t/Ricoh_3.out +100 -0
- data/bin/Image-ExifTool-9.99/t/Ricoh_4.out +114 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Sanyo.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Sanyo_2.out +103 -0
- data/bin/Image-ExifTool-9.99/t/Sanyo_3.out +113 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Sigma.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Sigma_2.out +93 -0
- data/bin/Image-ExifTool-9.99/t/Sigma_3.out +96 -0
- data/bin/Image-ExifTool-9.99/t/Sigma_4.out +65 -0
- data/bin/Image-ExifTool-9.99/t/Sigma_5.out +194 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Sony.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Sony_2.out +86 -0
- data/bin/Image-ExifTool-9.99/t/Sony_3.out +87 -0
- data/bin/Image-ExifTool-9.99/t/Sony_5.out +34 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/TestLib.pm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Torrent.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Torrent_2.out +32 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Unknown.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Unknown_2.out +92 -0
- data/bin/Image-ExifTool-9.99/t/Unknown_3.out +92 -0
- data/bin/Image-ExifTool-9.99/t/VCard.t +31 -0
- data/bin/Image-ExifTool-9.99/t/VCard_2.out +54 -0
- data/bin/Image-ExifTool-9.99/t/VCard_3.out +88 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Vorbis.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Vorbis_2.out +29 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer.t +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_10.out +246 -0
- data/bin/Image-ExifTool-9.99/t/Writer_11.out +39 -0
- data/bin/Image-ExifTool-9.99/t/Writer_13.out +165 -0
- data/bin/Image-ExifTool-9.99/t/Writer_14.out +69 -0
- data/bin/Image-ExifTool-9.99/t/Writer_15.out +175 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_16.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_17.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_18.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_19.out +36 -0
- data/bin/Image-ExifTool-9.99/t/Writer_2.out +172 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_22.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_24.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_25.out +40 -0
- data/bin/Image-ExifTool-9.99/t/Writer_26.out +34 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_27.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_28.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_29.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_30.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_31.out +99 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_32.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_33.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_34.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_35.out +188 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_36.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_37.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_38.out +63 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_39.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_4.out +87 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_40.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_41.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_42.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_43.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_44.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_45.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_46.out +105 -0
- data/bin/Image-ExifTool-9.99/t/Writer_47.out +57 -0
- data/bin/Image-ExifTool-9.99/t/Writer_48.out +31 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_50.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_51.out +405 -0
- data/bin/Image-ExifTool-9.99/t/Writer_52.out +23 -0
- data/bin/Image-ExifTool-9.99/t/Writer_53.out +35 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_54.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_55.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_56.out +0 -0
- data/bin/Image-ExifTool-9.99/t/Writer_6.out +186 -0
- data/bin/Image-ExifTool-9.99/t/Writer_7.out +151 -0
- data/bin/Image-ExifTool-9.99/t/Writer_9.out +242 -0
- data/bin/Image-ExifTool-9.99/t/XMP.t +557 -0
- data/bin/Image-ExifTool-9.99/t/XMP_10.out +37 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_11.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_12.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_13.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_14.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_15.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_16.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_17.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_18.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_19.out +0 -0
- data/bin/Image-ExifTool-9.99/t/XMP_2.out +140 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_20.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_21.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_22.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_23.out +0 -0
- data/bin/Image-ExifTool-9.99/t/XMP_24.out +32 -0
- data/bin/Image-ExifTool-9.99/t/XMP_25.out +28 -0
- data/bin/Image-ExifTool-9.99/t/XMP_26.out +51 -0
- data/bin/Image-ExifTool-9.99/t/XMP_27.out +95 -0
- data/bin/Image-ExifTool-9.99/t/XMP_28.out +46 -0
- data/bin/Image-ExifTool-9.99/t/XMP_29.out +26 -0
- data/bin/Image-ExifTool-9.99/t/XMP_3.out +138 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_30.out +0 -0
- data/bin/Image-ExifTool-9.99/t/XMP_31.out +20 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_32.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_34.out +0 -0
- data/bin/Image-ExifTool-9.99/t/XMP_36.out +19 -0
- data/bin/Image-ExifTool-9.99/t/XMP_37.out +36 -0
- data/bin/Image-ExifTool-9.99/t/XMP_39.out +45 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_40.out +0 -0
- data/bin/Image-ExifTool-9.99/t/XMP_41.out +181 -0
- data/bin/Image-ExifTool-9.99/t/XMP_42.out +8 -0
- data/bin/Image-ExifTool-9.99/t/XMP_43.out +6 -0
- data/bin/Image-ExifTool-9.99/t/XMP_44.out +35 -0
- data/bin/Image-ExifTool-9.99/t/XMP_5.out +30 -0
- data/bin/Image-ExifTool-9.99/t/XMP_6.out +89 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_7.out +0 -0
- data/bin/Image-ExifTool-9.99/t/XMP_8.out +19 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_9.out +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ZIP.t +0 -0
- data/bin/Image-ExifTool-9.99/t/ZIP_2.out +19 -0
- data/bin/Image-ExifTool-9.99/t/ZIP_3.out +18 -0
- data/bin/Image-ExifTool-9.99/t/ZIP_4.out +214 -0
- data/bin/Image-ExifTool-9.99/t/ZIP_5.out +136 -0
- data/bin/Image-ExifTool-9.99/t/ZIP_6.out +50 -0
- data/bin/Image-ExifTool-9.99/t/ZIP_7.out +29 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/AFCP.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/AIFF.aif +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/APE.ape +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/APE.mpc +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ASF.wmv +0 -0
- data/bin/Image-ExifTool-9.99/t/images/Audible.aa +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/BMP.bmp +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/BigTIFF.btf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Canon.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Canon1DmkIII.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CanonRaw.cr2 +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CanonRaw.crw +0 -0
- data/bin/Image-ExifTool-9.99/t/images/CanonVRD.dr4 +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CanonVRD.vrd +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CaptureOne.eip +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Casio.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Casio2.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CasioQVCI.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DICOM.dcm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DNG.dng +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DPX.dpx +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DV.dv +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DjVu.djvu +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/EXE.elf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/EXE.exe +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/EXE.macho +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ExifTool.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ExifTool.tif +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ExtendedXMP.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FLAC.flac +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FLAC.ogg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FLIR.fpf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FLIR.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Flash.flv +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Flash.swf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FlashPix.ppt +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.afm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.dfont +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.pfa +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.pfb +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.pfm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.ttf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FotoStation.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FujiFilm.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FujiFilm.raf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GE.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GIF.gif +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GIMP.xcf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GPS.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GeoTiff.tif +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.gpx +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.igc +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.kml +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.log +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.xml +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag2.log +0 -0
- data/bin/Image-ExifTool-9.99/t/images/Geotag3.log +7 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/HTML.html +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/IPTC.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ITC.itc +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/InDesign.indd +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/JVC.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/JVC2.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Jpeg2000.j2c +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Jpeg2000.jp2 +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Kodak.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/KyoceraRaw.raw +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/LNK.lnk +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Lytro.lfp +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/M2TS.mts +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MIE.mie +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MIFF.miff +0 -0
- data/bin/Image-ExifTool-9.99/t/images/MOI.moi +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MP3.mp3 +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MWG.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MXF.mxf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Matroska.mkv +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Minolta.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Minolta.mrw +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Nikon.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Nikon.nef +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/NikonD2Hs.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/NikonD70.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/OOXML.docx +0 -0
- data/bin/Image-ExifTool-9.99/t/images/Olympus.dss +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Olympus.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Olympus2.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/OlympusE1.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/OpenDoc.ods +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/OpenEXR.exr +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PDF.pdf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PDF2.pdf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PGF.pgf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PICT.pict +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PLIST-bin.plist +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PLIST-xml.plist +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PNG.png +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PPM.ppm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PSP.psp +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Palm.mobi +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Panasonic.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Panasonic.rw2 +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Pentax.avi +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Pentax.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PhotoCD.pcd +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PhotoMechanic.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Photoshop.psd +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PostScript.eps +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/QuickTime.m4a +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/QuickTime.mov +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/RIFF.avi +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/RIFF.wav +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/RIFF.webp +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/RTF.rtf +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Radiance.hdr +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Real.ra +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Real.ram +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Real.rm +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Ricoh.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Ricoh2.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sanyo.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sigma.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sigma.x3f +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/SigmaDP2.x3f +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sony.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sony.pmp +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Torrent.torrent +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Unknown.jpg +0 -0
- data/bin/Image-ExifTool-9.99/t/images/VCard.ics +94 -0
- data/bin/Image-ExifTool-9.99/t/images/VCard.vcf +45 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Vorbis.ogg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Writer.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.inx +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.jpg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.svg +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.xml +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.xmp +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP2.xmp +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP3.xmp +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP4.xmp +0 -0
- data/bin/Image-ExifTool-9.99/t/images/XMP5.xmp +157 -0
- data/bin/Image-ExifTool-9.99/t/images/XMP6.xmp +48 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ZIP.gz +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ZIP.zip +0 -0
- data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/iWork.numbers +0 -0
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +941 -904
- data/bin/Image-ExifTool-9.78/Changes +0 -6884
- data/bin/Image-ExifTool-9.78/MANIFEST +0 -900
- data/bin/Image-ExifTool-9.78/META.yml +0 -27
- data/bin/Image-ExifTool-9.78/README +0 -227
- data/bin/Image-ExifTool-9.78/arg_files/exif2xmp.args +0 -42
- data/bin/Image-ExifTool-9.78/arg_files/iptcCore.args +0 -172
- data/bin/Image-ExifTool-9.78/arg_files/xmp2exif.args +0 -43
- data/bin/Image-ExifTool-9.78/config_files/ExifTool_config +0 -341
- data/bin/Image-ExifTool-9.78/config_files/convert_regions.config +0 -81
- data/bin/Image-ExifTool-9.78/exiftool +0 -5969
- data/bin/Image-ExifTool-9.78/html/ExifTool.html +0 -2018
- data/bin/Image-ExifTool-9.78/html/Shift.html +0 -173
- data/bin/Image-ExifTool-9.78/html/TagNames/AIFF.html +0 -146
- data/bin/Image-ExifTool-9.78/html/TagNames/ASF.html +0 -1066
- data/bin/Image-ExifTool-9.78/html/TagNames/Apple.html +0 -69
- data/bin/Image-ExifTool-9.78/html/TagNames/BMP.html +0 -110
- data/bin/Image-ExifTool-9.78/html/TagNames/Canon.html +0 -8414
- data/bin/Image-ExifTool-9.78/html/TagNames/CanonCustom.html +0 -2081
- data/bin/Image-ExifTool-9.78/html/TagNames/CanonVRD.html +0 -1222
- data/bin/Image-ExifTool-9.78/html/TagNames/Casio.html +0 -1606
- data/bin/Image-ExifTool-9.78/html/TagNames/Composite.html +0 -696
- data/bin/Image-ExifTool-9.78/html/TagNames/DNG.html +0 -285
- data/bin/Image-ExifTool-9.78/html/TagNames/DPX.html +0 -190
- data/bin/Image-ExifTool-9.78/html/TagNames/DjVu.html +0 -313
- data/bin/Image-ExifTool-9.78/html/TagNames/EXE.html +0 -697
- data/bin/Image-ExifTool-9.78/html/TagNames/EXIF.html +0 -3365
- data/bin/Image-ExifTool-9.78/html/TagNames/Extra.html +0 -341
- data/bin/Image-ExifTool-9.78/html/TagNames/FLAC.html +0 -183
- data/bin/Image-ExifTool-9.78/html/TagNames/FLIR.html +0 -1340
- data/bin/Image-ExifTool-9.78/html/TagNames/Flash.html +0 -419
- data/bin/Image-ExifTool-9.78/html/TagNames/FlashPix.html +0 -1465
- data/bin/Image-ExifTool-9.78/html/TagNames/FujiFilm.html +0 -789
- data/bin/Image-ExifTool-9.78/html/TagNames/GeoTiff.html +0 -2184
- data/bin/Image-ExifTool-9.78/html/TagNames/H264.html +0 -393
- data/bin/Image-ExifTool-9.78/html/TagNames/ICC_Profile.html +0 -711
- data/bin/Image-ExifTool-9.78/html/TagNames/ID3.html +0 -1471
- data/bin/Image-ExifTool-9.78/html/TagNames/IPTC.html +0 -902
- data/bin/Image-ExifTool-9.78/html/TagNames/JPEG.html +0 -602
- data/bin/Image-ExifTool-9.78/html/TagNames/Jpeg2000.html +0 -464
- data/bin/Image-ExifTool-9.78/html/TagNames/Kodak.html +0 -1881
- data/bin/Image-ExifTool-9.78/html/TagNames/KyoceraRaw.html +0 -92
- data/bin/Image-ExifTool-9.78/html/TagNames/LNK.html +0 -478
- data/bin/Image-ExifTool-9.78/html/TagNames/Lytro.html +0 -122
- data/bin/Image-ExifTool-9.78/html/TagNames/M2TS.html +0 -133
- data/bin/Image-ExifTool-9.78/html/TagNames/MIE.html +0 -1026
- data/bin/Image-ExifTool-9.78/html/TagNames/MNG.html +0 -847
- data/bin/Image-ExifTool-9.78/html/TagNames/MPC.html +0 -97
- data/bin/Image-ExifTool-9.78/html/TagNames/MPEG.html +0 -249
- data/bin/Image-ExifTool-9.78/html/TagNames/MPF.html +0 -199
- data/bin/Image-ExifTool-9.78/html/TagNames/MWG.html +0 -567
- data/bin/Image-ExifTool-9.78/html/TagNames/MXF.html +0 -6673
- data/bin/Image-ExifTool-9.78/html/TagNames/Matroska.html +0 -1069
- data/bin/Image-ExifTool-9.78/html/TagNames/Microsoft.html +0 -2069
- data/bin/Image-ExifTool-9.78/html/TagNames/Minolta.html +0 -2585
- data/bin/Image-ExifTool-9.78/html/TagNames/MinoltaRaw.html +0 -326
- data/bin/Image-ExifTool-9.78/html/TagNames/Nikon.html +0 -4734
- data/bin/Image-ExifTool-9.78/html/TagNames/NikonCapture.html +0 -799
- data/bin/Image-ExifTool-9.78/html/TagNames/NikonCustom.html +0 -4794
- data/bin/Image-ExifTool-9.78/html/TagNames/OOXML.html +0 -280
- data/bin/Image-ExifTool-9.78/html/TagNames/Olympus.html +0 -3447
- data/bin/Image-ExifTool-9.78/html/TagNames/OpenEXR.html +0 -222
- data/bin/Image-ExifTool-9.78/html/TagNames/PDF.html +0 -745
- data/bin/Image-ExifTool-9.78/html/TagNames/PGF.html +0 -80
- data/bin/Image-ExifTool-9.78/html/TagNames/Palm.html +0 -388
- data/bin/Image-ExifTool-9.78/html/TagNames/Panasonic.html +0 -1686
- data/bin/Image-ExifTool-9.78/html/TagNames/PanasonicRaw.html +0 -451
- data/bin/Image-ExifTool-9.78/html/TagNames/Pentax.html +0 -4601
- data/bin/Image-ExifTool-9.78/html/TagNames/PhaseOne.html +0 -258
- data/bin/Image-ExifTool-9.78/html/TagNames/PhotoCD.html +0 -402
- data/bin/Image-ExifTool-9.78/html/TagNames/PhotoMechanic.html +0 -196
- data/bin/Image-ExifTool-9.78/html/TagNames/Photoshop.html +0 -570
- data/bin/Image-ExifTool-9.78/html/TagNames/Qualcomm.html +0 -4778
- data/bin/Image-ExifTool-9.78/html/TagNames/QuickTime.html +0 -5729
- data/bin/Image-ExifTool-9.78/html/TagNames/RIFF.html +0 -1314
- data/bin/Image-ExifTool-9.78/html/TagNames/Radiance.html +0 -87
- data/bin/Image-ExifTool-9.78/html/TagNames/Real.html +0 -780
- data/bin/Image-ExifTool-9.78/html/TagNames/Reconyx.html +0 -132
- data/bin/Image-ExifTool-9.78/html/TagNames/Ricoh.html +0 -794
- data/bin/Image-ExifTool-9.78/html/TagNames/Samsung.html +0 -603
- data/bin/Image-ExifTool-9.78/html/TagNames/Sanyo.html +0 -366
- data/bin/Image-ExifTool-9.78/html/TagNames/Shortcuts.html +0 -274
- data/bin/Image-ExifTool-9.78/html/TagNames/Sigma.html +0 -377
- data/bin/Image-ExifTool-9.78/html/TagNames/SigmaRaw.html +0 -438
- data/bin/Image-ExifTool-9.78/html/TagNames/Sony.html +0 -7481
- data/bin/Image-ExifTool-9.78/html/TagNames/SonyIDC.html +0 -267
- data/bin/Image-ExifTool-9.78/html/TagNames/XMP.html +0 -7971
- data/bin/Image-ExifTool-9.78/html/TagNames/ZIP.html +0 -205
- data/bin/Image-ExifTool-9.78/html/TagNames/index.html +0 -207
- data/bin/Image-ExifTool-9.78/html/ancient_history.html +0 -7356
- data/bin/Image-ExifTool-9.78/html/config.html +0 -354
- data/bin/Image-ExifTool-9.78/html/data_members.html +0 -277
- data/bin/Image-ExifTool-9.78/html/exiftool_pod.html +0 -2414
- data/bin/Image-ExifTool-9.78/html/faq.html +0 -1499
- data/bin/Image-ExifTool-9.78/html/filename.html +0 -331
- data/bin/Image-ExifTool-9.78/html/geotag.html +0 -652
- data/bin/Image-ExifTool-9.78/html/history.html +0 -431
- data/bin/Image-ExifTool-9.78/html/htmldump.html +0 -734
- data/bin/Image-ExifTool-9.78/html/index.html +0 -1298
- data/bin/Image-ExifTool-9.78/html/install.html +0 -251
- data/bin/Image-ExifTool-9.78/html/standards.html +0 -286
- data/bin/Image-ExifTool-9.78/html/under.html +0 -127
- data/bin/Image-ExifTool-9.78/lib/File/RandomAccess.pm +0 -378
- data/bin/Image-ExifTool-9.78/lib/File/RandomAccess.pod +0 -231
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool.pm +0 -7070
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool.pod +0 -2437
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/AES.pm +0 -501
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/AFCP.pm +0 -284
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/AIFF.pm +0 -286
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/APE.pm +0 -262
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/APP12.pm +0 -322
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ASF.pm +0 -884
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Apple.pm +0 -115
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/BMP.pm +0 -179
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/BZZ.pm +0 -472
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/BigTIFF.pm +0 -282
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/BuildTagLookup.pm +0 -2445
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Canon.pm +0 -8184
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/CanonCustom.pm +0 -2582
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/CanonRaw.pm +0 -908
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/CanonVRD.pm +0 -1519
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/CaptureOne.pm +0 -235
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Casio.pm +0 -2057
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Charset.pm +0 -396
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DICOM.pm +0 -3874
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DNG.pm +0 -835
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DPX.pm +0 -151
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DV.pm +0 -319
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DarwinCore.pm +0 -322
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DjVu.pm +0 -376
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/EXE.pm +0 -1228
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Exif.pm +0 -4652
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FLAC.pm +0 -296
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FLIR.pm +0 -1531
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Fixup.pm +0 -354
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Flash.pm +0 -755
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FlashPix.pm +0 -1929
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Font.pm +0 -643
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FotoStation.pm +0 -259
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FujiFilm.pm +0 -1162
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GE.pm +0 -81
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GIF.pm +0 -542
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GIMP.pm +0 -258
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GPS.pm +0 -546
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GeoTiff.pm +0 -2202
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Geotag.pm +0 -1201
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/H264.pm +0 -1112
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/HP.pm +0 -262
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/HTML.pm +0 -576
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/HtmlDump.pm +0 -895
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ICC_Profile.pm +0 -1000
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ID3.pm +0 -1532
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/IPTC.pm +0 -1264
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ITC.pm +0 -215
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Import.pm +0 -313
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/InDesign.pm +0 -277
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/JPEG.pm +0 -601
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/JPEGDigest.pm +0 -2511
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/JVC.pm +0 -130
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Jpeg2000.pm +0 -873
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Kodak.pm +0 -2080
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/KyoceraRaw.pm +0 -173
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/LNK.pm +0 -723
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/cs.pm +0 -1588
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/de.pm +0 -8683
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/en_ca.pm +0 -848
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/en_gb.pm +0 -863
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/es.pm +0 -4020
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/fi.pm +0 -2854
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/fr.pm +0 -4748
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/it.pm +0 -7920
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/ja.pm +0 -5827
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/ko.pm +0 -2331
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/nl.pm +0 -3222
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/pl.pm +0 -1168
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/ru.pm +0 -768
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/sv.pm +0 -638
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/tr.pm +0 -544
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1330
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/zh_tw.pm +0 -801
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Leaf.pm +0 -515
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lytro.pm +0 -217
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/M2TS.pm +0 -725
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MIE.pm +0 -2561
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MIEUnits.pod +0 -377
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MIFF.pm +0 -279
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MNG.pm +0 -684
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MPC.pm +0 -156
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MPEG.pm +0 -736
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MPF.pm +0 -292
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MWG.pm +0 -748
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MXF.pm +0 -3032
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MakerNotes.pm +0 -1686
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Matroska.pm +0 -891
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Microsoft.pm +0 -884
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Minolta.pm +0 -2901
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MinoltaRaw.pm +0 -534
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Nikon.pm +0 -6578
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/NikonCapture.pm +0 -940
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/NikonCustom.pm +0 -5445
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Nintendo.pm +0 -128
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/OOXML.pm +0 -409
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Ogg.pm +0 -237
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Olympus.pm +0 -3696
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/OpenEXR.pm +0 -324
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PDF.pm +0 -2327
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PGF.pm +0 -143
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PICT.pm +0 -1260
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PLIST.pm +0 -453
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PNG.pm +0 -1190
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PPM.pm +0 -169
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PSP.pm +0 -305
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Palm.pm +0 -403
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Panasonic.pm +0 -2355
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PanasonicRaw.pm +0 -638
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Pentax.pm +0 -5877
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PhaseOne.pm +0 -557
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PhotoCD.pm +0 -507
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PhotoMechanic.pm +0 -256
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Photoshop.pm +0 -648
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PostScript.pm +0 -694
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PrintIM.pm +0 -125
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Qualcomm.pm +0 -1344
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/QuickTime.pm +0 -6305
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/README +0 -967
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/RIFF.pm +0 -1478
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/RSRC.pm +0 -241
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/RTF.pm +0 -383
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Radiance.pm +0 -144
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Rawzor.pm +0 -190
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Real.pm +0 -736
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Reconyx.pm +0 -190
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Ricoh.pm +0 -1114
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Samsung.pm +0 -1158
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Sanyo.pm +0 -439
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Scalado.pm +0 -141
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Shift.pl +0 -596
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Shortcuts.pm +0 -333
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Sigma.pm +0 -589
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/SigmaRaw.pm +0 -665
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Sony.pm +0 -8366
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/SonyIDC.pm +0 -330
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Stim.pm +0 -196
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/TagInfoXML.pm +0 -806
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/TagLookup.pm +0 -8745
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/TagNames.pod +0 -27987
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Theora.pm +0 -145
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Torrent.pm +0 -317
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Unknown.pm +0 -66
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Vorbis.pm +0 -237
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteCanonRaw.pl +0 -637
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteExif.pl +0 -3743
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteIPTC.pl +0 -702
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WritePDF.pl +0 -768
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WritePNG.pl +0 -390
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WritePhotoshop.pl +0 -266
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WritePostScript.pl +0 -777
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteQuickTime.pl +0 -358
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteXMP.pl +0 -1358
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Writer.pl +0 -5972
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/XMP.pm +0 -3840
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/XMP2.pl +0 -1305
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/XMPStruct.pl +0 -826
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ZIP.pm +0 -667
- data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/iWork.pm +0 -223
- data/bin/Image-ExifTool-9.78/perl-Image-ExifTool.spec +0 -110
- data/bin/Image-ExifTool-9.78/t/AFCP_2.out +0 -37
- data/bin/Image-ExifTool-9.78/t/AIFF_2.out +0 -32
- data/bin/Image-ExifTool-9.78/t/APE_2.out +0 -28
- data/bin/Image-ExifTool-9.78/t/APE_3.out +0 -57
- data/bin/Image-ExifTool-9.78/t/ASF_2.out +0 -54
- data/bin/Image-ExifTool-9.78/t/BMP_2.out +0 -21
- data/bin/Image-ExifTool-9.78/t/BigTIFF_2.out +0 -19
- data/bin/Image-ExifTool-9.78/t/CanonRaw_2.out +0 -166
- data/bin/Image-ExifTool-9.78/t/CanonRaw_4.out +0 -216
- data/bin/Image-ExifTool-9.78/t/CanonRaw_5.out +0 -208
- data/bin/Image-ExifTool-9.78/t/CanonRaw_6.out +0 -231
- data/bin/Image-ExifTool-9.78/t/CanonRaw_7.out +0 -247
- data/bin/Image-ExifTool-9.78/t/CanonVRD.t +0 -129
- data/bin/Image-ExifTool-9.78/t/CanonVRD_11.out +0 -118
- data/bin/Image-ExifTool-9.78/t/CanonVRD_12.out +0 -12
- data/bin/Image-ExifTool-9.78/t/CanonVRD_2.out +0 -116
- data/bin/Image-ExifTool-9.78/t/CanonVRD_3.out +0 -116
- data/bin/Image-ExifTool-9.78/t/CanonVRD_5.out +0 -3
- data/bin/Image-ExifTool-9.78/t/Canon_2.out +0 -353
- data/bin/Image-ExifTool-9.78/t/Casio_2.out +0 -70
- data/bin/Image-ExifTool-9.78/t/Casio_3.out +0 -100
- data/bin/Image-ExifTool-9.78/t/Casio_4.out +0 -26
- data/bin/Image-ExifTool-9.78/t/Casio_5.out +0 -78
- data/bin/Image-ExifTool-9.78/t/Casio_6.out +0 -115
- data/bin/Image-ExifTool-9.78/t/DICOM_2.out +0 -108
- data/bin/Image-ExifTool-9.78/t/DNG_2.out +0 -326
- data/bin/Image-ExifTool-9.78/t/DPX_2.out +0 -35
- data/bin/Image-ExifTool-9.78/t/DV_2.out +0 -24
- data/bin/Image-ExifTool-9.78/t/DjVu_2.out +0 -44
- data/bin/Image-ExifTool-9.78/t/EXE.t +0 -31
- data/bin/Image-ExifTool-9.78/t/EXE_2.out +0 -40
- data/bin/Image-ExifTool-9.78/t/EXE_3.out +0 -15
- data/bin/Image-ExifTool-9.78/t/EXE_4.out +0 -14
- data/bin/Image-ExifTool-9.78/t/ExifTool_16.out +0 -181
- data/bin/Image-ExifTool-9.78/t/ExifTool_17.out +0 -597
- data/bin/Image-ExifTool-9.78/t/ExifTool_2.out +0 -416
- data/bin/Image-ExifTool-9.78/t/ExifTool_28.out +0 -10
- data/bin/Image-ExifTool-9.78/t/ExifTool_3.out +0 -87
- data/bin/Image-ExifTool-9.78/t/ExifTool_6.out +0 -68
- data/bin/Image-ExifTool-9.78/t/FLAC_2.out +0 -25
- data/bin/Image-ExifTool-9.78/t/FLAC_3.out +0 -19
- data/bin/Image-ExifTool-9.78/t/FLIR_2.out +0 -110
- data/bin/Image-ExifTool-9.78/t/FLIR_3.out +0 -47
- data/bin/Image-ExifTool-9.78/t/FlashPix_2.out +0 -48
- data/bin/Image-ExifTool-9.78/t/Flash_2.out +0 -20
- data/bin/Image-ExifTool-9.78/t/Flash_3.out +0 -53
- data/bin/Image-ExifTool-9.78/t/Font_2.out +0 -23
- data/bin/Image-ExifTool-9.78/t/Font_3.out +0 -35
- data/bin/Image-ExifTool-9.78/t/Font_4.out +0 -26
- data/bin/Image-ExifTool-9.78/t/Font_5.out +0 -26
- data/bin/Image-ExifTool-9.78/t/Font_6.out +0 -36
- data/bin/Image-ExifTool-9.78/t/Font_7.out +0 -36
- data/bin/Image-ExifTool-9.78/t/FotoStation_2.out +0 -39
- data/bin/Image-ExifTool-9.78/t/FujiFilm_2.out +0 -87
- data/bin/Image-ExifTool-9.78/t/FujiFilm_3.out +0 -88
- data/bin/Image-ExifTool-9.78/t/FujiFilm_4.out +0 -137
- data/bin/Image-ExifTool-9.78/t/GE_2.out +0 -84
- data/bin/Image-ExifTool-9.78/t/GE_3.out +0 -84
- data/bin/Image-ExifTool-9.78/t/GIF_2.out +0 -40
- data/bin/Image-ExifTool-9.78/t/GIF_3.out +0 -41
- data/bin/Image-ExifTool-9.78/t/GIF_4.out +0 -16
- data/bin/Image-ExifTool-9.78/t/GIMP_2.out +0 -63
- data/bin/Image-ExifTool-9.78/t/GPS_2.out +0 -94
- data/bin/Image-ExifTool-9.78/t/GPS_3.out +0 -96
- data/bin/Image-ExifTool-9.78/t/GeoTiff_2.out +0 -36
- data/bin/Image-ExifTool-9.78/t/GeoTiff_3.out +0 -36
- data/bin/Image-ExifTool-9.78/t/Geotag.t +0 -181
- data/bin/Image-ExifTool-9.78/t/HTML_2.out +0 -68
- data/bin/Image-ExifTool-9.78/t/IPTC_2.out +0 -58
- data/bin/Image-ExifTool-9.78/t/IPTC_4.out +0 -56
- data/bin/Image-ExifTool-9.78/t/ITC_2.out +0 -19
- data/bin/Image-ExifTool-9.78/t/InDesign_2.out +0 -19
- data/bin/Image-ExifTool-9.78/t/InDesign_3.out +0 -21
- data/bin/Image-ExifTool-9.78/t/InDesign_4.out +0 -11
- data/bin/Image-ExifTool-9.78/t/Jpeg2000_2.out +0 -63
- data/bin/Image-ExifTool-9.78/t/Jpeg2000_3.out +0 -51
- data/bin/Image-ExifTool-9.78/t/Jpeg2000_4.out +0 -15
- data/bin/Image-ExifTool-9.78/t/Kodak_2.out +0 -109
- data/bin/Image-ExifTool-9.78/t/Kodak_3.out +0 -119
- data/bin/Image-ExifTool-9.78/t/KyoceraRaw_2.out +0 -27
- data/bin/Image-ExifTool-9.78/t/LNK_2.out +0 -45
- data/bin/Image-ExifTool-9.78/t/Lytro_2.out +0 -107
- data/bin/Image-ExifTool-9.78/t/M2TS_2.out +0 -27
- data/bin/Image-ExifTool-9.78/t/MIE_2.out +0 -67
- data/bin/Image-ExifTool-9.78/t/MIE_3.out +0 -134
- data/bin/Image-ExifTool-9.78/t/MIFF_2.out +0 -108
- data/bin/Image-ExifTool-9.78/t/MP3_2.out +0 -45
- data/bin/Image-ExifTool-9.78/t/MXF_2.out +0 -78
- data/bin/Image-ExifTool-9.78/t/Matroska_2.out +0 -64
- data/bin/Image-ExifTool-9.78/t/Minolta_2.out +0 -133
- data/bin/Image-ExifTool-9.78/t/Minolta_3.out +0 -146
- data/bin/Image-ExifTool-9.78/t/Minolta_4.out +0 -148
- data/bin/Image-ExifTool-9.78/t/Nikon_2.out +0 -82
- data/bin/Image-ExifTool-9.78/t/Nikon_3.out +0 -98
- data/bin/Image-ExifTool-9.78/t/Nikon_4.out +0 -174
- data/bin/Image-ExifTool-9.78/t/Nikon_5.out +0 -167
- data/bin/Image-ExifTool-9.78/t/Nikon_7.out +0 -259
- data/bin/Image-ExifTool-9.78/t/Olympus.t +0 -85
- data/bin/Image-ExifTool-9.78/t/Olympus_2.out +0 -79
- data/bin/Image-ExifTool-9.78/t/Olympus_3.out +0 -81
- data/bin/Image-ExifTool-9.78/t/Olympus_4.out +0 -192
- data/bin/Image-ExifTool-9.78/t/Olympus_5.out +0 -264
- data/bin/Image-ExifTool-9.78/t/Olympus_6.out +0 -151
- data/bin/Image-ExifTool-9.78/t/Olympus_7.out +0 -482
- data/bin/Image-ExifTool-9.78/t/OpenEXR_2.out +0 -23
- data/bin/Image-ExifTool-9.78/t/PDF_2.out +0 -117
- data/bin/Image-ExifTool-9.78/t/PGF_2.out +0 -32
- data/bin/Image-ExifTool-9.78/t/PICT_2.out +0 -15
- data/bin/Image-ExifTool-9.78/t/PLIST_2.out +0 -20
- data/bin/Image-ExifTool-9.78/t/PLIST_3.out +0 -20
- data/bin/Image-ExifTool-9.78/t/PNG_2.out +0 -22
- data/bin/Image-ExifTool-9.78/t/PNG_3.out +0 -121
- data/bin/Image-ExifTool-9.78/t/PNG_5.out +0 -17
- data/bin/Image-ExifTool-9.78/t/PPM_2.out +0 -15
- data/bin/Image-ExifTool-9.78/t/PPM_3.out +0 -9
- data/bin/Image-ExifTool-9.78/t/PSP_2.out +0 -32
- data/bin/Image-ExifTool-9.78/t/Palm_2.out +0 -31
- data/bin/Image-ExifTool-9.78/t/Panasonic_2.out +0 -99
- data/bin/Image-ExifTool-9.78/t/Panasonic_3.out +0 -119
- data/bin/Image-ExifTool-9.78/t/Panasonic_4.out +0 -204
- data/bin/Image-ExifTool-9.78/t/Panasonic_5.out +0 -242
- data/bin/Image-ExifTool-9.78/t/Pentax_2.out +0 -221
- data/bin/Image-ExifTool-9.78/t/Pentax_3.out +0 -263
- data/bin/Image-ExifTool-9.78/t/Pentax_4.out +0 -127
- data/bin/Image-ExifTool-9.78/t/PhotoCD_2.out +0 -35
- data/bin/Image-ExifTool-9.78/t/PhotoMechanic_2.out +0 -81
- data/bin/Image-ExifTool-9.78/t/Photoshop_2.out +0 -96
- data/bin/Image-ExifTool-9.78/t/Photoshop_3.out +0 -108
- data/bin/Image-ExifTool-9.78/t/PostScript_2.out +0 -64
- data/bin/Image-ExifTool-9.78/t/PostScript_3.out +0 -132
- data/bin/Image-ExifTool-9.78/t/QuickTime.t +0 -54
- data/bin/Image-ExifTool-9.78/t/QuickTime_2.out +0 -131
- data/bin/Image-ExifTool-9.78/t/QuickTime_3.out +0 -72
- data/bin/Image-ExifTool-9.78/t/RIFF_2.out +0 -24
- data/bin/Image-ExifTool-9.78/t/RIFF_3.out +0 -52
- data/bin/Image-ExifTool-9.78/t/RIFF_4.out +0 -16
- data/bin/Image-ExifTool-9.78/t/RTF_2.out +0 -20
- data/bin/Image-ExifTool-9.78/t/Radiance_2.out +0 -22
- data/bin/Image-ExifTool-9.78/t/Real_2.out +0 -68
- data/bin/Image-ExifTool-9.78/t/Real_3.out +0 -18
- data/bin/Image-ExifTool-9.78/t/Real_4.out +0 -11
- data/bin/Image-ExifTool-9.78/t/Ricoh_2.out +0 -70
- data/bin/Image-ExifTool-9.78/t/Ricoh_3.out +0 -98
- data/bin/Image-ExifTool-9.78/t/Ricoh_4.out +0 -112
- data/bin/Image-ExifTool-9.78/t/Sanyo_2.out +0 -101
- data/bin/Image-ExifTool-9.78/t/Sanyo_3.out +0 -111
- data/bin/Image-ExifTool-9.78/t/Sigma_2.out +0 -91
- data/bin/Image-ExifTool-9.78/t/Sigma_3.out +0 -94
- data/bin/Image-ExifTool-9.78/t/Sigma_4.out +0 -63
- data/bin/Image-ExifTool-9.78/t/Sigma_5.out +0 -192
- data/bin/Image-ExifTool-9.78/t/Sony_2.out +0 -84
- data/bin/Image-ExifTool-9.78/t/Sony_3.out +0 -85
- data/bin/Image-ExifTool-9.78/t/Sony_5.out +0 -32
- data/bin/Image-ExifTool-9.78/t/Torrent_2.out +0 -31
- data/bin/Image-ExifTool-9.78/t/Unknown_2.out +0 -90
- data/bin/Image-ExifTool-9.78/t/Unknown_3.out +0 -90
- data/bin/Image-ExifTool-9.78/t/Vorbis_2.out +0 -28
- data/bin/Image-ExifTool-9.78/t/Writer_10.out +0 -242
- data/bin/Image-ExifTool-9.78/t/Writer_11.out +0 -37
- data/bin/Image-ExifTool-9.78/t/Writer_13.out +0 -161
- data/bin/Image-ExifTool-9.78/t/Writer_14.out +0 -67
- data/bin/Image-ExifTool-9.78/t/Writer_15.out +0 -172
- data/bin/Image-ExifTool-9.78/t/Writer_19.out +0 -34
- data/bin/Image-ExifTool-9.78/t/Writer_2.out +0 -169
- data/bin/Image-ExifTool-9.78/t/Writer_25.out +0 -38
- data/bin/Image-ExifTool-9.78/t/Writer_26.out +0 -32
- data/bin/Image-ExifTool-9.78/t/Writer_31.out +0 -97
- data/bin/Image-ExifTool-9.78/t/Writer_35.out +0 -187
- data/bin/Image-ExifTool-9.78/t/Writer_38.out +0 -62
- data/bin/Image-ExifTool-9.78/t/Writer_4.out +0 -85
- data/bin/Image-ExifTool-9.78/t/Writer_46.out +0 -79
- data/bin/Image-ExifTool-9.78/t/Writer_47.out +0 -56
- data/bin/Image-ExifTool-9.78/t/Writer_48.out +0 -29
- data/bin/Image-ExifTool-9.78/t/Writer_51.out +0 -403
- data/bin/Image-ExifTool-9.78/t/Writer_52.out +0 -22
- data/bin/Image-ExifTool-9.78/t/Writer_53.out +0 -33
- data/bin/Image-ExifTool-9.78/t/Writer_6.out +0 -183
- data/bin/Image-ExifTool-9.78/t/Writer_7.out +0 -150
- data/bin/Image-ExifTool-9.78/t/Writer_9.out +0 -238
- data/bin/Image-ExifTool-9.78/t/XMP.t +0 -525
- data/bin/Image-ExifTool-9.78/t/XMP_10.out +0 -36
- data/bin/Image-ExifTool-9.78/t/XMP_2.out +0 -138
- data/bin/Image-ExifTool-9.78/t/XMP_24.out +0 -31
- data/bin/Image-ExifTool-9.78/t/XMP_25.out +0 -28
- data/bin/Image-ExifTool-9.78/t/XMP_26.out +0 -52
- data/bin/Image-ExifTool-9.78/t/XMP_27.out +0 -93
- data/bin/Image-ExifTool-9.78/t/XMP_28.out +0 -44
- data/bin/Image-ExifTool-9.78/t/XMP_29.out +0 -24
- data/bin/Image-ExifTool-9.78/t/XMP_3.out +0 -136
- data/bin/Image-ExifTool-9.78/t/XMP_31.out +0 -19
- data/bin/Image-ExifTool-9.78/t/XMP_36.out +0 -18
- data/bin/Image-ExifTool-9.78/t/XMP_37.out +0 -35
- data/bin/Image-ExifTool-9.78/t/XMP_39.out +0 -44
- data/bin/Image-ExifTool-9.78/t/XMP_41.out +0 -180
- data/bin/Image-ExifTool-9.78/t/XMP_5.out +0 -29
- data/bin/Image-ExifTool-9.78/t/XMP_6.out +0 -87
- data/bin/Image-ExifTool-9.78/t/XMP_8.out +0 -17
- data/bin/Image-ExifTool-9.78/t/ZIP_2.out +0 -18
- data/bin/Image-ExifTool-9.78/t/ZIP_3.out +0 -17
- data/bin/Image-ExifTool-9.78/t/ZIP_4.out +0 -213
- data/bin/Image-ExifTool-9.78/t/ZIP_5.out +0 -134
- data/bin/Image-ExifTool-9.78/t/ZIP_6.out +0 -49
- data/bin/Image-ExifTool-9.78/t/ZIP_7.out +0 -28
- data/bin/Image-ExifTool-9.78/t/images/XMP5.xmp +0 -158
@@ -1,2561 +0,0 @@
|
|
1
|
-
#------------------------------------------------------------------------------
|
2
|
-
# File: MIE.pm
|
3
|
-
#
|
4
|
-
# Description: Read/write MIE meta information
|
5
|
-
#
|
6
|
-
# Revisions: 11/18/2005 - P. Harvey Created
|
7
|
-
#------------------------------------------------------------------------------
|
8
|
-
|
9
|
-
package Image::ExifTool::MIE;
|
10
|
-
|
11
|
-
use strict;
|
12
|
-
use vars qw($VERSION %tableDefaults);
|
13
|
-
use Image::ExifTool qw(:DataAccess :Utils);
|
14
|
-
use Image::ExifTool::Exif;
|
15
|
-
use Image::ExifTool::GPS;
|
16
|
-
|
17
|
-
$VERSION = '1.42';
|
18
|
-
|
19
|
-
sub ProcessMIE($$);
|
20
|
-
sub ProcessMIEGroup($$$);
|
21
|
-
sub WriteMIEGroup($$$);
|
22
|
-
sub CheckMIE($$$);
|
23
|
-
sub GetLangInfo($$);
|
24
|
-
|
25
|
-
# local variables
|
26
|
-
my $hasZlib; # 1=Zlib available, 0=no Zlib
|
27
|
-
my %mieCode; # reverse lookup for MIE format names
|
28
|
-
my $doneMieMap; # flag indicating we added user-defined groups to %mieMap
|
29
|
-
|
30
|
-
# MIE format codes
|
31
|
-
my %mieFormat = (
|
32
|
-
0x00 => 'undef',
|
33
|
-
0x10 => 'MIE',
|
34
|
-
0x18 => 'MIE',
|
35
|
-
0x20 => 'string', # ASCII (ISO 8859-1)
|
36
|
-
0x28 => 'utf8',
|
37
|
-
0x29 => 'utf16',
|
38
|
-
0x2a => 'utf32',
|
39
|
-
0x30 => 'string_list',
|
40
|
-
0x38 => 'utf8_list',
|
41
|
-
0x39 => 'utf16_list',
|
42
|
-
0x3a => 'utf32_list',
|
43
|
-
0x40 => 'int8u',
|
44
|
-
0x41 => 'int16u',
|
45
|
-
0x42 => 'int32u',
|
46
|
-
0x43 => 'int64u',
|
47
|
-
0x48 => 'int8s',
|
48
|
-
0x49 => 'int16s',
|
49
|
-
0x4a => 'int32s',
|
50
|
-
0x4b => 'int64s',
|
51
|
-
0x52 => 'rational32u',
|
52
|
-
0x53 => 'rational64u',
|
53
|
-
0x5a => 'rational32s',
|
54
|
-
0x5b => 'rational64s',
|
55
|
-
0x61 => 'fixed16u',
|
56
|
-
0x62 => 'fixed32u',
|
57
|
-
0x69 => 'fixed16s',
|
58
|
-
0x6a => 'fixed32s',
|
59
|
-
0x72 => 'float',
|
60
|
-
0x73 => 'double',
|
61
|
-
0x80 => 'free',
|
62
|
-
);
|
63
|
-
|
64
|
-
# map of MIE directory locations
|
65
|
-
my %mieMap = (
|
66
|
-
'MIE-Meta' => 'MIE',
|
67
|
-
'MIE-Audio' => 'MIE-Meta',
|
68
|
-
'MIE-Camera' => 'MIE-Meta',
|
69
|
-
'MIE-Doc' => 'MIE-Meta',
|
70
|
-
'MIE-Geo' => 'MIE-Meta',
|
71
|
-
'MIE-Image' => 'MIE-Meta',
|
72
|
-
'MIE-MakerNotes' => 'MIE-Meta',
|
73
|
-
'MIE-Preview' => 'MIE-Meta',
|
74
|
-
'MIE-Thumbnail' => 'MIE-Meta',
|
75
|
-
'MIE-Video' => 'MIE-Meta',
|
76
|
-
'MIE-Flash' => 'MIE-Camera',
|
77
|
-
'MIE-Lens' => 'MIE-Camera',
|
78
|
-
'MIE-Orient' => 'MIE-Camera',
|
79
|
-
'MIE-Extender' => 'MIE-Lens',
|
80
|
-
'MIE-GPS' => 'MIE-Geo',
|
81
|
-
'MIE-UTM' => 'MIE-Geo',
|
82
|
-
'MIE-Canon' => 'MIE-MakerNotes',
|
83
|
-
EXIF => 'MIE-Meta',
|
84
|
-
XMP => 'MIE-Meta',
|
85
|
-
IPTC => 'MIE-Meta',
|
86
|
-
ICC_Profile => 'MIE-Meta',
|
87
|
-
ID3 => 'MIE-Meta',
|
88
|
-
CanonVRD => 'MIE-Canon',
|
89
|
-
IFD0 => 'EXIF',
|
90
|
-
IFD1 => 'IFD0',
|
91
|
-
ExifIFD => 'IFD0',
|
92
|
-
GPS => 'IFD0',
|
93
|
-
SubIFD => 'IFD0',
|
94
|
-
GlobParamIFD => 'IFD0',
|
95
|
-
PrintIM => 'IFD0',
|
96
|
-
InteropIFD => 'ExifIFD',
|
97
|
-
MakerNotes => 'ExifIFD',
|
98
|
-
);
|
99
|
-
|
100
|
-
# convenience variables for common tagInfo entries
|
101
|
-
my %binaryConv = (
|
102
|
-
Writable => 'undef',
|
103
|
-
Binary => 1,
|
104
|
-
);
|
105
|
-
my %dateInfo = (
|
106
|
-
Shift => 'Time',
|
107
|
-
PrintConv => '$self->ConvertDateTime($val)',
|
108
|
-
PrintConvInv => '$self->InverseDateTime($val)',
|
109
|
-
);
|
110
|
-
my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
111
|
-
my %offOn = ( 0 => 'Off', 1 => 'On' );
|
112
|
-
|
113
|
-
# default entries for MIE tag tables
|
114
|
-
%tableDefaults = (
|
115
|
-
PROCESS_PROC => \&ProcessMIE,
|
116
|
-
WRITE_PROC => \&ProcessMIE,
|
117
|
-
CHECK_PROC => \&CheckMIE,
|
118
|
-
LANG_INFO => \&GetLangInfo,
|
119
|
-
WRITABLE => 'string',
|
120
|
-
PREFERRED => 1,
|
121
|
-
);
|
122
|
-
|
123
|
-
# MIE info
|
124
|
-
%Image::ExifTool::MIE::Main = (
|
125
|
-
%tableDefaults,
|
126
|
-
GROUPS => { 1 => 'MIE-Main' },
|
127
|
-
WRITE_GROUP => 'MIE-Main',
|
128
|
-
NOTES => q{
|
129
|
-
MIE is a flexible format which may be used as a stand-alone meta information
|
130
|
-
format, for encapsulation of other files and information, or as a trailer
|
131
|
-
appended to other file formats. The tables below represent currently
|
132
|
-
defined MIE tags, however ExifTool will also extract any other information
|
133
|
-
present in a MIE file.
|
134
|
-
|
135
|
-
When writing MIE information, some special features are supported:
|
136
|
-
|
137
|
-
1) String values may be written as ASCII (ISO 8859-1) or UTF-8. ExifTool
|
138
|
-
automatically detects the presence of wide characters and treats the string
|
139
|
-
appropriately. Internally, UTF-8 text may be converted to UTF-16 or UTF-32
|
140
|
-
and stored in this format in the file if it is more compact.
|
141
|
-
|
142
|
-
2) All MIE string-value tags support localized text. Localized values are
|
143
|
-
written by adding a language/country code to the tag name in the form
|
144
|
-
C<TAG-xx_YY>, where C<TAG> is the tag name, C<xx> is a 2-character lower
|
145
|
-
case ISO 639-1 language code, and C<YY> is a 2-character upper case ISO
|
146
|
-
3166-1 alpha 2 country code (eg. C<Title-en_US>). But as usual, the user
|
147
|
-
interface is case-insensitive, and ExifTool will write the correct case to
|
148
|
-
the file.
|
149
|
-
|
150
|
-
3) Some numerical MIE tags allow units of measurement to be specified. For
|
151
|
-
these tags, units may be added in brackets immediately following the value
|
152
|
-
(eg. C<55(mi/h)>). If no units are specified, the default units are
|
153
|
-
written.
|
154
|
-
|
155
|
-
See L<http://owl.phy.queensu.ca/~phil/exiftool/MIE1.1-20070121.pdf> for the
|
156
|
-
official MIE specification.
|
157
|
-
},
|
158
|
-
'0Type' => {
|
159
|
-
Name => 'SubfileType',
|
160
|
-
Notes => q{
|
161
|
-
the capitalized common extension for this type of file. If the extension
|
162
|
-
has a dot-3 abbreviation, then the longer version is used here. For
|
163
|
-
instance, JPEG and TIFF are used, not JPG and TIF
|
164
|
-
},
|
165
|
-
},
|
166
|
-
'0Vers' => {
|
167
|
-
Name => 'MIEVersion',
|
168
|
-
Notes => 'version 1.1 is assumed if not specified',
|
169
|
-
},
|
170
|
-
'1Directory' => {
|
171
|
-
Name => 'SubfileDirectory',
|
172
|
-
Notes => 'original directory for the file',
|
173
|
-
},
|
174
|
-
'1Name' => {
|
175
|
-
Name => 'SubfileName',
|
176
|
-
Notes => 'the file name, including extension if it exists',
|
177
|
-
},
|
178
|
-
'2MIME' => { Name => 'SubfileMIMEType' },
|
179
|
-
Meta => {
|
180
|
-
SubDirectory => {
|
181
|
-
TagTable => 'Image::ExifTool::MIE::Meta',
|
182
|
-
DirName => 'MIE-Meta',
|
183
|
-
},
|
184
|
-
},
|
185
|
-
data => {
|
186
|
-
Name => 'SubfileData',
|
187
|
-
Notes => 'the subfile data',
|
188
|
-
%binaryConv,
|
189
|
-
},
|
190
|
-
rsrc => {
|
191
|
-
Name => 'SubfileResource',
|
192
|
-
Notes => 'subfile resource fork if it exists',
|
193
|
-
%binaryConv,
|
194
|
-
},
|
195
|
-
zmd5 => {
|
196
|
-
Name => 'MD5Digest',
|
197
|
-
Notes => q{
|
198
|
-
16-byte MD5 digest written in binary form or as a 32-character hex-encoded
|
199
|
-
ASCII string. Value is an MD5 digest of the entire 0MIE group as it would be
|
200
|
-
with the digest value itself set to all null bytes
|
201
|
-
},
|
202
|
-
},
|
203
|
-
zmie => {
|
204
|
-
Name => 'TrailerSignature',
|
205
|
-
Writable => 'undef',
|
206
|
-
Notes => q{
|
207
|
-
used as the last element in the main "0MIE" group to identify a MIE trailer
|
208
|
-
when appended to another type of file. ExifTool will create this tag if set
|
209
|
-
to any value, but always with an empty data block
|
210
|
-
},
|
211
|
-
ValueConvInv => '""', # data block must be empty
|
212
|
-
},
|
213
|
-
);
|
214
|
-
|
215
|
-
# MIE meta information group
|
216
|
-
%Image::ExifTool::MIE::Meta = (
|
217
|
-
%tableDefaults,
|
218
|
-
GROUPS => { 1 => 'MIE-Meta', 2 => 'Image' },
|
219
|
-
WRITE_GROUP => 'MIE-Meta',
|
220
|
-
Audio => {
|
221
|
-
SubDirectory => {
|
222
|
-
TagTable => 'Image::ExifTool::MIE::Audio',
|
223
|
-
DirName => 'MIE-Audio',
|
224
|
-
},
|
225
|
-
},
|
226
|
-
Camera => {
|
227
|
-
SubDirectory => {
|
228
|
-
TagTable => 'Image::ExifTool::MIE::Camera',
|
229
|
-
DirName => 'MIE-Camera',
|
230
|
-
},
|
231
|
-
},
|
232
|
-
Document => {
|
233
|
-
SubDirectory => {
|
234
|
-
TagTable => 'Image::ExifTool::MIE::Doc',
|
235
|
-
DirName => 'MIE-Doc',
|
236
|
-
},
|
237
|
-
},
|
238
|
-
EXIF => {
|
239
|
-
SubDirectory => {
|
240
|
-
TagTable => 'Image::ExifTool::Exif::Main',
|
241
|
-
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
242
|
-
WriteProc => \&Image::ExifTool::WriteTIFF,
|
243
|
-
},
|
244
|
-
},
|
245
|
-
Geo => {
|
246
|
-
SubDirectory => {
|
247
|
-
TagTable => 'Image::ExifTool::MIE::Geo',
|
248
|
-
DirName => 'MIE-Geo',
|
249
|
-
},
|
250
|
-
},
|
251
|
-
ICCProfile => {
|
252
|
-
Name => 'ICC_Profile',
|
253
|
-
SubDirectory => { TagTable => 'Image::ExifTool::ICC_Profile::Main' },
|
254
|
-
},
|
255
|
-
ID3 => { SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' } },
|
256
|
-
IPTC => { SubDirectory => { TagTable => 'Image::ExifTool::IPTC::Main' } },
|
257
|
-
Image => {
|
258
|
-
SubDirectory => {
|
259
|
-
TagTable => 'Image::ExifTool::MIE::Image',
|
260
|
-
DirName => 'MIE-Image',
|
261
|
-
},
|
262
|
-
},
|
263
|
-
MakerNotes => {
|
264
|
-
SubDirectory => {
|
265
|
-
TagTable => 'Image::ExifTool::MIE::MakerNotes',
|
266
|
-
DirName => 'MIE-MakerNotes',
|
267
|
-
},
|
268
|
-
},
|
269
|
-
Preview => {
|
270
|
-
SubDirectory => {
|
271
|
-
TagTable => 'Image::ExifTool::MIE::Preview',
|
272
|
-
DirName => 'MIE-Preview',
|
273
|
-
},
|
274
|
-
},
|
275
|
-
Thumbnail => {
|
276
|
-
SubDirectory => {
|
277
|
-
TagTable => 'Image::ExifTool::MIE::Thumbnail',
|
278
|
-
DirName => 'MIE-Thumbnail',
|
279
|
-
},
|
280
|
-
},
|
281
|
-
Video => {
|
282
|
-
SubDirectory => {
|
283
|
-
TagTable => 'Image::ExifTool::MIE::Video',
|
284
|
-
DirName => 'MIE-Video',
|
285
|
-
},
|
286
|
-
},
|
287
|
-
XMP => { SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' } },
|
288
|
-
);
|
289
|
-
|
290
|
-
# MIE document information
|
291
|
-
%Image::ExifTool::MIE::Doc = (
|
292
|
-
%tableDefaults,
|
293
|
-
GROUPS => { 1 => 'MIE-Doc', 2 => 'Document' },
|
294
|
-
WRITE_GROUP => 'MIE-Doc',
|
295
|
-
NOTES => 'Information describing the main document, image or file.',
|
296
|
-
Author => { Groups => { 2 => 'Author' } },
|
297
|
-
Comment => { },
|
298
|
-
Contributors=> { Groups => { 2 => 'Author' }, List => 1 },
|
299
|
-
Copyright => { Groups => { 2 => 'Author' } },
|
300
|
-
CreateDate => { Groups => { 2 => 'Time' }, %dateInfo },
|
301
|
-
EMail => { Groups => { 2 => 'Author' } },
|
302
|
-
Keywords => { List => 1 },
|
303
|
-
ModifyDate => { Groups => { 2 => 'Time' }, %dateInfo },
|
304
|
-
OriginalDate=> {
|
305
|
-
Name => 'DateTimeOriginal',
|
306
|
-
Description => 'Date/Time Original',
|
307
|
-
Groups => { 2 => 'Time' },
|
308
|
-
%dateInfo,
|
309
|
-
},
|
310
|
-
Phone => { Name => 'PhoneNumber', Groups => { 2 => 'Author' } },
|
311
|
-
References => { List => 1 },
|
312
|
-
Software => { },
|
313
|
-
Title => { },
|
314
|
-
URL => { },
|
315
|
-
);
|
316
|
-
|
317
|
-
# MIE geographic information
|
318
|
-
%Image::ExifTool::MIE::Geo = (
|
319
|
-
%tableDefaults,
|
320
|
-
GROUPS => { 1 => 'MIE-Geo', 2 => 'Location' },
|
321
|
-
WRITE_GROUP => 'MIE-Geo',
|
322
|
-
NOTES => 'Information related to geographic location.',
|
323
|
-
Address => { },
|
324
|
-
City => { },
|
325
|
-
Country => { },
|
326
|
-
GPS => {
|
327
|
-
SubDirectory => {
|
328
|
-
TagTable => 'Image::ExifTool::MIE::GPS',
|
329
|
-
DirName => 'MIE-GPS',
|
330
|
-
},
|
331
|
-
},
|
332
|
-
PostalCode => { },
|
333
|
-
State => { Notes => 'state or province' },
|
334
|
-
UTM => {
|
335
|
-
SubDirectory => {
|
336
|
-
TagTable => 'Image::ExifTool::MIE::UTM',
|
337
|
-
DirName => 'MIE-UTM',
|
338
|
-
},
|
339
|
-
},
|
340
|
-
);
|
341
|
-
|
342
|
-
# MIE GPS information
|
343
|
-
%Image::ExifTool::MIE::GPS = (
|
344
|
-
%tableDefaults,
|
345
|
-
GROUPS => { 1 => 'MIE-GPS', 2 => 'Location' },
|
346
|
-
WRITE_GROUP => 'MIE-GPS',
|
347
|
-
Altitude => {
|
348
|
-
Name => 'GPSAltitude',
|
349
|
-
Writable => 'rational64s',
|
350
|
-
Units => [ qw(m ft) ],
|
351
|
-
Notes => q{'m' above sea level unless 'ft' specified},
|
352
|
-
},
|
353
|
-
Bearing => {
|
354
|
-
Name => 'GPSDestBearing',
|
355
|
-
Writable => 'rational64s',
|
356
|
-
Units => [ qw(deg deg{mag}) ],
|
357
|
-
Notes => q{'deg' CW from true north unless 'deg{mag}' specified},
|
358
|
-
},
|
359
|
-
Datum => { Name => 'GPSMapDatum', Notes => 'WGS-84 assumed if not specified' },
|
360
|
-
Differential => {
|
361
|
-
Name => 'GPSDifferential',
|
362
|
-
Writable => 'int8u',
|
363
|
-
PrintConv => {
|
364
|
-
0 => 'No Correction',
|
365
|
-
1 => 'Differential Corrected',
|
366
|
-
},
|
367
|
-
},
|
368
|
-
Distance => {
|
369
|
-
Name => 'GPSDestDistance',
|
370
|
-
Writable => 'rational64s',
|
371
|
-
Units => [ qw(km mi nmi) ],
|
372
|
-
Notes => q{'km' unless 'mi' or 'nmi' specified},
|
373
|
-
},
|
374
|
-
Heading => {
|
375
|
-
Name => 'GPSTrack',
|
376
|
-
Writable => 'rational64s',
|
377
|
-
Units => [ qw(deg deg{mag}) ],
|
378
|
-
Notes => q{'deg' CW from true north unless 'deg{mag}' specified},
|
379
|
-
},
|
380
|
-
Latitude => {
|
381
|
-
Name => 'GPSLatitude',
|
382
|
-
Writable => 'rational64s',
|
383
|
-
Count => -1,
|
384
|
-
Notes => q{
|
385
|
-
1 to 3 numbers: degrees, minutes then seconds. South latitudes are stored
|
386
|
-
as all negative numbers, but may be entered as positive numbers with a
|
387
|
-
trailing 'S' for convenience. For example, these are all equivalent: "-40
|
388
|
-
-30", "-40.5", "40 30 0.00 S"
|
389
|
-
},
|
390
|
-
ValueConv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
391
|
-
ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 0)',
|
392
|
-
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
393
|
-
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
394
|
-
},
|
395
|
-
Longitude => {
|
396
|
-
Name => 'GPSLongitude',
|
397
|
-
Writable => 'rational64s',
|
398
|
-
Count => -1,
|
399
|
-
Notes => q{
|
400
|
-
1 to 3 numbers: degrees, minutes then seconds. West longitudes are
|
401
|
-
negative, but may be entered as positive numbers with a trailing 'W'
|
402
|
-
},
|
403
|
-
ValueConv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
404
|
-
ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 0)',
|
405
|
-
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
406
|
-
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
407
|
-
},
|
408
|
-
MeasureMode => {
|
409
|
-
Name => 'GPSMeasureMode',
|
410
|
-
Writable => 'int8u',
|
411
|
-
PrintConv => { 2 => '2-D', 3 => '3-D' },
|
412
|
-
},
|
413
|
-
Satellites => 'GPSSatellites',
|
414
|
-
Speed => {
|
415
|
-
Name => 'GPSSpeed',
|
416
|
-
Writable => 'rational64s',
|
417
|
-
Units => [ qw(km/h mi/h m/s kn) ],
|
418
|
-
Notes => q{'km/h' unless 'mi/h', 'm/s' or 'kn' specified},
|
419
|
-
},
|
420
|
-
DateTime => { Name => 'GPSDateTime', Groups => { 2 => 'Time' }, %dateInfo },
|
421
|
-
);
|
422
|
-
|
423
|
-
# MIE UTM information
|
424
|
-
%Image::ExifTool::MIE::UTM = (
|
425
|
-
%tableDefaults,
|
426
|
-
GROUPS => { 1 => 'MIE-UTM', 2 => 'Location' },
|
427
|
-
WRITE_GROUP => 'MIE-UTM',
|
428
|
-
Datum => { Name => 'UTMMapDatum', Notes => 'WGS-84 assumed if not specified' },
|
429
|
-
Easting => { Name => 'UTMEasting' },
|
430
|
-
Northing => { Name => 'UTMNorthing' },
|
431
|
-
Zone => { Name => 'UTMZone', Writable => 'int8s' },
|
432
|
-
);
|
433
|
-
|
434
|
-
# MIE image information
|
435
|
-
%Image::ExifTool::MIE::Image = (
|
436
|
-
%tableDefaults,
|
437
|
-
GROUPS => { 1 => 'MIE-Image', 2 => 'Image' },
|
438
|
-
WRITE_GROUP => 'MIE-Image',
|
439
|
-
'0Type' => { Name => 'FullSizeImageType', Notes => 'JPEG if not specified' },
|
440
|
-
'1Name' => { Name => 'FullSizeImageName' },
|
441
|
-
BitDepth => { Name => 'BitDepth', Writable => 'int16u' },
|
442
|
-
ColorSpace => { Notes => 'standard ColorSpace values are "sRGB" and "Adobe RGB"' },
|
443
|
-
Components => {
|
444
|
-
Name => 'ComponentsConfiguration',
|
445
|
-
Notes => 'string composed of R, G, B, Y, Cb and Cr',
|
446
|
-
},
|
447
|
-
Compression => { Name => 'CompressionRatio', Writable => 'rational32u' },
|
448
|
-
ImageSize => {
|
449
|
-
Writable => 'int16u',
|
450
|
-
Count => -1,
|
451
|
-
Notes => '2 or 3 values, for number of XY or XYZ pixels',
|
452
|
-
PrintConv => '$val=~tr/ /x/;$val',
|
453
|
-
PrintConvInv => '$val=~tr/x/ /;$val',
|
454
|
-
},
|
455
|
-
Resolution => {
|
456
|
-
Writable => 'rational64u',
|
457
|
-
Units => [ qw(/in /cm /deg /arcmin /arcsec), '' ],
|
458
|
-
Count => -1,
|
459
|
-
Notes => q{
|
460
|
-
1 to 3 values. A single value for equal resolution in all directions, or
|
461
|
-
separate X, Y and Z values if necessary. Units are '/in' unless '/cm',
|
462
|
-
'/deg', '/arcmin', '/arcsec' or '' specified
|
463
|
-
},
|
464
|
-
PrintConv => '$val=~tr/ /x/;$val',
|
465
|
-
PrintConvInv => '$val=~tr/x/ /;$val',
|
466
|
-
},
|
467
|
-
data => {
|
468
|
-
Name => 'FullSizeImage',
|
469
|
-
%binaryConv,
|
470
|
-
RawConv => '$self->ValidateImage(\$val,$tag)',
|
471
|
-
},
|
472
|
-
);
|
473
|
-
|
474
|
-
# MIE preview image
|
475
|
-
%Image::ExifTool::MIE::Preview = (
|
476
|
-
%tableDefaults,
|
477
|
-
GROUPS => { 1 => 'MIE-Preview', 2 => 'Image' },
|
478
|
-
WRITE_GROUP => 'MIE-Preview',
|
479
|
-
'0Type' => { Name => 'PreviewImageType', Notes => 'JPEG if not specified' },
|
480
|
-
'1Name' => { Name => 'PreviewImageName' },
|
481
|
-
ImageSize => {
|
482
|
-
Name => 'PreviewImageSize',
|
483
|
-
Writable => 'int16u',
|
484
|
-
Count => -1,
|
485
|
-
Notes => '2 or 3 values, for number of XY or XYZ pixels',
|
486
|
-
PrintConv => '$val=~tr/ /x/;$val',
|
487
|
-
PrintConvInv => '$val=~tr/x/ /;$val',
|
488
|
-
},
|
489
|
-
data => {
|
490
|
-
Name => 'PreviewImage',
|
491
|
-
%binaryConv,
|
492
|
-
RawConv => '$self->ValidateImage(\$val,$tag)',
|
493
|
-
},
|
494
|
-
);
|
495
|
-
|
496
|
-
# MIE thumbnail image
|
497
|
-
%Image::ExifTool::MIE::Thumbnail = (
|
498
|
-
%tableDefaults,
|
499
|
-
GROUPS => { 1 => 'MIE-Thumbnail', 2 => 'Image' },
|
500
|
-
WRITE_GROUP => 'MIE-Thumbnail',
|
501
|
-
'0Type' => { Name => 'ThumbnailImageType', Notes => 'JPEG if not specified' },
|
502
|
-
'1Name' => { Name => 'ThumbnailImageName' },
|
503
|
-
ImageSize => {
|
504
|
-
Name => 'ThumbnailImageSize',
|
505
|
-
Writable => 'int16u',
|
506
|
-
Count => -1,
|
507
|
-
Notes => '2 or 3 values, for number of XY or XYZ pixels',
|
508
|
-
PrintConv => '$val=~tr/ /x/;$val',
|
509
|
-
PrintConvInv => '$val=~tr/x/ /;$val',
|
510
|
-
},
|
511
|
-
data => {
|
512
|
-
Name => 'ThumbnailImage',
|
513
|
-
%binaryConv,
|
514
|
-
RawConv => '$self->ValidateImage(\$val,$tag)',
|
515
|
-
},
|
516
|
-
);
|
517
|
-
|
518
|
-
# MIE audio information
|
519
|
-
%Image::ExifTool::MIE::Audio = (
|
520
|
-
%tableDefaults,
|
521
|
-
GROUPS => { 1 => 'MIE-Audio', 2 => 'Audio' },
|
522
|
-
WRITE_GROUP => 'MIE-Audio',
|
523
|
-
NOTES => q{
|
524
|
-
For the Audio group (and any other group containing a 'data' element), tags
|
525
|
-
refer to the contained data if present, otherwise they refer to the main
|
526
|
-
SubfileData. The C<0Type> and C<1Name> elements should exist only if C<data>
|
527
|
-
is present.
|
528
|
-
},
|
529
|
-
'0Type' => { Name => 'RelatedAudioFileType', Notes => 'MP3 if not specified' },
|
530
|
-
'1Name' => { Name => 'RelatedAudioFileName' },
|
531
|
-
SampleBits => { Writable => 'int16u' },
|
532
|
-
Channels => { Writable => 'int8u' },
|
533
|
-
Compression => { Name => 'AudioCompression' },
|
534
|
-
Duration => { Writable => 'rational64u', PrintConv => 'ConvertDuration($val)' },
|
535
|
-
SampleRate => { Writable => 'int32u' },
|
536
|
-
data => { Name => 'RelatedAudioFile', %binaryConv },
|
537
|
-
);
|
538
|
-
|
539
|
-
# MIE video information
|
540
|
-
%Image::ExifTool::MIE::Video = (
|
541
|
-
%tableDefaults,
|
542
|
-
GROUPS => { 1 => 'MIE-Video', 2 => 'Video' },
|
543
|
-
WRITE_GROUP => 'MIE-Video',
|
544
|
-
'0Type' => { Name => 'RelatedVideoFileType', Notes => 'MOV if not specified' },
|
545
|
-
'1Name' => { Name => 'RelatedVideoFileName' },
|
546
|
-
Codec => { },
|
547
|
-
Duration => { Writable => 'rational64u', PrintConv => 'ConvertDuration($val)' },
|
548
|
-
data => { Name => 'RelatedVideoFile', %binaryConv },
|
549
|
-
);
|
550
|
-
|
551
|
-
# MIE camera information
|
552
|
-
%Image::ExifTool::MIE::Camera = (
|
553
|
-
%tableDefaults,
|
554
|
-
GROUPS => { 1 => 'MIE-Camera', 2 => 'Camera' },
|
555
|
-
WRITE_GROUP => 'MIE-Camera',
|
556
|
-
Brightness => { Writable => 'int8s' },
|
557
|
-
ColorTemperature=> { Writable => 'int32u' },
|
558
|
-
ColorBalance => {
|
559
|
-
Writable => 'rational64u',
|
560
|
-
Count => 3,
|
561
|
-
Notes => 'RGB scaling factors',
|
562
|
-
},
|
563
|
-
Contrast => { Writable => 'int8s' },
|
564
|
-
DigitalZoom => { Writable => 'rational64u' },
|
565
|
-
ExposureComp => { Name => 'ExposureCompensation', Writable => 'rational64s' },
|
566
|
-
ExposureMode => { },
|
567
|
-
ExposureTime => {
|
568
|
-
Writable => 'rational64u',
|
569
|
-
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
|
570
|
-
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
571
|
-
},
|
572
|
-
Flash => {
|
573
|
-
SubDirectory => {
|
574
|
-
TagTable => 'Image::ExifTool::MIE::Flash',
|
575
|
-
DirName => 'MIE-Flash',
|
576
|
-
},
|
577
|
-
},
|
578
|
-
FirmwareVersion => { },
|
579
|
-
FocusMode => { },
|
580
|
-
ISO => { Writable => 'int16u' },
|
581
|
-
ISOSetting => {
|
582
|
-
Writable => 'int16u',
|
583
|
-
Notes => '0 = Auto, otherwise manual ISO speed setting',
|
584
|
-
},
|
585
|
-
ImageNumber => { Writable => 'int32u' },
|
586
|
-
ImageQuality => { Notes => 'Economy, Normal, Fine, Super Fine or Raw' },
|
587
|
-
ImageStabilization => { Writable => 'int8u', %offOn },
|
588
|
-
Lens => {
|
589
|
-
SubDirectory => {
|
590
|
-
TagTable => 'Image::ExifTool::MIE::Lens',
|
591
|
-
DirName => 'MIE-Lens',
|
592
|
-
},
|
593
|
-
},
|
594
|
-
Make => { },
|
595
|
-
MeasuredEV => { Writable => 'rational64s' },
|
596
|
-
Model => { },
|
597
|
-
OwnerName => { },
|
598
|
-
Orientation => {
|
599
|
-
SubDirectory => {
|
600
|
-
TagTable => 'Image::ExifTool::MIE::Orient',
|
601
|
-
DirName => 'MIE-Orient',
|
602
|
-
},
|
603
|
-
},
|
604
|
-
Saturation => { Writable => 'int8s' },
|
605
|
-
SensorSize => {
|
606
|
-
Writable => 'rational64u',
|
607
|
-
Count => 2,
|
608
|
-
Notes => 'width and height of active sensor area in mm',
|
609
|
-
},
|
610
|
-
SerialNumber => { },
|
611
|
-
Sharpness => { Writable => 'int8s' },
|
612
|
-
ShootingMode => { },
|
613
|
-
);
|
614
|
-
|
615
|
-
# Camera orientation information
|
616
|
-
%Image::ExifTool::MIE::Orient = (
|
617
|
-
%tableDefaults,
|
618
|
-
GROUPS => { 1 => 'MIE-Orient', 2 => 'Camera' },
|
619
|
-
WRITE_GROUP => 'MIE-Orient',
|
620
|
-
NOTES => 'These tags describe the camera orientation.',
|
621
|
-
Azimuth => {
|
622
|
-
Writable => 'rational64s',
|
623
|
-
Units => [ qw(deg deg{mag}) ],
|
624
|
-
Notes => q{'deg' CW from true north unless 'deg{mag}' specified},
|
625
|
-
},
|
626
|
-
Declination => { Writable => 'rational64s' },
|
627
|
-
Elevation => { Writable => 'rational64s' },
|
628
|
-
RightAscension => { Writable => 'rational64s' },
|
629
|
-
Rotation => {
|
630
|
-
Writable => 'rational64s',
|
631
|
-
Notes => 'CW rotation angle of camera about lens axis',
|
632
|
-
},
|
633
|
-
);
|
634
|
-
|
635
|
-
# MIE camera lens information
|
636
|
-
%Image::ExifTool::MIE::Lens = (
|
637
|
-
%tableDefaults,
|
638
|
-
GROUPS => { 1 => 'MIE-Lens', 2 => 'Camera' },
|
639
|
-
WRITE_GROUP => 'MIE-Lens',
|
640
|
-
NOTES => q{
|
641
|
-
All recorded lens parameters (focal length, aperture, etc) include the
|
642
|
-
effects of the extender if present.
|
643
|
-
},
|
644
|
-
Extender => {
|
645
|
-
SubDirectory => {
|
646
|
-
TagTable => 'Image::ExifTool::MIE::Extender',
|
647
|
-
DirName => 'MIE-Extender',
|
648
|
-
},
|
649
|
-
},
|
650
|
-
FNumber => { Writable => 'rational64u' },
|
651
|
-
FocalLength => { Writable => 'rational64u', Notes => 'all focal lengths in mm' },
|
652
|
-
FocusDistance => {
|
653
|
-
Writable => 'rational64u',
|
654
|
-
Units => [ qw(m ft) ],
|
655
|
-
Notes => q{'m' unless 'ft' specified},
|
656
|
-
},
|
657
|
-
Make => { Name => 'LensMake' },
|
658
|
-
MaxAperture => { Writable => 'rational64u' },
|
659
|
-
MaxApertureAtMaxFocal => { Writable => 'rational64u' },
|
660
|
-
MaxFocalLength => { Writable => 'rational64u' },
|
661
|
-
MinAperture => { Writable => 'rational64u' },
|
662
|
-
MinFocalLength => { Writable => 'rational64u' },
|
663
|
-
Model => { Name => 'LensModel' },
|
664
|
-
OpticalZoom => { Writable => 'rational64u' },
|
665
|
-
SerialNumber => { Name => 'LensSerialNumber' },
|
666
|
-
);
|
667
|
-
|
668
|
-
# MIE lens extender information
|
669
|
-
%Image::ExifTool::MIE::Extender = (
|
670
|
-
%tableDefaults,
|
671
|
-
GROUPS => { 1 => 'MIE-Extender', 2 => 'Camera' },
|
672
|
-
WRITE_GROUP => 'MIE-Extender',
|
673
|
-
Magnification => { Name => 'ExtenderMagnification', Writable => 'rational64s' },
|
674
|
-
Make => { Name => 'ExtenderMake' },
|
675
|
-
Model => { Name => 'ExtenderModel' },
|
676
|
-
SerialNumber => { Name => 'ExtenderSerialNumber' },
|
677
|
-
);
|
678
|
-
|
679
|
-
# MIE camera flash information
|
680
|
-
%Image::ExifTool::MIE::Flash = (
|
681
|
-
%tableDefaults,
|
682
|
-
GROUPS => { 1 => 'MIE-Flash', 2 => 'Camera' },
|
683
|
-
WRITE_GROUP => 'MIE-Flash',
|
684
|
-
ExposureComp => { Name => 'FlashExposureComp', Writable => 'rational64s' },
|
685
|
-
Fired => { Name => 'FlashFired', Writable => 'int8u', PrintConv => \%noYes },
|
686
|
-
GuideNumber => { Name => 'FlashGuideNumber' },
|
687
|
-
Make => { Name => 'FlashMake' },
|
688
|
-
Mode => { Name => 'FlashMode' },
|
689
|
-
Model => { Name => 'FlashModel' },
|
690
|
-
SerialNumber => { Name => 'FlashSerialNumber' },
|
691
|
-
Type => { Name => 'FlashType', Notes => '"Internal" or "External"' },
|
692
|
-
);
|
693
|
-
|
694
|
-
# MIE maker notes information
|
695
|
-
%Image::ExifTool::MIE::MakerNotes = (
|
696
|
-
%tableDefaults,
|
697
|
-
GROUPS => { 1 => 'MIE-MakerNotes' },
|
698
|
-
WRITE_GROUP => 'MIE-MakerNotes',
|
699
|
-
NOTES => q{
|
700
|
-
MIE maker notes are contained within separate groups for each manufacturer
|
701
|
-
to avoid name conflicts.
|
702
|
-
},
|
703
|
-
Canon => {
|
704
|
-
SubDirectory => {
|
705
|
-
TagTable => 'Image::ExifTool::MIE::Canon',
|
706
|
-
DirName => 'MIE-Canon',
|
707
|
-
},
|
708
|
-
},
|
709
|
-
Casio => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
710
|
-
FujiFilm => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
711
|
-
Kodak => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
712
|
-
KonicaMinolta=>{ SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
713
|
-
Nikon => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
714
|
-
Olympus => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
715
|
-
Panasonic => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
716
|
-
Pentax => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
717
|
-
Ricoh => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
718
|
-
Sigma => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
719
|
-
Sony => { SubDirectory => { TagTable => 'Image::ExifTool::MIE::Unknown' } },
|
720
|
-
);
|
721
|
-
|
722
|
-
# MIE Canon-specific information
|
723
|
-
%Image::ExifTool::MIE::Canon = (
|
724
|
-
%tableDefaults,
|
725
|
-
GROUPS => { 1 => 'MIE-Canon' },
|
726
|
-
WRITE_GROUP => 'MIE-Canon',
|
727
|
-
VRD => {
|
728
|
-
Name => 'CanonVRD',
|
729
|
-
SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::Main' },
|
730
|
-
},
|
731
|
-
);
|
732
|
-
|
733
|
-
%Image::ExifTool::MIE::Unknown = (
|
734
|
-
PROCESS_PROC => \&ProcessMIE,
|
735
|
-
GROUPS => { 1 => 'MIE-Unknown' },
|
736
|
-
);
|
737
|
-
|
738
|
-
#------------------------------------------------------------------------------
|
739
|
-
# Add user-defined MIE groups to %mieMap
|
740
|
-
# Inputs: none; Returns: nothing, but sets $doneMieMap flag
|
741
|
-
sub UpdateMieMap()
|
742
|
-
{
|
743
|
-
$doneMieMap = 1; # set flag so we only do this once
|
744
|
-
return unless %Image::ExifTool::UserDefined;
|
745
|
-
my ($tableName, @tables, %doneTable, $tagID);
|
746
|
-
# get list of top-level MIE tables with user-defined tags
|
747
|
-
foreach $tableName (keys %Image::ExifTool::UserDefined) {
|
748
|
-
next unless $tableName =~ /^Image::ExifTool::MIE::/;
|
749
|
-
my $userTable = $Image::ExifTool::UserDefined{$tableName};
|
750
|
-
my $tagTablePtr = GetTagTable($tableName) or next;
|
751
|
-
# copy the WRITE_GROUP from the actual table
|
752
|
-
$$userTable{WRITE_GROUP} = $$tagTablePtr{WRITE_GROUP};
|
753
|
-
# add to list of tables to process
|
754
|
-
$doneTable{$tableName} = 1;
|
755
|
-
push @tables, [$tableName, $userTable];
|
756
|
-
}
|
757
|
-
# recursively add all user-defined groups to MIE map
|
758
|
-
while (@tables) {
|
759
|
-
my ($tableName, $tagTablePtr) = @{shift @tables};
|
760
|
-
my $parent = $$tagTablePtr{WRITE_GROUP};
|
761
|
-
$parent or warn("No WRITE_GROUP for $tableName\n"), next;
|
762
|
-
$mieMap{$parent} or warn("$parent is not in MIE map\n"), next;
|
763
|
-
foreach $tagID (TagTableKeys($tagTablePtr)) {
|
764
|
-
my $tagInfo = $$tagTablePtr{$tagID};
|
765
|
-
next unless ref $tagInfo eq 'HASH' and $$tagInfo{SubDirectory};
|
766
|
-
my $subTableName = $tagInfo->{SubDirectory}->{TagTable};
|
767
|
-
my $subTablePtr = GetTagTable($subTableName) or next;
|
768
|
-
# only care about MIE tables
|
769
|
-
next unless $$subTablePtr{PROCESS_PROC} and
|
770
|
-
$$subTablePtr{PROCESS_PROC} eq \&ProcessMIE;
|
771
|
-
my $group = $$subTablePtr{WRITE_GROUP};
|
772
|
-
$group or warn("No WRITE_GROUP for $subTableName\n"), next;
|
773
|
-
if ($mieMap{$group} and $mieMap{$group} ne $parent) {
|
774
|
-
warn("$group already has different parent ($mieMap{$group})\n"), next;
|
775
|
-
}
|
776
|
-
$mieMap{$group} = $parent; # add to map
|
777
|
-
# process tables within this one too
|
778
|
-
$doneTable{$subTableName} and next;
|
779
|
-
$doneTable{$subTableName} = 1;
|
780
|
-
push @tables, [$subTableName, $subTablePtr];
|
781
|
-
}
|
782
|
-
}
|
783
|
-
}
|
784
|
-
|
785
|
-
#------------------------------------------------------------------------------
|
786
|
-
# Get localized version of tagInfo hash
|
787
|
-
# Inputs: 0) tagInfo hash ref, 1) locale code (eg. "en_CA")
|
788
|
-
# Returns: new tagInfo hash ref, or undef if invalid
|
789
|
-
sub GetLangInfo($$)
|
790
|
-
{
|
791
|
-
my ($tagInfo, $langCode) = @_;
|
792
|
-
# check for properly formatted language code
|
793
|
-
return undef unless $langCode =~ /^[a-z]{2}([-_])[A-Z]{2}$/;
|
794
|
-
# use '_' as a separator, but recognize '_' or '-'
|
795
|
-
$langCode =~ tr/-/_/ if $1 eq '-';
|
796
|
-
# can only set locale on string types
|
797
|
-
return undef if $$tagInfo{Writable} and $$tagInfo{Writable} ne 'string';
|
798
|
-
return Image::ExifTool::GetLangInfo($tagInfo, $langCode);
|
799
|
-
}
|
800
|
-
|
801
|
-
#------------------------------------------------------------------------------
|
802
|
-
# return true if we have Zlib::Compress
|
803
|
-
# Inputs: 0) ExifTool object ref, 1) verb for what you want to do with the info
|
804
|
-
# Returns: 1 if Zlib available, 0 otherwise
|
805
|
-
sub HasZlib($$)
|
806
|
-
{
|
807
|
-
unless (defined $hasZlib) {
|
808
|
-
$hasZlib = eval { require Compress::Zlib };
|
809
|
-
unless ($hasZlib) {
|
810
|
-
$hasZlib = 0;
|
811
|
-
$_[0]->Warn("Install Compress::Zlib to $_[1] compressed information");
|
812
|
-
}
|
813
|
-
}
|
814
|
-
return $hasZlib;
|
815
|
-
}
|
816
|
-
|
817
|
-
#------------------------------------------------------------------------------
|
818
|
-
# Get format code for MIE group element with current byte order
|
819
|
-
# Inputs: 0) [optional] true to convert result to chr()
|
820
|
-
# Returns: format code
|
821
|
-
sub MIEGroupFormat(;$)
|
822
|
-
{
|
823
|
-
my $chr = shift;
|
824
|
-
my $format = GetByteOrder() eq 'MM' ? 0x10 : 0x18;
|
825
|
-
return $chr ? chr($format) : $format;
|
826
|
-
}
|
827
|
-
|
828
|
-
#------------------------------------------------------------------------------
|
829
|
-
# ReadValue() with added support for UTF formats (utf8, utf16 and utf32)
|
830
|
-
# Inputs: 0) data reference, 1) value offset, 2) format string,
|
831
|
-
# 3) number of values (or undef to use all data)
|
832
|
-
# 4) valid data length relative to offset, 5) returned rational ref
|
833
|
-
# Returns: converted value, or undefined if data isn't there
|
834
|
-
# or list of values in list context
|
835
|
-
# Notes: all string formats are converted to UTF8
|
836
|
-
sub ReadMIEValue($$$$$;$)
|
837
|
-
{
|
838
|
-
my ($dataPt, $offset, $format, $count, $size, $ratPt) = @_;
|
839
|
-
my $val;
|
840
|
-
if ($format =~ /^(utf(8|16|32)|string)/) {
|
841
|
-
if ($1 eq 'utf8' or $1 eq 'string') {
|
842
|
-
# read the 8-bit string
|
843
|
-
$val = substr($$dataPt, $offset, $size);
|
844
|
-
# (as of ExifTool 7.62, leave string values unconverted)
|
845
|
-
} else {
|
846
|
-
# convert to UTF8
|
847
|
-
my $fmt;
|
848
|
-
if (GetByteOrder() eq 'MM') {
|
849
|
-
$fmt = ($1 eq 'utf16') ? 'n' : 'N';
|
850
|
-
} else {
|
851
|
-
$fmt = ($1 eq 'utf16') ? 'v' : 'V';
|
852
|
-
}
|
853
|
-
my @unpk = unpack("x$offset$fmt$size",$$dataPt);
|
854
|
-
if ($] >= 5.006001) {
|
855
|
-
$val = pack('C0U*', @unpk);
|
856
|
-
} else {
|
857
|
-
$val = Image::ExifTool::PackUTF8(@unpk);
|
858
|
-
}
|
859
|
-
}
|
860
|
-
# truncate at null unless this is a list
|
861
|
-
# (strings shouldn't have a null, but just in case)
|
862
|
-
$val =~ s/\0.*//s unless $format =~ /_list$/;
|
863
|
-
} else {
|
864
|
-
$format = 'undef' if $format eq 'free'; # read 'free' as 'undef'
|
865
|
-
return ReadValue($dataPt, $offset, $format, $count, $size, $ratPt);
|
866
|
-
}
|
867
|
-
return $val;
|
868
|
-
}
|
869
|
-
|
870
|
-
#------------------------------------------------------------------------------
|
871
|
-
# validate raw values for writing
|
872
|
-
# Inputs: 0) ExifTool object ref, 1) tagInfo hash ref, 2) raw value ref
|
873
|
-
# Returns: error string or undef (and possibly changes value) on success
|
874
|
-
sub CheckMIE($$$)
|
875
|
-
{
|
876
|
-
my ($et, $tagInfo, $valPtr) = @_;
|
877
|
-
my $format = $$tagInfo{Writable} || $tagInfo->{Table}->{WRITABLE};
|
878
|
-
my $err;
|
879
|
-
|
880
|
-
return 'No writable format' if not $format or $format eq '1';
|
881
|
-
# handle units if supported by this tag
|
882
|
-
my $ulist = $$tagInfo{Units};
|
883
|
-
if ($ulist and $$valPtr =~ /(.*)\((.*)\)$/) {
|
884
|
-
my ($val, $units) = ($1, $2);
|
885
|
-
($units) = grep /^$units$/i, @$ulist;
|
886
|
-
defined $units or return 'Allowed units: (' . join('|', @$ulist) . ')';
|
887
|
-
$err = Image::ExifTool::CheckValue(\$val, $format, $$tagInfo{Count});
|
888
|
-
# add units back onto value
|
889
|
-
$$valPtr = "$val($units)" unless $err;
|
890
|
-
} elsif ($format !~ /^(utf|string|undef)/ and $$valPtr =~ /\)$/) {
|
891
|
-
return 'Units not supported';
|
892
|
-
} else {
|
893
|
-
if ($format eq 'string' and $$et{OPTIONS}{Charset} ne 'UTF8' and
|
894
|
-
$$valPtr =~ /[\x80-\xff]/)
|
895
|
-
{
|
896
|
-
# convert from Charset to UTF-8
|
897
|
-
$$valPtr = $et->Encode($$valPtr,'UTF8');
|
898
|
-
}
|
899
|
-
$err = Image::ExifTool::CheckValue($valPtr, $format, $$tagInfo{Count});
|
900
|
-
}
|
901
|
-
return $err;
|
902
|
-
}
|
903
|
-
|
904
|
-
#------------------------------------------------------------------------------
|
905
|
-
# Rewrite a MIE directory
|
906
|
-
# Inputs: 0) ExifTool object reference, 1) DirInfo reference, 2) tag table ptr
|
907
|
-
# Returns: undef on success, otherwise error message (empty message if nothing to write)
|
908
|
-
sub WriteMIEGroup($$$)
|
909
|
-
{
|
910
|
-
my ($et, $dirInfo, $tagTablePtr) = @_;
|
911
|
-
my $outfile = $$dirInfo{OutFile};
|
912
|
-
my $dirName = $$dirInfo{DirName};
|
913
|
-
my $toWrite = $$dirInfo{ToWrite} || '';
|
914
|
-
my $raf = $$dirInfo{RAF};
|
915
|
-
my $verbose = $et->Options('Verbose');
|
916
|
-
my $optCompress = $et->Options('Compress');
|
917
|
-
my $out = $et->Options('TextOut');
|
918
|
-
my ($msg, $err, $ok, $sync, $delGroup);
|
919
|
-
my $tag = '';
|
920
|
-
my $deletedTag = '';
|
921
|
-
|
922
|
-
# count each MIE directory found and make name for this specific instance
|
923
|
-
my ($grp1, %isWriting);
|
924
|
-
my $cnt = $$et{MIE_COUNT};
|
925
|
-
my $grp = $tagTablePtr->{GROUPS}->{1};
|
926
|
-
my $n = $$cnt{'MIE-Main'} || 0;
|
927
|
-
if ($grp eq 'MIE-Main') {
|
928
|
-
$$cnt{$grp} = ++$n;
|
929
|
-
($grp1 = $grp) =~ s/MIE-/MIE$n-/;
|
930
|
-
} else {
|
931
|
-
($grp1 = $grp) =~ s/MIE-/MIE$n-/;
|
932
|
-
my $m = $$cnt{$grp1} = ($$cnt{$grp1} || 0) + 1;
|
933
|
-
$isWriting{"$grp$m"} = 1; # eg. 'MIE-Doc2'
|
934
|
-
$isWriting{$grp1} = 1; # eg. 'MIE1-Doc'
|
935
|
-
$grp1 .= $m;
|
936
|
-
}
|
937
|
-
# build lookup for all valid group names for this MIE group
|
938
|
-
$isWriting{$grp} = 1; # eg. 'MIE-Doc'
|
939
|
-
$isWriting{$grp1} = 1; # eg. 'MIE1-Doc2'
|
940
|
-
$isWriting{"MIE$n"} = 1; # eg. 'MIE1'
|
941
|
-
|
942
|
-
# determine if we are deleting this group
|
943
|
-
if (%{$$et{DEL_GROUP}}) {
|
944
|
-
$delGroup = 1 if $$et{DEL_GROUP}{MIE} or
|
945
|
-
$$et{DEL_GROUP}{$grp} or
|
946
|
-
$$et{DEL_GROUP}{$grp1} or
|
947
|
-
$$et{DEL_GROUP}{"MIE$n"};
|
948
|
-
}
|
949
|
-
|
950
|
-
# prepare lookups and lists for writing
|
951
|
-
my $newTags = $et->GetNewTagInfoHash($tagTablePtr);
|
952
|
-
my ($addDirs, $editDirs) = $et->GetAddDirHash($tagTablePtr, $dirName);
|
953
|
-
my @editTags = sort keys %$newTags, keys %$editDirs;
|
954
|
-
$verbose and print $out $raf ? 'Writing' : 'Creating', " $grp1:\n";
|
955
|
-
|
956
|
-
# loop through elements in MIE group
|
957
|
-
MieElement: for (;;) {
|
958
|
-
my ($format, $tagLen, $valLen, $units, $oldHdr, $buff);
|
959
|
-
my $lastTag = $tag;
|
960
|
-
if ($raf) {
|
961
|
-
# read first 4 bytes of element header
|
962
|
-
my $n = $raf->Read($oldHdr, 4);
|
963
|
-
if ($n != 4) {
|
964
|
-
last if $n or defined $sync;
|
965
|
-
undef $raf; # all done reading
|
966
|
-
$ok = 1;
|
967
|
-
}
|
968
|
-
}
|
969
|
-
if ($raf) {
|
970
|
-
($sync, $format, $tagLen, $valLen) = unpack('aC3', $oldHdr);
|
971
|
-
$sync eq '~' or $msg = 'Invalid sync byte', last;
|
972
|
-
|
973
|
-
# read tag name
|
974
|
-
if ($tagLen) {
|
975
|
-
$raf->Read($tag, $tagLen) == $tagLen or last;
|
976
|
-
$oldHdr .= $tag; # add tag to element header
|
977
|
-
$et->Warn("MIE tag '$tag' out of sequence") if $tag lt $lastTag;
|
978
|
-
# separate units from tag name if they exist
|
979
|
-
$units = $1 if $tag =~ s/\((.*)\)$//;
|
980
|
-
} else {
|
981
|
-
$tag = '';
|
982
|
-
}
|
983
|
-
|
984
|
-
# get multi-byte value length if necessary
|
985
|
-
if ($valLen > 252) {
|
986
|
-
# calculate number of bytes in extended DataLength
|
987
|
-
my $n = 1 << (256 - $valLen);
|
988
|
-
$raf->Read($buff, $n) == $n or last;
|
989
|
-
$oldHdr .= $buff; # add to old header
|
990
|
-
my $fmt = 'int' . ($n * 8) . 'u';
|
991
|
-
$valLen = ReadValue(\$buff, 0, $fmt, 1, $n);
|
992
|
-
if ($valLen > 0x7fffffff) {
|
993
|
-
$msg = "Can't write $tag (DataLength > 2GB not yet supported)";
|
994
|
-
last;
|
995
|
-
}
|
996
|
-
}
|
997
|
-
# don't rewrite free bytes or information in deleted groups
|
998
|
-
if ($format eq 0x80 or ($delGroup and $tagLen and ($format & 0xf0) != 0x10)) {
|
999
|
-
$raf->Seek($valLen, 1) or $msg = 'Seek error', last;
|
1000
|
-
if ($verbose > 1) {
|
1001
|
-
my $free = ($format eq 0x80) ? ' free' : '';
|
1002
|
-
print $out " - $grp1:$tag ($valLen$free bytes)\n";
|
1003
|
-
}
|
1004
|
-
++$$et{CHANGED} if $delGroup;
|
1005
|
-
next;
|
1006
|
-
}
|
1007
|
-
} else {
|
1008
|
-
# no more elements to read
|
1009
|
-
$tagLen = $valLen = 0;
|
1010
|
-
$tag = '';
|
1011
|
-
}
|
1012
|
-
#
|
1013
|
-
# write necessary new tags and process directories
|
1014
|
-
#
|
1015
|
-
while (@editTags) {
|
1016
|
-
last if $tagLen and $editTags[0] gt $tag;
|
1017
|
-
# we are writing the new tag now
|
1018
|
-
my ($newVal, $writable, $oldVal, $newFormat, $compress);
|
1019
|
-
my $newTag = shift @editTags;
|
1020
|
-
my $newInfo = $$editDirs{$newTag};
|
1021
|
-
if ($newInfo) {
|
1022
|
-
# create the new subdirectory or rewrite existing non-MIE directory
|
1023
|
-
my $subTablePtr = GetTagTable($newInfo->{SubDirectory}->{TagTable});
|
1024
|
-
unless ($subTablePtr) {
|
1025
|
-
$et->Warn("No tag table for $newTag $$newInfo{Name}");
|
1026
|
-
next;
|
1027
|
-
}
|
1028
|
-
my %subdirInfo;
|
1029
|
-
my $isMieGroup = ($$subTablePtr{WRITE_PROC} and
|
1030
|
-
$$subTablePtr{WRITE_PROC} eq \&ProcessMIE);
|
1031
|
-
|
1032
|
-
if ($newTag eq $tag) {
|
1033
|
-
# make sure that either both or neither old and new tags are MIE groups
|
1034
|
-
if ($isMieGroup xor ($format & 0xf3) == 0x10) {
|
1035
|
-
$et->Warn("Tag '$tag' not expected type");
|
1036
|
-
next; # don't write our new tag
|
1037
|
-
}
|
1038
|
-
# uncompress existing directory into $oldVal since we are editing it
|
1039
|
-
if ($format & 0x04) {
|
1040
|
-
last unless HasZlib($et, 'edit');
|
1041
|
-
$raf->Read($oldVal, $valLen) == $valLen or last MieElement;
|
1042
|
-
my $stat;
|
1043
|
-
my $inflate = Compress::Zlib::inflateInit();
|
1044
|
-
$inflate and ($oldVal, $stat) = $inflate->inflate($oldVal);
|
1045
|
-
unless ($inflate and $stat == Compress::Zlib::Z_STREAM_END()) {
|
1046
|
-
$msg = "Error inflating $tag";
|
1047
|
-
last MieElement;
|
1048
|
-
}
|
1049
|
-
$compress = 1;
|
1050
|
-
$valLen = length $oldVal; # uncompressed value length
|
1051
|
-
}
|
1052
|
-
} else {
|
1053
|
-
# don't create this directory unless necessary
|
1054
|
-
next unless $$addDirs{$newTag};
|
1055
|
-
}
|
1056
|
-
|
1057
|
-
if ($isMieGroup) {
|
1058
|
-
my $hdr;
|
1059
|
-
if ($newTag eq $tag) {
|
1060
|
-
# rewrite existing directory later unless it was compressed
|
1061
|
-
last unless $compress;
|
1062
|
-
# rewrite directory to '$newVal'
|
1063
|
-
$newVal = '';
|
1064
|
-
%subdirInfo = (
|
1065
|
-
OutFile => \$newVal,
|
1066
|
-
RAF => new File::RandomAccess(\$oldVal),
|
1067
|
-
);
|
1068
|
-
} elsif ($optCompress and not $$dirInfo{IsCompressed}) {
|
1069
|
-
# write to memory so we can compress the new MIE group
|
1070
|
-
$compress = 1;
|
1071
|
-
%subdirInfo = (
|
1072
|
-
OutFile => \$newVal,
|
1073
|
-
);
|
1074
|
-
} else {
|
1075
|
-
$hdr = '~' . MIEGroupFormat(1) . chr(length($newTag)) .
|
1076
|
-
"\0" . $newTag;
|
1077
|
-
%subdirInfo = (
|
1078
|
-
OutFile => $outfile,
|
1079
|
-
ToWrite => $toWrite . $hdr,
|
1080
|
-
);
|
1081
|
-
}
|
1082
|
-
$subdirInfo{DirName} = $newInfo->{SubDirectory}->{DirName} || $newTag;
|
1083
|
-
$subdirInfo{Parent} = $dirName;
|
1084
|
-
# don't compress elements of an already compressed group
|
1085
|
-
$subdirInfo{IsCompressed} = $$dirInfo{IsCompressed} || $compress;
|
1086
|
-
$msg = WriteMIEGroup($et, \%subdirInfo, $subTablePtr);
|
1087
|
-
last MieElement if $msg;
|
1088
|
-
# message is defined but empty if nothing was written
|
1089
|
-
if (defined $msg) {
|
1090
|
-
undef $msg; # not a problem if nothing was written
|
1091
|
-
next;
|
1092
|
-
} elsif (not $compress) {
|
1093
|
-
# group was written already
|
1094
|
-
$toWrite = '';
|
1095
|
-
next;
|
1096
|
-
} elsif (length($newVal) <= 4) { # terminator only?
|
1097
|
-
$verbose and print $out "Deleted compressed $grp1 (empty)\n";
|
1098
|
-
next MieElement if $newTag eq $tag; # deleting the directory
|
1099
|
-
next; # not creating the new directory
|
1100
|
-
}
|
1101
|
-
$writable = 'undef';
|
1102
|
-
$newFormat = MIEGroupFormat();
|
1103
|
-
} else {
|
1104
|
-
if ($newTag eq $tag) {
|
1105
|
-
unless ($compress) {
|
1106
|
-
# read and edit existing directory
|
1107
|
-
$raf->Read($oldVal, $valLen) == $valLen or last MieElement;
|
1108
|
-
}
|
1109
|
-
%subdirInfo = (
|
1110
|
-
DataPt => \$oldVal,
|
1111
|
-
DataLen => $valLen,
|
1112
|
-
DirName => $$newInfo{Name},
|
1113
|
-
DataPos => $$dirInfo{IsCompressed} ? undef : $raf->Tell() - $valLen,
|
1114
|
-
DirStart=> 0,
|
1115
|
-
DirLen => $valLen,
|
1116
|
-
);
|
1117
|
-
# write Compact subdirectories if we will compress the data
|
1118
|
-
if (($compress or $optCompress or $$dirInfo{IsCompressed}) and
|
1119
|
-
eval { require Compress::Zlib })
|
1120
|
-
{
|
1121
|
-
$subdirInfo{Compact} = 1;
|
1122
|
-
}
|
1123
|
-
}
|
1124
|
-
$subdirInfo{Parent} = $dirName;
|
1125
|
-
my $writeProc = $newInfo->{SubDirectory}->{WriteProc};
|
1126
|
-
# reset processed lookup to avoid errors in case of multiple EXIF blocks
|
1127
|
-
$$et{PROCESSED} = { };
|
1128
|
-
$newVal = $et->WriteDirectory(\%subdirInfo, $subTablePtr, $writeProc);
|
1129
|
-
if (defined $newVal) {
|
1130
|
-
if ($newVal eq '') {
|
1131
|
-
next MieElement if $newTag eq $tag; # deleting the directory
|
1132
|
-
next; # not creating the new directory
|
1133
|
-
}
|
1134
|
-
} else {
|
1135
|
-
next unless defined $oldVal;
|
1136
|
-
$newVal = $oldVal; # just copy over the old directory
|
1137
|
-
}
|
1138
|
-
$writable = 'undef';
|
1139
|
-
$newFormat = 0x00; # all other directories are 'undef' format
|
1140
|
-
}
|
1141
|
-
} else {
|
1142
|
-
|
1143
|
-
# get the new tag information
|
1144
|
-
$newInfo = $$newTags{$newTag};
|
1145
|
-
my $nvHash = $et->GetNewValueHash($newInfo);
|
1146
|
-
my @newVals;
|
1147
|
-
|
1148
|
-
# write information only to specified group
|
1149
|
-
my $writeGroup = $$nvHash{WriteGroup};
|
1150
|
-
last unless $isWriting{$writeGroup};
|
1151
|
-
|
1152
|
-
# if tag existed, must decide if we want to overwrite the value
|
1153
|
-
if ($newTag eq $tag) {
|
1154
|
-
my $isOverwriting;
|
1155
|
-
my $isList = $$newInfo{List};
|
1156
|
-
if ($isList) {
|
1157
|
-
last if $$nvHash{CreateOnly};
|
1158
|
-
$isOverwriting = -1; # force processing list elements individually
|
1159
|
-
} else {
|
1160
|
-
$isOverwriting = $et->IsOverwriting($nvHash);
|
1161
|
-
last unless $isOverwriting;
|
1162
|
-
}
|
1163
|
-
my ($val, $cmpVal);
|
1164
|
-
if ($isOverwriting < 0 or $verbose > 1) {
|
1165
|
-
# check to be sure we can uncompress the value if necessary
|
1166
|
-
HasZlib($et, 'edit') or last if $format & 0x04;
|
1167
|
-
# read the old value
|
1168
|
-
$raf->Read($oldVal, $valLen) == $valLen or last MieElement;
|
1169
|
-
# uncompress if necessary
|
1170
|
-
if ($format & 0x04) {
|
1171
|
-
my $stat;
|
1172
|
-
my $inflate = Compress::Zlib::inflateInit();
|
1173
|
-
# must save original compressed value in case we decide
|
1174
|
-
# not to overwrite it later
|
1175
|
-
$cmpVal = $oldVal;
|
1176
|
-
$inflate and ($oldVal, $stat) = $inflate->inflate($oldVal);
|
1177
|
-
unless ($inflate and $stat == Compress::Zlib::Z_STREAM_END()) {
|
1178
|
-
$msg = "Error inflating $tag";
|
1179
|
-
last MieElement;
|
1180
|
-
}
|
1181
|
-
$valLen = length $oldVal; # update value length
|
1182
|
-
}
|
1183
|
-
# convert according to specified format
|
1184
|
-
my $formatStr = $mieFormat{$format & 0xfb} || 'undef';
|
1185
|
-
$val = ReadMIEValue(\$oldVal, 0, $formatStr, undef, $valLen);
|
1186
|
-
if ($isOverwriting < 0 and defined $val) {
|
1187
|
-
# handle list values individually
|
1188
|
-
if ($isList) {
|
1189
|
-
my (@vals, $v);
|
1190
|
-
if ($formatStr =~ /_list$/) {
|
1191
|
-
@vals = split "\0", $val;
|
1192
|
-
} else {
|
1193
|
-
@vals = $val;
|
1194
|
-
}
|
1195
|
-
# keep any list items that we aren't overwriting
|
1196
|
-
foreach $v (@vals) {
|
1197
|
-
next if $et->IsOverwriting($nvHash, $v);
|
1198
|
-
push @newVals, $v;
|
1199
|
-
}
|
1200
|
-
} else {
|
1201
|
-
# test to see if we really want to overwrite the value
|
1202
|
-
$isOverwriting = $et->IsOverwriting($nvHash, $val);
|
1203
|
-
}
|
1204
|
-
}
|
1205
|
-
}
|
1206
|
-
if ($isOverwriting) {
|
1207
|
-
# skip the old value if we didn't read it already
|
1208
|
-
unless (defined $oldVal) {
|
1209
|
-
$raf->Seek($valLen, 1) or $msg = 'Seek error';
|
1210
|
-
}
|
1211
|
-
if ($verbose > 1) {
|
1212
|
-
$val .= "($units)" if defined $units;
|
1213
|
-
$et->VerboseValue("- $grp1:$$newInfo{Name}", $val);
|
1214
|
-
}
|
1215
|
-
$deletedTag = $tag; # remember that we deleted this tag
|
1216
|
-
++$$et{CHANGED}; # we deleted the old value
|
1217
|
-
} else {
|
1218
|
-
if (defined $oldVal) {
|
1219
|
-
# write original compressed value
|
1220
|
-
$oldVal = $cmpVal if defined $cmpVal;
|
1221
|
-
} else {
|
1222
|
-
$raf->Read($oldVal, $valLen) == $valLen or last MieElement;
|
1223
|
-
}
|
1224
|
-
# write the old value now
|
1225
|
-
Write($outfile, $toWrite, $oldHdr, $oldVal) or $err = 1;
|
1226
|
-
$toWrite = '';
|
1227
|
-
next MieElement;
|
1228
|
-
}
|
1229
|
-
unless (@newVals) {
|
1230
|
-
# unshift the new tag info to write it later
|
1231
|
-
unshift @editTags, $newTag;
|
1232
|
-
next MieElement; # get next element from file
|
1233
|
-
}
|
1234
|
-
} else {
|
1235
|
-
# write new value if creating, or if List and list existed, or
|
1236
|
-
# if tag was previously deleted
|
1237
|
-
next unless $$nvHash{IsCreating} or
|
1238
|
-
(($newTag eq $lastTag and ($$newInfo{List} or $deletedTag eq $lastTag)
|
1239
|
-
and not $$nvHash{EditOnly}));
|
1240
|
-
}
|
1241
|
-
# get the new value to write (undef to delete)
|
1242
|
-
push @newVals, $et->GetNewValues($nvHash);
|
1243
|
-
next unless @newVals;
|
1244
|
-
$writable = $$newInfo{Writable} || $$tagTablePtr{WRITABLE};
|
1245
|
-
if ($writable eq 'string') {
|
1246
|
-
# join multiple values into a single string
|
1247
|
-
$newVal = join "\0", @newVals;
|
1248
|
-
# write string as UTF-8,16 or 32 if value contains valid UTF-8 codes
|
1249
|
-
require Image::ExifTool::XMP;
|
1250
|
-
my $isUTF8 = Image::ExifTool::XMP::IsUTF8(\$newVal);
|
1251
|
-
if ($isUTF8 > 0) {
|
1252
|
-
$writable = 'utf8';
|
1253
|
-
# write UTF-16 or UTF-32 if it is more compact
|
1254
|
-
my $to = $isUTF8 > 1 ? 'UCS4' : 'UCS2';
|
1255
|
-
my $tmp = Image::ExifTool::Decode(undef,$newVal,'UTF8',undef,$to);
|
1256
|
-
if (length $tmp < length $newVal) {
|
1257
|
-
$newVal = $tmp;
|
1258
|
-
$writable = ($isUTF8 > 1) ? 'utf32' : 'utf16';
|
1259
|
-
}
|
1260
|
-
}
|
1261
|
-
# write as a list if we have multiple values
|
1262
|
-
$writable .= '_list' if @newVals > 1;
|
1263
|
-
} else {
|
1264
|
-
# should only be one element in the list
|
1265
|
-
$newVal = shift @newVals;
|
1266
|
-
}
|
1267
|
-
$newFormat = $mieCode{$writable};
|
1268
|
-
unless (defined $newFormat) {
|
1269
|
-
$msg = "Bad format '$writable' for $$newInfo{Name}";
|
1270
|
-
next MieElement;
|
1271
|
-
}
|
1272
|
-
}
|
1273
|
-
|
1274
|
-
# write the new or edited element
|
1275
|
-
while (defined $newFormat) {
|
1276
|
-
my $valPt = \$newVal;
|
1277
|
-
# remove units from value and add to tag name if supported by this tag
|
1278
|
-
if ($$newInfo{Units}) {
|
1279
|
-
my $val2;
|
1280
|
-
if ($$valPt =~ /(.*)\((.*)\)$/) {
|
1281
|
-
$val2 = $1;
|
1282
|
-
$newTag .= "($2)";
|
1283
|
-
} else {
|
1284
|
-
$val2 = $$valPt;
|
1285
|
-
# add default units
|
1286
|
-
my $ustr = '(' . $newInfo->{Units}->[0] . ')';
|
1287
|
-
$newTag .= $ustr;
|
1288
|
-
$$valPt .= $ustr;
|
1289
|
-
}
|
1290
|
-
$valPt = \$val2;
|
1291
|
-
}
|
1292
|
-
# convert value if necessary
|
1293
|
-
if ($writable !~ /^(utf|string|undef)/) {
|
1294
|
-
my $val3 = WriteValue($$valPt, $writable, $$newInfo{Count});
|
1295
|
-
defined $val3 or $et->Warn("Error writing $newTag"), last;
|
1296
|
-
$valPt = \$val3;
|
1297
|
-
}
|
1298
|
-
my $len = length $$valPt;
|
1299
|
-
# compress value before writing if required
|
1300
|
-
if (($compress or $optCompress) and not $$dirInfo{IsCompressed} and
|
1301
|
-
HasZlib($et, 'write'))
|
1302
|
-
{
|
1303
|
-
my $deflate = Compress::Zlib::deflateInit();
|
1304
|
-
my $val4;
|
1305
|
-
if ($deflate) {
|
1306
|
-
$val4 = $deflate->deflate($$valPt);
|
1307
|
-
$val4 .= $deflate->flush() if defined $val4;
|
1308
|
-
}
|
1309
|
-
if (defined $val4) {
|
1310
|
-
my $len4 = length $val4;
|
1311
|
-
my $saved = $len - $len4;
|
1312
|
-
# only use compressed data if it is smaller
|
1313
|
-
if ($saved > 0) {
|
1314
|
-
$verbose and print $out " [$newTag compression saved $saved bytes]\n";
|
1315
|
-
$newFormat |= 0x04; # set compressed bit
|
1316
|
-
$len = $len4; # set length
|
1317
|
-
$valPt = \$val4; # set value pointer
|
1318
|
-
} elsif ($verbose) {
|
1319
|
-
print $out " [$newTag compression saved $saved bytes -- written uncompressed]\n";
|
1320
|
-
}
|
1321
|
-
} else {
|
1322
|
-
$et->Warn("Error deflating $newTag (written uncompressed)");
|
1323
|
-
}
|
1324
|
-
}
|
1325
|
-
# calculate the DataLength code
|
1326
|
-
my $extLen;
|
1327
|
-
if ($len < 253) {
|
1328
|
-
$extLen = '';
|
1329
|
-
} elsif ($len < 65536) {
|
1330
|
-
$extLen = Set16u($len);
|
1331
|
-
$len = 255;
|
1332
|
-
} elsif ($len <= 0x7fffffff) {
|
1333
|
-
$extLen = Set32u($len);
|
1334
|
-
$len = 254;
|
1335
|
-
} else {
|
1336
|
-
$et->Warn("Can't write $newTag (DataLength > 2GB not yet suppported)");
|
1337
|
-
last; # don't write this tag
|
1338
|
-
}
|
1339
|
-
# write this element (with leading MIE group element if not done already)
|
1340
|
-
my $hdr = $toWrite . '~' . chr($newFormat) . chr(length $newTag);
|
1341
|
-
Write($outfile, $hdr, chr($len), $newTag, $extLen, $$valPt) or $err = 1;
|
1342
|
-
$toWrite = '';
|
1343
|
-
# we changed a tag unless just editing a subdirectory
|
1344
|
-
unless ($$editDirs{$newTag}) {
|
1345
|
-
$et->VerboseValue("+ $grp1:$$newInfo{Name}", $newVal);
|
1346
|
-
++$$et{CHANGED};
|
1347
|
-
}
|
1348
|
-
last; # didn't want to loop anyway
|
1349
|
-
}
|
1350
|
-
next MieElement if defined $oldVal;
|
1351
|
-
}
|
1352
|
-
#
|
1353
|
-
# rewrite existing element or descend into uncompressed MIE group
|
1354
|
-
#
|
1355
|
-
# all done this MIE group if we reached the terminator element
|
1356
|
-
unless ($tagLen) {
|
1357
|
-
# skip over existing terminator data (if any)
|
1358
|
-
last if $valLen and not $raf->Seek($valLen, 1);
|
1359
|
-
$ok = 1;
|
1360
|
-
# write group terminator if necessary
|
1361
|
-
unless ($toWrite) {
|
1362
|
-
# write end-of-group terminator element
|
1363
|
-
my $term = "~\0\0\0";
|
1364
|
-
unless ($$dirInfo{Parent}) {
|
1365
|
-
# write extended terminator for file-level group
|
1366
|
-
my $len = ref $outfile eq 'SCALAR' ? length($$outfile) : tell $outfile;
|
1367
|
-
$len += 10; # include length of terminator itself
|
1368
|
-
if ($len and $len <= 0x7fffffff) {
|
1369
|
-
$term = "~\0\0\x06" . Set32u($len) . MIEGroupFormat(1) . "\x04";
|
1370
|
-
}
|
1371
|
-
}
|
1372
|
-
Write($outfile, $term) or $err = 1;
|
1373
|
-
}
|
1374
|
-
last;
|
1375
|
-
}
|
1376
|
-
|
1377
|
-
# descend into existing uncompressed MIE group
|
1378
|
-
if ($format == 0x10 or $format == 0x18) {
|
1379
|
-
my ($subTablePtr, $dirName);
|
1380
|
-
my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
|
1381
|
-
if ($tagInfo and $$tagInfo{SubDirectory}) {
|
1382
|
-
$dirName = $tagInfo->{SubDirectory}->{DirName};
|
1383
|
-
my $subTable = $tagInfo->{SubDirectory}->{TagTable};
|
1384
|
-
$subTablePtr = $subTable ? GetTagTable($subTable) : $tagTablePtr;
|
1385
|
-
} else {
|
1386
|
-
$subTablePtr = GetTagTable('Image::ExifTool::MIE::Unknown');
|
1387
|
-
}
|
1388
|
-
my $hdr = '~' . chr($format) . chr(length $tag) . "\0" . $tag;
|
1389
|
-
my %subdirInfo = (
|
1390
|
-
DirName => $dirName || $tag,
|
1391
|
-
RAF => $raf,
|
1392
|
-
ToWrite => $toWrite . $hdr,
|
1393
|
-
OutFile => $outfile,
|
1394
|
-
Parent => $dirName,
|
1395
|
-
IsCompressed => $$dirInfo{IsCompressed},
|
1396
|
-
);
|
1397
|
-
my $oldOrder = GetByteOrder();
|
1398
|
-
SetByteOrder($format & 0x08 ? 'II' : 'MM');
|
1399
|
-
$msg = WriteMIEGroup($et, \%subdirInfo, $subTablePtr);
|
1400
|
-
SetByteOrder($oldOrder);
|
1401
|
-
last if $msg;
|
1402
|
-
if (defined $msg) {
|
1403
|
-
undef $msg; # no problem if nothing written
|
1404
|
-
} else {
|
1405
|
-
$toWrite = '';
|
1406
|
-
}
|
1407
|
-
next;
|
1408
|
-
}
|
1409
|
-
# just copy existing element
|
1410
|
-
my $oldVal;
|
1411
|
-
$raf->Read($oldVal, $valLen) == $valLen or last;
|
1412
|
-
if ($toWrite) {
|
1413
|
-
Write($outfile, $toWrite) or $err = 1;
|
1414
|
-
$toWrite = '';
|
1415
|
-
}
|
1416
|
-
Write($outfile, $oldHdr, $oldVal) or $err = 1;
|
1417
|
-
}
|
1418
|
-
# return error message
|
1419
|
-
if ($err) {
|
1420
|
-
$msg = 'Error writing file';
|
1421
|
-
} elsif (not $ok and not $msg) {
|
1422
|
-
$msg = 'Unexpected end of file';
|
1423
|
-
} elsif (not $msg and $toWrite) {
|
1424
|
-
$msg = ''; # flag for nothing written
|
1425
|
-
$verbose and print $out "Deleted $grp1 (empty)\n";
|
1426
|
-
}
|
1427
|
-
return $msg;
|
1428
|
-
}
|
1429
|
-
|
1430
|
-
#------------------------------------------------------------------------------
|
1431
|
-
# Process MIE directory
|
1432
|
-
# Inputs: 0) ExifTool object reference, 1) DirInfo reference, 2) tag table ref
|
1433
|
-
# Returns: undef on success, or error message if there was a problem
|
1434
|
-
# Notes: file pointer is positioned at the MIE end on entry
|
1435
|
-
sub ProcessMIEGroup($$$)
|
1436
|
-
{
|
1437
|
-
my ($et, $dirInfo, $tagTablePtr) = @_;
|
1438
|
-
my $raf = $$dirInfo{RAF};
|
1439
|
-
my $verbose = $et->Options('Verbose');
|
1440
|
-
my $out = $et->Options('TextOut');
|
1441
|
-
my $notUTF8 = ($$et{OPTIONS}{Charset} ne 'UTF8');
|
1442
|
-
my ($msg, $buff, $ok, $oldIndent, $mime);
|
1443
|
-
my $lastTag = '';
|
1444
|
-
|
1445
|
-
# get group 1 names: $grp doesn't have numbers (eg. 'MIE-Doc'),
|
1446
|
-
# and $grp1 does (eg. 'MIE1-Doc1')
|
1447
|
-
my $cnt = $$et{MIE_COUNT};
|
1448
|
-
my $grp1 = $tagTablePtr->{GROUPS}->{1};
|
1449
|
-
my $n = $$cnt{'MIE-Main'} || 0;
|
1450
|
-
if ($grp1 eq 'MIE-Main') {
|
1451
|
-
$$cnt{$grp1} = ++$n;
|
1452
|
-
$grp1 =~ s/MIE-/MIE$n-/ if $n > 1;
|
1453
|
-
} else {
|
1454
|
-
$grp1 =~ s/MIE-/MIE$n-/ if $n > 1;
|
1455
|
-
$$cnt{$grp1} = ($$cnt{$grp1} || 0) + 1;
|
1456
|
-
$grp1 .= $$cnt{$grp1} if $$cnt{$grp1} > 1;
|
1457
|
-
}
|
1458
|
-
# set group1 name for all tags extracted from this group
|
1459
|
-
$$et{SET_GROUP1} = $grp1;
|
1460
|
-
|
1461
|
-
if ($verbose) {
|
1462
|
-
$oldIndent = $$et{INDENT};
|
1463
|
-
$$et{INDENT} .= '| ';
|
1464
|
-
$et->VerboseDir($grp1);
|
1465
|
-
}
|
1466
|
-
my $wasCompressed = $$dirInfo{WasCompressed};
|
1467
|
-
|
1468
|
-
# process all MIE elements
|
1469
|
-
for (;;) {
|
1470
|
-
$raf->Read($buff, 4) == 4 or last;
|
1471
|
-
my ($sync, $format, $tagLen, $valLen) = unpack('aC3', $buff);
|
1472
|
-
$sync eq '~' or $msg = 'Invalid sync byte', last;
|
1473
|
-
|
1474
|
-
# read tag name
|
1475
|
-
my ($tag, $units);
|
1476
|
-
if ($tagLen) {
|
1477
|
-
$raf->Read($tag, $tagLen) == $tagLen or last;
|
1478
|
-
$et->Warn("MIE tag '$tag' out of sequence") if $tag lt $lastTag;
|
1479
|
-
$lastTag = $tag;
|
1480
|
-
# separate units from tag name if they exist
|
1481
|
-
$units = $1 if $tag =~ s/\((.*)\)$//;
|
1482
|
-
} else {
|
1483
|
-
$tag = '';
|
1484
|
-
}
|
1485
|
-
|
1486
|
-
# get multi-byte value length if necessary
|
1487
|
-
if ($valLen > 252) {
|
1488
|
-
my $n = 1 << (256 - $valLen);
|
1489
|
-
$raf->Read($buff, $n) == $n or last;
|
1490
|
-
my $fmt = 'int' . ($n * 8) . 'u';
|
1491
|
-
$valLen = ReadValue(\$buff, 0, $fmt, 1, $n);
|
1492
|
-
if ($valLen > 0x7fffffff) {
|
1493
|
-
$msg = "Can't read $tag (DataLength > 2GB not yet supported)";
|
1494
|
-
last;
|
1495
|
-
}
|
1496
|
-
}
|
1497
|
-
|
1498
|
-
# all done if we reached the group terminator
|
1499
|
-
unless ($tagLen) {
|
1500
|
-
# skip over terminator data block
|
1501
|
-
$ok = 1 unless $valLen and not $raf->Seek($valLen, 1);
|
1502
|
-
last;
|
1503
|
-
}
|
1504
|
-
|
1505
|
-
# get tag information hash unless this is free space
|
1506
|
-
my ($tagInfo, $value);
|
1507
|
-
while ($format != 0x80) {
|
1508
|
-
$tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
|
1509
|
-
last if $tagInfo;
|
1510
|
-
# extract tags with locale code
|
1511
|
-
if ($tag =~ /\W/) {
|
1512
|
-
if ($tag =~ /^(\w+)-([a-z]{2}_[A-Z]{2})$/) {
|
1513
|
-
my ($baseTag, $langCode) = ($1, $2);
|
1514
|
-
$tagInfo = $et->GetTagInfo($tagTablePtr, $baseTag);
|
1515
|
-
$tagInfo = GetLangInfo($tagInfo, $langCode) if $tagInfo;
|
1516
|
-
last if $tagInfo;
|
1517
|
-
} else {
|
1518
|
-
$et->Warn('Invalid MIE tag name');
|
1519
|
-
last;
|
1520
|
-
}
|
1521
|
-
}
|
1522
|
-
# extract unknown tags if specified
|
1523
|
-
$tagInfo = {
|
1524
|
-
Name => $tag,
|
1525
|
-
Writable => 0,
|
1526
|
-
PrintConv => 'length($val) > 60 ? substr($val,0,55) . "[...]" : $val',
|
1527
|
-
};
|
1528
|
-
AddTagToTable($tagTablePtr, $tag, $tagInfo);
|
1529
|
-
last;
|
1530
|
-
}
|
1531
|
-
|
1532
|
-
# read value and uncompress if necessary
|
1533
|
-
my $formatStr = $mieFormat{$format & 0xfb} || 'undef';
|
1534
|
-
if ($tagInfo or ($formatStr eq 'MIE' and $format & 0x04)) {
|
1535
|
-
$raf->Read($value, $valLen) == $valLen or last;
|
1536
|
-
if ($format & 0x04) {
|
1537
|
-
if ($verbose) {
|
1538
|
-
print $out "$$et{INDENT}\[Tag '$tag' $valLen bytes compressed]\n";
|
1539
|
-
}
|
1540
|
-
next unless HasZlib($et, 'decode');
|
1541
|
-
my $stat;
|
1542
|
-
my $inflate = Compress::Zlib::inflateInit();
|
1543
|
-
$inflate and ($value, $stat) = $inflate->inflate($value);
|
1544
|
-
unless ($inflate and $stat == Compress::Zlib::Z_STREAM_END()) {
|
1545
|
-
$et->Warn("Error inflating $tag");
|
1546
|
-
next;
|
1547
|
-
}
|
1548
|
-
$valLen = length $value;
|
1549
|
-
$wasCompressed = 1;
|
1550
|
-
}
|
1551
|
-
}
|
1552
|
-
|
1553
|
-
# process this tag
|
1554
|
-
if ($formatStr eq 'MIE') {
|
1555
|
-
# process MIE directory
|
1556
|
-
my ($subTablePtr, $dirName);
|
1557
|
-
if ($tagInfo and $$tagInfo{SubDirectory}) {
|
1558
|
-
$dirName = $tagInfo->{SubDirectory}->{DirName};
|
1559
|
-
my $subTable = $tagInfo->{SubDirectory}->{TagTable};
|
1560
|
-
$subTablePtr = $subTable ? GetTagTable($subTable) : $tagTablePtr;
|
1561
|
-
} else {
|
1562
|
-
$subTablePtr = GetTagTable('Image::ExifTool::MIE::Unknown');
|
1563
|
-
}
|
1564
|
-
if ($verbose) {
|
1565
|
-
my $order = ', byte order ' . GetByteOrder();
|
1566
|
-
$et->VerboseInfo($tag, $tagInfo, Size => $valLen, Extra => $order);
|
1567
|
-
}
|
1568
|
-
my %subdirInfo = (
|
1569
|
-
DirName => $dirName || $tag,
|
1570
|
-
RAF => $raf,
|
1571
|
-
Parent => $$dirInfo{DirName},
|
1572
|
-
WasCompressed => $wasCompressed,
|
1573
|
-
);
|
1574
|
-
# read from uncompressed data instead if necessary
|
1575
|
-
$subdirInfo{RAF} = new File::RandomAccess(\$value) if $valLen;
|
1576
|
-
|
1577
|
-
my $oldOrder = GetByteOrder();
|
1578
|
-
SetByteOrder($format & 0x08 ? 'II' : 'MM');
|
1579
|
-
$msg = ProcessMIEGroup($et, \%subdirInfo, $subTablePtr);
|
1580
|
-
SetByteOrder($oldOrder);
|
1581
|
-
$$et{SET_GROUP1} = $grp1; # restore this group1 name
|
1582
|
-
last if $msg;
|
1583
|
-
} else {
|
1584
|
-
# process MIE data format types
|
1585
|
-
if ($tagInfo) {
|
1586
|
-
my $rational;
|
1587
|
-
# extract tag value
|
1588
|
-
my $val = ReadMIEValue(\$value, 0, $formatStr, undef, $valLen, \$rational);
|
1589
|
-
unless (defined $val) {
|
1590
|
-
$et->Warn("Error reading $tag value");
|
1591
|
-
$val = '<err>';
|
1592
|
-
}
|
1593
|
-
# save type or mime type
|
1594
|
-
$mime = $val if $tag eq '0Type' or $tag eq '2MIME';
|
1595
|
-
if ($verbose) {
|
1596
|
-
my $count;
|
1597
|
-
my $s = Image::ExifTool::FormatSize($formatStr);
|
1598
|
-
if ($s and $formatStr !~ /^(utf|string|undef)/) {
|
1599
|
-
$count = $valLen / $s;
|
1600
|
-
}
|
1601
|
-
$et->VerboseInfo($lastTag, $tagInfo,
|
1602
|
-
DataPt => \$value,
|
1603
|
-
DataPos => $raf->Tell() - $valLen,
|
1604
|
-
Size => $valLen,
|
1605
|
-
Format => $formatStr,
|
1606
|
-
Value => $val,
|
1607
|
-
Count => $count,
|
1608
|
-
);
|
1609
|
-
}
|
1610
|
-
if ($$tagInfo{SubDirectory}) {
|
1611
|
-
my $subTablePtr = GetTagTable($tagInfo->{SubDirectory}->{TagTable});
|
1612
|
-
my %subdirInfo = (
|
1613
|
-
DirName => $$tagInfo{Name},
|
1614
|
-
DataPt => \$value,
|
1615
|
-
DataLen => $valLen,
|
1616
|
-
DirStart=> 0,
|
1617
|
-
DirLen => $valLen,
|
1618
|
-
Parent => $$dirInfo{DirName},
|
1619
|
-
WasCompressed => $wasCompressed,
|
1620
|
-
);
|
1621
|
-
# set DataPos and Base for uncompressed information only
|
1622
|
-
unless ($wasCompressed) {
|
1623
|
-
$subdirInfo{DataPos} = 0; # (relative to Base)
|
1624
|
-
$subdirInfo{Base} = $raf->Tell() - $valLen;
|
1625
|
-
}
|
1626
|
-
# reset PROCESSED lookup for each MIE directory
|
1627
|
-
# (there is no possibility of double-processing a MIE directory)
|
1628
|
-
$$et{PROCESSED} = { };
|
1629
|
-
my $processProc = $tagInfo->{SubDirectory}->{ProcessProc};
|
1630
|
-
delete $$et{SET_GROUP1};
|
1631
|
-
delete $$et{NO_LIST};
|
1632
|
-
$et->ProcessDirectory(\%subdirInfo, $subTablePtr, $processProc);
|
1633
|
-
$$et{SET_GROUP1} = $grp1;
|
1634
|
-
$$et{NO_LIST} = 1;
|
1635
|
-
} else {
|
1636
|
-
# convert to specified character set if necessary
|
1637
|
-
if ($notUTF8 and $formatStr =~ /^(utf|string)/) {
|
1638
|
-
$val = $et->Decode($val, 'UTF8');
|
1639
|
-
}
|
1640
|
-
if ($formatStr =~ /_list$/) {
|
1641
|
-
# split list value into separate strings
|
1642
|
-
my @vals = split "\0", $val;
|
1643
|
-
$val = \@vals;
|
1644
|
-
}
|
1645
|
-
if (defined $units) {
|
1646
|
-
$val = "@$val" if ref $val; # convert string list to number list
|
1647
|
-
# add units to value if specified
|
1648
|
-
$val .= "($units)" if defined $units;
|
1649
|
-
}
|
1650
|
-
my $key = $et->FoundTag($tagInfo, $val);
|
1651
|
-
$$et{RATIONAL}{$key} = $rational if defined $rational and defined $key;
|
1652
|
-
}
|
1653
|
-
} else {
|
1654
|
-
# skip over unknown information or free bytes
|
1655
|
-
$raf->Seek($valLen, 1) or $msg = 'Seek error', last;
|
1656
|
-
$verbose and $et->VerboseInfo($tag, undef, Size => $valLen);
|
1657
|
-
}
|
1658
|
-
}
|
1659
|
-
}
|
1660
|
-
# modify MIME type if necessary
|
1661
|
-
$mime and not $$dirInfo{Parent} and $et->ModifyMimeType($mime);
|
1662
|
-
|
1663
|
-
$ok or $msg or $msg = 'Unexpected end of file';
|
1664
|
-
$verbose and $$et{INDENT} = $oldIndent;
|
1665
|
-
return $msg;
|
1666
|
-
}
|
1667
|
-
|
1668
|
-
#------------------------------------------------------------------------------
|
1669
|
-
# Read/write a MIE file
|
1670
|
-
# Inputs: 0) ExifTool object reference, 1) DirInfo reference
|
1671
|
-
# Returns: 1 on success, 0 if this wasn't a valid MIE file, or -1 on write error
|
1672
|
-
# - process as a trailer if "Trailer" flag set in dirInfo
|
1673
|
-
sub ProcessMIE($$)
|
1674
|
-
{
|
1675
|
-
my ($et, $dirInfo) = @_;
|
1676
|
-
return 1 unless defined $et;
|
1677
|
-
my $raf = $$dirInfo{RAF};
|
1678
|
-
my $outfile = $$dirInfo{OutFile};
|
1679
|
-
my ($buff, $err, $msg, $pos, $end, $isCreating);
|
1680
|
-
my $numDocs = 0;
|
1681
|
-
#
|
1682
|
-
# process as a trailer (from end of file) if specified
|
1683
|
-
#
|
1684
|
-
if ($$dirInfo{Trailer}) {
|
1685
|
-
my $offset = $$dirInfo{Offset} || 0; # offset from end of file
|
1686
|
-
$raf->Seek(-10 - $offset, 2) or return 0;
|
1687
|
-
for (;;) {
|
1688
|
-
# read and validate last 10 bytes
|
1689
|
-
$raf->Read($buff, 10) == 10 or last;
|
1690
|
-
last unless $buff =~ /~\0\0\x06.{4}(\x10|\x18)(\x04)$/s or
|
1691
|
-
$buff =~ /(\x10|\x18)(\x08)$/s;
|
1692
|
-
SetByteOrder($1 eq "\x10" ? 'MM' : 'II');
|
1693
|
-
my $len = ($2 eq "\x04") ? Get32u(\$buff, 4) : Get64u(\$buff, 0);
|
1694
|
-
my $curPos = $raf->Tell() or last;
|
1695
|
-
last if $len < 12 or $len > $curPos;
|
1696
|
-
# validate element header if 8-byte offset was used
|
1697
|
-
if ($2 eq "\x08") {
|
1698
|
-
last if $len < 14;
|
1699
|
-
$raf->Seek($curPos - 14, 0) and $raf->Read($buff, 4) or last;
|
1700
|
-
last unless $buff eq "~\0\0\x0a";
|
1701
|
-
}
|
1702
|
-
# looks like a good group, so remember start position
|
1703
|
-
$pos = $curPos - $len;
|
1704
|
-
$end = $curPos unless $end;
|
1705
|
-
# seek to 10 bytes from end of previous group
|
1706
|
-
$raf->Seek($pos - 10, 0) or last;
|
1707
|
-
}
|
1708
|
-
# seek to start of first MIE group
|
1709
|
-
return 0 unless defined $pos and $raf->Seek($pos, 0);
|
1710
|
-
# update DataPos and DirLen for ProcessTrailers()
|
1711
|
-
$$dirInfo{DataPos} = $pos;
|
1712
|
-
$$dirInfo{DirLen} = $end - $pos;
|
1713
|
-
if ($outfile and $$et{DEL_GROUP}{MIE}) {
|
1714
|
-
# delete the trailer
|
1715
|
-
$et->VPrint(0," Deleting MIE trailer\n");
|
1716
|
-
++$$et{CHANGED};
|
1717
|
-
return 1;
|
1718
|
-
} elsif ($et->Options('Verbose') or $$et{HTML_DUMP}) {
|
1719
|
-
$et->DumpTrailer($dirInfo);
|
1720
|
-
}
|
1721
|
-
}
|
1722
|
-
#
|
1723
|
-
# loop through all documents in MIE file
|
1724
|
-
#
|
1725
|
-
for (;;) {
|
1726
|
-
# look for "0MIE" group element
|
1727
|
-
my $num = $raf->Read($buff, 8);
|
1728
|
-
if ($num == 8) {
|
1729
|
-
# verify file identifier
|
1730
|
-
if ($buff =~ /^~(\x10|\x18)\x04(.)0MIE/s) {
|
1731
|
-
SetByteOrder($1 eq "\x10" ? 'MM' : 'II');
|
1732
|
-
my $len = ord($2);
|
1733
|
-
# skip extended DataLength if it exists
|
1734
|
-
if ($len > 252 and not $raf->Seek(1 << (256 - $len), 1)) {
|
1735
|
-
$msg = 'Seek error';
|
1736
|
-
last;
|
1737
|
-
}
|
1738
|
-
} else {
|
1739
|
-
return 0 unless $numDocs; # not a MIE file
|
1740
|
-
if ($buff =~ /^~/) {
|
1741
|
-
$msg = 'Non-standard file-level MIE element';
|
1742
|
-
} else {
|
1743
|
-
$msg = 'Invalid MIE file-level data';
|
1744
|
-
}
|
1745
|
-
}
|
1746
|
-
} elsif ($numDocs) {
|
1747
|
-
last unless $num; # OK, all done with file
|
1748
|
-
$msg = 'Truncated MIE element header';
|
1749
|
-
} else {
|
1750
|
-
return 0 if $num or not $outfile;
|
1751
|
-
# we have the ability to create a MIE file from scratch
|
1752
|
-
$buff = ''; # start from nothing
|
1753
|
-
# set byte order according to preferences
|
1754
|
-
$et->SetPreferredByteOrder();
|
1755
|
-
$isCreating = 1;
|
1756
|
-
}
|
1757
|
-
if ($msg) {
|
1758
|
-
last if $$dirInfo{Trailer}; # allow other trailers after MIE
|
1759
|
-
if ($outfile) {
|
1760
|
-
$et->Error($msg);
|
1761
|
-
} else {
|
1762
|
-
$et->Warn($msg);
|
1763
|
-
}
|
1764
|
-
last;
|
1765
|
-
}
|
1766
|
-
# this is a new MIE document -- increment document count
|
1767
|
-
unless ($numDocs) {
|
1768
|
-
# this is a valid MIE file (unless a trailer on another file)
|
1769
|
-
$et->SetFileType();
|
1770
|
-
$$et{NO_LIST} = 1; # handle lists ourself
|
1771
|
-
$$et{MIE_COUNT} = { };
|
1772
|
-
undef $hasZlib;
|
1773
|
-
}
|
1774
|
-
++$numDocs;
|
1775
|
-
|
1776
|
-
# process the MIE groups recursively, beginning with the main MIE group
|
1777
|
-
my $tagTablePtr = GetTagTable('Image::ExifTool::MIE::Main');
|
1778
|
-
|
1779
|
-
my %subdirInfo = (
|
1780
|
-
DirName => 'MIE',
|
1781
|
-
RAF => $raf,
|
1782
|
-
OutFile => $outfile,
|
1783
|
-
# don't define Parent so WriteMIEGroup() writes extended terminator
|
1784
|
-
);
|
1785
|
-
if ($outfile) {
|
1786
|
-
# generate lookup for MIE format codes if not done already
|
1787
|
-
unless (%mieCode) {
|
1788
|
-
foreach (keys %mieFormat) {
|
1789
|
-
$mieCode{$mieFormat{$_}} = $_;
|
1790
|
-
}
|
1791
|
-
}
|
1792
|
-
# update %mieMap with user-defined MIE groups
|
1793
|
-
UpdateMieMap() unless $doneMieMap;
|
1794
|
-
# initialize write directories, with MIE tags taking priority
|
1795
|
-
# (note that this may re-initialize directories when writing trailer
|
1796
|
-
# to another type of image, but this is OK because we are done writing
|
1797
|
-
# the other format by the time we start writing the trailer)
|
1798
|
-
$et->InitWriteDirs(\%mieMap, 'MIE');
|
1799
|
-
$subdirInfo{ToWrite} = '~' . MIEGroupFormat(1) . "\x04\xfe0MIE\0\0\0\0";
|
1800
|
-
$msg = WriteMIEGroup($et, \%subdirInfo, $tagTablePtr);
|
1801
|
-
if ($msg) {
|
1802
|
-
$et->Error($msg);
|
1803
|
-
$err = 1;
|
1804
|
-
last;
|
1805
|
-
} elsif (defined $msg and $isCreating) {
|
1806
|
-
last;
|
1807
|
-
}
|
1808
|
-
} else {
|
1809
|
-
$msg = ProcessMIEGroup($et, \%subdirInfo, $tagTablePtr);
|
1810
|
-
if ($msg) {
|
1811
|
-
$et->Warn($msg);
|
1812
|
-
last;
|
1813
|
-
}
|
1814
|
-
}
|
1815
|
-
}
|
1816
|
-
delete $$et{NO_LIST};
|
1817
|
-
delete $$et{MIE_COUNT};
|
1818
|
-
delete $$et{SET_GROUP1};
|
1819
|
-
return $err ? -1 : 1;
|
1820
|
-
}
|
1821
|
-
|
1822
|
-
1; # end
|
1823
|
-
|
1824
|
-
__END__
|
1825
|
-
|
1826
|
-
=head1 NAME
|
1827
|
-
|
1828
|
-
Image::ExifTool::MIE - Read/write MIE meta information
|
1829
|
-
|
1830
|
-
=head1 SYNOPSIS
|
1831
|
-
|
1832
|
-
This module is used by Image::ExifTool
|
1833
|
-
|
1834
|
-
=head1 DESCRIPTION
|
1835
|
-
|
1836
|
-
This module contains routines required by Image::ExifTool to read and write
|
1837
|
-
information in MIE files.
|
1838
|
-
|
1839
|
-
=head1 WHAT IS MIE?
|
1840
|
-
|
1841
|
-
MIE stands for "Meta Information Encapsulation". The MIE format is an
|
1842
|
-
extensible, dedicated meta information format which supports storage of
|
1843
|
-
binary as well as textual meta information. MIE can be used to encapsulate
|
1844
|
-
meta information from many sources and bundle it together with any type of
|
1845
|
-
file.
|
1846
|
-
|
1847
|
-
=head2 Features
|
1848
|
-
|
1849
|
-
Below is very subjective score card comparing the features of a number of
|
1850
|
-
common file and meta information formats, and comparing them to MIE. The
|
1851
|
-
following features are rated for each format with a score of 0 to 10:
|
1852
|
-
|
1853
|
-
1) Extensible (can incorporate user-defined information).
|
1854
|
-
2) Meaningful tag ID's (hint to meaning of unknown information).
|
1855
|
-
3) Sequential read/write ability (streamable).
|
1856
|
-
4) Hierarchical information structure.
|
1857
|
-
5) Easy to implement reader/writer/editor.
|
1858
|
-
6) Order of information well defined.
|
1859
|
-
7) Large data lengths supported: >64kB (+5) and >4GB (+5).
|
1860
|
-
8) Localized text strings.
|
1861
|
-
9) Multiple documents in a single file.
|
1862
|
-
10) Compact format doesn't squander disk space or bandwidth.
|
1863
|
-
11) Compressed meta information supported.
|
1864
|
-
12) Relocatable data elements (ie. no fixed offsets).
|
1865
|
-
13) Binary meta information (+7) with variable byte order (+3).
|
1866
|
-
14) Mandatory tags not required (an unnecessary complication).
|
1867
|
-
15) Append information to end of file without editing.
|
1868
|
-
|
1869
|
-
Feature number Total
|
1870
|
-
Format 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Score
|
1871
|
-
------ --------------------------------------------- -----
|
1872
|
-
MIE 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 150
|
1873
|
-
PDF 10 10 0 10 0 0 10 0 10 10 10 0 7 10 10 97
|
1874
|
-
PNG 10 10 10 0 8 0 5 10 0 10 10 10 0 10 0 93
|
1875
|
-
XMP 10 10 10 10 2 0 10 10 10 0 0 10 0 10 0 92
|
1876
|
-
AIFF 0 5 10 10 10 0 5 0 0 10 0 10 7 10 0 77
|
1877
|
-
RIFF 0 5 10 10 10 0 5 0 0 10 0 10 7 10 0 77
|
1878
|
-
JPEG 10 0 10 0 10 0 0 0 0 10 0 10 7 10 0 67
|
1879
|
-
EPS 10 10 10 0 0 0 10 0 10 0 0 5 0 10 0 65
|
1880
|
-
CIFF 0 0 0 10 10 0 5 0 0 10 0 10 10 10 0 65
|
1881
|
-
TIFF 0 0 0 10 5 10 5 0 10 10 0 0 10 0 0 60
|
1882
|
-
EXIF 0 0 0 10 5 10 0 0 0 10 0 0 10 0 0 45
|
1883
|
-
IPTC 0 0 10 0 8 0 0 0 0 10 0 10 7 0 0 45
|
1884
|
-
|
1885
|
-
By design, MIE ranks highest by a significant margin. Other formats with
|
1886
|
-
reasonable scores are PDF, PNG and XMP, but each has significant weak
|
1887
|
-
points. What may be surprising is that TIFF, EXIF and IPTC rank so low.
|
1888
|
-
|
1889
|
-
As well as scoring high in all these features, the MIE format has the unique
|
1890
|
-
ability to encapsulate any other type of file, and provides a non-invasive
|
1891
|
-
method of adding meta information to a file. The meta information is
|
1892
|
-
logically separated from the original file data, which is extremely
|
1893
|
-
important because meta information is routinely lost when files are edited.
|
1894
|
-
|
1895
|
-
Also, the MIE format supports multiple files by simple concatenation,
|
1896
|
-
enabling all kinds of wonderful features such as linear databases, edit
|
1897
|
-
histories or non-intrusive file updates. This ability can also be leveraged
|
1898
|
-
to allow MIE-format trailers to be added to some other file types.
|
1899
|
-
|
1900
|
-
=head1 MIE 1.1 FORMAT SPECIFICATION (2007-01-21)
|
1901
|
-
|
1902
|
-
=head2 File Structure
|
1903
|
-
|
1904
|
-
A MIE file consists of a series of MIE elements. A MIE element may contain
|
1905
|
-
either data or a group of MIE elements, providing a hierarchical format for
|
1906
|
-
storing data. Each MIE element is identified by a human-readable tag name,
|
1907
|
-
and may store data from zero to 2^64-1 bytes in length.
|
1908
|
-
|
1909
|
-
=head2 File Signature
|
1910
|
-
|
1911
|
-
The first element in the MIE file must be an uncompressed MIE group element
|
1912
|
-
with a tag name of "0MIE". This restriction allows the first 8 bytes of a
|
1913
|
-
MIE file to be used to identify a MIE format file. The following table
|
1914
|
-
lists the two possible initial byte sequences for a MIE-format file (the
|
1915
|
-
first for big-endian, and the second for little-endian byte ordering):
|
1916
|
-
|
1917
|
-
Byte Number: 0 1 2 3 4 5 6 7
|
1918
|
-
|
1919
|
-
C Characters: ~ \x10 \x04 ? 0 M I E
|
1920
|
-
or ~ \x18 \x04 ? 0 M I E
|
1921
|
-
|
1922
|
-
Hexadecimal: 7e 10 04 ? 30 4d 49 45
|
1923
|
-
or 7e 18 04 ? 30 4d 49 45
|
1924
|
-
|
1925
|
-
Decimal: 126 16 4 ? 48 77 73 69
|
1926
|
-
or 126 24 4 ? 48 77 73 69
|
1927
|
-
|
1928
|
-
Note that byte 1 may have one of the two possible values (0x10 or 0x18), and
|
1929
|
-
byte 3 may have any value (0x00 to 0xff).
|
1930
|
-
|
1931
|
-
=head2 Element Structure
|
1932
|
-
|
1933
|
-
1 byte SyncByte = 0x7e (decimal 126, character '~')
|
1934
|
-
1 byte FormatCode (see below)
|
1935
|
-
1 byte TagLength (T)
|
1936
|
-
1 byte DataLength (gives D if DataLength < 253)
|
1937
|
-
T bytes TagName (T given by TagLength)
|
1938
|
-
2 bytes DataLength2 [exists only if DataLength == 255 (0xff)]
|
1939
|
-
4 bytes DataLength4 [exists only if DataLength == 254 (0xfe)]
|
1940
|
-
8 bytes DataLength8 [exists only if DataLength == 253 (0xfd)]
|
1941
|
-
D bytes DataBlock (D given by DataLength)
|
1942
|
-
|
1943
|
-
The minimum element length is 4 bytes (for a group terminator). The maximum
|
1944
|
-
DataBlock size is 2^64-1 bytes. TagLength and DataLength are unsigned
|
1945
|
-
integers, and the byte ordering for multi-byte DataLength fields is
|
1946
|
-
specified by the containing MIE group element. The SyncByte is byte
|
1947
|
-
aligned, so no padding is added to align on an N-byte boundary.
|
1948
|
-
|
1949
|
-
=head3 FormatCode
|
1950
|
-
|
1951
|
-
The format code is a bitmask that defines the format of the data:
|
1952
|
-
|
1953
|
-
7654 3210
|
1954
|
-
++++ ---- FormatType
|
1955
|
-
---- +--- TypeModifier
|
1956
|
-
---- -+-- Compressed
|
1957
|
-
---- --++ FormatSize
|
1958
|
-
|
1959
|
-
=over 4
|
1960
|
-
|
1961
|
-
=item FormatType (bitmask 0xf0):
|
1962
|
-
|
1963
|
-
0x00 - other (or unknown) data
|
1964
|
-
0x10 - MIE group
|
1965
|
-
0x20 - text string
|
1966
|
-
0x30 - list of null-separated text strings
|
1967
|
-
0x40 - integer
|
1968
|
-
0x50 - rational
|
1969
|
-
0x60 - fixed point
|
1970
|
-
0x70 - floating point
|
1971
|
-
0x80 - free space
|
1972
|
-
|
1973
|
-
=item TypeModifier (bitmask 0x08):
|
1974
|
-
|
1975
|
-
Modifies the meaning of certain FormatTypes (0x00-0x60):
|
1976
|
-
|
1977
|
-
0x08 - other data sensitive to MIE group byte order
|
1978
|
-
0x18 - MIE group with little-endian byte ordering
|
1979
|
-
0x28 - UTF encoded text string
|
1980
|
-
0x38 - UTF encoded text string list
|
1981
|
-
0x48 - signed integer
|
1982
|
-
0x58 - signed rational (denominator is always unsigned)
|
1983
|
-
0x68 - signed fixed-point
|
1984
|
-
|
1985
|
-
=item Compressed (bitmask 0x04):
|
1986
|
-
|
1987
|
-
If this bit is set, the data block is compressed using Zlib deflate. An
|
1988
|
-
entire MIE group may be compressed, with the exception of file-level groups.
|
1989
|
-
|
1990
|
-
=item FormatSize (bitmask 0x03):
|
1991
|
-
|
1992
|
-
Gives the byte size of each data element:
|
1993
|
-
|
1994
|
-
0x00 - 8 bits (1 byte)
|
1995
|
-
0x01 - 16 bits (2 bytes)
|
1996
|
-
0x02 - 32 bits (4 bytes)
|
1997
|
-
0x03 - 64 bits (8 bytes)
|
1998
|
-
|
1999
|
-
The number of bytes in a single value for this format is given by
|
2000
|
-
2**FormatSize (or 1 << FormatSize). The number of values is the data length
|
2001
|
-
divided by this number of bytes. It is an error if the data length is not
|
2002
|
-
an even multiple of the format size in bytes.
|
2003
|
-
|
2004
|
-
=back
|
2005
|
-
|
2006
|
-
The following is a list of all currently defined MIE FormatCode values for
|
2007
|
-
uncompressed data (add 0x04 to each value for compressed data):
|
2008
|
-
|
2009
|
-
0x00 - other data (insensitive to MIE group byte order) (1)
|
2010
|
-
0x01 - other 16-bit data (may be byte swapped)
|
2011
|
-
0x02 - other 32-bit data (may be byte swapped)
|
2012
|
-
0x03 - other 64-bit data (may be byte swapped)
|
2013
|
-
0x08 - other data (sensitive to MIE group byte order) (1)
|
2014
|
-
0x10 - MIE group with big-endian values (1)
|
2015
|
-
0x18 - MIE group with little-endian values (1)
|
2016
|
-
0x20 - ASCII (ISO 8859-1) string (2,3)
|
2017
|
-
0x28 - UTF-8 string (2,3,4)
|
2018
|
-
0x29 - UTF-16 string (2,3,4)
|
2019
|
-
0x2a - UTF-32 string (2,3,4)
|
2020
|
-
0x30 - ASCII (ISO 8859-1) string list (3,5)
|
2021
|
-
0x38 - UTF-8 string list (3,4,5)
|
2022
|
-
0x39 - UTF-16 string list (3,4,5)
|
2023
|
-
0x3a - UTF-32 string list (3,4,5)
|
2024
|
-
0x40 - unsigned 8-bit integer
|
2025
|
-
0x41 - unsigned 16-bit integer
|
2026
|
-
0x42 - unsigned 32-bit integer
|
2027
|
-
0x43 - unsigned 64-bit integer (6)
|
2028
|
-
0x48 - signed 8-bit integer
|
2029
|
-
0x49 - signed 16-bit integer
|
2030
|
-
0x4a - signed 32-bit integer
|
2031
|
-
0x4b - signed 64-bit integer (6)
|
2032
|
-
0x52 - unsigned 32-bit rational (16-bit numerator then denominator) (7)
|
2033
|
-
0x53 - unsigned 64-bit rational (32-bit numerator then denominator) (7)
|
2034
|
-
0x5a - signed 32-bit rational (denominator is unsigned) (7)
|
2035
|
-
0x5b - signed 64-bit rational (denominator is unsigned) (7)
|
2036
|
-
0x61 - unsigned 16-bit fixed-point (high 8 bits is integer part) (8)
|
2037
|
-
0x62 - unsigned 32-bit fixed-point (high 16 bits is integer part) (8)
|
2038
|
-
0x69 - signed 16-bit fixed-point (high 8 bits is signed integer) (8)
|
2039
|
-
0x6a - signed 32-bit fixed-point (high 16 bits is signed integer) (8)
|
2040
|
-
0x72 - 32-bit IEEE float (not recommended for portability reasons)
|
2041
|
-
0x73 - 64-bit IEEE double (not recommended for portability reasons) (6)
|
2042
|
-
0x80 - free space (value data does not contain useful information)
|
2043
|
-
|
2044
|
-
Notes:
|
2045
|
-
|
2046
|
-
=over 4
|
2047
|
-
|
2048
|
-
=item 1.
|
2049
|
-
|
2050
|
-
The byte ordering specified by the MIE group TypeModifier applies to the MIE
|
2051
|
-
group element as well as all elements within the group. Data for all
|
2052
|
-
FormatCodes except 0x08 (other data, sensitive to byte order) may be
|
2053
|
-
transferred between MIE groups with different byte order by byte swapping
|
2054
|
-
the uncompressed data according to the specified data format. The following
|
2055
|
-
list illustrates the byte-swapping pattern, based on FormatSize, for all
|
2056
|
-
format types except rational (FormatType 0x50).
|
2057
|
-
|
2058
|
-
FormatSize Change in Byte Sequence
|
2059
|
-
-------------- -----------------------------------
|
2060
|
-
0x00 (8 bits) 0 1 2 3 4 5 6 7 --> 0 1 2 3 4 5 6 7 (no change)
|
2061
|
-
0x01 (16 bits) 0 1 2 3 4 5 6 7 --> 1 0 3 2 5 4 7 6
|
2062
|
-
0x02 (32 bits) 0 1 2 3 4 5 6 7 --> 3 2 1 0 7 6 5 4
|
2063
|
-
0x03 (64 bits) 0 1 2 3 4 5 6 7 --> 7 6 5 4 3 2 1 0
|
2064
|
-
|
2065
|
-
Rational values consist of two integers, so they are swapped as the next
|
2066
|
-
lower FormatSize. For example, a 32-bit rational (FormatSize 0x02, and
|
2067
|
-
FormatCode 0x52 or 0x5a) is swapped as two 16-bit values (ie. as if it had
|
2068
|
-
FormatSize 0x01).
|
2069
|
-
|
2070
|
-
=item 2.
|
2071
|
-
|
2072
|
-
The TagName of a string element may have an 6-character suffix to indicate a
|
2073
|
-
specific locale. (eg. "Title-en_US", or "Keywords-de_DE").
|
2074
|
-
|
2075
|
-
=item 3.
|
2076
|
-
|
2077
|
-
Text strings are not normally null terminated, however they may be padded
|
2078
|
-
with one or more null characters to the end of the data block to allow
|
2079
|
-
strings to be edited within fixed-length data blocks. Newlines in the text
|
2080
|
-
are indicated by a single LF (0x0a) character.
|
2081
|
-
|
2082
|
-
=item 4.
|
2083
|
-
|
2084
|
-
UTF strings must not begin with a byte order mark (BOM) since the byte order
|
2085
|
-
and byte size are specified by the MIE format. If a BOM is found, it should
|
2086
|
-
be treated as a zero-width non-breaking space.
|
2087
|
-
|
2088
|
-
=item 5.
|
2089
|
-
|
2090
|
-
A list of text strings separated by null characters. These lists must not
|
2091
|
-
be null padded or null terminated, since this would be interpreted as
|
2092
|
-
additional zero-length strings. For ASCII and UTF-8 strings, the null
|
2093
|
-
character is a single zero (0x00) byte. For UTF-16 or UTF-32 strings, the
|
2094
|
-
null character is 2 or 4 zero bytes respectively.
|
2095
|
-
|
2096
|
-
=item 6.
|
2097
|
-
|
2098
|
-
64-bit integers and doubles are subject to the specified byte ordering for
|
2099
|
-
both 32-bit words and bytes within these words. For instance, the high
|
2100
|
-
order byte is always the first byte if big-endian, and the eighth byte if
|
2101
|
-
little-endian. This means that some swapping is always necessary for these
|
2102
|
-
values on systems where the byte order differs from the word order (eg. some
|
2103
|
-
ARM systems), regardless of the endian-ness of the stored values.
|
2104
|
-
|
2105
|
-
=item 7.
|
2106
|
-
|
2107
|
-
Rational values are treated as two separate integers. The numerator always
|
2108
|
-
comes first regardless of the byte ordering. In a signed rational value,
|
2109
|
-
only the numerator is signed. The denominator of all rational values is
|
2110
|
-
unsigned (eg. a signed 64-bit rational of 0x80000000/0x80000000 evaluates to
|
2111
|
-
-1, not +1).
|
2112
|
-
|
2113
|
-
=item 8.
|
2114
|
-
|
2115
|
-
32-bit fixed point values are converted to floating point by treating them
|
2116
|
-
as an integer and dividing by an appropriate value. eg)
|
2117
|
-
|
2118
|
-
16-bit fixed value = 16-bit integer value / 256.0
|
2119
|
-
32-bit fixed value = 32-bit integer value / 65536.0
|
2120
|
-
|
2121
|
-
=back
|
2122
|
-
|
2123
|
-
=head3 TagLength
|
2124
|
-
|
2125
|
-
Gives the length of the TagName string. Any value between 0 and 255 is
|
2126
|
-
valid, but the TagLength of 0 is valid only for the MIE group terminator.
|
2127
|
-
|
2128
|
-
=head3 DataLength
|
2129
|
-
|
2130
|
-
DataLength is an unsigned byte that gives the number of bytes in the data
|
2131
|
-
block. A value between 0 and 252 gives the data length directly, and
|
2132
|
-
numbers from 253 to 255 are reserved for extended DataLength codes. Codes
|
2133
|
-
of 255, 254 and 253 indicate that the element contains an additional 2, 4 or
|
2134
|
-
8 byte unsigned integer representing the data length.
|
2135
|
-
|
2136
|
-
0-252 - length of data block
|
2137
|
-
255 (0xff) - use DataLength2
|
2138
|
-
254 (0xfe) - use DataLength4
|
2139
|
-
253 (0xfd) - use DataLength8
|
2140
|
-
|
2141
|
-
A DataLength of zero is valid for any element except a compressed MIE group.
|
2142
|
-
A zero DataLength for an uncompressed MIE group indicates that the group
|
2143
|
-
length is unknown. For other elements, a zero length indicates there is no
|
2144
|
-
associated data. A terminator element must have a DataLength of 0, 6 or 10,
|
2145
|
-
and may not use an extended DataLength.
|
2146
|
-
|
2147
|
-
=head3 TagName
|
2148
|
-
|
2149
|
-
The TagName string is 0 to 255 bytes long, and is composed of the ASCII
|
2150
|
-
characters A-Z, a-z, 0-9 and underline ('_'). Also, a dash ('-') is used to
|
2151
|
-
separate the language/country code in the TagName of a localized text
|
2152
|
-
string, and a units string (possibly containing other ASCII characters) may
|
2153
|
-
be appear in brackets at the end of the TagName. The TagName string is NOT
|
2154
|
-
null terminated. A MIE element with a tag string of zero length is reserved
|
2155
|
-
for the group terminator.
|
2156
|
-
|
2157
|
-
MIE elements are sorted alphabetically by TagName within each group.
|
2158
|
-
Multiple elements with the same TagName are allowed, even within the same
|
2159
|
-
group.
|
2160
|
-
|
2161
|
-
TagNames should be meaningful. Case is significant. Words should be
|
2162
|
-
lowercase with an uppercase first character, and acronyms should be all
|
2163
|
-
upper case. The underline ("_") is provided to allow separation of two
|
2164
|
-
acronyms or two numbers, but it shouldn't be used unless necessary. No
|
2165
|
-
separation is necessary between an acronym and a word (eg. "ISOSetting").
|
2166
|
-
|
2167
|
-
All TagNames should start with an uppercase letter. An exception to this
|
2168
|
-
rule allows tags to begin with a digit (0-9) if they must come before other
|
2169
|
-
tags in the sort order, or a lowercase letter (a-z) if they must come after.
|
2170
|
-
For instance, the '0Type' element begins with a digit so it comes before,
|
2171
|
-
and the 'data' element begins with a lowercase letter so that it comes after
|
2172
|
-
meta information tags in the main "0MIE" group.
|
2173
|
-
|
2174
|
-
Tag names for localized text strings have an 6-character suffix with the
|
2175
|
-
following format: The first character is a dash ('-'), followed by a
|
2176
|
-
2-character lower case ISO 639-1 language code, then an underline ('_'), and
|
2177
|
-
ending with a 2-character upper case ISO 3166-1 alpha 2 country code. (eg.
|
2178
|
-
"-en_US", "-en_GB", "-de_DE" or "-fr_FR". Note that "GB", and not "UK" is
|
2179
|
-
the code for Great Britain, although "UK" should be recognized for
|
2180
|
-
compatibility reasons.) The suffix is included when sorting the tags
|
2181
|
-
alphabetically, so the default locale (with no tag-name suffix) always comes
|
2182
|
-
first. If the country is unknown or not applicable, a country code of "XX"
|
2183
|
-
should be used.
|
2184
|
-
|
2185
|
-
Tags with numerical values may allow units of measurement to be specified.
|
2186
|
-
The units string is stored in brackets at the end of the tag name, and is
|
2187
|
-
composed of zero or more ASCII characters in the range 0x21 to 0x7d,
|
2188
|
-
excluding the bracket characters 0x28 and 0x29. (eg. "Resolution(/cm)" or
|
2189
|
-
"SpecificHeat(J/kg.K)".) See L<Image::ExifTool::MIEUnits> for details. Unit
|
2190
|
-
strings are not localized, and may not be used in combination with localized
|
2191
|
-
text strings.
|
2192
|
-
|
2193
|
-
Sets of tags which would require a common prefix should be added in a
|
2194
|
-
separate MIE group instead of adding the prefix to all tag names. For
|
2195
|
-
example, instead of these TagName's:
|
2196
|
-
|
2197
|
-
ExternalFlashType
|
2198
|
-
ExternalFlashSerialNumber
|
2199
|
-
ExternalFlashFired
|
2200
|
-
|
2201
|
-
one would instead designate a separate "ExternalFlash" MIE group to contain
|
2202
|
-
the following elements:
|
2203
|
-
|
2204
|
-
Type
|
2205
|
-
SerialNumber
|
2206
|
-
Fired
|
2207
|
-
|
2208
|
-
=head3 DataLength2/4/8
|
2209
|
-
|
2210
|
-
These extended DataLength fields exist only if DataLength is 255, 254 or
|
2211
|
-
253, and are respectively 2, 4 or 8 byte unsigned integers giving the data
|
2212
|
-
block length. One of these values must be used if the data block is larger
|
2213
|
-
than 252 bytes, but they may be used if desired for smaller blocks too
|
2214
|
-
(although this may add a few unnecessary bytes to the MIE element).
|
2215
|
-
|
2216
|
-
=head3 DataBlock
|
2217
|
-
|
2218
|
-
The data value for the MIE element. The format of the data is given by the
|
2219
|
-
FormatCode. For MIE group elements, the data includes all contained
|
2220
|
-
elements and the group terminator.
|
2221
|
-
|
2222
|
-
=head2 MIE groups
|
2223
|
-
|
2224
|
-
All MIE data elements must be contained within a group. A group begins with
|
2225
|
-
a MIE group element, and ends with a group terminator. Groups may be nested
|
2226
|
-
in a hierarchy to arbitrary depth.
|
2227
|
-
|
2228
|
-
A MIE group element is identified by a format code of 0x10 (big endian byte
|
2229
|
-
ordering) or 0x18 (little endian). The group terminator is distinguished by
|
2230
|
-
a zero TagLength (it is the only element allowed to have a zero TagLength),
|
2231
|
-
and has a FormatCode of 0x00.
|
2232
|
-
|
2233
|
-
The MIE group element is permitted to have a zero DataLength only if the
|
2234
|
-
data is uncompressed. This special value indicates that the group length is
|
2235
|
-
unknown (otherwise the minimum value for DataLength is 4, corresponding the
|
2236
|
-
the minimum group size which includes a terminator of at least 4 bytes). If
|
2237
|
-
DataLength is zero, all elements in the group must be parsed until the group
|
2238
|
-
terminator is found. If non-zero, DataLength includes the length of all
|
2239
|
-
elements contained within the group, including the group terminator. Use of
|
2240
|
-
a non-zero DataLength is encouraged because it allows readers quickly skip
|
2241
|
-
over entire MIE groups. For compressed groups DataLength must be non-zero,
|
2242
|
-
and is the length of the compressed group data (which includes the
|
2243
|
-
compressed group terminator).
|
2244
|
-
|
2245
|
-
=head3 Group Terminator
|
2246
|
-
|
2247
|
-
The group terminator has a FormatCode and TagLength of zero. The terminator
|
2248
|
-
DataLength must be 0, 6 or 10 bytes, and extended DataLength codes may not
|
2249
|
-
be used. With a zero DataLength, the byte sequence for a terminator is "7e
|
2250
|
-
00 00 00" (hex). With a DataLength of 6 or 10 bytes, the terminator data
|
2251
|
-
block contains information about the length and byte ordering of the
|
2252
|
-
preceding group. This additional information is recommended for file-level
|
2253
|
-
groups, and is used in multi-document MIE files and MIE trailers to allow
|
2254
|
-
the file to be scanned backwards from the end. (This may also allow some
|
2255
|
-
documents to be recovered if part of the file is corrupted.) The structure
|
2256
|
-
of this optional terminator data block is as follows:
|
2257
|
-
|
2258
|
-
4 or 8 bytes GroupLength (unsigned integer)
|
2259
|
-
1 byte ByteOrder (0x10 or 0x18, same as MIE group)
|
2260
|
-
1 byte GroupLengthSize (0x04 or 0x08)
|
2261
|
-
|
2262
|
-
The ByteOrder and GroupLengthSize values give the byte ordering and size of
|
2263
|
-
the GroupLength integer. The GroupLength value is the total length of the
|
2264
|
-
entire MIE group ending with this terminator, including the opening MIE
|
2265
|
-
group element and the terminator itself.
|
2266
|
-
|
2267
|
-
=head3 File-level MIE groups
|
2268
|
-
|
2269
|
-
File-level MIE groups may NOT be compressed.
|
2270
|
-
|
2271
|
-
All elements in a MIE file are contained within a special group with a
|
2272
|
-
TagName of "0MIE". The purpose of the "OMIE" group is to provide a unique
|
2273
|
-
signature at the start of the file, and to encapsulate information allowing
|
2274
|
-
files to be easily combined. The "0MIE" group must be terminated like any
|
2275
|
-
other group, but it is recommended that the terminator of a file-level group
|
2276
|
-
include the optional data block (defined above) to provide information about
|
2277
|
-
the group length and byte order.
|
2278
|
-
|
2279
|
-
It is valid to have more than one "0MIE" group at the file level, allowing
|
2280
|
-
multiple documents in a single MIE file. Furthermore, the MIE structure
|
2281
|
-
enables multi-document files to be generated by simply concatenating two or
|
2282
|
-
more MIE files.
|
2283
|
-
|
2284
|
-
=head2 Scanning Backwards through a MIE File
|
2285
|
-
|
2286
|
-
The steps below give an algorithm to quickly locate the last document in a
|
2287
|
-
MIE file:
|
2288
|
-
|
2289
|
-
=over 4
|
2290
|
-
|
2291
|
-
=item 1.
|
2292
|
-
|
2293
|
-
Read the last 10 bytes of the file. (Note that a valid MIE file may be as
|
2294
|
-
short as 12 bytes long, but a file this length contains only an an empty MIE
|
2295
|
-
group.)
|
2296
|
-
|
2297
|
-
=item 2.
|
2298
|
-
|
2299
|
-
If the last byte of the file is zero, then it is not possible to scan
|
2300
|
-
backward through the file, so the file must be scanned from the beginning.
|
2301
|
-
Otherwise, proceed to the next step.
|
2302
|
-
|
2303
|
-
=item 3.
|
2304
|
-
|
2305
|
-
If the last byte is 4 or 8, the terminator contains information about the
|
2306
|
-
byte ordering and length of the group. Otherwise, stop here because this
|
2307
|
-
isn't a valid MIE file.
|
2308
|
-
|
2309
|
-
=item 4.
|
2310
|
-
|
2311
|
-
The next-to-last byte must be either 0x10 indicating big-endian byte
|
2312
|
-
ordering or 0x18 for little-endian ordering, otherwise this isn't a valid
|
2313
|
-
MIE file.
|
2314
|
-
|
2315
|
-
=item 5.
|
2316
|
-
|
2317
|
-
The value of the preceding 4 or 8 bytes gives the length of the complete
|
2318
|
-
file-level MIE group (GroupLength). This length includes both the leading
|
2319
|
-
MIE group element and the terminator element itself. The value is an
|
2320
|
-
unsigned integer with a byte length given in step 3), and a byte order from
|
2321
|
-
step 4). From the current file position (at the end of the data read in
|
2322
|
-
step 1), seek backward by this number of bytes to find the start of the MIE
|
2323
|
-
group element for this document.
|
2324
|
-
|
2325
|
-
=back
|
2326
|
-
|
2327
|
-
This algorithm may be repeated again beginning at this point in the file to
|
2328
|
-
locate the next-to-last document, etc.
|
2329
|
-
|
2330
|
-
The table below lists all 5 valid patterns for the last 14 bytes of a
|
2331
|
-
file-level MIE group, with all numbers in hex. The comments indicate the
|
2332
|
-
length and byte ordering of GroupLength (xx) if available:
|
2333
|
-
|
2334
|
-
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 7e 00 00 00 - (no GroupLength)
|
2335
|
-
?? ?? ?? ?? 7e 00 00 06 xx xx xx xx 10 04 - 4 bytes, big endian
|
2336
|
-
?? ?? ?? ?? 7e 00 00 06 xx xx xx xx 18 04 - 4 bytes, little endian
|
2337
|
-
7e 00 00 0a xx xx xx xx xx xx xx xx 10 08 - 8 bytes, big endian
|
2338
|
-
7e 00 00 0a xx xx xx xx xx xx xx xx 18 08 - 8 bytes, little endian
|
2339
|
-
|
2340
|
-
=head2 Trailer Signature
|
2341
|
-
|
2342
|
-
The MIE format may be used for trailer information appended to other types
|
2343
|
-
of files. When this is done, a signature must appear at the end of the main
|
2344
|
-
MIE group to uniquely identify the MIE format trailer. To achieve this, a
|
2345
|
-
"zmie" trailer signature is written as the last element in the main "0MIE"
|
2346
|
-
group. This element has a FormatCode of 0, a TagLength of 4, a DataLength
|
2347
|
-
of 0, and a TagName of "zmie". With this signature, the hex byte sequence
|
2348
|
-
"7e 00 04 00 7a 6d 69 65" appears immediately before the final group
|
2349
|
-
terminator, and the last 22 bytes of the trailer correspond to one of the
|
2350
|
-
following 4 patterns (where the trailer length is given by "xx", as above):
|
2351
|
-
|
2352
|
-
?? ?? ?? ?? 7e 00 04 00 7a 6d 69 65 7e 00 00 06 xx xx xx xx 10 04
|
2353
|
-
?? ?? ?? ?? 7e 00 04 00 7a 6d 69 65 7e 00 00 06 xx xx xx xx 18 04
|
2354
|
-
7e 00 04 00 7a 6d 69 65 7e 00 00 0a xx xx xx xx xx xx xx xx 10 08
|
2355
|
-
7e 00 04 00 7a 6d 69 65 7e 00 00 0a xx xx xx xx xx xx xx xx 18 08
|
2356
|
-
|
2357
|
-
Note that the zero-DataLength terminator may not be used here because the
|
2358
|
-
trailer length must be known for seeking backwards from the end of the file.
|
2359
|
-
|
2360
|
-
Multiple trailers may be appended to the same file using this technique.
|
2361
|
-
|
2362
|
-
=head2 MIE Data Values
|
2363
|
-
|
2364
|
-
MIE data values for a given tag are usually not restricted to a specific
|
2365
|
-
FormatCode. Any value may be represented in any appropriate format,
|
2366
|
-
including numbers represented in string (ASCII or UTF) form.
|
2367
|
-
|
2368
|
-
It is preferred that closely related values with the same format are written
|
2369
|
-
to a single tag instead of using multiple tags. This improves localization
|
2370
|
-
of like values and decreases MIE element overhead. For instance, instead of
|
2371
|
-
separate ImageWidth and ImageHeight tags, a single ImageSize tag is defined.
|
2372
|
-
|
2373
|
-
Tags which may take on a discrete set of values should have meaningful
|
2374
|
-
values if possible. This improves the extensibility of the format and
|
2375
|
-
allows a more reasonable interpretation of unrecognized values.
|
2376
|
-
|
2377
|
-
=head3 Numerical Representation
|
2378
|
-
|
2379
|
-
Integer and floating point numbers may be represented in binary or string
|
2380
|
-
form. In string form, integers are a series of digits with an optional
|
2381
|
-
leading sign (eg. "[+|-]DDDDDD"), and multiple values are separated by a
|
2382
|
-
single space character (eg. "23 128 -32"). Floating point numbers are
|
2383
|
-
similar but may also contain a decimal point and/or a signed exponent with a
|
2384
|
-
leading 'e' character (eg. "[+|-]DD[.DDDDDD][e(+|-)EEE]"). The string "inf"
|
2385
|
-
is used to represent infinity. One advantage of numerical strings is that
|
2386
|
-
they can have an arbitrarily high precision because the possible number of
|
2387
|
-
significant digits is virtually unlimited.
|
2388
|
-
|
2389
|
-
Note that numerical values may have associated units of measurement which
|
2390
|
-
are specified in the L</TagName> string.
|
2391
|
-
|
2392
|
-
=head3 Date/Time Format
|
2393
|
-
|
2394
|
-
All MIE dates are strings in the form "YYYY:mm:dd HH:MM:SS.ss+HH:MM". The
|
2395
|
-
fractional seconds (".ss") are optional, and if included may contain any
|
2396
|
-
number of significant digits (unlike all other fields which are a fixed
|
2397
|
-
number of digits and must be padded with leading zeros if necessary). The
|
2398
|
-
timezone ("+HH:MM" or "-HH:MM") is recommended but not required. If not
|
2399
|
-
given, the local system timezone is assumed.
|
2400
|
-
|
2401
|
-
=head2 MIME Type
|
2402
|
-
|
2403
|
-
The basic MIME type for a MIE file is "application/x-mie", however the
|
2404
|
-
specific MIME type depends on the type of subfile, and is obtained by adding
|
2405
|
-
"x-mie-" to the MIME type of the subfile. For example, with a subfile of
|
2406
|
-
type "image/jpeg", the MIE file MIME type is "image/x-mie-jpeg". But note
|
2407
|
-
that the "x-" is not duplicated if the subfile MIME type already starts with
|
2408
|
-
"x-". So a subfile with MIME type "image/x-raw" is contained within a MIE
|
2409
|
-
file of type "image/x-mie-raw", not "image/x-mie-x-raw". In the case of
|
2410
|
-
multiple documents in a MIE file, the MIME type is taken from the first
|
2411
|
-
document. Regardless of the subfile type, all MIE-format files should have
|
2412
|
-
a filename extension of ".MIE".
|
2413
|
-
|
2414
|
-
=head2 Levels of Support
|
2415
|
-
|
2416
|
-
Basic MIE reader/writer applications may choose not to provide support for
|
2417
|
-
some advanced features of the MIE format. Features which may not be
|
2418
|
-
supported by all software are:
|
2419
|
-
|
2420
|
-
=over 4
|
2421
|
-
|
2422
|
-
=item Compression
|
2423
|
-
|
2424
|
-
Software not supporting compression must ignore compressed elements and
|
2425
|
-
groups, but should be able to process the remaining information.
|
2426
|
-
|
2427
|
-
=item Large data lengths
|
2428
|
-
|
2429
|
-
Some software may limit the maximum size of a MIE group or element.
|
2430
|
-
Historically, a limit of 2GB may be imposed by some systems. However,
|
2431
|
-
8-byte data lengths should be supported by all applications provided the
|
2432
|
-
value doesn't exceed the system limit. (eg. For systems with a 2GB limit,
|
2433
|
-
8-byte data lengths should be supported if the upper 17 bits are all zero.)
|
2434
|
-
If a data length above the system limit is encountered, it may be necessary
|
2435
|
-
for the application to stop processing if it can not seek to the next
|
2436
|
-
element in the file.
|
2437
|
-
|
2438
|
-
=back
|
2439
|
-
|
2440
|
-
=head1 EXAMPLES
|
2441
|
-
|
2442
|
-
This section gives examples for working with MIE information using ExifTool.
|
2443
|
-
|
2444
|
-
=head2 Encapsulating Information with Data in a MIE File
|
2445
|
-
|
2446
|
-
The following command encapsulates any file recognized by ExifTool inside a
|
2447
|
-
MIE file, and initializes MIE tags from information within the file:
|
2448
|
-
|
2449
|
-
exiftool -o new.mie -tagsfromfile FILE '-mie:all<all' \
|
2450
|
-
'-subfilename<filename' '-subfiletype<filetype' \
|
2451
|
-
'-subfilemimetype<mimetype' '-subfiledata<=FILE'
|
2452
|
-
|
2453
|
-
where C<FILE> is the name of the file.
|
2454
|
-
|
2455
|
-
For unrecognized files, this command may be used:
|
2456
|
-
|
2457
|
-
exiftool -o new.mie -subfilename=FILE -subfiletype=TYPE \
|
2458
|
-
-subfilemimetype=MIME '-subfiledata<=FILE'
|
2459
|
-
|
2460
|
-
where C<TYPE> and C<MIME> represent the source file type and MIME type
|
2461
|
-
respectively.
|
2462
|
-
|
2463
|
-
=head2 Adding a MIE Trailer to a File
|
2464
|
-
|
2465
|
-
The MIE format may also be used to store information in a trailer appended
|
2466
|
-
to another type of file. Beware that trailers may not be compatible with
|
2467
|
-
all file formats, but JPEG and TIFF are two formats where additional trailer
|
2468
|
-
information doesn't create any problems for normal parsing of the file.
|
2469
|
-
Also note that this technique has the disadvantage that trailer information
|
2470
|
-
is commonly lost if the file is subsequently edited by other software.
|
2471
|
-
|
2472
|
-
Creating a MIE trailer with ExifTool is a two-step process since ExifTool
|
2473
|
-
can't currently be used to add a MIE trailer directly. The example below
|
2474
|
-
illustrates the steps for adding a MIE trailer with a small preview image
|
2475
|
-
(C<small.jpg>) to a destination JPEG image (C<dst.jpg>).
|
2476
|
-
|
2477
|
-
Step 1) Create a MIE file with a TrailerSignature containing the desired
|
2478
|
-
information:
|
2479
|
-
|
2480
|
-
exiftool -o new.mie -trailersignature=1 -tagsfromfile small.jpg \
|
2481
|
-
'-previewimagetype<filetype' '-previewimagesize<imagesize' \
|
2482
|
-
'-previewimagename<filename' '-previewimage<=small.jpg'
|
2483
|
-
|
2484
|
-
Step 2) Append the MIE information to another file. In Unix, this can be
|
2485
|
-
done with the 'cat' command:
|
2486
|
-
|
2487
|
-
cat new.mie >> dst.jpg
|
2488
|
-
|
2489
|
-
Once added, ExifTool may be used to edit or delete a MIE trailer in a JPEG
|
2490
|
-
or TIFF image.
|
2491
|
-
|
2492
|
-
=head2 Multiple MIE Documents in a Single File
|
2493
|
-
|
2494
|
-
The MIE specification allows multiple MIE documents (or trailers) to exist
|
2495
|
-
in a single file. A file like this may be created by simply concatenating
|
2496
|
-
MIE documents. ExifTool may be used to access information in a specific
|
2497
|
-
document by adding a copy number to the MIE group name. For example:
|
2498
|
-
|
2499
|
-
# write the Author tag in the second MIE document
|
2500
|
-
exiftool -mie2:author=phil test.mie
|
2501
|
-
|
2502
|
-
# delete the first MIE document from a file
|
2503
|
-
exiftool -mie1:all= test.mie
|
2504
|
-
|
2505
|
-
=head2 Units of Measurement
|
2506
|
-
|
2507
|
-
Some MIE tags allow values to be specified in different units of
|
2508
|
-
measurement. In the MIE file format these units are combined with the tag
|
2509
|
-
name, but when using ExifTool they are specified in brackets after the
|
2510
|
-
value:
|
2511
|
-
|
2512
|
-
exiftool -mie:gpsaltitude='7500(ft)' test.mie
|
2513
|
-
|
2514
|
-
If no units are provided, the default units are written.
|
2515
|
-
|
2516
|
-
=head2 Localized Text
|
2517
|
-
|
2518
|
-
Localized text values are accessed by adding a language/country code to the
|
2519
|
-
tag name. For example:
|
2520
|
-
|
2521
|
-
exiftool -comment-en_us='this is a comment' test.mie
|
2522
|
-
|
2523
|
-
=head1 REVISIONS
|
2524
|
-
|
2525
|
-
2010-04-05 - Fixed "Format Size" Note 7 to give the correct number of bits
|
2526
|
-
in the example rational value
|
2527
|
-
2007-01-21 - Specified LF character (0x0a) for text newline sequence
|
2528
|
-
2007-01-19 - Specified ISO 8859-1 character set for extended ASCII codes
|
2529
|
-
2007-01-01 - Improved wording of Step 5 for scanning backwards in MIE file
|
2530
|
-
2006-12-30 - Added EXAMPLES section and note about UTF BOM
|
2531
|
-
2006-12-20 - MIE 1.1: Changed meaning of TypeModifier bit (0x08) for
|
2532
|
-
unknown data (FormatType 0x00), and documented byte swapping
|
2533
|
-
2006-12-14 - MIE 1.0: Added Data Values and Numerical Representations
|
2534
|
-
sections, and added ability to specify units in tag names
|
2535
|
-
2006-11-09 - Added Levels of Support section
|
2536
|
-
2006-11-03 - Added Trailer Signature
|
2537
|
-
2005-11-18 - Original specification created
|
2538
|
-
|
2539
|
-
=head1 AUTHOR
|
2540
|
-
|
2541
|
-
Copyright 2003-2014, Phil Harvey (phil at owl.phy.queensu.ca)
|
2542
|
-
|
2543
|
-
This library is free software; you can redistribute it and/or modify it
|
2544
|
-
under the same terms as Perl itself. The MIE format itself is also
|
2545
|
-
copyright Phil Harvey, and is covered by the same free-use license.
|
2546
|
-
|
2547
|
-
=head1 REFERENCES
|
2548
|
-
|
2549
|
-
=over 4
|
2550
|
-
|
2551
|
-
=item L<http://owl.phy.queensu.ca/~phil/exiftool/MIE1.1-20070121.pdf>
|
2552
|
-
|
2553
|
-
=back
|
2554
|
-
|
2555
|
-
=head1 SEE ALSO
|
2556
|
-
|
2557
|
-
L<Image::ExifTool::TagNames/MIE Tags>, L<Image::ExifTool::MIEUnits>,
|
2558
|
-
L<Image::ExifTool(3pm)|Image::ExifTool>
|
2559
|
-
|
2560
|
-
=cut
|
2561
|
-
|