exiftool_vendored 9.78.0 → 9.99.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

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