exiftool_vendored 9.78.0 → 9.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

Files changed (1409) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Image-ExifTool-9.99/Changes +7164 -0
  3. data/bin/Image-ExifTool-9.99/MANIFEST +937 -0
  4. data/bin/Image-ExifTool-9.99/META.yml +27 -0
  5. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/Makefile.PL +0 -0
  6. data/bin/Image-ExifTool-9.99/README +233 -0
  7. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/exif2iptc.args +0 -0
  8. data/bin/Image-ExifTool-9.99/arg_files/exif2xmp.args +45 -0
  9. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/gps2xmp.args +0 -0
  10. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/iptc2exif.args +0 -0
  11. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/iptc2xmp.args +0 -0
  12. data/bin/Image-ExifTool-9.99/arg_files/iptcCore.args +224 -0
  13. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/pdf2xmp.args +0 -0
  14. data/bin/Image-ExifTool-9.99/arg_files/xmp2exif.args +46 -0
  15. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/xmp2gps.args +0 -0
  16. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/xmp2iptc.args +0 -0
  17. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/arg_files/xmp2pdf.args +0 -0
  18. data/bin/Image-ExifTool-9.99/config_files/convert_regions.config +81 -0
  19. data/bin/Image-ExifTool-9.99/config_files/example.config +343 -0
  20. data/bin/Image-ExifTool-9.99/config_files/photoshop_paths.config +54 -0
  21. data/bin/Image-ExifTool-9.99/config_files/picasa_faces.config +369 -0
  22. data/bin/Image-ExifTool-9.99/exiftool +6245 -0
  23. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/fmt_files/gpx.fmt +0 -0
  24. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/fmt_files/gpx_wpt.fmt +0 -0
  25. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/fmt_files/kml.fmt +0 -0
  26. data/bin/Image-ExifTool-9.99/html/ExifTool.html +2067 -0
  27. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/MIE1.1-20070121.pdf +0 -0
  28. data/bin/Image-ExifTool-9.99/html/Shift.html +173 -0
  29. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/AFCP.html +0 -0
  30. data/bin/Image-ExifTool-9.99/html/TagNames/AIFF.html +146 -0
  31. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/APE.html +0 -0
  32. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/APP12.html +0 -0
  33. data/bin/Image-ExifTool-9.99/html/TagNames/ASF.html +1066 -0
  34. data/bin/Image-ExifTool-9.99/html/TagNames/Apple.html +74 -0
  35. data/bin/Image-ExifTool-9.99/html/TagNames/Audible.html +177 -0
  36. data/bin/Image-ExifTool-9.99/html/TagNames/BMP.html +110 -0
  37. data/bin/Image-ExifTool-9.99/html/TagNames/Canon.html +9318 -0
  38. data/bin/Image-ExifTool-9.99/html/TagNames/CanonCustom.html +2081 -0
  39. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/CanonRaw.html +0 -0
  40. data/bin/Image-ExifTool-9.99/html/TagNames/CanonVRD.html +1958 -0
  41. data/bin/Image-ExifTool-9.99/html/TagNames/Casio.html +1606 -0
  42. data/bin/Image-ExifTool-9.99/html/TagNames/Composite.html +704 -0
  43. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/DICOM.html +0 -0
  44. data/bin/Image-ExifTool-9.99/html/TagNames/DNG.html +289 -0
  45. data/bin/Image-ExifTool-9.99/html/TagNames/DPX.html +224 -0
  46. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/DV.html +0 -0
  47. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/DarwinCore.html +0 -0
  48. data/bin/Image-ExifTool-9.99/html/TagNames/DjVu.html +313 -0
  49. data/bin/Image-ExifTool-9.99/html/TagNames/EXE.html +697 -0
  50. data/bin/Image-ExifTool-9.99/html/TagNames/EXIF.html +3381 -0
  51. data/bin/Image-ExifTool-9.99/html/TagNames/Extra.html +437 -0
  52. data/bin/Image-ExifTool-9.99/html/TagNames/FLAC.html +183 -0
  53. data/bin/Image-ExifTool-9.99/html/TagNames/FLIR.html +1340 -0
  54. data/bin/Image-ExifTool-9.99/html/TagNames/Flash.html +419 -0
  55. data/bin/Image-ExifTool-9.99/html/TagNames/FlashPix.html +1465 -0
  56. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Font.html +0 -0
  57. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/FotoStation.html +0 -0
  58. data/bin/Image-ExifTool-9.99/html/TagNames/FujiFilm.html +813 -0
  59. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/GE.html +0 -0
  60. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/GIF.html +0 -0
  61. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/GIMP.html +0 -0
  62. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/GPS.html +0 -0
  63. data/bin/Image-ExifTool-9.99/html/TagNames/GeoTiff.html +2298 -0
  64. data/bin/Image-ExifTool-9.99/html/TagNames/H264.html +393 -0
  65. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/HP.html +0 -0
  66. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/HTML.html +0 -0
  67. data/bin/Image-ExifTool-9.99/html/TagNames/ICC_Profile.html +711 -0
  68. data/bin/Image-ExifTool-9.99/html/TagNames/ID3.html +1593 -0
  69. data/bin/Image-ExifTool-9.99/html/TagNames/IPTC.html +903 -0
  70. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/ITC.html +0 -0
  71. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/JFIF.html +0 -0
  72. data/bin/Image-ExifTool-9.99/html/TagNames/JPEG.html +602 -0
  73. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/JVC.html +0 -0
  74. data/bin/Image-ExifTool-9.99/html/TagNames/Jpeg2000.html +464 -0
  75. data/bin/Image-ExifTool-9.99/html/TagNames/Kodak.html +1891 -0
  76. data/bin/Image-ExifTool-9.99/html/TagNames/KyoceraRaw.html +92 -0
  77. data/bin/Image-ExifTool-9.99/html/TagNames/LNK.html +478 -0
  78. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Leaf.html +0 -0
  79. data/bin/Image-ExifTool-9.99/html/TagNames/Lytro.html +122 -0
  80. data/bin/Image-ExifTool-9.99/html/TagNames/M2TS.html +133 -0
  81. data/bin/Image-ExifTool-9.99/html/TagNames/MIE.html +1026 -0
  82. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/MIFF.html +0 -0
  83. data/bin/Image-ExifTool-9.99/html/TagNames/MNG.html +847 -0
  84. data/bin/Image-ExifTool-9.99/html/TagNames/MOI.html +60 -0
  85. data/bin/Image-ExifTool-9.99/html/TagNames/MPC.html +97 -0
  86. data/bin/Image-ExifTool-9.99/html/TagNames/MPEG.html +249 -0
  87. data/bin/Image-ExifTool-9.99/html/TagNames/MPF.html +199 -0
  88. data/bin/Image-ExifTool-9.99/html/TagNames/MWG.html +577 -0
  89. data/bin/Image-ExifTool-9.99/html/TagNames/MXF.html +6673 -0
  90. data/bin/Image-ExifTool-9.99/html/TagNames/Matroska.html +1069 -0
  91. data/bin/Image-ExifTool-9.99/html/TagNames/Microsoft.html +2073 -0
  92. data/bin/Image-ExifTool-9.99/html/TagNames/Minolta.html +2612 -0
  93. data/bin/Image-ExifTool-9.99/html/TagNames/MinoltaRaw.html +326 -0
  94. data/bin/Image-ExifTool-9.99/html/TagNames/Nikon.html +4814 -0
  95. data/bin/Image-ExifTool-9.99/html/TagNames/NikonCapture.html +799 -0
  96. data/bin/Image-ExifTool-9.99/html/TagNames/NikonCustom.html +5633 -0
  97. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Nintendo.html +0 -0
  98. data/bin/Image-ExifTool-9.99/html/TagNames/OOXML.html +280 -0
  99. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Ogg.html +0 -0
  100. data/bin/Image-ExifTool-9.99/html/TagNames/Olympus.html +3531 -0
  101. data/bin/Image-ExifTool-9.99/html/TagNames/OpenEXR.html +222 -0
  102. data/bin/Image-ExifTool-9.99/html/TagNames/PDF.html +745 -0
  103. data/bin/Image-ExifTool-9.99/html/TagNames/PGF.html +80 -0
  104. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PICT.html +0 -0
  105. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PLIST.html +0 -0
  106. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PNG.html +0 -0
  107. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PSP.html +0 -0
  108. data/bin/Image-ExifTool-9.99/html/TagNames/Palm.html +388 -0
  109. data/bin/Image-ExifTool-9.99/html/TagNames/Panasonic.html +1690 -0
  110. data/bin/Image-ExifTool-9.99/html/TagNames/PanasonicRaw.html +451 -0
  111. data/bin/Image-ExifTool-9.99/html/TagNames/Pentax.html +4655 -0
  112. data/bin/Image-ExifTool-9.99/html/TagNames/PhaseOne.html +253 -0
  113. data/bin/Image-ExifTool-9.99/html/TagNames/PhotoCD.html +402 -0
  114. data/bin/Image-ExifTool-9.99/html/TagNames/PhotoMechanic.html +196 -0
  115. data/bin/Image-ExifTool-9.99/html/TagNames/Photoshop.html +570 -0
  116. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PostScript.html +0 -0
  117. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/PrintIM.html +0 -0
  118. data/bin/Image-ExifTool-9.99/html/TagNames/Qualcomm.html +4778 -0
  119. data/bin/Image-ExifTool-9.99/html/TagNames/QuickTime.html +6036 -0
  120. data/bin/Image-ExifTool-9.99/html/TagNames/RIFF.html +1314 -0
  121. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/RSRC.html +0 -0
  122. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/RTF.html +0 -0
  123. data/bin/Image-ExifTool-9.99/html/TagNames/Radiance.html +87 -0
  124. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Rawzor.html +0 -0
  125. data/bin/Image-ExifTool-9.99/html/TagNames/Real.html +780 -0
  126. data/bin/Image-ExifTool-9.99/html/TagNames/Reconyx.html +132 -0
  127. data/bin/Image-ExifTool-9.99/html/TagNames/Ricoh.html +800 -0
  128. data/bin/Image-ExifTool-9.99/html/TagNames/Samsung.html +604 -0
  129. data/bin/Image-ExifTool-9.99/html/TagNames/Sanyo.html +366 -0
  130. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Scalado.html +0 -0
  131. data/bin/Image-ExifTool-9.99/html/TagNames/Shortcuts.html +276 -0
  132. data/bin/Image-ExifTool-9.99/html/TagNames/Sigma.html +469 -0
  133. data/bin/Image-ExifTool-9.99/html/TagNames/SigmaRaw.html +438 -0
  134. data/bin/Image-ExifTool-9.99/html/TagNames/Sony.html +8640 -0
  135. data/bin/Image-ExifTool-9.99/html/TagNames/SonyIDC.html +267 -0
  136. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Stim.html +0 -0
  137. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Theora.html +0 -0
  138. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Torrent.html +0 -0
  139. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Unknown.html +0 -0
  140. data/bin/Image-ExifTool-9.99/html/TagNames/VCard.html +433 -0
  141. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/Vorbis.html +0 -0
  142. data/bin/Image-ExifTool-9.99/html/TagNames/XMP.html +9175 -0
  143. data/bin/Image-ExifTool-9.99/html/TagNames/ZIP.html +205 -0
  144. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/iWork.html +0 -0
  145. data/bin/Image-ExifTool-9.99/html/TagNames/index.html +211 -0
  146. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/TagNames/style.css +0 -0
  147. data/bin/Image-ExifTool-9.99/html/ancient_history.html +7608 -0
  148. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/canon_raw.html +0 -0
  149. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/commentary.html +0 -0
  150. data/bin/Image-ExifTool-9.99/html/config.html +355 -0
  151. data/bin/Image-ExifTool-9.99/html/data_members.html +279 -0
  152. data/bin/Image-ExifTool-9.99/html/exiftool_pod.html +2503 -0
  153. data/bin/Image-ExifTool-9.99/html/faq.html +1530 -0
  154. data/bin/Image-ExifTool-9.99/html/filename.html +352 -0
  155. data/bin/Image-ExifTool-9.99/html/geotag.html +654 -0
  156. data/bin/Image-ExifTool-9.99/html/history.html +488 -0
  157. data/bin/Image-ExifTool-9.99/html/htmldump.html +738 -0
  158. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/idiosyncracies.html +0 -0
  159. data/bin/Image-ExifTool-9.99/html/index.html +1330 -0
  160. data/bin/Image-ExifTool-9.99/html/install.html +251 -0
  161. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/metafiles.html +0 -0
  162. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/overview.png +0 -0
  163. data/bin/Image-ExifTool-9.99/html/standards.html +286 -0
  164. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/struct.html +0 -0
  165. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/style.css +0 -0
  166. data/bin/Image-ExifTool-9.99/html/under.html +128 -0
  167. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/verbose.html +0 -0
  168. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/html/writing.html +0 -0
  169. data/bin/Image-ExifTool-9.99/lib/File/RandomAccess.pm +378 -0
  170. data/bin/Image-ExifTool-9.99/lib/File/RandomAccess.pod +231 -0
  171. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool.pm +7498 -0
  172. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool.pod +2494 -0
  173. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/AES.pm +501 -0
  174. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/AFCP.pm +286 -0
  175. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/AIFF.pm +289 -0
  176. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/APE.pm +264 -0
  177. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/APP12.pm +322 -0
  178. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ASF.pm +885 -0
  179. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Apple.pm +126 -0
  180. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Audible.pm +317 -0
  181. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/BMP.pm +179 -0
  182. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/BZZ.pm +472 -0
  183. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/BigTIFF.pm +282 -0
  184. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/BuildTagLookup.pm +2508 -0
  185. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Canon.pm +8457 -0
  186. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/CanonCustom.pm +2582 -0
  187. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/CanonRaw.pm +910 -0
  188. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/CanonVRD.pm +2228 -0
  189. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/CaptureOne.pm +235 -0
  190. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Casio.pm +2058 -0
  191. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Charset.pm +396 -0
  192. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Arabic.pm +0 -0
  193. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Baltic.pm +0 -0
  194. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Cyrillic.pm +0 -0
  195. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Greek.pm +0 -0
  196. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Hebrew.pm +0 -0
  197. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/JIS.pm +0 -0
  198. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Latin.pm +0 -0
  199. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Latin2.pm +0 -0
  200. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacArabic.pm +0 -0
  201. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacChineseCN.pm +0 -0
  202. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacChineseTW.pm +0 -0
  203. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacCroatian.pm +0 -0
  204. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacCyrillic.pm +0 -0
  205. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacGreek.pm +0 -0
  206. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacHebrew.pm +0 -0
  207. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacIceland.pm +0 -0
  208. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacJapanese.pm +0 -0
  209. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacKorean.pm +0 -0
  210. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacLatin2.pm +0 -0
  211. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacRSymbol.pm +0 -0
  212. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacRoman.pm +0 -0
  213. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacRomanian.pm +0 -0
  214. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacThai.pm +0 -0
  215. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/MacTurkish.pm +0 -0
  216. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/PDFDoc.pm +0 -0
  217. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/ShiftJIS.pm +0 -0
  218. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Symbol.pm +0 -0
  219. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Thai.pm +0 -0
  220. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Turkish.pm +0 -0
  221. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/lib/Image/ExifTool/Charset/Vietnam.pm +0 -0
  222. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DICOM.pm +3874 -0
  223. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DNG.pm +835 -0
  224. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DPX.pm +181 -0
  225. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DV.pm +319 -0
  226. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DarwinCore.pm +322 -0
  227. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/DjVu.pm +376 -0
  228. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/EXE.pm +1250 -0
  229. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Exif.pm +4672 -0
  230. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FLAC.pm +297 -0
  231. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FLIR.pm +1533 -0
  232. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Fixup.pm +354 -0
  233. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Flash.pm +755 -0
  234. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FlashPix.pm +1935 -0
  235. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Font.pm +647 -0
  236. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FotoStation.pm +261 -0
  237. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/FujiFilm.pm +1195 -0
  238. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GE.pm +81 -0
  239. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GIF.pm +542 -0
  240. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GIMP.pm +258 -0
  241. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GPS.pm +558 -0
  242. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/GeoTiff.pm +2263 -0
  243. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Geotag.pm +1219 -0
  244. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/H264.pm +1112 -0
  245. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/HP.pm +263 -0
  246. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/HTML.pm +576 -0
  247. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/HtmlDump.pm +895 -0
  248. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ICC_Profile.pm +1000 -0
  249. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ID3.pm +1569 -0
  250. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/IPTC.pm +1264 -0
  251. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ITC.pm +215 -0
  252. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Import.pm +329 -0
  253. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/InDesign.pm +277 -0
  254. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/JPEG.pm +605 -0
  255. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/JPEGDigest.pm +2511 -0
  256. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/JVC.pm +130 -0
  257. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Jpeg2000.pm +873 -0
  258. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Kodak.pm +2096 -0
  259. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/KyoceraRaw.pm +173 -0
  260. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/LNK.pm +723 -0
  261. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/cs.pm +1588 -0
  262. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/de.pm +8692 -0
  263. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/en_ca.pm +848 -0
  264. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/en_gb.pm +863 -0
  265. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/es.pm +4019 -0
  266. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/fi.pm +2854 -0
  267. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/fr.pm +4758 -0
  268. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/it.pm +7918 -0
  269. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/ja.pm +5835 -0
  270. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/ko.pm +2330 -0
  271. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/nl.pm +3222 -0
  272. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/pl.pm +1276 -0
  273. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/ru.pm +768 -0
  274. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/sv.pm +638 -0
  275. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/tr.pm +544 -0
  276. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/zh_cn.pm +1330 -0
  277. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lang/zh_tw.pm +801 -0
  278. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Leaf.pm +516 -0
  279. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Lytro.pm +217 -0
  280. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/M2TS.pm +725 -0
  281. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MIE.pm +2564 -0
  282. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MIEUnits.pod +377 -0
  283. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MIFF.pm +279 -0
  284. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MNG.pm +684 -0
  285. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MOI.pm +158 -0
  286. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MPC.pm +156 -0
  287. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MPEG.pm +736 -0
  288. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MPF.pm +292 -0
  289. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MWG.pm +753 -0
  290. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MXF.pm +3032 -0
  291. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MakerNotes.pm +1713 -0
  292. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Matroska.pm +892 -0
  293. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Microsoft.pm +893 -0
  294. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Minolta.pm +2950 -0
  295. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/MinoltaRaw.pm +534 -0
  296. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Nikon.pm +6728 -0
  297. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/NikonCapture.pm +940 -0
  298. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/NikonCustom.pm +6331 -0
  299. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Nintendo.pm +128 -0
  300. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/OOXML.pm +409 -0
  301. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Ogg.pm +237 -0
  302. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Olympus.pm +3796 -0
  303. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/OpenEXR.pm +324 -0
  304. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PDF.pm +2328 -0
  305. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PGF.pm +143 -0
  306. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PICT.pm +1260 -0
  307. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PLIST.pm +453 -0
  308. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PNG.pm +1190 -0
  309. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PPM.pm +169 -0
  310. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PSP.pm +306 -0
  311. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Palm.pm +403 -0
  312. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Panasonic.pm +2366 -0
  313. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PanasonicRaw.pm +639 -0
  314. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Pentax.pm +5941 -0
  315. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PhaseOne.pm +551 -0
  316. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PhotoCD.pm +507 -0
  317. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PhotoMechanic.pm +256 -0
  318. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Photoshop.pm +650 -0
  319. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PostScript.pm +696 -0
  320. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/PrintIM.pm +125 -0
  321. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Qualcomm.pm +1344 -0
  322. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/QuickTime.pm +6572 -0
  323. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/README +981 -0
  324. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/RIFF.pm +1478 -0
  325. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/RSRC.pm +241 -0
  326. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/RTF.pm +383 -0
  327. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Radiance.pm +144 -0
  328. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Rawzor.pm +189 -0
  329. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Real.pm +739 -0
  330. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Reconyx.pm +190 -0
  331. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Ricoh.pm +1121 -0
  332. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Samsung.pm +1168 -0
  333. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Sanyo.pm +440 -0
  334. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Scalado.pm +141 -0
  335. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Shift.pl +596 -0
  336. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Shortcuts.pm +335 -0
  337. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Sigma.pm +684 -0
  338. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/SigmaRaw.pm +668 -0
  339. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Sony.pm +9086 -0
  340. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/SonyIDC.pm +331 -0
  341. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Stim.pm +196 -0
  342. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/TagInfoXML.pm +826 -0
  343. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/TagLookup.pm +8931 -0
  344. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/TagNames.pod +29124 -0
  345. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Theora.pm +145 -0
  346. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Torrent.pm +317 -0
  347. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Unknown.pm +66 -0
  348. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/VCard.pm +405 -0
  349. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Vorbis.pm +238 -0
  350. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteCanonRaw.pl +637 -0
  351. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteExif.pl +3743 -0
  352. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteIPTC.pl +702 -0
  353. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WritePDF.pl +768 -0
  354. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WritePNG.pl +390 -0
  355. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WritePhotoshop.pl +266 -0
  356. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WritePostScript.pl +772 -0
  357. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteQuickTime.pl +358 -0
  358. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/WriteXMP.pl +1367 -0
  359. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/Writer.pl +6164 -0
  360. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/XMP.pm +4034 -0
  361. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/XMP2.pl +1579 -0
  362. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/XMPStruct.pl +826 -0
  363. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/ZIP.pm +667 -0
  364. data/bin/Image-ExifTool-9.99/lib/Image/ExifTool/iWork.pm +223 -0
  365. data/bin/Image-ExifTool-9.99/perl-Image-ExifTool.spec +112 -0
  366. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/AFCP.t +0 -0
  367. data/bin/Image-ExifTool-9.99/t/AFCP_2.out +39 -0
  368. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/AFCP_3.out +0 -0
  369. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/AIFF.t +0 -0
  370. data/bin/Image-ExifTool-9.99/t/AIFF_2.out +33 -0
  371. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/APE.t +0 -0
  372. data/bin/Image-ExifTool-9.99/t/APE_2.out +29 -0
  373. data/bin/Image-ExifTool-9.99/t/APE_3.out +58 -0
  374. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ASF.t +0 -0
  375. data/bin/Image-ExifTool-9.99/t/ASF_2.out +56 -0
  376. data/bin/Image-ExifTool-9.99/t/Audible.t +28 -0
  377. data/bin/Image-ExifTool-9.99/t/Audible_2.out +40 -0
  378. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/BMP.t +0 -0
  379. data/bin/Image-ExifTool-9.99/t/BMP_2.out +23 -0
  380. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/BigTIFF.t +0 -0
  381. data/bin/Image-ExifTool-9.99/t/BigTIFF_2.out +21 -0
  382. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Canon.t +0 -0
  383. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonRaw.t +0 -0
  384. data/bin/Image-ExifTool-9.99/t/CanonRaw_2.out +169 -0
  385. data/bin/Image-ExifTool-9.99/t/CanonRaw_4.out +220 -0
  386. data/bin/Image-ExifTool-9.99/t/CanonRaw_5.out +209 -0
  387. data/bin/Image-ExifTool-9.99/t/CanonRaw_6.out +233 -0
  388. data/bin/Image-ExifTool-9.99/t/CanonRaw_7.out +250 -0
  389. data/bin/Image-ExifTool-9.99/t/CanonVRD.t +220 -0
  390. data/bin/Image-ExifTool-9.99/t/CanonVRD_11.out +121 -0
  391. data/bin/Image-ExifTool-9.99/t/CanonVRD_12.out +13 -0
  392. data/bin/Image-ExifTool-9.99/t/CanonVRD_13.out +102 -0
  393. data/bin/Image-ExifTool-9.99/t/CanonVRD_14.out +101 -0
  394. data/bin/Image-ExifTool-9.99/t/CanonVRD_15.out +5 -0
  395. data/bin/Image-ExifTool-9.99/t/CanonVRD_16.out +5 -0
  396. data/bin/Image-ExifTool-9.99/t/CanonVRD_17.out +5 -0
  397. data/bin/Image-ExifTool-9.99/t/CanonVRD_18.out +5 -0
  398. data/bin/Image-ExifTool-9.99/t/CanonVRD_19.out +5 -0
  399. data/bin/Image-ExifTool-9.99/t/CanonVRD_2.out +119 -0
  400. data/bin/Image-ExifTool-9.99/t/CanonVRD_20.out +5 -0
  401. data/bin/Image-ExifTool-9.99/t/CanonVRD_21.out +1 -0
  402. data/bin/Image-ExifTool-9.99/t/CanonVRD_3.out +119 -0
  403. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_4.out +0 -0
  404. data/bin/Image-ExifTool-9.99/t/CanonVRD_5.out +2 -0
  405. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_6.out +0 -0
  406. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_7.out +0 -0
  407. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_8.out +0 -0
  408. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/CanonVRD_9.out +0 -0
  409. data/bin/Image-ExifTool-9.99/t/Canon_2.out +356 -0
  410. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Canon_3.out +0 -0
  411. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Casio.t +0 -0
  412. data/bin/Image-ExifTool-9.99/t/Casio_2.out +72 -0
  413. data/bin/Image-ExifTool-9.99/t/Casio_3.out +102 -0
  414. data/bin/Image-ExifTool-9.99/t/Casio_4.out +28 -0
  415. data/bin/Image-ExifTool-9.99/t/Casio_5.out +80 -0
  416. data/bin/Image-ExifTool-9.99/t/Casio_6.out +117 -0
  417. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DICOM.t +0 -0
  418. data/bin/Image-ExifTool-9.99/t/DICOM_2.out +109 -0
  419. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DNG.t +0 -0
  420. data/bin/Image-ExifTool-9.99/t/DNG_2.out +328 -0
  421. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DNG_3.out +0 -0
  422. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DPX.t +0 -0
  423. data/bin/Image-ExifTool-9.99/t/DPX_2.out +39 -0
  424. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DV.t +0 -0
  425. data/bin/Image-ExifTool-9.99/t/DV_2.out +26 -0
  426. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/DjVu.t +0 -0
  427. data/bin/Image-ExifTool-9.99/t/DjVu_2.out +46 -0
  428. data/bin/Image-ExifTool-9.99/t/EXE.t +31 -0
  429. data/bin/Image-ExifTool-9.99/t/EXE_2.out +41 -0
  430. data/bin/Image-ExifTool-9.99/t/EXE_3.out +16 -0
  431. data/bin/Image-ExifTool-9.99/t/EXE_4.out +15 -0
  432. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool.t +0 -0
  433. data/bin/Image-ExifTool-9.99/t/ExifTool_16.out +184 -0
  434. data/bin/Image-ExifTool-9.99/t/ExifTool_17.out +598 -0
  435. data/bin/Image-ExifTool-9.99/t/ExifTool_2.out +418 -0
  436. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_20.out +0 -0
  437. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_21.out +0 -0
  438. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_22.out +0 -0
  439. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_23.out +0 -0
  440. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_24.out +0 -0
  441. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_25.out +0 -0
  442. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_26.out +0 -0
  443. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_27.out +0 -0
  444. data/bin/Image-ExifTool-9.99/t/ExifTool_28.out +11 -0
  445. data/bin/Image-ExifTool-9.99/t/ExifTool_3.out +89 -0
  446. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_4.out +0 -0
  447. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_5.out +0 -0
  448. data/bin/Image-ExifTool-9.99/t/ExifTool_6.out +71 -0
  449. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_7.out +0 -0
  450. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_8.out +0 -0
  451. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ExifTool_9.out +0 -0
  452. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FLAC.t +0 -0
  453. data/bin/Image-ExifTool-9.99/t/FLAC_2.out +26 -0
  454. data/bin/Image-ExifTool-9.99/t/FLAC_3.out +20 -0
  455. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FLIR.t +0 -0
  456. data/bin/Image-ExifTool-9.99/t/FLIR_2.out +112 -0
  457. data/bin/Image-ExifTool-9.99/t/FLIR_3.out +49 -0
  458. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Flash.t +0 -0
  459. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FlashPix.t +0 -0
  460. data/bin/Image-ExifTool-9.99/t/FlashPix_2.out +49 -0
  461. data/bin/Image-ExifTool-9.99/t/Flash_2.out +22 -0
  462. data/bin/Image-ExifTool-9.99/t/Flash_3.out +55 -0
  463. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Font.t +0 -0
  464. data/bin/Image-ExifTool-9.99/t/Font_2.out +24 -0
  465. data/bin/Image-ExifTool-9.99/t/Font_3.out +36 -0
  466. data/bin/Image-ExifTool-9.99/t/Font_4.out +27 -0
  467. data/bin/Image-ExifTool-9.99/t/Font_5.out +27 -0
  468. data/bin/Image-ExifTool-9.99/t/Font_6.out +37 -0
  469. data/bin/Image-ExifTool-9.99/t/Font_7.out +37 -0
  470. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FotoStation.t +0 -0
  471. data/bin/Image-ExifTool-9.99/t/FotoStation_2.out +41 -0
  472. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FotoStation_3.out +0 -0
  473. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FujiFilm.t +0 -0
  474. data/bin/Image-ExifTool-9.99/t/FujiFilm_2.out +89 -0
  475. data/bin/Image-ExifTool-9.99/t/FujiFilm_3.out +90 -0
  476. data/bin/Image-ExifTool-9.99/t/FujiFilm_4.out +141 -0
  477. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/FujiFilm_5.out +0 -0
  478. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GE.t +0 -0
  479. data/bin/Image-ExifTool-9.99/t/GE_2.out +86 -0
  480. data/bin/Image-ExifTool-9.99/t/GE_3.out +86 -0
  481. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GIF.t +0 -0
  482. data/bin/Image-ExifTool-9.99/t/GIF_2.out +42 -0
  483. data/bin/Image-ExifTool-9.99/t/GIF_3.out +43 -0
  484. data/bin/Image-ExifTool-9.99/t/GIF_4.out +18 -0
  485. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GIMP.t +0 -0
  486. data/bin/Image-ExifTool-9.99/t/GIMP_2.out +65 -0
  487. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GPS.t +0 -0
  488. data/bin/Image-ExifTool-9.99/t/GPS_2.out +96 -0
  489. data/bin/Image-ExifTool-9.99/t/GPS_3.out +98 -0
  490. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GeoTiff.t +0 -0
  491. data/bin/Image-ExifTool-9.99/t/GeoTiff_2.out +38 -0
  492. data/bin/Image-ExifTool-9.99/t/GeoTiff_3.out +38 -0
  493. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/GeoTiff_4.out +0 -0
  494. data/bin/Image-ExifTool-9.99/t/Geotag.t +172 -0
  495. data/bin/Image-ExifTool-9.99/t/Geotag_10.out +15 -0
  496. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_2.out +0 -0
  497. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_3.out +0 -0
  498. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_5.out +0 -0
  499. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_6.out +0 -0
  500. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_7.out +0 -0
  501. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_8.out +0 -0
  502. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Geotag_9.out +0 -0
  503. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/HTML.t +0 -0
  504. data/bin/Image-ExifTool-9.99/t/HTML_2.out +69 -0
  505. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC.t +0 -0
  506. data/bin/Image-ExifTool-9.99/t/IPTC_2.out +60 -0
  507. data/bin/Image-ExifTool-9.99/t/IPTC_4.out +58 -0
  508. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC_5.out +0 -0
  509. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC_6.out +0 -0
  510. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC_7.out +0 -0
  511. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/IPTC_8.out +0 -0
  512. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ITC.t +0 -0
  513. data/bin/Image-ExifTool-9.99/t/ITC_2.out +21 -0
  514. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/InDesign.t +0 -0
  515. data/bin/Image-ExifTool-9.99/t/InDesign_2.out +20 -0
  516. data/bin/Image-ExifTool-9.99/t/InDesign_3.out +22 -0
  517. data/bin/Image-ExifTool-9.99/t/InDesign_4.out +12 -0
  518. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/JVC.t +0 -0
  519. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/JVC_2.out +0 -0
  520. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/JVC_3.out +0 -0
  521. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Jpeg2000.t +0 -0
  522. data/bin/Image-ExifTool-9.99/t/Jpeg2000_2.out +65 -0
  523. data/bin/Image-ExifTool-9.99/t/Jpeg2000_3.out +53 -0
  524. data/bin/Image-ExifTool-9.99/t/Jpeg2000_4.out +17 -0
  525. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Kodak.t +0 -0
  526. data/bin/Image-ExifTool-9.99/t/Kodak_2.out +111 -0
  527. data/bin/Image-ExifTool-9.99/t/Kodak_3.out +121 -0
  528. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/KyoceraRaw.t +0 -0
  529. data/bin/Image-ExifTool-9.99/t/KyoceraRaw_2.out +28 -0
  530. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/LNK.t +0 -0
  531. data/bin/Image-ExifTool-9.99/t/LNK_2.out +46 -0
  532. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang.t +0 -0
  533. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_1.out +0 -0
  534. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_10.out +0 -0
  535. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_11.out +0 -0
  536. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_12.out +0 -0
  537. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_13.out +0 -0
  538. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_14.out +0 -0
  539. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_15.out +0 -0
  540. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_16.out +0 -0
  541. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_17.out +0 -0
  542. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_18.out +0 -0
  543. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_2.out +0 -0
  544. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_3.out +0 -0
  545. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_4.out +0 -0
  546. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_5.out +0 -0
  547. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_6.out +0 -0
  548. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_7.out +0 -0
  549. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_8.out +0 -0
  550. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lang_9.out +0 -0
  551. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Lytro.t +0 -0
  552. data/bin/Image-ExifTool-9.99/t/Lytro_2.out +109 -0
  553. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/M2TS.t +0 -0
  554. data/bin/Image-ExifTool-9.99/t/M2TS_2.out +29 -0
  555. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MIE.t +0 -0
  556. data/bin/Image-ExifTool-9.99/t/MIE_2.out +69 -0
  557. data/bin/Image-ExifTool-9.99/t/MIE_3.out +136 -0
  558. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MIE_5.out +0 -0
  559. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MIE_6.out +0 -0
  560. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MIFF.t +0 -0
  561. data/bin/Image-ExifTool-9.99/t/MIFF_2.out +110 -0
  562. data/bin/Image-ExifTool-9.99/t/MOI.t +27 -0
  563. data/bin/Image-ExifTool-9.99/t/MOI_2.out +11 -0
  564. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MP3.t +0 -0
  565. data/bin/Image-ExifTool-9.99/t/MP3_2.out +46 -0
  566. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG.t +0 -0
  567. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_2.out +0 -0
  568. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_3.out +0 -0
  569. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_4.out +0 -0
  570. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_5.out +0 -0
  571. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MWG_6.out +0 -0
  572. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/MXF.t +0 -0
  573. data/bin/Image-ExifTool-9.99/t/MXF_2.out +79 -0
  574. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Matroska.t +0 -0
  575. data/bin/Image-ExifTool-9.99/t/Matroska_2.out +66 -0
  576. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Minolta.t +0 -0
  577. data/bin/Image-ExifTool-9.99/t/Minolta_2.out +135 -0
  578. data/bin/Image-ExifTool-9.99/t/Minolta_3.out +148 -0
  579. data/bin/Image-ExifTool-9.99/t/Minolta_4.out +150 -0
  580. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Nikon.t +0 -0
  581. data/bin/Image-ExifTool-9.99/t/Nikon_2.out +84 -0
  582. data/bin/Image-ExifTool-9.99/t/Nikon_3.out +100 -0
  583. data/bin/Image-ExifTool-9.99/t/Nikon_4.out +176 -0
  584. data/bin/Image-ExifTool-9.99/t/Nikon_5.out +169 -0
  585. data/bin/Image-ExifTool-9.99/t/Nikon_7.out +261 -0
  586. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Nikon_8.out +0 -0
  587. data/bin/Image-ExifTool-9.99/t/Olympus.t +94 -0
  588. data/bin/Image-ExifTool-9.99/t/Olympus_2.out +81 -0
  589. data/bin/Image-ExifTool-9.99/t/Olympus_3.out +83 -0
  590. data/bin/Image-ExifTool-9.99/t/Olympus_4.out +194 -0
  591. data/bin/Image-ExifTool-9.99/t/Olympus_5.out +266 -0
  592. data/bin/Image-ExifTool-9.99/t/Olympus_6.out +153 -0
  593. data/bin/Image-ExifTool-9.99/t/Olympus_7.out +483 -0
  594. data/bin/Image-ExifTool-9.99/t/Olympus_8.out +15 -0
  595. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/OpenEXR.t +0 -0
  596. data/bin/Image-ExifTool-9.99/t/OpenEXR_2.out +25 -0
  597. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF.t +0 -0
  598. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_10.out +0 -0
  599. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_11.out +0 -0
  600. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_12.out +0 -0
  601. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_14.out +0 -0
  602. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_15.out +0 -0
  603. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_16.out +0 -0
  604. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_17.out +0 -0
  605. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_18.out +0 -0
  606. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_19.out +0 -0
  607. data/bin/Image-ExifTool-9.99/t/PDF_2.out +118 -0
  608. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_20.out +0 -0
  609. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_22.out +0 -0
  610. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_4.out +0 -0
  611. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_5.out +0 -0
  612. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_6.out +0 -0
  613. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_7.out +0 -0
  614. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_8.out +0 -0
  615. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PDF_9.out +0 -0
  616. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PGF.t +0 -0
  617. data/bin/Image-ExifTool-9.99/t/PGF_2.out +34 -0
  618. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PICT.t +0 -0
  619. data/bin/Image-ExifTool-9.99/t/PICT_2.out +17 -0
  620. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PLIST.t +0 -0
  621. data/bin/Image-ExifTool-9.99/t/PLIST_2.out +21 -0
  622. data/bin/Image-ExifTool-9.99/t/PLIST_3.out +21 -0
  623. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PNG.t +0 -0
  624. data/bin/Image-ExifTool-9.99/t/PNG_2.out +24 -0
  625. data/bin/Image-ExifTool-9.99/t/PNG_3.out +123 -0
  626. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PNG_4.out +0 -0
  627. data/bin/Image-ExifTool-9.99/t/PNG_5.out +18 -0
  628. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PPM.t +0 -0
  629. data/bin/Image-ExifTool-9.99/t/PPM_2.out +17 -0
  630. data/bin/Image-ExifTool-9.99/t/PPM_3.out +11 -0
  631. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PSP.t +0 -0
  632. data/bin/Image-ExifTool-9.99/t/PSP_2.out +34 -0
  633. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Palm.t +0 -0
  634. data/bin/Image-ExifTool-9.99/t/Palm_2.out +32 -0
  635. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Panasonic.t +0 -0
  636. data/bin/Image-ExifTool-9.99/t/Panasonic_2.out +101 -0
  637. data/bin/Image-ExifTool-9.99/t/Panasonic_3.out +121 -0
  638. data/bin/Image-ExifTool-9.99/t/Panasonic_4.out +206 -0
  639. data/bin/Image-ExifTool-9.99/t/Panasonic_5.out +244 -0
  640. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Pentax.t +0 -0
  641. data/bin/Image-ExifTool-9.99/t/Pentax_2.out +225 -0
  642. data/bin/Image-ExifTool-9.99/t/Pentax_3.out +266 -0
  643. data/bin/Image-ExifTool-9.99/t/Pentax_4.out +131 -0
  644. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PhotoCD.t +0 -0
  645. data/bin/Image-ExifTool-9.99/t/PhotoCD_2.out +37 -0
  646. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PhotoMechanic.t +0 -0
  647. data/bin/Image-ExifTool-9.99/t/PhotoMechanic_2.out +83 -0
  648. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PhotoMechanic_3.out +0 -0
  649. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Photoshop.t +0 -0
  650. data/bin/Image-ExifTool-9.99/t/Photoshop_2.out +98 -0
  651. data/bin/Image-ExifTool-9.99/t/Photoshop_3.out +110 -0
  652. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/PostScript.t +0 -0
  653. data/bin/Image-ExifTool-9.99/t/PostScript_2.out +66 -0
  654. data/bin/Image-ExifTool-9.99/t/PostScript_3.out +134 -0
  655. data/bin/Image-ExifTool-9.99/t/QuickTime.t +54 -0
  656. data/bin/Image-ExifTool-9.99/t/QuickTime_2.out +133 -0
  657. data/bin/Image-ExifTool-9.99/t/QuickTime_3.out +73 -0
  658. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/QuickTime_4.out +0 -0
  659. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/QuickTime_5.out +0 -0
  660. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/RIFF.t +0 -0
  661. data/bin/Image-ExifTool-9.99/t/RIFF_2.out +25 -0
  662. data/bin/Image-ExifTool-9.99/t/RIFF_3.out +54 -0
  663. data/bin/Image-ExifTool-9.99/t/RIFF_4.out +18 -0
  664. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/RTF.t +0 -0
  665. data/bin/Image-ExifTool-9.99/t/RTF_2.out +21 -0
  666. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Radiance.t +0 -0
  667. data/bin/Image-ExifTool-9.99/t/Radiance_2.out +24 -0
  668. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Real.t +0 -0
  669. data/bin/Image-ExifTool-9.99/t/Real_2.out +69 -0
  670. data/bin/Image-ExifTool-9.99/t/Real_3.out +19 -0
  671. data/bin/Image-ExifTool-9.99/t/Real_4.out +12 -0
  672. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Ricoh.t +0 -0
  673. data/bin/Image-ExifTool-9.99/t/Ricoh_2.out +72 -0
  674. data/bin/Image-ExifTool-9.99/t/Ricoh_3.out +100 -0
  675. data/bin/Image-ExifTool-9.99/t/Ricoh_4.out +114 -0
  676. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Sanyo.t +0 -0
  677. data/bin/Image-ExifTool-9.99/t/Sanyo_2.out +103 -0
  678. data/bin/Image-ExifTool-9.99/t/Sanyo_3.out +113 -0
  679. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Sigma.t +0 -0
  680. data/bin/Image-ExifTool-9.99/t/Sigma_2.out +93 -0
  681. data/bin/Image-ExifTool-9.99/t/Sigma_3.out +96 -0
  682. data/bin/Image-ExifTool-9.99/t/Sigma_4.out +65 -0
  683. data/bin/Image-ExifTool-9.99/t/Sigma_5.out +194 -0
  684. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Sony.t +0 -0
  685. data/bin/Image-ExifTool-9.99/t/Sony_2.out +86 -0
  686. data/bin/Image-ExifTool-9.99/t/Sony_3.out +87 -0
  687. data/bin/Image-ExifTool-9.99/t/Sony_5.out +34 -0
  688. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/TestLib.pm +0 -0
  689. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Torrent.t +0 -0
  690. data/bin/Image-ExifTool-9.99/t/Torrent_2.out +32 -0
  691. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Unknown.t +0 -0
  692. data/bin/Image-ExifTool-9.99/t/Unknown_2.out +92 -0
  693. data/bin/Image-ExifTool-9.99/t/Unknown_3.out +92 -0
  694. data/bin/Image-ExifTool-9.99/t/VCard.t +31 -0
  695. data/bin/Image-ExifTool-9.99/t/VCard_2.out +54 -0
  696. data/bin/Image-ExifTool-9.99/t/VCard_3.out +88 -0
  697. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Vorbis.t +0 -0
  698. data/bin/Image-ExifTool-9.99/t/Vorbis_2.out +29 -0
  699. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer.t +0 -0
  700. data/bin/Image-ExifTool-9.99/t/Writer_10.out +246 -0
  701. data/bin/Image-ExifTool-9.99/t/Writer_11.out +39 -0
  702. data/bin/Image-ExifTool-9.99/t/Writer_13.out +165 -0
  703. data/bin/Image-ExifTool-9.99/t/Writer_14.out +69 -0
  704. data/bin/Image-ExifTool-9.99/t/Writer_15.out +175 -0
  705. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_16.out +0 -0
  706. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_17.out +0 -0
  707. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_18.out +0 -0
  708. data/bin/Image-ExifTool-9.99/t/Writer_19.out +36 -0
  709. data/bin/Image-ExifTool-9.99/t/Writer_2.out +172 -0
  710. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_22.out +0 -0
  711. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_24.out +0 -0
  712. data/bin/Image-ExifTool-9.99/t/Writer_25.out +40 -0
  713. data/bin/Image-ExifTool-9.99/t/Writer_26.out +34 -0
  714. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_27.out +0 -0
  715. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_28.out +0 -0
  716. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_29.out +0 -0
  717. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_30.out +0 -0
  718. data/bin/Image-ExifTool-9.99/t/Writer_31.out +99 -0
  719. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_32.out +0 -0
  720. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_33.out +0 -0
  721. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_34.out +0 -0
  722. data/bin/Image-ExifTool-9.99/t/Writer_35.out +188 -0
  723. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_36.out +0 -0
  724. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_37.out +0 -0
  725. data/bin/Image-ExifTool-9.99/t/Writer_38.out +63 -0
  726. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_39.out +0 -0
  727. data/bin/Image-ExifTool-9.99/t/Writer_4.out +87 -0
  728. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_40.out +0 -0
  729. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_41.out +0 -0
  730. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_42.out +0 -0
  731. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_43.out +0 -0
  732. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_44.out +0 -0
  733. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_45.out +0 -0
  734. data/bin/Image-ExifTool-9.99/t/Writer_46.out +105 -0
  735. data/bin/Image-ExifTool-9.99/t/Writer_47.out +57 -0
  736. data/bin/Image-ExifTool-9.99/t/Writer_48.out +31 -0
  737. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_50.out +0 -0
  738. data/bin/Image-ExifTool-9.99/t/Writer_51.out +405 -0
  739. data/bin/Image-ExifTool-9.99/t/Writer_52.out +23 -0
  740. data/bin/Image-ExifTool-9.99/t/Writer_53.out +35 -0
  741. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_54.out +0 -0
  742. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_55.out +0 -0
  743. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/Writer_56.out +0 -0
  744. data/bin/Image-ExifTool-9.99/t/Writer_6.out +186 -0
  745. data/bin/Image-ExifTool-9.99/t/Writer_7.out +151 -0
  746. data/bin/Image-ExifTool-9.99/t/Writer_9.out +242 -0
  747. data/bin/Image-ExifTool-9.99/t/XMP.t +557 -0
  748. data/bin/Image-ExifTool-9.99/t/XMP_10.out +37 -0
  749. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_11.out +0 -0
  750. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_12.out +0 -0
  751. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_13.out +0 -0
  752. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_14.out +0 -0
  753. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_15.out +0 -0
  754. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_16.out +0 -0
  755. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_17.out +0 -0
  756. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_18.out +0 -0
  757. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_19.out +0 -0
  758. data/bin/Image-ExifTool-9.99/t/XMP_2.out +140 -0
  759. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_20.out +0 -0
  760. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_21.out +0 -0
  761. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_22.out +0 -0
  762. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_23.out +0 -0
  763. data/bin/Image-ExifTool-9.99/t/XMP_24.out +32 -0
  764. data/bin/Image-ExifTool-9.99/t/XMP_25.out +28 -0
  765. data/bin/Image-ExifTool-9.99/t/XMP_26.out +51 -0
  766. data/bin/Image-ExifTool-9.99/t/XMP_27.out +95 -0
  767. data/bin/Image-ExifTool-9.99/t/XMP_28.out +46 -0
  768. data/bin/Image-ExifTool-9.99/t/XMP_29.out +26 -0
  769. data/bin/Image-ExifTool-9.99/t/XMP_3.out +138 -0
  770. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_30.out +0 -0
  771. data/bin/Image-ExifTool-9.99/t/XMP_31.out +20 -0
  772. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_32.out +0 -0
  773. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_34.out +0 -0
  774. data/bin/Image-ExifTool-9.99/t/XMP_36.out +19 -0
  775. data/bin/Image-ExifTool-9.99/t/XMP_37.out +36 -0
  776. data/bin/Image-ExifTool-9.99/t/XMP_39.out +45 -0
  777. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_40.out +0 -0
  778. data/bin/Image-ExifTool-9.99/t/XMP_41.out +181 -0
  779. data/bin/Image-ExifTool-9.99/t/XMP_42.out +8 -0
  780. data/bin/Image-ExifTool-9.99/t/XMP_43.out +6 -0
  781. data/bin/Image-ExifTool-9.99/t/XMP_44.out +35 -0
  782. data/bin/Image-ExifTool-9.99/t/XMP_5.out +30 -0
  783. data/bin/Image-ExifTool-9.99/t/XMP_6.out +89 -0
  784. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_7.out +0 -0
  785. data/bin/Image-ExifTool-9.99/t/XMP_8.out +19 -0
  786. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/XMP_9.out +0 -0
  787. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/ZIP.t +0 -0
  788. data/bin/Image-ExifTool-9.99/t/ZIP_2.out +19 -0
  789. data/bin/Image-ExifTool-9.99/t/ZIP_3.out +18 -0
  790. data/bin/Image-ExifTool-9.99/t/ZIP_4.out +214 -0
  791. data/bin/Image-ExifTool-9.99/t/ZIP_5.out +136 -0
  792. data/bin/Image-ExifTool-9.99/t/ZIP_6.out +50 -0
  793. data/bin/Image-ExifTool-9.99/t/ZIP_7.out +29 -0
  794. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/AFCP.jpg +0 -0
  795. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/AIFF.aif +0 -0
  796. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/APE.ape +0 -0
  797. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/APE.mpc +0 -0
  798. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ASF.wmv +0 -0
  799. data/bin/Image-ExifTool-9.99/t/images/Audible.aa +0 -0
  800. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/BMP.bmp +0 -0
  801. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/BigTIFF.btf +0 -0
  802. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Canon.jpg +0 -0
  803. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Canon1DmkIII.jpg +0 -0
  804. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CanonRaw.cr2 +0 -0
  805. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CanonRaw.crw +0 -0
  806. data/bin/Image-ExifTool-9.99/t/images/CanonVRD.dr4 +0 -0
  807. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CanonVRD.vrd +0 -0
  808. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CaptureOne.eip +0 -0
  809. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Casio.jpg +0 -0
  810. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Casio2.jpg +0 -0
  811. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/CasioQVCI.jpg +0 -0
  812. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DICOM.dcm +0 -0
  813. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DNG.dng +0 -0
  814. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DPX.dpx +0 -0
  815. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DV.dv +0 -0
  816. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/DjVu.djvu +0 -0
  817. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/EXE.elf +0 -0
  818. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/EXE.exe +0 -0
  819. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/EXE.macho +0 -0
  820. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ExifTool.jpg +0 -0
  821. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ExifTool.tif +0 -0
  822. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ExtendedXMP.jpg +0 -0
  823. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FLAC.flac +0 -0
  824. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FLAC.ogg +0 -0
  825. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FLIR.fpf +0 -0
  826. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FLIR.jpg +0 -0
  827. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Flash.flv +0 -0
  828. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Flash.swf +0 -0
  829. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FlashPix.ppt +0 -0
  830. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.afm +0 -0
  831. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.dfont +0 -0
  832. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.pfa +0 -0
  833. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.pfb +0 -0
  834. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.pfm +0 -0
  835. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Font.ttf +0 -0
  836. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FotoStation.jpg +0 -0
  837. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FujiFilm.jpg +0 -0
  838. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/FujiFilm.raf +0 -0
  839. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GE.jpg +0 -0
  840. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GIF.gif +0 -0
  841. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GIMP.xcf +0 -0
  842. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GPS.jpg +0 -0
  843. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/GeoTiff.tif +0 -0
  844. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.gpx +0 -0
  845. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.igc +0 -0
  846. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.kml +0 -0
  847. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.log +0 -0
  848. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag.xml +0 -0
  849. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Geotag2.log +0 -0
  850. data/bin/Image-ExifTool-9.99/t/images/Geotag3.log +7 -0
  851. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/HTML.html +0 -0
  852. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/IPTC.jpg +0 -0
  853. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ITC.itc +0 -0
  854. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/InDesign.indd +0 -0
  855. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/JVC.jpg +0 -0
  856. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/JVC2.jpg +0 -0
  857. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Jpeg2000.j2c +0 -0
  858. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Jpeg2000.jp2 +0 -0
  859. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Kodak.jpg +0 -0
  860. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/KyoceraRaw.raw +0 -0
  861. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/LNK.lnk +0 -0
  862. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Lytro.lfp +0 -0
  863. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/M2TS.mts +0 -0
  864. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MIE.mie +0 -0
  865. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MIFF.miff +0 -0
  866. data/bin/Image-ExifTool-9.99/t/images/MOI.moi +0 -0
  867. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MP3.mp3 +0 -0
  868. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MWG.jpg +0 -0
  869. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/MXF.mxf +0 -0
  870. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Matroska.mkv +0 -0
  871. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Minolta.jpg +0 -0
  872. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Minolta.mrw +0 -0
  873. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Nikon.jpg +0 -0
  874. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Nikon.nef +0 -0
  875. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/NikonD2Hs.jpg +0 -0
  876. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/NikonD70.jpg +0 -0
  877. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/OOXML.docx +0 -0
  878. data/bin/Image-ExifTool-9.99/t/images/Olympus.dss +0 -0
  879. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Olympus.jpg +0 -0
  880. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Olympus2.jpg +0 -0
  881. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/OlympusE1.jpg +0 -0
  882. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/OpenDoc.ods +0 -0
  883. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/OpenEXR.exr +0 -0
  884. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PDF.pdf +0 -0
  885. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PDF2.pdf +0 -0
  886. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PGF.pgf +0 -0
  887. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PICT.pict +0 -0
  888. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PLIST-bin.plist +0 -0
  889. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PLIST-xml.plist +0 -0
  890. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PNG.png +0 -0
  891. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PPM.ppm +0 -0
  892. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PSP.psp +0 -0
  893. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Palm.mobi +0 -0
  894. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Panasonic.jpg +0 -0
  895. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Panasonic.rw2 +0 -0
  896. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Pentax.avi +0 -0
  897. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Pentax.jpg +0 -0
  898. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PhotoCD.pcd +0 -0
  899. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PhotoMechanic.jpg +0 -0
  900. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Photoshop.psd +0 -0
  901. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/PostScript.eps +0 -0
  902. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/QuickTime.m4a +0 -0
  903. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/QuickTime.mov +0 -0
  904. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/RIFF.avi +0 -0
  905. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/RIFF.wav +0 -0
  906. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/RIFF.webp +0 -0
  907. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/RTF.rtf +0 -0
  908. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Radiance.hdr +0 -0
  909. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Real.ra +0 -0
  910. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Real.ram +0 -0
  911. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Real.rm +0 -0
  912. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Ricoh.jpg +0 -0
  913. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Ricoh2.jpg +0 -0
  914. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sanyo.jpg +0 -0
  915. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sigma.jpg +0 -0
  916. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sigma.x3f +0 -0
  917. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/SigmaDP2.x3f +0 -0
  918. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sony.jpg +0 -0
  919. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Sony.pmp +0 -0
  920. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Torrent.torrent +0 -0
  921. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Unknown.jpg +0 -0
  922. data/bin/Image-ExifTool-9.99/t/images/VCard.ics +94 -0
  923. data/bin/Image-ExifTool-9.99/t/images/VCard.vcf +45 -0
  924. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Vorbis.ogg +0 -0
  925. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/Writer.jpg +0 -0
  926. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.inx +0 -0
  927. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.jpg +0 -0
  928. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.svg +0 -0
  929. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.xml +0 -0
  930. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP.xmp +0 -0
  931. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP2.xmp +0 -0
  932. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP3.xmp +0 -0
  933. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/XMP4.xmp +0 -0
  934. data/bin/Image-ExifTool-9.99/t/images/XMP5.xmp +157 -0
  935. data/bin/Image-ExifTool-9.99/t/images/XMP6.xmp +48 -0
  936. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ZIP.gz +0 -0
  937. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/ZIP.zip +0 -0
  938. data/bin/{Image-ExifTool-9.78 → Image-ExifTool-9.99}/t/images/iWork.numbers +0 -0
  939. data/lib/exiftool_vendored/version.rb +1 -1
  940. metadata +941 -904
  941. data/bin/Image-ExifTool-9.78/Changes +0 -6884
  942. data/bin/Image-ExifTool-9.78/MANIFEST +0 -900
  943. data/bin/Image-ExifTool-9.78/META.yml +0 -27
  944. data/bin/Image-ExifTool-9.78/README +0 -227
  945. data/bin/Image-ExifTool-9.78/arg_files/exif2xmp.args +0 -42
  946. data/bin/Image-ExifTool-9.78/arg_files/iptcCore.args +0 -172
  947. data/bin/Image-ExifTool-9.78/arg_files/xmp2exif.args +0 -43
  948. data/bin/Image-ExifTool-9.78/config_files/ExifTool_config +0 -341
  949. data/bin/Image-ExifTool-9.78/config_files/convert_regions.config +0 -81
  950. data/bin/Image-ExifTool-9.78/exiftool +0 -5969
  951. data/bin/Image-ExifTool-9.78/html/ExifTool.html +0 -2018
  952. data/bin/Image-ExifTool-9.78/html/Shift.html +0 -173
  953. data/bin/Image-ExifTool-9.78/html/TagNames/AIFF.html +0 -146
  954. data/bin/Image-ExifTool-9.78/html/TagNames/ASF.html +0 -1066
  955. data/bin/Image-ExifTool-9.78/html/TagNames/Apple.html +0 -69
  956. data/bin/Image-ExifTool-9.78/html/TagNames/BMP.html +0 -110
  957. data/bin/Image-ExifTool-9.78/html/TagNames/Canon.html +0 -8414
  958. data/bin/Image-ExifTool-9.78/html/TagNames/CanonCustom.html +0 -2081
  959. data/bin/Image-ExifTool-9.78/html/TagNames/CanonVRD.html +0 -1222
  960. data/bin/Image-ExifTool-9.78/html/TagNames/Casio.html +0 -1606
  961. data/bin/Image-ExifTool-9.78/html/TagNames/Composite.html +0 -696
  962. data/bin/Image-ExifTool-9.78/html/TagNames/DNG.html +0 -285
  963. data/bin/Image-ExifTool-9.78/html/TagNames/DPX.html +0 -190
  964. data/bin/Image-ExifTool-9.78/html/TagNames/DjVu.html +0 -313
  965. data/bin/Image-ExifTool-9.78/html/TagNames/EXE.html +0 -697
  966. data/bin/Image-ExifTool-9.78/html/TagNames/EXIF.html +0 -3365
  967. data/bin/Image-ExifTool-9.78/html/TagNames/Extra.html +0 -341
  968. data/bin/Image-ExifTool-9.78/html/TagNames/FLAC.html +0 -183
  969. data/bin/Image-ExifTool-9.78/html/TagNames/FLIR.html +0 -1340
  970. data/bin/Image-ExifTool-9.78/html/TagNames/Flash.html +0 -419
  971. data/bin/Image-ExifTool-9.78/html/TagNames/FlashPix.html +0 -1465
  972. data/bin/Image-ExifTool-9.78/html/TagNames/FujiFilm.html +0 -789
  973. data/bin/Image-ExifTool-9.78/html/TagNames/GeoTiff.html +0 -2184
  974. data/bin/Image-ExifTool-9.78/html/TagNames/H264.html +0 -393
  975. data/bin/Image-ExifTool-9.78/html/TagNames/ICC_Profile.html +0 -711
  976. data/bin/Image-ExifTool-9.78/html/TagNames/ID3.html +0 -1471
  977. data/bin/Image-ExifTool-9.78/html/TagNames/IPTC.html +0 -902
  978. data/bin/Image-ExifTool-9.78/html/TagNames/JPEG.html +0 -602
  979. data/bin/Image-ExifTool-9.78/html/TagNames/Jpeg2000.html +0 -464
  980. data/bin/Image-ExifTool-9.78/html/TagNames/Kodak.html +0 -1881
  981. data/bin/Image-ExifTool-9.78/html/TagNames/KyoceraRaw.html +0 -92
  982. data/bin/Image-ExifTool-9.78/html/TagNames/LNK.html +0 -478
  983. data/bin/Image-ExifTool-9.78/html/TagNames/Lytro.html +0 -122
  984. data/bin/Image-ExifTool-9.78/html/TagNames/M2TS.html +0 -133
  985. data/bin/Image-ExifTool-9.78/html/TagNames/MIE.html +0 -1026
  986. data/bin/Image-ExifTool-9.78/html/TagNames/MNG.html +0 -847
  987. data/bin/Image-ExifTool-9.78/html/TagNames/MPC.html +0 -97
  988. data/bin/Image-ExifTool-9.78/html/TagNames/MPEG.html +0 -249
  989. data/bin/Image-ExifTool-9.78/html/TagNames/MPF.html +0 -199
  990. data/bin/Image-ExifTool-9.78/html/TagNames/MWG.html +0 -567
  991. data/bin/Image-ExifTool-9.78/html/TagNames/MXF.html +0 -6673
  992. data/bin/Image-ExifTool-9.78/html/TagNames/Matroska.html +0 -1069
  993. data/bin/Image-ExifTool-9.78/html/TagNames/Microsoft.html +0 -2069
  994. data/bin/Image-ExifTool-9.78/html/TagNames/Minolta.html +0 -2585
  995. data/bin/Image-ExifTool-9.78/html/TagNames/MinoltaRaw.html +0 -326
  996. data/bin/Image-ExifTool-9.78/html/TagNames/Nikon.html +0 -4734
  997. data/bin/Image-ExifTool-9.78/html/TagNames/NikonCapture.html +0 -799
  998. data/bin/Image-ExifTool-9.78/html/TagNames/NikonCustom.html +0 -4794
  999. data/bin/Image-ExifTool-9.78/html/TagNames/OOXML.html +0 -280
  1000. data/bin/Image-ExifTool-9.78/html/TagNames/Olympus.html +0 -3447
  1001. data/bin/Image-ExifTool-9.78/html/TagNames/OpenEXR.html +0 -222
  1002. data/bin/Image-ExifTool-9.78/html/TagNames/PDF.html +0 -745
  1003. data/bin/Image-ExifTool-9.78/html/TagNames/PGF.html +0 -80
  1004. data/bin/Image-ExifTool-9.78/html/TagNames/Palm.html +0 -388
  1005. data/bin/Image-ExifTool-9.78/html/TagNames/Panasonic.html +0 -1686
  1006. data/bin/Image-ExifTool-9.78/html/TagNames/PanasonicRaw.html +0 -451
  1007. data/bin/Image-ExifTool-9.78/html/TagNames/Pentax.html +0 -4601
  1008. data/bin/Image-ExifTool-9.78/html/TagNames/PhaseOne.html +0 -258
  1009. data/bin/Image-ExifTool-9.78/html/TagNames/PhotoCD.html +0 -402
  1010. data/bin/Image-ExifTool-9.78/html/TagNames/PhotoMechanic.html +0 -196
  1011. data/bin/Image-ExifTool-9.78/html/TagNames/Photoshop.html +0 -570
  1012. data/bin/Image-ExifTool-9.78/html/TagNames/Qualcomm.html +0 -4778
  1013. data/bin/Image-ExifTool-9.78/html/TagNames/QuickTime.html +0 -5729
  1014. data/bin/Image-ExifTool-9.78/html/TagNames/RIFF.html +0 -1314
  1015. data/bin/Image-ExifTool-9.78/html/TagNames/Radiance.html +0 -87
  1016. data/bin/Image-ExifTool-9.78/html/TagNames/Real.html +0 -780
  1017. data/bin/Image-ExifTool-9.78/html/TagNames/Reconyx.html +0 -132
  1018. data/bin/Image-ExifTool-9.78/html/TagNames/Ricoh.html +0 -794
  1019. data/bin/Image-ExifTool-9.78/html/TagNames/Samsung.html +0 -603
  1020. data/bin/Image-ExifTool-9.78/html/TagNames/Sanyo.html +0 -366
  1021. data/bin/Image-ExifTool-9.78/html/TagNames/Shortcuts.html +0 -274
  1022. data/bin/Image-ExifTool-9.78/html/TagNames/Sigma.html +0 -377
  1023. data/bin/Image-ExifTool-9.78/html/TagNames/SigmaRaw.html +0 -438
  1024. data/bin/Image-ExifTool-9.78/html/TagNames/Sony.html +0 -7481
  1025. data/bin/Image-ExifTool-9.78/html/TagNames/SonyIDC.html +0 -267
  1026. data/bin/Image-ExifTool-9.78/html/TagNames/XMP.html +0 -7971
  1027. data/bin/Image-ExifTool-9.78/html/TagNames/ZIP.html +0 -205
  1028. data/bin/Image-ExifTool-9.78/html/TagNames/index.html +0 -207
  1029. data/bin/Image-ExifTool-9.78/html/ancient_history.html +0 -7356
  1030. data/bin/Image-ExifTool-9.78/html/config.html +0 -354
  1031. data/bin/Image-ExifTool-9.78/html/data_members.html +0 -277
  1032. data/bin/Image-ExifTool-9.78/html/exiftool_pod.html +0 -2414
  1033. data/bin/Image-ExifTool-9.78/html/faq.html +0 -1499
  1034. data/bin/Image-ExifTool-9.78/html/filename.html +0 -331
  1035. data/bin/Image-ExifTool-9.78/html/geotag.html +0 -652
  1036. data/bin/Image-ExifTool-9.78/html/history.html +0 -431
  1037. data/bin/Image-ExifTool-9.78/html/htmldump.html +0 -734
  1038. data/bin/Image-ExifTool-9.78/html/index.html +0 -1298
  1039. data/bin/Image-ExifTool-9.78/html/install.html +0 -251
  1040. data/bin/Image-ExifTool-9.78/html/standards.html +0 -286
  1041. data/bin/Image-ExifTool-9.78/html/under.html +0 -127
  1042. data/bin/Image-ExifTool-9.78/lib/File/RandomAccess.pm +0 -378
  1043. data/bin/Image-ExifTool-9.78/lib/File/RandomAccess.pod +0 -231
  1044. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool.pm +0 -7070
  1045. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool.pod +0 -2437
  1046. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/AES.pm +0 -501
  1047. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/AFCP.pm +0 -284
  1048. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/AIFF.pm +0 -286
  1049. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/APE.pm +0 -262
  1050. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/APP12.pm +0 -322
  1051. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ASF.pm +0 -884
  1052. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Apple.pm +0 -115
  1053. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/BMP.pm +0 -179
  1054. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/BZZ.pm +0 -472
  1055. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/BigTIFF.pm +0 -282
  1056. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/BuildTagLookup.pm +0 -2445
  1057. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Canon.pm +0 -8184
  1058. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/CanonCustom.pm +0 -2582
  1059. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/CanonRaw.pm +0 -908
  1060. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/CanonVRD.pm +0 -1519
  1061. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/CaptureOne.pm +0 -235
  1062. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Casio.pm +0 -2057
  1063. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Charset.pm +0 -396
  1064. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DICOM.pm +0 -3874
  1065. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DNG.pm +0 -835
  1066. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DPX.pm +0 -151
  1067. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DV.pm +0 -319
  1068. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DarwinCore.pm +0 -322
  1069. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/DjVu.pm +0 -376
  1070. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/EXE.pm +0 -1228
  1071. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Exif.pm +0 -4652
  1072. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FLAC.pm +0 -296
  1073. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FLIR.pm +0 -1531
  1074. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Fixup.pm +0 -354
  1075. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Flash.pm +0 -755
  1076. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FlashPix.pm +0 -1929
  1077. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Font.pm +0 -643
  1078. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FotoStation.pm +0 -259
  1079. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/FujiFilm.pm +0 -1162
  1080. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GE.pm +0 -81
  1081. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GIF.pm +0 -542
  1082. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GIMP.pm +0 -258
  1083. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GPS.pm +0 -546
  1084. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/GeoTiff.pm +0 -2202
  1085. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Geotag.pm +0 -1201
  1086. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/H264.pm +0 -1112
  1087. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/HP.pm +0 -262
  1088. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/HTML.pm +0 -576
  1089. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/HtmlDump.pm +0 -895
  1090. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ICC_Profile.pm +0 -1000
  1091. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ID3.pm +0 -1532
  1092. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/IPTC.pm +0 -1264
  1093. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ITC.pm +0 -215
  1094. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Import.pm +0 -313
  1095. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/InDesign.pm +0 -277
  1096. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/JPEG.pm +0 -601
  1097. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/JPEGDigest.pm +0 -2511
  1098. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/JVC.pm +0 -130
  1099. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Jpeg2000.pm +0 -873
  1100. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Kodak.pm +0 -2080
  1101. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/KyoceraRaw.pm +0 -173
  1102. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/LNK.pm +0 -723
  1103. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/cs.pm +0 -1588
  1104. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/de.pm +0 -8683
  1105. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/en_ca.pm +0 -848
  1106. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/en_gb.pm +0 -863
  1107. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/es.pm +0 -4020
  1108. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/fi.pm +0 -2854
  1109. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/fr.pm +0 -4748
  1110. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/it.pm +0 -7920
  1111. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/ja.pm +0 -5827
  1112. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/ko.pm +0 -2331
  1113. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/nl.pm +0 -3222
  1114. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/pl.pm +0 -1168
  1115. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/ru.pm +0 -768
  1116. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/sv.pm +0 -638
  1117. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/tr.pm +0 -544
  1118. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1330
  1119. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lang/zh_tw.pm +0 -801
  1120. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Leaf.pm +0 -515
  1121. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Lytro.pm +0 -217
  1122. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/M2TS.pm +0 -725
  1123. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MIE.pm +0 -2561
  1124. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MIEUnits.pod +0 -377
  1125. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MIFF.pm +0 -279
  1126. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MNG.pm +0 -684
  1127. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MPC.pm +0 -156
  1128. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MPEG.pm +0 -736
  1129. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MPF.pm +0 -292
  1130. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MWG.pm +0 -748
  1131. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MXF.pm +0 -3032
  1132. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MakerNotes.pm +0 -1686
  1133. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Matroska.pm +0 -891
  1134. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Microsoft.pm +0 -884
  1135. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Minolta.pm +0 -2901
  1136. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/MinoltaRaw.pm +0 -534
  1137. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Nikon.pm +0 -6578
  1138. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/NikonCapture.pm +0 -940
  1139. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/NikonCustom.pm +0 -5445
  1140. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Nintendo.pm +0 -128
  1141. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/OOXML.pm +0 -409
  1142. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Ogg.pm +0 -237
  1143. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Olympus.pm +0 -3696
  1144. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/OpenEXR.pm +0 -324
  1145. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PDF.pm +0 -2327
  1146. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PGF.pm +0 -143
  1147. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PICT.pm +0 -1260
  1148. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PLIST.pm +0 -453
  1149. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PNG.pm +0 -1190
  1150. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PPM.pm +0 -169
  1151. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PSP.pm +0 -305
  1152. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Palm.pm +0 -403
  1153. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Panasonic.pm +0 -2355
  1154. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PanasonicRaw.pm +0 -638
  1155. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Pentax.pm +0 -5877
  1156. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PhaseOne.pm +0 -557
  1157. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PhotoCD.pm +0 -507
  1158. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PhotoMechanic.pm +0 -256
  1159. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Photoshop.pm +0 -648
  1160. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PostScript.pm +0 -694
  1161. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/PrintIM.pm +0 -125
  1162. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Qualcomm.pm +0 -1344
  1163. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/QuickTime.pm +0 -6305
  1164. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/README +0 -967
  1165. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/RIFF.pm +0 -1478
  1166. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/RSRC.pm +0 -241
  1167. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/RTF.pm +0 -383
  1168. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Radiance.pm +0 -144
  1169. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Rawzor.pm +0 -190
  1170. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Real.pm +0 -736
  1171. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Reconyx.pm +0 -190
  1172. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Ricoh.pm +0 -1114
  1173. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Samsung.pm +0 -1158
  1174. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Sanyo.pm +0 -439
  1175. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Scalado.pm +0 -141
  1176. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Shift.pl +0 -596
  1177. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Shortcuts.pm +0 -333
  1178. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Sigma.pm +0 -589
  1179. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/SigmaRaw.pm +0 -665
  1180. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Sony.pm +0 -8366
  1181. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/SonyIDC.pm +0 -330
  1182. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Stim.pm +0 -196
  1183. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/TagInfoXML.pm +0 -806
  1184. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/TagLookup.pm +0 -8745
  1185. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/TagNames.pod +0 -27987
  1186. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Theora.pm +0 -145
  1187. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Torrent.pm +0 -317
  1188. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Unknown.pm +0 -66
  1189. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Vorbis.pm +0 -237
  1190. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteCanonRaw.pl +0 -637
  1191. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteExif.pl +0 -3743
  1192. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteIPTC.pl +0 -702
  1193. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WritePDF.pl +0 -768
  1194. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WritePNG.pl +0 -390
  1195. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WritePhotoshop.pl +0 -266
  1196. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WritePostScript.pl +0 -777
  1197. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteQuickTime.pl +0 -358
  1198. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/WriteXMP.pl +0 -1358
  1199. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/Writer.pl +0 -5972
  1200. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/XMP.pm +0 -3840
  1201. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/XMP2.pl +0 -1305
  1202. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/XMPStruct.pl +0 -826
  1203. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/ZIP.pm +0 -667
  1204. data/bin/Image-ExifTool-9.78/lib/Image/ExifTool/iWork.pm +0 -223
  1205. data/bin/Image-ExifTool-9.78/perl-Image-ExifTool.spec +0 -110
  1206. data/bin/Image-ExifTool-9.78/t/AFCP_2.out +0 -37
  1207. data/bin/Image-ExifTool-9.78/t/AIFF_2.out +0 -32
  1208. data/bin/Image-ExifTool-9.78/t/APE_2.out +0 -28
  1209. data/bin/Image-ExifTool-9.78/t/APE_3.out +0 -57
  1210. data/bin/Image-ExifTool-9.78/t/ASF_2.out +0 -54
  1211. data/bin/Image-ExifTool-9.78/t/BMP_2.out +0 -21
  1212. data/bin/Image-ExifTool-9.78/t/BigTIFF_2.out +0 -19
  1213. data/bin/Image-ExifTool-9.78/t/CanonRaw_2.out +0 -166
  1214. data/bin/Image-ExifTool-9.78/t/CanonRaw_4.out +0 -216
  1215. data/bin/Image-ExifTool-9.78/t/CanonRaw_5.out +0 -208
  1216. data/bin/Image-ExifTool-9.78/t/CanonRaw_6.out +0 -231
  1217. data/bin/Image-ExifTool-9.78/t/CanonRaw_7.out +0 -247
  1218. data/bin/Image-ExifTool-9.78/t/CanonVRD.t +0 -129
  1219. data/bin/Image-ExifTool-9.78/t/CanonVRD_11.out +0 -118
  1220. data/bin/Image-ExifTool-9.78/t/CanonVRD_12.out +0 -12
  1221. data/bin/Image-ExifTool-9.78/t/CanonVRD_2.out +0 -116
  1222. data/bin/Image-ExifTool-9.78/t/CanonVRD_3.out +0 -116
  1223. data/bin/Image-ExifTool-9.78/t/CanonVRD_5.out +0 -3
  1224. data/bin/Image-ExifTool-9.78/t/Canon_2.out +0 -353
  1225. data/bin/Image-ExifTool-9.78/t/Casio_2.out +0 -70
  1226. data/bin/Image-ExifTool-9.78/t/Casio_3.out +0 -100
  1227. data/bin/Image-ExifTool-9.78/t/Casio_4.out +0 -26
  1228. data/bin/Image-ExifTool-9.78/t/Casio_5.out +0 -78
  1229. data/bin/Image-ExifTool-9.78/t/Casio_6.out +0 -115
  1230. data/bin/Image-ExifTool-9.78/t/DICOM_2.out +0 -108
  1231. data/bin/Image-ExifTool-9.78/t/DNG_2.out +0 -326
  1232. data/bin/Image-ExifTool-9.78/t/DPX_2.out +0 -35
  1233. data/bin/Image-ExifTool-9.78/t/DV_2.out +0 -24
  1234. data/bin/Image-ExifTool-9.78/t/DjVu_2.out +0 -44
  1235. data/bin/Image-ExifTool-9.78/t/EXE.t +0 -31
  1236. data/bin/Image-ExifTool-9.78/t/EXE_2.out +0 -40
  1237. data/bin/Image-ExifTool-9.78/t/EXE_3.out +0 -15
  1238. data/bin/Image-ExifTool-9.78/t/EXE_4.out +0 -14
  1239. data/bin/Image-ExifTool-9.78/t/ExifTool_16.out +0 -181
  1240. data/bin/Image-ExifTool-9.78/t/ExifTool_17.out +0 -597
  1241. data/bin/Image-ExifTool-9.78/t/ExifTool_2.out +0 -416
  1242. data/bin/Image-ExifTool-9.78/t/ExifTool_28.out +0 -10
  1243. data/bin/Image-ExifTool-9.78/t/ExifTool_3.out +0 -87
  1244. data/bin/Image-ExifTool-9.78/t/ExifTool_6.out +0 -68
  1245. data/bin/Image-ExifTool-9.78/t/FLAC_2.out +0 -25
  1246. data/bin/Image-ExifTool-9.78/t/FLAC_3.out +0 -19
  1247. data/bin/Image-ExifTool-9.78/t/FLIR_2.out +0 -110
  1248. data/bin/Image-ExifTool-9.78/t/FLIR_3.out +0 -47
  1249. data/bin/Image-ExifTool-9.78/t/FlashPix_2.out +0 -48
  1250. data/bin/Image-ExifTool-9.78/t/Flash_2.out +0 -20
  1251. data/bin/Image-ExifTool-9.78/t/Flash_3.out +0 -53
  1252. data/bin/Image-ExifTool-9.78/t/Font_2.out +0 -23
  1253. data/bin/Image-ExifTool-9.78/t/Font_3.out +0 -35
  1254. data/bin/Image-ExifTool-9.78/t/Font_4.out +0 -26
  1255. data/bin/Image-ExifTool-9.78/t/Font_5.out +0 -26
  1256. data/bin/Image-ExifTool-9.78/t/Font_6.out +0 -36
  1257. data/bin/Image-ExifTool-9.78/t/Font_7.out +0 -36
  1258. data/bin/Image-ExifTool-9.78/t/FotoStation_2.out +0 -39
  1259. data/bin/Image-ExifTool-9.78/t/FujiFilm_2.out +0 -87
  1260. data/bin/Image-ExifTool-9.78/t/FujiFilm_3.out +0 -88
  1261. data/bin/Image-ExifTool-9.78/t/FujiFilm_4.out +0 -137
  1262. data/bin/Image-ExifTool-9.78/t/GE_2.out +0 -84
  1263. data/bin/Image-ExifTool-9.78/t/GE_3.out +0 -84
  1264. data/bin/Image-ExifTool-9.78/t/GIF_2.out +0 -40
  1265. data/bin/Image-ExifTool-9.78/t/GIF_3.out +0 -41
  1266. data/bin/Image-ExifTool-9.78/t/GIF_4.out +0 -16
  1267. data/bin/Image-ExifTool-9.78/t/GIMP_2.out +0 -63
  1268. data/bin/Image-ExifTool-9.78/t/GPS_2.out +0 -94
  1269. data/bin/Image-ExifTool-9.78/t/GPS_3.out +0 -96
  1270. data/bin/Image-ExifTool-9.78/t/GeoTiff_2.out +0 -36
  1271. data/bin/Image-ExifTool-9.78/t/GeoTiff_3.out +0 -36
  1272. data/bin/Image-ExifTool-9.78/t/Geotag.t +0 -181
  1273. data/bin/Image-ExifTool-9.78/t/HTML_2.out +0 -68
  1274. data/bin/Image-ExifTool-9.78/t/IPTC_2.out +0 -58
  1275. data/bin/Image-ExifTool-9.78/t/IPTC_4.out +0 -56
  1276. data/bin/Image-ExifTool-9.78/t/ITC_2.out +0 -19
  1277. data/bin/Image-ExifTool-9.78/t/InDesign_2.out +0 -19
  1278. data/bin/Image-ExifTool-9.78/t/InDesign_3.out +0 -21
  1279. data/bin/Image-ExifTool-9.78/t/InDesign_4.out +0 -11
  1280. data/bin/Image-ExifTool-9.78/t/Jpeg2000_2.out +0 -63
  1281. data/bin/Image-ExifTool-9.78/t/Jpeg2000_3.out +0 -51
  1282. data/bin/Image-ExifTool-9.78/t/Jpeg2000_4.out +0 -15
  1283. data/bin/Image-ExifTool-9.78/t/Kodak_2.out +0 -109
  1284. data/bin/Image-ExifTool-9.78/t/Kodak_3.out +0 -119
  1285. data/bin/Image-ExifTool-9.78/t/KyoceraRaw_2.out +0 -27
  1286. data/bin/Image-ExifTool-9.78/t/LNK_2.out +0 -45
  1287. data/bin/Image-ExifTool-9.78/t/Lytro_2.out +0 -107
  1288. data/bin/Image-ExifTool-9.78/t/M2TS_2.out +0 -27
  1289. data/bin/Image-ExifTool-9.78/t/MIE_2.out +0 -67
  1290. data/bin/Image-ExifTool-9.78/t/MIE_3.out +0 -134
  1291. data/bin/Image-ExifTool-9.78/t/MIFF_2.out +0 -108
  1292. data/bin/Image-ExifTool-9.78/t/MP3_2.out +0 -45
  1293. data/bin/Image-ExifTool-9.78/t/MXF_2.out +0 -78
  1294. data/bin/Image-ExifTool-9.78/t/Matroska_2.out +0 -64
  1295. data/bin/Image-ExifTool-9.78/t/Minolta_2.out +0 -133
  1296. data/bin/Image-ExifTool-9.78/t/Minolta_3.out +0 -146
  1297. data/bin/Image-ExifTool-9.78/t/Minolta_4.out +0 -148
  1298. data/bin/Image-ExifTool-9.78/t/Nikon_2.out +0 -82
  1299. data/bin/Image-ExifTool-9.78/t/Nikon_3.out +0 -98
  1300. data/bin/Image-ExifTool-9.78/t/Nikon_4.out +0 -174
  1301. data/bin/Image-ExifTool-9.78/t/Nikon_5.out +0 -167
  1302. data/bin/Image-ExifTool-9.78/t/Nikon_7.out +0 -259
  1303. data/bin/Image-ExifTool-9.78/t/Olympus.t +0 -85
  1304. data/bin/Image-ExifTool-9.78/t/Olympus_2.out +0 -79
  1305. data/bin/Image-ExifTool-9.78/t/Olympus_3.out +0 -81
  1306. data/bin/Image-ExifTool-9.78/t/Olympus_4.out +0 -192
  1307. data/bin/Image-ExifTool-9.78/t/Olympus_5.out +0 -264
  1308. data/bin/Image-ExifTool-9.78/t/Olympus_6.out +0 -151
  1309. data/bin/Image-ExifTool-9.78/t/Olympus_7.out +0 -482
  1310. data/bin/Image-ExifTool-9.78/t/OpenEXR_2.out +0 -23
  1311. data/bin/Image-ExifTool-9.78/t/PDF_2.out +0 -117
  1312. data/bin/Image-ExifTool-9.78/t/PGF_2.out +0 -32
  1313. data/bin/Image-ExifTool-9.78/t/PICT_2.out +0 -15
  1314. data/bin/Image-ExifTool-9.78/t/PLIST_2.out +0 -20
  1315. data/bin/Image-ExifTool-9.78/t/PLIST_3.out +0 -20
  1316. data/bin/Image-ExifTool-9.78/t/PNG_2.out +0 -22
  1317. data/bin/Image-ExifTool-9.78/t/PNG_3.out +0 -121
  1318. data/bin/Image-ExifTool-9.78/t/PNG_5.out +0 -17
  1319. data/bin/Image-ExifTool-9.78/t/PPM_2.out +0 -15
  1320. data/bin/Image-ExifTool-9.78/t/PPM_3.out +0 -9
  1321. data/bin/Image-ExifTool-9.78/t/PSP_2.out +0 -32
  1322. data/bin/Image-ExifTool-9.78/t/Palm_2.out +0 -31
  1323. data/bin/Image-ExifTool-9.78/t/Panasonic_2.out +0 -99
  1324. data/bin/Image-ExifTool-9.78/t/Panasonic_3.out +0 -119
  1325. data/bin/Image-ExifTool-9.78/t/Panasonic_4.out +0 -204
  1326. data/bin/Image-ExifTool-9.78/t/Panasonic_5.out +0 -242
  1327. data/bin/Image-ExifTool-9.78/t/Pentax_2.out +0 -221
  1328. data/bin/Image-ExifTool-9.78/t/Pentax_3.out +0 -263
  1329. data/bin/Image-ExifTool-9.78/t/Pentax_4.out +0 -127
  1330. data/bin/Image-ExifTool-9.78/t/PhotoCD_2.out +0 -35
  1331. data/bin/Image-ExifTool-9.78/t/PhotoMechanic_2.out +0 -81
  1332. data/bin/Image-ExifTool-9.78/t/Photoshop_2.out +0 -96
  1333. data/bin/Image-ExifTool-9.78/t/Photoshop_3.out +0 -108
  1334. data/bin/Image-ExifTool-9.78/t/PostScript_2.out +0 -64
  1335. data/bin/Image-ExifTool-9.78/t/PostScript_3.out +0 -132
  1336. data/bin/Image-ExifTool-9.78/t/QuickTime.t +0 -54
  1337. data/bin/Image-ExifTool-9.78/t/QuickTime_2.out +0 -131
  1338. data/bin/Image-ExifTool-9.78/t/QuickTime_3.out +0 -72
  1339. data/bin/Image-ExifTool-9.78/t/RIFF_2.out +0 -24
  1340. data/bin/Image-ExifTool-9.78/t/RIFF_3.out +0 -52
  1341. data/bin/Image-ExifTool-9.78/t/RIFF_4.out +0 -16
  1342. data/bin/Image-ExifTool-9.78/t/RTF_2.out +0 -20
  1343. data/bin/Image-ExifTool-9.78/t/Radiance_2.out +0 -22
  1344. data/bin/Image-ExifTool-9.78/t/Real_2.out +0 -68
  1345. data/bin/Image-ExifTool-9.78/t/Real_3.out +0 -18
  1346. data/bin/Image-ExifTool-9.78/t/Real_4.out +0 -11
  1347. data/bin/Image-ExifTool-9.78/t/Ricoh_2.out +0 -70
  1348. data/bin/Image-ExifTool-9.78/t/Ricoh_3.out +0 -98
  1349. data/bin/Image-ExifTool-9.78/t/Ricoh_4.out +0 -112
  1350. data/bin/Image-ExifTool-9.78/t/Sanyo_2.out +0 -101
  1351. data/bin/Image-ExifTool-9.78/t/Sanyo_3.out +0 -111
  1352. data/bin/Image-ExifTool-9.78/t/Sigma_2.out +0 -91
  1353. data/bin/Image-ExifTool-9.78/t/Sigma_3.out +0 -94
  1354. data/bin/Image-ExifTool-9.78/t/Sigma_4.out +0 -63
  1355. data/bin/Image-ExifTool-9.78/t/Sigma_5.out +0 -192
  1356. data/bin/Image-ExifTool-9.78/t/Sony_2.out +0 -84
  1357. data/bin/Image-ExifTool-9.78/t/Sony_3.out +0 -85
  1358. data/bin/Image-ExifTool-9.78/t/Sony_5.out +0 -32
  1359. data/bin/Image-ExifTool-9.78/t/Torrent_2.out +0 -31
  1360. data/bin/Image-ExifTool-9.78/t/Unknown_2.out +0 -90
  1361. data/bin/Image-ExifTool-9.78/t/Unknown_3.out +0 -90
  1362. data/bin/Image-ExifTool-9.78/t/Vorbis_2.out +0 -28
  1363. data/bin/Image-ExifTool-9.78/t/Writer_10.out +0 -242
  1364. data/bin/Image-ExifTool-9.78/t/Writer_11.out +0 -37
  1365. data/bin/Image-ExifTool-9.78/t/Writer_13.out +0 -161
  1366. data/bin/Image-ExifTool-9.78/t/Writer_14.out +0 -67
  1367. data/bin/Image-ExifTool-9.78/t/Writer_15.out +0 -172
  1368. data/bin/Image-ExifTool-9.78/t/Writer_19.out +0 -34
  1369. data/bin/Image-ExifTool-9.78/t/Writer_2.out +0 -169
  1370. data/bin/Image-ExifTool-9.78/t/Writer_25.out +0 -38
  1371. data/bin/Image-ExifTool-9.78/t/Writer_26.out +0 -32
  1372. data/bin/Image-ExifTool-9.78/t/Writer_31.out +0 -97
  1373. data/bin/Image-ExifTool-9.78/t/Writer_35.out +0 -187
  1374. data/bin/Image-ExifTool-9.78/t/Writer_38.out +0 -62
  1375. data/bin/Image-ExifTool-9.78/t/Writer_4.out +0 -85
  1376. data/bin/Image-ExifTool-9.78/t/Writer_46.out +0 -79
  1377. data/bin/Image-ExifTool-9.78/t/Writer_47.out +0 -56
  1378. data/bin/Image-ExifTool-9.78/t/Writer_48.out +0 -29
  1379. data/bin/Image-ExifTool-9.78/t/Writer_51.out +0 -403
  1380. data/bin/Image-ExifTool-9.78/t/Writer_52.out +0 -22
  1381. data/bin/Image-ExifTool-9.78/t/Writer_53.out +0 -33
  1382. data/bin/Image-ExifTool-9.78/t/Writer_6.out +0 -183
  1383. data/bin/Image-ExifTool-9.78/t/Writer_7.out +0 -150
  1384. data/bin/Image-ExifTool-9.78/t/Writer_9.out +0 -238
  1385. data/bin/Image-ExifTool-9.78/t/XMP.t +0 -525
  1386. data/bin/Image-ExifTool-9.78/t/XMP_10.out +0 -36
  1387. data/bin/Image-ExifTool-9.78/t/XMP_2.out +0 -138
  1388. data/bin/Image-ExifTool-9.78/t/XMP_24.out +0 -31
  1389. data/bin/Image-ExifTool-9.78/t/XMP_25.out +0 -28
  1390. data/bin/Image-ExifTool-9.78/t/XMP_26.out +0 -52
  1391. data/bin/Image-ExifTool-9.78/t/XMP_27.out +0 -93
  1392. data/bin/Image-ExifTool-9.78/t/XMP_28.out +0 -44
  1393. data/bin/Image-ExifTool-9.78/t/XMP_29.out +0 -24
  1394. data/bin/Image-ExifTool-9.78/t/XMP_3.out +0 -136
  1395. data/bin/Image-ExifTool-9.78/t/XMP_31.out +0 -19
  1396. data/bin/Image-ExifTool-9.78/t/XMP_36.out +0 -18
  1397. data/bin/Image-ExifTool-9.78/t/XMP_37.out +0 -35
  1398. data/bin/Image-ExifTool-9.78/t/XMP_39.out +0 -44
  1399. data/bin/Image-ExifTool-9.78/t/XMP_41.out +0 -180
  1400. data/bin/Image-ExifTool-9.78/t/XMP_5.out +0 -29
  1401. data/bin/Image-ExifTool-9.78/t/XMP_6.out +0 -87
  1402. data/bin/Image-ExifTool-9.78/t/XMP_8.out +0 -17
  1403. data/bin/Image-ExifTool-9.78/t/ZIP_2.out +0 -18
  1404. data/bin/Image-ExifTool-9.78/t/ZIP_3.out +0 -17
  1405. data/bin/Image-ExifTool-9.78/t/ZIP_4.out +0 -213
  1406. data/bin/Image-ExifTool-9.78/t/ZIP_5.out +0 -134
  1407. data/bin/Image-ExifTool-9.78/t/ZIP_6.out +0 -49
  1408. data/bin/Image-ExifTool-9.78/t/ZIP_7.out +0 -28
  1409. data/bin/Image-ExifTool-9.78/t/images/XMP5.xmp +0 -158
