mini_exiftool_vendored 8.9.7.v2 → 9.2.7.v1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1023) hide show
  1. checksums.yaml +7 -0
  2. data/lib/mini_exiftool_vendored.rb +1 -1
  3. data/lib/mini_exiftool_vendored/version.rb +2 -2
  4. data/mini_exiftool_vendored.gemspec +1 -1
  5. data/vendor/Image-ExifTool-9.27/Changes +6162 -0
  6. data/vendor/Image-ExifTool-9.27/MANIFEST +858 -0
  7. data/vendor/Image-ExifTool-9.27/META.yml +26 -0
  8. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/Makefile.PL +0 -0
  9. data/vendor/Image-ExifTool-9.27/README +227 -0
  10. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/exif2iptc.args +0 -0
  11. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/exif2xmp.args +0 -0
  12. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/gps2xmp.args +0 -0
  13. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/iptc2exif.args +0 -0
  14. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/iptc2xmp.args +0 -0
  15. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/iptcCore.args +0 -0
  16. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/pdf2xmp.args +0 -0
  17. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/xmp2exif.args +0 -0
  18. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/xmp2gps.args +0 -0
  19. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/xmp2iptc.args +0 -0
  20. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/xmp2pdf.args +0 -0
  21. data/vendor/Image-ExifTool-9.27/config_files/ExifTool_config +299 -0
  22. data/vendor/Image-ExifTool-9.27/config_files/convert_regions.config +81 -0
  23. data/vendor/Image-ExifTool-9.27/exiftool +5655 -0
  24. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/fmt_files}/gpx.fmt +0 -0
  25. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/fmt_files}/gpx_wpt.fmt +0 -0
  26. data/vendor/Image-ExifTool-9.27/fmt_files/kml.fmt +53 -0
  27. data/vendor/Image-ExifTool-9.27/html/ExifTool.html +1951 -0
  28. data/vendor/Image-ExifTool-9.27/html/MIE1.1-20070121.pdf +0 -0
  29. data/vendor/Image-ExifTool-9.27/html/Shift.html +173 -0
  30. data/vendor/Image-ExifTool-9.27/html/TagNames/AFCP.html +49 -0
  31. data/vendor/Image-ExifTool-9.27/html/TagNames/AIFF.html +146 -0
  32. data/vendor/Image-ExifTool-9.27/html/TagNames/APE.html +149 -0
  33. data/vendor/Image-ExifTool-9.27/html/TagNames/APP12.html +188 -0
  34. data/vendor/Image-ExifTool-9.27/html/TagNames/ASF.html +1075 -0
  35. data/vendor/Image-ExifTool-9.27/html/TagNames/BMP.html +110 -0
  36. data/vendor/Image-ExifTool-9.27/html/TagNames/Canon.html +8021 -0
  37. data/vendor/Image-ExifTool-9.27/html/TagNames/CanonCustom.html +2044 -0
  38. data/vendor/Image-ExifTool-9.27/html/TagNames/CanonRaw.html +561 -0
  39. data/vendor/Image-ExifTool-9.27/html/TagNames/CanonVRD.html +1222 -0
  40. data/vendor/Image-ExifTool-9.27/html/TagNames/Casio.html +1569 -0
  41. data/vendor/Image-ExifTool-9.27/html/TagNames/Composite.html +659 -0
  42. data/vendor/Image-ExifTool-9.27/html/TagNames/DICOM.html +15762 -0
  43. data/vendor/Image-ExifTool-9.27/html/TagNames/DNG.html +273 -0
  44. data/vendor/Image-ExifTool-9.27/html/TagNames/DV.html +75 -0
  45. data/vendor/Image-ExifTool-9.27/html/TagNames/DarwinCore.html +1445 -0
  46. data/vendor/Image-ExifTool-9.27/html/TagNames/DjVu.html +312 -0
  47. data/vendor/Image-ExifTool-9.27/html/TagNames/EXE.html +697 -0
  48. data/vendor/Image-ExifTool-9.27/html/TagNames/EXIF.html +3244 -0
  49. data/vendor/Image-ExifTool-9.27/html/TagNames/Extra.html +300 -0
  50. data/vendor/Image-ExifTool-9.27/html/TagNames/FLAC.html +183 -0
  51. data/vendor/Image-ExifTool-9.27/html/TagNames/FLIR.html +615 -0
  52. data/vendor/Image-ExifTool-9.27/html/TagNames/Flash.html +419 -0
  53. data/vendor/Image-ExifTool-9.27/html/TagNames/FlashPix.html +1435 -0
  54. data/vendor/Image-ExifTool-9.27/html/TagNames/Font.html +485 -0
  55. data/vendor/Image-ExifTool-9.27/html/TagNames/FotoStation.html +103 -0
  56. data/vendor/Image-ExifTool-9.27/html/TagNames/FujiFilm.html +636 -0
  57. data/vendor/Image-ExifTool-9.27/html/TagNames/GE.html +40 -0
  58. data/vendor/Image-ExifTool-9.27/html/TagNames/GIF.html +116 -0
  59. data/vendor/Image-ExifTool-9.27/html/TagNames/GIMP.html +140 -0
  60. data/vendor/Image-ExifTool-9.27/html/TagNames/GPS.html +221 -0
  61. data/vendor/Image-ExifTool-9.27/html/TagNames/GeoTiff.html +2177 -0
  62. data/vendor/Image-ExifTool-9.27/html/TagNames/H264.html +387 -0
  63. data/vendor/Image-ExifTool-9.27/html/TagNames/HP.html +155 -0
  64. data/vendor/Image-ExifTool-9.27/html/TagNames/HTML.html +666 -0
  65. data/vendor/Image-ExifTool-9.27/html/TagNames/ICC_Profile.html +710 -0
  66. data/vendor/Image-ExifTool-9.27/html/TagNames/ID3.html +1429 -0
  67. data/vendor/Image-ExifTool-9.27/html/TagNames/IPTC.html +895 -0
  68. data/vendor/Image-ExifTool-9.27/html/TagNames/ITC.html +90 -0
  69. data/vendor/Image-ExifTool-9.27/html/TagNames/JFIF.html +61 -0
  70. data/vendor/Image-ExifTool-9.27/html/TagNames/JPEG.html +523 -0
  71. data/vendor/Image-ExifTool-9.27/html/TagNames/JVC.html +56 -0
  72. data/vendor/Image-ExifTool-9.27/html/TagNames/Jpeg2000.html +464 -0
  73. data/vendor/Image-ExifTool-9.27/html/TagNames/Kodak.html +1759 -0
  74. data/vendor/Image-ExifTool-9.27/html/TagNames/KyoceraRaw.html +92 -0
  75. data/vendor/Image-ExifTool-9.27/html/TagNames/LNK.html +478 -0
  76. data/vendor/Image-ExifTool-9.27/html/TagNames/Leaf.html +870 -0
  77. data/vendor/Image-ExifTool-9.27/html/TagNames/M2TS.html +133 -0
  78. data/vendor/Image-ExifTool-9.27/html/TagNames/MIE.html +1026 -0
  79. data/vendor/Image-ExifTool-9.27/html/TagNames/MIFF.html +196 -0
  80. data/vendor/Image-ExifTool-9.27/html/TagNames/MNG.html +847 -0
  81. data/vendor/Image-ExifTool-9.27/html/TagNames/MPC.html +97 -0
  82. data/vendor/Image-ExifTool-9.27/html/TagNames/MPEG.html +249 -0
  83. data/vendor/Image-ExifTool-9.27/html/TagNames/MPF.html +199 -0
  84. data/vendor/Image-ExifTool-9.27/html/TagNames/MWG.html +519 -0
  85. data/vendor/Image-ExifTool-9.27/html/TagNames/MXF.html +6673 -0
  86. data/vendor/Image-ExifTool-9.27/html/TagNames/Matroska.html +1069 -0
  87. data/vendor/Image-ExifTool-9.27/html/TagNames/Microsoft.html +2066 -0
  88. data/vendor/Image-ExifTool-9.27/html/TagNames/Minolta.html +2550 -0
  89. data/vendor/Image-ExifTool-9.27/html/TagNames/MinoltaRaw.html +326 -0
  90. data/vendor/Image-ExifTool-9.27/html/TagNames/Nikon.html +4453 -0
  91. data/vendor/Image-ExifTool-9.27/html/TagNames/NikonCapture.html +776 -0
  92. data/vendor/Image-ExifTool-9.27/html/TagNames/NikonCustom.html +3835 -0
  93. data/vendor/Image-ExifTool-9.27/html/TagNames/OOXML.html +280 -0
  94. data/vendor/Image-ExifTool-9.27/html/TagNames/Ogg.html +44 -0
  95. data/vendor/Image-ExifTool-9.27/html/TagNames/Olympus.html +3331 -0
  96. data/vendor/Image-ExifTool-9.27/html/TagNames/OpenEXR.html +222 -0
  97. data/vendor/Image-ExifTool-9.27/html/TagNames/PDF.html +745 -0
  98. data/vendor/Image-ExifTool-9.27/html/TagNames/PGF.html +80 -0
  99. data/vendor/Image-ExifTool-9.27/html/TagNames/PICT.html +753 -0
  100. data/vendor/Image-ExifTool-9.27/html/TagNames/PLIST.html +86 -0
  101. data/vendor/Image-ExifTool-9.27/html/TagNames/PNG.html +515 -0
  102. data/vendor/Image-ExifTool-9.27/html/TagNames/PSP.html +160 -0
  103. data/vendor/Image-ExifTool-9.27/html/TagNames/Panasonic.html +1359 -0
  104. data/vendor/Image-ExifTool-9.27/html/TagNames/PanasonicRaw.html +214 -0
  105. data/vendor/Image-ExifTool-9.27/html/TagNames/Pentax.html +4329 -0
  106. data/vendor/Image-ExifTool-9.27/html/TagNames/PhaseOne.html +258 -0
  107. data/vendor/Image-ExifTool-9.27/html/TagNames/PhotoCD.html +402 -0
  108. data/vendor/Image-ExifTool-9.27/html/TagNames/PhotoMechanic.html +196 -0
  109. data/vendor/Image-ExifTool-9.27/html/TagNames/Photoshop.html +460 -0
  110. data/vendor/Image-ExifTool-9.27/html/TagNames/PostScript.html +125 -0
  111. data/vendor/Image-ExifTool-9.27/html/TagNames/PrintIM.html +31 -0
  112. data/vendor/Image-ExifTool-9.27/html/TagNames/Qualcomm.html +4778 -0
  113. data/vendor/Image-ExifTool-9.27/html/TagNames/QuickTime.html +2967 -0
  114. data/vendor/Image-ExifTool-9.27/html/TagNames/RIFF.html +1164 -0
  115. data/vendor/Image-ExifTool-9.27/html/TagNames/RSRC.html +74 -0
  116. data/vendor/Image-ExifTool-9.27/html/TagNames/RTF.html +150 -0
  117. data/vendor/Image-ExifTool-9.27/html/TagNames/Radiance.html +87 -0
  118. data/vendor/Image-ExifTool-9.27/html/TagNames/Rawzor.html +45 -0
  119. data/vendor/Image-ExifTool-9.27/html/TagNames/Real.html +780 -0
  120. data/vendor/Image-ExifTool-9.27/html/TagNames/Reconyx.html +132 -0
  121. data/vendor/Image-ExifTool-9.27/html/TagNames/Ricoh.html +456 -0
  122. data/vendor/Image-ExifTool-9.27/html/TagNames/Samsung.html +377 -0
  123. data/vendor/Image-ExifTool-9.27/html/TagNames/Sanyo.html +366 -0
  124. data/vendor/Image-ExifTool-9.27/html/TagNames/Shortcuts.html +237 -0
  125. data/vendor/Image-ExifTool-9.27/html/TagNames/Sigma.html +372 -0
  126. data/vendor/Image-ExifTool-9.27/html/TagNames/SigmaRaw.html +403 -0
  127. data/vendor/Image-ExifTool-9.27/html/TagNames/Sony.html +4052 -0
  128. data/vendor/Image-ExifTool-9.27/html/TagNames/SonyIDC.html +267 -0
  129. data/vendor/Image-ExifTool-9.27/html/TagNames/Stim.html +200 -0
  130. data/vendor/Image-ExifTool-9.27/html/TagNames/Theora.html +102 -0
  131. data/vendor/Image-ExifTool-9.27/html/TagNames/Unknown.html +31 -0
  132. data/vendor/Image-ExifTool-9.27/html/TagNames/Vorbis.html +228 -0
  133. data/vendor/Image-ExifTool-9.27/html/TagNames/XMP.html +7188 -0
  134. data/vendor/Image-ExifTool-9.27/html/TagNames/ZIP.html +204 -0
  135. data/vendor/Image-ExifTool-9.27/html/TagNames/iWork.html +49 -0
  136. data/vendor/Image-ExifTool-9.27/html/TagNames/index.html +192 -0
  137. data/vendor/Image-ExifTool-9.27/html/TagNames/style.css +31 -0
  138. data/vendor/Image-ExifTool-9.27/html/ancient_history.html +6564 -0
  139. data/vendor/Image-ExifTool-9.27/html/canon_raw.html +366 -0
  140. data/vendor/Image-ExifTool-9.27/html/commentary.html +319 -0
  141. data/vendor/Image-ExifTool-9.27/html/config.html +312 -0
  142. data/vendor/Image-ExifTool-9.27/html/data_members.html +264 -0
  143. data/vendor/Image-ExifTool-9.27/html/exiftool_pod.html +2325 -0
  144. data/vendor/Image-ExifTool-9.27/html/faq.html +1427 -0
  145. data/vendor/Image-ExifTool-9.27/html/filename.html +281 -0
  146. data/vendor/Image-ExifTool-9.27/html/geotag.html +642 -0
  147. data/vendor/Image-ExifTool-9.27/html/history.html +433 -0
  148. data/vendor/Image-ExifTool-9.27/html/htmldump.html +732 -0
  149. data/vendor/Image-ExifTool-9.27/html/idiosyncracies.html +251 -0
  150. data/vendor/Image-ExifTool-9.27/html/index.html +1266 -0
  151. data/vendor/Image-ExifTool-9.27/html/install.html +239 -0
  152. data/vendor/Image-ExifTool-9.27/html/metafiles.html +266 -0
  153. data/vendor/Image-ExifTool-9.27/html/overview.png +0 -0
  154. data/vendor/Image-ExifTool-9.27/html/standards.html +277 -0
  155. data/vendor/Image-ExifTool-9.27/html/struct.html +342 -0
  156. data/vendor/Image-ExifTool-9.27/html/style.css +31 -0
  157. data/vendor/Image-ExifTool-9.27/html/under.html +120 -0
  158. data/vendor/Image-ExifTool-9.27/html/verbose.html +195 -0
  159. data/vendor/Image-ExifTool-9.27/html/writing.html +239 -0
  160. data/vendor/Image-ExifTool-9.27/lib/File/RandomAccess.pm +378 -0
  161. data/vendor/Image-ExifTool-9.27/lib/File/RandomAccess.pod +231 -0
  162. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool.pm +6811 -0
  163. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool.pod +2353 -0
  164. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/AES.pm +501 -0
  165. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/AFCP.pm +280 -0
  166. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/AIFF.pm +271 -0
  167. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/APE.pm +262 -0
  168. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/APP12.pm +322 -0
  169. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ASF.pm +871 -0
  170. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/BMP.pm +179 -0
  171. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/BZZ.pm +472 -0
  172. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/BigTIFF.pm +282 -0
  173. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/BuildTagLookup.pm +2391 -0
  174. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Canon.pm +7736 -0
  175. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/CanonCustom.pm +2523 -0
  176. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/CanonRaw.pm +931 -0
  177. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/CanonVRD.pm +1481 -0
  178. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/CaptureOne.pm +235 -0
  179. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Casio.pm +2013 -0
  180. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Charset.pm +396 -0
  181. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Arabic.pm +0 -0
  182. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Baltic.pm +0 -0
  183. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Cyrillic.pm +0 -0
  184. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Greek.pm +0 -0
  185. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Hebrew.pm +0 -0
  186. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/JIS.pm +0 -0
  187. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Latin.pm +0 -0
  188. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Latin2.pm +0 -0
  189. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacArabic.pm +0 -0
  190. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacChineseCN.pm +0 -0
  191. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacChineseTW.pm +0 -0
  192. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacCroatian.pm +0 -0
  193. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacCyrillic.pm +0 -0
  194. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacGreek.pm +0 -0
  195. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacHebrew.pm +0 -0
  196. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacIceland.pm +0 -0
  197. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacJapanese.pm +0 -0
  198. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacKorean.pm +0 -0
  199. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacLatin2.pm +0 -0
  200. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacRSymbol.pm +0 -0
  201. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacRoman.pm +0 -0
  202. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacRomanian.pm +0 -0
  203. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacThai.pm +0 -0
  204. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacTurkish.pm +0 -0
  205. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/PDFDoc.pm +0 -0
  206. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/ShiftJIS.pm +0 -0
  207. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Symbol.pm +0 -0
  208. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Thai.pm +0 -0
  209. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Turkish.pm +0 -0
  210. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Vietnam.pm +0 -0
  211. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DICOM.pm +3835 -0
  212. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DNG.pm +835 -0
  213. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DV.pm +319 -0
  214. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DarwinCore.pm +317 -0
  215. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DjVu.pm +373 -0
  216. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/EXE.pm +1228 -0
  217. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Exif.pm +4526 -0
  218. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FLAC.pm +296 -0
  219. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FLIR.pm +672 -0
  220. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Fixup.pm +354 -0
  221. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Flash.pm +755 -0
  222. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FlashPix.pm +1882 -0
  223. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Font.pm +643 -0
  224. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FotoStation.pm +258 -0
  225. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FujiFilm.pm +1019 -0
  226. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GE.pm +80 -0
  227. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GIF.pm +542 -0
  228. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GIMP.pm +258 -0
  229. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GPS.pm +511 -0
  230. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GeoTiff.pm +2187 -0
  231. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Geotag.pm +1173 -0
  232. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/H264.pm +1097 -0
  233. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/HP.pm +262 -0
  234. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/HTML.pm +576 -0
  235. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/HtmlDump.pm +895 -0
  236. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ICC_Profile.pm +999 -0
  237. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ID3.pm +1486 -0
  238. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/IPTC.pm +1244 -0
  239. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ITC.pm +215 -0
  240. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Import.pm +308 -0
  241. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/InDesign.pm +277 -0
  242. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/JPEG.pm +588 -0
  243. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/JPEGDigest.pm +2511 -0
  244. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/JVC.pm +130 -0
  245. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Jpeg2000.pm +881 -0
  246. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Kodak.pm +2014 -0
  247. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/KyoceraRaw.pm +173 -0
  248. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/LNK.pm +723 -0
  249. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/cs.pm +1586 -0
  250. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/de.pm +7356 -0
  251. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/en_ca.pm +557 -0
  252. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/en_gb.pm +572 -0
  253. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/es.pm +4016 -0
  254. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/fi.pm +2856 -0
  255. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/fr.pm +4720 -0
  256. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/it.pm +7917 -0
  257. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/ja.pm +5815 -0
  258. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/ko.pm +2332 -0
  259. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/nl.pm +3220 -0
  260. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/pl.pm +1140 -0
  261. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/ru.pm +769 -0
  262. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/sv.pm +639 -0
  263. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/tr.pm +544 -0
  264. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/zh_cn.pm +1329 -0
  265. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/zh_tw.pm +802 -0
  266. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Leaf.pm +515 -0
  267. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/M2TS.pm +729 -0
  268. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MIE.pm +2561 -0
  269. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MIEUnits.pod +377 -0
  270. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MIFF.pm +279 -0
  271. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MNG.pm +684 -0
  272. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MPC.pm +156 -0
  273. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MPEG.pm +736 -0
  274. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MPF.pm +289 -0
  275. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MWG.pm +736 -0
  276. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MXF.pm +3032 -0
  277. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MakerNotes.pm +1569 -0
  278. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Matroska.pm +891 -0
  279. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Microsoft.pm +879 -0
  280. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Minolta.pm +2823 -0
  281. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MinoltaRaw.pm +534 -0
  282. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Nikon.pm +6105 -0
  283. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/NikonCapture.pm +911 -0
  284. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/NikonCustom.pm +4405 -0
  285. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/OOXML.pm +409 -0
  286. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Ogg.pm +237 -0
  287. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Olympus.pm +3540 -0
  288. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/OpenEXR.pm +324 -0
  289. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PDF.pm +2327 -0
  290. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PGF.pm +143 -0
  291. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PICT.pm +1260 -0
  292. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PLIST.pm +449 -0
  293. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PNG.pm +1100 -0
  294. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PPM.pm +169 -0
  295. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PSP.pm +305 -0
  296. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Panasonic.pm +1921 -0
  297. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PanasonicRaw.pm +535 -0
  298. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Pentax.pm +5486 -0
  299. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PhaseOne.pm +557 -0
  300. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PhotoCD.pm +507 -0
  301. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PhotoMechanic.pm +256 -0
  302. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Photoshop.pm +597 -0
  303. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PostScript.pm +693 -0
  304. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PrintIM.pm +125 -0
  305. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Qualcomm.pm +1344 -0
  306. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/QuickTime.pm +3316 -0
  307. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/README +943 -0
  308. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/RIFF.pm +1322 -0
  309. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/RSRC.pm +241 -0
  310. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/RTF.pm +383 -0
  311. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Radiance.pm +144 -0
  312. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Rawzor.pm +190 -0
  313. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Real.pm +736 -0
  314. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Reconyx.pm +190 -0
  315. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Ricoh.pm +740 -0
  316. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Samsung.pm +769 -0
  317. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Sanyo.pm +439 -0
  318. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Shift.pl +594 -0
  319. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Shortcuts.pm +291 -0
  320. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Sigma.pm +574 -0
  321. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/SigmaRaw.pm +649 -0
  322. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Sony.pm +5388 -0
  323. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/SonyIDC.pm +330 -0
  324. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Stim.pm +196 -0
  325. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/TagInfoXML.pm +792 -0
  326. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/TagLookup.pm +7911 -0
  327. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/TagNames.pod +25645 -0
  328. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Theora.pm +145 -0
  329. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Unknown.pm +66 -0
  330. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Vorbis.pm +237 -0
  331. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WriteCanonRaw.pl +637 -0
  332. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WriteExif.pl +3674 -0
  333. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WriteIPTC.pl +702 -0
  334. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WritePDF.pl +759 -0
  335. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WritePNG.pl +330 -0
  336. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WritePhotoshop.pl +266 -0
  337. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WritePostScript.pl +777 -0
  338. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WriteXMP.pl +1318 -0
  339. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Writer.pl +5755 -0
  340. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/XMP.pm +3535 -0
  341. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/XMP2.pl +1298 -0
  342. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/XMPStruct.pl +813 -0
  343. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ZIP.pm +623 -0
  344. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/iWork.pm +223 -0
  345. data/vendor/Image-ExifTool-9.27/perl-Image-ExifTool.spec +104 -0
  346. data/vendor/Image-ExifTool-9.27/t/AFCP.t +44 -0
  347. data/vendor/Image-ExifTool-9.27/t/AFCP_2.out +37 -0
  348. data/vendor/Image-ExifTool-9.27/t/AFCP_3.out +20 -0
  349. data/vendor/Image-ExifTool-9.27/t/AIFF.t +28 -0
  350. data/vendor/Image-ExifTool-9.27/t/AIFF_2.out +31 -0
  351. data/vendor/Image-ExifTool-9.27/t/APE.t +38 -0
  352. data/vendor/Image-ExifTool-9.27/t/APE_2.out +28 -0
  353. data/vendor/Image-ExifTool-9.27/t/APE_3.out +57 -0
  354. data/vendor/Image-ExifTool-9.27/t/ASF.t +28 -0
  355. data/vendor/Image-ExifTool-9.27/t/ASF_2.out +48 -0
  356. data/vendor/Image-ExifTool-9.27/t/BMP.t +28 -0
  357. data/vendor/Image-ExifTool-9.27/t/BMP_2.out +21 -0
  358. data/vendor/Image-ExifTool-9.27/t/BigTIFF.t +28 -0
  359. data/vendor/Image-ExifTool-9.27/t/BigTIFF_2.out +19 -0
  360. data/vendor/Image-ExifTool-9.27/t/Canon.t +41 -0
  361. data/vendor/Image-ExifTool-9.27/t/CanonRaw.t +126 -0
  362. data/vendor/Image-ExifTool-9.27/t/CanonRaw_2.out +165 -0
  363. data/vendor/Image-ExifTool-9.27/t/CanonRaw_4.out +214 -0
  364. data/vendor/Image-ExifTool-9.27/t/CanonRaw_5.out +207 -0
  365. data/vendor/Image-ExifTool-9.27/t/CanonRaw_6.out +231 -0
  366. data/vendor/Image-ExifTool-9.27/t/CanonRaw_7.out +246 -0
  367. data/vendor/Image-ExifTool-9.27/t/CanonVRD.t +129 -0
  368. data/vendor/Image-ExifTool-9.27/t/CanonVRD_11.out +118 -0
  369. data/vendor/Image-ExifTool-9.27/t/CanonVRD_12.out +12 -0
  370. data/vendor/Image-ExifTool-9.27/t/CanonVRD_2.out +116 -0
  371. data/vendor/Image-ExifTool-9.27/t/CanonVRD_3.out +116 -0
  372. data/vendor/Image-ExifTool-9.27/t/CanonVRD_4.out +2 -0
  373. data/vendor/Image-ExifTool-9.27/t/CanonVRD_5.out +3 -0
  374. data/vendor/Image-ExifTool-9.27/t/CanonVRD_6.out +3 -0
  375. data/vendor/Image-ExifTool-9.27/t/CanonVRD_7.out +2 -0
  376. data/vendor/Image-ExifTool-9.27/t/CanonVRD_8.out +2 -0
  377. data/vendor/Image-ExifTool-9.27/t/CanonVRD_9.out +1 -0
  378. data/vendor/Image-ExifTool-9.27/t/Canon_2.out +350 -0
  379. data/vendor/Image-ExifTool-9.27/t/Canon_3.out +3 -0
  380. data/vendor/Image-ExifTool-9.27/t/Casio.t +54 -0
  381. data/vendor/Image-ExifTool-9.27/t/Casio_2.out +70 -0
  382. data/vendor/Image-ExifTool-9.27/t/Casio_3.out +100 -0
  383. data/vendor/Image-ExifTool-9.27/t/Casio_4.out +26 -0
  384. data/vendor/Image-ExifTool-9.27/t/Casio_5.out +78 -0
  385. data/vendor/Image-ExifTool-9.27/t/Casio_6.out +115 -0
  386. data/vendor/Image-ExifTool-9.27/t/DICOM.t +28 -0
  387. data/vendor/Image-ExifTool-9.27/t/DICOM_2.out +108 -0
  388. data/vendor/Image-ExifTool-9.27/t/DNG.t +39 -0
  389. data/vendor/Image-ExifTool-9.27/t/DNG_2.out +326 -0
  390. data/vendor/Image-ExifTool-9.27/t/DNG_3.out +4 -0
  391. data/vendor/Image-ExifTool-9.27/t/DV.t +27 -0
  392. data/vendor/Image-ExifTool-9.27/t/DV_2.out +24 -0
  393. data/vendor/Image-ExifTool-9.27/t/DjVu.t +28 -0
  394. data/vendor/Image-ExifTool-9.27/t/DjVu_2.out +44 -0
  395. data/vendor/Image-ExifTool-9.27/t/EXE.t +31 -0
  396. data/vendor/Image-ExifTool-9.27/t/EXE_2.out +40 -0
  397. data/vendor/Image-ExifTool-9.27/t/EXE_3.out +15 -0
  398. data/vendor/Image-ExifTool-9.27/t/EXE_4.out +14 -0
  399. data/vendor/Image-ExifTool-9.27/t/ExifTool.t +284 -0
  400. data/vendor/Image-ExifTool-9.27/t/ExifTool_16.out +180 -0
  401. data/vendor/Image-ExifTool-9.27/t/ExifTool_17.out +594 -0
  402. data/vendor/Image-ExifTool-9.27/t/ExifTool_2.out +399 -0
  403. data/vendor/Image-ExifTool-9.27/t/ExifTool_20.out +1 -0
  404. data/vendor/Image-ExifTool-9.27/t/ExifTool_21.out +1 -0
  405. data/vendor/Image-ExifTool-9.27/t/ExifTool_22.out +1 -0
  406. data/vendor/Image-ExifTool-9.27/t/ExifTool_23.out +6 -0
  407. data/vendor/Image-ExifTool-9.27/t/ExifTool_24.out +3 -0
  408. data/vendor/Image-ExifTool-9.27/t/ExifTool_25.out +13 -0
  409. data/vendor/Image-ExifTool-9.27/t/ExifTool_26.out +12 -0
  410. data/vendor/Image-ExifTool-9.27/t/ExifTool_3.out +87 -0
  411. data/vendor/Image-ExifTool-9.27/t/ExifTool_4.out +41 -0
  412. data/vendor/Image-ExifTool-9.27/t/ExifTool_5.out +6 -0
  413. data/vendor/Image-ExifTool-9.27/t/ExifTool_6.out +68 -0
  414. data/vendor/Image-ExifTool-9.27/t/ExifTool_7.out +125 -0
  415. data/vendor/Image-ExifTool-9.27/t/ExifTool_8.out +125 -0
  416. data/vendor/Image-ExifTool-9.27/t/ExifTool_9.out +33 -0
  417. data/vendor/Image-ExifTool-9.27/t/FLAC.t +37 -0
  418. data/vendor/Image-ExifTool-9.27/t/FLAC_2.out +25 -0
  419. data/vendor/Image-ExifTool-9.27/t/FLAC_3.out +19 -0
  420. data/vendor/Image-ExifTool-9.27/t/FLIR.t +30 -0
  421. data/vendor/Image-ExifTool-9.27/t/FLIR_2.out +93 -0
  422. data/vendor/Image-ExifTool-9.27/t/FLIR_3.out +47 -0
  423. data/vendor/Image-ExifTool-9.27/t/Flash.t +37 -0
  424. data/vendor/Image-ExifTool-9.27/t/FlashPix.t +30 -0
  425. data/vendor/Image-ExifTool-9.27/t/FlashPix_2.out +48 -0
  426. data/vendor/Image-ExifTool-9.27/t/Flash_2.out +20 -0
  427. data/vendor/Image-ExifTool-9.27/t/Flash_3.out +53 -0
  428. data/vendor/Image-ExifTool-9.27/t/Font.t +30 -0
  429. data/vendor/Image-ExifTool-9.27/t/Font_2.out +23 -0
  430. data/vendor/Image-ExifTool-9.27/t/Font_3.out +35 -0
  431. data/vendor/Image-ExifTool-9.27/t/Font_4.out +26 -0
  432. data/vendor/Image-ExifTool-9.27/t/Font_5.out +26 -0
  433. data/vendor/Image-ExifTool-9.27/t/Font_6.out +36 -0
  434. data/vendor/Image-ExifTool-9.27/t/Font_7.out +36 -0
  435. data/vendor/Image-ExifTool-9.27/t/FotoStation.t +38 -0
  436. data/vendor/Image-ExifTool-9.27/t/FotoStation_2.out +39 -0
  437. data/vendor/Image-ExifTool-9.27/t/FotoStation_3.out +3 -0
  438. data/vendor/Image-ExifTool-9.27/t/FujiFilm.t +78 -0
  439. data/vendor/Image-ExifTool-9.27/t/FujiFilm_2.out +87 -0
  440. data/vendor/Image-ExifTool-9.27/t/FujiFilm_3.out +88 -0
  441. data/vendor/Image-ExifTool-9.27/t/FujiFilm_4.out +117 -0
  442. data/vendor/Image-ExifTool-9.27/t/FujiFilm_5.out +1 -0
  443. data/vendor/Image-ExifTool-9.27/t/GE.t +46 -0
  444. data/vendor/Image-ExifTool-9.27/t/GE_2.out +84 -0
  445. data/vendor/Image-ExifTool-9.27/t/GE_3.out +84 -0
  446. data/vendor/Image-ExifTool-9.27/t/GIF.t +83 -0
  447. data/vendor/Image-ExifTool-9.27/t/GIF_2.out +40 -0
  448. data/vendor/Image-ExifTool-9.27/t/GIF_3.out +41 -0
  449. data/vendor/Image-ExifTool-9.27/t/GIF_4.out +16 -0
  450. data/vendor/Image-ExifTool-9.27/t/GIMP.t +27 -0
  451. data/vendor/Image-ExifTool-9.27/t/GIMP_2.out +63 -0
  452. data/vendor/Image-ExifTool-9.27/t/GPS.t +42 -0
  453. data/vendor/Image-ExifTool-9.27/t/GPS_2.out +94 -0
  454. data/vendor/Image-ExifTool-9.27/t/GPS_3.out +96 -0
  455. data/vendor/Image-ExifTool-9.27/t/GeoTiff.t +36 -0
  456. data/vendor/Image-ExifTool-9.27/t/GeoTiff_2.out +36 -0
  457. data/vendor/Image-ExifTool-9.27/t/GeoTiff_3.out +36 -0
  458. data/vendor/Image-ExifTool-9.27/t/Geotag.t +164 -0
  459. data/vendor/Image-ExifTool-9.27/t/Geotag_2.out +9 -0
  460. data/vendor/Image-ExifTool-9.27/t/Geotag_3.out +6 -0
  461. data/vendor/Image-ExifTool-9.27/t/Geotag_5.out +1 -0
  462. data/vendor/Image-ExifTool-9.27/t/Geotag_6.out +9 -0
  463. data/vendor/Image-ExifTool-9.27/t/Geotag_7.out +53 -0
  464. data/vendor/Image-ExifTool-9.27/t/Geotag_8.out +15 -0
  465. data/vendor/Image-ExifTool-9.27/t/HTML.t +28 -0
  466. data/vendor/Image-ExifTool-9.27/t/HTML_2.out +68 -0
  467. data/vendor/Image-ExifTool-9.27/t/IPTC.t +157 -0
  468. data/vendor/Image-ExifTool-9.27/t/IPTC_2.out +58 -0
  469. data/vendor/Image-ExifTool-9.27/t/IPTC_4.out +56 -0
  470. data/vendor/Image-ExifTool-9.27/t/IPTC_5.out +1 -0
  471. data/vendor/Image-ExifTool-9.27/t/IPTC_6.out +2 -0
  472. data/vendor/Image-ExifTool-9.27/t/IPTC_7.out +1 -0
  473. data/vendor/Image-ExifTool-9.27/t/IPTC_8.out +20 -0
  474. data/vendor/Image-ExifTool-9.27/t/ITC.t +28 -0
  475. data/vendor/Image-ExifTool-9.27/t/ITC_2.out +19 -0
  476. data/vendor/Image-ExifTool-9.27/t/InDesign.t +61 -0
  477. data/vendor/Image-ExifTool-9.27/t/InDesign_2.out +19 -0
  478. data/vendor/Image-ExifTool-9.27/t/InDesign_3.out +21 -0
  479. data/vendor/Image-ExifTool-9.27/t/InDesign_4.out +11 -0
  480. data/vendor/Image-ExifTool-9.27/t/JVC.t +36 -0
  481. data/vendor/Image-ExifTool-9.27/t/JVC_2.out +3 -0
  482. data/vendor/Image-ExifTool-9.27/t/JVC_3.out +3 -0
  483. data/vendor/Image-ExifTool-9.27/t/Jpeg2000.t +49 -0
  484. data/vendor/Image-ExifTool-9.27/t/Jpeg2000_2.out +63 -0
  485. data/vendor/Image-ExifTool-9.27/t/Jpeg2000_3.out +51 -0
  486. data/vendor/Image-ExifTool-9.27/t/Jpeg2000_4.out +15 -0
  487. data/vendor/Image-ExifTool-9.27/t/Kodak.t +40 -0
  488. data/vendor/Image-ExifTool-9.27/t/Kodak_2.out +109 -0
  489. data/vendor/Image-ExifTool-9.27/t/Kodak_3.out +119 -0
  490. data/vendor/Image-ExifTool-9.27/t/KyoceraRaw.t +28 -0
  491. data/vendor/Image-ExifTool-9.27/t/KyoceraRaw_2.out +27 -0
  492. data/vendor/Image-ExifTool-9.27/t/LNK.t +28 -0
  493. data/vendor/Image-ExifTool-9.27/t/LNK_2.out +45 -0
  494. data/vendor/Image-ExifTool-9.27/t/Lang.t +40 -0
  495. data/vendor/Image-ExifTool-9.27/t/Lang_1.out +1 -0
  496. data/vendor/Image-ExifTool-9.27/t/Lang_10.out +46 -0
  497. data/vendor/Image-ExifTool-9.27/t/Lang_11.out +46 -0
  498. data/vendor/Image-ExifTool-9.27/t/Lang_12.out +46 -0
  499. data/vendor/Image-ExifTool-9.27/t/Lang_13.out +46 -0
  500. data/vendor/Image-ExifTool-9.27/t/Lang_14.out +46 -0
  501. data/vendor/Image-ExifTool-9.27/t/Lang_15.out +46 -0
  502. data/vendor/Image-ExifTool-9.27/t/Lang_16.out +46 -0
  503. data/vendor/Image-ExifTool-9.27/t/Lang_17.out +46 -0
  504. data/vendor/Image-ExifTool-9.27/t/Lang_18.out +46 -0
  505. data/vendor/Image-ExifTool-9.27/t/Lang_2.out +46 -0
  506. data/vendor/Image-ExifTool-9.27/t/Lang_3.out +46 -0
  507. data/vendor/Image-ExifTool-9.27/t/Lang_4.out +46 -0
  508. data/vendor/Image-ExifTool-9.27/t/Lang_5.out +46 -0
  509. data/vendor/Image-ExifTool-9.27/t/Lang_6.out +46 -0
  510. data/vendor/Image-ExifTool-9.27/t/Lang_7.out +46 -0
  511. data/vendor/Image-ExifTool-9.27/t/Lang_8.out +46 -0
  512. data/vendor/Image-ExifTool-9.27/t/Lang_9.out +46 -0
  513. data/vendor/Image-ExifTool-9.27/t/M2TS.t +29 -0
  514. data/vendor/Image-ExifTool-9.27/t/M2TS_2.out +27 -0
  515. data/vendor/Image-ExifTool-9.27/t/MIE.t +82 -0
  516. data/vendor/Image-ExifTool-9.27/t/MIE_2.out +67 -0
  517. data/vendor/Image-ExifTool-9.27/t/MIE_3.out +134 -0
  518. data/vendor/Image-ExifTool-9.27/t/MIE_5.out +1 -0
  519. data/vendor/Image-ExifTool-9.27/t/MIE_6.out +1 -0
  520. data/vendor/Image-ExifTool-9.27/t/MIFF.t +28 -0
  521. data/vendor/Image-ExifTool-9.27/t/MIFF_2.out +108 -0
  522. data/vendor/Image-ExifTool-9.27/t/MP3.t +29 -0
  523. data/vendor/Image-ExifTool-9.27/t/MP3_2.out +45 -0
  524. data/vendor/Image-ExifTool-9.27/t/MWG.t +72 -0
  525. data/vendor/Image-ExifTool-9.27/t/MWG_2.out +13 -0
  526. data/vendor/Image-ExifTool-9.27/t/MWG_3.out +8 -0
  527. data/vendor/Image-ExifTool-9.27/t/MWG_4.out +5 -0
  528. data/vendor/Image-ExifTool-9.27/t/MWG_5.out +22 -0
  529. data/vendor/Image-ExifTool-9.27/t/MXF.t +27 -0
  530. data/vendor/Image-ExifTool-9.27/t/MXF_2.out +78 -0
  531. data/vendor/Image-ExifTool-9.27/t/Matroska.t +29 -0
  532. data/vendor/Image-ExifTool-9.27/t/Matroska_2.out +64 -0
  533. data/vendor/Image-ExifTool-9.27/t/Minolta.t +50 -0
  534. data/vendor/Image-ExifTool-9.27/t/Minolta_2.out +133 -0
  535. data/vendor/Image-ExifTool-9.27/t/Minolta_3.out +146 -0
  536. data/vendor/Image-ExifTool-9.27/t/Minolta_4.out +148 -0
  537. data/vendor/Image-ExifTool-9.27/t/Nikon.t +114 -0
  538. data/vendor/Image-ExifTool-9.27/t/Nikon_2.out +82 -0
  539. data/vendor/Image-ExifTool-9.27/t/Nikon_3.out +98 -0
  540. data/vendor/Image-ExifTool-9.27/t/Nikon_4.out +173 -0
  541. data/vendor/Image-ExifTool-9.27/t/Nikon_5.out +167 -0
  542. data/vendor/Image-ExifTool-9.27/t/Nikon_7.out +260 -0
  543. data/vendor/Image-ExifTool-9.27/t/Nikon_8.out +4 -0
  544. data/vendor/Image-ExifTool-9.27/t/Olympus.t +85 -0
  545. data/vendor/Image-ExifTool-9.27/t/Olympus_2.out +79 -0
  546. data/vendor/Image-ExifTool-9.27/t/Olympus_3.out +81 -0
  547. data/vendor/Image-ExifTool-9.27/t/Olympus_4.out +192 -0
  548. data/vendor/Image-ExifTool-9.27/t/Olympus_5.out +264 -0
  549. data/vendor/Image-ExifTool-9.27/t/Olympus_6.out +151 -0
  550. data/vendor/Image-ExifTool-9.27/t/Olympus_7.out +482 -0
  551. data/vendor/Image-ExifTool-9.27/t/OpenEXR.t +28 -0
  552. data/vendor/Image-ExifTool-9.27/t/OpenEXR_2.out +23 -0
  553. data/vendor/Image-ExifTool-9.27/t/PDF.t +295 -0
  554. data/vendor/Image-ExifTool-9.27/t/PDF_10.out +10 -0
  555. data/vendor/Image-ExifTool-9.27/t/PDF_11.out +10 -0
  556. data/vendor/Image-ExifTool-9.27/t/PDF_12.out +9 -0
  557. data/vendor/Image-ExifTool-9.27/t/PDF_14.out +5 -0
  558. data/vendor/Image-ExifTool-9.27/t/PDF_15.out +6 -0
  559. data/vendor/Image-ExifTool-9.27/t/PDF_16.out +4 -0
  560. data/vendor/Image-ExifTool-9.27/t/PDF_17.out +4 -0
  561. data/vendor/Image-ExifTool-9.27/t/PDF_18.out +5 -0
  562. data/vendor/Image-ExifTool-9.27/t/PDF_19.out +6 -0
  563. data/vendor/Image-ExifTool-9.27/t/PDF_2.out +117 -0
  564. data/vendor/Image-ExifTool-9.27/t/PDF_20.out +4 -0
  565. data/vendor/Image-ExifTool-9.27/t/PDF_22.out +3 -0
  566. data/vendor/Image-ExifTool-9.27/t/PDF_4.out +12 -0
  567. data/vendor/Image-ExifTool-9.27/t/PDF_5.out +8 -0
  568. data/vendor/Image-ExifTool-9.27/t/PDF_6.out +9 -0
  569. data/vendor/Image-ExifTool-9.27/t/PDF_7.out +11 -0
  570. data/vendor/Image-ExifTool-9.27/t/PDF_8.out +9 -0
  571. data/vendor/Image-ExifTool-9.27/t/PDF_9.out +9 -0
  572. data/vendor/Image-ExifTool-9.27/t/PGF.t +28 -0
  573. data/vendor/Image-ExifTool-9.27/t/PGF_2.out +32 -0
  574. data/vendor/Image-ExifTool-9.27/t/PICT.t +28 -0
  575. data/vendor/Image-ExifTool-9.27/t/PICT_2.out +15 -0
  576. data/vendor/Image-ExifTool-9.27/t/PLIST.t +31 -0
  577. data/vendor/Image-ExifTool-9.27/t/PLIST_2.out +20 -0
  578. data/vendor/Image-ExifTool-9.27/t/PLIST_3.out +20 -0
  579. data/vendor/Image-ExifTool-9.27/t/PNG.t +75 -0
  580. data/vendor/Image-ExifTool-9.27/t/PNG_2.out +22 -0
  581. data/vendor/Image-ExifTool-9.27/t/PNG_3.out +118 -0
  582. data/vendor/Image-ExifTool-9.27/t/PNG_4.out +12 -0
  583. data/vendor/Image-ExifTool-9.27/t/PPM.t +40 -0
  584. data/vendor/Image-ExifTool-9.27/t/PPM_2.out +15 -0
  585. data/vendor/Image-ExifTool-9.27/t/PPM_3.out +9 -0
  586. data/vendor/Image-ExifTool-9.27/t/PSP.t +28 -0
  587. data/vendor/Image-ExifTool-9.27/t/PSP_2.out +32 -0
  588. data/vendor/Image-ExifTool-9.27/t/Panasonic.t +60 -0
  589. data/vendor/Image-ExifTool-9.27/t/Panasonic_2.out +99 -0
  590. data/vendor/Image-ExifTool-9.27/t/Panasonic_3.out +119 -0
  591. data/vendor/Image-ExifTool-9.27/t/Panasonic_4.out +177 -0
  592. data/vendor/Image-ExifTool-9.27/t/Panasonic_5.out +228 -0
  593. data/vendor/Image-ExifTool-9.27/t/Pentax.t +50 -0
  594. data/vendor/Image-ExifTool-9.27/t/Pentax_2.out +219 -0
  595. data/vendor/Image-ExifTool-9.27/t/Pentax_3.out +262 -0
  596. data/vendor/Image-ExifTool-9.27/t/Pentax_4.out +123 -0
  597. data/vendor/Image-ExifTool-9.27/t/PhotoCD.t +28 -0
  598. data/vendor/Image-ExifTool-9.27/t/PhotoCD_2.out +35 -0
  599. data/vendor/Image-ExifTool-9.27/t/PhotoMechanic.t +38 -0
  600. data/vendor/Image-ExifTool-9.27/t/PhotoMechanic_2.out +81 -0
  601. data/vendor/Image-ExifTool-9.27/t/PhotoMechanic_3.out +2 -0
  602. data/vendor/Image-ExifTool-9.27/t/Photoshop.t +42 -0
  603. data/vendor/Image-ExifTool-9.27/t/Photoshop_2.out +96 -0
  604. data/vendor/Image-ExifTool-9.27/t/Photoshop_3.out +108 -0
  605. data/vendor/Image-ExifTool-9.27/t/PostScript.t +49 -0
  606. data/vendor/Image-ExifTool-9.27/t/PostScript_2.out +64 -0
  607. data/vendor/Image-ExifTool-9.27/t/PostScript_3.out +132 -0
  608. data/vendor/Image-ExifTool-9.27/t/QuickTime.t +31 -0
  609. data/vendor/Image-ExifTool-9.27/t/QuickTime_2.out +128 -0
  610. data/vendor/Image-ExifTool-9.27/t/QuickTime_3.out +69 -0
  611. data/vendor/Image-ExifTool-9.27/t/RIFF.t +31 -0
  612. data/vendor/Image-ExifTool-9.27/t/RIFF_2.out +24 -0
  613. data/vendor/Image-ExifTool-9.27/t/RIFF_3.out +52 -0
  614. data/vendor/Image-ExifTool-9.27/t/RIFF_4.out +16 -0
  615. data/vendor/Image-ExifTool-9.27/t/RTF.t +27 -0
  616. data/vendor/Image-ExifTool-9.27/t/RTF_2.out +20 -0
  617. data/vendor/Image-ExifTool-9.27/t/Radiance.t +28 -0
  618. data/vendor/Image-ExifTool-9.27/t/Radiance_2.out +22 -0
  619. data/vendor/Image-ExifTool-9.27/t/Real.t +46 -0
  620. data/vendor/Image-ExifTool-9.27/t/Real_2.out +68 -0
  621. data/vendor/Image-ExifTool-9.27/t/Real_3.out +18 -0
  622. data/vendor/Image-ExifTool-9.27/t/Real_4.out +11 -0
  623. data/vendor/Image-ExifTool-9.27/t/Ricoh.t +47 -0
  624. data/vendor/Image-ExifTool-9.27/t/Ricoh_2.out +70 -0
  625. data/vendor/Image-ExifTool-9.27/t/Ricoh_3.out +98 -0
  626. data/vendor/Image-ExifTool-9.27/t/Ricoh_4.out +112 -0
  627. data/vendor/Image-ExifTool-9.27/t/Sanyo.t +39 -0
  628. data/vendor/Image-ExifTool-9.27/t/Sanyo_2.out +101 -0
  629. data/vendor/Image-ExifTool-9.27/t/Sanyo_3.out +111 -0
  630. data/vendor/Image-ExifTool-9.27/t/Sigma.t +60 -0
  631. data/vendor/Image-ExifTool-9.27/t/Sigma_2.out +91 -0
  632. data/vendor/Image-ExifTool-9.27/t/Sigma_3.out +94 -0
  633. data/vendor/Image-ExifTool-9.27/t/Sigma_4.out +63 -0
  634. data/vendor/Image-ExifTool-9.27/t/Sigma_5.out +192 -0
  635. data/vendor/Image-ExifTool-9.27/t/Sony.t +62 -0
  636. data/vendor/Image-ExifTool-9.27/t/Sony_2.out +84 -0
  637. data/vendor/Image-ExifTool-9.27/t/Sony_3.out +85 -0
  638. data/vendor/Image-ExifTool-9.27/t/Sony_5.out +32 -0
  639. data/vendor/Image-ExifTool-9.27/t/TestLib.pm +417 -0
  640. data/vendor/Image-ExifTool-9.27/t/Unknown.t +36 -0
  641. data/vendor/Image-ExifTool-9.27/t/Unknown_2.out +90 -0
  642. data/vendor/Image-ExifTool-9.27/t/Unknown_3.out +90 -0
  643. data/vendor/Image-ExifTool-9.27/t/Vorbis.t +28 -0
  644. data/vendor/Image-ExifTool-9.27/t/Vorbis_2.out +28 -0
  645. data/vendor/Image-ExifTool-9.27/t/Writer.t +896 -0
  646. data/vendor/Image-ExifTool-9.27/t/Writer_10.out +239 -0
  647. data/vendor/Image-ExifTool-9.27/t/Writer_11.out +37 -0
  648. data/vendor/Image-ExifTool-9.27/t/Writer_13.out +160 -0
  649. data/vendor/Image-ExifTool-9.27/t/Writer_14.out +67 -0
  650. data/vendor/Image-ExifTool-9.27/t/Writer_15.out +171 -0
  651. data/vendor/Image-ExifTool-9.27/t/Writer_16.out +1 -0
  652. data/vendor/Image-ExifTool-9.27/t/Writer_17.out +1 -0
  653. data/vendor/Image-ExifTool-9.27/t/Writer_18.out +3 -0
  654. data/vendor/Image-ExifTool-9.27/t/Writer_19.out +34 -0
  655. data/vendor/Image-ExifTool-9.27/t/Writer_2.out +168 -0
  656. data/vendor/Image-ExifTool-9.27/t/Writer_22.out +4 -0
  657. data/vendor/Image-ExifTool-9.27/t/Writer_24.out +1 -0
  658. data/vendor/Image-ExifTool-9.27/t/Writer_25.out +38 -0
  659. data/vendor/Image-ExifTool-9.27/t/Writer_26.out +32 -0
  660. data/vendor/Image-ExifTool-9.27/t/Writer_27.out +14 -0
  661. data/vendor/Image-ExifTool-9.27/t/Writer_28.out +1 -0
  662. data/vendor/Image-ExifTool-9.27/t/Writer_29.out +2 -0
  663. data/vendor/Image-ExifTool-9.27/t/Writer_30.out +2 -0
  664. data/vendor/Image-ExifTool-9.27/t/Writer_31.out +97 -0
  665. data/vendor/Image-ExifTool-9.27/t/Writer_32.out +3 -0
  666. data/vendor/Image-ExifTool-9.27/t/Writer_33.out +3 -0
  667. data/vendor/Image-ExifTool-9.27/t/Writer_34.out +3 -0
  668. data/vendor/Image-ExifTool-9.27/t/Writer_35.out +187 -0
  669. data/vendor/Image-ExifTool-9.27/t/Writer_36.out +2 -0
  670. data/vendor/Image-ExifTool-9.27/t/Writer_37.out +2 -0
  671. data/vendor/Image-ExifTool-9.27/t/Writer_38.out +62 -0
  672. data/vendor/Image-ExifTool-9.27/t/Writer_39.out +4 -0
  673. data/vendor/Image-ExifTool-9.27/t/Writer_4.out +85 -0
  674. data/vendor/Image-ExifTool-9.27/t/Writer_40.out +4 -0
  675. data/vendor/Image-ExifTool-9.27/t/Writer_41.out +3 -0
  676. data/vendor/Image-ExifTool-9.27/t/Writer_42.out +5 -0
  677. data/vendor/Image-ExifTool-9.27/t/Writer_43.out +5 -0
  678. data/vendor/Image-ExifTool-9.27/t/Writer_44.out +2 -0
  679. data/vendor/Image-ExifTool-9.27/t/Writer_45.out +1 -0
  680. data/vendor/Image-ExifTool-9.27/t/Writer_46.out +77 -0
  681. data/vendor/Image-ExifTool-9.27/t/Writer_47.out +56 -0
  682. data/vendor/Image-ExifTool-9.27/t/Writer_48.out +29 -0
  683. data/vendor/Image-ExifTool-9.27/t/Writer_50.out +3 -0
  684. data/vendor/Image-ExifTool-9.27/t/Writer_6.out +182 -0
  685. data/vendor/Image-ExifTool-9.27/t/Writer_7.out +149 -0
  686. data/vendor/Image-ExifTool-9.27/t/Writer_9.out +236 -0
  687. data/vendor/Image-ExifTool-9.27/t/XMP.t +521 -0
  688. data/vendor/Image-ExifTool-9.27/t/XMP_10.out +33 -0
  689. data/vendor/Image-ExifTool-9.27/t/XMP_11.out +59 -0
  690. data/vendor/Image-ExifTool-9.27/t/XMP_12.out +4 -0
  691. data/vendor/Image-ExifTool-9.27/t/XMP_13.out +5 -0
  692. data/vendor/Image-ExifTool-9.27/t/XMP_14.out +3 -0
  693. data/vendor/Image-ExifTool-9.27/t/XMP_15.out +3 -0
  694. data/vendor/Image-ExifTool-9.27/t/XMP_16.out +5 -0
  695. data/vendor/Image-ExifTool-9.27/t/XMP_17.out +6 -0
  696. data/vendor/Image-ExifTool-9.27/t/XMP_18.out +10 -0
  697. data/vendor/Image-ExifTool-9.27/t/XMP_19.out +35 -0
  698. data/vendor/Image-ExifTool-9.27/t/XMP_2.out +138 -0
  699. data/vendor/Image-ExifTool-9.27/t/XMP_20.out +35 -0
  700. data/vendor/Image-ExifTool-9.27/t/XMP_21.out +37 -0
  701. data/vendor/Image-ExifTool-9.27/t/XMP_22.out +37 -0
  702. data/vendor/Image-ExifTool-9.27/t/XMP_23.out +9 -0
  703. data/vendor/Image-ExifTool-9.27/t/XMP_24.out +31 -0
  704. data/vendor/Image-ExifTool-9.27/t/XMP_25.out +28 -0
  705. data/vendor/Image-ExifTool-9.27/t/XMP_26.out +52 -0
  706. data/vendor/Image-ExifTool-9.27/t/XMP_27.out +93 -0
  707. data/vendor/Image-ExifTool-9.27/t/XMP_28.out +44 -0
  708. data/vendor/Image-ExifTool-9.27/t/XMP_29.out +24 -0
  709. data/vendor/Image-ExifTool-9.27/t/XMP_3.out +136 -0
  710. data/vendor/Image-ExifTool-9.27/t/XMP_30.out +90 -0
  711. data/vendor/Image-ExifTool-9.27/t/XMP_31.out +19 -0
  712. data/vendor/Image-ExifTool-9.27/t/XMP_32.out +2 -0
  713. data/vendor/Image-ExifTool-9.27/t/XMP_34.out +2 -0
  714. data/vendor/Image-ExifTool-9.27/t/XMP_36.out +18 -0
  715. data/vendor/Image-ExifTool-9.27/t/XMP_37.out +35 -0
  716. data/vendor/Image-ExifTool-9.27/t/XMP_39.out +44 -0
  717. data/vendor/Image-ExifTool-9.27/t/XMP_40.out +3 -0
  718. data/vendor/Image-ExifTool-9.27/t/XMP_41.out +175 -0
  719. data/vendor/Image-ExifTool-9.27/t/XMP_5.out +29 -0
  720. data/vendor/Image-ExifTool-9.27/t/XMP_6.out +87 -0
  721. data/vendor/Image-ExifTool-9.27/t/XMP_7.out +118 -0
  722. data/vendor/Image-ExifTool-9.27/t/XMP_8.out +17 -0
  723. data/vendor/Image-ExifTool-9.27/t/XMP_9.out +36 -0
  724. data/vendor/Image-ExifTool-9.27/t/ZIP.t +69 -0
  725. data/vendor/Image-ExifTool-9.27/t/ZIP_2.out +18 -0
  726. data/vendor/Image-ExifTool-9.27/t/ZIP_3.out +17 -0
  727. data/vendor/Image-ExifTool-9.27/t/ZIP_4.out +213 -0
  728. data/vendor/Image-ExifTool-9.27/t/ZIP_5.out +134 -0
  729. data/vendor/Image-ExifTool-9.27/t/ZIP_6.out +49 -0
  730. data/vendor/Image-ExifTool-9.27/t/ZIP_7.out +28 -0
  731. data/vendor/Image-ExifTool-9.27/t/images/AFCP.jpg +0 -0
  732. data/vendor/Image-ExifTool-9.27/t/images/AIFF.aif +0 -0
  733. data/vendor/Image-ExifTool-9.27/t/images/APE.ape +0 -0
  734. data/vendor/Image-ExifTool-9.27/t/images/APE.mpc +0 -0
  735. data/vendor/Image-ExifTool-9.27/t/images/ASF.wmv +0 -0
  736. data/vendor/Image-ExifTool-9.27/t/images/BMP.bmp +0 -0
  737. data/vendor/Image-ExifTool-9.27/t/images/BigTIFF.btf +0 -0
  738. data/vendor/Image-ExifTool-9.27/t/images/Canon.jpg +0 -0
  739. data/vendor/Image-ExifTool-9.27/t/images/Canon1DmkIII.jpg +0 -0
  740. data/vendor/Image-ExifTool-9.27/t/images/CanonRaw.cr2 +0 -0
  741. data/vendor/Image-ExifTool-9.27/t/images/CanonRaw.crw +0 -0
  742. data/vendor/Image-ExifTool-9.27/t/images/CanonVRD.vrd +0 -0
  743. data/vendor/Image-ExifTool-9.27/t/images/CaptureOne.eip +0 -0
  744. data/vendor/Image-ExifTool-9.27/t/images/Casio.jpg +0 -0
  745. data/vendor/Image-ExifTool-9.27/t/images/Casio2.jpg +0 -0
  746. data/vendor/Image-ExifTool-9.27/t/images/CasioQVCI.jpg +0 -0
  747. data/vendor/Image-ExifTool-9.27/t/images/DICOM.dcm +0 -0
  748. data/vendor/Image-ExifTool-9.27/t/images/DNG.dng +0 -0
  749. data/vendor/Image-ExifTool-9.27/t/images/DV.dv +0 -0
  750. data/vendor/Image-ExifTool-9.27/t/images/DjVu.djvu +0 -0
  751. data/vendor/Image-ExifTool-9.27/t/images/EXE.elf +0 -0
  752. data/vendor/Image-ExifTool-9.27/t/images/EXE.exe +0 -0
  753. data/vendor/Image-ExifTool-9.27/t/images/EXE.macho +0 -0
  754. data/vendor/Image-ExifTool-9.27/t/images/ExifTool.jpg +0 -0
  755. data/vendor/Image-ExifTool-9.27/t/images/ExifTool.tif +0 -0
  756. data/vendor/Image-ExifTool-9.27/t/images/ExtendedXMP.jpg +0 -0
  757. data/vendor/Image-ExifTool-9.27/t/images/FLAC.flac +0 -0
  758. data/vendor/Image-ExifTool-9.27/t/images/FLAC.ogg +0 -0
  759. data/vendor/Image-ExifTool-9.27/t/images/FLIR.fpf +0 -0
  760. data/vendor/Image-ExifTool-9.27/t/images/FLIR.jpg +0 -0
  761. data/vendor/Image-ExifTool-9.27/t/images/Flash.flv +0 -0
  762. data/vendor/Image-ExifTool-9.27/t/images/Flash.swf +0 -0
  763. data/vendor/Image-ExifTool-9.27/t/images/FlashPix.ppt +0 -0
  764. data/vendor/Image-ExifTool-9.27/t/images/Font.afm +28 -0
  765. data/vendor/Image-ExifTool-9.27/t/images/Font.dfont +0 -0
  766. data/vendor/Image-ExifTool-9.27/t/images/Font.pfa +38 -0
  767. data/vendor/Image-ExifTool-9.27/t/images/Font.pfb +0 -0
  768. data/vendor/Image-ExifTool-9.27/t/images/Font.pfm +0 -0
  769. data/vendor/Image-ExifTool-9.27/t/images/Font.ttf +0 -0
  770. data/vendor/Image-ExifTool-9.27/t/images/FotoStation.jpg +0 -0
  771. data/vendor/Image-ExifTool-9.27/t/images/FujiFilm.jpg +0 -0
  772. data/vendor/Image-ExifTool-9.27/t/images/FujiFilm.raf +0 -0
  773. data/vendor/Image-ExifTool-9.27/t/images/GE.jpg +0 -0
  774. data/vendor/Image-ExifTool-9.27/t/images/GIF.gif +0 -0
  775. data/vendor/Image-ExifTool-9.27/t/images/GIMP.xcf +0 -0
  776. data/vendor/Image-ExifTool-9.27/t/images/GPS.jpg +0 -0
  777. data/vendor/Image-ExifTool-9.27/t/images/GeoTiff.tif +0 -0
  778. data/vendor/Image-ExifTool-9.27/t/images/Geotag.gpx +23 -0
  779. data/vendor/Image-ExifTool-9.27/t/images/Geotag.igc +24 -0
  780. data/vendor/Image-ExifTool-9.27/t/images/Geotag.log +13 -0
  781. data/vendor/Image-ExifTool-9.27/t/images/Geotag.xml +23 -0
  782. data/vendor/Image-ExifTool-9.27/t/images/Geotag2.log +7 -0
  783. data/vendor/Image-ExifTool-9.27/t/images/HTML.html +77 -0
  784. data/vendor/Image-ExifTool-9.27/t/images/IPTC.jpg +0 -0
  785. data/vendor/Image-ExifTool-9.27/t/images/ITC.itc +0 -0
  786. data/vendor/Image-ExifTool-9.27/t/images/InDesign.indd +0 -0
  787. data/vendor/Image-ExifTool-9.27/t/images/JVC.jpg +0 -0
  788. data/vendor/Image-ExifTool-9.27/t/images/JVC2.jpg +0 -0
  789. data/vendor/Image-ExifTool-9.27/t/images/Jpeg2000.j2c +0 -0
  790. data/vendor/Image-ExifTool-9.27/t/images/Jpeg2000.jp2 +0 -0
  791. data/vendor/Image-ExifTool-9.27/t/images/Kodak.jpg +0 -0
  792. data/vendor/Image-ExifTool-9.27/t/images/KyoceraRaw.raw +0 -0
  793. data/vendor/Image-ExifTool-9.27/t/images/LNK.lnk +0 -0
  794. data/vendor/Image-ExifTool-9.27/t/images/M2TS.mts +0 -0
  795. data/vendor/Image-ExifTool-9.27/t/images/MIE.mie +0 -0
  796. data/vendor/Image-ExifTool-9.27/t/images/MIFF.miff +0 -0
  797. data/vendor/Image-ExifTool-9.27/t/images/MP3.mp3 +0 -0
  798. data/vendor/Image-ExifTool-9.27/t/images/MWG.jpg +0 -0
  799. data/vendor/Image-ExifTool-9.27/t/images/MXF.mxf +0 -0
  800. data/vendor/Image-ExifTool-9.27/t/images/Matroska.mkv +0 -0
  801. data/vendor/Image-ExifTool-9.27/t/images/Minolta.jpg +0 -0
  802. data/vendor/Image-ExifTool-9.27/t/images/Minolta.mrw +0 -0
  803. data/vendor/Image-ExifTool-9.27/t/images/Nikon.jpg +0 -0
  804. data/vendor/Image-ExifTool-9.27/t/images/Nikon.nef +0 -0
  805. data/vendor/Image-ExifTool-9.27/t/images/NikonD2Hs.jpg +0 -0
  806. data/vendor/Image-ExifTool-9.27/t/images/NikonD70.jpg +0 -0
  807. data/vendor/Image-ExifTool-9.27/t/images/OOXML.docx +0 -0
  808. data/vendor/Image-ExifTool-9.27/t/images/Olympus.jpg +0 -0
  809. data/vendor/Image-ExifTool-9.27/t/images/Olympus2.jpg +0 -0
  810. data/vendor/Image-ExifTool-9.27/t/images/OlympusE1.jpg +0 -0
  811. data/vendor/Image-ExifTool-9.27/t/images/OpenDoc.ods +0 -0
  812. data/vendor/Image-ExifTool-9.27/t/images/OpenEXR.exr +0 -0
  813. data/vendor/Image-ExifTool-9.27/t/images/PDF.pdf +0 -0
  814. data/vendor/Image-ExifTool-9.27/t/images/PDF2.pdf +0 -0
  815. data/vendor/Image-ExifTool-9.27/t/images/PGF.pgf +0 -0
  816. data/vendor/Image-ExifTool-9.27/t/images/PICT.pict +0 -0
  817. data/vendor/Image-ExifTool-9.27/t/images/PLIST-bin.plist +0 -0
  818. data/vendor/Image-ExifTool-9.27/t/images/PLIST-xml.plist +35 -0
  819. data/vendor/Image-ExifTool-9.27/t/images/PNG.png +0 -0
  820. data/vendor/Image-ExifTool-9.27/t/images/PPM.ppm +5 -0
  821. data/vendor/Image-ExifTool-9.27/t/images/PSP.psp +0 -0
  822. data/vendor/Image-ExifTool-9.27/t/images/Panasonic.jpg +0 -0
  823. data/vendor/Image-ExifTool-9.27/t/images/Panasonic.rw2 +0 -0
  824. data/vendor/Image-ExifTool-9.27/t/images/Pentax.avi +0 -0
  825. data/vendor/Image-ExifTool-9.27/t/images/Pentax.jpg +0 -0
  826. data/vendor/Image-ExifTool-9.27/t/images/PhotoCD.pcd +0 -0
  827. data/vendor/Image-ExifTool-9.27/t/images/PhotoMechanic.jpg +0 -0
  828. data/vendor/Image-ExifTool-9.27/t/images/Photoshop.psd +0 -0
  829. data/vendor/Image-ExifTool-9.27/t/images/PostScript.eps +108 -0
  830. data/vendor/Image-ExifTool-9.27/t/images/QuickTime.m4a +0 -0
  831. data/vendor/Image-ExifTool-9.27/t/images/QuickTime.mov +0 -0
  832. data/vendor/Image-ExifTool-9.27/t/images/RIFF.avi +0 -0
  833. data/vendor/Image-ExifTool-9.27/t/images/RIFF.wav +0 -0
  834. data/vendor/Image-ExifTool-9.27/t/images/RIFF.webp +0 -0
  835. data/vendor/Image-ExifTool-9.27/t/images/RTF.rtf +25 -0
  836. data/vendor/Image-ExifTool-9.27/t/images/Radiance.hdr +0 -0
  837. data/vendor/Image-ExifTool-9.27/t/images/Real.ra +0 -0
  838. data/vendor/Image-ExifTool-9.27/t/images/Real.ram +1 -0
  839. data/vendor/Image-ExifTool-9.27/t/images/Real.rm +0 -0
  840. data/vendor/Image-ExifTool-9.27/t/images/Ricoh.jpg +0 -0
  841. data/vendor/Image-ExifTool-9.27/t/images/Ricoh2.jpg +0 -0
  842. data/vendor/Image-ExifTool-9.27/t/images/Sanyo.jpg +0 -0
  843. data/vendor/Image-ExifTool-9.27/t/images/Sigma.jpg +0 -0
  844. data/vendor/Image-ExifTool-9.27/t/images/Sigma.x3f +0 -0
  845. data/vendor/Image-ExifTool-9.27/t/images/SigmaDP2.x3f +0 -0
  846. data/vendor/Image-ExifTool-9.27/t/images/Sony.jpg +0 -0
  847. data/vendor/Image-ExifTool-9.27/t/images/Sony.pmp +0 -0
  848. data/vendor/Image-ExifTool-9.27/t/images/Unknown.jpg +0 -0
  849. data/vendor/Image-ExifTool-9.27/t/images/Vorbis.ogg +0 -0
  850. data/vendor/Image-ExifTool-9.27/t/images/Writer.jpg +0 -0
  851. data/vendor/Image-ExifTool-9.27/t/images/XMP.inx +108 -0
  852. data/vendor/Image-ExifTool-9.27/t/images/XMP.jpg +0 -0
  853. data/vendor/Image-ExifTool-9.27/t/images/XMP.svg +33 -0
  854. data/vendor/Image-ExifTool-9.27/t/images/XMP.xml +98 -0
  855. data/vendor/Image-ExifTool-9.27/t/images/XMP.xmp +99 -0
  856. data/vendor/Image-ExifTool-9.27/t/images/XMP2.xmp +25 -0
  857. data/vendor/Image-ExifTool-9.27/t/images/XMP3.xmp +43 -0
  858. data/vendor/Image-ExifTool-9.27/t/images/XMP4.xmp +93 -0
  859. data/vendor/Image-ExifTool-9.27/t/images/XMP5.xmp +158 -0
  860. data/vendor/Image-ExifTool-9.27/t/images/ZIP.gz +0 -0
  861. data/vendor/Image-ExifTool-9.27/t/images/ZIP.zip +0 -0
  862. data/vendor/Image-ExifTool-9.27/t/images/iWork.numbers +0 -0
  863. metadata +868 -218
  864. data/vendor/Image-ExifTool-8.97/.DS_Store +0 -0
  865. data/vendor/Image-ExifTool-8.97/Changes +0 -5753
  866. data/vendor/Image-ExifTool-8.97/ExifTool_config +0 -299
  867. data/vendor/Image-ExifTool-8.97/MANIFEST +0 -831
  868. data/vendor/Image-ExifTool-8.97/META.yml +0 -26
  869. data/vendor/Image-ExifTool-8.97/README +0 -221
  870. data/vendor/Image-ExifTool-8.97/exiftool +0 -5207
  871. data/vendor/Image-ExifTool-8.97/kml.fmt +0 -63
  872. data/vendor/Image-ExifTool-8.97/lib/File/RandomAccess.pm +0 -378
  873. data/vendor/Image-ExifTool-8.97/lib/File/RandomAccess.pod +0 -231
  874. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool.pm +0 -6623
  875. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool.pod +0 -2276
  876. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/AES.pm +0 -501
  877. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/AFCP.pm +0 -280
  878. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/AIFF.pm +0 -271
  879. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/APE.pm +0 -254
  880. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/APP12.pm +0 -322
  881. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ASF.pm +0 -871
  882. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/BMP.pm +0 -179
  883. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/BZZ.pm +0 -472
  884. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/BigTIFF.pm +0 -286
  885. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/BuildTagLookup.pm +0 -2311
  886. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Canon.pm +0 -7435
  887. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/CanonCustom.pm +0 -2484
  888. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/CanonRaw.pm +0 -927
  889. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/CanonVRD.pm +0 -1481
  890. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/CaptureOne.pm +0 -235
  891. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Casio.pm +0 -2013
  892. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Charset.pm +0 -396
  893. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/DICOM.pm +0 -3832
  894. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/DNG.pm +0 -835
  895. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/DV.pm +0 -319
  896. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/DjVu.pm +0 -373
  897. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/EXE.pm +0 -1228
  898. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Exif.pm +0 -4344
  899. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/FLAC.pm +0 -296
  900. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Fixup.pm +0 -333
  901. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Flash.pm +0 -755
  902. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/FlashPix.pm +0 -1882
  903. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Font.pm +0 -643
  904. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/FotoStation.pm +0 -258
  905. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/FujiFilm.pm +0 -968
  906. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GE.pm +0 -80
  907. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GIF.pm +0 -525
  908. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GIMP.pm +0 -258
  909. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GPS.pm +0 -511
  910. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GeoTiff.pm +0 -2187
  911. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Geotag.pm +0 -1171
  912. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/H264.pm +0 -1093
  913. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/HP.pm +0 -262
  914. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/HTML.pm +0 -576
  915. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/HtmlDump.pm +0 -886
  916. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ICC_Profile.pm +0 -997
  917. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ID3.pm +0 -1276
  918. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/IPTC.pm +0 -1233
  919. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ITC.pm +0 -215
  920. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Import.pm +0 -307
  921. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/InDesign.pm +0 -277
  922. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/JPEG.pm +0 -584
  923. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/JPEGDigest.pm +0 -2511
  924. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/JVC.pm +0 -130
  925. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Jpeg2000.pm +0 -823
  926. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Kodak.pm +0 -2012
  927. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/KyoceraRaw.pm +0 -173
  928. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/LNK.pm +0 -723
  929. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/cs.pm +0 -1581
  930. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/de.pm +0 -5503
  931. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/en_ca.pm +0 -557
  932. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/en_gb.pm +0 -572
  933. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/es.pm +0 -1718
  934. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/fi.pm +0 -2831
  935. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/fr.pm +0 -4716
  936. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/it.pm +0 -2201
  937. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/ja.pm +0 -5793
  938. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/ko.pm +0 -2324
  939. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/nl.pm +0 -3212
  940. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/pl.pm +0 -1134
  941. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/ru.pm +0 -761
  942. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/sv.pm +0 -632
  943. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/tr.pm +0 -539
  944. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1320
  945. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/zh_tw.pm +0 -794
  946. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Leaf.pm +0 -515
  947. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/M2TS.pm +0 -729
  948. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MIE.pm +0 -2552
  949. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MIEUnits.pod +0 -377
  950. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MIFF.pm +0 -279
  951. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MNG.pm +0 -684
  952. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MPC.pm +0 -156
  953. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MPEG.pm +0 -736
  954. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MPF.pm +0 -286
  955. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MWG.pm +0 -586
  956. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MXF.pm +0 -3032
  957. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MakerNotes.pm +0 -1551
  958. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Matroska.pm +0 -891
  959. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Microsoft.pm +0 -861
  960. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Minolta.pm +0 -2786
  961. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MinoltaRaw.pm +0 -534
  962. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Nikon.pm +0 -5568
  963. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/NikonCapture.pm +0 -911
  964. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/NikonCustom.pm +0 -3724
  965. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/OOXML.pm +0 -409
  966. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Ogg.pm +0 -237
  967. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Olympus.pm +0 -4027
  968. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/OpenEXR.pm +0 -324
  969. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PDF.pm +0 -1986
  970. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PGF.pm +0 -143
  971. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PICT.pm +0 -1260
  972. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PNG.pm +0 -1100
  973. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PPM.pm +0 -169
  974. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PSP.pm +0 -305
  975. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Panasonic.pm +0 -1852
  976. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PanasonicRaw.pm +0 -383
  977. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Pentax.pm +0 -5044
  978. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PhotoCD.pm +0 -507
  979. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PhotoMechanic.pm +0 -250
  980. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Photoshop.pm +0 -594
  981. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PostScript.pm +0 -691
  982. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PrintIM.pm +0 -125
  983. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Qualcomm.pm +0 -1344
  984. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/QuickTime.pm +0 -2920
  985. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/README +0 -922
  986. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/RIFF.pm +0 -1278
  987. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/RSRC.pm +0 -240
  988. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/RTF.pm +0 -383
  989. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Radiance.pm +0 -144
  990. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Rawzor.pm +0 -190
  991. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Real.pm +0 -736
  992. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Reconyx.pm +0 -190
  993. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Ricoh.pm +0 -714
  994. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Samsung.pm +0 -764
  995. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Sanyo.pm +0 -439
  996. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Shift.pl +0 -594
  997. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Shortcuts.pm +0 -289
  998. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Sigma.pm +0 -488
  999. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/SigmaRaw.pm +0 -676
  1000. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Sony.pm +0 -3844
  1001. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/SonyIDC.pm +0 -330
  1002. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Stim.pm +0 -196
  1003. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/TagInfoXML.pm +0 -763
  1004. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/TagLookup.pm +0 -7305
  1005. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/TagNames.pod +0 -24147
  1006. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Theora.pm +0 -145
  1007. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Unknown.pm +0 -66
  1008. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Vorbis.pm +0 -221
  1009. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WriteCanonRaw.pl +0 -637
  1010. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WriteExif.pl +0 -3513
  1011. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WriteIPTC.pl +0 -700
  1012. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WritePDF.pl +0 -757
  1013. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WritePNG.pl +0 -329
  1014. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WritePhotoshop.pl +0 -266
  1015. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WritePostScript.pl +0 -776
  1016. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WriteXMP.pl +0 -1296
  1017. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Writer.pl +0 -5577
  1018. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/XMP.pm +0 -3589
  1019. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/XMP2.pl +0 -1315
  1020. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/XMPStruct.pl +0 -814
  1021. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ZIP.pm +0 -623
  1022. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/iWork.pm +0 -223
  1023. data/vendor/Image-ExifTool-8.97/perl-Image-ExifTool.spec +0 -103
