exiftool_vendored 9.33.0

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

Potentially problematic release.


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

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