@@ -0,0 +1,403 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: Palm.pm
3
+ #
4
+ # Description: Read Palm Database files
5
+ #
6
+ # Revisions: 2014/05/28 - P. Harvey Created
7
+ #
8
+ # References: 1) http://wiki.mobileread.com/wiki/PDB
9
+ # 2) http://wiki.mobileread.com/wiki/MOBI
10
+ #------------------------------------------------------------------------------
11
+
12
+ package Image::ExifTool::Palm;
13
+
14
+ use strict;
15
+ use vars qw($VERSION);
16
+ use Image::ExifTool qw(:DataAccess :Utils);
17
+
18
+ $VERSION = '1.00';
19
+
20
+ sub ProcessEXTH($$$);
21
+
22
+ # type/creator ID's for Palm database files
23
+ my %palmTypes = (
24
+ '.pdfADBE' => 'Adobe Reader',
25
+ 'TEXtREAd' => 'PalmDOC',
26
+ 'BVokBDIC' => 'BDicty',
27
+ 'DB99DBOS' => 'DB (Database program)',
28
+ 'PNRdPPrs' => 'eReader',
29
+ 'DataPPrs' => 'eReader',
30
+ 'vIMGView' => 'FireViewer (ImageViewer)',
31
+ 'PmDBPmDB' => 'HanDBase',
32
+ 'InfoINDB' => 'InfoView',
33
+ 'ToGoToGo' => 'iSilo',
34
+ 'SDocSilX' => 'iSilo 3',
35
+ 'JbDbJBas' => 'JFile',
36
+ 'JfDbJFil' => 'JFile Pro',
37
+ 'DATALSdb' => 'LIST',
38
+ 'Mdb1Mdb1' => 'MobileDB',
39
+ 'BOOKMOBI' => 'Mobipocket',
40
+ 'DataPlkr' => 'Plucker',
41
+ 'DataSprd' => 'QuickSheet',
42
+ 'SM01SMem' => 'SuperMemo',
43
+ 'TEXtTlDc' => 'TealDoc',
44
+ 'InfoTlIf' => 'TealInfo',
45
+ 'DataTlMl' => 'TealMeal',
46
+ 'DataTlPt' => 'TealPaint',
47
+ 'dataTDBP' => 'ThinkDB',
48
+ 'TdatTide' => 'Tides',
49
+ 'ToRaTRPW' => 'TomeRaider',
50
+ 'zTXTGPlm' => 'Weasel',
51
+ 'BDOCWrdS' => 'WordSmith',
52
+ );
53
+
54
+ my %dateTimeInfo = (
55
+ # like QuickTime, the time zero should be Jan 1, 1904, but not all software writes this,
56
+ # so assume a time zero of Jan 1, 1970 if the date is before this
57
+ RawConv => q{
58
+ my $offset = (66 * 365 + 17) * 24 * 3600;
59
+ return $val - $offset if $val >= $offset;
60
+ return $val;
61
+ },
62
+ ValueConv => 'ConvertUnixTime($val, 1)', # (UTC written by "EPUB Converter", ref PH)
63
+ PrintConv => '$self->ConvertDateTime($val)',
64
+ );
65
+
66
+ # Palm Database header information
67
+ %Image::ExifTool::Palm::Main = (
68
+ GROUPS => { 0 => 'Palm', 1 => 'Palm', 2 => 'Document' },
69
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
70
+ FORMAT => 'int32u',
71
+ NOTES => q{
72
+ Information extracted from Palm database files (PDB and PRC extensions),
73
+ Mobipocket electronic books (MOBI), and Amazon Kindle KF7 and KF8 books (AZW
74
+ and AZW3).
75
+ },
76
+ 0 => { Name => 'DatabaseName', Format => 'string[32]' },
77
+ # 8 - int16u: file attributes (not very useful)
78
+ # 8.5 - int16u: version
79
+ 9 => {
80
+ Name => 'CreateDate',
81
+ Groups => { 2 => 'Time' },
82
+ %dateTimeInfo,
83
+ },
84
+ 10 => {
85
+ Name => 'ModifyDate',
86
+ Groups => { 2 => 'Time' },
87
+ %dateTimeInfo,
88
+ },
89
+ 11 => {
90
+ Name => 'LastBackupDate',
91
+ Groups => { 2 => 'Time' },
92
+ %dateTimeInfo,
93
+ },
94
+ 12 => 'ModificationNumber',
95
+ 15 => {
96
+ Name => 'PalmFileType',
97
+ Format => 'undef[8]',
98
+ PrintConv => \%palmTypes,
99
+ },
100
+ );
101
+
102
+
103
+ # MOBI header tags
104
+ %Image::ExifTool::Palm::MOBI = (
105
+ GROUPS => { 0 => 'Palm', 1 => 'MOBI', 2 => 'Document' },
106
+ NOTES => q{
107
+ Information extracted from the MOBI header of Mobipocket and Amazon Kindle
108
+ KF7 and KF8 files.
109
+ },
110
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
111
+ FORMAT => 'int32u',
112
+ 0 => {
113
+ Name => 'Compression',
114
+ Format => 'int16u',
115
+ PrintConv => {
116
+ 1 => 'None',
117
+ 2 => 'PalmDOC',
118
+ 17480 => 'HUFF/CDIC',
119
+ },
120
+ },
121
+ 1 => {
122
+ Name => 'UncompressedTextLength',
123
+ PrintConv => \&Image::ExifTool::ConvertFileSize,
124
+ },
125
+ 3 => {
126
+ Name => 'Encryption',
127
+ PrintConv => {
128
+ 0 => 'None',
129
+ 1 => 'Old Mobipocket',
130
+ 2 => 'Mobipocket',
131
+ },
132
+ },
133
+ 6 => {
134
+ Name => 'MobiType',
135
+ PrintConv => {
136
+ 2 => 'Mobipocket Book',
137
+ 3 => 'PalmDoc Book',
138
+ 4 => 'Audio',
139
+ 232 => 'mobipocket? generated by kindlegen1.2',
140
+ 248 => 'KF8: generated by kindlegen2',
141
+ 257 => 'News',
142
+ 258 => 'News_Feed',
143
+ 259 => 'News_Magazine',
144
+ 513 => 'PICS',
145
+ 514 => 'WORD',
146
+ 515 => 'XLS',
147
+ 516 => 'PPT',
148
+ 517 => 'TEXT',
149
+ 518 => 'HTML',
150
+ },
151
+ },
152
+ 7 => {
153
+ Name => 'CodePage',
154
+ RawConv => '$$self{CodePage} = $val',
155
+ PrintConv => {
156
+ # just define commonly used code pages
157
+ # (a much more complete list may be found in FlashPix.pm)
158
+ 1252 => 'Windows Latin 1 (Western European)',
159
+ 65001 => 'Unicode (UTF-8)',
160
+ },
161
+ },
162
+ 9 => 'MobiVersion',
163
+ 21 => 'BookName', # this is actually an offset, but replace it with the string later
164
+ 26 => 'MinimumVersion',
165
+ );
166
+
167
+ # MOBI extended header tags
168
+ %Image::ExifTool::Palm::EXTH = (
169
+ GROUPS => { 0 => 'Palm', 1 => 'MOBI', 2 => 'Document' },
170
+ FORMAT => 'string',
171
+ NOTES => 'Information extracted from the MOBI extended header.',
172
+ PROCESS_PROC => \&ProcessEXTH,
173
+ 1 => 'DRMServerID',
174
+ 2 => 'DRMCommerceID',
175
+ 3 => 'DRM_E-BookBaseID',
176
+ 100 => { Name => 'Author', Groups => { 2 => 'Author' } },
177
+ 101 => 'Publisher',
178
+ 102 => 'Imprint',
179
+ 103 => 'Description',
180
+ 104 => 'ISBN',
181
+ 105 => { Name => 'Subject', List => 1 },
182
+ 106 => {
183
+ Name => 'PublishDate',
184
+ Groups => { 2 => 'Time' },
185
+ ValueConv => q{
186
+ require Image::ExifTool::XMP;
187
+ Image::ExifTool::XMP::ConvertXMPDate($val, 1);
188
+ },
189
+ PrintConv => '$self->ConvertDateTime($val)',
190
+ },
191
+ 107 => 'Review',
192
+ 108 => 'Contributor',
193
+ 109 => { Name => 'Rights', Groups => { 2 => 'Author' } },
194
+ 110 => 'SubjectCode',
195
+ 111 => 'BookType',
196
+ 112 => 'Source',
197
+ 113 => 'ASIN',
198
+ 114 => 'BookVersion',
199
+ 115 => { Name => 'SampleFlag', Format => 'int32u' },
200
+ 116 => { Name => 'StartReading', Format => 'int32u' },
201
+ 117 => 'Adult',
202
+ 118 => 'RetailPrice',
203
+ 119 => 'RetailPriceCurrency',
204
+ # 121 => 'KF8BoundaryOffset',
205
+ 125 => { Name => 'ResourceCount', Format => 'int32u' },
206
+ 129 => 'KF8CoverURI',
207
+ 200 => 'DictionaryShortName',
208
+ # 201 => { Name => 'CoverOffset', Format => 'int32u' },
209
+ # 202 => { Name => 'ThumbOffset', Format => 'int32u' },
210
+ # 203 => 'HasFakeCover',
211
+ 204 => {
212
+ Name => 'CreatorSoftware',
213
+ Format => 'int32u',
214
+ PrintConv => {
215
+ 1 => 'Mobigen',
216
+ 2 => 'Mobipocket',
217
+ 200 => 'Kindlegen (Windows)',
218
+ 201 => 'Kindlegen (Linux)',
219
+ 202 => 'Kindlegen (Mac)',
220
+ },
221
+ },
222
+ 205 => { Name => 'CreatorMajorVersion', Format => 'int32u' },
223
+ 206 => { Name => 'CreatorMinorVersion', Format => 'int32u' },
224
+ 207 => { Name => 'CreatorBuildNumber', Format => 'int32u' },
225
+ 208 => 'Watermark',
226
+ 209 => 'Tamper-proofKeys',
227
+ # 300 => 'FontSignature',
228
+ 401 => { Name => 'ClippingLimit', Format => 'int8u' },
229
+ 402 => 'PublisherLimit',
230
+ 404 => {
231
+ Name => 'TextToSpeech',
232
+ Format => 'int8u',
233
+ PrintConv => { 0 => 'Enabled', 1 => 'Disabled' },
234
+ },
235
+ 405 => { Name => 'RentalFlag', Format => 'int8u' }, #?
236
+ 406 => 'RentalExpirationDate',
237
+ 501 => { Name => 'CDEType', Format => 'int32u' },
238
+ 502 => 'LastUpdateTime',
239
+ 503 => 'UpdatedTitle',
240
+ 504 => 'ASIN2',
241
+ 524 => 'Language',
242
+ 525 => 'Alignment',
243
+ 535 => 'CreatorBuildNumber2',
244
+ );
245
+
246
+ #------------------------------------------------------------------------------
247
+ # Process the MOBI extended header
248
+ # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
249
+ # Returns: 1 (EXTH should have already been validated)
250
+ sub ProcessEXTH($$$)
251
+ {
252
+ my ($et, $dirInfo, $tagTablePtr) = @_;
253
+ my $dataPt = $$dirInfo{DataPt};
254
+ my $dataPos = $$dirInfo{DataPos};
255
+ my $enc = $$dirInfo{Encoding} || 'UTF8';
256
+ my $dirLen = length $$dataPt;
257
+ my ($index, $pos);
258
+
259
+ $et->VerboseDir('EXTH', $$dirInfo{NumEntries}, $dirLen);
260
+
261
+ # process the EXTH entries
262
+ for ($index=0, $pos=0; ; ++$index) {
263
+ last if $pos + 8 > $dirLen;
264
+ my $tag = Get32u($dataPt, $pos);
265
+ my $len = Get32u($dataPt, $pos + 4);
266
+ last if $len < 8 or $pos + $len > $dirLen;
267
+ my $key = $et->HandleTag($tagTablePtr, $tag, undef,
268
+ DataPt => $dataPt,
269
+ DataPos => $dataPos,
270
+ Start => $pos + 8,
271
+ Size => $len - 8,
272
+ Index => $index,
273
+ );
274
+ # recode text if necessary
275
+ $$et{VALUE}{$key} = $et->Decode($$et{VALUE}{$key}, $enc) if $key;
276
+ $pos += $len;
277
+ }
278
+ return 1;
279
+ }
280
+
281
+ #------------------------------------------------------------------------------
282
+ # Extract information from a Palm DB file
283
+ # Inputs: 0) ExifTool ref, 1) dirInfo reference
284
+ # Returns: 1 if this was a recognized PDB file, 0 otherwise
285
+ sub ProcessPDB($$)
286
+ {
287
+ my ($et, $dirInfo) = @_;
288
+ my $raf = $$dirInfo{RAF};
289
+ my ($buff, $buf2, $size, $enc);
290
+ my $verbose = $et->Options('Verbose');
291
+
292
+ # verify this is a valid Palm DB file
293
+ return 0 unless $raf->Read($buff, 86) == 86;
294
+ my $type = $palmTypes{substr($buff, 60, 8)};
295
+ return 0 unless $type;
296
+ #
297
+ # Read and process the Palm DB file header
298
+ #
299
+ $et->SetFileType($type eq 'Mobipocket' ? 'MOBI' : 'PDB');
300
+ SetByteOrder('MM');
301
+
302
+ my $tagTablePtr = GetTagTable('Image::ExifTool::Palm::Main');
303
+ $et->ProcessDirectory({ DataPt => \$buff }, $tagTablePtr);
304
+
305
+ return 1 unless $type eq 'Mobipocket' and Get16u(\$buff, 76);
306
+ #
307
+ # Read and process MOBI header (should be the first record)
308
+ #
309
+ my $offset = Get32u(\$buff, 78); # get offset to first record
310
+ unless ($raf->Seek($offset, 0) and $raf->Read($buff, 274) == 274) {
311
+ $et->Warn('Truncated MOBI header');
312
+ return 1;
313
+ }
314
+ unless (substr($buff, 16, 4) eq 'MOBI') {
315
+ $et->Warn('Invalid MOBI header');
316
+ return 1;
317
+ }
318
+ $tagTablePtr = GetTagTable('Image::ExifTool::Palm::MOBI');
319
+ $et->ProcessDirectory({ DataPt => \$buff }, $tagTablePtr);
320
+
321
+ # get text encoding
322
+ $enc = $Image::ExifTool::charsetName{"cp$$et{CodePage}"} if $$et{CodePage};
323
+ $enc = 'UTF8' unless $enc;
324
+
325
+ # extract the BookName string
326
+ my $off = Get32u(\$buff, 84);
327
+ my $len = Get32u(\$buff, 88);
328
+
329
+ $raf->Seek($offset+$off, 0) and $raf->Read($buf2, $len) == $len or $buf2 = '<err>';
330
+ $$et{VALUE}{BookName} = $et->Decode($buf2, $enc);
331
+ #
332
+ # Process the MOBI extended header if it exists
333
+ #
334
+ # first, check the flag bit to see if the EXTH record should exist
335
+ my $flag = Get32u(\$buff, 128);
336
+ return 1 unless $flag & 0x40; # check extended header flag
337
+
338
+ $len = Get32u(\$buff, 20) + 16; # MOBI header length (including PalmDOC header)
339
+
340
+ unless ($raf->Seek($offset+$len, 0) and $raf->Read($buf2, 12) == 12 and
341
+ substr($buf2,0,4) eq 'EXTH' and ($size = Get32u(\$buf2, 4)) > 12)
342
+ {
343
+ $et->Warn('Invalid MOBI extended header');
344
+ return 1;
345
+ }
346
+
347
+ # read and process the MOBI extended header
348
+ $size -= 12;
349
+ $raf->Read($buff, $size) == $size or $et->Warn('Truncated MOBI extended header'), return 1;
350
+ my %dirInfo = (
351
+ DataPt => \$buff,
352
+ DataPos => $offset + $len + 12,
353
+ NumEntries => Get32u(\$buf2, 8),
354
+ Encoding => $enc,
355
+ );
356
+ $tagTablePtr = GetTagTable('Image::ExifTool::Palm::EXTH');
357
+ $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
358
+
359
+ return 1;
360
+ }
361
+
362
+ 1; # end
363
+
364
+ __END__
365
+
366
+ =head1 NAME
367
+
368
+ Image::ExifTool::Palm - Read Palm Database files
369
+
370
+ =head1 SYNOPSIS
371
+
372
+ This module is used by Image::ExifTool
373
+
374
+ =head1 DESCRIPTION
375
+
376
+ This module contains code to extract metadata from Palm database files (PDB
377
+ and PRC extensions), Mobipocket electronic books (MOBI), and Amazon Kindle
378
+ KF7 and KF8 books (AZW and AZW3).
379
+
380
+ =head1 AUTHOR
381
+
382
+ Copyright 2003-2015, Phil Harvey (phil at owl.phy.queensu.ca)
383
+
384
+ This library is free software; you can redistribute it and/or modify it
385
+ under the same terms as Perl itself.
386
+
387
+ =head1 REFERENCES
388
+
389
+ =over 4
390
+
391
+ =item L<http://wiki.mobileread.com/wiki/PDB>
392
+
393
+ =item L<http://wiki.mobileread.com/wiki/MOBI>
394
+
395
+ =back
396
+
397
+ =head1 SEE ALSO
398
+
399
+ L<Image::ExifTool::TagNames/Palm Tags>,
400
+ L<Image::ExifTool(3pm)|Image::ExifTool>
401
+
402
+ =cut
403
+
@@ -0,0 +1,2366 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: Panasonic.pm
3
+ #
4
+ # Description: Panasonic/Leica maker notes tags
5
+ #
6
+ # Revisions: 11/10/2004 - P. Harvey Created
7
+ #
8
+ # References: 1) http://www.compton.nu/panasonic.html (based on FZ10)
9
+ # 2) Derived from DMC-FZ3 samples from dpreview.com
10
+ # 3) http://johnst.org/sw/exiftags/
11
+ # 4) Tels (http://bloodgate.com/) private communication (tests with FZ5)
12
+ # 7) http://homepage3.nifty.com/kamisaka/makernote/makernote_pana.htm (2007/10/02)
13
+ # 8) Marcel Coenen private communication (DMC-FZ50)
14
+ # 9) http://forums.dpreview.com/forums/read.asp?forum=1033&message=22756430
15
+ # 10) http://bretteville.com/pdfs/M8Metadata_v2.pdf
16
+ # 11) http://www.digital-leica.com/lens_codes/index.html
17
+ # 12) Joerg - http://www.cpanforum.com/threads/11602 (LX3 firmware 2.0)
18
+ # 13) Michael Byczkowski private communication (Leica M9)
19
+ # 14) Carl Bretteville private communication (M9)
20
+ # 15) Zdenek Mihula private communication (TZ8)
21
+ # 16) Olaf Ulrich private communication
22
+ # 17) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4922.0.html
23
+ # 18) Thomas Modes private communication (G6)
24
+ # 19) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5533.0.html
25
+ # JD) Jens Duttke private communication (TZ3,FZ30,FZ50)
26
+ #------------------------------------------------------------------------------
27
+
28
+ package Image::ExifTool::Panasonic;
29
+
30
+ use strict;
31
+ use vars qw($VERSION %leicaLensTypes);
32
+ use Image::ExifTool qw(:DataAccess :Utils);
33
+ use Image::ExifTool::Exif;
34
+
35
+ $VERSION = '1.91';
36
+
37
+ sub ProcessLeicaLEIC($$$);
38
+ sub WhiteBalanceConv($;$$);
39
+
40
+ # Leica lens types (ref 10)
41
+ %leicaLensTypes = (
42
+ OTHER => sub {
43
+ my ($val, $inv, $conv) = @_;
44
+ return undef if $inv or not $val =~ s/ .*//;
45
+ return $$conv{$val};
46
+ },
47
+ Notes => q{
48
+ the LensType value is obtained by splitting the stored value into 2
49
+ integers: The stored value divided by 4, and its lower 2 bits. The second
50
+ number is used only if necessary to identify certain manually coded lenses
51
+ on the M9, or the focal length of some multi-focal lenses.
52
+ },
53
+ # All M9 codes (two numbers: first the LensID then the lower 2 bits)
54
+ # are ref PH with samples from ref 13. From ref 10, the lower 2 bits of
55
+ # the LensType value give the frame selector position for most lenses,
56
+ # although for the 28-35-50mm (at least) it gives the focal length selection.
57
+ # The M9 also gives the focal length selection but for other lenses the
58
+ # lower 3 bits don't change with frame selector position except for the lens
59
+ # shows as uncoded for certain lenses and some incorrect positions of the
60
+ # frame selector. The bits are zero for uncoded lenses when manually coding
61
+ # from the menu on the M9. - PH
62
+ # Frame selector bits (from ref 10, M8):
63
+ # 1 => '28/90mm frame lines engaged',
64
+ # 2 => '24/35mm frame lines engaged',
65
+ # 3 => '50/75mm frame lines engaged',
66
+ '0 0' => 'Uncoded lens',
67
+ #
68
+ # NOTE: MUST ADD ENTRY TO %frameSelectorBits below when a new lens is added!!!!
69
+ #
70
+ # model number(s):
71
+ 1 => 'Elmarit-M 21mm f/2.8', # 11134
72
+ 3 => 'Elmarit-M 28mm f/2.8 (III)', # 11804
73
+ 4 => 'Tele-Elmarit-M 90mm f/2.8 (II)', # 11800
74
+ 5 => 'Summilux-M 50mm f/1.4 (II)', # 11868/11856/11114
75
+ 6 => 'Summicron-M 35mm f/2 (IV)', # 11310/11311
76
+ '6 0' => 'Summilux-M 35mm f/1.4', # 11869/11870/11860
77
+ 7 => 'Summicron-M 90mm f/2 (II)', # 11136/11137
78
+ 9 => 'Elmarit-M 135mm f/2.8 (I/II)', # 11829
79
+ '9 0' => 'Apo-Telyt-M 135mm f/3.4', # 11889
80
+ 16 => 'Tri-Elmar-M 16-18-21mm f/4 ASPH.',# 11626
81
+ '16 1' => 'Tri-Elmar-M 16-18-21mm f/4 ASPH. (at 16mm)',
82
+ '16 2' => 'Tri-Elmar-M 16-18-21mm f/4 ASPH. (at 18mm)',
83
+ '16 3' => 'Tri-Elmar-M 16-18-21mm f/4 ASPH. (at 21mm)',
84
+ 23 => 'Summicron-M 50mm f/2 (III)', # 11817, version (I) in camera menu
85
+ 24 => 'Elmarit-M 21mm f/2.8 ASPH.', # 11135/11897
86
+ 25 => 'Elmarit-M 24mm f/2.8 ASPH.', # 11878/11898
87
+ 26 => 'Summicron-M 28mm f/2 ASPH.', # 11604
88
+ 27 => 'Elmarit-M 28mm f/2.8 (IV)', # 11809
89
+ 28 => 'Elmarit-M 28mm f/2.8 ASPH.', # 11606
90
+ 29 => 'Summilux-M 35mm f/1.4 ASPH.', # 11874/11883
91
+ '29 0' => 'Summilux-M 35mm f/1.4 ASPHERICAL', # 11873 (different from "ASPH." model!)
92
+ 30 => 'Summicron-M 35mm f/2 ASPH.', # 11879/11882
93
+ 31 => 'Noctilux-M 50mm f/1', # 11821/11822
94
+ '31 0' => 'Noctilux-M 50mm f/1.2', # 11820
95
+ 32 => 'Summilux-M 50mm f/1.4 ASPH.', # 11891/11892
96
+ 33 => 'Summicron-M 50mm f/2 (IV, V)', # 11819/11825/11826/11816, version (II,III) in camera menu
97
+ 34 => 'Elmar-M 50mm f/2.8', # 11831/11823/11825
98
+ 35 => 'Summilux-M 75mm f/1.4', # 11814/11815/11810
99
+ 36 => 'Apo-Summicron-M 75mm f/2 ASPH.', # 11637
100
+ 37 => 'Apo-Summicron-M 90mm f/2 ASPH.', # 11884/11885
101
+ 38 => 'Elmarit-M 90mm f/2.8', # 11807/11808, version (II) in camera menu
102
+ 39 => 'Macro-Elmar-M 90mm f/4', # 11633/11634
103
+ '39 0' => 'Tele-Elmar-M 135mm f/4 (II)',# 11861
104
+ 40 => 'Macro-Adapter M', # 14409
105
+ '41 3' => 'Apo-Summicron-M 50mm f/2 Asph', #16
106
+ 42 => 'Tri-Elmar-M 28-35-50mm f/4 ASPH.',# 11625
107
+ '42 1' => 'Tri-Elmar-M 28-35-50mm f/4 ASPH. (at 28mm)',
108
+ '42 2' => 'Tri-Elmar-M 28-35-50mm f/4 ASPH. (at 35mm)',
109
+ '42 3' => 'Tri-Elmar-M 28-35-50mm f/4 ASPH. (at 50mm)',
110
+ 43 => 'Summarit-M 35mm f/2.5', # ? (ref PH)
111
+ 44 => 'Summarit-M 50mm f/2.5', # ? (ref PH)
112
+ 45 => 'Summarit-M 75mm f/2.5', # ? (ref PH)
113
+ 46 => 'Summarit-M 90mm f/2.5', # ?
114
+ 47 => 'Summilux-M 21mm f/1.4 ASPH.', # ? (ref 11)
115
+ 48 => 'Summilux-M 24mm f/1.4 ASPH.', # ? (ref 11)
116
+ 49 => 'Noctilux-M 50mm f/0.95 ASPH.', # ? (ref 11)
117
+ 50 => 'Elmar-M 24mm f/3.8 ASPH.', # ? (ref 11)
118
+ 51 => 'Super-Elmar-M 21mm f/3.4 Asph', # ? (ref 16, frameSelectorBits=1)
119
+ '51 2' => 'Super-Elmar-M 14mm f/3.8 Asph', # ? (ref 16)
120
+ 52 => 'Super-Elmar-M 18mm f/3.8 ASPH.', # ? (ref PH/11)
121
+ '53 2' => 'Apo-Telyt-M 135mm f/3.4', #16
122
+ '53 3' => 'Apo-Summicron-M 50mm f/2 (VI)', #LibRaw
123
+ );
124
+
125
+ # M9 frame selector bits for each lens
126
+ # 1 = towards lens = 28/90mm or 21mm or Adapter (or Elmarit-M 135mm f/2.8)
127
+ # 2 = away from lens = 24/35mm (or 35/135mm on the M9)
128
+ # 3 = middle position = 50/75mm or 18mm
129
+ my %frameSelectorBits = (
130
+ 1 => 1,
131
+ 3 => 1,
132
+ 4 => 1,
133
+ 5 => 3,
134
+ 6 => 2,
135
+ 7 => 1,
136
+ 9 => 1, # (because lens has special magnifier for the rangefinder)
137
+ 16 => 1, # or 2 or 3
138
+ 23 => 3,
139
+ 24 => 1,
140
+ 25 => 2,
141
+ 26 => 1,
142
+ 27 => 1,
143
+ 28 => 1,
144
+ 29 => 2,
145
+ 30 => 2,
146
+ 31 => 3,
147
+ 32 => 3,
148
+ 33 => 3,
149
+ 34 => 3,
150
+ 35 => 3,
151
+ 36 => 3,
152
+ 37 => 1,
153
+ 38 => 1,
154
+ 39 => 1,
155
+ 40 => 1,
156
+ 42 => 1, # or 2 or 3
157
+ 43 => 2, # (NC)
158
+ 44 => 3, # (NC)
159
+ 45 => 3,
160
+ 46 => 1, # (NC)
161
+ 47 => 1, # (NC)
162
+ 48 => 2, # (NC)
163
+ 49 => 3, # (NC)
164
+ 50 => 2, # (NC)
165
+ 51 => 1, # or 2 (ref 16)
166
+ 52 => 3,
167
+ 53 => 2, #16
168
+ );
169
+
170
+ # conversions for ShootingMode and SceneMode
171
+ my %shootingMode = (
172
+ 1 => 'Normal',
173
+ 2 => 'Portrait',
174
+ 3 => 'Scenery',
175
+ 4 => 'Sports',
176
+ 5 => 'Night Portrait',
177
+ 6 => 'Program',
178
+ 7 => 'Aperture Priority',
179
+ 8 => 'Shutter Priority',
180
+ 9 => 'Macro',
181
+ 10 => 'Spot', #7
182
+ 11 => 'Manual',
183
+ 12 => 'Movie Preview', #PH (LZ6)
184
+ 13 => 'Panning',
185
+ 14 => 'Simple', #PH (LZ6)
186
+ 15 => 'Color Effects', #7
187
+ 16 => 'Self Portrait', #PH (TZ5)
188
+ 17 => 'Economy', #7
189
+ 18 => 'Fireworks',
190
+ 19 => 'Party',
191
+ 20 => 'Snow',
192
+ 21 => 'Night Scenery',
193
+ 22 => 'Food', #7
194
+ 23 => 'Baby', #JD
195
+ 24 => 'Soft Skin', #PH (LZ6)
196
+ 25 => 'Candlelight', #PH (LZ6)
197
+ 26 => 'Starry Night', #PH (LZ6)
198
+ 27 => 'High Sensitivity', #7 (LZ6)
199
+ 28 => 'Panorama Assist', #7
200
+ 29 => 'Underwater', #7
201
+ 30 => 'Beach', #PH (LZ6)
202
+ 31 => 'Aerial Photo', #PH (LZ6)
203
+ 32 => 'Sunset', #PH (LZ6)
204
+ 33 => 'Pet', #JD
205
+ 34 => 'Intelligent ISO', #PH (LZ6)
206
+ 35 => 'Clipboard', #7
207
+ 36 => 'High Speed Continuous Shooting', #7
208
+ 37 => 'Intelligent Auto', #7
209
+ 39 => 'Multi-aspect', #PH (TZ5)
210
+ 41 => 'Transform', #PH (FS7)
211
+ 42 => 'Flash Burst', #PH (FZ28)
212
+ 43 => 'Pin Hole', #PH (FZ28)
213
+ 44 => 'Film Grain', #PH (FZ28)
214
+ 45 => 'My Color', #PH (GF1)
215
+ 46 => 'Photo Frame', #PH (FS7)
216
+ 48 => 'Movie', #PH (GM1)
217
+ # 49 - seen for FS4 (snow?)
218
+ 51 => 'HDR', #12
219
+ 52 => 'Peripheral Defocus', #Horst Wandres
220
+ 55 => 'Handheld Night Shot', #PH (FZ47)
221
+ 57 => '3D', #PH (3D1)
222
+ 59 => 'Creative Control', #PH (FZ47)
223
+ 62 => 'Panorama', #17
224
+ 63 => 'Glass Through', #17
225
+ 64 => 'HDR', #17
226
+ 66 => 'Digital Filter', #PH (GF5 "Impressive Art", "Cross Process", "Color Select", "Star")
227
+ 67 => 'Clear Portrait', #18
228
+ 68 => 'Silky Skin', #18
229
+ 69 => 'Backlit Softness', #18
230
+ 70 => 'Clear in Backlight', #18
231
+ 71 => 'Relaxing Tone', #18
232
+ 72 => "Sweet Child's Face", #18
233
+ 73 => 'Distinct Scenery', #18
234
+ 74 => 'Bright Blue Sky', #18
235
+ 75 => 'Romantic Sunset Glow', #18
236
+ 76 => 'Vivid Sunset Glow', #18
237
+ 77 => 'Glistening Water', #18
238
+ 78 => 'Clear Nightscape', #18
239
+ 79 => 'Cool Night Sky', #18
240
+ 80 => 'Warm Glowing Nightscape', #18
241
+ 81 => 'Artistic Nightscape', #18
242
+ 82 => 'Glittering Illuminations', #18
243
+ 83 => 'Clear Night Portrait', #18
244
+ 84 => 'Soft Image of a Flower', #18
245
+ 85 => 'Appetizing Food', #18
246
+ 86 => 'Cute Desert', #18
247
+ 87 => 'Freeze Animal Motion', #18
248
+ 88 => 'Clear Sports Shot', #18
249
+ 89 => 'Monochrome', #18
250
+ 90 => 'Creative Control', #18
251
+ );
252
+
253
+ %Image::ExifTool::Panasonic::Main = (
254
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
255
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
256
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
257
+ WRITABLE => 1,
258
+ 0x01 => {
259
+ Name => 'ImageQuality',
260
+ Writable => 'int16u',
261
+ PrintConv => {
262
+ 1 => 'TIFF', #PH (FZ20)
263
+ 2 => 'High',
264
+ 3 => 'Normal',
265
+ # 5 - seen this for 1920x1080, 30fps SZ7 video - PH
266
+ 6 => 'Very High', #3 (Leica)
267
+ 7 => 'Raw', #3 (Leica)
268
+ 9 => 'Motion Picture', #PH (LZ6)
269
+ 11 => 'Full HD Movie', #PH (V-LUX)
270
+ 12 => '4k Movie', #PH (V-LUX)
271
+ },
272
+ },
273
+ 0x02 => {
274
+ Name => 'FirmwareVersion',
275
+ Writable => 'undef',
276
+ Notes => q{
277
+ for some camera models such as the FZ30 this may be an internal production
278
+ reference number and not the actual firmware version
279
+ }, # (ref http://www.stevesforums.com/forums/view_topic.php?id=87764&forum_id=23&)
280
+ # (can be either binary or ascii -- add decimal points if binary)
281
+ ValueConv => '$val=~/[\0-\x2f]/ ? join(" ",unpack("C*",$val)) : $val',
282
+ ValueConvInv => q{
283
+ $val =~ /(\d+ ){3}\d+/ and $val = pack('C*',split(' ', $val));
284
+ length($val) == 4 or warn "Version must be 4 numbers\n";
285
+ return $val;
286
+ },
287
+ PrintConv => '$val=~tr/ /./; $val',
288
+ PrintConvInv => '$val=~tr/./ /; $val',
289
+ },
290
+ 0x03 => {
291
+ Name => 'WhiteBalance',
292
+ Writable => 'int16u',
293
+ PrintConv => {
294
+ 1 => 'Auto',
295
+ 2 => 'Daylight',
296
+ 3 => 'Cloudy',
297
+ 4 => 'Incandescent', #PH
298
+ 5 => 'Manual',
299
+ 8 => 'Flash',
300
+ 10 => 'Black & White', #3 (Leica)
301
+ 11 => 'Manual', #PH (FZ8)
302
+ 12 => 'Shade', #PH (FS7)
303
+ 13 => 'Kelvin', #PeterK (NC)
304
+ },
305
+ },
306
+ 0x07 => {
307
+ Name => 'FocusMode',
308
+ Writable => 'int16u',
309
+ PrintConv => {
310
+ 1 => 'Auto',
311
+ 2 => 'Manual',
312
+ 4 => 'Auto, Focus button', #4
313
+ 5 => 'Auto, Continuous', #4
314
+ 6 => 'AF-S', #18 (also seen for GF1 - PH)
315
+ 7 => 'AF-C', #18
316
+ 8 => 'AF-F', #18 (auto-focus flexible)
317
+ },
318
+ },
319
+ 0x0f => [
320
+ {
321
+ Name => 'AFAreaMode',
322
+ Condition => '$$self{Model} =~ /DMC-FZ10\b/', #JD
323
+ Writable => 'int8u',
324
+ Count => 2,
325
+ Notes => 'DMC-FZ10',
326
+ PrintConv => {
327
+ '0 1' => 'Spot Mode On',
328
+ '0 16' => 'Spot Mode Off',
329
+ },
330
+ },{
331
+ Name => 'AFAreaMode',
332
+ Writable => 'int8u',
333
+ Count => 2,
334
+ Notes => 'other models',
335
+ PrintConv => { #PH
336
+ '0 1' => '9-area', # (FS7)
337
+ '0 16' => '3-area (high speed)', # (FZ8)
338
+ '0 23' => '23-area', #PH (FZ47,NC)
339
+ # '0 49' - seen for LX100, V-LUX (PH)
340
+ '1 0' => 'Spot Focusing', # (FZ8)
341
+ '1 1' => '5-area', # (FZ8)
342
+ '16' => 'Normal?', # (only mode for DMC-LC20)
343
+ '16 0' => '1-area', # (FZ8)
344
+ '16 16' => '1-area (high speed)', # (FZ8)
345
+ # '32 0' is Face Detect for FS7, and Face Detect or Focus Tracking
346
+ # for the DMC-FZ200 (ref 17), and Auto is DMC-L1 guess,
347
+ '32 0' => 'Tracking',
348
+ '32 1' => '3-area (left)?', # (DMC-L1 guess)
349
+ '32 2' => '3-area (center)?', # (DMC-L1 guess)
350
+ '32 3' => '3-area (right)?', # (DMC-L1 guess)
351
+ '64 0' => 'Face Detect',
352
+ '128 0' => 'Spot Focusing 2', #18
353
+ },
354
+ },
355
+ ],
356
+ 0x1a => {
357
+ Name => 'ImageStabilization',
358
+ Writable => 'int16u',
359
+ PrintConv => {
360
+ 2 => 'On, Mode 1',
361
+ 3 => 'Off',
362
+ 4 => 'On, Mode 2',
363
+ 5 => 'Panning', #18
364
+ # GF1 also has a "Mode 3" - PH
365
+ 6 => 'On, Mode 3', #PH (GX7, sensor shift?)
366
+ },
367
+ },
368
+ 0x1c => {
369
+ Name => 'MacroMode',
370
+ Writable => 'int16u',
371
+ PrintConv => {
372
+ 1 => 'On',
373
+ 2 => 'Off',
374
+ 0x101 => 'Tele-Macro', #7
375
+ 0x201 => 'Macro Zoom', #PH (FS7)
376
+ },
377
+ },
378
+ 0x1f => {
379
+ Name => 'ShootingMode',
380
+ Writable => 'int16u',
381
+ PrintConvColumns => 2,
382
+ PrintConv => \%shootingMode,
383
+ },
384
+ 0x20 => {
385
+ Name => 'Audio',
386
+ Writable => 'int16u',
387
+ PrintConv => {
388
+ 1 => 'Yes',
389
+ 2 => 'No',
390
+ 3 => 'Stereo', #PH (NC)
391
+ },
392
+ },
393
+ 0x21 => { #2
394
+ Name => 'DataDump',
395
+ Writable => 0,
396
+ Binary => 1,
397
+ },
398
+ # 0x22 - normally 0, but 2 for 'Simple' ShootingMode in LZ6 sample - PH
399
+ 0x23 => {
400
+ Name => 'WhiteBalanceBias',
401
+ Format => 'int16s',
402
+ Writable => 'int16s',
403
+ ValueConv => '$val / 3',
404
+ ValueConvInv => '$val * 3',
405
+ PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
406
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
407
+ },
408
+ 0x24 => {
409
+ Name => 'FlashBias',
410
+ Format => 'int16s',
411
+ Writable => 'int16s',
412
+ ValueConv => '$val / 3', #17 (older models may not have factor of 3? - PH)
413
+ ValueConvInv => '$val * 3',
414
+ PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
415
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
416
+ },
417
+ 0x25 => { #PH
418
+ Name => 'InternalSerialNumber',
419
+ Writable => 'undef',
420
+ Count => 16,
421
+ Notes => q{
422
+ this number is unique, and contains the date of manufacture, but is not the
423
+ same as the number printed on the camera body
424
+ },
425
+ PrintConv => q{
426
+ return $val unless $val=~/^([A-Z]\d{2})(\d{2})(\d{2})(\d{2})(\d{4})/;
427
+ my $yr = $2 + ($2 < 70 ? 2000 : 1900);
428
+ return "($1) $yr:$3:$4 no. $5";
429
+ },
430
+ PrintConvInv => '$_=$val; tr/A-Z0-9//dc; s/(.{3})(19|20)/$1/; $_',
431
+ },
432
+ 0x26 => { #PH
433
+ Name => 'PanasonicExifVersion',
434
+ Writable => 'undef',
435
+ },
436
+ # 0x27 - values: 0 (LZ6,FX10K)
437
+ 0x28 => {
438
+ Name => 'ColorEffect',
439
+ Writable => 'int16u',
440
+ # FX30 manual: (ColorMode) natural, vivid, cool, warm, b/w, sepia
441
+ PrintConv => {
442
+ 1 => 'Off',
443
+ 2 => 'Warm',
444
+ 3 => 'Cool',
445
+ 4 => 'Black & White',
446
+ 5 => 'Sepia',
447
+ 6 => 'Happy', #PH (FX70) (yes, really. you wouldn't want sad colors now would you?)
448
+ 8 => 'Vivid', #PH (SZ3)
449
+ },
450
+ },
451
+ 0x29 => { #JD
452
+ Name => 'TimeSincePowerOn',
453
+ Writable => 'int32u',
454
+ Notes => q{
455
+ time in 1/100 s from when the camera was powered on to when the image is
456
+ written to memory card
457
+ },
458
+ ValueConv => '$val / 100',
459
+ ValueConvInv => '$val * 100',
460
+ PrintConv => sub { # convert to format "[DD days ]HH:MM:SS.ss"
461
+ my $val = shift;
462
+ my $str = '';
463
+ if ($val >= 24 * 3600) {
464
+ my $d = int($val / (24 * 3600));
465
+ $str .= "$d days ";
466
+ $val -= $d * 24 * 3600;
467
+ }
468
+ my $h = int($val / 3600);
469
+ $val -= $h * 3600;
470
+ my $m = int($val / 60);
471
+ $val -= $m * 60;
472
+ my $s = int($val);
473
+ my $f = 100 * ($val - int($val));
474
+ return sprintf("%s%.2d:%.2d:%.2d.%.2d",$str,$h,$m,$s,$f);
475
+ },
476
+ PrintConvInv => sub {
477
+ my $val = shift;
478
+ my @vals = ($val =~ /\d+(?:\.\d*)?/g);
479
+ my $sec = 0;
480
+ $sec += 24 * 3600 * shift(@vals) if @vals > 3;
481
+ $sec += 3600 * shift(@vals) if @vals > 2;
482
+ $sec += 60 * shift(@vals) if @vals > 1;
483
+ $sec += shift(@vals) if @vals;
484
+ return $sec;
485
+ },
486
+ },
487
+ 0x2a => { #4
488
+ Name => 'BurstMode',
489
+ Writable => 'int16u',
490
+ Notes => 'decoding may be different for some models',
491
+ PrintConv => {
492
+ 0 => 'Off',
493
+ 1 => 'On', #PH (TZ5) [was "Low/High Quality" from ref 4]
494
+ 2 => 'Auto Exposure Bracketing (AEB)', #17
495
+ 4 => 'Unlimited', #PH (TZ5)
496
+ 8 => 'White Balance Bracketing', #18
497
+ 17 => 'On (with flash)', #forum5597
498
+ },
499
+ },
500
+ 0x2b => { #4
501
+ Name => 'SequenceNumber',
502
+ Writable => 'int32u',
503
+ },
504
+ 0x2c => [
505
+ {
506
+ Name => 'ContrastMode',
507
+ Condition => '$$self{Model} !~ /^DMC-(FX10|G1|L1|L10|LC80|GF\d+|G2|TZ10|ZS7)$/',
508
+ Flags => 'PrintHex',
509
+ Writable => 'int16u',
510
+ Notes => q{
511
+ this decoding seems to work for some models such as the LC1, LX2, FZ7, FZ8,
512
+ FZ18 and FZ50, but may not be correct for other models such as the FX10, G1, L1,
513
+ L10 and LC80
514
+ },
515
+ PrintConv => {
516
+ 0x00 => 'Normal',
517
+ 0x01 => 'Low',
518
+ 0x02 => 'High',
519
+ # 0x03 - observed with LZ6 and TZ5 in Fireworks mode
520
+ # and GX7 in Fantasy/Retro/OldDays/HighKey - PH
521
+ # 0x04 - observed in MP4 movie with GM1 (EXIF and 0x39 Contrast "Normal") - PH
522
+ # 0x05 - observed with FX01, FX40 and FP8 (EXIF contrast "Normal") - PH
523
+ 0x06 => 'Medium Low', #PH (FZ18)
524
+ 0x07 => 'Medium High', #PH (FZ18)
525
+ # 0x08 - GX7 in DynamicMonochrome mode
526
+ 0x0d => 'High Dynamic', #PH (FZ47 in ?)
527
+ # 0x13 - seen for LX100 (PH)
528
+ # DMC-LC1 values:
529
+ 0x100 => 'Low',
530
+ 0x110 => 'Normal',
531
+ 0x120 => 'High',
532
+ }
533
+ },{
534
+ Name => 'ContrastMode',
535
+ Condition => '$$self{Model} =~ /^DMC-(GF\d+|G2)$/',
536
+ Notes => 'these values are used by the G2, GF1, GF2, GF3, GF5 and GF6',
537
+ Writable => 'int16u',
538
+ PrintConv => { # (decoded for GF1 unless otherwise noted)
539
+ 0 => '-2',
540
+ 1 => '-1',
541
+ 2 => 'Normal',
542
+ 3 => '+1',
543
+ 4 => '+2',
544
+ # Note: Other Contrast tags will be "Normal" in any of these modes:
545
+ 5 => 'Normal 2', # 5 - seen for Portrait (FX80) and Normal (GF6)
546
+ 7 => 'Nature (Color Film)', # (GF1,G2; GF3 "Miniature")
547
+ 9 => 'Expressive', #(GF3)
548
+ 12 => 'Smooth (Color Film) or Pure (My Color)', #(GF1,G2 "Smooth Color")
549
+ 17 => 'Dynamic (B&W Film)', #(GF1,G2)
550
+ 22 => 'Smooth (B&W Film)', #(GF1,G2)
551
+ 25 => 'High Dynamic', #(GF5)
552
+ 26 => 'Retro', #(GF5)
553
+ 27 => 'Dynamic (Color Film)', #(GF1,G2) (GF3 "High Key")
554
+ 28 => 'Low Key', #(GF5)
555
+ 29 => 'Toy Effect', #(GF5)
556
+ 32 => 'Vibrant (Color Film) or Expressive (My Color)', # (GF1; G2 "Vibrant"; GF2,GF5 "Expressive")
557
+ 33 => 'Elegant (My Color)',
558
+ 37 => 'Nostalgic (Color Film)', # (GF1,G2; GF5 "Sepia")
559
+ 41 => 'Dynamic Art (My Color)', # (GF5 "High Key")
560
+ 42 => 'Retro (My Color)',
561
+ 45 => 'Cinema', #(GF2)
562
+ 47 => 'Dynamic Mono', #(GF5)
563
+ 50 => 'Impressive Art', #(GF5)
564
+ 51 => 'Cross Process', #(GF5)
565
+ 100 => 'High Dynamic 2', #Exiv2 (G6)
566
+ 101 => 'Retro 2', #Exiv2 (G6)
567
+ 102 => 'High Key 2', #Exiv2 (G6)
568
+ 103 => 'Low Key 2', #Exiv2 (G6)
569
+ 104 => 'Toy Effect 2', #Exiv2 (G6)
570
+ 107 => 'Expressive 2', #(GF6)
571
+ 112 => 'Sepia', #Exiv2 (G6)
572
+ 117 => 'Miniature', #Exiv2 (G6)
573
+ 122 => 'Dynamic Monochrome', #(GF6)
574
+ 127 => 'Old Days', #Exiv2 (G6)
575
+ 132 => 'Dynamic Monochrome 2', #Exiv2 (G6)
576
+ 135 => 'Impressive Art 2', #Exiv2 (G6)
577
+ 136 => 'Cross Process 2', #Exiv2 (G6)
578
+ 137 => 'Toy Pop', #Exiv2 (G6)
579
+ 138 => 'Fantasy', #Exiv2 (G6)
580
+ 256 => 'Normal 3', #Exiv2 (G6)
581
+ 272 => 'Standard', #Exiv2 (G6)
582
+ 288 => 'High', #Exiv2 (G6)
583
+ # more new modes for GF6:
584
+ # ? => 'Old Days',
585
+ # ? => 'Toy Pop',
586
+ # ? => 'Bleach Bypass',
587
+ # ? => 'Fantasy',
588
+ # ? => 'Star Filter',
589
+ # ? => 'One Point Color',
590
+ # ? => 'Sunshine',
591
+ },
592
+ },{
593
+ Name => 'ContrastMode',
594
+ Condition => '$$self{Model} =~ /^DMC-(TZ10|ZS7)$/',
595
+ Notes => 'these values are used by the TZ10 and ZS7',
596
+ Writable => 'int16u',
597
+ PrintConv => {
598
+ 0 => 'Normal',
599
+ 1 => '-2',
600
+ 2 => '+2',
601
+ 5 => '-1',
602
+ 6 => '+1',
603
+ },
604
+ },{
605
+ Name => 'ContrastMode',
606
+ Writable => 'int16u',
607
+ },
608
+ ],
609
+ 0x2d => {
610
+ Name => 'NoiseReduction',
611
+ Writable => 'int16u',
612
+ PrintConv => {
613
+ 0 => 'Standard',
614
+ 1 => 'Low (-1)',
615
+ 2 => 'High (+1)',
616
+ 3 => 'Lowest (-2)', #JD
617
+ 4 => 'Highest (+2)', #JD
618
+ # 65531 - seen for LX100 "NR1" test shots at imaging-resource (PH)
619
+ },
620
+ },
621
+ 0x2e => { #4
622
+ Name => 'SelfTimer',
623
+ Writable => 'int16u',
624
+ PrintConv => {
625
+ 1 => 'Off',
626
+ 2 => '10 s',
627
+ 3 => '2 s',
628
+ 4 => '10 s / 3 pictures', #17
629
+ },
630
+ },
631
+ # 0x2f - values: 1 (LZ6,FX10K)
632
+ 0x30 => { #7
633
+ Name => 'Rotation',
634
+ Writable => 'int16u',
635
+ PrintConv => {
636
+ 1 => 'Horizontal (normal)',
637
+ 3 => 'Rotate 180', #PH
638
+ 6 => 'Rotate 90 CW', #PH (ref 7 gives 270 CW)
639
+ 8 => 'Rotate 270 CW', #PH (ref 7 gives 90 CW)
640
+ },
641
+ },
642
+ 0x31 => { #PH (FS7)
643
+ Name => 'AFAssistLamp',
644
+ Writable => 'int16u',
645
+ PrintConv => {
646
+ 1 => 'Fired',
647
+ 2 => 'Enabled but Not Used',
648
+ 3 => 'Disabled but Required',
649
+ 4 => 'Disabled and Not Required',
650
+ # have seen a value of 5 - PH
651
+ # values possibly related to FOC-L? - JD
652
+ },
653
+ },
654
+ 0x32 => { #7
655
+ Name => 'ColorMode',
656
+ Writable => 'int16u',
657
+ PrintConv => {
658
+ 0 => 'Normal',
659
+ 1 => 'Natural',
660
+ 2 => 'Vivid',
661
+ # have seen 3 for GF2 - PH
662
+ },
663
+ },
664
+ 0x33 => { #JD
665
+ Name => 'BabyAge',
666
+ Writable => 'string',
667
+ Notes => 'or pet age', #PH
668
+ PrintConv => '$val eq "9999:99:99 00:00:00" ? "(not set)" : $val',
669
+ PrintConvInv => '$val =~ /^\d/ ? $val : "9999:99:99 00:00:00"',
670
+ },
671
+ 0x34 => { #7/PH
672
+ Name => 'OpticalZoomMode',
673
+ Writable => 'int16u',
674
+ PrintConv => {
675
+ 1 => 'Standard',
676
+ 2 => 'Extended',
677
+ },
678
+ },
679
+ 0x35 => { #9
680
+ Name => 'ConversionLens',
681
+ Writable => 'int16u',
682
+ PrintConv => { #PH (unconfirmed)
683
+ 1 => 'Off',
684
+ 2 => 'Wide',
685
+ 3 => 'Telephoto',
686
+ 4 => 'Macro',
687
+ },
688
+ },
689
+ 0x36 => { #8
690
+ Name => 'TravelDay',
691
+ Writable => 'int16u',
692
+ PrintConv => '$val == 65535 ? "n/a" : $val',
693
+ PrintConvInv => '$val =~ /(\d+)/ ? $1 : $val',
694
+ },
695
+ # 0x37 - values: 0,1,2 (LZ6, 0 for movie preview); 257 (FX10K); 0,256 (TZ5, 0 for movie preview)
696
+ # 0x38 - values: 0,1,2 (LZ6, same as 0x37); 1,2 (FX10K); 0,256 (TZ5, 0 for movie preview)
697
+ 0x39 => { #7 (L1/L10)
698
+ Name => 'Contrast',
699
+ Format => 'int16s',
700
+ Writable => 'int16u',
701
+ %Image::ExifTool::Exif::printParameter,
702
+ },
703
+ 0x3a => {
704
+ Name => 'WorldTimeLocation',
705
+ Writable => 'int16u',
706
+ PrintConv => {
707
+ 1 => 'Home',
708
+ 2 => 'Destination',
709
+ },
710
+ },
711
+ 0x3b => { #PH (TZ5/FS7)
712
+ # (tags 0x3b, 0x3e, 0x8008 and 0x8009 have the same values in all my samples - PH)
713
+ Name => 'TextStamp',
714
+ Writable => 'int16u',
715
+ PrintConv => { 1 => 'Off', 2 => 'On' },
716
+ },
717
+ 0x3c => { #PH
718
+ Name => 'ProgramISO', # (maybe should rename this ISOSetting?)
719
+ Writable => 'int16u',
720
+ PrintConv => {
721
+ OTHER => sub { shift },
722
+ 65534 => 'Intelligent ISO', #PH (FS7)
723
+ 65535 => 'n/a',
724
+ },
725
+ },
726
+ 0x3d => { #PH
727
+ Name => 'AdvancedSceneType',
728
+ Writable => 'int16u',
729
+ Notes => 'used together with SceneMode to derive Composite AdvancedSceneMode',
730
+ },
731
+ 0x3e => { #PH (TZ5/FS7)
732
+ # (tags 0x3b, 0x3e, 0x8008 and 0x8009 have the same values in all my samples - PH)
733
+ Name => 'TextStamp',
734
+ Writable => 'int16u',
735
+ PrintConv => { 1 => 'Off', 2 => 'On' },
736
+ },
737
+ 0x3f => { #PH (TZ7)
738
+ Name => 'FacesDetected',
739
+ Writable => 'int16u',
740
+ },
741
+ 0x40 => { #7 (L1/L10)
742
+ Name => 'Saturation',
743
+ Format => 'int16s',
744
+ Writable => 'int16u',
745
+ %Image::ExifTool::Exif::printParameter,
746
+ },
747
+ 0x41 => { #7 (L1/L10)
748
+ Name => 'Sharpness',
749
+ Format => 'int16s',
750
+ Writable => 'int16u',
751
+ %Image::ExifTool::Exif::printParameter,
752
+ },
753
+ 0x42 => { #7 (DMC-L1)
754
+ Name => 'FilmMode',
755
+ Writable => 'int16u',
756
+ PrintConv => {
757
+ 0 => 'n/a', #PH (eg. FZ100 "Photo Frame" ShootingMode)
758
+ 1 => 'Standard (color)',
759
+ 2 => 'Dynamic (color)',
760
+ 3 => 'Nature (color)',
761
+ 4 => 'Smooth (color)',
762
+ 5 => 'Standard (B&W)',
763
+ 6 => 'Dynamic (B&W)',
764
+ 7 => 'Smooth (B&W)',
765
+ # 8 => 'My Film 1'? (from owner manual)
766
+ # 9 => 'My Film 2'?
767
+ 10 => 'Nostalgic', #(GH1)
768
+ 11 => 'Vibrant', #(GH1)
769
+ # 12 => 'Multi Film'? (in the GH1 specs)
770
+ },
771
+ },
772
+ # 0x43 - int16u: 2,3
773
+ 0x44 => {
774
+ Name => 'ColorTempKelvin',
775
+ Format => 'int16u',
776
+ },
777
+ 0x45 => { #19
778
+ Name => 'BracketSettings',
779
+ Writable => 'int16u',
780
+ PrintConv => {
781
+ 0 => 'No Bracket',
782
+ 1 => '3 Images, Sequence 0/-/+',
783
+ 2 => '3 Images, Sequence -/0/+',
784
+ 3 => '5 Images, Sequence 0/-/+',
785
+ 4 => '5 Images, Sequence -/0/+',
786
+ 5 => '7 Images, Sequence 0/-/+',
787
+ 6 => '7 Images, Sequence -/0/+',
788
+ },
789
+ },
790
+ 0x46 => { #PH/JD
791
+ Name => 'WBShiftAB',
792
+ Format => 'int16s',
793
+ Writable => 'int16u',
794
+ Notes => 'positive is a shift toward blue',
795
+ },
796
+ 0x47 => { #PH/JD
797
+ Name => 'WBShiftGM',
798
+ Format => 'int16s',
799
+ Writable => 'int16u',
800
+ Notes => 'positive is a shift toward green',
801
+ },
802
+ 0x48 => { #17
803
+ Name => 'FlashCurtain',
804
+ Writable => 'int16u',
805
+ PrintConv => {
806
+ 0 => 'n/a',
807
+ 1 => '1st',
808
+ 2 => '2nd',
809
+ },
810
+ },
811
+ 0x49 => { #19
812
+ Name => 'LongExposureNoiseReduction',
813
+ Writable => 'int16u',
814
+ PrintConv => {
815
+ 1 => 'Off',
816
+ 2 => 'On'
817
+ }
818
+ },
819
+ # 0x4a - int16u: 0
820
+ 0x4b => { #PH
821
+ Name => 'PanasonicImageWidth',
822
+ Writable => 'int32u',
823
+ },
824
+ 0x4c => { #PH
825
+ Name => 'PanasonicImageHeight',
826
+ Writable => 'int32u',
827
+ },
828
+ 0x4d => { #PH (FS7)
829
+ Name => 'AFPointPosition',
830
+ Writable => 'rational64u',
831
+ Count => 2,
832
+ Notes => 'X Y coordinates of primary AF area center, in the range 0.0 to 1.0',
833
+ PrintConv => q{
834
+ return 'none' if $val eq '16777216 16777216';
835
+ my @a = split ' ', $val;
836
+ sprintf("%.2g %.2g",@a);
837
+ },
838
+ PrintConvInv => '$val eq "none" ? "16777216 16777216" : $val',
839
+ },
840
+ 0x4e => { #PH
841
+ Name => 'FaceDetInfo',
842
+ PrintConv => 'length $val',
843
+ SubDirectory => {
844
+ TagTable => 'Image::ExifTool::Panasonic::FaceDetInfo',
845
+ },
846
+ },
847
+ # 0x4f,0x50 - int16u: 0
848
+ 0x51 => {
849
+ Name => 'LensType',
850
+ Writable => 'string',
851
+ ValueConv => '$val=~s/ +$//; $val', # trim trailing spaces
852
+ ValueConvInv => '$val',
853
+ },
854
+ 0x52 => { #7 (DMC-L1)
855
+ Name => 'LensSerialNumber',
856
+ Writable => 'string',
857
+ ValueConv => '$val=~s/ +$//; $val', # trim trailing spaces
858
+ ValueConvInv => '$val',
859
+ },
860
+ 0x53 => { #7 (DMC-L1)
861
+ Name => 'AccessoryType',
862
+ Writable => 'string',
863
+ ValueConv => '$val=~s/ +$//; $val', # trim trailing spaces
864
+ ValueConvInv => '$val',
865
+ },
866
+ 0x54 => { #19
867
+ Name => 'AccessorySerialNumber',
868
+ Writable => 'string',
869
+ ValueConv => '$val=~s/ +$//; $val', # trim trailing spaces
870
+ ValueConvInv => '$val',
871
+ },
872
+ # 0x55 - int16u: 1
873
+ # 0x57 - int16u: 0
874
+ 0x59 => { #PH (FS7)
875
+ Name => 'Transform',
876
+ Writable => 'undef',
877
+ Notes => 'decoded as two 16-bit signed integers',
878
+ Format => 'int16s',
879
+ Count => 2,
880
+ PrintConv => {
881
+ '-3 2' => 'Slim High',
882
+ '-1 1' => 'Slim Low',
883
+ '0 0' => 'Off',
884
+ '1 1' => 'Stretch Low',
885
+ '3 2' => 'Stretch High',
886
+ },
887
+ },
888
+ # 0x5a - int16u: 0,2
889
+ # 0x5b - int16u: 0
890
+ # 0x5c - int16u: 0,2
891
+ 0x5d => { #PH (GF1, FZ35)
892
+ Name => 'IntelligentExposure',
893
+ Notes => 'not valid for some models', # (doesn't change in ZS7 and GH1 images)
894
+ Writable => 'int16u',
895
+ PrintConv => {
896
+ 0 => 'Off',
897
+ 1 => 'Low',
898
+ 2 => 'Standard',
899
+ 3 => 'High',
900
+ },
901
+ },
902
+ # 0x5e,0x5f - undef[4]
903
+ 0x60 => { #18
904
+ Name => 'LensFirmwareVersion',
905
+ Writable => 'undef',
906
+ Format => 'int8u',
907
+ Count => 4,
908
+ PrintConv => '$val=~tr/ /./; $val',
909
+ PrintConvInv => '$val=~tr/./ /; $val',
910
+ },
911
+ 0x61 => { #PH
912
+ Name => 'FaceRecInfo',
913
+ SubDirectory => {
914
+ TagTable => 'Image::ExifTool::Panasonic::FaceRecInfo',
915
+ },
916
+ },
917
+ 0x62 => { #PH (FS7)
918
+ Name => 'FlashWarning',
919
+ Writable => 'int16u',
920
+ PrintConv => { 0 => 'No', 1 => 'Yes (flash required but disabled)' },
921
+ },
922
+ 0x63 => { #PH
923
+ # not sure exactly what this means, but in my samples this is
924
+ # FacesRecognized bytes of 0x01, padded with 0x00 to a length of 4 - PH
925
+ Name => 'RecognizedFaceFlags',
926
+ Format => 'int8u',
927
+ Count => 4,
928
+ Writable => 'undef',
929
+ Unknown => 1,
930
+ },
931
+ 0x65 => { #15
932
+ Name => 'Title',
933
+ Format => 'string',
934
+ Writable => 'undef', # (Count 64)
935
+ },
936
+ 0x66 => { #15
937
+ Name => 'BabyName',
938
+ Notes => 'or pet name',
939
+ Format => 'string',
940
+ Writable => 'undef', # (Count 64)
941
+ },
942
+ 0x67 => { #15
943
+ Name => 'Location',
944
+ Groups => { 2 => 'Location' },
945
+ Format => 'string',
946
+ Writable => 'undef', # (Count 64)
947
+ },
948
+ # 0x68 - int8u: 1
949
+ 0x69 => { #PH (ZS7)
950
+ Name => 'Country', # (Country/Region)
951
+ Groups => { 2 => 'Location' },
952
+ Format => 'string',
953
+ Writable => 'undef', # (Count 72)
954
+ },
955
+ # 0x6a - int8u: 1
956
+ 0x6b => { #PH (ZS7)
957
+ Name => 'State', # (State/Province/Count -- what is Count?)
958
+ Groups => { 2 => 'Location' },
959
+ Format => 'string',
960
+ Writable => 'undef', # (Count 72)
961
+ },
962
+ # 0x6c - int8u: 1
963
+ 0x6d => { #PH (ZS7) (also see forum5997)
964
+ Name => 'City', # (City/Town)
965
+ Groups => { 2 => 'Location' },
966
+ Format => 'string',
967
+ Writable => 'undef', # (Count 72)
968
+ Notes => 'City/Town as stored by some models, or County/Township for others',
969
+ },
970
+ # 0x6e - int8u: 1
971
+ 0x6f => { #PH (ZS7)
972
+ Name => 'Landmark', # (Landmark)
973
+ Groups => { 2 => 'Location' },
974
+ Format => 'string',
975
+ Writable => 'undef', # (Count 128)
976
+ },
977
+ 0x70 => { #PH (ZS7)
978
+ Name => 'IntelligentResolution',
979
+ Writable => 'int8u',
980
+ PrintConv => {
981
+ 0 => 'Off',
982
+ # Note: I think these values make sense for the GH2, but meanings
983
+ # may be different for other models
984
+ 1 => 'Low',
985
+ 2 => 'Standard',
986
+ 3 => 'High',
987
+ 4 => 'Extended',
988
+ },
989
+ },
990
+ # 0x71 - undef[128] (maybe text stamp text?)
991
+ 0x77 => { #18
992
+ Name => 'BurstSpeed',
993
+ Writable => 'int16u',
994
+ Notes => 'images per second',
995
+ },
996
+ # 0x72,0x73,0x74,0x75,0x77,0x78: 0
997
+ # 0x76: 0, (3 for G6 with HDR on, ref 18)
998
+ 0x79 => { #PH (GH2)
999
+ Name => 'IntelligentD-Range',
1000
+ Writable => 'int16u',
1001
+ PrintConv => {
1002
+ 0 => 'Off',
1003
+ 1 => 'Low',
1004
+ 2 => 'Standard',
1005
+ 3 => 'High',
1006
+ },
1007
+ },
1008
+ # 0x7a,0x7b: 0
1009
+ 0x7c => { #18
1010
+ Name => 'ClearRetouch',
1011
+ Writable => 'int16u',
1012
+ PrintConv => { 0 => 'Off', 1 => 'On' },
1013
+ },
1014
+ 0x80 => { #forum5997 (seen garbage here for SZ5 - PH)
1015
+ Name => 'City2', # (City/Town/Village)
1016
+ Groups => { 2 => 'Location' },
1017
+ Format => 'string',
1018
+ Writable => 'undef', # (Count 72)
1019
+ Notes => 'City/Town/Village as stored by some models',
1020
+ },
1021
+ # 0x81 - undef[72]: "---"
1022
+ # 0x82 - undef[72]: "---"
1023
+ # 0x83 - undef[72]: "---"
1024
+ # 0x84 - undef[72]: "---"
1025
+ # 0x85 - undef[128]: "---"
1026
+ 0x86 => { #http://dev.exiv2.org/issues/825
1027
+ Name => 'ManometerPressure',
1028
+ Writable => 'int16u',
1029
+ RawConv => '$val==65535 ? undef : $val',
1030
+ ValueConv => '$val / 10',
1031
+ ValueConvInv => '$val * 10',
1032
+ PrintConv => 'sprintf("%.1f kPa",$val)',
1033
+ PrintConvInv => '$val=~s/ ?kPa//i; $val',
1034
+ },
1035
+ 0x89 => {
1036
+ Name => 'PhotoStyle',
1037
+ Writable => 'int16u',
1038
+ PrintConv => {
1039
+ 0 => 'Auto',
1040
+ 1 => 'Standard or Custom',
1041
+ 2 => 'Vivid',
1042
+ 3 => 'Natural',
1043
+ 4 => 'Monochrome',
1044
+ 5 => 'Scenery',
1045
+ 6 => 'Portrait',
1046
+ },
1047
+ },
1048
+ 0x8a => { #18
1049
+ Name => 'ShadingCompensation',
1050
+ Writable => 'int16u',
1051
+ PrintConv => {
1052
+ 0 => 'Off',
1053
+ 1 => 'On'
1054
+ }
1055
+ },
1056
+ 0x8c => {
1057
+ Name => 'AccelerometerZ',
1058
+ Writable => 'int16u',
1059
+ Format => 'int16s',
1060
+ Notes => 'positive is acceleration upwards',
1061
+ },
1062
+ 0x8d => {
1063
+ Name => 'AccelerometerX',
1064
+ Writable => 'int16u',
1065
+ Format => 'int16s',
1066
+ Notes => 'positive is acceleration to the left',
1067
+ },
1068
+ 0x8e => {
1069
+ Name => 'AccelerometerY',
1070
+ Writable => 'int16u',
1071
+ Format => 'int16s',
1072
+ Notes => 'positive is acceleration backwards',
1073
+ },
1074
+ 0x8f => { #18
1075
+ Name => 'CameraOrientation',
1076
+ Writable => 'int8u',
1077
+ PrintConv => {
1078
+ 0 => 'Normal',
1079
+ 1 => 'Rotate CW',
1080
+ 2 => 'Rotate 180',
1081
+ 3 => 'Rotate CCW',
1082
+ 4 => 'Tilt Upwards',
1083
+ 5 => 'Tilt Downwards'
1084
+ }
1085
+ },
1086
+ 0x90 => {
1087
+ Name => 'RollAngle',
1088
+ Writable => 'int16u',
1089
+ Format => 'int16s',
1090
+ Notes => 'converted to degrees of clockwise camera rotation',
1091
+ ValueConv => '$val / 10',
1092
+ ValueConvInv => '$val * 10',
1093
+ },
1094
+ 0x91 => {
1095
+ Name => 'PitchAngle',
1096
+ Writable => 'int16u',
1097
+ Format => 'int16s',
1098
+ Notes => 'converted to degrees of upward camera tilt',
1099
+ ValueConv => '-$val / 10',
1100
+ ValueConvInv => '-$val * 10',
1101
+ },
1102
+ 0x93 => { #18
1103
+ Name => 'SweepPanoramaDirection',
1104
+ Writable => 'int8u',
1105
+ PrintConv => {
1106
+ 0 => 'Off',
1107
+ 1 => 'Left to Right',
1108
+ 2 => 'Right to Left',
1109
+ 3 => 'Top to Bottom',
1110
+ 4 => 'Bottom to Top'
1111
+ }
1112
+ },
1113
+ 0x94 => { #18
1114
+ Name => 'SweepPanoramaFieldOfView',
1115
+ Writable => 'int16u'
1116
+ },
1117
+ 0x96 => { #18
1118
+ Name => 'TimerRecording',
1119
+ Writable => 'int8u',
1120
+ PrintConv => {
1121
+ 0 => 'Off',
1122
+ 1 => 'Time Lapse',
1123
+ 2 => 'Stop-motion Animation',
1124
+ },
1125
+ },
1126
+ 0x9d => { #18
1127
+ Name => 'InternalNDFilter',
1128
+ Writable => 'rational64u'
1129
+ },
1130
+ 0x9e => { #18
1131
+ Name => 'HDR',
1132
+ Writable => 'int16u',
1133
+ PrintConv => {
1134
+ 0 => 'Off',
1135
+ 100 => '1 EV',
1136
+ 200 => '2 EV',
1137
+ 300 => '3 EV',
1138
+ 32868 => '1 EV (Auto)',
1139
+ 32968 => '2 EV (Auto)',
1140
+ 33068 => '3 EV (Auto)',
1141
+ },
1142
+ },
1143
+ 0x9f => { #18
1144
+ Name => 'ShutterType',
1145
+ Writable => 'int16u',
1146
+ PrintConv => {
1147
+ 0 => 'Mechanical',
1148
+ 1 => 'Electronic',
1149
+ 2 => 'Hybrid', #PH (GM1, 1st curtain electronic, 2nd curtain mechanical)
1150
+ },
1151
+ },
1152
+ 0xa3 => { #18
1153
+ Name => 'ClearRetouchValue',
1154
+ Writable => 'rational64u',
1155
+ # undef if ClearRetouch is off, 0 if it is on
1156
+ },
1157
+ 0xab => { #18
1158
+ Name => 'TouchAE',
1159
+ Writable => 'int16u',
1160
+ PrintConv => { 0 => 'Off', 1 => 'On' },
1161
+ },
1162
+ 0x0e00 => {
1163
+ Name => 'PrintIM',
1164
+ Description => 'Print Image Matching',
1165
+ Writable => 0,
1166
+ SubDirectory => {
1167
+ TagTable => 'Image::ExifTool::PrintIM::Main',
1168
+ },
1169
+ },
1170
+ 0x8000 => { #PH
1171
+ Name => 'MakerNoteVersion',
1172
+ Format => 'undef',
1173
+ },
1174
+ 0x8001 => { #7/PH/JD
1175
+ Name => 'SceneMode',
1176
+ Writable => 'int16u',
1177
+ PrintConvColumns => 2,
1178
+ PrintConv => {
1179
+ 0 => 'Off',
1180
+ %shootingMode,
1181
+ },
1182
+ },
1183
+ # 0x8002 - values: 1,2 related to focus? (PH/JD)
1184
+ # 1 for HDR modes, 2 for Portrait (ref 12)
1185
+ # 0x8003 - values: 1,2 related to focus? (PH/JD)
1186
+ 0x8004 => { #PH/JD
1187
+ Name => 'WBRedLevel',
1188
+ Writable => 'int16u',
1189
+ },
1190
+ 0x8005 => { #PH/JD
1191
+ Name => 'WBGreenLevel',
1192
+ Writable => 'int16u',
1193
+ },
1194
+ 0x8006 => { #PH/JD
1195
+ Name => 'WBBlueLevel',
1196
+ Writable => 'int16u',
1197
+ },
1198
+ 0x8007 => { #PH
1199
+ Name => 'FlashFired',
1200
+ Writable => 'int16u',
1201
+ PrintConv => { 1 => 'No', 2 => 'Yes' },
1202
+ },
1203
+ 0x8008 => { #PH (TZ5/FS7)
1204
+ # (tags 0x3b, 0x3e, 0x8008 and 0x8009 have the same values in all my samples - PH)
1205
+ Name => 'TextStamp',
1206
+ Writable => 'int16u',
1207
+ PrintConv => { 1 => 'Off', 2 => 'On' },
1208
+ },
1209
+ 0x8009 => { #PH (TZ5/FS7)
1210
+ # (tags 0x3b, 0x3e, 0x8008 and 0x8009 have the same values in all my samples - PH)
1211
+ Name => 'TextStamp',
1212
+ Writable => 'int16u',
1213
+ PrintConv => { 1 => 'Off', 2 => 'On' },
1214
+ },
1215
+ 0x8010 => { #PH
1216
+ Name => 'BabyAge',
1217
+ Writable => 'string',
1218
+ Notes => 'or pet age',
1219
+ PrintConv => '$val eq "9999:99:99 00:00:00" ? "(not set)" : $val',
1220
+ PrintConvInv => '$val =~ /^\d/ ? $val : "9999:99:99 00:00:00"',
1221
+ },
1222
+ 0x8012 => { #PH (FS7)
1223
+ Name => 'Transform',
1224
+ Writable => 'undef',
1225
+ Notes => 'decoded as two 16-bit signed integers',
1226
+ Format => 'int16s',
1227
+ Count => 2,
1228
+ PrintConv => {
1229
+ '-3 2' => 'Slim High',
1230
+ '-1 1' => 'Slim Low',
1231
+ '0 0' => 'Off',
1232
+ '1 1' => 'Stretch Low',
1233
+ '3 2' => 'Stretch High',
1234
+ },
1235
+ },
1236
+ );
1237
+
1238
+ # Leica type2 maker notes (ref 10)
1239
+ %Image::ExifTool::Panasonic::Leica2 = (
1240
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
1241
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1242
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1243
+ WRITABLE => 1,
1244
+ NOTES => 'These tags are used by the Leica M8.',
1245
+ 0x300 => {
1246
+ Name => 'Quality',
1247
+ Writable => 'int16u',
1248
+ PrintConv => {
1249
+ 1 => 'Fine',
1250
+ 2 => 'Basic',
1251
+ },
1252
+ },
1253
+ 0x302 => {
1254
+ Name => 'UserProfile',
1255
+ Writable => 'int32u',
1256
+ PrintConv => {
1257
+ 1 => 'User Profile 1',
1258
+ 2 => 'User Profile 2',
1259
+ 3 => 'User Profile 3',
1260
+ 4 => 'User Profile 0 (Dynamic)',
1261
+ },
1262
+ },
1263
+ 0x303 => {
1264
+ Name => 'SerialNumber',
1265
+ Writable => 'int32u',
1266
+ PrintConv => 'sprintf("%.7d", $val)',
1267
+ PrintConvInv => '$val',
1268
+ },
1269
+ 0x304 => {
1270
+ Name => 'WhiteBalance',
1271
+ Writable => 'int16u',
1272
+ Notes => 'values above 0x8000 are converted to Kelvin color temperatures',
1273
+ PrintConv => {
1274
+ 0 => 'Auto or Manual',
1275
+ 1 => 'Daylight',
1276
+ 2 => 'Fluorescent',
1277
+ 3 => 'Tungsten',
1278
+ 4 => 'Flash',
1279
+ 10 => 'Cloudy',
1280
+ 11 => 'Shade',
1281
+ OTHER => \&WhiteBalanceConv,
1282
+ },
1283
+ },
1284
+ 0x310 => {
1285
+ Name => 'LensType',
1286
+ Writable => 'int32u',
1287
+ SeparateTable => 1,
1288
+ ValueConv => '($val >> 2) . " " . ($val & 0x3)',
1289
+ ValueConvInv => \&LensTypeConvInv,
1290
+ PrintConv => \%leicaLensTypes,
1291
+ },
1292
+ 0x311 => {
1293
+ Name => 'ExternalSensorBrightnessValue',
1294
+ Format => 'rational64s', # (incorrectly unsigned in JPEG images)
1295
+ Writable => 'rational64s',
1296
+ Notes => '"blue dot" measurement',
1297
+ PrintConv => 'sprintf("%.2f", $val)',
1298
+ PrintConvInv => '$val',
1299
+ },
1300
+ 0x312 => {
1301
+ Name => 'MeasuredLV',
1302
+ Format => 'rational64s', # (incorrectly unsigned in JPEG images)
1303
+ Writable => 'rational64s',
1304
+ Notes => 'imaging sensor or TTL exposure meter measurement',
1305
+ PrintConv => 'sprintf("%.2f", $val)',
1306
+ PrintConvInv => '$val',
1307
+ },
1308
+ 0x313 => {
1309
+ Name => 'ApproximateFNumber',
1310
+ Writable => 'rational64u',
1311
+ PrintConv => 'sprintf("%.1f", $val)',
1312
+ PrintConvInv => '$val',
1313
+ },
1314
+ 0x320 => {
1315
+ Name => 'CameraTemperature',
1316
+ Writable => 'int32s',
1317
+ PrintConv => '"$val C"',
1318
+ PrintConvInv => '$val=~s/ ?C//; $val',
1319
+ },
1320
+ 0x321 => { Name => 'ColorTemperature', Writable => 'int32u' },
1321
+ 0x322 => { Name => 'WBRedLevel', Writable => 'rational64u' },
1322
+ 0x323 => { Name => 'WBGreenLevel', Writable => 'rational64u' },
1323
+ 0x324 => { Name => 'WBBlueLevel', Writable => 'rational64u' },
1324
+ 0x325 => {
1325
+ Name => 'UV-IRFilterCorrection',
1326
+ Description => 'UV/IR Filter Correction',
1327
+ Writable => 'int32u',
1328
+ PrintConv => {
1329
+ 0 => 'Not Active',
1330
+ 1 => 'Active',
1331
+ },
1332
+ },
1333
+ 0x330 => { Name => 'CCDVersion', Writable => 'int32u' },
1334
+ 0x331 => { Name => 'CCDBoardVersion', Writable => 'int32u' },
1335
+ 0x332 => { Name => 'ControllerBoardVersion', Writable => 'int32u' },
1336
+ 0x333 => { Name => 'M16CVersion', Writable => 'int32u' },
1337
+ 0x340 => { Name => 'ImageIDNumber', Writable => 'int32u' },
1338
+ );
1339
+
1340
+ # Leica type3 maker notes (ref PH)
1341
+ %Image::ExifTool::Panasonic::Leica3 = (
1342
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
1343
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1344
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1345
+ WRITABLE => 1,
1346
+ NOTES => 'These tags are used by the Leica R8 and R9 digital backs.',
1347
+ 0x0d => {
1348
+ Name => 'WB_RGBLevels',
1349
+ Writable => 'int16u',
1350
+ Count => 3,
1351
+ },
1352
+ );
1353
+
1354
+ # Leica type4 maker notes (ref PH) (M9)
1355
+ %Image::ExifTool::Panasonic::Leica4 = (
1356
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
1357
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1358
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1359
+ WRITABLE => 1,
1360
+ NOTES => 'This information is written by the M9.',
1361
+ 0x3000 => {
1362
+ Name => 'Subdir3000',
1363
+ SubDirectory => {
1364
+ TagTable => 'Image::ExifTool::Panasonic::Subdir',
1365
+ ByteOrder => 'Unknown',
1366
+ },
1367
+ },
1368
+ 0x3100 => {
1369
+ Name => 'Subdir3100',
1370
+ SubDirectory => {
1371
+ TagTable => 'Image::ExifTool::Panasonic::Subdir',
1372
+ ByteOrder => 'Unknown',
1373
+ },
1374
+ },
1375
+ 0x3400 => {
1376
+ Name => 'Subdir3400',
1377
+ SubDirectory => {
1378
+ TagTable => 'Image::ExifTool::Panasonic::Subdir',
1379
+ ByteOrder => 'Unknown',
1380
+ },
1381
+ },
1382
+ 0x3900 => {
1383
+ Name => 'Subdir3900',
1384
+ SubDirectory => {
1385
+ TagTable => 'Image::ExifTool::Panasonic::Subdir',
1386
+ ByteOrder => 'Unknown',
1387
+ },
1388
+ },
1389
+ );
1390
+
1391
+ # Leica M9 SubDirectory tags (ref PH)
1392
+ %Image::ExifTool::Panasonic::Subdir = (
1393
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
1394
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1395
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1396
+ TAG_PREFIX => 'Leica_Subdir',
1397
+ WRITABLE => 1,
1398
+ # 0x3001 - normally 0 but value of 2 when manual coding is used
1399
+ # with a coded lens (but only tested with Elmar-M 50mm f/2.8) - PH
1400
+ 0x300a => {
1401
+ Name => 'Contrast',
1402
+ Writable => 'int32u',
1403
+ PrintConv => {
1404
+ 0 => 'Low',
1405
+ 1 => 'Medium Low',
1406
+ 2 => 'Normal',
1407
+ 3 => 'Medium High',
1408
+ 4 => 'High',
1409
+ },
1410
+ },
1411
+ 0x300b => {
1412
+ Name => 'Sharpening',
1413
+ Writable => 'int32u',
1414
+ PrintConv => {
1415
+ 0 => 'Off',
1416
+ 1 => 'Low',
1417
+ 2 => 'Normal',
1418
+ 3 => 'Medium High',
1419
+ 4 => 'High',
1420
+ },
1421
+ },
1422
+ 0x300d => {
1423
+ Name => 'Saturation',
1424
+ Writable => 'int32u',
1425
+ PrintConv => {
1426
+ 0 => 'Low',
1427
+ 1 => 'Medium Low',
1428
+ 2 => 'Normal',
1429
+ 3 => 'Medium High',
1430
+ 4 => 'High',
1431
+ 5 => 'Black & White',
1432
+ 6 => 'Vintage B&W',
1433
+ },
1434
+ },
1435
+ # 0x3032 - some sort of RGB coefficients? (zeros unless Kelvin WB, but same for all Color Temps)
1436
+ 0x3033 => {
1437
+ Name => 'WhiteBalance',
1438
+ Writable => 'int32u',
1439
+ PrintConv => { #13
1440
+ 0 => 'Auto',
1441
+ 1 => 'Tungsten',
1442
+ 2 => 'Fluorescent',
1443
+ 3 => 'Daylight Fluorescent',
1444
+ 4 => 'Daylight',
1445
+ 5 => 'Flash',
1446
+ 6 => 'Cloudy',
1447
+ 7 => 'Shade',
1448
+ 8 => 'Manual',
1449
+ 9 => 'Kelvin',
1450
+ },
1451
+ },
1452
+ 0x3034 => {
1453
+ Name => 'JPEGQuality',
1454
+ Writable => 'int32u',
1455
+ PrintConv => {
1456
+ 94 => 'Basic',
1457
+ 97 => 'Fine',
1458
+ },
1459
+ },
1460
+ # 0x3035 (int32u): -1 unless Manual WB (2 in my Manual sample)
1461
+ 0x3036 => {
1462
+ Name => 'WB_RGBLevels',
1463
+ Writable => 'rational64u',
1464
+ Count => 3,
1465
+ },
1466
+ 0x3038 => {
1467
+ Name => 'UserProfile', # (CameraProfile according to ref 14)
1468
+ Writable => 'string',
1469
+ },
1470
+ 0x303a => {
1471
+ Name => 'JPEGSize',
1472
+ Writable => 'int32u',
1473
+ PrintConv => {
1474
+ 0 => '5216x3472',
1475
+ 1 => '3840x2592',
1476
+ 2 => '2592x1728',
1477
+ 3 => '1728x1152',
1478
+ 4 => '1280x864',
1479
+ },
1480
+ },
1481
+ 0x3103 => { #13 (valid for FW 1.116 and later)
1482
+ Name => 'SerialNumber',
1483
+ Writable => 'string',
1484
+ },
1485
+ # 0x3104 body-dependent string ("00012905000000") (not serial number)
1486
+ # 0x3105 body-dependent string ("00012905000000")
1487
+ # 0x3107 - body-dependent string ("4H205800116800") (not serial number)
1488
+ 0x3109 => {
1489
+ Name => 'FirmwareVersion',
1490
+ Writable => 'string',
1491
+ },
1492
+ 0x312a => { #14 (NC)
1493
+ Name => 'BaseISO',
1494
+ Writable => 'int32u',
1495
+ },
1496
+ 0x312b => {
1497
+ Name => 'SensorWidth',
1498
+ Writable => 'int32u',
1499
+ },
1500
+ 0x312c => {
1501
+ Name => 'SensorHeight',
1502
+ Writable => 'int32u',
1503
+ },
1504
+ 0x312d => { #14 (NC)
1505
+ Name => 'SensorBitDepth',
1506
+ Writable => 'int32u',
1507
+ },
1508
+ 0x3402 => { #PH/13
1509
+ Name => 'CameraTemperature',
1510
+ Writable => 'int32s',
1511
+ PrintConv => '"$val C"',
1512
+ PrintConvInv => '$val=~s/ ?C//; $val',
1513
+ },
1514
+ 0x3405 => {
1515
+ Name => 'LensType',
1516
+ Writable => 'int32u',
1517
+ SeparateTable => 1,
1518
+ ValueConv => '($val >> 2) . " " . ($val & 0x3)',
1519
+ ValueConvInv => \&LensTypeConvInv,
1520
+ PrintConv => \%leicaLensTypes,
1521
+ },
1522
+ 0x3406 => { #PH/13
1523
+ Name => 'ApproximateFNumber',
1524
+ Writable => 'rational64u',
1525
+ PrintConv => 'sprintf("%.1f", $val)',
1526
+ PrintConvInv => '$val',
1527
+ },
1528
+ 0x3407 => { #14
1529
+ Name => 'MeasuredLV',
1530
+ Writable => 'int32s',
1531
+ Notes => 'imaging sensor or TTL exposure meter measurement',
1532
+ ValueConv => '$val / 1e5', #PH (NC)
1533
+ ValueConvInv => '$val * 1e5', #PH (NC)
1534
+ PrintConv => 'sprintf("%.2f", $val)',
1535
+ PrintConvInv => '$val',
1536
+ },
1537
+ 0x3408 => { #14
1538
+ Name => 'ExternalSensorBrightnessValue',
1539
+ Writable => 'int32s',
1540
+ Notes => '"blue dot" measurement',
1541
+ ValueConv => '$val / 1e5', #PH (NC)
1542
+ ValueConvInv => '$val * 1e5', #PH (NC)
1543
+ PrintConv => 'sprintf("%.2f", $val)',
1544
+ PrintConvInv => '$val',
1545
+ },
1546
+ 0x3901 => {
1547
+ Name => 'Data1',
1548
+ SubDirectory => { TagTable => 'Image::ExifTool::Panasonic::Data1' },
1549
+ },
1550
+ 0x3902 => {
1551
+ Name => 'Data2',
1552
+ SubDirectory => { TagTable => 'Image::ExifTool::Panasonic::Data2' },
1553
+ },
1554
+ # 0x3903 - larger binary data block
1555
+ );
1556
+
1557
+ %Image::ExifTool::Panasonic::Data1 = (
1558
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1559
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1560
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1561
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1562
+ WRITABLE => 1,
1563
+ TAG_PREFIX => 'Leica_Data1',
1564
+ FIRST_ENTRY => 0,
1565
+ 0x0016 => {
1566
+ Name => 'LensType',
1567
+ Writable => 'int32u',
1568
+ Priority => 0,
1569
+ SeparateTable => 1,
1570
+ ValueConv => '($val >> 2) . " " . ($val & 0x3)',
1571
+ ValueConvInv => \&LensTypeConvInv,
1572
+ PrintConv => \%leicaLensTypes,
1573
+ },
1574
+ );
1575
+
1576
+ %Image::ExifTool::Panasonic::Data2 = (
1577
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1578
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1579
+ TAG_PREFIX => 'Leica_Data2',
1580
+ FIRST_ENTRY => 0,
1581
+ );
1582
+
1583
+ # Leica type5 maker notes (ref PH) (X1)
1584
+ %Image::ExifTool::Panasonic::Leica5 = (
1585
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
1586
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1587
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1588
+ WRITABLE => 1,
1589
+ PRIORITY => 0,
1590
+ NOTES => 'This information is written by the X1, X2, X VARIO and T.',
1591
+ 0x0303 => {
1592
+ Name => 'LensModel',
1593
+ Condition => '$format eq "string"',
1594
+ Notes => 'Leica T only',
1595
+ Writable => 'string',
1596
+ },
1597
+ # 0x0406 - saturation or sharpness
1598
+ 0x0407 => { Name => 'OriginalFileName', Writable => 'string' },
1599
+ 0x0408 => { Name => 'OriginalDirectory',Writable => 'string' },
1600
+ # 0x040b - related to white balance
1601
+ 0x040d => {
1602
+ Name => 'ExposureMode',
1603
+ Format => 'int8u',
1604
+ Count => 4,
1605
+ PrintConv => {
1606
+ '0 0 0 0' => 'Program AE',
1607
+ # '0 1 0 0' - seen for X (Typ 113) - PH
1608
+ '1 0 0 0' => 'Aperture-priority AE',
1609
+ '1 1 0 0' => 'Aperture-priority AE (1)', # (see for Leica T)
1610
+ '2 0 0 0' => 'Shutter speed priority AE', #(guess)
1611
+ '3 0 0 0' => 'Manual',
1612
+ },
1613
+ },
1614
+ 0x0410 => {
1615
+ Name => 'ShotInfo',
1616
+ SubDirectory => { TagTable => 'Image::ExifTool::Panasonic::ShotInfo' },
1617
+ },
1618
+ # 0x0410 - int8u[16]: first byte is FileNumber
1619
+ # 0x0411 - int8u[4]: first number is FilmMode (1=Standard,2=Vivid,3=Natural,4=BW Natural,5=BW High Contrast)
1620
+ 0x0412 => { Name => 'FilmMode', Writable => 'string' },
1621
+ 0x0413 => { Name => 'WB_RGBLevels', Writable => 'rational64u', Count => 3 },
1622
+ );
1623
+
1624
+ # Leica type5 ShotInfo (ref PH) (X2)
1625
+ %Image::ExifTool::Panasonic::ShotInfo = (
1626
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1627
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1628
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1629
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1630
+ TAG_PREFIX => 'Leica_ShotInfo',
1631
+ FIRST_ENTRY => 0,
1632
+ WRITABLE => 1,
1633
+ 0 => {
1634
+ Name => 'FileIndex',
1635
+ Format => 'int16u',
1636
+ },
1637
+ );
1638
+
1639
+ # Leica type6 maker notes (ref PH) (S2)
1640
+ %Image::ExifTool::Panasonic::Leica6 = (
1641
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
1642
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1643
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
1644
+ NOTES => q{
1645
+ This information is written by the S2 and M (Typ 240), as a trailer in JPEG
1646
+ images.
1647
+ },
1648
+ 0x300 => {
1649
+ Name => 'PreviewImage',
1650
+ Groups => { 2 => 'Preview' },
1651
+ Writable => 'undef',
1652
+ Notes => 'S2 and M (Typ 240)',
1653
+ DataTag => 'PreviewImage',
1654
+ RawConv => q{
1655
+ return \$val if $val =~ /^Binary/;
1656
+ return \$val if $val =~ /^\xff\xd8\xff/;
1657
+ $$self{PreviewError} = 1 unless $val eq 'none';
1658
+ return undef;
1659
+ },
1660
+ ValueConvInv => '$val || "none"',
1661
+ WriteCheck => 'return $val=~/^(none|\xff\xd8\xff)/s ? undef : "Not a valid image"',
1662
+ ChangeBase => '$dirStart + $dataPos - 8',
1663
+ },
1664
+ 0x301 => {
1665
+ Name => 'UnknownBlock',
1666
+ Notes => 'unknown 320kB block, not copied to JPEG images',
1667
+ Flags => [ 'Unknown', 'Binary', 'Drop' ],
1668
+ },
1669
+ # 0x302 - same value as 4 unknown bytes at the end of JPEG or after the DNG TIFF header
1670
+ 0x303 => {
1671
+ Name => 'LensType',
1672
+ Writable => 'string',
1673
+ ValueConv => '$val=~s/ +$//; $val', # trim trailing spaces
1674
+ ValueConvInv => '$val',
1675
+ },
1676
+ # 0x340 - same as 0x302
1677
+ );
1678
+
1679
+ # Type 2 tags (ref PH)
1680
+ %Image::ExifTool::Panasonic::Type2 = (
1681
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1682
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
1683
+ FIRST_ENTRY => 0,
1684
+ FORMAT => 'int16u',
1685
+ NOTES => q{
1686
+ This type of maker notes is used by models such as the NV-DS65, PV-D2002,
1687
+ PV-DC3000, PV-DV203, PV-DV401, PV-DV702, PV-L2001, PV-SD4090, PV-SD5000 and
1688
+ iPalm.
1689
+ },
1690
+ 0 => {
1691
+ Name => 'MakerNoteType',
1692
+ Format => 'string[4]',
1693
+ },
1694
+ # seems to vary inversely with amount of light, so I'll call it 'Gain' - PH
1695
+ # (minimum is 16, maximum is 136. Value is 0 for pictures captured from video)
1696
+ 3 => 'Gain',
1697
+ );
1698
+
1699
+ # Face detection position information (ref PH)
1700
+ %Image::ExifTool::Panasonic::FaceDetInfo = (
1701
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1702
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1703
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1704
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
1705
+ WRITABLE => 1,
1706
+ FORMAT => 'int16u',
1707
+ FIRST_ENTRY => 0,
1708
+ DATAMEMBER => [ 0 ],
1709
+ NOTES => 'Face detection position information.',
1710
+ 0 => {
1711
+ Name => 'NumFacePositions',
1712
+ Format => 'int16u',
1713
+ DataMember => 'NumFacePositions',
1714
+ RawConv => '$$self{NumFacePositions} = $val',
1715
+ Notes => q{
1716
+ number of detected face positions stored in this record. May be less than
1717
+ FacesDetected
1718
+ },
1719
+ },
1720
+ 1 => {
1721
+ Name => 'Face1Position',
1722
+ Format => 'int16u[4]',
1723
+ RawConv => '$$self{NumFacePositions} < 1 ? undef : $val',
1724
+ Notes => q{
1725
+ 4 numbers: X/Y coordinates of the face center and width/height of face.
1726
+ Coordinates are relative to an image twice the size of the thumbnail, or 320
1727
+ pixels wide
1728
+ },
1729
+ },
1730
+ 5 => {
1731
+ Name => 'Face2Position',
1732
+ Format => 'int16u[4]',
1733
+ RawConv => '$$self{NumFacePositions} < 2 ? undef : $val',
1734
+ },
1735
+ 9 => {
1736
+ Name => 'Face3Position',
1737
+ Format => 'int16u[4]',
1738
+ RawConv => '$$self{NumFacePositions} < 3 ? undef : $val',
1739
+ },
1740
+ 13 => {
1741
+ Name => 'Face4Position',
1742
+ Format => 'int16u[4]',
1743
+ RawConv => '$$self{NumFacePositions} < 4 ? undef : $val',
1744
+ },
1745
+ 17 => {
1746
+ Name => 'Face5Position',
1747
+ Format => 'int16u[4]',
1748
+ RawConv => '$$self{NumFacePositions} < 5 ? undef : $val',
1749
+ },
1750
+ );
1751
+
1752
+ # Face recognition information from DMC-TZ7 (ref PH)
1753
+ %Image::ExifTool::Panasonic::FaceRecInfo = (
1754
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1755
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1756
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1757
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
1758
+ WRITABLE => 1,
1759
+ FIRST_ENTRY => 0,
1760
+ DATAMEMBER => [ 0 ],
1761
+ NOTES => q{
1762
+ Tags written by cameras with facial recognition. These cameras not only
1763
+ detect faces in an image, but also recognize specific people based a
1764
+ user-supplied set of known faces.
1765
+ },
1766
+ 0 => {
1767
+ Name => 'FacesRecognized',
1768
+ Format => 'int16u',
1769
+ DataMember => 'FacesRecognized',
1770
+ RawConv => '$$self{FacesRecognized} = $val',
1771
+ },
1772
+ 4 => {
1773
+ Name => 'RecognizedFace1Name',
1774
+ Format => 'string[20]',
1775
+ RawConv => '$$self{FacesRecognized} < 1 ? undef : $val',
1776
+ },
1777
+ 24 => {
1778
+ Name => 'RecognizedFace1Position',
1779
+ Format => 'int16u[4]',
1780
+ RawConv => '$$self{FacesRecognized} < 1 ? undef : $val',
1781
+ Notes => 'coordinates in same format as face detection tags above',
1782
+ },
1783
+ 32 => {
1784
+ Name => 'RecognizedFace1Age',
1785
+ Format => 'string[20]',
1786
+ RawConv => '$$self{FacesRecognized} < 1 ? undef : $val',
1787
+ },
1788
+ 52 => {
1789
+ Name => 'RecognizedFace2Name',
1790
+ Format => 'string[20]',
1791
+ RawConv => '$$self{FacesRecognized} < 2 ? undef : $val',
1792
+ },
1793
+ 72 => {
1794
+ Name => 'RecognizedFace2Position',
1795
+ Format => 'int16u[4]',
1796
+ RawConv => '$$self{FacesRecognized} < 2 ? undef : $val',
1797
+ },
1798
+ 80 => {
1799
+ Name => 'RecognizedFace2Age',
1800
+ Format => 'string[20]',
1801
+ RawConv => '$$self{FacesRecognized} < 2 ? undef : $val',
1802
+ },
1803
+ 100 => {
1804
+ Name => 'RecognizedFace3Name',
1805
+ Format => 'string[20]',
1806
+ RawConv => '$$self{FacesRecognized} < 3 ? undef : $val',
1807
+ },
1808
+ 120 => {
1809
+ Name => 'RecognizedFace3Position',
1810
+ Format => 'int16u[4]',
1811
+ RawConv => '$$self{FacesRecognized} < 3 ? undef : $val',
1812
+ },
1813
+ 128 => {
1814
+ Name => 'RecognizedFace3Age',
1815
+ Format => 'string[20]',
1816
+ RawConv => '$$self{FacesRecognized} < 3 ? undef : $val',
1817
+ },
1818
+ );
1819
+
1820
+ # PANA atom found in user data of MP4 videos (ref PH)
1821
+ %Image::ExifTool::Panasonic::PANA = (
1822
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1823
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
1824
+ NOTES => q{
1825
+ Tags extracted from the PANA and LEIC user data found in MP4 videos from
1826
+ various Panasonic and Leica models.
1827
+ },
1828
+ 0x00 => {
1829
+ Name => 'Make',
1830
+ Condition => '$$valPt =~ /^(LEICA|Panasonic)/', # (only seen "LEICA")
1831
+ Groups => { 2 => 'Camera' },
1832
+ Format => 'string[22]',
1833
+ RawConv => '$$self{LeicaLEIC} = 1;$$self{Make} = $val',
1834
+ },
1835
+ 0x04 => {
1836
+ Name => 'Model',
1837
+ Condition => '$$valPt =~ /^[^\0]{6}/ and not $$self{LeicaLEIC}',
1838
+ Description => 'Camera Model Name',
1839
+ Groups => { 2 => 'Camera' },
1840
+ Format => 'string[16]',
1841
+ RawConv => '$$self{Model} = $val',
1842
+ },
1843
+ 0x0c => { # (FZ1000)
1844
+ Name => 'Model',
1845
+ Condition => '$$valPt =~ /^[^\0]{6}/ and not $$self{LeicaLEIC} and not $$self{Model}',
1846
+ Description => 'Camera Model Name',
1847
+ Groups => { 2 => 'Camera' },
1848
+ Format => 'string[16]',
1849
+ RawConv => '$$self{Model} = $val',
1850
+ },
1851
+ 0x16 => {
1852
+ Name => 'Model',
1853
+ Condition => '$$self{LeicaLEIC}',
1854
+ Description => 'Camera Model Name',
1855
+ Groups => { 2 => 'Camera' },
1856
+ Format => 'string[30]',
1857
+ RawConv => '$$self{Model} = $val',
1858
+ },
1859
+ 0x40 => {
1860
+ Name => 'ThumbnailTest',
1861
+ Format => 'undef[0x600]',
1862
+ Hidden => 1,
1863
+ RawConv => q{
1864
+ if (substr($val,0x1c,3) eq "\xff\xd8\xff") { # offset 0x5c
1865
+ $$self{ThumbType} = 1;
1866
+ } elsif (substr($val,0x506,3) eq "\xff\xd8\xff") { # offset 0x546
1867
+ $$self{ThumbType} = 2;
1868
+ } elsif (substr($val,0x51e,3) eq "\xff\xd8\xff") { # offset 0x55e (Leica T)
1869
+ $$self{ThumbType} = 3;
1870
+ } else {
1871
+ $$self{ThumbType} = 0;
1872
+ }
1873
+ return undef;
1874
+ },
1875
+ },
1876
+ 0x34 => {
1877
+ Name => 'Version1',
1878
+ Condition => '$$self{LeicaLEIC}',
1879
+ Format => 'string[14]',
1880
+ },
1881
+ 0x3e => {
1882
+ Name => 'Version2',
1883
+ Condition => '$$self{LeicaLEIC}',
1884
+ Format => 'string[14]',
1885
+ },
1886
+ 0x50 => {
1887
+ Name => 'MakerNoteLeica5',
1888
+ Condition => '$$self{LeicaLEIC}',
1889
+ SubDirectory => {
1890
+ TagTable => 'Image::ExifTool::Panasonic::Leica5',
1891
+ ProcessProc => \&ProcessLeicaLEIC,
1892
+ },
1893
+ },
1894
+ 0x58 => {
1895
+ Name => 'ThumbnailWidth',
1896
+ Condition => '$$self{ThumbType} == 1',
1897
+ Notes => 'Panasonic models',
1898
+ Format => 'int16u',
1899
+ },
1900
+ 0x5a => {
1901
+ Name => 'ThumbnailHeight',
1902
+ Condition => '$$self{ThumbType} == 1',
1903
+ Format => 'int16u',
1904
+ },
1905
+ 0x5c => {
1906
+ Name => 'ThumbnailImage',
1907
+ Condition => '$$self{ThumbType} == 1',
1908
+ Groups => { 2 => 'Preview' },
1909
+ Format => 'undef[16384]',
1910
+ ValueConv => '$val=~s/\0*$//; \$val', # remove trailing zeros
1911
+ },
1912
+ # 0x5c - there is some messed-up EXIF-IFD-looking data starting here in
1913
+ # Leica X VARIO MP4 videos, but it doesn't quite make sense
1914
+ 0x536 => { # (Leica X VARIO)
1915
+ Name => 'ThumbnailWidth',
1916
+ Condition => '$$self{ThumbType} == 2',
1917
+ Notes => 'Leica X Vario',
1918
+ Format => 'int32uRev', # (little-endian)
1919
+ },
1920
+ 0x53a => { # (Leica X VARIO)
1921
+ Name => 'ThumbnailHeight',
1922
+ Condition => '$$self{ThumbType} == 2',
1923
+ Format => 'int32uRev', # (little-endian)
1924
+ },
1925
+ 0x53e => { # (Leica X VARIO)
1926
+ Name => 'ThumbnailLength',
1927
+ Condition => '$$self{ThumbType} == 2',
1928
+ Format => 'int32uRev', # (little-endian)
1929
+ },
1930
+ 0x546 => { # (Leica X VARIO)
1931
+ Name => 'ThumbnailImage',
1932
+ Condition => '$$self{ThumbType} == 2',
1933
+ Groups => { 2 => 'Preview' },
1934
+ Format => 'undef[$val{0x53e}]',
1935
+ Binary => 1,
1936
+ },
1937
+ 0x54e => { # (Leica T)
1938
+ Name => 'ThumbnailWidth',
1939
+ Condition => '$$self{ThumbType} == 3',
1940
+ Notes => 'Leica X Vario',
1941
+ Format => 'int32uRev', # (little-endian)
1942
+ },
1943
+ 0x552 => { # (Leica T)
1944
+ Name => 'ThumbnailHeight',
1945
+ Condition => '$$self{ThumbType} == 3',
1946
+ Format => 'int32uRev', # (little-endian)
1947
+ },
1948
+ 0x556 => { # (Leica T)
1949
+ Name => 'ThumbnailLength',
1950
+ Condition => '$$self{ThumbType} == 3',
1951
+ Format => 'int32uRev', # (little-endian)
1952
+ },
1953
+ 0x55e => { # (Leica T)
1954
+ Name => 'ThumbnailImage',
1955
+ Condition => '$$self{ThumbType} == 3',
1956
+ Groups => { 2 => 'Preview' },
1957
+ Format => 'undef[$val{0x556}]',
1958
+ Binary => 1,
1959
+ },
1960
+ 0x4068 => {
1961
+ Name => 'ExifData',
1962
+ Condition => '$$valPt =~ /^\xff\xd8\xff\xe1..Exif\0\0/s',
1963
+ SubDirectory => {
1964
+ TagTable => 'Image::ExifTool::Exif::Main',
1965
+ ProcessProc => \&Image::ExifTool::ProcessTIFF,
1966
+ Start => 12,
1967
+ },
1968
+ },
1969
+ 0x4080 => { # (FZ1000)
1970
+ Name => 'ExifData',
1971
+ Condition => '$$valPt =~ /^\xff\xd8\xff\xe1..Exif\0\0/s',
1972
+ SubDirectory => {
1973
+ TagTable => 'Image::ExifTool::Exif::Main',
1974
+ ProcessProc => \&Image::ExifTool::ProcessTIFF,
1975
+ Start => 12,
1976
+ },
1977
+ },
1978
+ );
1979
+
1980
+ # Panasonic Composite tags
1981
+ %Image::ExifTool::Panasonic::Composite = (
1982
+ GROUPS => { 2 => 'Camera' },
1983
+ AdvancedSceneMode => {
1984
+ SeparateTable => 'Panasonic AdvancedSceneMode', # print values in a separate table
1985
+ Require => {
1986
+ 0 => 'Model',
1987
+ 1 => 'SceneMode',
1988
+ 2 => 'AdvancedSceneType',
1989
+ },
1990
+ ValueConv => '"$val[0] $val[1] $val[2]"',
1991
+ PrintConv => { #PH
1992
+ OTHER => sub {
1993
+ my ($val,$flag,$conv) = @_;
1994
+ $val =~ s/.* (\d+ \d+)/$1/; # drop model name
1995
+ return $$conv{$val} if $$conv{$val};
1996
+ my @v = split ' ', $val;
1997
+ my $prt = $shootingMode{$v[0]};
1998
+ # AdvancedSceneType=1 for non-automatic modes P,A,S,SCN (ref 19)
1999
+ # AdvancedSceneType=5 for automatic mode iA (ref 19)
2000
+ if ($prt) {
2001
+ return $prt if $v[1] == 1;
2002
+ return "$prt (intelligent auto)" if $v[1] == 5;
2003
+ return "$prt ($v[1])";
2004
+ }
2005
+ return "Unknown ($val)";
2006
+ },
2007
+ Notes => 'A Composite tag derived from Model, SceneMode and AdvancedSceneType.',
2008
+ '0 1' => 'Off',
2009
+ # '0 7' - seen this for V-LUX movies (PH)
2010
+ # '0 8' - seen for D-LUX(Typ104) movies (PH)
2011
+ '2 2' => 'Outdoor Portrait', #(FZ28)
2012
+ '2 3' => 'Indoor Portrait', #(FZ28)
2013
+ '2 4' => 'Creative Portrait', #(FZ28)
2014
+ '3 2' => 'Nature', #(FZ28)
2015
+ '3 3' => 'Architecture', #(FZ28)
2016
+ '3 4' => 'Creative Scenery', #(FZ28)
2017
+ #'3 5' - ? (FT1)
2018
+ '4 2' => 'Outdoor Sports', #(FZ28)
2019
+ '4 3' => 'Indoor Sports', #(FZ28)
2020
+ '4 4' => 'Creative Sports', #(FZ28)
2021
+ '9 2' => 'Flower', #(FZ28)
2022
+ '9 3' => 'Objects', #(FZ28)
2023
+ '9 4' => 'Creative Macro', #(FZ28)
2024
+ #'9 5' - ? (GF3)
2025
+ '21 2' => 'Illuminations', #(FZ28)
2026
+ '21 4' => 'Creative Night Scenery', #(FZ28)
2027
+ #'21 5' - ? (LX3)
2028
+ #'37 5' - ? (various)
2029
+ '45 2' => 'Cinema', #(GF2)
2030
+ '45 7' => 'Expressive', #(GF1,GF2)
2031
+ '45 8' => 'Retro', #(GF1,GF2)
2032
+ '45 9' => 'Pure', #(GF1,GF2)
2033
+ '45 10' => 'Elegant', #(GF1,GF2)
2034
+ '45 12' => 'Monochrome', #(GF1,GF2)
2035
+ '45 13' => 'Dynamic Art', #(GF1,GF2)
2036
+ '45 14' => 'Silhouette', #(GF1,GF2)
2037
+ '51 2' => 'HDR Art', #12
2038
+ '51 3' => 'HDR B&W', #12
2039
+ '59 1' => 'Expressive', #(GF5)
2040
+ '59 2' => 'Retro', #(GF5)
2041
+ '59 3' => 'High Key', #(GF5)
2042
+ '59 4' => 'Sepia', #(GF3,GF5)
2043
+ '59 5' => 'High Dynamic', #(GF3,GF5)
2044
+ '59 6' => 'Miniature', #(GF3)
2045
+ '59 9' => 'Low Key', #(GF5)
2046
+ '59 10' => 'Toy Effect', #(GF5)
2047
+ '59 11' => 'Dynamic Monochrome', #(GF5)
2048
+ '59 12' => 'Soft', #(GF5)
2049
+ '66 1' => 'Impressive Art', #19
2050
+ '66 2' => 'Cross Process', #(GF5)
2051
+ '66 3' => 'Color Select', #(GF5) (called "One Point Color" by some other models - PH)
2052
+ '66 4' => 'Star', #(GF5)
2053
+ '90 3' => 'Old Days', #18
2054
+ '90 4' => 'Sunshine', #18
2055
+ '90 5' => 'Bleach Bypass', #18
2056
+ '90 6' => 'Toy Pop', #18
2057
+ '90 7' => 'Fantasy', #18
2058
+ '90 8' => 'Monochrome', #PH (GX7)
2059
+ '90 9' => 'Rough Monochrome', #PH (GX7)
2060
+ '90 10' => 'Silky Monochrome', #PH (GX7)
2061
+ '92 1' => 'Handheld Night Shot', #Horst Wandres (FZ1000)
2062
+ # TZ40 Creative Control modes (ref 19)
2063
+ 'DMC-TZ40 90 1' => 'Expressive',
2064
+ 'DMC-TZ40 90 2' => 'Retro',
2065
+ 'DMC-TZ40 90 3' => 'High Key',
2066
+ 'DMC-TZ40 90 4' => 'Sepia',
2067
+ 'DMC-TZ40 90 5' => 'High Dynamic',
2068
+ 'DMC-TZ40 90 6' => 'Miniature',
2069
+ 'DMC-TZ40 90 9' => 'Low Key',
2070
+ 'DMC-TZ40 90 10' => 'Toy Effect',
2071
+ 'DMC-TZ40 90 11' => 'Dynamic Monochrome',
2072
+ 'DMC-TZ40 90 12' => 'Soft',
2073
+ },
2074
+ },
2075
+ );
2076
+
2077
+ # add our composite tags
2078
+ Image::ExifTool::AddCompositeTags('Image::ExifTool::Panasonic');
2079
+
2080
+ #------------------------------------------------------------------------------
2081
+ # Inverse conversion for Leica M9 lens codes
2082
+ # Inputs: 0) value
2083
+ # Returns: Converted value, or undef on error
2084
+ sub LensTypeConvInv($)
2085
+ {
2086
+ my $val = shift;
2087
+ if ($val =~ /^(\d+) (\d+)$/) {
2088
+ return ($1 << 2) + ($2 & 0x03);
2089
+ } elsif ($val =~ /^\d+$/) {
2090
+ my $bits = $frameSelectorBits{$val};
2091
+ return undef unless defined $bits;
2092
+ return ($val << 2) | $bits;
2093
+ } else {
2094
+ return undef;
2095
+ }
2096
+ }
2097
+
2098
+ #------------------------------------------------------------------------------
2099
+ # Convert Leica Kelvin white balance
2100
+ # Inputs: 0) value, 1) flag to perform inverse conversion
2101
+ # Returns: Converted value, or undef on error
2102
+ sub WhiteBalanceConv($;$$)
2103
+ {
2104
+ my ($val, $inv) = @_;
2105
+ if ($inv) {
2106
+ return $1 + 0x8000 if $val =~ /(\d+)/;
2107
+ } else {
2108
+ return ($val - 0x8000) . ' Kelvin' if $val > 0x8000;
2109
+ }
2110
+ return undef;
2111
+ }
2112
+
2113
+ #------------------------------------------------------------------------------
2114
+ # Process Leica makernotes in LEIC atom of MP4 videos (Leica T and X Vario)
2115
+ # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
2116
+ # Returns: 1 on success
2117
+ sub ProcessLeicaLEIC($$$)
2118
+ {
2119
+ my ($et, $dirInfo, $tagTablePtr) = @_;
2120
+ my $dataPt = $$dirInfo{DataPt};
2121
+ my $dirStart = $$dirInfo{DirStart} || 0;
2122
+ my $dirLen = $$dirInfo{DirLen} || (length($$dataPt) - $dirStart);
2123
+ return 0 if $dirLen < 6;
2124
+ SetByteOrder('II');
2125
+ my $numEntries = Get16u($dataPt, $dirStart);
2126
+ return 0 if $numEntries < 1 or $numEntries > 255;
2127
+ my $size = Get32u($dataPt, $dirStart + 2);
2128
+ return 0 if $size < $numEntries * 12 or $size + 6 > $dirLen;
2129
+ # the Leica programmers want to make things difficult, so they store
2130
+ # the entry count before the directory size, making it impossible to
2131
+ # process as a standard TIFF IFD without a bit of reorganization...
2132
+ Set16u($numEntries, $dataPt, $dirStart + 4);
2133
+ my %dirInfo = %$dirInfo;
2134
+ $dirInfo{DirStart} = $dirStart + 4;
2135
+ $dirInfo{DirLen} = $size - 4;
2136
+ $dirInfo{DataPos} -= $dirStart;
2137
+ $dirInfo{Base} += $dirStart;
2138
+ return Image::ExifTool::Exif::ProcessExif($et, \%dirInfo, $tagTablePtr);
2139
+ return 1;
2140
+ }
2141
+
2142
+ #------------------------------------------------------------------------------
2143
+ # Process MakerNote trailer written by Leica S2
2144
+ # Inputs: 0) ExifTool object ref, 1) new absolute position of Leica trailer when writing
2145
+ # Returns: On success: 1 when reading, directory data when writing; othewise undef
2146
+ # Notes:
2147
+ # - may be called twice for a file if the first call doesn't succeed
2148
+ # - must leave RAF position unchanged
2149
+ # - uses information from LeicaTrailer member:
2150
+ # TagInfo = tag info ref for MakerNote SubDirectory
2151
+ # Offset/Size = value offset/size from MakerNote IFD
2152
+ # TrailStart/TrailLen = actual JPEG trailer position/size (2nd call only)
2153
+ # - deletes LeicaTrailer member and sets LeicaTrailerPos when successful
2154
+ sub ProcessLeicaTrailer($;$)
2155
+ {
2156
+ my ($et, $newPos) = @_;
2157
+ my $trail = $$et{LeicaTrailer};
2158
+ my $raf = $$et{RAF};
2159
+ my $trailPos = $$trail{TrailPos};
2160
+ my $pos = $trailPos || $$trail{Offset};
2161
+ my $len = $$trail{TrailLen} || $$trail{Size};
2162
+ my ($buff, $result, %tagPtr);
2163
+
2164
+ delete $$et{LeicaTrailer} if $trailPos; # done after this
2165
+ unless ($len > 0) {
2166
+ $et->Warn('Missing Leica MakerNote trailer', 1) if $trailPos;
2167
+ delete $$et{LeicaTrailer};
2168
+ return undef;
2169
+ }
2170
+ my $oldPos = $raf->Tell();
2171
+ my $ok = ($raf->Seek($pos, 0) and $raf->Read($buff, $len) == $len);
2172
+ $raf->Seek($oldPos, 0);
2173
+ unless ($ok) {
2174
+ $et->Warn('Error reading Leica MakerNote trailer', 1) if $trailPos;
2175
+ return undef;
2176
+ }
2177
+ # look for Leica MakerNote header (should be at start of
2178
+ # trailer, but allow up to 256 bytes of garbage just in case)
2179
+ if ($buff !~ /^(.{0,256})LEICA\0..../sg) {
2180
+ my $what = $trailPos ? 'trailer' : 'offset';
2181
+ $et->Warn("Invalid Leica MakerNote $what", 1);
2182
+ return undef;
2183
+ }
2184
+ my $junk = $1;
2185
+ my $start = pos($buff) - 10;
2186
+ if ($start and not $trailPos) {
2187
+ $et->Warn('Invalid Leica MakerNote offset', 1);
2188
+ return undef;
2189
+ }
2190
+ #
2191
+ # all checks passed -- go ahead and process the trailer now
2192
+ #
2193
+ my $hdrLen = 8;
2194
+ my $dirStart = $start + $hdrLen;
2195
+ my $tagInfo = $$trail{TagInfo};
2196
+ if ($$et{HTML_DUMP}) {
2197
+ my $name = $$tagInfo{Name};
2198
+ $et->HDump($pos+$start, $len-$start, "$name value", 'Leica MakerNote trailer', 4);
2199
+ $et->HDump($pos+$start, $hdrLen, "MakerNotes header", $name);
2200
+ } elsif ($et->Options('Verbose')) {
2201
+ my $where = sprintf('at offset 0x%x', $pos);
2202
+ $et->VPrint(0, "Leica MakerNote trailer ($len bytes $where):\n");
2203
+ }
2204
+ # delete LeicaTrailer member so we don't try to process it again
2205
+ delete $$et{LeicaTrailer};
2206
+ $$et{LeicaTrailerPos} = $pos + $start; # return actual start position of Leica trailer
2207
+
2208
+ my $oldOrder = GetByteOrder();
2209
+ my $num = Get16u(\$buff, $dirStart); # get entry count
2210
+ ToggleByteOrder() if ($num>>8) > ($num&0xff); # set byte order
2211
+
2212
+ # use specialized algorithm to automatically fix offsets
2213
+ my $valStart = $dirStart + 2 + 12 * $num + 4;
2214
+ my $fix = 0;
2215
+ if ($valStart < $len) {
2216
+ my $valBlock = Image::ExifTool::MakerNotes::GetValueBlocks(\$buff, $dirStart, \%tagPtr);
2217
+ # find the minimum offset (excluding the PreviewImage tag 0x300 and 0x301)
2218
+ my $minPtr;
2219
+ foreach (keys %tagPtr) {
2220
+ my $ptr = $tagPtr{$_};
2221
+ next if $_ == 0x300 or $_ == 0x301 or not $ptr or $ptr == 0xffffffff;
2222
+ $minPtr = $ptr if not defined $minPtr or $minPtr > $ptr;
2223
+ }
2224
+ if ($minPtr) {
2225
+ my $diff = $minPtr - ($valStart + $pos);
2226
+ pos($buff) = $valStart;
2227
+ my $expect;
2228
+ if ($$et{Model} eq 'S2') {
2229
+ # scan value data for the first non-zero byte
2230
+ if ($buff =~ /[^\0]/g) {
2231
+ my $n = pos($buff) - 1 - $valStart; # number of zero bytes
2232
+ # S2 writes 282 bytes of zeros, exiftool writes none
2233
+ $expect = $n >= 282 ? 282 : 0;
2234
+ }
2235
+ } else { # M (Type 240)
2236
+ # scan for the lens type (M writes 114 bytes of garbage first)
2237
+ if ($buff =~ /\G.{114}([\x20-\x7f]*\0*)/sg and length($1) >= 50) {
2238
+ $expect = 114;
2239
+ }
2240
+ }
2241
+ my $fixBase = $et->Options('FixBase');
2242
+ if (not defined $expect) {
2243
+ $et->Warn('Unrecognized Leica trailer structure');
2244
+ } elsif ($diff != $expect or defined $fixBase) {
2245
+ $fix = $expect - $diff;
2246
+ if (defined $fixBase) {
2247
+ $fix = $fixBase if $fixBase ne '';
2248
+ $et->Warn("Adjusted MakerNotes base by $fix",1);
2249
+ } else {
2250
+ $et->Warn("Possibly incorrect maker notes offsets (fixed by $fix)",1);
2251
+ }
2252
+ }
2253
+ }
2254
+ }
2255
+ # generate dirInfo for Leica MakerNote directory
2256
+ my %dirInfo = (
2257
+ Name => $$tagInfo{Name},
2258
+ Base => $fix,
2259
+ DataPt => \$buff,
2260
+ DataPos => $pos - $fix,
2261
+ DataLen => $len,
2262
+ DirStart => $dirStart,
2263
+ DirLen => $len - $dirStart,
2264
+ DirName => 'MakerNotes',
2265
+ Parent => 'ExifIFD',
2266
+ TagInfo => $tagInfo,
2267
+ );
2268
+ my $tagTablePtr = GetTagTable($$tagInfo{SubDirectory}{TagTable});
2269
+ if ($newPos) { # are we writing?
2270
+ if ($$et{Model} ne 'S2') {
2271
+ $et->Warn('Leica MakerNote trailer too messed up to edit. Copying as a block', 1);
2272
+ return $buff;
2273
+ }
2274
+ # set position of new MakerNote IFD (+ 8 for Leica MakerNote header)
2275
+ $dirInfo{NewDataPos} = $newPos + $start + 8;
2276
+ $result = $et->WriteDirectory(\%dirInfo, $tagTablePtr);
2277
+ # write preview image last if necessary and fix up the preview offsets
2278
+ my $previewInfo = $$et{PREVIEW_INFO};
2279
+ delete $$et{PREVIEW_INFO};
2280
+ if ($result) {
2281
+ if ($previewInfo) {
2282
+ my $fixup = $previewInfo->{Fixup};
2283
+ # set preview offset (relative to start of makernotes, + 8 for makernote header)
2284
+ $fixup->SetMarkerPointers(\$result, 'PreviewImage', length($result) + 8);
2285
+ $result .= $$previewInfo{Data};
2286
+ }
2287
+ return $junk . substr($buff, $start, $hdrLen) . $result;
2288
+ }
2289
+ } else {
2290
+ # extract information
2291
+ $result = $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
2292
+ # also extract as a block if necessary
2293
+ if ($et->Options('MakerNotes') or
2294
+ $$et{REQ_TAG_LOOKUP}{lc($$tagInfo{Name})})
2295
+ {
2296
+ # makernote header must be included in RebuildMakerNotes call
2297
+ $dirInfo{DirStart} -= 8;
2298
+ $dirInfo{DirLen} += 8;
2299
+ $$et{MAKER_NOTE_BYTE_ORDER} = GetByteOrder();
2300
+ # rebuild maker notes (creates $$et{MAKER_NOTE_FIXUP})
2301
+ my $val = Image::ExifTool::Exif::RebuildMakerNotes($et, $tagTablePtr, \%dirInfo);
2302
+ unless (defined $val) {
2303
+ $et->Warn('Error rebuilding maker notes (may be corrupt)') if $len > 4;
2304
+ $val = $buff,
2305
+ }
2306
+ my $key = $et->FoundTag($tagInfo, $val);
2307
+ $et->SetGroup($key, 'ExifIFD');
2308
+ }
2309
+ }
2310
+ SetByteOrder($oldOrder);
2311
+ return $result;
2312
+ }
2313
+
2314
+ 1; # end
2315
+
2316
+ __END__
2317
+
2318
+ =head1 NAME
2319
+
2320
+ Image::ExifTool::Panasonic - Panasonic/Leica maker notes tags
2321
+
2322
+ =head1 SYNOPSIS
2323
+
2324
+ This module is loaded automatically by Image::ExifTool when required.
2325
+
2326
+ =head1 DESCRIPTION
2327
+
2328
+ This module contains definitions required by Image::ExifTool to interpret
2329
+ Panasonic and Leica maker notes in EXIF information.
2330
+
2331
+ =head1 AUTHOR
2332
+
2333
+ Copyright 2003-2015, Phil Harvey (phil at owl.phy.queensu.ca)
2334
+
2335
+ This library is free software; you can redistribute it and/or modify it
2336
+ under the same terms as Perl itself.
2337
+
2338
+ =head1 REFERENCES
2339
+
2340
+ =over 4
2341
+
2342
+ =item L<http://www.compton.nu/panasonic.html>
2343
+
2344
+ =item L<http://johnst.org/sw/exiftags/>
2345
+
2346
+ =item L<http://homepage3.nifty.com/kamisaka/makernote/makernote_pana.htm>
2347
+
2348
+ =item L<http://bretteville.com/pdfs/M8Metadata_v2.pdf>
2349
+
2350
+ =item L<http://www.digital-leica.com/lens_codes/index.html>
2351
+
2352
+ =item (...plus lots of testing with store demos and my wife's DMC-FS7!)
2353
+
2354
+ =back
2355
+
2356
+ =head1 ACKNOWLEDGEMENTS
2357
+
2358
+ Thanks to Tels, Marcel Coenen, Jens Duttke, Joerg, Michael Byczkowski, Carl
2359
+ Bretteville, Zdenek Mihula and Olaf Ulrich for their contributions.
2360
+
2361
+ =head1 SEE ALSO
2362
+
2363
+ L<Image::ExifTool::TagNames/Panasonic Tags>,
2364
+ L<Image::ExifTool(3pm)|Image::ExifTool>
2365
+
2366
+ =cut