@@ -0,0 +1,3540 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: Olympus.pm
3
+ #
4
+ # Description: Olympus/Epson EXIF maker notes tags
5
+ #
6
+ # Revisions: 12/09/2003 - P. Harvey Created
7
+ # 11/11/2004 - P. Harvey Added Epson support
8
+ #
9
+ # References: 1) http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html
10
+ # 2) http://www.cybercom.net/~dcoffin/dcraw/
11
+ # 3) http://www.ozhiker.com/electronics/pjmt/jpeg_info/olympus_mn.html
12
+ # 4) Markku H�nninen private communication (tests with E-1)
13
+ # 5) R�mi Guyomarch from http://forums.dpreview.com/forums/read.asp?forum=1022&message=12790396
14
+ # 6) Frank Ledwon private communication (tests with E/C-series cameras)
15
+ # 7) Michael Meissner private communication
16
+ # 8) Shingo Noguchi, PhotoXP (http://www.daifukuya.com/photoxp/)
17
+ # 9) Mark Dapoz private communication
18
+ # 10) Lilo Huang private communication (E-330)
19
+ # 11) http://olypedia.de/Olympus_Makernotes (Nov. 21, 2011)
20
+ # 12) Ioannis Panagiotopoulos private communication (E-510)
21
+ # 13) Chris Shaw private communication (E-3)
22
+ # 14) Viktor Lushnikov private communication (E-400)
23
+ # 15) Yrjo Rauste private communication (E-30)
24
+ # 16) Godfrey DiGiorgi private communcation (E-P1) + http://forums.dpreview.com/forums/read.asp?message=33187567
25
+ # 17) Martin Hibers private communication
26
+ # 18) Tomasz Kawecki private communication
27
+ # 19) Brad Grier private communication
28
+ # 20) Niels Kristian Bech Jensen private communication
29
+ #------------------------------------------------------------------------------
30
+
31
+ package Image::ExifTool::Olympus;
32
+
33
+ use strict;
34
+ use vars qw($VERSION);
35
+ use Image::ExifTool::Exif;
36
+ use Image::ExifTool::APP12;
37
+
38
+ $VERSION = '2.03';
39
+
40
+ sub PrintLensInfo($$$);
41
+
42
+ my %offOn = ( 0 => 'Off', 1 => 'On' );
43
+
44
+ # lookup for Olympus LensType values
45
+ # (as of ExifTool 9.15, this was the complete list of chipped lenses at www.four-thirds.org)
46
+ my %olympusLensTypes = (
47
+ Notes => q{
48
+ The numerical values below are given in hexadecimal. (Prior to ExifTool
49
+ 9.15 these were in decimal.)
50
+ },
51
+ '0 00 00' => 'None',
52
+ # Olympus lenses (also Kenko Tokina)
53
+ '0 01 00' => 'Olympus Zuiko Digital ED 50mm F2.0 Macro',
54
+ '0 01 01' => 'Olympus Zuiko Digital 40-150mm F3.5-4.5', #8
55
+ '0 01 10' => 'Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6', #PH (E-P1 pre-production)
56
+ '0 02 00' => 'Olympus Zuiko Digital ED 150mm F2.0',
57
+ '0 02 10' => 'Olympus M.Zuiko Digital 17mm F2.8 Pancake', #PH (E-P1 pre-production)
58
+ '0 03 00' => 'Olympus Zuiko Digital ED 300mm F2.8',
59
+ '0 03 10' => 'Olympus M.Zuiko Digital ED 14-150mm F4.0-5.6', #11
60
+ '0 04 10' => 'Olympus M.Zuiko Digital ED 9-18mm F4.0-5.6', #11
61
+ '0 05 00' => 'Olympus Zuiko Digital 14-54mm F2.8-3.5',
62
+ '0 05 01' => 'Olympus Zuiko Digital Pro ED 90-250mm F2.8', #9
63
+ '0 05 10' => 'Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6 L', #11 (E-PL1)
64
+ '0 06 00' => 'Olympus Zuiko Digital ED 50-200mm F2.8-3.5',
65
+ '0 06 01' => 'Olympus Zuiko Digital ED 8mm F3.5 Fisheye', #9
66
+ '0 06 10' => 'Olympus M.Zuiko Digital ED 40-150mm F4.0-5.6', #PH
67
+ '0 07 00' => 'Olympus Zuiko Digital 11-22mm F2.8-3.5',
68
+ '0 07 01' => 'Olympus Zuiko Digital 18-180mm F3.5-6.3', #6
69
+ '0 07 10' => 'Olympus M.Zuiko Digital ED 12mm F2.0', #PH
70
+ '0 08 01' => 'Olympus Zuiko Digital 70-300mm F4.0-5.6', #7 (seen as release 1 - PH)
71
+ '0 08 10' => 'Olympus M.Zuiko Digital ED 75-300mm F4.8-6.7', #PH
72
+ '0 09 10' => 'Olympus M.Zuiko Digital 14-42mm F3.5-5.6 II', #PH (E-PL2)
73
+ '0 10 01' => 'Kenko Tokina Reflex 300mm F6.3 MF Macro', #20
74
+ '0 10 10' => 'Olympus M.Zuiko Digital ED 12-50mm F3.5-6.3 EZ', #PH
75
+ '0 11 10' => 'Olympus M.Zuiko Digital 45mm F1.8', #17
76
+ '0 12 10' => 'Olympus M.Zuiko Digital ED 60mm F2.8 Macro', #20
77
+ '0 13 10' => 'Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6 II R', #PH
78
+ '0 14 10' => 'Olympus M.Zuiko Digital ED 40-150mm F4.0-5.6 R', #19
79
+ # '0 14 10.1' => 'Olympus M.Zuiko Digital ED 14-150mm F4.0-5.6 II', #11 (questionable & unconfirmed)
80
+ '0 15 00' => 'Olympus Zuiko Digital ED 7-14mm F4.0',
81
+ '0 15 10' => 'Olympus M.Zuiko Digital ED 75mm F1.8', #PH
82
+ '0 16 10' => 'Olympus M.Zuiko Digital 17mm F1.8', #20
83
+ '0 17 00' => 'Olympus Zuiko Digital Pro ED 35-100mm F2.0', #7
84
+ '0 18 00' => 'Olympus Zuiko Digital 14-45mm F3.5-5.6',
85
+ '0 18 10' => 'Olympus M.Zuiko Digital ED 75-300mm F4.8-6.7 II', #20
86
+ '0 20 00' => 'Olympus Zuiko Digital 35mm F3.5 Macro', #9
87
+ '0 22 00' => 'Olympus Zuiko Digital 17.5-45mm F3.5-5.6', #9
88
+ '0 23 00' => 'Olympus Zuiko Digital ED 14-42mm F3.5-5.6', #PH
89
+ '0 24 00' => 'Olympus Zuiko Digital ED 40-150mm F4.0-5.6', #PH
90
+ '0 30 00' => 'Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD', #7
91
+ '0 31 00' => 'Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD', #7
92
+ '0 32 00' => 'Olympus Zuiko Digital ED 14-35mm F2.0 SWD', #PH
93
+ '0 33 00' => 'Olympus Zuiko Digital 25mm F2.8', #PH
94
+ '0 34 00' => 'Olympus Zuiko Digital ED 9-18mm F4.0-5.6', #7
95
+ '0 35 00' => 'Olympus Zuiko Digital 14-54mm F2.8-3.5 II', #PH
96
+ # Sigma lenses
97
+ '1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
98
+ '1 01 10' => 'Sigma 30mm F2.8 EX DN', #20
99
+ '1 02 00' => 'Sigma 55-200mm F4.0-5.6 DC',
100
+ '1 02 10' => 'Sigma 19mm F2.8 EX DN', #20
101
+ '1 03 00' => 'Sigma 18-125mm F3.5-5.6 DC',
102
+ '1 04 00' => 'Sigma 18-125mm F3.5-5.6 DC', #7
103
+ '1 05 00' => 'Sigma 30mm F1.4 EX DC HSM', #10
104
+ '1 06 00' => 'Sigma APO 50-500mm F4.0-6.3 EX DG HSM', #6
105
+ '1 07 00' => 'Sigma Macro 105mm F2.8 EX DG', #PH
106
+ '1 08 00' => 'Sigma APO Macro 150mm F2.8 EX DG HSM', #PH
107
+ '1 09 00' => 'Sigma 18-50mm F2.8 EX DC Macro', #20
108
+ '1 10 00' => 'Sigma 24mm F1.8 EX DG Aspherical Macro', #PH
109
+ '1 11 00' => 'Sigma APO 135-400mm F4.5-5.6 DG', #11
110
+ '1 12 00' => 'Sigma APO 300-800mm F5.6 EX DG HSM', #11
111
+ '1 13 00' => 'Sigma 30mm F1.4 EX DC HSM', #11
112
+ '1 14 00' => 'Sigma APO 50-500mm F4.0-6.3 EX DG HSM', #11
113
+ '1 15 00' => 'Sigma 10-20mm F4.0-5.6 EX DC HSM', #11
114
+ '1 16 00' => 'Sigma APO 70-200mm F2.8 II EX DG Macro HSM', #11
115
+ '1 17 00' => 'Sigma 50mm F1.4 EX DG HSM', #11
116
+ # Panasonic/Leica lenses (ref 11)
117
+ '2 01 00' => 'Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.',
118
+ '2 01 10' => 'Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS', #16
119
+ '2 02 00' => 'Leica D Summilux 25mm F1.4 Asph.',
120
+ '2 02 10' => 'Lumix G Vario 45-200mm F4.0-5.6 Mega OIS', #16
121
+ '2 03 00' => 'Leica D Vario Elmar 14-50mm F3.8-5.6 Asph. Mega OIS', #11
122
+ '2 03 01' => 'Leica D Vario Elmar 14-50mm F3.8-5.6 Asph.', #14 (L10 kit)
123
+ '2 03 10' => 'Lumix G Vario HD 14-140mm F4.0-5.8 Asph. Mega OIS', #16
124
+ '2 04 00' => 'Leica D Vario Elmar 14-150mm F3.5-5.6', #13
125
+ '2 04 10' => 'Lumix G Vario 7-14mm F4.0 Asph.', #PH (E-P1 pre-production)
126
+ '2 05 10' => 'Lumix G 20mm F1.7 Asph.', #16
127
+ '2 06 10' => 'Leica DG Macro-Elmarit 45mm F2.8 Asph. Mega OIS', #PH
128
+ '2 07 10' => 'Lumix G Vario 14-42mm F3.5-5.6 Asph. Mega OIS', #20
129
+ '2 08 10' => 'Lumix G Fisheye 8mm F3.5', #PH
130
+ '2 09 10' => 'Lumix G Vario 100-300mm F4.0-5.6 Mega OIS', #11
131
+ '2 10 10' => 'Lumix G 14mm F2.5 Asph.', #17
132
+ '2 11 10' => 'Lumix G 12.5mm F12 3D', #20 (H-FT012)
133
+ '2 12 10' => 'Leica DG Summilux 25mm F1.4 Asph.', #20
134
+ '2 13 10' => 'Lumix G X Vario PZ 45-175mm F4.0-5.6 Asph. Power OIS', #20
135
+ '2 14 10' => 'Lumix G X Vario PZ 14-42mm F3.5-5.6 Asph. Power OIS', #20
136
+ '2 15 10' => 'Lumix G X Vario 12-35mm F2.8 Asph. Power OIS', #PH
137
+ '2 16 10' => 'Lumix G Vario 45-150mm F4.0-5.6 Asph. Mega OIS', #20
138
+ '2 17 10' => 'Lumix G X Vario 35-100mm F2.8 Power OIS', #PH
139
+ '3 01 00' => 'Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.',
140
+ '3 02 00' => 'Leica D Summilux 25mm F1.4 Asph.',
141
+ );
142
+
143
+ # lookup for Olympus camera types (ref PH)
144
+ my %olympusCameraTypes = (
145
+ Notes => q{
146
+ These values are currently decoded only for Olympus models. Models with
147
+ Olympus-style maker notes from other brands such as Acer, BenQ, Hitachi, HP,
148
+ Premier, Konica-Minolta, Maginon, Ricoh, Rollei, SeaLife, Sony, Supra,
149
+ Vivitar are not listed.
150
+ },
151
+ D4028 => 'X-2,C-50Z',
152
+ D4029 => 'E-20,E-20N,E-20P',
153
+ D4034 => 'C720UZ',
154
+ D4040 => 'E-1',
155
+ D4041 => 'E-300',
156
+ D4083 => 'C2Z,D520Z,C220Z',
157
+ D4106 => 'u20D,S400D,u400D',
158
+ D4120 => 'X-1',
159
+ D4122 => 'u10D,S300D,u300D',
160
+ D4125 => 'AZ-1',
161
+ D4141 => 'C150,D390',
162
+ D4193 => 'C-5000Z',
163
+ D4194 => 'X-3,C-60Z',
164
+ D4199 => 'u30D,S410D,u410D',
165
+ D4205 => 'X450,D535Z,C370Z',
166
+ D4210 => 'C160,D395',
167
+ D4211 => 'C725UZ',
168
+ D4213 => 'FerrariMODEL2003',
169
+ D4216 => 'u15D',
170
+ D4217 => 'u25D',
171
+ D4220 => 'u-miniD,Stylus V',
172
+ D4221 => 'u40D,S500,uD500',
173
+ D4231 => 'FerrariMODEL2004',
174
+ D4240 => 'X500,D590Z,C470Z',
175
+ D4244 => 'uD800,S800',
176
+ D4256 => 'u720SW,S720SW',
177
+ D4261 => 'X600,D630,FE5500',
178
+ D4262 => 'uD600,S600',
179
+ D4301 => 'u810/S810', # (yes, "/". Olympus is not consistent in the notation)
180
+ D4302 => 'u710,S710',
181
+ D4303 => 'u700,S700',
182
+ D4304 => 'FE100,X710',
183
+ D4305 => 'FE110,X705',
184
+ D4310 => 'FE-130,X-720',
185
+ D4311 => 'FE-140,X-725',
186
+ D4312 => 'FE150,X730',
187
+ D4313 => 'FE160,X735',
188
+ D4314 => 'u740,S740',
189
+ D4315 => 'u750,S750',
190
+ D4316 => 'u730/S730',
191
+ D4317 => 'FE115,X715',
192
+ D4321 => 'SP550UZ',
193
+ D4322 => 'SP510UZ',
194
+ D4324 => 'FE170,X760',
195
+ D4326 => 'FE200',
196
+ D4327 => 'FE190/X750', # (also SX876)
197
+ D4328 => 'u760,S760',
198
+ D4330 => 'FE180/X745', # (also SX875)
199
+ D4331 => 'u1000/S1000',
200
+ D4332 => 'u770SW,S770SW',
201
+ D4333 => 'FE240/X795',
202
+ D4334 => 'FE210,X775',
203
+ D4336 => 'FE230/X790',
204
+ D4337 => 'FE220,X785',
205
+ D4338 => 'u725SW,S725SW',
206
+ D4339 => 'FE250/X800',
207
+ D4341 => 'u780,S780',
208
+ D4343 => 'u790SW,S790SW',
209
+ D4344 => 'u1020,S1020',
210
+ D4346 => 'FE15,X10',
211
+ D4348 => 'FE280,X820,C520',
212
+ D4349 => 'FE300,X830',
213
+ D4350 => 'u820,S820',
214
+ D4351 => 'u1200,S1200',
215
+ D4352 => 'FE270,X815,C510',
216
+ D4353 => 'u795SW,S795SW',
217
+ D4354 => 'u1030SW,S1030SW',
218
+ D4355 => 'SP560UZ',
219
+ D4356 => 'u1010,S1010',
220
+ D4357 => 'u830,S830',
221
+ D4359 => 'u840,S840',
222
+ D4360 => 'FE350WIDE,X865',
223
+ D4361 => 'u850SW,S850SW',
224
+ D4362 => 'FE340,X855,C560',
225
+ D4363 => 'FE320,X835,C540',
226
+ D4364 => 'SP570UZ',
227
+ D4366 => 'FE330,X845,C550',
228
+ D4368 => 'FE310,X840,C530',
229
+ D4370 => 'u1050SW,S1050SW',
230
+ D4371 => 'u1060,S1060',
231
+ D4372 => 'FE370,X880,C575',
232
+ D4374 => 'SP565UZ',
233
+ D4377 => 'u1040,S1040',
234
+ D4378 => 'FE360,X875,C570',
235
+ D4379 => 'FE20,X15,C25',
236
+ D4380 => 'uT6000,ST6000',
237
+ D4381 => 'uT8000,ST8000',
238
+ D4382 => 'u9000,S9000',
239
+ D4384 => 'SP590UZ',
240
+ D4385 => 'FE3010,X895',
241
+ D4386 => 'FE3000,X890',
242
+ D4387 => 'FE35,X30',
243
+ D4388 => 'u550WP,S550WP',
244
+ D4390 => 'FE5000,X905',
245
+ D4391 => 'u5000',
246
+ D4392 => 'u7000,S7000',
247
+ D4396 => 'FE5010,X915',
248
+ D4397 => 'FE25,X20',
249
+ D4398 => 'FE45,X40',
250
+ D4401 => 'XZ-1',
251
+ D4402 => 'uT6010,ST6010',
252
+ D4406 => 'u7010,S7010 / u7020,S7020',
253
+ D4407 => 'FE4010,X930',
254
+ D4408 => 'X560WP',
255
+ D4409 => 'FE26,X21',
256
+ D4410 => 'FE4000,X920,X925',
257
+ D4411 => 'FE46,X41,X42',
258
+ D4412 => 'FE5020,X935',
259
+ D4413 => 'uTough-3000',
260
+ D4414 => 'StylusTough-6020',
261
+ D4415 => 'StylusTough-8010',
262
+ D4417 => 'u5010,S5010',
263
+ D4418 => 'u7040,S7040',
264
+ D4419 => 'u9010,S9010',
265
+ D4423 => 'FE4040',
266
+ D4424 => 'FE47,X43',
267
+ D4426 => 'FE4030,X950',
268
+ D4428 => 'FE5030,X965,X960',
269
+ D4430 => 'u7030,S7030',
270
+ D4432 => 'SP600UZ',
271
+ D4434 => 'SP800UZ',
272
+ D4439 => 'FE4020,X940',
273
+ D4442 => 'FE5035',
274
+ D4448 => 'FE4050,X970',
275
+ D4450 => 'FE5050,X985',
276
+ D4454 => 'u-7050',
277
+ D4464 => 'T10,X27',
278
+ D4470 => 'FE5040,X980',
279
+ D4472 => 'TG-310',
280
+ D4474 => 'TG-610',
281
+ D4476 => 'TG-810',
282
+ D4478 => 'VG145,VG140,D715',
283
+ D4479 => 'VG130,D710',
284
+ D4480 => 'VG120,D705',
285
+ D4482 => 'VR310,D720',
286
+ D4484 => 'VR320,D725',
287
+ D4486 => 'VR330,D730',
288
+ D4488 => 'VG110,D700',
289
+ D4490 => 'SP-610UZ',
290
+ D4492 => 'SZ-10',
291
+ D4494 => 'SZ-20',
292
+ D4496 => 'SZ-30MR',
293
+ D4498 => 'SP-810UZ',
294
+ D4500 => 'SZ-11',
295
+ D4504 => 'TG-615',
296
+ D4508 => 'TG-620',
297
+ D4510 => 'TG-820',
298
+ D4512 => 'TG-1',
299
+ D4516 => 'SH-21',
300
+ D4519 => 'SZ-14',
301
+ D4520 => 'SZ-31MR',
302
+ D4521 => 'SH-25MR',
303
+ D4523 => 'SP-720UZ',
304
+ D4529 => 'VG170',
305
+ D4531 => 'XZ-2',
306
+ D4535 => 'SP-620UZ',
307
+ D4536 => 'TG-320',
308
+ D4537 => 'VR340,D750',
309
+ D4541 => 'SZ-12',
310
+ D4545 => 'VH410',
311
+ D4547 => 'TG-2',
312
+ D4548 => 'TG-830',
313
+ D4562 => 'SP-820UZ',
314
+ D4809 => 'C2500L',
315
+ D4842 => 'E-10',
316
+ D4856 => 'C-1',
317
+ D4857 => 'C-1Z,D-150Z',
318
+ DCHC => 'D500L',
319
+ DCHT => 'D600L / D620L',
320
+ S0003 => 'E-330',
321
+ S0004 => 'E-500',
322
+ S0009 => 'E-400',
323
+ S0010 => 'E-510',
324
+ S0011 => 'E-3',
325
+ S0013 => 'E-410',
326
+ S0016 => 'E-420',
327
+ S0017 => 'E-30',
328
+ S0018 => 'E-520',
329
+ S0019 => 'E-P1',
330
+ S0023 => 'E-620',
331
+ S0026 => 'E-P2',
332
+ S0027 => 'E-PL1',
333
+ S0029 => 'E-450',
334
+ S0030 => 'E-600',
335
+ S0032 => 'E-P3',
336
+ S0033 => 'E-5',
337
+ S0034 => 'E-PL2',
338
+ S0036 => 'E-M5',
339
+ S0038 => 'E-PL3',
340
+ S0039 => 'E-PM1',
341
+ S0040 => 'E-PL1s',
342
+ S0042 => 'E-PL5',
343
+ S0043 => 'E-PM2',
344
+ SR45 => 'D220',
345
+ SR55 => 'D320L',
346
+ SR83 => 'D340L',
347
+ SR85 => 'C830L,D340R',
348
+ SR852 => 'C860L,D360L',
349
+ SR872 => 'C900Z,D400Z',
350
+ SR874 => 'C960Z,D460Z',
351
+ SR951 => 'C2000Z',
352
+ SR952 => 'C21',
353
+ SR953 => 'C21T.commu',
354
+ SR954 => 'C2020Z',
355
+ SR955 => 'C990Z,D490Z',
356
+ SR956 => 'C211Z',
357
+ SR959 => 'C990ZS,D490Z',
358
+ SR95A => 'C2100UZ',
359
+ SR971 => 'C100,D370',
360
+ SR973 => 'C2,D230',
361
+ SX151 => 'E100RS',
362
+ SX351 => 'C3000Z / C3030Z',
363
+ SX354 => 'C3040Z',
364
+ SX355 => 'C2040Z',
365
+ SX357 => 'C700UZ',
366
+ SX358 => 'C200Z,D510Z',
367
+ SX374 => 'C3100Z,C3020Z',
368
+ SX552 => 'C4040Z',
369
+ SX553 => 'C40Z,D40Z',
370
+ SX556 => 'C730UZ',
371
+ SX558 => 'C5050Z',
372
+ SX571 => 'C120,D380',
373
+ SX574 => 'C300Z,D550Z',
374
+ SX575 => 'C4100Z,C4000Z',
375
+ SX751 => 'X200,D560Z,C350Z',
376
+ SX752 => 'X300,D565Z,C450Z',
377
+ SX753 => 'C750UZ',
378
+ SX754 => 'C740UZ',
379
+ SX755 => 'C755UZ',
380
+ SX756 => 'C5060WZ',
381
+ SX757 => 'C8080WZ',
382
+ SX758 => 'X350,D575Z,C360Z',
383
+ SX759 => 'X400,D580Z,C460Z',
384
+ SX75A => 'AZ-2ZOOM',
385
+ SX75B => 'D595Z,C500Z',
386
+ SX75C => 'X550,D545Z,C480Z',
387
+ SX75D => 'IR-300',
388
+ SX75F => 'C55Z,C5500Z',
389
+ SX75G => 'C170,D425',
390
+ SX75J => 'C180,D435',
391
+ SX771 => 'C760UZ',
392
+ SX772 => 'C770UZ',
393
+ SX773 => 'C745UZ',
394
+ SX774 => 'X250,D560Z,C350Z',
395
+ SX775 => 'X100,D540Z,C310Z',
396
+ SX776 => 'C460ZdelSol',
397
+ SX777 => 'C765UZ',
398
+ SX77A => 'D555Z,C315Z',
399
+ SX851 => 'C7070WZ',
400
+ SX852 => 'C70Z,C7000Z',
401
+ SX853 => 'SP500UZ',
402
+ SX854 => 'SP310',
403
+ SX855 => 'SP350',
404
+ SX873 => 'SP320',
405
+ SX875 => 'FE180/X745', # (also D4330)
406
+ SX876 => 'FE190/X750', # (also D4327)
407
+ # other brands
408
+ # 4MP9Q3 => 'Camera 4MP-9Q3'
409
+ # 4MP9T2 => 'BenQ DC C420 / Camera 4MP-9T2'
410
+ # 5MP9Q3 => 'Camera 5MP-9Q3',
411
+ # 5MP9X9 => 'Camera 5MP-9X9',
412
+ # '5MP-9T'=> 'Camera 5MP-9T3',
413
+ # '5MP-9Y'=> 'Camera 5MP-9Y2',
414
+ # '6MP-9U'=> 'Camera 6MP-9U9',
415
+ # 7MP9Q3 => 'Camera 7MP-9Q3',
416
+ # '8MP-9U'=> 'Camera 8MP-9U4',
417
+ # CE5330 => 'Acer CE-5330',
418
+ # 'CP-853'=> 'Acer CP-8531',
419
+ # CS5531 => 'Acer CS5531',
420
+ # DC500 => 'SeaLife DC500',
421
+ # DC7370 => 'Camera 7MP-9GA',
422
+ # DC7371 => 'Camera 7MP-9GM',
423
+ # DC7371 => 'Hitachi HDC-751E',
424
+ # DC7375 => 'Hitachi HDC-763E / Rollei RCP-7330X / Ricoh Caplio RR770 / Vivitar ViviCam 7330',
425
+ # 'DC E63'=> 'BenQ DC E63+',
426
+ # 'DC P86'=> 'BenQ DC P860',
427
+ # DS5340 => 'Maginon Performic S5 / Premier 5MP-9M7',
428
+ # DS5341 => 'BenQ E53+ / Supra TCM X50 / Maginon X50 / Premier 5MP-9P8',
429
+ # DS5346 => 'Premier 5MP-9Q2',
430
+ # E500 => 'Konica Minolta DiMAGE E500',
431
+ # MAGINO => 'Maginon X60',
432
+ # Mz60 => 'HP Photosmart Mz60',
433
+ # Q3DIGI => 'Camera 5MP-9Q3',
434
+ # SLIMLI => 'Supra Slimline X6',
435
+ # V8300s => 'Vivitar V8300s',
436
+ );
437
+
438
+ # ArtFilter, ArtFilterEffect and MagicFilter values (ref PH)
439
+ my %filters = (
440
+ 0 => 'Off',
441
+ 1 => 'Soft Focus', # (XZ-1)
442
+ 2 => 'Pop Art', # (SZ-10 magic filter 1,SZ-31MR,E-M5,E-PL3)
443
+ 3 => 'Pale & Light Color',
444
+ 4 => 'Light Tone',
445
+ 5 => 'Pin Hole', # (SZ-10 magic filter 2,SZ-31MR,E-PL3)
446
+ 6 => 'Grainy Film',
447
+ 9 => 'Diorama',
448
+ 10 => 'Cross Process',
449
+ 12 => 'Fish Eye', # (SZ-10 magic filter 3)
450
+ 13 => 'Drawing', # (SZ-10 magic filter 4)
451
+ 14 => 'Gentle Sepia', # (E-5)
452
+ 15 => 'Tender Light', #11
453
+ 16 => 'Pop Art II', #11 (E-PL3 "(dark)" - PH)
454
+ 17 => 'Pin Hole II', #11 (E-PL3 "(color 2)" - PH)
455
+ 18 => 'Pin Hole III', #11 (E-M5, E-PL3 "(color 3)" - PH)
456
+ 19 => 'Grainy Film II', #11
457
+ 20 => 'Dramatic Tone', # (XZ-1,SZ-31MR)
458
+ 21 => 'Punk', # (SZ-10 magic filter 6)
459
+ 22 => 'Soft Focus 2', # (SZ-10 magic filter 5)
460
+ 23 => 'Sparkle', # (SZ-10 magic filter 7)
461
+ 24 => 'Watercolor', # (SZ-10 magic filter 8)
462
+ 25 => 'Key Line', # (E-M5)
463
+ 27 => 'Miniature', # (SZ-31MR)
464
+ 28 => 'Reflection', # (TG-820,SZ-31MR)
465
+ 29 => 'Fragmented', # (TG-820,SZ-31MR)
466
+ 32 => 'Dramatic Tone B&W', # (E-M5)
467
+ 33 => 'Watercolor II', # (E-PM2)
468
+ );
469
+
470
+ # tag information for WAV "Index" tags
471
+ my %indexInfo = (
472
+ Format => 'int32u',
473
+ RawConv => '$val == 0xffffffff ? undef : $val',
474
+ ValueConv => '$val / 1000',
475
+ PrintConv => 'ConvertDuration($val)',
476
+ );
477
+
478
+ # Olympus tags
479
+ %Image::ExifTool::Olympus::Main = (
480
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
481
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
482
+ WRITABLE => 1,
483
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
484
+ #
485
+ # Tags 0x0000 through 0x0103 are the same as Konica/Minolta cameras (ref 3)
486
+ # (removed 0x0101-0x0103 because they weren't supported by my samples - PH)
487
+ #
488
+ 0x0000 => {
489
+ Name => 'MakerNoteVersion',
490
+ Writable => 'undef',
491
+ },
492
+ 0x0001 => {
493
+ Name => 'MinoltaCameraSettingsOld',
494
+ SubDirectory => {
495
+ TagTable => 'Image::ExifTool::Minolta::CameraSettings',
496
+ ByteOrder => 'BigEndian',
497
+ },
498
+ },
499
+ 0x0003 => {
500
+ Name => 'MinoltaCameraSettings',
501
+ SubDirectory => {
502
+ TagTable => 'Image::ExifTool::Minolta::CameraSettings',
503
+ ByteOrder => 'BigEndian',
504
+ },
505
+ },
506
+ 0x0040 => {
507
+ Name => 'CompressedImageSize',
508
+ Writable => 'int32u',
509
+ },
510
+ 0x0081 => {
511
+ Name => 'PreviewImageData',
512
+ Binary => 1,
513
+ Writable => 0,
514
+ },
515
+ 0x0088 => {
516
+ Name => 'PreviewImageStart',
517
+ Flags => 'IsOffset',
518
+ OffsetPair => 0x0089, # point to associated byte count
519
+ DataTag => 'PreviewImage',
520
+ Writable => 0,
521
+ Protected => 2,
522
+ },
523
+ 0x0089 => {
524
+ Name => 'PreviewImageLength',
525
+ OffsetPair => 0x0088, # point to associated offset
526
+ DataTag => 'PreviewImage',
527
+ Writable => 0,
528
+ Protected => 2,
529
+ },
530
+ 0x0100 => {
531
+ Name => 'ThumbnailImage',
532
+ Writable => 'undef',
533
+ WriteCheck => '$self->CheckImage(\$val)',
534
+ Binary => 1,
535
+ },
536
+ 0x0104 => { Name => 'BodyFirmwareVersion', Writable => 'string' }, #11
537
+ #
538
+ # end Konica/Minolta tags
539
+ #
540
+ 0x0200 => {
541
+ Name => 'SpecialMode',
542
+ Notes => q{
543
+ 3 numbers: 1. Shooting mode: 0=Normal, 2=Fast, 3=Panorama;
544
+ 2. Sequence Number; 3. Panorama Direction: 1=Left-Right,
545
+ 2=Right-Left, 3=Bottom-Top, 4=Top-Bottom
546
+ },
547
+ Writable => 'int32u',
548
+ Count => 3,
549
+ PrintConv => sub { #3
550
+ my $val = shift;
551
+ my @v = split ' ', $val;
552
+ return $val unless @v >= 3;
553
+ my @v0 = ('Normal','Unknown (1)','Fast','Panorama');
554
+ my @v2 = ('(none)','Left to Right','Right to Left','Bottom to Top','Top to Bottom');
555
+ $val = $v0[$v[0]] || "Unknown ($v[0])";
556
+ $val .= ", Sequence: $v[1]";
557
+ $val .= ', Panorama: ' . ($v2[$v[2]] || "Unknown ($v[2])");
558
+ return $val;
559
+ },
560
+ },
561
+ 0x0201 => {
562
+ Name => 'Quality',
563
+ Writable => 'int16u',
564
+ Notes => q{
565
+ Quality values are decoded based on the CameraType tag. All types
566
+ represent SQ, HQ and SHQ as sequential integers, but in general
567
+ SX-type cameras start with a value of 0 for SQ while others start
568
+ with 1
569
+ },
570
+ # These values are different for different camera types
571
+ # (can't have Condition based on CameraType because it isn't known
572
+ # when this tag is extracted)
573
+ PrintConv => sub {
574
+ my ($val, $self) = @_;
575
+ my %t1 = ( # all SX camera types except SX151
576
+ 0 => 'SQ (Low)',
577
+ 1 => 'HQ (Normal)',
578
+ 2 => 'SHQ (Fine)',
579
+ 6 => 'RAW', #PH - C5050WZ
580
+ );
581
+ my %t2 = ( # all other types
582
+ 1 => 'SQ (Low)',
583
+ 2 => 'HQ (Normal)',
584
+ 3 => 'SHQ (Fine)',
585
+ 4 => 'RAW',
586
+ 5 => 'Medium-Fine', #PH
587
+ 6 => 'Small-Fine', #PH
588
+ 33 => 'Uncompressed', #PH - C2100Z
589
+ );
590
+ my $conv = $self->{CameraType} =~ /^SX(?!151\b)/ ? \%t1 : \%t2;
591
+ return $$conv{$val} ? $$conv{$val} : "Unknown ($val)";
592
+ },
593
+ # (no PrintConvInv because we don't know CameraType at write time)
594
+ },
595
+ 0x0202 => {
596
+ Name => 'Macro',
597
+ Writable => 'int16u',
598
+ PrintConv => {
599
+ 0 => 'Off',
600
+ 1 => 'On',
601
+ 2 => 'Super Macro', #6
602
+ },
603
+ },
604
+ 0x0203 => { #6
605
+ Name => 'BWMode',
606
+ Description => 'Black And White Mode',
607
+ Writable => 'int16u',
608
+ PrintConv => \%offOn,
609
+ },
610
+ 0x0204 => {
611
+ Name => 'DigitalZoom',
612
+ Writable => 'rational64u',
613
+ PrintConv => '$val=~/\./ or $val.=".0"; $val',
614
+ PrintConvInv => '$val',
615
+ },
616
+ 0x0205 => { #6
617
+ Name => 'FocalPlaneDiagonal',
618
+ Writable => 'rational64u',
619
+ PrintConv => '"$val mm"',
620
+ PrintConvInv => '$val=~s/\s*mm$//;$val',
621
+ },
622
+ 0x0206 => { Name => 'LensDistortionParams', Writable => 'int16s', Count => 6 }, #6
623
+ 0x0207 => { #PH (was incorrectly FirmwareVersion, ref 1,3)
624
+ Name => 'CameraType',
625
+ Condition => '$$valPt ne "NORMAL"', # FE240, SP510, u730 and u1000 write this
626
+ Writable => 'string',
627
+ DataMember => 'CameraType',
628
+ RawConv => '$self->{CameraType} = $val',
629
+ SeparateTable => 'CameraType',
630
+ ValueConv => '$val =~ s/\s+$//; $val', # ("SX151 " has trailing space)
631
+ ValueConvInv => '$val',
632
+ PrintConv => \%olympusCameraTypes,
633
+ Priority => 0,
634
+ # 'NORMAL' for some models: u730,SP510UZ,u1000,FE240
635
+ },
636
+ 0x0208 => {
637
+ Name => 'TextInfo',
638
+ SubDirectory => {
639
+ TagTable => 'Image::ExifTool::Olympus::TextInfo',
640
+ },
641
+ },
642
+ 0x0209 => {
643
+ Name => 'CameraID',
644
+ Format => 'string', # this really should have been a string
645
+ },
646
+ 0x020b => { Name => 'EpsonImageWidth', Writable => 'int16u' }, #PH
647
+ 0x020c => { Name => 'EpsonImageHeight', Writable => 'int16u' }, #PH
648
+ 0x020d => { Name => 'EpsonSoftware', Writable => 'string' }, #PH
649
+ 0x0280 => { #PH
650
+ %Image::ExifTool::previewImageTagInfo,
651
+ Notes => 'found in ERF and JPG images from some Epson models',
652
+ Format => 'undef',
653
+ Writable => 'int8u',
654
+ },
655
+ 0x0300 => { Name => 'PreCaptureFrames', Writable => 'int16u' }, #6
656
+ 0x0301 => { Name => 'WhiteBoard', Writable => 'int16u' }, #11
657
+ 0x0302 => { #6
658
+ Name => 'OneTouchWB',
659
+ Writable => 'int16u',
660
+ PrintConv => {
661
+ 0 => 'Off',
662
+ 1 => 'On',
663
+ 2 => 'On (Preset)',
664
+ },
665
+ },
666
+ 0x0303 => { Name => 'WhiteBalanceBracket', Writable => 'int16u' }, #11
667
+ 0x0304 => { Name => 'WhiteBalanceBias', Writable => 'int16u' }, #11
668
+ # 0x0305 => 'PrintMaching', ? #11
669
+ 0x0403 => { #11
670
+ Name => 'SceneMode',
671
+ Writable => 'int16u',
672
+ PrintConvColumns => 2,
673
+ PrintConv => {
674
+ 0 => 'Normal',
675
+ 1 => 'Standard',
676
+ 2 => 'Auto',
677
+ 3 => 'Intelligent Auto', #PH (guess, u7040)
678
+ 4 => 'Portrait',
679
+ 5 => 'Landscape+Portrait',
680
+ 6 => 'Landscape',
681
+ 7 => 'Night Scene',
682
+ 8 => 'Night+Portrait',
683
+ 9 => 'Sport',
684
+ 10 => 'Self Portrait',
685
+ 11 => 'Indoor',
686
+ 12 => 'Beach & Snow',
687
+ 13 => 'Beach',
688
+ 14 => 'Snow',
689
+ 15 => 'Self Portrait+Self Timer',
690
+ 16 => 'Sunset',
691
+ 17 => 'Cuisine',
692
+ 18 => 'Documents',
693
+ 19 => 'Candle',
694
+ 20 => 'Fireworks',
695
+ 21 => 'Available Light',
696
+ 22 => 'Vivid',
697
+ 23 => 'Underwater Wide1',
698
+ 24 => 'Underwater Macro',
699
+ 25 => 'Museum',
700
+ 26 => 'Behind Glass',
701
+ 27 => 'Auction',
702
+ 28 => 'Shoot & Select1',
703
+ 29 => 'Shoot & Select2',
704
+ 30 => 'Underwater Wide2',
705
+ 31 => 'Digital Image Stabilization',
706
+ 32 => 'Face Portrait',
707
+ 33 => 'Pet',
708
+ 34 => 'Smile Shot',
709
+ 35 => 'Quick Shutter',
710
+ 43 => 'Hand-held Starlight', #PH (SH-21)
711
+ 100 => 'Panorama', #PH (SH-21)
712
+ 101 => 'Magic Filter', #PH
713
+ 103 => 'HDR', #PH (XZ-2)
714
+ },
715
+ },
716
+ 0x0404 => { Name => 'SerialNumber', Writable => 'string' }, #PH (D595Z, C7070WZ)
717
+ 0x0405 => { Name => 'Firmware', Writable => 'string' }, #11
718
+ 0x0e00 => {
719
+ Name => 'PrintIM',
720
+ Description => 'Print Image Matching',
721
+ Writable => 0,
722
+ SubDirectory => {
723
+ TagTable => 'Image::ExifTool::PrintIM::Main',
724
+ },
725
+ },
726
+ 0x0f00 => {
727
+ Name => 'DataDump',
728
+ Writable => 0,
729
+ Binary => 1,
730
+ },
731
+ 0x0f01 => { #6
732
+ Name => 'DataDump2',
733
+ Writable => 0,
734
+ Binary => 1,
735
+ },
736
+ 0x0f04 => {
737
+ Name => 'ZoomedPreviewStart',
738
+ # NOTE: this tag is currently not updated properly when the image is rewritten!
739
+ OffsetPair => 0xf05,
740
+ DataTag => 'ZoomedPreviewImage',
741
+ Writable => 'int32u',
742
+ Protected => 2,
743
+ },
744
+ 0x0f05 => {
745
+ Name => 'ZoomedPreviewLength',
746
+ OffsetPair => 0xf04,
747
+ DataTag => 'ZoomedPreviewImage',
748
+ Writable => 'int32u',
749
+ Protected => 2,
750
+ },
751
+ 0x0f06 => {
752
+ Name => 'ZoomedPreviewSize',
753
+ Writable => 'int16u',
754
+ Count => 2,
755
+ },
756
+ 0x1000 => { #6
757
+ Name => 'ShutterSpeedValue',
758
+ Writable => 'rational64s',
759
+ Priority => 0,
760
+ ValueConv => 'abs($val)<100 ? 2**(-$val) : 0',
761
+ ValueConvInv => '$val>0 ? -log($val)/log(2) : -100',
762
+ PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
763
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
764
+ },
765
+ 0x1001 => { #6
766
+ Name => 'ISOValue',
767
+ Writable => 'rational64s',
768
+ Priority => 0,
769
+ ValueConv => '100 * 2 ** ($val - 5)',
770
+ ValueConvInv => '$val>0 ? log($val/100)/log(2)+5 : 0',
771
+ PrintConv => 'int($val * 100 + 0.5) / 100',
772
+ PrintConvInv => '$val',
773
+ },
774
+ 0x1002 => { #6
775
+ Name => 'ApertureValue',
776
+ Writable => 'rational64s',
777
+ Priority => 0,
778
+ ValueConv => '2 ** ($val / 2)',
779
+ ValueConvInv => '$val>0 ? 2*log($val)/log(2) : 0',
780
+ PrintConv => 'sprintf("%.1f",$val)',
781
+ PrintConvInv => '$val',
782
+ },
783
+ 0x1003 => { #6
784
+ Name => 'BrightnessValue',
785
+ Writable => 'rational64s',
786
+ Priority => 0,
787
+ },
788
+ 0x1004 => { #3
789
+ Name => 'FlashMode',
790
+ Writable => 'int16u',
791
+ PrintConv => {
792
+ 2 => 'On', #PH
793
+ 3 => 'Off', #PH
794
+ },
795
+ },
796
+ 0x1005 => { #6
797
+ Name => 'FlashDevice',
798
+ Writable => 'int16u',
799
+ PrintConv => {
800
+ 0 => 'None',
801
+ 1 => 'Internal',
802
+ 4 => 'External',
803
+ 5 => 'Internal + External',
804
+ },
805
+ },
806
+ 0x1006 => { #6
807
+ Name =>'ExposureCompensation',
808
+ Writable => 'rational64s',
809
+ },
810
+ 0x1007 => { Name => 'SensorTemperature',Writable => 'int16s' }, #6 (E-10, E-20 and C2500L - numbers usually around 30-40)
811
+ 0x1008 => { Name => 'LensTemperature', Writable => 'int16s' }, #6
812
+ 0x1009 => { Name => 'LightCondition', Writable => 'int16u' }, #11
813
+ 0x100a => { #11
814
+ Name => 'FocusRange',
815
+ Writable => 'int16u',
816
+ PrintConv => {
817
+ 0 => 'Normal',
818
+ 1 => 'Macro',
819
+ },
820
+ },
821
+ 0x100b => { #6
822
+ Name => 'FocusMode',
823
+ Writable => 'int16u',
824
+ PrintConv => {
825
+ 0 => 'Auto',
826
+ 1 => 'Manual',
827
+ },
828
+ },
829
+ 0x100c => { #6
830
+ Name => 'ManualFocusDistance',
831
+ Writable => 'rational64u',
832
+ PrintConv => '"$val mm"', #11
833
+ PrintConvInv => '$val=~s/\s*mm$//; $val',
834
+ },
835
+ 0x100d => { Name => 'ZoomStepCount', Writable => 'int16u' }, #6
836
+ 0x100e => { Name => 'FocusStepCount', Writable => 'int16u' }, #6
837
+ 0x100f => { #6
838
+ Name => 'Sharpness',
839
+ Writable => 'int16u',
840
+ Priority => 0,
841
+ PrintConv => {
842
+ 0 => 'Normal',
843
+ 1 => 'Hard',
844
+ 2 => 'Soft',
845
+ },
846
+ },
847
+ 0x1010 => { Name => 'FlashChargeLevel', Writable => 'int16u' }, #6
848
+ 0x1011 => { #3
849
+ Name => 'ColorMatrix',
850
+ Writable => 'int16u',
851
+ Format => 'int16s',
852
+ Count => 9,
853
+ },
854
+ 0x1012 => { Name => 'BlackLevel', Writable => 'int16u', Count => 4 }, #3
855
+ 0x1013 => { #11
856
+ Name => 'ColorTemperatureBG',
857
+ Writable => 'int16u',
858
+ Unknown => 1, # (doesn't look like a temperature)
859
+ },
860
+ 0x1014 => { #11
861
+ Name => 'ColorTemperatureRG',
862
+ Writable => 'int16u',
863
+ Unknown => 1, # (doesn't look like a temperature)
864
+ },
865
+ 0x1015 => { #6
866
+ Name => 'WBMode',
867
+ Writable => 'int16u',
868
+ Count => 2,
869
+ PrintConvColumns => 2,
870
+ PrintConv => {
871
+ '1' => 'Auto',
872
+ '1 0' => 'Auto',
873
+ '1 2' => 'Auto (2)',
874
+ '1 4' => 'Auto (4)',
875
+ '2 2' => '3000 Kelvin',
876
+ '2 3' => '3700 Kelvin',
877
+ '2 4' => '4000 Kelvin',
878
+ '2 5' => '4500 Kelvin',
879
+ '2 6' => '5500 Kelvin',
880
+ '2 7' => '6500 Kelvin',
881
+ '2 8' => '7500 Kelvin',
882
+ '3 0' => 'One-touch',
883
+ },
884
+ },
885
+ 0x1017 => { #2
886
+ Name => 'RedBalance',
887
+ Writable => 'int16u',
888
+ Count => 2,
889
+ ValueConv => '$val=~s/ .*//; $val / 256',
890
+ ValueConvInv => '$val*=256;"$val 64"',
891
+ },
892
+ 0x1018 => { #2
893
+ Name => 'BlueBalance',
894
+ Writable => 'int16u',
895
+ Count => 2,
896
+ ValueConv => '$val=~s/ .*//; $val / 256',
897
+ ValueConvInv => '$val*=256;"$val 64"',
898
+ },
899
+ 0x1019 => { Name => 'ColorMatrixNumber', Writable => 'int16u' }, #11
900
+ # 0x101a is same as CameraID ("OLYMPUS DIGITAL CAMERA") for C2500L - PH
901
+ 0x101a => { Name => 'SerialNumber', Writable => 'string' }, #3
902
+ 0x101b => { #11
903
+ Name => 'ExternalFlashAE1_0',
904
+ Writable => 'int32u',
905
+ Unknown => 1, # (what are these?)
906
+ },
907
+ 0x101c => { Name => 'ExternalFlashAE2_0', Writable => 'int32u', Unknown => 1 }, #11
908
+ 0x101d => { Name => 'InternalFlashAE1_0', Writable => 'int32u', Unknown => 1 }, #11
909
+ 0x101e => { Name => 'InternalFlashAE2_0', Writable => 'int32u', Unknown => 1 }, #11
910
+ 0x101f => { Name => 'ExternalFlashAE1', Writable => 'int32u', Unknown => 1 }, #11
911
+ 0x1020 => { Name => 'ExternalFlashAE2', Writable => 'int32u', Unknown => 1 }, #11
912
+ 0x1021 => { Name => 'InternalFlashAE1', Writable => 'int32u', Unknown => 1 }, #11
913
+ 0x1022 => { Name => 'InternalFlashAE2', Writable => 'int32u', Unknown => 1 }, #11
914
+ 0x1023 => { Name => 'FlashExposureComp', Writable => 'rational64s' }, #6
915
+ 0x1024 => { Name => 'InternalFlashTable', Writable => 'int16u' }, #11
916
+ 0x1025 => { Name => 'ExternalFlashGValue', Writable => 'rational64s' }, #11
917
+ 0x1026 => { #6
918
+ Name => 'ExternalFlashBounce',
919
+ Writable => 'int16u',
920
+ PrintConv => {
921
+ 0 => 'No',
922
+ 1 => 'Yes',
923
+ },
924
+ },
925
+ 0x1027 => { Name => 'ExternalFlashZoom', Writable => 'int16u' }, #6
926
+ 0x1028 => { Name => 'ExternalFlashMode', Writable => 'int16u' }, #6
927
+ 0x1029 => { #3
928
+ Name => 'Contrast',
929
+ Writable => 'int16u',
930
+ PrintConv => { #PH (works with E1)
931
+ 0 => 'High',
932
+ 1 => 'Normal',
933
+ 2 => 'Low',
934
+ },
935
+ },
936
+ 0x102a => { Name => 'SharpnessFactor', Writable => 'int16u' }, #3
937
+ 0x102b => { Name => 'ColorControl', Writable => 'int16u', Count => 6 }, #3
938
+ 0x102c => { Name => 'ValidBits', Writable => 'int16u', Count => 2 }, #3
939
+ 0x102d => { Name => 'CoringFilter', Writable => 'int16u' }, #3
940
+ 0x102e => { Name => 'OlympusImageWidth', Writable => 'int32u' }, #PH
941
+ 0x102f => { Name => 'OlympusImageHeight', Writable => 'int32u' }, #PH
942
+ 0x1030 => { Name => 'SceneDetect', Writable => 'int16u' }, #11
943
+ 0x1031 => { #11
944
+ Name => 'SceneArea',
945
+ Writable => 'int32u',
946
+ Count => 8,
947
+ Unknown => 1, # (numbers don't make much sense?)
948
+ },
949
+ # 0x1032 HAFFINAL? #11
950
+ 0x1033 => { #11
951
+ Name => 'SceneDetectData',
952
+ Writable => 'int32u',
953
+ Count => 720,
954
+ Binary => 1,
955
+ Unknown => 1, # (but what does it mean?)
956
+ },
957
+ 0x1034 => { Name => 'CompressionRatio', Writable => 'rational64u' }, #3
958
+ 0x1035 => { #6
959
+ Name => 'PreviewImageValid',
960
+ Writable => 'int32u',
961
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
962
+ },
963
+ 0x1036 => { #6
964
+ Name => 'PreviewImageStart',
965
+ Flags => 'IsOffset',
966
+ OffsetPair => 0x1037, # point to associated byte count
967
+ DataTag => 'PreviewImage',
968
+ Writable => 'int32u',
969
+ Protected => 2,
970
+ },
971
+ 0x1037 => { #6
972
+ # (may contain data from multiple previews - PH, FE320)
973
+ Name => 'PreviewImageLength',
974
+ OffsetPair => 0x1036, # point to associated offset
975
+ DataTag => 'PreviewImage',
976
+ Writable => 'int32u',
977
+ Protected => 2,
978
+ },
979
+ 0x1038 => { Name => 'AFResult', Writable => 'int16u' }, #11
980
+ 0x1039 => { #6
981
+ Name => 'CCDScanMode',
982
+ Writable => 'int16u',
983
+ PrintConv => {
984
+ 0 => 'Interlaced',
985
+ 1 => 'Progressive',
986
+ },
987
+ },
988
+ 0x103a => { #6
989
+ Name => 'NoiseReduction',
990
+ Writable => 'int16u',
991
+ PrintConv => \%offOn,
992
+ },
993
+ 0x103b => { Name => 'FocusStepInfinity', Writable => 'int16u' }, #6
994
+ 0x103c => { Name => 'FocusStepNear', Writable => 'int16u' }, #6
995
+ 0x103d => { Name => 'LightValueCenter', Writable => 'rational64s' }, #11
996
+ 0x103e => { Name => 'LightValuePeriphery', Writable => 'rational64s' }, #11
997
+ 0x103f => { #11
998
+ Name => 'FieldCount',
999
+ Writable => 'int16u',
1000
+ Unknown => 1, # (but what does it mean?)
1001
+ },
1002
+ #
1003
+ # Olympus really screwed up the format of the following subdirectories (for the
1004
+ # E-1 and E-300 anyway). Not only is the subdirectory value data not included in
1005
+ # the size, but also the count is 2 bytes short for the subdirectory itself
1006
+ # (presumably the Olympus programmers forgot about the 2-byte entry count at the
1007
+ # start of the subdirectory). This mess is straightened out and these subdirs
1008
+ # are written properly when ExifTool rewrites the file. Note that this problem
1009
+ # has been fixed by Olympus in the new-style IFD maker notes since a standard
1010
+ # SubIFD offset value is used. As written by the camera, the old style
1011
+ # directories have format 'undef' or 'string', and the new style has format
1012
+ # 'ifd'. However, some older versions of exiftool may have rewritten the new
1013
+ # style as 'int32u', so handle both cases. - PH
1014
+ #
1015
+ 0x2010 => [ #PH
1016
+ {
1017
+ Name => 'Equipment',
1018
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1019
+ NestedHtmlDump => 2, # (so HtmlDump doesn't show these as double-referenced)
1020
+ SubDirectory => {
1021
+ TagTable => 'Image::ExifTool::Olympus::Equipment',
1022
+ ByteOrder => 'Unknown',
1023
+ },
1024
+ },
1025
+ {
1026
+ Name => 'EquipmentIFD',
1027
+ Groups => { 1 => 'MakerNotes' }, # SubIFD needs group 1 set
1028
+ Flags => 'SubIFD',
1029
+ FixFormat => 'ifd',
1030
+ SubDirectory => {
1031
+ TagTable => 'Image::ExifTool::Olympus::Equipment',
1032
+ Start => '$val',
1033
+ },
1034
+ },
1035
+ ],
1036
+ 0x2020 => [ #PH
1037
+ {
1038
+ Name => 'CameraSettings',
1039
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1040
+ NestedHtmlDump => 2,
1041
+ SubDirectory => {
1042
+ TagTable => 'Image::ExifTool::Olympus::CameraSettings',
1043
+ ByteOrder => 'Unknown',
1044
+ },
1045
+ },
1046
+ {
1047
+ Name => 'CameraSettingsIFD',
1048
+ Groups => { 1 => 'MakerNotes' },
1049
+ Flags => 'SubIFD',
1050
+ FixFormat => 'ifd',
1051
+ SubDirectory => {
1052
+ TagTable => 'Image::ExifTool::Olympus::CameraSettings',
1053
+ Start => '$val',
1054
+ },
1055
+ },
1056
+ ],
1057
+ 0x2030 => [ #PH
1058
+ {
1059
+ Name => 'RawDevelopment',
1060
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1061
+ NestedHtmlDump => 2,
1062
+ SubDirectory => {
1063
+ TagTable => 'Image::ExifTool::Olympus::RawDevelopment',
1064
+ ByteOrder => 'Unknown',
1065
+ },
1066
+ },
1067
+ {
1068
+ Name => 'RawDevelopmentIFD',
1069
+ Groups => { 1 => 'MakerNotes' },
1070
+ Flags => 'SubIFD',
1071
+ FixFormat => 'ifd',
1072
+ SubDirectory => {
1073
+ TagTable => 'Image::ExifTool::Olympus::RawDevelopment',
1074
+ Start => '$val',
1075
+ },
1076
+ },
1077
+ ],
1078
+ 0x2031 => [ #11
1079
+ {
1080
+ Name => 'RawDev2',
1081
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1082
+ NestedHtmlDump => 2,
1083
+ SubDirectory => {
1084
+ TagTable => 'Image::ExifTool::Olympus::RawDevelopment2',
1085
+ ByteOrder => 'Unknown',
1086
+ },
1087
+ },
1088
+ {
1089
+ Name => 'RawDev2IFD',
1090
+ Groups => { 1 => 'MakerNotes' },
1091
+ Flags => 'SubIFD',
1092
+ FixFormat => 'ifd',
1093
+ SubDirectory => {
1094
+ TagTable => 'Image::ExifTool::Olympus::RawDevelopment2',
1095
+ Start => '$val',
1096
+ },
1097
+ },
1098
+ ],
1099
+ 0x2040 => [ #PH
1100
+ {
1101
+ Name => 'ImageProcessing',
1102
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1103
+ NestedHtmlDump => 2,
1104
+ SubDirectory => {
1105
+ TagTable => 'Image::ExifTool::Olympus::ImageProcessing',
1106
+ ByteOrder => 'Unknown',
1107
+ },
1108
+ },
1109
+ {
1110
+ Name => 'ImageProcessingIFD',
1111
+ Groups => { 1 => 'MakerNotes' },
1112
+ Flags => 'SubIFD',
1113
+ FixFormat => 'ifd',
1114
+ SubDirectory => {
1115
+ TagTable => 'Image::ExifTool::Olympus::ImageProcessing',
1116
+ Start => '$val',
1117
+ },
1118
+ },
1119
+ ],
1120
+ 0x2050 => [ #PH
1121
+ {
1122
+ Name => 'FocusInfo',
1123
+ Condition => '$format ne "ifd" and $format ne "int32u" and not $$self{OlympusCAMER}',
1124
+ NestedHtmlDump => 2,
1125
+ SubDirectory => {
1126
+ TagTable => 'Image::ExifTool::Olympus::FocusInfo',
1127
+ ByteOrder => 'Unknown',
1128
+ },
1129
+ },
1130
+ {
1131
+ Name => 'FocusInfoIFD',
1132
+ Condition => 'not $$self{OlympusCAMER}',
1133
+ Groups => { 1 => 'MakerNotes' },
1134
+ Flags => 'SubIFD',
1135
+ FixFormat => 'ifd',
1136
+ SubDirectory => {
1137
+ TagTable => 'Image::ExifTool::Olympus::FocusInfo',
1138
+ Start => '$val',
1139
+ },
1140
+ },
1141
+ {
1142
+ # ASCII-based camera parameters if makernotes starts with "CAMER\0"
1143
+ # (or for Sony models starting with "SONY PI\0" or "PREMI\0")
1144
+ Name => 'CameraParameters',
1145
+ Writable => 'undef',
1146
+ Binary => 1,
1147
+ },
1148
+ ],
1149
+ 0x2100 => [
1150
+ { #11
1151
+ Name => 'Olympus2100',
1152
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1153
+ NestedHtmlDump => 2,
1154
+ SubDirectory => {
1155
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1156
+ ByteOrder => 'Unknown',
1157
+ },
1158
+ },
1159
+ { #PH
1160
+ Name => 'Olympus2100IFD',
1161
+ Groups => { 1 => 'MakerNotes' },
1162
+ Flags => 'SubIFD',
1163
+ FixFormat => 'ifd',
1164
+ SubDirectory => {
1165
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1166
+ ByteOrder => 'Unknown',
1167
+ Start => '$val',
1168
+ },
1169
+ },
1170
+ ],
1171
+ 0x2200 => [
1172
+ { #11
1173
+ Name => 'Olympus2200',
1174
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1175
+ NestedHtmlDump => 2,
1176
+ SubDirectory => {
1177
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1178
+ ByteOrder => 'Unknown',
1179
+ },
1180
+ },
1181
+ { #PH
1182
+ Name => 'Olympus2200IFD',
1183
+ Groups => { 1 => 'MakerNotes' },
1184
+ Flags => 'SubIFD',
1185
+ FixFormat => 'ifd',
1186
+ SubDirectory => {
1187
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1188
+ ByteOrder => 'Unknown',
1189
+ Start => '$val',
1190
+ },
1191
+ },
1192
+ ],
1193
+ 0x2300 => [
1194
+ { #11
1195
+ Name => 'Olympus2300',
1196
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1197
+ NestedHtmlDump => 2,
1198
+ SubDirectory => {
1199
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1200
+ ByteOrder => 'Unknown',
1201
+ },
1202
+ },
1203
+ { #PH
1204
+ Name => 'Olympus2300IFD',
1205
+ Groups => { 1 => 'MakerNotes' },
1206
+ Flags => 'SubIFD',
1207
+ FixFormat => 'ifd',
1208
+ SubDirectory => {
1209
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1210
+ ByteOrder => 'Unknown',
1211
+ Start => '$val',
1212
+ },
1213
+ },
1214
+ ],
1215
+ 0x2400 => [
1216
+ { #11
1217
+ Name => 'Olympus2400',
1218
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1219
+ NestedHtmlDump => 2,
1220
+ SubDirectory => {
1221
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1222
+ ByteOrder => 'Unknown',
1223
+ },
1224
+ },
1225
+ { #PH
1226
+ Name => 'Olympus2400IFD',
1227
+ Groups => { 1 => 'MakerNotes' },
1228
+ Flags => 'SubIFD',
1229
+ FixFormat => 'ifd',
1230
+ SubDirectory => {
1231
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1232
+ ByteOrder => 'Unknown',
1233
+ Start => '$val',
1234
+ },
1235
+ },
1236
+ ],
1237
+ 0x2500 => [
1238
+ { #11
1239
+ Name => 'Olympus2500',
1240
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1241
+ NestedHtmlDump => 2,
1242
+ SubDirectory => {
1243
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1244
+ ByteOrder => 'Unknown',
1245
+ },
1246
+ },
1247
+ { #PH
1248
+ Name => 'Olympus2500IFD',
1249
+ Groups => { 1 => 'MakerNotes' },
1250
+ Flags => 'SubIFD',
1251
+ FixFormat => 'ifd',
1252
+ SubDirectory => {
1253
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1254
+ ByteOrder => 'Unknown',
1255
+ Start => '$val',
1256
+ },
1257
+ },
1258
+ ],
1259
+ 0x2600 => [
1260
+ { #11
1261
+ Name => 'Olympus2600',
1262
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1263
+ NestedHtmlDump => 2,
1264
+ SubDirectory => {
1265
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1266
+ ByteOrder => 'Unknown',
1267
+ },
1268
+ },
1269
+ { #PH
1270
+ Name => 'Olympus2600IFD',
1271
+ Groups => { 1 => 'MakerNotes' },
1272
+ Flags => 'SubIFD',
1273
+ FixFormat => 'ifd',
1274
+ SubDirectory => {
1275
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1276
+ ByteOrder => 'Unknown',
1277
+ Start => '$val',
1278
+ },
1279
+ },
1280
+ ],
1281
+ 0x2700 => [
1282
+ { #11
1283
+ Name => 'Olympus2700',
1284
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1285
+ NestedHtmlDump => 2,
1286
+ SubDirectory => {
1287
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1288
+ ByteOrder => 'Unknown',
1289
+ },
1290
+ },
1291
+ { #PH
1292
+ Name => 'Olympus2700IFD',
1293
+ Groups => { 1 => 'MakerNotes' },
1294
+ Flags => 'SubIFD',
1295
+ FixFormat => 'ifd',
1296
+ SubDirectory => {
1297
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1298
+ ByteOrder => 'Unknown',
1299
+ Start => '$val',
1300
+ },
1301
+ },
1302
+ ],
1303
+ 0x2800 => [
1304
+ { #11
1305
+ Name => 'Olympus2800',
1306
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1307
+ NestedHtmlDump => 2,
1308
+ SubDirectory => {
1309
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1310
+ ByteOrder => 'Unknown',
1311
+ },
1312
+ },
1313
+ { #PH
1314
+ Name => 'Olympus2800IFD',
1315
+ Groups => { 1 => 'MakerNotes' },
1316
+ Flags => 'SubIFD',
1317
+ FixFormat => 'ifd',
1318
+ SubDirectory => {
1319
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1320
+ ByteOrder => 'Unknown',
1321
+ Start => '$val',
1322
+ },
1323
+ },
1324
+ ],
1325
+ 0x2900 => [
1326
+ { #11
1327
+ Name => 'Olympus2900',
1328
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1329
+ NestedHtmlDump => 2,
1330
+ SubDirectory => {
1331
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1332
+ ByteOrder => 'Unknown',
1333
+ },
1334
+ },
1335
+ { #PH
1336
+ Name => 'Olympus2900IFD',
1337
+ Groups => { 1 => 'MakerNotes' },
1338
+ Flags => 'SubIFD',
1339
+ FixFormat => 'ifd',
1340
+ SubDirectory => {
1341
+ TagTable => 'Image::ExifTool::Olympus::FETags',
1342
+ ByteOrder => 'Unknown',
1343
+ Start => '$val',
1344
+ },
1345
+ },
1346
+ ],
1347
+ 0x3000 => [
1348
+ { #6
1349
+ Name => 'RawInfo',
1350
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1351
+ NestedHtmlDump => 2,
1352
+ SubDirectory => {
1353
+ TagTable => 'Image::ExifTool::Olympus::RawInfo',
1354
+ ByteOrder => 'Unknown',
1355
+ },
1356
+ },
1357
+ { #PH
1358
+ Name => 'RawInfoIFD',
1359
+ Groups => { 1 => 'MakerNotes' },
1360
+ Flags => 'SubIFD',
1361
+ FixFormat => 'ifd',
1362
+ SubDirectory => {
1363
+ TagTable => 'Image::ExifTool::Olympus::RawInfo',
1364
+ Start => '$val',
1365
+ },
1366
+ },
1367
+ ],
1368
+ 0x4000 => [ #PH
1369
+ {
1370
+ Name => 'MainInfo',
1371
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1372
+ NestedHtmlDump => 2,
1373
+ SubDirectory => {
1374
+ TagTable => 'Image::ExifTool::Olympus::Main',
1375
+ ByteOrder => 'Unknown',
1376
+ },
1377
+ },
1378
+ {
1379
+ Name => 'MainInfoIFD',
1380
+ Groups => { 1 => 'MakerNotes' },
1381
+ Flags => 'SubIFD',
1382
+ FixFormat => 'ifd',
1383
+ SubDirectory => {
1384
+ TagTable => 'Image::ExifTool::Olympus::Main',
1385
+ Start => '$val',
1386
+ },
1387
+ },
1388
+ ],
1389
+ 0x5000 => [ #PH
1390
+ {
1391
+ Name => 'UnknownInfo',
1392
+ Condition => '$format ne "ifd" and $format ne "int32u"',
1393
+ NestedHtmlDump => 2,
1394
+ SubDirectory => {
1395
+ TagTable => 'Image::ExifTool::Olympus::UnknownInfo',
1396
+ ByteOrder => 'Unknown',
1397
+ },
1398
+ },
1399
+ {
1400
+ Name => 'UnknownInfoIFD',
1401
+ Groups => { 1 => 'MakerNotes' },
1402
+ Flags => 'SubIFD',
1403
+ FixFormat => 'ifd',
1404
+ SubDirectory => {
1405
+ TagTable => 'Image::ExifTool::Olympus::UnknownInfo',
1406
+ Start => '$val',
1407
+ },
1408
+ },
1409
+ ],
1410
+ );
1411
+
1412
+ # TextInfo tags
1413
+ %Image::ExifTool::Olympus::TextInfo = (
1414
+ PROCESS_PROC => \&Image::ExifTool::APP12::ProcessAPP12,
1415
+ NOTES => q{
1416
+ This information is in text format (similar to APP12 information, but with
1417
+ spaces instead of linefeeds). Below are tags which have been observed, but
1418
+ any information found here will be extracted, even if the tag is not listed.
1419
+ },
1420
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Olympus', 2 => 'Image' },
1421
+ Resolution => { },
1422
+ Type => {
1423
+ Name => 'CameraType',
1424
+ Groups => { 2 => 'Camera' },
1425
+ DataMember => 'CameraType',
1426
+ RawConv => '$self->{CameraType} = $val',
1427
+ SeparateTable => 'CameraType',
1428
+ PrintConv => \%olympusCameraTypes,
1429
+ },
1430
+ );
1431
+
1432
+ # Olympus Equipment IFD
1433
+ %Image::ExifTool::Olympus::Equipment = (
1434
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
1435
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1436
+ WRITABLE => 1,
1437
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1438
+ 0x000 => { #PH
1439
+ Name => 'EquipmentVersion',
1440
+ Writable => 'undef',
1441
+ RawConv => '$val=~s/\0+$//; $val', # (may be null terminated)
1442
+ Count => 4,
1443
+ },
1444
+ 0x100 => { #6
1445
+ Name => 'CameraType2',
1446
+ Writable => 'string',
1447
+ Count => 6,
1448
+ SeparateTable => 'CameraType',
1449
+ PrintConv => \%olympusCameraTypes,
1450
+ },
1451
+ 0x101 => { #PH
1452
+ Name => 'SerialNumber',
1453
+ Writable => 'string',
1454
+ Count => 32,
1455
+ PrintConv => '$val=~s/\s+$//;$val',
1456
+ PrintConvInv => 'pack("A31",$val)', # pad with spaces to 31 chars
1457
+ },
1458
+ 0x102 => { #6
1459
+ Name => 'InternalSerialNumber',
1460
+ Notes => '16 digits: 0-3=model, 4=year, 5-6=month, 8-12=unit number',
1461
+ Writable => 'string',
1462
+ Count => 32,
1463
+ },
1464
+ 0x103 => { #6
1465
+ Name => 'FocalPlaneDiagonal',
1466
+ Writable => 'rational64u',
1467
+ PrintConv => '"$val mm"',
1468
+ PrintConvInv => '$val=~s/\s*mm$//;$val',
1469
+ },
1470
+ 0x104 => { #6
1471
+ Name => 'BodyFirmwareVersion',
1472
+ Writable => 'int32u',
1473
+ PrintConv => '$val=sprintf("%x",$val);$val=~s/(.{3})$/\.$1/;$val',
1474
+ PrintConvInv => '$val=sprintf("%.3f",$val);$val=~s/\.//;hex($val)',
1475
+ },
1476
+ 0x201 => { #6
1477
+ Name => 'LensType',
1478
+ Writable => 'int8u',
1479
+ Count => 6,
1480
+ Notes => q{
1481
+ 6 numbers: 0. Make, 1. Unknown, 2. Model, 3. Sub-model, 4-5. Unknown. Only
1482
+ the Make, Model and Sub-model are used to identify the lens type
1483
+ },
1484
+ SeparateTable => 'LensType',
1485
+ # Have seen these values for the unknown numbers:
1486
+ # 1: 0
1487
+ # 4: 0, 2(Olympus lenses for which I have also seen 0 for this number)
1488
+ # 5: 0, 16(new Lumix lenses)
1489
+ ValueConv => 'my @a=split(" ",$val); sprintf("%x %.2x %.2x",@a[0,2,3])',
1490
+ # set unknown values to zero when writing
1491
+ ValueConvInv => 'my @a=split(" ",$val); hex($a[0])." 0 ".hex($a[1]).hex($a[2])." 0 0"',
1492
+ PrintConv => \%olympusLensTypes,
1493
+ },
1494
+ # apparently the first 3 digits of the lens s/n give the type (ref 4):
1495
+ # 010 = 50macro
1496
+ # 040 = EC-14
1497
+ # 050 = 14-54
1498
+ # 060 = 50-200
1499
+ # 080 = EX-25
1500
+ # 101 = FL-50
1501
+ # 272 = EC-20 #7
1502
+ 0x202 => { #PH
1503
+ Name => 'LensSerialNumber',
1504
+ Writable => 'string',
1505
+ Count => 32,
1506
+ PrintConv => '$val=~s/\s+$//;$val',
1507
+ PrintConvInv => 'pack("A31",$val)', # pad with spaces to 31 chars
1508
+ },
1509
+ 0x203 => { Name => 'LensModel', Writable => 'string' }, #17
1510
+ 0x204 => { #6
1511
+ Name => 'LensFirmwareVersion',
1512
+ Writable => 'int32u',
1513
+ PrintConv => '$val=sprintf("%x",$val);$val=~s/(.{3})$/\.$1/;$val',
1514
+ PrintConvInv => '$val=sprintf("%.3f",$val);$val=~s/\.//;hex($val)',
1515
+ },
1516
+ 0x205 => { #11
1517
+ Name => 'MaxApertureAtMinFocal',
1518
+ Writable => 'int16u',
1519
+ ValueConv => '$val ? sqrt(2)**($val/256) : 0',
1520
+ ValueConvInv => '$val>0 ? int(512*log($val)/log(2)+0.5) : 0',
1521
+ PrintConv => 'sprintf("%.1f",$val)',
1522
+ PrintConvInv => '$val',
1523
+ },
1524
+ 0x206 => { #5
1525
+ Name => 'MaxApertureAtMaxFocal',
1526
+ Writable => 'int16u',
1527
+ ValueConv => '$val ? sqrt(2)**($val/256) : 0',
1528
+ ValueConvInv => '$val>0 ? int(512*log($val)/log(2)+0.5) : 0',
1529
+ PrintConv => 'sprintf("%.1f",$val)',
1530
+ PrintConvInv => '$val',
1531
+ },
1532
+ 0x207 => { Name => 'MinFocalLength', Writable => 'int16u' }, #PH
1533
+ 0x208 => { Name => 'MaxFocalLength', Writable => 'int16u' }, #PH
1534
+ 0x20a => { #9
1535
+ Name => 'MaxAperture', # (at current focal length)
1536
+ Writable => 'int16u',
1537
+ ValueConv => '$val ? sqrt(2)**($val/256) : 0',
1538
+ ValueConvInv => '$val>0 ? int(512*log($val)/log(2)+0.5) : 0',
1539
+ PrintConv => 'sprintf("%.1f",$val)',
1540
+ PrintConvInv => '$val',
1541
+ },
1542
+ 0x20b => { #11
1543
+ Name => 'LensProperties',
1544
+ Writable => 'int16u',
1545
+ PrintConv => 'sprintf("0x%x",$val)',
1546
+ PrintConvInv => '$val',
1547
+ },
1548
+ 0x301 => { #6
1549
+ Name => 'Extender',
1550
+ Writable => 'int8u',
1551
+ Count => 6,
1552
+ Notes => q{
1553
+ 6 numbers: 0. Make, 1. Unknown, 2. Model, 3. Sub-model, 4-5. Unknown. Only
1554
+ the Make and Model are used to identify the extender
1555
+ },
1556
+ ValueConv => 'my @a=split(" ",$val); sprintf("%x %.2x",@a[0,2])',
1557
+ ValueConvInv => 'my @a=split(" ",$val); hex($a[0])." 0 ".hex($a[1])." 0 0 0"',
1558
+ PrintConv => {
1559
+ '0 00' => 'None',
1560
+ '0 04' => 'Olympus Zuiko Digital EC-14 1.4x Teleconverter',
1561
+ '0 08' => 'Olympus EX-25 Extension Tube',
1562
+ '0 10' => 'Olympus Zuiko Digital EC-20 2.0x Teleconverter', #7
1563
+ },
1564
+ },
1565
+ 0x302 => { Name => 'ExtenderSerialNumber', Writable => 'string', Count => 32 }, #4
1566
+ 0x303 => { Name => 'ExtenderModel', Writable => 'string' }, #9
1567
+ 0x304 => { #6
1568
+ Name => 'ExtenderFirmwareVersion',
1569
+ Writable => 'int32u',
1570
+ PrintConv => '$val=sprintf("%x",$val);$val=~s/(.{3})$/\.$1/;$val',
1571
+ PrintConvInv => '$val=sprintf("%.3f",$val);$val=~s/\.//;hex($val)',
1572
+ },
1573
+ 0x403 => { #http://dev.exiv2.org/issues/870
1574
+ Name => 'ConversionLens',
1575
+ Writable => 'string',
1576
+ # (observed values: '','TCON','FCON','WCON')
1577
+ },
1578
+ 0x1000 => { #6
1579
+ Name => 'FlashType',
1580
+ Writable => 'int16u',
1581
+ PrintConv => {
1582
+ 0 => 'None',
1583
+ 2 => 'Simple E-System',
1584
+ 3 => 'E-System',
1585
+ },
1586
+ },
1587
+ 0x1001 => { #6
1588
+ Name => 'FlashModel',
1589
+ Writable => 'int16u',
1590
+ PrintConvColumns => 2,
1591
+ PrintConv => {
1592
+ 0 => 'None',
1593
+ 1 => 'FL-20', # (or subtronic digital or Inon UW flash, ref 11)
1594
+ 2 => 'FL-50', # (or Metzblitz+SCA or Cullmann 34, ref 11)
1595
+ 3 => 'RF-11',
1596
+ 4 => 'TF-22',
1597
+ 5 => 'FL-36',
1598
+ 6 => 'FL-50R', #11 (or Metz mecablitz digital)
1599
+ 7 => 'FL-36R', #11
1600
+ # have seen value of 9 - PH
1601
+ },
1602
+ },
1603
+ 0x1002 => { #6
1604
+ Name => 'FlashFirmwareVersion',
1605
+ Writable => 'int32u',
1606
+ PrintConv => '$val=sprintf("%x",$val);$val=~s/(.{3})$/\.$1/;$val',
1607
+ PrintConvInv => '$val=sprintf("%.3f",$val);$val=~s/\.//;hex($val)',
1608
+ },
1609
+ 0x1003 => { Name => 'FlashSerialNumber', Writable => 'string', Count => 32 }, #4
1610
+ );
1611
+
1612
+ # Olympus camera settings IFD
1613
+ %Image::ExifTool::Olympus::CameraSettings = (
1614
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
1615
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1616
+ WRITABLE => 1,
1617
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1618
+ 0x000 => { #PH
1619
+ Name => 'CameraSettingsVersion',
1620
+ Writable => 'undef',
1621
+ RawConv => '$val=~s/\0+$//; $val', # (may be null terminated)
1622
+ Count => 4,
1623
+ },
1624
+ 0x100 => { #6
1625
+ Name => 'PreviewImageValid',
1626
+ Writable => 'int32u',
1627
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
1628
+ },
1629
+ 0x101 => { #PH
1630
+ Name => 'PreviewImageStart',
1631
+ Flags => 'IsOffset',
1632
+ OffsetPair => 0x102,
1633
+ DataTag => 'PreviewImage',
1634
+ Writable => 'int32u',
1635
+ Protected => 2,
1636
+ },
1637
+ 0x102 => { #PH
1638
+ Name => 'PreviewImageLength',
1639
+ OffsetPair => 0x101,
1640
+ DataTag => 'PreviewImage',
1641
+ Writable => 'int32u',
1642
+ Protected => 2,
1643
+ },
1644
+ 0x200 => { #4
1645
+ Name => 'ExposureMode',
1646
+ Writable => 'int16u',
1647
+ PrintConv => {
1648
+ 1 => 'Manual',
1649
+ 2 => 'Program', #6
1650
+ 3 => 'Aperture-priority AE',
1651
+ 4 => 'Shutter speed priority AE',
1652
+ 5 => 'Program-shift', #6
1653
+ }
1654
+ },
1655
+ 0x201 => { #6
1656
+ Name => 'AELock',
1657
+ Writable => 'int16u',
1658
+ PrintConv => \%offOn,
1659
+ },
1660
+ 0x202 => { #PH/4
1661
+ Name => 'MeteringMode',
1662
+ Writable => 'int16u',
1663
+ PrintConv => {
1664
+ 2 => 'Center-weighted average',
1665
+ 3 => 'Spot',
1666
+ 5 => 'ESP',
1667
+ 261 => 'Pattern+AF', #6
1668
+ 515 => 'Spot+Highlight control', #6
1669
+ 1027 => 'Spot+Shadow control', #6
1670
+ },
1671
+ },
1672
+ 0x203 => { Name => 'ExposureShift', Writable => 'rational64s' }, #11 (some E-models only)
1673
+ 0x300 => { #6
1674
+ Name => 'MacroMode',
1675
+ Writable => 'int16u',
1676
+ PrintConv => {
1677
+ 0 => 'Off',
1678
+ 1 => 'On',
1679
+ 2 => 'Super Macro', #11
1680
+ },
1681
+ },
1682
+ 0x301 => { #6
1683
+ Name => 'FocusMode',
1684
+ Writable => 'int16u',
1685
+ Count => -1,
1686
+ Notes => '1 or 2 values',
1687
+ PrintConv => [{
1688
+ 0 => 'Single AF',
1689
+ 1 => 'Sequential shooting AF',
1690
+ 2 => 'Continuous AF',
1691
+ 3 => 'Multi AF',
1692
+ 5 => 'Face detect', #11
1693
+ 10 => 'MF',
1694
+ }, { BITMASK => { #11
1695
+ 0 => 'S-AF',
1696
+ 2 => 'C-AF',
1697
+ 4 => 'MF',
1698
+ 5 => 'Face detect',
1699
+ 6 => 'Imager AF',
1700
+ 8 => 'AF sensor',
1701
+ }}],
1702
+ },
1703
+ 0x302 => { #6
1704
+ Name => 'FocusProcess',
1705
+ Writable => 'int16u',
1706
+ Count => -1,
1707
+ Notes => '1 or 2 values',
1708
+ PrintConv => [{
1709
+ 0 => 'AF Not Used',
1710
+ 1 => 'AF Used',
1711
+ }],
1712
+ # 2nd value written only by some models (u1050SW, u9000, uT6000, uT6010,
1713
+ # uT8000, E-30, E-420, E-450, E-520, E-620, E-P1 and E-P2): - PH
1714
+ # observed values when "AF Not Used": 0, 16
1715
+ # observed values when "AF Used": 64, 96(face detect on), 256
1716
+ },
1717
+ 0x303 => { #6
1718
+ Name => 'AFSearch',
1719
+ Writable => 'int16u',
1720
+ PrintConv => {
1721
+ 0 => 'Not Ready',
1722
+ 1 => 'Ready',
1723
+ },
1724
+ },
1725
+ 0x304 => { #PH/4
1726
+ Name => 'AFAreas',
1727
+ Notes => 'coordinates range from 0 to 255',
1728
+ Writable => 'int32u',
1729
+ Count => 64,
1730
+ PrintConv => 'Image::ExifTool::Olympus::PrintAFAreas($val)',
1731
+ },
1732
+ 0x0305 => { #PH
1733
+ Name => 'AFPointSelected',
1734
+ Notes => 'coordinates expressed as a percent',
1735
+ Writable => 'rational64s',
1736
+ Count => 5,
1737
+ ValueConv => '$val =~ s/\S* //; $val', # ignore first undefined value
1738
+ ValueConvInv => '"undef $val"',
1739
+ PrintConv => q{
1740
+ return $val if $val =~ /undef/;
1741
+ sprintf("(%d%%,%d%%) (%d%%,%d%%)", map {$_ * 100} split(" ",$val));
1742
+ }
1743
+ },
1744
+ 0x306 => { #11
1745
+ Name => 'AFFineTune',
1746
+ Writable => 'int8u',
1747
+ PrintConv => { 0 => 'Off', 1 => 'On' },
1748
+ },
1749
+ 0x307 => { #15
1750
+ Name => 'AFFineTuneAdj',
1751
+ Format => 'int16s',
1752
+ Count => 3, # not sure what the 3 values mean
1753
+ },
1754
+ 0x400 => { #6
1755
+ Name => 'FlashMode',
1756
+ Writable => 'int16u',
1757
+ PrintConv => {
1758
+ 0 => 'Off',
1759
+ BITMASK => {
1760
+ 0 => 'On',
1761
+ 1 => 'Fill-in',
1762
+ 2 => 'Red-eye',
1763
+ 3 => 'Slow-sync',
1764
+ 4 => 'Forced On',
1765
+ 5 => '2nd Curtain',
1766
+ },
1767
+ },
1768
+ },
1769
+ 0x401 => { Name => 'FlashExposureComp', Writable => 'rational64s' }, #6
1770
+ # 0x402 - FlashMode? bit0=TTL, bit2=SuperFP (ref 11)
1771
+ 0x403 => { #11
1772
+ Name => 'FlashRemoteControl',
1773
+ Writable => 'int16u',
1774
+ PrintHex => 1,
1775
+ PrintConvColumns => 2,
1776
+ PrintConv => {
1777
+ 0 => 'Off',
1778
+ 0x01 => 'Channel 1, Low',
1779
+ 0x02 => 'Channel 2, Low',
1780
+ 0x03 => 'Channel 3, Low',
1781
+ 0x04 => 'Channel 4, Low',
1782
+ 0x09 => 'Channel 1, Mid',
1783
+ 0x0a => 'Channel 2, Mid',
1784
+ 0x0b => 'Channel 3, Mid',
1785
+ 0x0c => 'Channel 4, Mid',
1786
+ 0x11 => 'Channel 1, High',
1787
+ 0x12 => 'Channel 2, High',
1788
+ 0x13 => 'Channel 3, High',
1789
+ 0x14 => 'Channel 4, High',
1790
+ },
1791
+ },
1792
+ 0x404 => { #11
1793
+ Name => 'FlashControlMode',
1794
+ Writable => 'int16u',
1795
+ Count => 3,
1796
+ PrintConv => [{
1797
+ 0 => 'Off',
1798
+ 3 => 'TTL',
1799
+ 4 => 'Auto',
1800
+ 5 => 'Manual',
1801
+ }],
1802
+ },
1803
+ 0x405 => { #11
1804
+ Name => 'FlashIntensity',
1805
+ Writable => 'rational64s',
1806
+ Count => 3,
1807
+ PrintConv => '$val eq "undef undef undef" ? "n/a" : $val',
1808
+ PrintConvInv => '$val eq "n/a" ? "undef undef undef" : $val',
1809
+ },
1810
+ 0x406 => { #11
1811
+ Name => 'ManualFlashStrength',
1812
+ Writable => 'rational64s',
1813
+ Count => 3,
1814
+ PrintConv => '$val eq "undef undef undef" ? "n/a" : $val',
1815
+ PrintConvInv => '$val eq "n/a" ? "undef undef undef" : $val',
1816
+ },
1817
+ 0x500 => { #6
1818
+ Name => 'WhiteBalance2',
1819
+ Writable => 'int16u',
1820
+ PrintConv => {
1821
+ 0 => 'Auto',
1822
+ 16 => '7500K (Fine Weather with Shade)',
1823
+ 17 => '6000K (Cloudy)',
1824
+ 18 => '5300K (Fine Weather)',
1825
+ 20 => '3000K (Tungsten light)',
1826
+ 21 => '3600K (Tungsten light-like)',
1827
+ 33 => '6600K (Daylight fluorescent)',
1828
+ 34 => '4500K (Neutral white fluorescent)',
1829
+ 35 => '4000K (Cool white fluorescent)',
1830
+ 48 => '3600K (Tungsten light-like)',
1831
+ 256 => 'Custom WB 1',
1832
+ 257 => 'Custom WB 2',
1833
+ 258 => 'Custom WB 3',
1834
+ 259 => 'Custom WB 4',
1835
+ 512 => 'Custom WB 5400K',
1836
+ 513 => 'Custom WB 2900K',
1837
+ 514 => 'Custom WB 8000K',
1838
+ },
1839
+ },
1840
+ 0x501 => { #PH/4
1841
+ Name => 'WhiteBalanceTemperature',
1842
+ Writable => 'int16u',
1843
+ PrintConv => '$val ? $val : "Auto"',
1844
+ PrintConvInv => '$val=~/^\d+$/ ? $val : 0',
1845
+ },
1846
+ 0x502 => { #PH/4
1847
+ Name => 'WhiteBalanceBracket',
1848
+ Writable => 'int16s',
1849
+ },
1850
+ 0x503 => { #PH/4/6
1851
+ Name => 'CustomSaturation',
1852
+ Writable => 'int16s',
1853
+ Count => 3,
1854
+ Notes => '3 numbers: 1. CS Value, 2. Min, 3. Max',
1855
+ PrintConv => q{
1856
+ my ($a,$b,$c)=split ' ',$val;
1857
+ if ($self->{Model} =~ /^E-1\b/) {
1858
+ $a-=$b; $c-=$b;
1859
+ return "CS$a (min CS0, max CS$c)";
1860
+ } else {
1861
+ return "$a (min $b, max $c)";
1862
+ }
1863
+ },
1864
+ },
1865
+ 0x504 => { #PH/4
1866
+ Name => 'ModifiedSaturation',
1867
+ Writable => 'int16u',
1868
+ PrintConv => {
1869
+ 0 => 'Off',
1870
+ 1 => 'CM1 (Red Enhance)',
1871
+ 2 => 'CM2 (Green Enhance)',
1872
+ 3 => 'CM3 (Blue Enhance)',
1873
+ 4 => 'CM4 (Skin Tones)',
1874
+ },
1875
+ },
1876
+ 0x505 => { #PH/4
1877
+ Name => 'ContrastSetting',
1878
+ Writable => 'int16s',
1879
+ Count => 3,
1880
+ Notes => 'value, min, max',
1881
+ PrintConv => 'my @v=split " ",$val; "$v[0] (min $v[1], max $v[2])"',
1882
+ PrintConvInv => '$val=~tr/-0-9 //dc;$val',
1883
+ },
1884
+ 0x506 => { #PH/4
1885
+ Name => 'SharpnessSetting',
1886
+ Writable => 'int16s',
1887
+ Count => 3,
1888
+ Notes => 'value, min, max',
1889
+ PrintConv => 'my @v=split " ",$val; "$v[0] (min $v[1], max $v[2])"',
1890
+ PrintConvInv => '$val=~tr/-0-9 //dc;$val',
1891
+ },
1892
+ 0x507 => { #PH/4
1893
+ Name => 'ColorSpace',
1894
+ Writable => 'int16u',
1895
+ PrintConv => { #6
1896
+ 0 => 'sRGB',
1897
+ 1 => 'Adobe RGB',
1898
+ 2 => 'Pro Photo RGB',
1899
+ },
1900
+ },
1901
+ 0x509 => { #6
1902
+ Name => 'SceneMode',
1903
+ Writable => 'int16u',
1904
+ PrintConvColumns => 2,
1905
+ PrintConv => {
1906
+ 0 => 'Standard',
1907
+ 6 => 'Auto', #6
1908
+ 7 => 'Sport',
1909
+ 8 => 'Portrait',
1910
+ 9 => 'Landscape+Portrait',
1911
+ 10 => 'Landscape',
1912
+ 11 => 'Night Scene',
1913
+ 12 => 'Self Portrait', #11
1914
+ 13 => 'Panorama', #6
1915
+ 14 => '2 in 1', #11
1916
+ 15 => 'Movie', #11
1917
+ 16 => 'Landscape+Portrait', #6
1918
+ 17 => 'Night+Portrait',
1919
+ 18 => 'Indoor', #11 (Party - PH)
1920
+ 19 => 'Fireworks',
1921
+ 20 => 'Sunset',
1922
+ 21 => 'Beauty Skin', #PH
1923
+ 22 => 'Macro',
1924
+ 23 => 'Super Macro', #11
1925
+ 24 => 'Food', #11
1926
+ 25 => 'Documents',
1927
+ 26 => 'Museum',
1928
+ 27 => 'Shoot & Select', #11
1929
+ 28 => 'Beach & Snow',
1930
+ 29 => 'Self Protrait+Timer', #11
1931
+ 30 => 'Candle',
1932
+ 31 => 'Available Light', #11
1933
+ 32 => 'Behind Glass', #11
1934
+ 33 => 'My Mode', #11
1935
+ 34 => 'Pet', #11
1936
+ 35 => 'Underwater Wide1', #6
1937
+ 36 => 'Underwater Macro', #6
1938
+ 37 => 'Shoot & Select1', #11
1939
+ 38 => 'Shoot & Select2', #11
1940
+ 39 => 'High Key',
1941
+ 40 => 'Digital Image Stabilization', #6
1942
+ 41 => 'Auction', #11
1943
+ 42 => 'Beach', #11
1944
+ 43 => 'Snow', #11
1945
+ 44 => 'Underwater Wide2', #6
1946
+ 45 => 'Low Key', #6
1947
+ 46 => 'Children', #6
1948
+ 47 => 'Vivid', #11
1949
+ 48 => 'Nature Macro', #6
1950
+ 49 => 'Underwater Snapshot', #11
1951
+ 50 => 'Shooting Guide', #11
1952
+ 54 => 'Face Portrait', #11
1953
+ 57 => 'Bulb', #11
1954
+ 59 => 'Smile Shot', #11
1955
+ 60 => 'Quick Shutter', #11
1956
+ 63 => 'Slow Shutter', #11
1957
+ 64 => 'Bird Watching', #11
1958
+ 65 => 'Multiple Exposure', #11
1959
+ 66 => 'e-Portrait', #11
1960
+ 67 => 'Soft Background Shot', #11
1961
+ 142 => 'Hand-held Starlight', #PH (SH-21)
1962
+ 154 => 'HDR', #PH (XZ-2)
1963
+ },
1964
+ },
1965
+ 0x50a => { #PH/4/6
1966
+ Name => 'NoiseReduction',
1967
+ Writable => 'int16u',
1968
+ PrintConv => {
1969
+ BITMASK => {
1970
+ 0 => 'Noise Reduction',
1971
+ 1 => 'Noise Filter',
1972
+ 2 => 'Noise Filter (ISO Boost)',
1973
+ 3 => 'Auto', #11
1974
+ },
1975
+ },
1976
+ },
1977
+ 0x50b => { #6
1978
+ Name => 'DistortionCorrection',
1979
+ Writable => 'int16u',
1980
+ PrintConv => \%offOn,
1981
+ },
1982
+ 0x50c => { #PH/4
1983
+ Name => 'ShadingCompensation',
1984
+ Writable => 'int16u',
1985
+ PrintConv => \%offOn,
1986
+ },
1987
+ 0x50d => { Name => 'CompressionFactor', Writable => 'rational64u' }, #PH/4
1988
+ 0x50f => { #6
1989
+ Name => 'Gradation',
1990
+ Writable => 'int16s',
1991
+ Notes => '3 or 4 values',
1992
+ Count => -1,
1993
+ Relist => [ [0..2], 3 ], # join values 0-2 for PrintConv
1994
+ PrintConv => [{
1995
+ '0 0 0' => 'n/a', #PH (?)
1996
+ '-1 -1 1' => 'Low Key',
1997
+ '0 -1 1' => 'Normal',
1998
+ '1 -1 1' => 'High Key',
1999
+ },{
2000
+ 0 => 'User-Selected',
2001
+ 1 => 'Auto-Override',
2002
+ }],
2003
+ },
2004
+ 0x520 => { #6
2005
+ Name => 'PictureMode',
2006
+ Writable => 'int16u',
2007
+ Notes => '1 or 2 values',
2008
+ Count => -1,
2009
+ PrintConv => [{
2010
+ 1 => 'Vivid',
2011
+ 2 => 'Natural',
2012
+ 3 => 'Muted',
2013
+ 4 => 'Portrait',
2014
+ 5 => 'i-Enhance', #11
2015
+ 256 => 'Monotone',
2016
+ 512 => 'Sepia',
2017
+ }],
2018
+ },
2019
+ 0x521 => { #6
2020
+ Name => 'PictureModeSaturation',
2021
+ Writable => 'int16s',
2022
+ Count => 3,
2023
+ Notes => 'value, min, max',
2024
+ PrintConv => 'my @v=split " ",$val; "$v[0] (min $v[1], max $v[2])"',
2025
+ PrintConvInv => '$val=~tr/-0-9 //dc;$val',
2026
+ },
2027
+ 0x522 => { #6
2028
+ Name => 'PictureModeHue',
2029
+ Writable => 'int16s',
2030
+ Unknown => 1, # (needs verification)
2031
+ },
2032
+ 0x523 => { #6
2033
+ Name => 'PictureModeContrast',
2034
+ Writable => 'int16s',
2035
+ Count => 3,
2036
+ Notes => 'value, min, max',
2037
+ PrintConv => 'my @v=split " ",$val; "$v[0] (min $v[1], max $v[2])"',
2038
+ PrintConvInv => '$val=~tr/-0-9 //dc;$val',
2039
+ },
2040
+ 0x524 => { #6
2041
+ Name => 'PictureModeSharpness',
2042
+ # verified as the Sharpness setting in the Picture Mode menu for the E-410
2043
+ Writable => 'int16s',
2044
+ Count => 3,
2045
+ Notes => 'value, min, max',
2046
+ PrintConv => 'my @v=split " ",$val; "$v[0] (min $v[1], max $v[2])"',
2047
+ PrintConvInv => '$val=~tr/-0-9 //dc;$val',
2048
+ },
2049
+ 0x525 => { #6
2050
+ Name => 'PictureModeBWFilter',
2051
+ Writable => 'int16s',
2052
+ PrintConvColumns => 2,
2053
+ PrintConv => {
2054
+ 0 => 'n/a',
2055
+ 1 => 'Neutral',
2056
+ 2 => 'Yellow',
2057
+ 3 => 'Orange',
2058
+ 4 => 'Red',
2059
+ 5 => 'Green',
2060
+ },
2061
+ },
2062
+ 0x526 => { #6
2063
+ Name => 'PictureModeTone',
2064
+ Writable => 'int16s',
2065
+ PrintConvColumns => 2,
2066
+ PrintConv => {
2067
+ 0 => 'n/a',
2068
+ 1 => 'Neutral',
2069
+ 2 => 'Sepia',
2070
+ 3 => 'Blue',
2071
+ 4 => 'Purple',
2072
+ 5 => 'Green',
2073
+ },
2074
+ },
2075
+ 0x527 => { #12
2076
+ Name => 'NoiseFilter',
2077
+ Writable => 'int16s',
2078
+ Count => 3,
2079
+ PrintConv => {
2080
+ '0 0 0' => 'n/a', #PH (?)
2081
+ '-2 -2 1' => 'Off',
2082
+ '-1 -2 1' => 'Low',
2083
+ '0 -2 1' => 'Standard',
2084
+ '1 -2 1' => 'High',
2085
+ },
2086
+ },
2087
+ 0x529 => { #PH
2088
+ Name => 'ArtFilter',
2089
+ Writable => 'int16u',
2090
+ Count => 4,
2091
+ PrintConvColumns => 2,
2092
+ PrintConv => [ \%filters ],
2093
+ },
2094
+ 0x52c => { #PH
2095
+ Name => 'MagicFilter',
2096
+ Writable => 'int16u',
2097
+ Count => 4, # (2nd number is 0, 1280 or 1792, 3rd/4th are 0)
2098
+ # (1792 observed for E-5 Gentle Sepia and XZ-1 Dramatic Tone)
2099
+ PrintConvColumns => 2,
2100
+ PrintConv => [ \%filters ],
2101
+ },
2102
+ 0x52d => { #11
2103
+ Name => 'PictureModeEffect',
2104
+ Writable => 'int16s',
2105
+ Count => 3,
2106
+ PrintConv => {
2107
+ '0 0 0' => 'n/a', #PH (?)
2108
+ '-1 -1 1' => 'Low',
2109
+ '0 -1 1' => 'Standard',
2110
+ '1 -1 1' => 'High',
2111
+ },
2112
+ },
2113
+ 0x52f => { #PH
2114
+ Name => 'ArtFilterEffect',
2115
+ Writable => 'int16u',
2116
+ Count => 20,
2117
+ PrintHex => 1,
2118
+ PrintConvColumns => 2,
2119
+ PrintConv => [
2120
+ \%filters, undef, undef, undef,
2121
+ { # there are 5 available art filter effects for the E-PL3...
2122
+ 0x0000 => 'No Effect',
2123
+ 0x8010 => 'Star Light',
2124
+ 0x8020 => 'Pin Hole',
2125
+ 0x8030 => 'Frame',
2126
+ 0x8040 => 'Soft Focus',
2127
+ 0x8050 => 'White Edge',
2128
+ 0x8060 => 'B&W', # (NC - E-PL2 with "Grainy Film" filter)
2129
+ # (E-PL2 also has "Pict. Tone" effect)
2130
+ },
2131
+ ],
2132
+ },
2133
+ 0x600 => { #PH/4
2134
+ Name => 'DriveMode',
2135
+ Writable => 'int16u',
2136
+ Count => -1,
2137
+ Notes => '2 or 3 numbers: 1. Mode, 2. Shot number, 3. Mode bits',
2138
+ PrintConv => q{
2139
+ my ($a,$b,$c) = split ' ',$val;
2140
+ return 'Single Shot' unless $a;
2141
+ if ($a == 5 and defined $c) {
2142
+ $a = DecodeBits($c, { #6
2143
+ 0 => 'AE',
2144
+ 1 => 'WB',
2145
+ 2 => 'FL',
2146
+ 3 => 'MF',
2147
+ }) . ' Bracketing';
2148
+ $a =~ s/, /+/g;
2149
+ } else {
2150
+ my %a = (
2151
+ 1 => 'Continuous Shooting',
2152
+ 2 => 'Exposure Bracketing',
2153
+ 3 => 'White Balance Bracketing',
2154
+ 4 => 'Exposure+WB Bracketing', #6
2155
+ );
2156
+ $a = $a{$a} || "Unknown ($a)";
2157
+ }
2158
+ return "$a, Shot $b";
2159
+ },
2160
+ },
2161
+ 0x601 => { #6
2162
+ Name => 'PanoramaMode',
2163
+ Writable => 'int16u',
2164
+ Notes => '2 numbers: 1. Mode, 2. Shot number',
2165
+ PrintConv => q{
2166
+ my ($a,$b) = split ' ',$val;
2167
+ return 'Off' unless $a;
2168
+ my %a = (
2169
+ 1 => 'Left to Right',
2170
+ 2 => 'Right to Left',
2171
+ 3 => 'Bottom to Top',
2172
+ 4 => 'Top to Bottom',
2173
+ );
2174
+ return ($a{$a} || "Unknown ($a)") . ', Shot ' . $b;
2175
+ },
2176
+ },
2177
+ 0x603 => { #PH/4
2178
+ Name => 'ImageQuality2',
2179
+ Writable => 'int16u',
2180
+ PrintConv => {
2181
+ 1 => 'SQ',
2182
+ 2 => 'HQ',
2183
+ 3 => 'SHQ',
2184
+ 4 => 'RAW',
2185
+ 5 => 'SQ (5)', # (E-500)
2186
+ },
2187
+ },
2188
+ 0x604 => { #PH
2189
+ Name => 'ImageStabilization',
2190
+ Writable => 'int32u',
2191
+ DataMember => 'ImageStabilization',
2192
+ RawConv => '$$self{ImageStabilization} = $val',
2193
+ PrintConv => {
2194
+ 0 => 'Off',
2195
+ 1 => 'On, Mode 1',
2196
+ 2 => 'On, Mode 2',
2197
+ 3 => 'On, Mode 3',
2198
+ },
2199
+ },
2200
+ 0x900 => { #11
2201
+ Name => 'ManometerPressure',
2202
+ Writable => 'int16u',
2203
+ ValueConv => '$val / 10',
2204
+ ValueConvInv => '$val * 10',
2205
+ PrintConv => '"$val kPa"',
2206
+ PrintConvInv => '$val=~s/ ?kPa//i; $val',
2207
+ },
2208
+ 0x901 => { #PH (u770SW)
2209
+ # 2 numbers: 1st looks like meters above sea level, 2nd is usually 3x the 1st (feet?)
2210
+ Name => 'ManometerReading',
2211
+ Writable => 'int32s',
2212
+ Count => 2,
2213
+ ValueConv => 'my @a=split(" ",$val); $_ /= 10 foreach @a; "@a"',
2214
+ ValueConvInv => 'my @a=split(" ",$val); $_ *= 10 foreach @a; "@a"',
2215
+ PrintConv => '$val=~s/(\S+) (\S+)/$1 m, $2 ft/; $val',
2216
+ PrintConvInv => '$val=~s/ ?(m|ft)//gi; $val',
2217
+ },
2218
+ 0x902 => { #11
2219
+ Name => 'ExtendedWBDetect',
2220
+ Writable => 'int16u',
2221
+ PrintConv => \%offOn,
2222
+ },
2223
+ 0x903 => { #11
2224
+ Name => 'LevelGaugeRoll',
2225
+ Writable => 'int16u',
2226
+ PrintConv => \%offOn,
2227
+ },
2228
+ 0x904 => { #11
2229
+ Name => 'LevelGaugePitch',
2230
+ Writable => 'int16u',
2231
+ PrintConv => \%offOn,
2232
+ },
2233
+ );
2234
+
2235
+ # Olympus RAW processing IFD (ref 6)
2236
+ %Image::ExifTool::Olympus::RawDevelopment = (
2237
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
2238
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
2239
+ WRITABLE => 1,
2240
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2241
+ 0x000 => { #PH
2242
+ Name => 'RawDevVersion',
2243
+ Writable => 'undef',
2244
+ RawConv => '$val=~s/\0+$//; $val', # (may be null terminated)
2245
+ Count => 4,
2246
+ },
2247
+ 0x100 => { Name => 'RawDevExposureBiasValue', Writable => 'rational64s' },
2248
+ 0x101 => { Name => 'RawDevWhiteBalanceValue', Writable => 'int16u' },
2249
+ 0x102 => { Name => 'RawDevWBFineAdjustment', Writable => 'int16s' },
2250
+ 0x103 => { Name => 'RawDevGrayPoint', Writable => 'int16u', Count => 3 },
2251
+ 0x104 => { Name => 'RawDevSaturationEmphasis', Writable => 'int16s', Count => 3 },
2252
+ 0x105 => { Name => 'RawDevMemoryColorEmphasis', Writable => 'int16u' },
2253
+ 0x106 => { Name => 'RawDevContrastValue', Writable => 'int16s', Count => 3 },
2254
+ 0x107 => { Name => 'RawDevSharpnessValue', Writable => 'int16s', Count => 3 },
2255
+ 0x108 => {
2256
+ Name => 'RawDevColorSpace',
2257
+ Writable => 'int16u',
2258
+ PrintConv => { #11
2259
+ 0 => 'sRGB',
2260
+ 1 => 'Adobe RGB',
2261
+ 2 => 'Pro Photo RGB',
2262
+ },
2263
+ },
2264
+ 0x109 => {
2265
+ Name => 'RawDevEngine',
2266
+ Writable => 'int16u',
2267
+ PrintConv => { #11
2268
+ 0 => 'High Speed',
2269
+ 1 => 'High Function',
2270
+ 2 => 'Advanced High Speed',
2271
+ 3 => 'Advanced High Function',
2272
+ },
2273
+ },
2274
+ 0x10a => {
2275
+ Name => 'RawDevNoiseReduction',
2276
+ Writable => 'int16u',
2277
+ PrintConv => { #11
2278
+ BITMASK => {
2279
+ 0 => 'Noise Reduction',
2280
+ 1 => 'Noise Filter',
2281
+ 2 => 'Noise Filter (ISO Boost)',
2282
+ },
2283
+ },
2284
+ },
2285
+ 0x10b => {
2286
+ Name => 'RawDevEditStatus',
2287
+ Writable => 'int16u',
2288
+ PrintConv => { #11
2289
+ 0 => 'Original',
2290
+ 1 => 'Edited (Landscape)',
2291
+ 6 => 'Edited (Portrait)',
2292
+ 8 => 'Edited (Portrait)',
2293
+ },
2294
+ },
2295
+ 0x10c => {
2296
+ Name => 'RawDevSettings',
2297
+ Writable => 'int16u',
2298
+ PrintConv => { #11
2299
+ BITMASK => {
2300
+ 0 => 'WB Color Temp',
2301
+ 1 => 'WB Gray Point',
2302
+ 2 => 'Saturation',
2303
+ 3 => 'Contrast',
2304
+ 4 => 'Sharpness',
2305
+ 5 => 'Color Space',
2306
+ 6 => 'High Function',
2307
+ 7 => 'Noise Reduction',
2308
+ },
2309
+ },
2310
+ },
2311
+ );
2312
+
2313
+ # Olympus RAW processing B IFD (ref 11)
2314
+ %Image::ExifTool::Olympus::RawDevelopment2 = (
2315
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
2316
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
2317
+ WRITABLE => 1,
2318
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2319
+ 0x000 => {
2320
+ Name => 'RawDevVersion',
2321
+ Writable => 'undef',
2322
+ RawConv => '$val=~s/\0+$//; $val', # (may be null terminated)
2323
+ Count => 4,
2324
+ },
2325
+ 0x100 => { Name => 'RawDevExposureBiasValue', Writable => 'rational64s' },
2326
+ 0x101 => {
2327
+ Name => 'RawDevWhiteBalance',
2328
+ Writable => 'int16u',
2329
+ PrintConv => {
2330
+ 1 => 'Color Temperature',
2331
+ 2 => 'Gray Point',
2332
+ },
2333
+ },
2334
+ 0x102 => { Name => 'RawDevWhiteBalanceValue', Writable => 'int16u' },
2335
+ 0x103 => { Name => 'RawDevWBFineAdjustment', Writable => 'int16s' },
2336
+ 0x104 => { Name => 'RawDevGrayPoint', Writable => 'int16u', Count => 3 },
2337
+ 0x105 => { Name => 'RawDevContrastValue', Writable => 'int16s', Count => 3 },
2338
+ 0x106 => { Name => 'RawDevSharpnessValue', Writable => 'int16s', Count => 3 },
2339
+ 0x107 => { Name => 'RawDevSaturationEmphasis', Writable => 'int16s', Count => 3 },
2340
+ 0x108 => { Name => 'RawDevMemoryColorEmphasis', Writable => 'int16u' },
2341
+ 0x109 => {
2342
+ Name => 'RawDevColorSpace',
2343
+ Writable => 'int16u',
2344
+ PrintConv => {
2345
+ 0 => 'sRGB',
2346
+ 1 => 'Adobe RGB',
2347
+ 2 => 'Pro Photo RGB',
2348
+ },
2349
+ },
2350
+ 0x10a => {
2351
+ Name => 'RawDevNoiseReduction',
2352
+ Writable => 'int16u',
2353
+ PrintConv => {
2354
+ BITMASK => {
2355
+ 0 => 'Noise Reduction',
2356
+ 1 => 'Noise Filter',
2357
+ 2 => 'Noise Filter (ISO Boost)',
2358
+ },
2359
+ },
2360
+ },
2361
+ 0x10b => {
2362
+ Name => 'RawDevEngine',
2363
+ Writable => 'int16u',
2364
+ PrintConv => {
2365
+ 0 => 'High Speed',
2366
+ 1 => 'High Function',
2367
+ },
2368
+ },
2369
+ 0x10c => {
2370
+ Name => 'RawDevPictureMode',
2371
+ Writable => 'int16u',
2372
+ PrintConv => {
2373
+ 1 => 'Vivid',
2374
+ 2 => 'Natural',
2375
+ 3 => 'Muted',
2376
+ 256 => 'Monotone',
2377
+ 512 => 'Sepia',
2378
+ },
2379
+ },
2380
+ 0x10d => { Name => 'RawDevPMSaturation', Writable => 'int16s', Count => 3 },
2381
+ 0x10e => { Name => 'RawDevPMContrast', Writable => 'int16s', Count => 3 },
2382
+ 0x10f => { Name => 'RawDevPMSharpness', Writable => 'int16s', Count => 3 },
2383
+ 0x110 => {
2384
+ Name => 'RawDevPM_BWFilter',
2385
+ Writable => 'int16u',
2386
+ PrintConv => {
2387
+ 1 => 'Neutral',
2388
+ 2 => 'Yellow',
2389
+ 3 => 'Orange',
2390
+ 4 => 'Red',
2391
+ 5 => 'Green',
2392
+ },
2393
+ },
2394
+ 0x111 => {
2395
+ Name => 'RawDevPMPictureTone',
2396
+ Writable => 'int16u',
2397
+ PrintConv => {
2398
+ 1 => 'Neutral',
2399
+ 2 => 'Sepia',
2400
+ 3 => 'Blue',
2401
+ 4 => 'Purple',
2402
+ 5 => 'Green',
2403
+ },
2404
+ },
2405
+ 0x112 => { Name => 'RawDevGradation', Writable => 'int16s', Count => 3 },
2406
+ 0x113 => { Name => 'RawDevSaturation3', Writable => 'int16s', Count => 3 }, #(NC Count)
2407
+ 0x119 => { Name => 'RawDevAutoGradation', Writable => 'int16u', PrintConv => \%offOn },
2408
+ 0x120 => { Name => 'RawDevPMNoiseFilter', Writable => 'int16u' }, #(NC format)
2409
+ );
2410
+
2411
+ # Olympus Image processing IFD
2412
+ %Image::ExifTool::Olympus::ImageProcessing = (
2413
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
2414
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
2415
+ WRITABLE => 1,
2416
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2417
+ 0x000 => { #PH
2418
+ Name => 'ImageProcessingVersion',
2419
+ Writable => 'undef',
2420
+ RawConv => '$val=~s/\0+$//; $val', # (may be null terminated)
2421
+ Count => 4,
2422
+ },
2423
+ 0x100 => { Name => 'WB_RBLevels', Writable => 'int16u', Count => 2 }, #6
2424
+ 0x102 => { Name => 'WB_RBLevels3000K', Writable => 'int16u', Count => 2 }, #11
2425
+ 0x103 => { Name => 'WB_RBLevels3300K', Writable => 'int16u', Count => 2 }, #11
2426
+ 0x104 => { Name => 'WB_RBLevels3600K', Writable => 'int16u', Count => 2 }, #11
2427
+ 0x105 => { Name => 'WB_RBLevels3900K', Writable => 'int16u', Count => 2 }, #11
2428
+ 0x106 => { Name => 'WB_RBLevels4000K', Writable => 'int16u', Count => 2 }, #11
2429
+ 0x107 => { Name => 'WB_RBLevels4300K', Writable => 'int16u', Count => 2 }, #11
2430
+ 0x108 => { Name => 'WB_RBLevels4500K', Writable => 'int16u', Count => 2 }, #11
2431
+ 0x109 => { Name => 'WB_RBLevels4800K', Writable => 'int16u', Count => 2 }, #11
2432
+ 0x10a => { Name => 'WB_RBLevels5300K', Writable => 'int16u', Count => 2 }, #11
2433
+ 0x10b => { Name => 'WB_RBLevels6000K', Writable => 'int16u', Count => 2 }, #11
2434
+ 0x10c => { Name => 'WB_RBLevels6600K', Writable => 'int16u', Count => 2 }, #11
2435
+ 0x10d => { Name => 'WB_RBLevels7500K', Writable => 'int16u', Count => 2 }, #11
2436
+ 0x10e => { Name => 'WB_RBLevelsCWB1', Writable => 'int16u', Count => 2 }, #11
2437
+ 0x10f => { Name => 'WB_RBLevelsCWB2', Writable => 'int16u', Count => 2 }, #11
2438
+ 0x110 => { Name => 'WB_RBLevelsCWB3', Writable => 'int16u', Count => 2 }, #11
2439
+ 0x111 => { Name => 'WB_RBLevelsCWB4', Writable => 'int16u', Count => 2 }, #11
2440
+ 0x113 => { Name => 'WB_GLevel3000K', Writable => 'int16u' }, #11
2441
+ 0x114 => { Name => 'WB_GLevel3300K', Writable => 'int16u' }, #11
2442
+ 0x115 => { Name => 'WB_GLevel3600K', Writable => 'int16u' }, #11
2443
+ 0x116 => { Name => 'WB_GLevel3900K', Writable => 'int16u' }, #11
2444
+ 0x117 => { Name => 'WB_GLevel4000K', Writable => 'int16u' }, #11
2445
+ 0x118 => { Name => 'WB_GLevel4300K', Writable => 'int16u' }, #11
2446
+ 0x119 => { Name => 'WB_GLevel4500K', Writable => 'int16u' }, #11
2447
+ 0x11a => { Name => 'WB_GLevel4800K', Writable => 'int16u' }, #11
2448
+ 0x11b => { Name => 'WB_GLevel5300K', Writable => 'int16u' }, #11
2449
+ 0x11c => { Name => 'WB_GLevel6000K', Writable => 'int16u' }, #11
2450
+ 0x11d => { Name => 'WB_GLevel6600K', Writable => 'int16u' }, #11
2451
+ 0x11e => { Name => 'WB_GLevel7500K', Writable => 'int16u' }, #11
2452
+ 0x11f => { Name => 'WB_GLevel', Writable => 'int16u' }, #11
2453
+ 0x200 => { #6
2454
+ Name => 'ColorMatrix',
2455
+ Writable => 'int16u',
2456
+ Format => 'int16s',
2457
+ Count => 9,
2458
+ },
2459
+ # color matrices (ref 11):
2460
+ # 0x0201-0x020d are sRGB color matrices
2461
+ # 0x020e-0x021a are Adobe RGB color matrices
2462
+ # 0x021b-0x0227 are ProPhoto RGB color matrices
2463
+ # 0x0228 and 0x0229 are ColorMatrix for E-330
2464
+ # 0x0250-0x0252 are sRGB color matrices
2465
+ # 0x0253-0x0255 are Adobe RGB color matrices
2466
+ # 0x0256-0x0258 are ProPhoto RGB color matrices
2467
+ 0x300 => { Name => 'Enhancer', Writable => 'int16u' }, #11
2468
+ 0x301 => { Name => 'EnhancerValues', Writable => 'int16u', Count => 7 }, #11
2469
+ 0x310 => { Name => 'CoringFilter', Writable => 'int16u' }, #11
2470
+ 0x311 => { Name => 'CoringValues', Writable => 'int16u', Count => 7 }, #11
2471
+ 0x600 => { Name => 'BlackLevel2', Writable => 'int16u', Count => 4 }, #11
2472
+ 0x610 => { Name => 'GainBase', Writable => 'int16u' }, #11
2473
+ 0x611 => { Name => 'ValidBits', Writable => 'int16u', Count => 2 }, #4/6
2474
+ 0x612 => { Name => 'CropLeft', Writable => 'int16u', Count => 2 }, #11
2475
+ 0x613 => { Name => 'CropTop', Writable => 'int16u', Count => 2 }, #11
2476
+ 0x614 => { Name => 'CropWidth', Writable => 'int32u' }, #PH/11
2477
+ 0x615 => { Name => 'CropHeight', Writable => 'int32u' }, #PH/11
2478
+ 0x635 => { #PH (data starts with "CMIO\x01\0")
2479
+ Name => 'UnknownBlock1',
2480
+ Writable => 'undef',
2481
+ Notes => 'large unknown data block in ORF images but not JPG images',
2482
+ # 'Drop' because too large for APP1 in JPEG images
2483
+ Flags => [ 'Unknown', 'Binary', 'Drop' ],
2484
+ },
2485
+ 0x636 => { #PH (data starts with "CMIO\x01\0")
2486
+ Name => 'UnknownBlock2',
2487
+ Writable => 'undef',
2488
+ Notes => 'large unknown data block in ORF images but not JPG images',
2489
+ # 'Drop' because too large for APP1 in JPEG images
2490
+ Flags => [ 'Unknown', 'Binary', 'Drop' ],
2491
+ },
2492
+ # 0x800 LensDistortionParams, float[9] (ref 11)
2493
+ # 0x801 LensShadingParams, int16u[16] (ref 11)
2494
+ # 0x1010-0x1012 are the processing options used in camera or in
2495
+ # Olympus software, which 0x050a-0x050c are in-camera only (ref 6)
2496
+ 0x1010 => { #PH/4
2497
+ Name => 'NoiseReduction2',
2498
+ Writable => 'int16u',
2499
+ PrintConv => {
2500
+ BITMASK => {
2501
+ 0 => 'Noise Reduction',
2502
+ 1 => 'Noise Filter',
2503
+ 2 => 'Noise Filter (ISO Boost)',
2504
+ },
2505
+ },
2506
+ },
2507
+ 0x1011 => { #6
2508
+ Name => 'DistortionCorrection2',
2509
+ Writable => 'int16u',
2510
+ PrintConv => \%offOn,
2511
+ },
2512
+ 0x1012 => { #PH/4
2513
+ Name => 'ShadingCompensation2',
2514
+ Writable => 'int16u',
2515
+ PrintConv => \%offOn,
2516
+ },
2517
+ 0x101c => { #11
2518
+ Name => 'MultipleExposureMode',
2519
+ Writable => 'int16u',
2520
+ Count => 2,
2521
+ PrintConv => [{
2522
+ 0 => 'Off',
2523
+ 2 => 'On (2 frames)',
2524
+ 3 => 'On (3 frames)',
2525
+ }],
2526
+ },
2527
+ 0x1103 => { #PH
2528
+ Name => 'UnknownBlock3',
2529
+ Writable => 'undef',
2530
+ Notes => 'large unknown data block in ORF images but not JPG images',
2531
+ # 'Drop' because too large for APP1 in JPEG images
2532
+ Flags => [ 'Unknown', 'Binary', 'Drop' ],
2533
+ },
2534
+ 0x1104 => { #PH
2535
+ Name => 'UnknownBlock4',
2536
+ Writable => 'undef',
2537
+ Notes => 'large unknown data block in ORF images but not JPG images',
2538
+ # 'Drop' because too large for APP1 in JPEG images
2539
+ Flags => [ 'Unknown', 'Binary', 'Drop' ],
2540
+ },
2541
+ 0x1112 => { #11
2542
+ Name => 'AspectRatio',
2543
+ Writable => 'int8u',
2544
+ Count => 2,
2545
+ PrintConv => {
2546
+ '1 1' => '4:3',
2547
+ '2 2' => '3:2',
2548
+ '3 3' => '16:9',
2549
+ '4 4' => '6:6',
2550
+ '5 5' => '5:4',
2551
+ '6 6' => '7:6',
2552
+ '7 7' => '6:5',
2553
+ '8 8' => '7:5',
2554
+ '9 9' => '3:4',
2555
+ },
2556
+ },
2557
+ 0x1113 => { Name => 'AspectFrame', Writable => 'int16u', Count => 4 }, #11
2558
+ 0x1200 => { #11/PH
2559
+ Name => 'FacesDetected',
2560
+ Writable => 'int32u',
2561
+ Count => -1,
2562
+ Notes => '2 or 3 values',
2563
+ },
2564
+ 0x1201 => { #11/PH
2565
+ Name => 'FaceDetectArea',
2566
+ Writable => 'int16s',
2567
+ Count => -1, # (varies with model)
2568
+ Binary => 1, # (too long)
2569
+ Notes => q{
2570
+ for models with 2 values in FacesDetected this gives X/Y coordinates in the
2571
+ FaceDetectFrame for all 4 corners of the face rectangle. For models with 3
2572
+ values in FacesDetected this gives X/Y coordinates, size and rotation angle
2573
+ of the face detect square
2574
+ },
2575
+ },
2576
+ 0x1202 => { Name => 'MaxFaces', Writable => 'int32u', Count => 3 }, #PH
2577
+ 0x1203 => { #PH
2578
+ Name => 'FaceDetectFrameSize',
2579
+ Writable => 'int16u',
2580
+ Count => 6,
2581
+ Notes => 'width/height of the full face detect frame',
2582
+ },
2583
+ 0x1207 => { #PH
2584
+ Name => 'FaceDetectFrameCrop',
2585
+ Writable => 'int16s',
2586
+ Count => 12,
2587
+ Notes => 'X/Y offset and width/height of the cropped face detect frame',
2588
+ },
2589
+ );
2590
+
2591
+ # Olympus Focus Info IFD
2592
+ %Image::ExifTool::Olympus::FocusInfo = (
2593
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
2594
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
2595
+ WRITABLE => 1,
2596
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2597
+ 0x000 => { #PH
2598
+ Name => 'FocusInfoVersion',
2599
+ Writable => 'undef',
2600
+ RawConv => '$val=~s/\0+$//; $val', # (may be null terminated)
2601
+ Count => 4,
2602
+ },
2603
+ 0x209 => { #PH/4
2604
+ Name => 'AutoFocus',
2605
+ Writable => 'int16u',
2606
+ PrintConv => \%offOn,
2607
+ Unknown => 1, #6
2608
+ },
2609
+ 0x210 => { Name => 'SceneDetect', Writable => 'int16u' }, #11
2610
+ 0x211 => { #11
2611
+ Name => 'SceneArea',
2612
+ Writable => 'int32u',
2613
+ Count => 8,
2614
+ Unknown => 1, # (numbers don't make much sense?)
2615
+ },
2616
+ 0x212 => { #11
2617
+ Name => 'SceneDetectData',
2618
+ Writable => 'int32u',
2619
+ Count => 720,
2620
+ Binary => 1,
2621
+ Unknown => 1, # (but what does it mean?)
2622
+ },
2623
+ 0x300 => { Name => 'ZoomStepCount', Writable => 'int16u' }, #6
2624
+ 0x301 => { Name => 'FocusStepCount', Writable => 'int16u' }, #11
2625
+ 0x303 => { Name => 'FocusStepInfinity', Writable => 'int16u' }, #11
2626
+ 0x304 => { Name => 'FocusStepNear', Writable => 'int16u' }, #11
2627
+ 0x305 => { #4
2628
+ Name => 'FocusDistance',
2629
+ Writable => 'rational64u',
2630
+ # this rational value looks like it is in mm when the denominator is
2631
+ # 1 (E-1), and cm when denominator is 10 (E-300), so if we ignore the
2632
+ # denominator we are consistently in mm - PH
2633
+ Format => 'int32u',
2634
+ Count => 2,
2635
+ ValueConv => q{
2636
+ my ($a,$b) = split ' ',$val;
2637
+ return 0 if $a == 0xffffffff;
2638
+ return $a / 1000;
2639
+ },
2640
+ ValueConvInv => q{
2641
+ return '4294967295 1' unless $val;
2642
+ $val = int($val * 1000 + 0.5);
2643
+ return "$val 1";
2644
+ },
2645
+ PrintConv => '$val ? "$val m" : "inf"',
2646
+ PrintConvInv => '$val eq "inf" ? 0 : $val=~s/\s*m$//, $val',
2647
+ },
2648
+ 0x308 => [ # NEED A BETTER WAY TO DETERMINE WHICH MODELS USE WHICH ENCODING!
2649
+ {
2650
+ Name => 'AFPoint',
2651
+ Condition => '$$self{Model} =~ /E-(3|5|30)\b/',
2652
+ Writable => 'int16u',
2653
+ PrintHex => 1,
2654
+ # decoded by ref 6
2655
+ Notes => q{
2656
+ for the E-3, E-5 and E-30 the value is separated into 2 parts: low 5 bits
2657
+ give AF point, upper bits give AF target selection mode
2658
+ },
2659
+ ValueConv => '($val & 0x1f) . " " . ($val & 0xffe0)',
2660
+ ValueConvInv => 'my @v=split(" ",$val); @v == 2 ? $v[0] + $v[1] : $val',
2661
+ PrintConvColumns => 2,
2662
+ PrintConv => [
2663
+ {
2664
+ 0x00 => '(none)',
2665
+ 0x01 => 'Top-left (horizontal)',
2666
+ 0x02 => 'Top-center (horizontal)',
2667
+ 0x03 => 'Top-right (horizontal)',
2668
+ 0x04 => 'Left (horizontal)',
2669
+ 0x05 => 'Mid-left (horizontal)',
2670
+ 0x06 => 'Center (horizontal)',
2671
+ 0x07 => 'Mid-right (horizontal)',
2672
+ 0x08 => 'Right (horizontal)',
2673
+ 0x09 => 'Bottom-left (horizontal)',
2674
+ 0x0a => 'Bottom-center (horizontal)',
2675
+ 0x0b => 'Bottom-right (horizontal)',
2676
+ 0x0c => 'Top-left (vertical)',
2677
+ 0x0d => 'Top-center (vertical)',
2678
+ 0x0e => 'Top-right (vertical)',
2679
+ 0x0f => 'Left (vertical)',
2680
+ 0x10 => 'Mid-left (vertical)',
2681
+ 0x11 => 'Center (vertical)',
2682
+ 0x12 => 'Mid-right (vertical)',
2683
+ 0x13 => 'Right (vertical)',
2684
+ 0x14 => 'Bottom-left (vertical)',
2685
+ 0x15 => 'Bottom-center (vertical)',
2686
+ 0x16 => 'Bottom-right (vertical)',
2687
+ 0x1f => 'n/a', #PH (NC, E-3)
2688
+ },
2689
+ {
2690
+ 0x00 => 'Single Target',
2691
+ 0x40 => 'All Target',
2692
+ 0x80 => 'Dynamic Single Target',
2693
+ 0xe0 => 'n/a', #PH (NC, E-3)
2694
+ }
2695
+ ],
2696
+ },{ #PH (models with 7-point AF)
2697
+ Name => 'AFPoint',
2698
+ Condition => '$$self{Model} =~ /E-(520|600|620)\b/',
2699
+ Notes => 'models with 7-point AF',
2700
+ Writable => 'int16u',
2701
+ PrintHex => 1,
2702
+ ValueConv => '($val & 0x1f) . " " . ($val & 0xffe0)',
2703
+ ValueConvInv => 'my @v=split(" ",$val); @v == 2 ? $v[0] + $v[1] : $val',
2704
+ PrintConv => [
2705
+ {
2706
+ 0x00 => '(none)',
2707
+ 0x01 => 'Center',
2708
+ # need to fill this in...
2709
+ },
2710
+ {
2711
+ 0x00 => 'Single Target',
2712
+ 0x40 => 'All Target', # (guess)
2713
+ },
2714
+ ]
2715
+ },{ #11
2716
+ Name => 'AFPoint',
2717
+ Writable => 'int16u',
2718
+ Notes => 'other models',
2719
+ RawConv => '($val or $$self{Model} ne "E-P1") ? $val : undef',
2720
+ PrintConv => {
2721
+ # (E-P1 always writes 0, maybe other models do too - PH)
2722
+ 0 => 'Left (or n/a)',
2723
+ 1 => 'Center (horizontal)', #6 (E-510)
2724
+ 2 => 'Right',
2725
+ 3 => 'Center (vertical)', #6 (E-510)
2726
+ 255 => 'None',
2727
+ },
2728
+ }
2729
+ ],
2730
+ # 0x31a Continuous AF parameters?
2731
+ # 0x328 Related to AF (maybe Imager AF data?) (ref PH, E-PL1):
2732
+ # - offset 0x2a (int8u) ImagerAFMode? 0=Manual, 1=Auto
2733
+ # - offset 0x30 (int16u) AFAreaXPosition
2734
+ # - offset 0x32 (int16u) AFAreaWidth (202)
2735
+ # - offset 0x34 (int16u) AFAreaYPosition
2736
+ # - offset 0x36 (int16u) AFAreaHeight (50)
2737
+ # (AF area positions above give the top-left coordinates of the AF area in the
2738
+ # AF frame. Increasing Y is downwards, and the AF frame size is about 1280x256)
2739
+ # 0x1200-0x1209 Flash information:
2740
+ 0x1201 => { #6
2741
+ Name => 'ExternalFlash',
2742
+ Writable => 'int16u',
2743
+ Count => 2,
2744
+ PrintConv => {
2745
+ '0 0' => 'Off',
2746
+ '1 0' => 'On',
2747
+ },
2748
+ },
2749
+ 0x1203 => { #11
2750
+ Name => 'ExternalFlashGuideNumber',
2751
+ Writable => 'rational64s',
2752
+ Unknown => 1, # (needs verification)
2753
+ },
2754
+ 0x1204 => { #11(reversed)/7
2755
+ Name => 'ExternalFlashBounce',
2756
+ Writable => 'int16u',
2757
+ PrintConv => {
2758
+ 0 => 'Bounce or Off',
2759
+ 1 => 'Direct',
2760
+ },
2761
+ },
2762
+ 0x1205 => { Name => 'ExternalFlashZoom', Writable => 'rational64u' }, #11 (ref converts to mm using table)
2763
+ 0x1208 => { #6
2764
+ Name => 'InternalFlash',
2765
+ Writable => 'int16u',
2766
+ Count => -1,
2767
+ PrintConv => {
2768
+ '0' => 'Off',
2769
+ '1' => 'On',
2770
+ '0 0' => 'Off',
2771
+ '1 0' => 'On',
2772
+ },
2773
+ },
2774
+ 0x1209 => { #6
2775
+ Name => 'ManualFlash',
2776
+ Writable => 'int16u',
2777
+ Count => 2,
2778
+ Notes => '2 numbers: 1. 0=Off, 1=On, 2. Flash strength',
2779
+ PrintConv => q{
2780
+ my ($a,$b) = split ' ',$val;
2781
+ return 'Off' unless $a;
2782
+ $b = ($b == 1) ? 'Full' : "1/$b";
2783
+ return "On ($b strength)";
2784
+ },
2785
+ },
2786
+ 0x120a => { #PH
2787
+ Name => 'MacroLED',
2788
+ Writable => 'int16u',
2789
+ PrintConv => \%offOn,
2790
+ },
2791
+ 0x1500 => { #6
2792
+ Name => 'SensorTemperature',
2793
+ Writable => 'int16s',
2794
+ Notes => q{
2795
+ approximately Celsius for E-1, unknown calibration for E-3/410/420/510, and
2796
+ always zero for E-300/330/400/500, divide by 10 for E-P1?
2797
+ },
2798
+ },
2799
+ 0x1600 => { # ref http://fourthirdsphoto.com/vbb/showpost.php?p=107607&postcount=15
2800
+ Name => 'ImageStabilization',
2801
+ # (the other value is more reliable, so ignore this totally if the other exists)
2802
+ Condition => 'not defined $$self{ImageStabilization}',
2803
+ Writable => 'undef',
2804
+ # if the first 4 bytes are non-zero, then bit 0x01 of byte 44
2805
+ # gives the stabilization mode
2806
+ PrintConv => q{
2807
+ $val =~ /^\0{4}/ ? 'Off' : 'On, ' .
2808
+ (unpack('x44C',$val) & 0x01 ? 'Mode 1' : 'Mode 2')
2809
+ },
2810
+ },
2811
+ # 0x102a same as Subdir4-0x300
2812
+ );
2813
+
2814
+ # Olympus raw information tags (ref 6)
2815
+ %Image::ExifTool::Olympus::RawInfo = (
2816
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
2817
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
2818
+ NOTES => 'These tags are found only in ORF images of some models (ie. C8080WZ).',
2819
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2820
+ 0x000 => {
2821
+ Name => 'RawInfoVersion',
2822
+ Writable => 'undef',
2823
+ RawConv => '$val=~s/\0+$//; $val', # (may be null terminated)
2824
+ Count => 4,
2825
+ },
2826
+ 0x100 => { Name => 'WB_RBLevelsUsed', Writable => 'int16u', Count => 2 },
2827
+ 0x110 => { Name => 'WB_RBLevelsAuto', Writable => 'int16u', Count => 2 },
2828
+ 0x120 => { Name => 'WB_RBLevelsShade', Writable => 'int16u', Count => 2 },
2829
+ 0x121 => { Name => 'WB_RBLevelsCloudy', Writable => 'int16u', Count => 2 },
2830
+ 0x122 => { Name => 'WB_RBLevelsFineWeather', Writable => 'int16u', Count => 2 },
2831
+ 0x123 => { Name => 'WB_RBLevelsTungsten', Writable => 'int16u', Count => 2 },
2832
+ 0x124 => { Name => 'WB_RBLevelsEveningSunlight',Writable => 'int16u', Count => 2 },
2833
+ 0x130 => { Name => 'WB_RBLevelsDaylightFluor', Writable => 'int16u', Count => 2 },
2834
+ 0x131 => { Name => 'WB_RBLevelsDayWhiteFluor', Writable => 'int16u', Count => 2 },
2835
+ 0x132 => { Name => 'WB_RBLevelsCoolWhiteFluor', Writable => 'int16u', Count => 2 },
2836
+ 0x133 => { Name => 'WB_RBLevelsWhiteFluorescent',Writable => 'int16u', Count => 2 },
2837
+ 0x200 => {
2838
+ Name => 'ColorMatrix2',
2839
+ Format => 'int16s',
2840
+ Writable => 'int16u',
2841
+ Count => 9,
2842
+ },
2843
+ # 0x240 => 'ColorMatrixDefault', ?
2844
+ # 0x250 => 'ColorMatrixSaturation', ?
2845
+ # 0x251 => 'ColorMatrixHue', ?
2846
+ # 0x252 => 'ColorMatrixContrast', ?
2847
+ # 0x300 => sharpness-related
2848
+ # 0x301 => list of sharpness-related values
2849
+ 0x310 => { Name => 'CoringFilter', Writable => 'int16u' },
2850
+ 0x311 => { Name => 'CoringValues', Writable => 'int16u', Count => 11 },
2851
+ 0x600 => { Name => 'BlackLevel2', Writable => 'int16u', Count => 4 },
2852
+ 0x601 => {
2853
+ Name => 'YCbCrCoefficients',
2854
+ Notes => 'stored as int16u[6], but extracted as rational32u[3]',
2855
+ Format => 'rational32u',
2856
+ },
2857
+ 0x611 => { Name => 'ValidPixelDepth', Writable => 'int16u', Count => 2 },
2858
+ 0x612 => { Name => 'CropLeft', Writable => 'int16u' }, #11
2859
+ 0x613 => { Name => 'CropTop', Writable => 'int16u' }, #11
2860
+ 0x614 => { Name => 'CropWidth', Writable => 'int32u' },
2861
+ 0x615 => { Name => 'CropHeight', Writable => 'int32u' },
2862
+ 0x1000 => {
2863
+ Name => 'LightSource',
2864
+ Writable => 'int16u',
2865
+ PrintConv => {
2866
+ 0 => 'Unknown',
2867
+ 16 => 'Shade',
2868
+ 17 => 'Cloudy',
2869
+ 18 => 'Fine Weather',
2870
+ 20 => 'Tungsten (Incandescent)',
2871
+ 22 => 'Evening Sunlight',
2872
+ 33 => 'Daylight Fluorescent',
2873
+ 34 => 'Day White Fluorescent',
2874
+ 35 => 'Cool White Fluorescent',
2875
+ 36 => 'White Fluorescent',
2876
+ 256 => 'One Touch White Balance',
2877
+ 512 => 'Custom 1-4',
2878
+ },
2879
+ },
2880
+ # the following 5 tags all have 3 values: val, min, max
2881
+ 0x1001 => { Name => 'WhiteBalanceComp', Writable => 'int16s', Count => 3 },
2882
+ 0x1010 => { Name => 'SaturationSetting', Writable => 'int16s', Count => 3 },
2883
+ 0x1011 => { Name => 'HueSetting', Writable => 'int16s', Count => 3 },
2884
+ 0x1012 => { Name => 'ContrastSetting', Writable => 'int16s', Count => 3 },
2885
+ 0x1013 => { Name => 'SharpnessSetting', Writable => 'int16s', Count => 3 },
2886
+ # settings written by Camedia Master 4.x
2887
+ 0x2000 => { Name => 'CMExposureCompensation', Writable => 'rational64s' },
2888
+ 0x2001 => { Name => 'CMWhiteBalance', Writable => 'int16u' },
2889
+ 0x2002 => { Name => 'CMWhiteBalanceComp', Writable => 'int16s' },
2890
+ 0x2010 => { Name => 'CMWhiteBalanceGrayPoint', Writable => 'int16u', Count => 3 },
2891
+ 0x2020 => { Name => 'CMSaturation', Writable => 'int16s', Count => 3 },
2892
+ 0x2021 => { Name => 'CMHue', Writable => 'int16s', Count => 3 },
2893
+ 0x2022 => { Name => 'CMContrast', Writable => 'int16s', Count => 3 },
2894
+ 0x2023 => { Name => 'CMSharpness', Writable => 'int16s', Count => 3 },
2895
+ );
2896
+
2897
+ # Olympus unknown information tags
2898
+ %Image::ExifTool::Olympus::UnknownInfo = (
2899
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
2900
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
2901
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2902
+ );
2903
+
2904
+ # Tags found only in some FE models
2905
+ %Image::ExifTool::Olympus::FETags = (
2906
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
2907
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
2908
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2909
+ NOTES => q{
2910
+ Some FE models write a large number of tags here, but most of this
2911
+ information remains unknown.
2912
+ },
2913
+ 0x0100 => {
2914
+ Name => 'BodyFirmwareVersion',
2915
+ Writable => 'string',
2916
+ },
2917
+ );
2918
+
2919
+ # tags in Olympus QuickTime videos (ref PH)
2920
+ # (similar information in Kodak,Minolta,Nikon,Olympus,Pentax and Sanyo videos)
2921
+ %Image::ExifTool::Olympus::MOV1 = (
2922
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2923
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2924
+ FIRST_ENTRY => 0,
2925
+ NOTES => q{
2926
+ This information is found in MOV videos from Olympus models such as the
2927
+ D540Z, D595Z, FE100, FE110, FE115, FE170 and FE200.
2928
+ },
2929
+ 0x00 => {
2930
+ Name => 'Make',
2931
+ Format => 'string[24]',
2932
+ },
2933
+ 0x18 => {
2934
+ Name => 'Model',
2935
+ Description => 'Camera Model Name',
2936
+ Format => 'string[8]',
2937
+ SeparateTable => 'CameraType',
2938
+ PrintConv => \%olympusCameraTypes,
2939
+ },
2940
+ # (01 00 at offset 0x20)
2941
+ 0x26 => {
2942
+ Name => 'ExposureUnknown',
2943
+ Unknown => 1,
2944
+ Format => 'int32u',
2945
+ # this conversion doesn't work for all models (ie. gives "1/100000")
2946
+ ValueConv => '$val ? 10 / $val : 0',
2947
+ PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
2948
+ },
2949
+ 0x2a => {
2950
+ Name => 'FNumber',
2951
+ Format => 'rational64u',
2952
+ PrintConv => 'sprintf("%.1f",$val)',
2953
+ },
2954
+ 0x32 => { #(NC)
2955
+ Name => 'ExposureCompensation',
2956
+ Format => 'rational64s',
2957
+ PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
2958
+ },
2959
+ # 0x44 => WhiteBalance ?
2960
+ 0x48 => {
2961
+ Name => 'FocalLength',
2962
+ Format => 'rational64u',
2963
+ PrintConv => 'sprintf("%.1f mm",$val)',
2964
+ },
2965
+ # 0xb1 => 'ISO', #(I don't think this works - PH)
2966
+ );
2967
+
2968
+ # tags in Olympus QuickTime videos (ref PH)
2969
+ # (similar information in Kodak,Minolta,Nikon,Olympus,Pentax and Sanyo videos)
2970
+ %Image::ExifTool::Olympus::MOV2 = (
2971
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2972
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2973
+ FIRST_ENTRY => 0,
2974
+ NOTES => q{
2975
+ This information is found in MOV videos from Olympus models such as the
2976
+ FE120, FE140 and FE190.
2977
+ },
2978
+ 0x00 => {
2979
+ Name => 'Make',
2980
+ Format => 'string[24]',
2981
+ },
2982
+ 0x18 => {
2983
+ Name => 'Model',
2984
+ Description => 'Camera Model Name',
2985
+ Format => 'string[24]',
2986
+ Notes => 'the actual model name, no decoding necessary',
2987
+ },
2988
+ # (01 00 at offset 0x30)
2989
+ 0x36 => {
2990
+ Name => 'ExposureTime',
2991
+ Format => 'int32u',
2992
+ ValueConv => '$val ? 10 / $val : 0',
2993
+ PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
2994
+ },
2995
+ 0x3a => {
2996
+ Name => 'FNumber',
2997
+ Format => 'rational64u',
2998
+ PrintConv => 'sprintf("%.1f",$val)',
2999
+ },
3000
+ 0x42 => { #(NC)
3001
+ Name => 'ExposureCompensation',
3002
+ Format => 'rational64s',
3003
+ PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
3004
+ },
3005
+ 0x58 => {
3006
+ Name => 'FocalLength',
3007
+ Format => 'rational64u',
3008
+ PrintConv => 'sprintf("%.1f mm",$val)',
3009
+ },
3010
+ 0xc1 => {
3011
+ Name => 'ISO',
3012
+ Format => 'int16u',
3013
+ },
3014
+ );
3015
+
3016
+ # tags in Olympus MP4 videos (ref PH)
3017
+ %Image::ExifTool::Olympus::MP4 = (
3018
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3019
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3020
+ FIRST_ENTRY => 0,
3021
+ NOTES => q{
3022
+ This information is found in MP4 videos from Olympus models such as the
3023
+ u7040 and u9010.
3024
+ },
3025
+ 0x00 => {
3026
+ Name => 'Make',
3027
+ Format => 'string[24]',
3028
+ },
3029
+ 0x18 => {
3030
+ Name => 'Model',
3031
+ Description => 'Camera Model Name',
3032
+ Format => 'string[24]',
3033
+ Notes => 'oddly different than CameraType values in JPEG images by the same camera',
3034
+ PrintConv => {
3035
+ SG472 => 'u7040,S7040',
3036
+ SG473 => 'u9010,S9010',
3037
+ SG475 => 'SP800UZ',
3038
+ SG551 => 'SZ-30MR',
3039
+ SG553 => 'SP-610UZ',
3040
+ SG554 => 'SZ-10',
3041
+ SG555 => 'SZ-20',
3042
+ SG573 => 'SZ-14',
3043
+ SG575 => 'SP-620UZ',
3044
+ },
3045
+ },
3046
+ 0x28 => {
3047
+ Name => 'FNumber',
3048
+ Format => 'rational64u',
3049
+ PrintConv => 'sprintf("%.1f",$val)',
3050
+ },
3051
+ 0x30 => { #(NC)
3052
+ Name => 'ExposureCompensation',
3053
+ Format => 'rational64s',
3054
+ PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
3055
+ },
3056
+ # 0x38 - int32u: 3
3057
+ # 0x3c - int32u: 1
3058
+ # 0x40 - int16u: 5
3059
+ # 0x42 - int16u: 0,4,9
3060
+ # 0x64 - int32u: 0,6000,12000
3061
+ # 0x48 - int32u: 100 (ISO?)
3062
+ 0x68 => {
3063
+ Name => 'MovableInfo',
3064
+ Condition => '$$valPt =~ /^DIGI/',
3065
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::MovableInfo' },
3066
+ },
3067
+ 0x72 => {
3068
+ Name => 'MovableInfo',
3069
+ Condition => '$$valPt =~ /^DIGI/',
3070
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::MovableInfo' },
3071
+ },
3072
+ );
3073
+
3074
+ # yet a different QuickTime TAGS format (PH, E-M5)
3075
+ %Image::ExifTool::Olympus::MOV3 = (
3076
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3077
+ NOTES => 'QuickTime information found in the TAGS atom of MOV videos from the E-M5.',
3078
+ OLYM => {
3079
+ Name => 'OlympusAtom',
3080
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::OLYM2' },
3081
+ },
3082
+ );
3083
+
3084
+ # yet a different QuickTime OLYM atom format (PH, E-M5)
3085
+ %Image::ExifTool::Olympus::OLYM2 = (
3086
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3087
+ prms => {
3088
+ Name => 'MakerNotes',
3089
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::prms' },
3090
+ },
3091
+ thmb =>{
3092
+ Name => 'ThumbInfo',
3093
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::thmb2' },
3094
+ },
3095
+ scrn =>{
3096
+ Name => 'PreviewInfo',
3097
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::scrn2' },
3098
+ },
3099
+ );
3100
+
3101
+ # the "prms" atom in E-M5 MOV videos (PH, E-M5)
3102
+ %Image::ExifTool::Olympus::prms = (
3103
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3104
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3105
+ FIRST_ENTRY => 0,
3106
+ NOTES => q{
3107
+ Information extracted from the "prms" atom in MOV videos from Olympus models
3108
+ such as the OM E-M5.
3109
+ },
3110
+ 0x12 => {
3111
+ Name => 'Make',
3112
+ Format => 'string[24]',
3113
+ },
3114
+ 0x2c => {
3115
+ Name => 'Model',
3116
+ Description => 'Camera Model Name',
3117
+ Format => 'string[24]',
3118
+ SeparateTable => 'CameraType',
3119
+ PrintConv => \%olympusCameraTypes,
3120
+ },
3121
+ 0x83 => {
3122
+ Name => 'DateTime1',
3123
+ Format => 'string[24]',
3124
+ Groups => { 2 => 'Time' },
3125
+ },
3126
+ 0x9d => {
3127
+ Name => 'DateTime2',
3128
+ Format => 'string[24]',
3129
+ Groups => { 2 => 'Time' },
3130
+ },
3131
+ );
3132
+
3133
+ # yet a different "thmb" atom format (PH, E-M5)
3134
+ %Image::ExifTool::Olympus::thmb2 = (
3135
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3136
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3137
+ 0 => {
3138
+ Name => 'ThumbnailWidth',
3139
+ Format => 'int16u',
3140
+ },
3141
+ 2 => {
3142
+ Name => 'ThumbnailHeight',
3143
+ Format => 'int16u',
3144
+ },
3145
+ 4 => {
3146
+ Name => 'ThumbnailLength',
3147
+ Format => 'int32u',
3148
+ },
3149
+ 8 => {
3150
+ Name => 'ThumbnailImage',
3151
+ Format => 'undef[$val{4}]',
3152
+ Notes => '160x120 JPEG thumbnail image',
3153
+ RawConv => '$self->ValidateImage(\$val,$tag)',
3154
+ },
3155
+ );
3156
+
3157
+ # yet a different "scrn" atom format (PH, E-M5)
3158
+ %Image::ExifTool::Olympus::scrn2 = (
3159
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3160
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3161
+ # 0 => int16u: 1 - number of preview images?
3162
+ 2 => {
3163
+ Name => 'OlympusPreview',
3164
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::scrn' },
3165
+ },
3166
+ );
3167
+
3168
+ # movable information found in MP4 videos
3169
+ %Image::ExifTool::Olympus::MovableInfo = (
3170
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3171
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3172
+ FIRST_ENTRY => 0,
3173
+ 0x04 => { #(NC)
3174
+ Name => 'ISO',
3175
+ Format => 'int32u',
3176
+ },
3177
+ 0x2c => {
3178
+ Name => 'EncoderVersion',
3179
+ Format => 'string[16]',
3180
+ },
3181
+ 0x3c => {
3182
+ Name => 'DecoderVersion',
3183
+ Format => 'string[16]',
3184
+ },
3185
+ 0x83 => {
3186
+ Name => 'Thumbnail',
3187
+ SubDirectory => {
3188
+ TagTable => 'Image::ExifTool::Olympus::Thumbnail',
3189
+ Base => '$start', # (use a separate table because of this)
3190
+ },
3191
+ },
3192
+ );
3193
+
3194
+ # thumbnail image information found in MP4 videos (similar in Olympus,Samsung,Sanyo) (ref PH)
3195
+ %Image::ExifTool::Olympus::Thumbnail = (
3196
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3197
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3198
+ FIRST_ENTRY => 0,
3199
+ FORMAT => 'int32u',
3200
+ 1 => 'ThumbnailWidth',
3201
+ 2 => 'ThumbnailHeight',
3202
+ 3 => 'ThumbnailLength',
3203
+ 4 => { Name => 'ThumbnailOffset', IsOffset => 1 },
3204
+ );
3205
+
3206
+ # thumbnail information found in 'thmb' atom of MP4 videos from the TG-810 (ref PH)
3207
+ %Image::ExifTool::Olympus::thmb = (
3208
+ NOTES => 'Information extracted from the "thmb" atom of Olympus MP4 videos.',
3209
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3210
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3211
+ 0 => {
3212
+ Name => 'ThumbnailLength',
3213
+ Format => 'int32u',
3214
+ },
3215
+ 4 => {
3216
+ Name => 'ThumbnailImage',
3217
+ Format => 'undef[$val{0}]',
3218
+ Notes => '160x120 JPEG thumbnail image',
3219
+ RawConv => '$self->ValidateImage(\$val,$tag)',
3220
+ },
3221
+ );
3222
+
3223
+ # thumbnail information found in 'scrn' atom of MP4 videos from the TG-810 (ref PH)
3224
+ %Image::ExifTool::Olympus::scrn = (
3225
+ NOTES => 'Information extracted from the "scrn" atom of Olympus MP4 videos.',
3226
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3227
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3228
+ 0 => {
3229
+ Name => 'PreviewImageLength',
3230
+ Format => 'int32u',
3231
+ },
3232
+ 4 => {
3233
+ Name => 'PreviewImage',
3234
+ Format => 'undef[$val{0}]',
3235
+ Notes => '640x480 JPEG preview image',
3236
+ RawConv => '$self->ValidateImage(\$val,$tag)',
3237
+ },
3238
+ );
3239
+
3240
+ # information in OLYM atom of MP4 videos from the TG-810 (ref PH)
3241
+ %Image::ExifTool::Olympus::OLYM = (
3242
+ NOTES => 'Tags found in the OLYM atom of MP4 videos from the TG-810.',
3243
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3244
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3245
+ 0x0e => {
3246
+ Name => 'Make',
3247
+ Format => 'string[26]',
3248
+ },
3249
+ 0x28 => {
3250
+ Name => 'Model',
3251
+ Description => 'Camera Model Name',
3252
+ Format => 'string[24]',
3253
+ SeparateTable => 'CameraType',
3254
+ PrintConv => \%olympusCameraTypes,
3255
+ },
3256
+ 0x5a => {
3257
+ Name => 'FNumber',
3258
+ Format => 'rational64u',
3259
+ PrintConv => 'sprintf("%.1f",$val)',
3260
+ },
3261
+ 0x7f => {
3262
+ Name => 'DateTimeOriginal', #(NC)
3263
+ Format => 'string[24]',
3264
+ Groups => { 2 => 'Time' },
3265
+ PrintConv => '$self->ConvertDateTime($val)',
3266
+ },
3267
+ 0x99 => {
3268
+ Name => 'DateTime2',
3269
+ Format => 'string[24]',
3270
+ Groups => { 2 => 'Time' },
3271
+ },
3272
+ 0x109 => {
3273
+ Name => 'ThumbnailWidth',
3274
+ Format => 'int16u',
3275
+ },
3276
+ 0x10b => {
3277
+ Name => 'ThumbnailHeight',
3278
+ Format => 'int16u',
3279
+ },
3280
+ );
3281
+
3282
+ # tags in Olympus AVI videos (ref PH)
3283
+ # (very similar to Pentax::Junk2 tags)
3284
+ %Image::ExifTool::Olympus::AVI = (
3285
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3286
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3287
+ FIRST_ENTRY => 0,
3288
+ NOTES => 'This information is found in Olympus AVI videos.',
3289
+ 0x12 => {
3290
+ Name => 'Make',
3291
+ Format => 'string[24]',
3292
+ },
3293
+ 0x2c => {
3294
+ Name => 'Model',
3295
+ Description => 'Camera Model Name',
3296
+ Format => 'string[24]',
3297
+ SeparateTable => 'CameraType',
3298
+ PrintConv => \%olympusCameraTypes,
3299
+ },
3300
+ 0x5e => {
3301
+ Name => 'FNumber',
3302
+ Format => 'rational64u',
3303
+ PrintConv => 'sprintf("%.1f",$val)',
3304
+ },
3305
+ 0x83 => {
3306
+ Name => 'DateTime1',
3307
+ Format => 'string[24]',
3308
+ Groups => { 2 => 'Time' },
3309
+ },
3310
+ 0x9d => {
3311
+ Name => 'DateTime2',
3312
+ Format => 'string[24]',
3313
+ Groups => { 2 => 'Time' },
3314
+ },
3315
+ 0x129 => {
3316
+ Name => 'ThumbInfo',
3317
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::thmb2' },
3318
+ },
3319
+ );
3320
+
3321
+ # tags in WAV files from Olympus PCM linear recorders (ref 18)
3322
+ %Image::ExifTool::Olympus::WAV = (
3323
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3324
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Audio' },
3325
+ FIRST_ENTRY => 0,
3326
+ NOTES => q{
3327
+ This information is found in WAV files from Olympus PCM linear recorders
3328
+ like the LS-5, LS-10, LS-11.
3329
+ },
3330
+ 0x0c => {
3331
+ Name => 'Model',
3332
+ Description => 'Camera Model Name',
3333
+ Format => 'string[16]',
3334
+ },
3335
+ 0x1c => {
3336
+ Name => 'FileNumber',
3337
+ Format => 'int32u',
3338
+ PrintConv => 'sprintf("%.4d", $val)',
3339
+ },
3340
+ 0x26 => {
3341
+ Name => 'DateTimeOriginal',
3342
+ Description => 'Date/Time Original',
3343
+ Groups => { 2 => 'Time' },
3344
+ Format => 'undef[12]',
3345
+ Notes => 'time at start of recording',
3346
+ ValueConv => q{
3347
+ return undef unless $val =~ /^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/;
3348
+ my $y = $1 < 70 ? "20$1" : "19$1";
3349
+ return "$y:$2:$3 $4:$5:$6";
3350
+ },
3351
+ PrintConv => '$self->ConvertDateTime($val)',
3352
+ },
3353
+ 0x32 => {
3354
+ Name => 'DateTimeEnd',
3355
+ Groups => { 2 => 'Time' },
3356
+ Format => 'undef[12]',
3357
+ Notes => 'time at end of recording',
3358
+ ValueConv => q{
3359
+ return undef unless $val =~ /^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/;
3360
+ my $y = $1 < 70 ? "20$1" : "19$1";
3361
+ return "$y:$2:$3 $4:$5:$6";
3362
+ },
3363
+ PrintConv => '$self->ConvertDateTime($val)',
3364
+ },
3365
+ 0x3e => {
3366
+ Name => 'RecordingTime',
3367
+ Format => 'undef[6]',
3368
+ ValueConv => '$val =~ s/^(\d{2})(\d{2})/$1:$2:/; $val',
3369
+ },
3370
+ 0x200 => {
3371
+ Name => 'Duration',
3372
+ Format => 'int32u',
3373
+ ValueConv => '$val / 1000',
3374
+ PrintConv => 'ConvertDuration($val)',
3375
+ },
3376
+ 0x20a => { Name => 'Index01', %indexInfo },
3377
+ 0x214 => { Name => 'Index02', %indexInfo },
3378
+ 0x21e => { Name => 'Index03', %indexInfo },
3379
+ 0x228 => { Name => 'Index04', %indexInfo },
3380
+ 0x232 => { Name => 'Index05', %indexInfo },
3381
+ 0x23c => { Name => 'Index06', %indexInfo },
3382
+ 0x246 => { Name => 'Index07', %indexInfo },
3383
+ 0x250 => { Name => 'Index08', %indexInfo },
3384
+ 0x25a => { Name => 'Index09', %indexInfo },
3385
+ 0x264 => { Name => 'Index10', %indexInfo },
3386
+ 0x26e => { Name => 'Index11', %indexInfo },
3387
+ 0x278 => { Name => 'Index12', %indexInfo },
3388
+ 0x282 => { Name => 'Index13', %indexInfo },
3389
+ 0x28c => { Name => 'Index14', %indexInfo },
3390
+ 0x296 => { Name => 'Index15', %indexInfo },
3391
+ 0x2a0 => { Name => 'Index16', %indexInfo },
3392
+ );
3393
+
3394
+ # Olympus composite tags
3395
+ %Image::ExifTool::Olympus::Composite = (
3396
+ GROUPS => { 2 => 'Camera' },
3397
+ ExtenderStatus => {
3398
+ Notes => q{
3399
+ Olympus cameras have the quirk that they may retain the extender settings
3400
+ after the extender is removed until the camera is powered off. This tag is
3401
+ an attempt to represent the actual status of the extender.
3402
+ },
3403
+ Require => {
3404
+ 0 => 'Olympus:Extender',
3405
+ 1 => 'Olympus:LensType',
3406
+ 2 => 'MaxApertureValue',
3407
+ },
3408
+ ValueConv => 'Image::ExifTool::Olympus::ExtenderStatus($val[0],$prt[1],$val[2])',
3409
+ PrintConv => {
3410
+ 0 => 'Not attached',
3411
+ 1 => 'Attached',
3412
+ 2 => 'Removed',
3413
+ },
3414
+ },
3415
+ ZoomedPreviewImage => {
3416
+ Require => {
3417
+ 0 => 'ZoomedPreviewStart',
3418
+ 1 => 'ZoomedPreviewLength',
3419
+ },
3420
+ RawConv => 'Image::ExifTool::Exif::ExtractImage($self,$val[0],$val[1],"ZoomedPreviewImage")',
3421
+ },
3422
+ );
3423
+
3424
+ # add our composite tags
3425
+ Image::ExifTool::AddCompositeTags('Image::ExifTool::Olympus');
3426
+
3427
+
3428
+ #------------------------------------------------------------------------------
3429
+ # Determine if the extender (EX-25/EC-14) was really attached (ref 9)
3430
+ # Inputs: 0) Extender, 1) LensType string, 2) MaxApertureAtMaxFocal
3431
+ # Returns: 0=not attached, 1=attached, 2=could have been removed
3432
+ # Notes: Olympus has a bug in the in-camera firmware which results in the
3433
+ # extender information being cached and written into the EXIF data even after
3434
+ # the extender has been removed. You must power cycle the camera to prevent it
3435
+ # from writing the cached extender information into the EXIF data.
3436
+ sub ExtenderStatus($$$)
3437
+ {
3438
+ my ($extender, $lensType, $maxAperture) = @_;
3439
+ my @info = split ' ', $extender;
3440
+ # validate that extender identifier is reasonable
3441
+ return 0 unless @info >= 2 and hex($info[1]);
3442
+ # if it's not an EC-14 (id '0 04') then assume it was really attached
3443
+ # (other extenders don't seem to affect the reported max aperture)
3444
+ return 1 if "$info[0] $info[1]" ne '0 04';
3445
+ # get the maximum aperture for this lens (in $1)
3446
+ $lensType =~ / F(\d+(\.\d+)?)/ or return 1;
3447
+ # If the maximum aperture at the maximum focal length is greater than the
3448
+ # known max/max aperture of the lens, then the extender must be attached
3449
+ return ($maxAperture - $1 > 0.2) ? 1 : 2;
3450
+ }
3451
+
3452
+ #------------------------------------------------------------------------------
3453
+ # Print AF points
3454
+ # Inputs: 0) AF point data (string of integers)
3455
+ # Notes: I'm just guessing that the 2nd and 4th bytes are the Y coordinates,
3456
+ # and that more AF points will show up in the future (derived from E-1 images,
3457
+ # and the E-1 uses just one of 3 possible AF points, all centered in Y) - PH
3458
+ sub PrintAFAreas($)
3459
+ {
3460
+ my $val = shift;
3461
+ my @points = split ' ', $val;
3462
+ my %afPointNames = (
3463
+ 0x36794285 => 'Left',
3464
+ 0x79798585 => 'Center',
3465
+ 0xBD79C985 => 'Right',
3466
+ );
3467
+ $val = '';
3468
+ my $pt;
3469
+ foreach $pt (@points) {
3470
+ next unless $pt;
3471
+ $val and $val .= ', ';
3472
+ $afPointNames{$pt} and $val .= $afPointNames{$pt} . ' ';
3473
+ my @coords = unpack('C4',pack('N',$pt));
3474
+ $val .= "($coords[0],$coords[1])-($coords[2],$coords[3])";
3475
+ }
3476
+ $val or $val = 'none';
3477
+ return $val;
3478
+ }
3479
+
3480
+ #------------------------------------------------------------------------------
3481
+ # Process ORF file
3482
+ # Inputs: 0) ExifTool object reference, 1) directory information reference
3483
+ # Returns: 1 if this looked like a valid ORF file, 0 otherwise
3484
+ sub ProcessORF($$)
3485
+ {
3486
+ my ($exifTool, $dirInfo) = @_;
3487
+ return $exifTool->ProcessTIFF($dirInfo);
3488
+ }
3489
+
3490
+ 1; # end
3491
+
3492
+ __END__
3493
+
3494
+ =head1 NAME
3495
+
3496
+ Image::ExifTool::Olympus - Olympus/Epson maker notes tags
3497
+
3498
+ =head1 SYNOPSIS
3499
+
3500
+ This module is loaded automatically by Image::ExifTool when required.
3501
+
3502
+ =head1 DESCRIPTION
3503
+
3504
+ This module contains definitions required by Image::ExifTool to interpret
3505
+ Olympus or Epson maker notes in EXIF information.
3506
+
3507
+ =head1 AUTHOR
3508
+
3509
+ Copyright 2003-2013, Phil Harvey (phil at owl.phy.queensu.ca)
3510
+
3511
+ This library is free software; you can redistribute it and/or modify it
3512
+ under the same terms as Perl itself.
3513
+
3514
+ =head1 REFERENCES
3515
+
3516
+ =over 4
3517
+
3518
+ =item L<http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html>
3519
+
3520
+ =item L<http://www.cybercom.net/~dcoffin/dcraw/>
3521
+
3522
+ =item L<http://www.ozhiker.com/electronics/pjmt/jpeg_info/olympus_mn.html>
3523
+
3524
+ =item L<http://olypedia.de/Olympus_Makernotes>
3525
+
3526
+ =back
3527
+
3528
+ =head1 ACKNOWLEDGEMENTS
3529
+
3530
+ Thanks to Markku Hanninen, Remi Guyomarch, Frank Ledwon, Michael Meissner,
3531
+ Mark Dapoz, Ioannis Panagiotopoulos and Tomasz Kawecki for their help
3532
+ figuring out some Olympus tags, and Lilo Huang, Chris Shaw and Viktor
3533
+ Lushnikov for adding to the LensType list.
3534
+
3535
+ =head1 SEE ALSO
3536
+
3537
+ L<Image::ExifTool::TagNames/Olympus Tags>,
3538
+ L<Image::ExifTool(3pm)|Image::ExifTool>
3539
+
3540
+ =cut