exiftool_vendored 9.33.0

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