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