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,296 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: FLAC.pm
3
+ #
4
+ # Description: Read Free Lossless Audio Codec information
5
+ #
6
+ # Revisions: 11/13/2006 - P. Harvey Created
7
+ #
8
+ # References: 1) http://flac.sourceforge.net/
9
+ #------------------------------------------------------------------------------
10
+
11
+ package Image::ExifTool::FLAC;
12
+
13
+ use strict;
14
+ use vars qw($VERSION);
15
+ use Image::ExifTool qw(:DataAccess :Utils);
16
+
17
+ $VERSION = '1.04';
18
+
19
+ sub ProcessBitStream($$$);
20
+
21
+ # FLAC metadata blocks
22
+ %Image::ExifTool::FLAC::Main = (
23
+ NOTES => q{
24
+ Free Lossless Audio Codec (FLAC) meta information. ExifTool also extracts
25
+ ID3 information from these files.
26
+ },
27
+ 0 => {
28
+ Name => 'StreamInfo',
29
+ SubDirectory => { TagTable => 'Image::ExifTool::FLAC::StreamInfo' },
30
+ },
31
+ 1 => { Name => 'Padding', Binary => 1, Unknown => 1 },
32
+ 2 => { Name => 'Application', Binary => 1, Unknown => 1 },
33
+ 3 => { Name => 'SeekTable', Binary => 1, Unknown => 1 },
34
+ 4 => {
35
+ Name => 'VorbisComment',
36
+ SubDirectory => { TagTable => 'Image::ExifTool::Vorbis::Comments' },
37
+ },
38
+ 5 => { Name => 'CueSheet', Binary => 1, Unknown => 1 },
39
+ 6 => {
40
+ Name => 'Picture',
41
+ SubDirectory => { TagTable => 'Image::ExifTool::FLAC::Picture' },
42
+ },
43
+ # 7-126 - Reserved
44
+ # 127 - Invalid
45
+ );
46
+
47
+ %Image::ExifTool::FLAC::StreamInfo = (
48
+ PROCESS_PROC => \&ProcessBitStream,
49
+ NOTES => 'FLAC is big-endian, so bit 0 is the high-order bit in this table.',
50
+ GROUPS => { 2 => 'Audio' },
51
+ 'Bit000-015' => 'BlockSizeMin',
52
+ 'Bit016-031' => 'BlockSizeMax',
53
+ 'Bit032-055' => 'FrameSizeMin',
54
+ 'Bit056-079' => 'FrameSizeMax',
55
+ 'Bit080-099' => 'SampleRate',
56
+ 'Bit100-102' => {
57
+ Name => 'Channels',
58
+ ValueConv => '$val + 1',
59
+ },
60
+ 'Bit103-107' => {
61
+ Name => 'BitsPerSample',
62
+ ValueConv => '$val + 1',
63
+ },
64
+ 'Bit108-143' => 'TotalSamples',
65
+ );
66
+
67
+ %Image::ExifTool::FLAC::Picture = (
68
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
69
+ GROUPS => { 2 => 'Image' },
70
+ FORMAT => 'int32u',
71
+ 0 => {
72
+ Name => 'PictureType',
73
+ PrintConv => { # (Note: Duplicated in ID3, ASF and FLAC modules!)
74
+ 0 => 'Other',
75
+ 1 => '32x32 PNG Icon',
76
+ 2 => 'Other Icon',
77
+ 3 => 'Front Cover',
78
+ 4 => 'Back Cover',
79
+ 5 => 'Leaflet',
80
+ 6 => 'Media',
81
+ 7 => 'Lead Artist',
82
+ 8 => 'Artist',
83
+ 9 => 'Conductor',
84
+ 10 => 'Band',
85
+ 11 => 'Composer',
86
+ 12 => 'Lyricist',
87
+ 13 => 'Recording Studio or Location',
88
+ 14 => 'Recording Session',
89
+ 15 => 'Performance',
90
+ 16 => 'Capture from Movie or Video',
91
+ 17 => 'Bright(ly) Colored Fish',
92
+ 18 => 'Illustration',
93
+ 19 => 'Band Logo',
94
+ 20 => 'Publisher Logo',
95
+ },
96
+ },
97
+ 1 => {
98
+ Name => 'PictureMIMEType',
99
+ Format => 'var_pstr32',
100
+ },
101
+ 2 => {
102
+ Name => 'PictureDescription',
103
+ Format => 'var_pstr32',
104
+ ValueConv => '$self->Decode($val, "UTF8")',
105
+ },
106
+ 3 => 'PictureWidth',
107
+ 4 => 'PictureHeight',
108
+ 5 => 'PictureBitsPerPixel',
109
+ 6 => 'PictureIndexedColors',
110
+ 7 => 'PictureLength',
111
+ 8 => {
112
+ Name => 'Picture',
113
+ Format => 'undef[$val{7}]',
114
+ Binary => 1,
115
+ },
116
+ );
117
+
118
+ # FLAC composite tags
119
+ %Image::ExifTool::FLAC::Composite = (
120
+ Duration => {
121
+ Require => {
122
+ 0 => 'FLAC:SampleRate',
123
+ 1 => 'FLAC:TotalSamples',
124
+ },
125
+ ValueConv => '$val[0] and $val[1] ? $val[1] / $val[0] : undef',
126
+ PrintConv => 'ConvertDuration($val)',
127
+ },
128
+ );
129
+
130
+ # add our composite tags
131
+ Image::ExifTool::AddCompositeTags('Image::ExifTool::FLAC');
132
+
133
+
134
+ #------------------------------------------------------------------------------
135
+ # Process information in a bit stream
136
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
137
+ # Notes: Byte order is used to determine the ordering of bits in the stream:
138
+ # 'MM' = bit 0 is most significant, 'II' = bit 0 is least significant
139
+ # - can handle arbitrarily wide values (ie. 8-byte or larger integers)
140
+ sub ProcessBitStream($$$)
141
+ {
142
+ my ($exifTool, $dirInfo, $tagTablePtr) = @_;
143
+ my $dataPt = $$dirInfo{DataPt};
144
+ my $dataPos = $$dirInfo{DataPos};
145
+ my $dirStart = $$dirInfo{DirStart} || 0;
146
+ my $dirLen = $$dirInfo{DirLen} || (length($$dataPt) - $dirStart);
147
+ my $verbose = $exifTool->Options('Verbose');
148
+ my $byteOrder = GetByteOrder();
149
+ my $tag;
150
+
151
+ if ($verbose) {
152
+ $exifTool->VPrint(0, " + [BitStream directory, $dirLen bytes, '$byteOrder' order]\n");
153
+ }
154
+ foreach $tag (sort keys %$tagTablePtr) {
155
+ next unless $tag =~ /^Bit(\d+)-?(\d+)?/;
156
+ my ($b1, $b2) = ($1, $2 || $1); # start/end bit numbers in stream
157
+ my ($i1, $i2) = (int($b1 / 8), int($b2 / 8)); # start/end byte numbers
158
+ my ($f1, $f2) = ($b1 % 8, $b2 % 8); # start/end bit numbers within each byte
159
+ last if $i2 >= $dirLen;
160
+ my $val = 0;
161
+ my ($i, $mask, $extra);
162
+ $extra = ', Mask=0x' if $verbose and ($f1 != 0 or $f2 != 7);
163
+ if ($byteOrder eq 'MM') {
164
+ # loop from high byte to low byte
165
+ for ($i=$i1; $i<=$i2; ++$i) {
166
+ $mask = 0xff;
167
+ if ($i == $i1 and $f1) {
168
+ # mask off high bits in first word (0 is high bit)
169
+ foreach ((8-$f1) .. 7) { $mask ^= (1 << $_) }
170
+ }
171
+ if ($i == $i2 and $f2 < 7) {
172
+ # mask off low bits in last word (7 is low bit)
173
+ foreach (0 .. (6-$f2)) { $mask ^= (1 << $_) }
174
+ }
175
+ $val = $val * 256 + ($mask & Get8u($dataPt, $i + $dirStart));
176
+ $extra .= sprintf('%.2x', $mask) if $extra;
177
+ }
178
+ } else {
179
+ # (FLAC is big-endian, but support little-endian bit streams
180
+ # so this routine can be used by other modules)
181
+ # loop from high byte to low byte
182
+ for ($i=$i2; $i>=$i1; --$i) {
183
+ $mask = 0xff;
184
+ if ($i == $i1 and $f1) {
185
+ # mask off low bits in first word (0 is low bit)
186
+ foreach (0 .. ($f1-1)) { $mask ^= (1 << $_) }
187
+ }
188
+ if ($i == $i2 and $f2 < 7) {
189
+ # mask off high bits in last word (7 is high bit)
190
+ foreach (($f2+1) .. 7) { $mask ^= (1 << $_) }
191
+ }
192
+ $val = $val * 256 + ($mask & Get8u($dataPt, $i + $dirStart));
193
+ $extra .= sprintf('%.2x', $mask) if $extra;
194
+ }
195
+ }
196
+ # shift word down until low bit is in position 0
197
+ until ($mask & 0x01) {
198
+ $val /= 2;
199
+ $mask >>= 1;
200
+ }
201
+ $exifTool->HandleTag($tagTablePtr, $tag, $val,
202
+ DataPt => $dataPt,
203
+ DataPos => $dataPos,
204
+ Start => $dirStart + $i1,
205
+ Size => $i2 - $i1 + 1,
206
+ Extra => $extra,
207
+ );
208
+ }
209
+ return 1;
210
+ }
211
+
212
+ #------------------------------------------------------------------------------
213
+ # Extract information from an Ogg FLAC file
214
+ # Inputs: 0) ExifTool object reference, 1) dirInfo reference
215
+ # Returns: 1 on success, 0 if this wasn't a valid Ogg FLAC file
216
+ sub ProcessFLAC($$)
217
+ {
218
+ my ($exifTool, $dirInfo) = @_;
219
+
220
+ # must first check for leading/trailing ID3 information
221
+ unless ($exifTool->{DoneID3}) {
222
+ require Image::ExifTool::ID3;
223
+ Image::ExifTool::ID3::ProcessID3($exifTool, $dirInfo) and return 1;
224
+ }
225
+ my $raf = $$dirInfo{RAF};
226
+ my $verbose = $exifTool->Options('Verbose');
227
+ my $out = $exifTool->Options('TextOut');
228
+ my ($buff, $err);
229
+
230
+ # check FLAC signature
231
+ $raf->Read($buff, 4) == 4 and $buff eq 'fLaC' or return 0;
232
+ $exifTool->SetFileType();
233
+ SetByteOrder('MM');
234
+ my $tagTablePtr = GetTagTable('Image::ExifTool::FLAC::Main');
235
+ for (;;) {
236
+ # read next metadata block header
237
+ $raf->Read($buff, 4) == 4 or last;
238
+ my $flag = unpack('C', $buff);
239
+ my $size = unpack('N', $buff) & 0x00ffffff;
240
+ $raf->Read($buff, $size) == $size or $err = 1, last;
241
+ my $last = $flag & 0x80; # last-metadata-block flag
242
+ my $tag = $flag & 0x7f; # tag bits
243
+ if ($verbose) {
244
+ print $out "FLAC metadata block, type $tag:\n";
245
+ $exifTool->VerboseDump(\$buff, DataPos => $raf->Tell() - $size);
246
+ }
247
+ $exifTool->HandleTag($tagTablePtr, $tag, undef,
248
+ DataPt => \$buff,
249
+ DataPos => $raf->Tell() - $size,
250
+ );
251
+ last if $last; # all done if is set
252
+ }
253
+ $err and $exifTool->Warn('Format error in FLAC file');
254
+ return 1;
255
+ }
256
+
257
+ 1; # end
258
+
259
+ __END__
260
+
261
+ =head1 NAME
262
+
263
+ Image::ExifTool::FLAC - Read Free Lossless Audio Codec information
264
+
265
+ =head1 SYNOPSIS
266
+
267
+ This module is used by Image::ExifTool
268
+
269
+ =head1 DESCRIPTION
270
+
271
+ This module contains definitions required by Image::ExifTool to extract meta
272
+ information from Free Lossless Audio Codec (FLAC) audio files.
273
+
274
+ =head1 AUTHOR
275
+
276
+ Copyright 2003-2013, Phil Harvey (phil at owl.phy.queensu.ca)
277
+
278
+ This library is free software; you can redistribute it and/or modify it
279
+ under the same terms as Perl itself.
280
+
281
+ =head1 REFERENCES
282
+
283
+ =over 4
284
+
285
+ =item L<http://flac.sourceforge.net/>
286
+
287
+ =back
288
+
289
+ =head1 SEE ALSO
290
+
291
+ L<Image::ExifTool::TagNames/FLAC Tags>,
292
+ L<Image::ExifTool::TagNames/Ogg Tags>,
293
+ L<Image::ExifTool(3pm)|Image::ExifTool>
294
+
295
+ =cut
296
+
@@ -0,0 +1,972 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: FLIR.pm
3
+ #
4
+ # Description: Read FLIR meta information
5
+ #
6
+ # Revisions: 2013/03/28 - P. Harvey Created
7
+ #
8
+ # References: 1) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4898.0.html
9
+ # 2) http://www.nuage.ch/site/flir-i7-some-analysis/
10
+ # 3) http://www.workswell.cz/manuals/flir/hardware/A3xx_and_A6xx_models/Streaming_format_ThermoVision.pdf
11
+ # 4) http://support.flir.com/DocDownload/Assets/62/English/1557488%24A.pdf
12
+ # 5) http://code.google.com/p/dvelib/source/browse/trunk/flirPublicFormat/fpfConverter/Fpfimg.h?spec=svn3&r=3
13
+ # JD) Jens Duttke private communication
14
+ #
15
+ # Glossary: FLIR = Forward Looking Infra Red
16
+ #------------------------------------------------------------------------------
17
+
18
+ package Image::ExifTool::FLIR;
19
+
20
+ use strict;
21
+ use vars qw($VERSION);
22
+ use Image::ExifTool qw(:DataAccess :Utils);
23
+ use Image::ExifTool::Exif;
24
+
25
+ $VERSION = '1.04';
26
+
27
+ sub ProcessFLIR($$;$);
28
+ sub ProcessFLIRText($$$);
29
+
30
+ my %temperatureInfo = (
31
+ Writable => 'rational64u',
32
+ Format => 'rational64s', # (have seen negative values)
33
+ );
34
+
35
+ # tag information for floating point Kelvin tag
36
+ my %floatKelvin = (
37
+ Format => 'float',
38
+ ValueConv => '$val - 273.15',
39
+ PrintConv => 'sprintf("%.1f C",$val)',
40
+ );
41
+
42
+ # commonly used tag information elements
43
+ my %float1f = ( Format => 'float', PrintConv => 'sprintf("%.1f",$val)' );
44
+ my %float2f = ( Format => 'float', PrintConv => 'sprintf("%.2f",$val)' );
45
+ my %float8g = ( Format => 'float', PrintConv => 'sprintf("%.8g",$val)' );
46
+
47
+ # FLIR makernotes tags (ref PH)
48
+ %Image::ExifTool::FLIR::Main = (
49
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
50
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
51
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
52
+ WRITABLE => 1,
53
+ PRIORITY => 0, # (unreliable)
54
+ NOTES => q{
55
+ Information extracted from the maker notes of JPEG images from thermal
56
+ imaging cameras by FLIR Systems Inc.
57
+ },
58
+ 0x01 => { #2
59
+ Name => 'ImageTemperatureMax',
60
+ %temperatureInfo,
61
+ Notes => q{
62
+ these temperatures may be in Celcius, Kelvin or Fahrenheit, but there is no
63
+ way to tell which
64
+ },
65
+ },
66
+ 0x02 => { Name => 'ImageTemperatureMin', %temperatureInfo }, #2
67
+ 0x03 => { #1
68
+ Name => 'Emissivity',
69
+ Writable => 'rational64u',
70
+ PrintConv => 'sprintf("%.2f",$val)',
71
+ PrintConvInv => '$val',
72
+ },
73
+ # 0x04 does not change with temperature units; often 238, 250 or 457
74
+ 0x04 => { Name => 'UnknownTemperature', %temperatureInfo, Unknown => 1 },
75
+ # 0x05,0x06 are unreliable. As written by FLIR tools, these are the
76
+ # CameraTemperatureRangeMax/Min, but the units vary depending on the
77
+ # options settings. But as written by some cameras, the values are different.
78
+ 0x05 => { Name => 'CameraTemperatureRangeMax', %temperatureInfo, Unknown => 1 },
79
+ 0x06 => { Name => 'CameraTemperatureRangeMin', %temperatureInfo, Unknown => 1 },
80
+ # 0x07 - string[33] (some sort of image ID?)
81
+ # 0x08 - string[33]
82
+ # 0x09 - undef (tool info)
83
+ # 0x0a - int32u: 1
84
+ # 0x0f - rational64u: 0/1000
85
+ # 0x10,0x11,0x12 - int32u: 0
86
+ # 0x13 - rational64u: 0/1000
87
+ );
88
+
89
+ # FLIR FFF tag table (ref PH)
90
+ %Image::ExifTool::FLIR::FFF = (
91
+ GROUPS => { 0 => 'APP1', 2 => 'Image' },
92
+ PROCESS_PROC => \&ProcessFLIR,
93
+ NOTES => q{
94
+ Information extracted from FLIR FFF images and the FLIR APP1 segment of JPEG
95
+ images.
96
+ },
97
+ # 0 = free (ref 3)
98
+ 0x01 => {
99
+ Name => 'RawData',
100
+ SubDirectory => { TagTable => 'Image::ExifTool::FLIR::RawData' },
101
+ },
102
+ # 2 = GainMap (ref 3)
103
+ # 3 = OffsMap (ref 3)
104
+ # 4 = DeadMap (ref 3)
105
+ # 5 = GainDeadMap (ref 3)
106
+ # 6 = CoarseMap (ref 3)
107
+ # 7 = ImageMap (ref 3)
108
+ 0x0e => {
109
+ Name => 'EmbeddedImage',
110
+ SubDirectory => { TagTable => 'Image::ExifTool::FLIR::EmbeddedImage' },
111
+ },
112
+ 0x20 => {
113
+ Name => 'CameraInfo', # (BasicData - ref 3)
114
+ SubDirectory => { TagTable => 'Image::ExifTool::FLIR::CameraInfo' },
115
+ },
116
+ # 0x21 - ToolInfo (spot tool, line tool, area tool) (Measure - ref 3)
117
+ 0x22 => {
118
+ Name => 'PaletteInfo', # (ColorPal - ref 3)
119
+ SubDirectory => { TagTable => 'Image::ExifTool::FLIR::PaletteInfo' },
120
+ },
121
+ 0x23 => {
122
+ Name => 'TextInfo',
123
+ SubDirectory => { TagTable => 'Image::ExifTool::FLIR::TextInfo' },
124
+ },
125
+ 0x24 => {
126
+ Name => 'EmbeddedAudioFile',
127
+ # (sometimes has an unknown 8-byte header)
128
+ RawConv => q{
129
+ return \$val if $val =~ s/^.{0,16}?RIFF/RIFF/s;
130
+ $self->Warn('Unknown EmbeddedAudioFile format');
131
+ return undef;
132
+ },
133
+ },
134
+ # 0x27: 01 00 08 00 10 00 00 00
135
+ 0x2a => {
136
+ Name => 'PiP',
137
+ SubDirectory => {
138
+ TagTable => 'Image::ExifTool::FLIR::PiP',
139
+ ByteOrder => 'LittleEndian',
140
+ },
141
+ },
142
+ 0x2b => {
143
+ Name => 'GPSInfo',
144
+ SubDirectory => { TagTable => 'Image::ExifTool::FLIR::GPSInfo' },
145
+ },
146
+ 0x2e => {
147
+ Name => 'ParamInfo',
148
+ SubDirectory => { TagTable => 'Image::ExifTool::FLIR::ParamInfo' },
149
+ },
150
+ );
151
+
152
+ # FLIR raw data record (ref PH)
153
+ %Image::ExifTool::FLIR::RawData = (
154
+ GROUPS => { 0 => 'APP1', 2 => 'Image' },
155
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
156
+ FORMAT => 'int16u',
157
+ FIRST_ENTRY => 0,
158
+ NOTES => q{
159
+ The thermal image data may be stored either as raw data, or in PNG format.
160
+ If stored as raw data, ExifTool adds a TIFF header to allow the data to be
161
+ viewed as a TIFF image. If stored in PNG format, the PNG image is extracted
162
+ as-is. Note that most FLIR cameras using the PNG format seem to write the
163
+ 16-bit raw image data in the wrong byte order.
164
+ },
165
+ 0x00 => {
166
+ # use this tag only to determine the byte order of the raw data
167
+ # (the value should be 0x0002 if the byte order is correct)
168
+ # - always "II" when RawThermalImageType is "TIFF"
169
+ # - seen both "II" and "MM" when RawThermalImageType is "PNG"
170
+ Name => 'RawDataByteOrder',
171
+ Hidden => 1,
172
+ RawConv => 'ToggleByteOrder() if $val >= 0x0100; undef',
173
+ },
174
+ 0x01 => {
175
+ Name => 'RawThermalImageWidth',
176
+ RawConv => '$$self{RawThermalImageWidth} = $val',
177
+ },
178
+ 0x02 => {
179
+ Name => 'RawThermalImageHeight',
180
+ RawConv => '$$self{RawThermalImageHeight} = $val',
181
+ },
182
+ # 0x03-0x05: 0
183
+ # 0x06: raw image width - 1
184
+ # 0x07: 0
185
+ # 0x08: raw image height - 1
186
+ # 0x09: 0,15,16
187
+ # 0x0a: 0,2,3,11,12,13,30
188
+ # 0x0b: 0,2
189
+ # 0x0c: 0 or a large number
190
+ # 0x0d: 0,3,4,6
191
+ # 0x0e-0x0f: 0
192
+ 16 => {
193
+ Name => 'RawThermalImageType',
194
+ # this is actually the location of the image, but extract the
195
+ # image type as a separate tag because it may be useful
196
+ Format => 'undef[$size-0x20]',
197
+ Notes => 'TIFF or PNG',
198
+ RawConv => sub {
199
+ my ($val, $self) = @_;
200
+ my ($w, $h) = @$self{'RawThermalImageWidth','RawThermalImageHeight'};
201
+ my $type = 'DAT';
202
+ # add TIFF header only if this looks like 16-bit raw data
203
+ # (note: MakeTiffHeader currently works only for little-endian,
204
+ # and I haven't seen any big-endian samples, but check anwyay)
205
+ if ($val =~ /^\x89PNG\r\n\x1a\n/) {
206
+ $type = 'PNG';
207
+ } elsif (length $val != $w * $h * 2) {
208
+ $self->Warn('Unrecognized FLIR raw data format');
209
+ } elsif (GetByteOrder() eq 'II') {
210
+ require Image::ExifTool::Sony;
211
+ $val = Image::ExifTool::Sony::MakeTiffHeader($w,$h,1,16) . $val;
212
+ $type = 'TIFF';
213
+ } else {
214
+ $self->Warn("Don't yet support big-endian TIFF RawThermalImage");
215
+ }
216
+ # save image data
217
+ $$self{RawThermalImage} = $val;
218
+ return $type;
219
+ },
220
+ },
221
+ 16.1 => {
222
+ Name => 'RawThermalImage',
223
+ RawConv => '\$$self{RawThermalImage}',
224
+ },
225
+ );
226
+
227
+ # FLIR embedded image (ref 1)
228
+ %Image::ExifTool::FLIR::EmbeddedImage = (
229
+ GROUPS => { 0 => 'APP1', 2 => 'Image' },
230
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
231
+ FORMAT => 'int16u',
232
+ FIRST_ENTRY => 0,
233
+ 0 => {
234
+ # use this tag only to determine the byte order
235
+ # (the value should be 0x0003 if the byte order is correct)
236
+ Name => 'EmbeddedImageByteOrder',
237
+ Format => 'int16u',
238
+ Hidden => 1,
239
+ RawConv => 'ToggleByteOrder() if $val >= 0x0100; undef',
240
+ },
241
+ 1 => 'EmbeddedImageWidth',
242
+ 2 => 'EmbeddedImageHeight',
243
+ 16 => {
244
+ Name => 'EmbeddedImageType',
245
+ Format => 'undef[4]',
246
+ RawConv => '$val =~ /^.PNG/s ? "PNG" : "DAT"',
247
+ Notes => '"PNG" for PNG image in Y Cb Cr colors, or "DAT" for other image data',
248
+ },
249
+ 16.1 => {
250
+ Name => 'EmbeddedImage',
251
+ Format => 'undef[$size-0x20]',
252
+ Binary => 1,
253
+ },
254
+ );
255
+
256
+ # FLIR camera record (ref PH)
257
+ %Image::ExifTool::FLIR::CameraInfo = (
258
+ GROUPS => { 0 => 'APP1', 2 => 'Camera' },
259
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
260
+ FIRST_ENTRY => 0,
261
+ NOTES => q{
262
+ FLIR camera information. The Planck tags are variables used in the
263
+ temperature calculation. See
264
+ L<http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=4898.msg23972#msg23972>
265
+ for details.
266
+ },
267
+ 0x00 => {
268
+ # use this tag only to determine the byte order
269
+ # (the value should be 0x0002 if the byte order is correct)
270
+ Name => 'CameraInfoByteOrder',
271
+ Format => 'int16u',
272
+ Hidden => 1,
273
+ RawConv => 'ToggleByteOrder() if $val >= 0x0100; undef',
274
+ },
275
+ # 0x02 - int16u: image width
276
+ # 0x04 - int16u: image height
277
+ # 0x0c - int32u: image width - 1
278
+ # 0x10 - int32u: image height - 1
279
+ 0x20 => { Name => 'Emissivity', %float2f },
280
+ 0x24 => { Name => 'ObjectDistance', Format => 'float', PrintConv => 'sprintf("%.2f m",$val)' },
281
+ 0x28 => { Name => 'ReflectedApparentTemperature', %floatKelvin },
282
+ 0x2c => { Name => 'AtmosphericTemperature', %floatKelvin },
283
+ 0x30 => { Name => 'IRWindowTemperature', %floatKelvin },
284
+ 0x34 => { Name => 'IRWindowTransmission', %float2f },
285
+ # 0x38: 0
286
+ 0x3c => {
287
+ Name => 'RelativeHumidity',
288
+ Format => 'float',
289
+ ValueConv => '$val > 2 ? $val / 100 : $val', # have seen value expressed as percent in FFF file
290
+ PrintConv => 'sprintf("%.1f %%",$val*100)',
291
+ },
292
+ # 0x40 - float: 0,6
293
+ # 0x44,0x48,0x4c: 0
294
+ # 0x50 - int32u: 1
295
+ # 0x54: 0
296
+ 0x58 => { Name => 'PlanckR1', %float8g }, #1
297
+ 0x5c => { Name => 'PlanckB', %float8g }, #1
298
+ 0x60 => { Name => 'PlanckF', %float8g }, #1
299
+ # 0x64,0x68,0x6c: 0
300
+ # 0x70 - float: 0.006568
301
+ # 0x74 - float: 0.012620
302
+ # 0x78 - float: -0.00227
303
+ # 0x7c - float: -0.00667
304
+ # 0x80 - float: 1.89999
305
+ # 0x84,0x88: 0
306
+ # 0x8c - float: 0,4,6
307
+ 0x90 => { Name => 'CameraTemperatureRangeMax', %floatKelvin },
308
+ 0x94 => { Name => 'CameraTemperatureRangeMin', %floatKelvin },
309
+ 0x98 => { Name => 'UnknownTemperature1', %floatKelvin, Unknown => 1 }, # 50 degrees over camera max
310
+ 0x9c => { Name => 'UnknownTemperature2', %floatKelvin, Unknown => 1 }, # usually 10 or 20 degrees below camera min
311
+ 0xa0 => { Name => 'UnknownTemperature3', %floatKelvin, Unknown => 1 }, # same as camera max
312
+ 0xa4 => { Name => 'UnknownTemperature4', %floatKelvin, Unknown => 1 }, # same as camera min
313
+ 0xa8 => { Name => 'UnknownTemperature5', %floatKelvin, Unknown => 1 }, # usually 50 or 88 degrees over camera max
314
+ 0xac => { Name => 'UnknownTemperature6', %floatKelvin, Unknown => 1 }, # usually 10, 20 or 40 degrees below camera min
315
+ 0xd4 => { Name => 'CameraModel', Format => 'string[32]' },
316
+ 0xf4 => { Name => 'CameraPartNumber', Format => 'string[16]' }, #1
317
+ 0x104 => { Name => 'CameraSerialNumber',Format => 'string[16]' }, #1
318
+ 0x114 => { Name => 'CameraSoftware', Format => 'string[16]' }, #1/PH (NC)
319
+ 0x170 => { Name => 'LensModel', Format => 'string[32]' },
320
+ # note: it seems that FLIR updated their lenses at some point, so lenses with the same
321
+ # name may have different part numbers (ie. the FOL38 is either 1196456 or T197089)
322
+ 0x190 => { Name => 'LensPartNumber', Format => 'string[16]' },
323
+ 0x1a0 => { Name => 'LensSerialNumber', Format => 'string[16]' },
324
+ 0x1b4 => { Name => 'FieldOfView', Format => 'float', PrintConv => 'sprintf("%.1f deg", $val)' }, #1
325
+ # 0x1d0 - int16u: 0,12,24,25,46
326
+ # 0x1d2 - int16u: 170,180,190,380,760,52320
327
+ 0x1ec => { Name => 'FilterModel', Format => 'string[16]' },
328
+ 0x1fc => { Name => 'FilterPartNumber', Format => 'string[32]' },
329
+ 0x21c => { Name => 'FilterSerialNumber',Format => 'string[32]' },
330
+ 0x308 => { Name => 'PlanckO', Format => 'int16s' }, #1
331
+ 0x30c => { Name => 'PlanckR2', %float8g }, #1
332
+ 0x338 => { Name => 'RawValueMedian', Format => 'int16u', Groups => { 2 => 'Image' } },
333
+ 0x33c => { Name => 'RawValueRange', Format => 'int16u', Groups => { 2 => 'Image' } },
334
+ 0x384 => {
335
+ Name => 'DateTimeOriginal',
336
+ Description => 'Date/Time Original',
337
+ Format => 'undef[10]',
338
+ Groups => { 2 => 'Time' },
339
+ RawConv => q{
340
+ my $tm = Get32u(\$val, 0);
341
+ my $ss = Get32u(\$val, 4) & 0xffff;
342
+ my $tz = Get16s(\$val, 8);
343
+ ConvertUnixTime($tm - $tz * 60) . sprintf('.%.3d', $ss) . TimeZoneString(-$tz);
344
+ },
345
+ PrintConv => '$self->ConvertDateTime($val)',
346
+ },
347
+ 0x390 => { Name => 'FocusStepCount', Format => 'int16u' },
348
+ 0x45c => { Name => 'FocusDistance', Format => 'float', PrintConv => 'sprintf("%.1f m",$val)' },
349
+ # 0x43c - string: either "Live" or the file name
350
+ );
351
+
352
+ # FLIR palette record (ref PH/JD)
353
+ %Image::ExifTool::FLIR::PaletteInfo = (
354
+ GROUPS => { 0 => 'APP1', 2 => 'Image' },
355
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
356
+ FIRST_ENTRY => 0,
357
+ 0x00 => { #JD
358
+ Name => 'PaletteColors',
359
+ RawConv => '$$self{PaletteColors} = $val',
360
+ },
361
+ 0x06 => { Name => 'AboveColor', Format => 'int8u[3]', Notes => 'Y Cr Cb color components' }, #JD
362
+ 0x09 => { Name => 'BelowColor', Format => 'int8u[3]' }, #JD
363
+ 0x0c => { Name => 'OverflowColor', Format => 'int8u[3]' }, #JD
364
+ 0x0f => { Name => 'UnderflowColor', Format => 'int8u[3]' }, #JD
365
+ 0x12 => { Name => 'Isotherm1Color', Format => 'int8u[3]' }, #JD
366
+ 0x15 => { Name => 'Isotherm2Color', Format => 'int8u[3]' }, #JD
367
+ 0x1a => { Name => 'PaletteMethod' }, #JD
368
+ 0x1b => { Name => 'PaletteStretch' }, #JD
369
+ 0x30 => {
370
+ Name => 'PaletteFileName',
371
+ Format => 'string[32]',
372
+ # (not valid for all images)
373
+ RawConv => q{
374
+ $val =~ s/\0.*//;
375
+ $val =~ /^[\x20-\x7e]{3,31}$/ ? $val : undef;
376
+ },
377
+ },
378
+ 0x50 => {
379
+ Name => 'PaletteName',
380
+ Format => 'string[32]',
381
+ # (not valid for all images)
382
+ RawConv => q{
383
+ $val =~ s/\0.*//;
384
+ $val =~ /^[\x20-\x7e]{3,31}$/ ? $val : undef;
385
+ },
386
+ },
387
+ 0x70 => {
388
+ Name => 'Palette',
389
+ Format => 'undef[3*$$self{PaletteColors}]',
390
+ Notes => 'Y Cr Cb byte values for each palette color',
391
+ Binary => 1,
392
+ },
393
+ );
394
+
395
+ # FLIR text information record (ref PH)
396
+ %Image::ExifTool::FLIR::TextInfo = (
397
+ GROUPS => { 0 => 'APP1', 2 => 'Image' },
398
+ PROCESS_PROC => \&ProcessFLIRText,
399
+ VARS => { NO_ID => 1 },
400
+ Label0 => { },
401
+ Value0 => { },
402
+ Label1 => { },
403
+ Value1 => { },
404
+ Label2 => { },
405
+ Value2 => { },
406
+ Label3 => { },
407
+ Value3 => { },
408
+ # (there could be more, and we will generate these on the fly if necessary)
409
+ );
410
+
411
+ # FLIR parameter information record (ref PH)
412
+ %Image::ExifTool::FLIR::ParamInfo = (
413
+ GROUPS => { 0 => 'APP1', 2 => 'Image' },
414
+ PROCESS_PROC => \&ProcessFLIRText,
415
+ VARS => { NO_ID => 1 },
416
+ Generated => {
417
+ Name => 'DateTimeGenerated',
418
+ Description => 'Date/Time Generated',
419
+ Groups => { 2 => 'Time' },
420
+ ValueConv => '$val =~ tr/-/:/; $val',
421
+ PrintConv => '$self->ConvertDateTime($val)',
422
+ },
423
+ Param0 => { },
424
+ Param1 => { },
425
+ Param2 => { },
426
+ Param3 => { },
427
+ # (there could be more, and we will generate these on the fly if necessary)
428
+ );
429
+
430
+ # FLIR Picture in Picture record (ref 1)
431
+ %Image::ExifTool::FLIR::PiP = (
432
+ GROUPS => { 0 => 'APP1', 2 => 'Image' },
433
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
434
+ FIRST_ENTRY => 0,
435
+ NOTES => 'FLIR Picture in Picture tags.',
436
+ FORMAT => 'int16s',
437
+ 0x00 => {
438
+ Name => 'Real2IR',
439
+ Format => 'float',
440
+ },
441
+ 2 => {
442
+ Name => 'OffsetX',
443
+ Notes => 'offset from of insertion point from center',
444
+ PrintConv => 'sprintf("%+d",$val)', # (add sign for direct use with IM convert)
445
+ },
446
+ 3 => {
447
+ Name => 'OffsetY',
448
+ PrintConv => 'sprintf("%+d",$val)',
449
+ },
450
+ 4 => {
451
+ Name => 'PiPX1',
452
+ Description => 'PiP X1',
453
+ Notes => 'crop size for radiometric image',
454
+ },
455
+ 5 => { Name => 'PiPX2', Description => 'PiP X2' },
456
+ 6 => { Name => 'PiPY1', Description => 'PiP Y1' },
457
+ 7 => { Name => 'PiPY2', Description => 'PiP Y2' },
458
+ );
459
+
460
+ # FLIR GPS record (ref PH/JD)
461
+ %Image::ExifTool::FLIR::GPSInfo = (
462
+ GROUPS => { 0 => 'APP1', 2 => 'Image' },
463
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
464
+ FIRST_ENTRY => 0,
465
+ 0x58 => {
466
+ Name => 'GPSMapDatum',
467
+ Format => 'string[16]',
468
+ },
469
+ );
470
+
471
+ # FLIR public image format (ref 4/5)
472
+ %Image::ExifTool::FLIR::FPF = (
473
+ GROUPS => { 0 => 'FLIR', 2 => 'Image' },
474
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
475
+ NOTES => 'Tags extracted from FLIR Public image Format (FPF) files.',
476
+ 0x20 => { Name => 'FPFVersion', Format => 'int32u' },
477
+ 0x24 => { Name => 'ImageDataOffset', Format => 'int32u' },
478
+ 0x28 => {
479
+ Name => 'ImageType',
480
+ Format => 'int16u',
481
+ PrintConv => {
482
+ 0 => 'Temperature',
483
+ 1 => 'Temperature Difference',
484
+ 2 => 'Object Signal',
485
+ 3 => 'Object Signal Difference',
486
+ },
487
+ },
488
+ 0x2a => {
489
+ Name => 'ImagePixelFormat',
490
+ Format => 'int16u',
491
+ PrintConv => {
492
+ 0 => '2-byte short integer',
493
+ 1 => '4-byte long integer',
494
+ 2 => '4-byte float',
495
+ 3 => '8-byte double',
496
+ },
497
+ },
498
+ 0x2c => { Name => 'ImageWidth', Format => 'int16u' },
499
+ 0x2e => { Name => 'ImageHeight', Format => 'int16u' },
500
+ 0x30 => { Name => 'ExternalTriggerCount',Format => 'int32u' },
501
+ 0x34 => { Name => 'SequenceFrameNumber',Format => 'int32u' },
502
+ 0x78 => { Name => 'CameraModel', Format => 'string[32]', Groups => { 2 => 'Camera' } },
503
+ 0x98 => { Name => 'CameraPartNumber', Format => 'string[32]', Groups => { 2 => 'Camera' } },
504
+ 0xb8 => { Name => 'CameraSerialNumber', Format => 'string[32]', Groups => { 2 => 'Camera' } },
505
+ 0xd8 => { Name => 'CameraTemperatureRangeMin', %floatKelvin, Groups => { 2 => 'Camera' } },
506
+ 0xdc => { Name => 'CameraTemperatureRangeMax', %floatKelvin, Groups => { 2 => 'Camera' } },
507
+ 0xe0 => { Name => 'LensModel', Format => 'string[32]', Groups => { 2 => 'Camera' } },
508
+ 0x100 => { Name => 'LensPartNumber', Format => 'string[32]', Groups => { 2 => 'Camera' } },
509
+ 0x120 => { Name => 'LensSerialNumber', Format => 'string[32]', Groups => { 2 => 'Camera' } },
510
+ 0x140 => { Name => 'FilterModel', Format => 'string[32]', Groups => { 2 => 'Camera' } },
511
+ 0x150 => { Name => 'FilterPartNumber', Format => 'string[32]', Groups => { 2 => 'Camera' } },
512
+ 0x180 => { Name => 'FilterSerialNumber',Format => 'string[32]', Groups => { 2 => 'Camera' } },
513
+ 0x1e0 => { Name => 'Emissivity', %float2f },
514
+ 0x1e4 => { Name => 'ObjectDistance', Format => 'float', PrintConv => 'sprintf("%.2f m",$val)' },
515
+ 0x1e8 => { Name => 'ReflectedApparentTemperature', %floatKelvin },
516
+ 0x1ec => { Name => 'AtmosphericTemperature', %floatKelvin },
517
+ 0x1f0 => { Name => 'RelativeHumidity', Format => 'float', PrintConv => 'sprintf("%.1f %%",$val*100)' },
518
+ 0x1f4 => { Name => 'ComputedAtmosphericTrans', %float2f },
519
+ 0x1f8 => { Name => 'EstimatedAtmosphericTrans',%float2f },
520
+ 0x1fc => { Name => 'ReferenceTemperature', %floatKelvin },
521
+ 0x200 => { Name => 'IRWindowTemperature', %floatKelvin, Groups => { 2 => 'Camera' } },
522
+ 0x204 => { Name => 'IRWindowTransmission', %float2f, Groups => { 2 => 'Camera' } },
523
+ 0x248 => {
524
+ Name => 'DateTimeOriginal',
525
+ Description => 'Date/Time Original',
526
+ Groups => { 2 => 'Time' },
527
+ Format => 'int32u[7]',
528
+ ValueConv => 'sprintf("%.4d:%.2d:%.2d %.2d:%.2d:%.2d.%.3d",split(" ",$val))',
529
+ PrintConv => '$self->ConvertDateTime($val)',
530
+ },
531
+ # Notes (based on ref 4):
532
+ # 1) The above date/time structure is documented to be 32 bytes for FPFVersion 1, but in
533
+ # fact it is only 28. Maybe this is why the full header length of my FPFVersion 2
534
+ # sample is 892 bytes instead of 896. If this was a documentation error, we are OK,
535
+ # but if the alignment was really different in version 1, then the temperatures below
536
+ # will be mis-aligned. I don't have any version 1 samples to check this.
537
+ # 2) The following temperatures may not always be in Kelvin
538
+ 0x2a4 => { Name => 'CameraScaleMin', %float1f },
539
+ 0x2a8 => { Name => 'CameraScaleMax', %float1f },
540
+ 0x2ac => { Name => 'CalculatedScaleMin',%float1f },
541
+ 0x2b0 => { Name => 'CalculatedScaleMax',%float1f },
542
+ 0x2b4 => { Name => 'ActualScaleMin', %float1f },
543
+ 0x2b8 => { Name => 'ActualScaleMax', %float1f },
544
+ );
545
+
546
+ # uuid 43c3993b0f94424b82056b66513f485d box of MP4 videos (ref PH)
547
+ %Image::ExifTool::FLIR::Parts = (
548
+ GROUPS => { 0 => 'MakerNotes', 1 => 'FLIR', 2 => 'Camera' },
549
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
550
+ FORMAT => 'undef',
551
+ NOTES => q{
552
+ Tags extracted from the "uuid" box with ID 43c3993b0f94424b82056b66513f485d
553
+ in FLIR MP4 videos.
554
+ },
555
+ 4 => [
556
+ {
557
+ Name => 'BAHPVer',
558
+ Condition => '$$valPt =~ /^bahpver\0/',
559
+ Format => 'undef[$size]',
560
+ RawConv => 'join " ", split "\0", substr($val, 8)',
561
+ },
562
+ {
563
+ Name => 'BALPVer',
564
+ Condition => '$$valPt =~ /^balpver\0/',
565
+ Format => 'undef[$size]',
566
+ ValueConv => 'join " ", split "\0", substr($val, 8)',
567
+ },
568
+ {
569
+ Name => 'Battery',
570
+ Condition => '$$valPt =~ /^battery\0/',
571
+ Format => 'undef[$size]',
572
+ ValueConv => 'join " ", split "\0", substr($val, 8)',
573
+ },
574
+ {
575
+ Name => 'BAVPVer',
576
+ Condition => '$$valPt =~ /^bavpver\0/',
577
+ Format => 'undef[$size]',
578
+ ValueConv => 'join " ", split "\0", substr($val, 8)',
579
+ # (the first string corresponds with a lens part number)
580
+ },
581
+ {
582
+ Name => 'CamCore',
583
+ Condition => '$$valPt =~ /^camcore\0/',
584
+ Format => 'undef[$size]',
585
+ ValueConv => 'join " ", split "\0", substr($val, 8)',
586
+ },
587
+ {
588
+ Name => 'DetectorBoard',
589
+ Condition => '$$valPt =~ /^det_board\0/',
590
+ Format => 'undef[$size]',
591
+ ValueConv => 'join " ", split "\0", substr($val, 10)',
592
+ },
593
+ {
594
+ Name => 'Detector',
595
+ Condition => '$$valPt =~ /^detector\0/',
596
+ Format => 'undef[$size]',
597
+ ValueConv => 'join " ", split "\0", substr($val, 9)',
598
+ },
599
+ {
600
+ Name => 'GIDCVer',
601
+ Condition => '$$valPt =~ /^gidcver\0/',
602
+ Format => 'undef[$size]',
603
+ ValueConv => 'join " ", split "\0", substr($val, 8)',
604
+ },
605
+ {
606
+ Name => 'GIDPVer',
607
+ Condition => '$$valPt =~ /^gidpver\0/',
608
+ Format => 'undef[$size]',
609
+ ValueConv => 'join " ", split "\0", substr($val, 8)',
610
+ },
611
+ {
612
+ Name => 'GIPC_CPLD',
613
+ Condition => '$$valPt =~ /^gipccpld\0/',
614
+ Format => 'undef[$size]',
615
+ ValueConv => 'join " ", split "\0", substr($val, 9)',
616
+ },
617
+ {
618
+ Name => 'GIPCVer',
619
+ Condition => '$$valPt =~ /^gipcver\0/',
620
+ Format => 'undef[$size]',
621
+ ValueConv => 'join " ", split "\0", substr($val, 8)',
622
+ },
623
+ {
624
+ Name => 'GIXIVer',
625
+ Condition => '$$valPt =~ /^gixiver\0/',
626
+ Format => 'undef[$size]',
627
+ ValueConv => 'join " ", split "\0", substr($val, 8)',
628
+ },
629
+ {
630
+ Name => 'MainBoard',
631
+ Condition => '$$valPt =~ /^mainboard\0/',
632
+ Format => 'undef[$size]',
633
+ ValueConv => 'join " ", split "\0", substr($val, 10)',
634
+ },
635
+ {
636
+ Name => 'Optics',
637
+ Condition => '$$valPt =~ /^optics\0/',
638
+ Format => 'undef[$size]',
639
+ ValueConv => 'join " ", split "\0", substr($val, 7)',
640
+ },
641
+ {
642
+ Name => 'PartNumber',
643
+ Format => 'undef[$size]',
644
+ ValueConv => 'join " ", split "\0", $val',
645
+ },
646
+ ],
647
+ );
648
+
649
+ # uuid 57f5b93e51e448afa0d9c3ef1b37f712 box of MP4 videos (ref PH)
650
+ %Image::ExifTool::FLIR::SerialNums = (
651
+ GROUPS => { 0 => 'MakerNotes', 1 => 'FLIR', 2 => 'Camera' },
652
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
653
+ FIRST_ENTRY => 0,
654
+ NOTES => q{
655
+ Tags extracted from the "uuid" box with ID 57f5b93e51e448afa0d9c3ef1b37f712
656
+ in FLIR MP4 videos.
657
+ },
658
+ # (not sure if these offsets are constant)
659
+ 0x0c => { Name => 'UnknownSerial1', Format => 'string[33]', Unknown => 1 },
660
+ 0x2d => { Name => 'UnknownSerial2', Format => 'string[33]', Unknown => 1 },
661
+ 0x4e => { Name => 'UnknownSerial3', Format => 'string[33]', Unknown => 1 },
662
+ 0x6f => { Name => 'UnknownSerial4', Format => 'string[11]', Unknown => 1 },
663
+ 0x7b => { Name => 'UnknownNumber', Format => 'string[3]', Unknown => 1 },
664
+ 0x7e => { Name => 'CameraSerialNumber', Format => 'string[9]' },
665
+ );
666
+
667
+ # uuid 41e5dcf9e80a41ceadfe7f0c58082c19 box of MP4 videos (ref PH)
668
+ %Image::ExifTool::FLIR::Params = (
669
+ GROUPS => { 0 => 'MakerNotes', 1 => 'FLIR', 2 => 'Camera' },
670
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
671
+ FORMAT => 'float',
672
+ FIRST_ENTRY => 0,
673
+ NOTES => q{
674
+ Tags extracted from the "uuid" box with ID 41e5dcf9e80a41ceadfe7f0c58082c19
675
+ in FLIR MP4 videos.
676
+ },
677
+ 1 => { Name => 'ReflectedApparentTemperature', %floatKelvin },
678
+ 2 => { Name => 'AtmosphericTemperature', %floatKelvin },
679
+ 3 => { Name => 'Emissivity', %float2f },
680
+ 4 => { Name => 'ObjectDistance', PrintConv => 'sprintf("%.2f m",$val)' },
681
+ 5 => { Name => 'RelativeHumidity', PrintConv => 'sprintf("%.1f %%",$val*100)' },
682
+ 6 => { Name => 'EstimatedAtmosphericTrans', %float2f },
683
+ 7 => { Name => 'IRWindowTemperature', %floatKelvin },
684
+ 8 => { Name => 'IRWindowTransmission', %float2f },
685
+ );
686
+
687
+ # uuid 574520502cbb44adae5415e9b839d903 box of MP4 videos (ref PH)
688
+ %Image::ExifTool::FLIR::UnknownUUID = (
689
+ GROUPS => { 0 => 'MakerNotes', 1 => 'FLIR', 2 => 'Camera' },
690
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
691
+ FORMAT => 'float',
692
+ FIRST_ENTRY => 0,
693
+ NOTES => q{
694
+ Tags extracted from the "uuid" box with ID 574520502cbb44adae5415e9b839d903
695
+ in FLIR MP4 videos.
696
+ },
697
+ # 1 - 1
698
+ # 2 - 0
699
+ # 3 - 0
700
+ );
701
+
702
+ # uuid 7f2e21008b464918afb1de709a74f6f5 box of MP4 videos (ref PH)
703
+ %Image::ExifTool::FLIR::GPS_UUID = (
704
+ GROUPS => { 0 => 'MakerNotes', 1 => 'FLIR', 2 => 'Location' },
705
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
706
+ FORMAT => 'float',
707
+ FIRST_ENTRY => 0,
708
+ NOTES => q{
709
+ Tags extracted from the "uuid" box with ID 7f2e21008b464918afb1de709a74f6f5
710
+ in FLIR MP4 videos.
711
+ },
712
+ 1 => {
713
+ Name => 'GPSLatitude',
714
+ RawConv => 'require Image::ExifTool::GPS; $val', # to load Composite tags and routines
715
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
716
+ },
717
+ 2 => {
718
+ Name => 'GPSLongitude',
719
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
720
+ },
721
+ 3 => {
722
+ Name => 'GPSAltitude',
723
+ PrintConv => '$val=int($val*100+0.5)/100;"$val m"',
724
+ },
725
+ # 4 - int32u: 0x0001bf74
726
+ # 5 - int32u: 0
727
+ # 6 - int32u: 1
728
+ );
729
+
730
+ # uuid 2b452fdc74354094baee22a6b23a7cf8 box of MP4 videos (ref PH)
731
+ %Image::ExifTool::FLIR::MoreInfo = (
732
+ GROUPS => { 0 => 'MakerNotes', 1 => 'FLIR', 2 => 'Camera' },
733
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
734
+ FIRST_ENTRY => 0,
735
+ NOTES => q{
736
+ Tags extracted from the "uuid" box with ID 2b452fdc74354094baee22a6b23a7cf8
737
+ in FLIR MP4 videos.
738
+ },
739
+ 5 => { Name => 'LensModel', Format => 'string[6]' },
740
+ 11 => { Name => 'UnknownTemperature1', %floatKelvin, Unknown => 1 }, # (-14.9 C)
741
+ 15 => { Name => 'UnknownTemperature2', %floatKelvin, Unknown => 1 }, # (60.0 C)
742
+ );
743
+
744
+ # FLIR composite tags (ref 1)
745
+ %Image::ExifTool::FLIR::Composite = (
746
+ GROUPS => { 1 => 'FLIR', 2 => 'Camera' },
747
+ PeakSpectralSensitivity => {
748
+ Require => 'FLIR:PlanckB',
749
+ ValueConv => '14387.6515/$val',
750
+ PrintConv => 'sprintf("%.1f um", $val)',
751
+ },
752
+ );
753
+
754
+ # add our composite tags
755
+ Image::ExifTool::AddCompositeTags('Image::ExifTool::FLIR');
756
+
757
+ #------------------------------------------------------------------------------
758
+ # Unescape FLIR Unicode character
759
+ # Inputs: 0) escaped character code
760
+ # Returns: UTF8 character
761
+ sub UnescapeFLIR($)
762
+ {
763
+ my $char = shift;
764
+ return $char unless length $char eq 4; # escaped ASCII char (ie. '\\')
765
+ my $val = hex $char;
766
+ return chr($val) if $val < 0x80; # simple ASCII
767
+ return pack('C0U', $val) if $] >= 5.006001;
768
+ return Image::ExifTool::PackUTF8($val);
769
+ }
770
+
771
+ #------------------------------------------------------------------------------
772
+ # Process FLIR text info record (ref PH)
773
+ # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
774
+ # Returns: 1 on success
775
+ sub ProcessFLIRText($$$)
776
+ {
777
+ my ($exifTool, $dirInfo, $tagTablePtr) = @_;
778
+ my $dataPt = $$dirInfo{DataPt};
779
+ my $dirStart = $$dirInfo{DirStart} || 0;
780
+ my $dirLen = $$dirInfo{DirLen};
781
+
782
+ return 0 if $dirLen < 12;
783
+
784
+ $exifTool->VerboseDir('FLIR Text');
785
+
786
+ my $dat = substr($$dataPt, $dirStart+12, $dirLen-12);
787
+ $dat =~ s/\0.*//s; # truncate at null
788
+
789
+ # the parameter text contains an additional header entry...
790
+ if ($tagTablePtr eq \%Image::ExifTool::FLIR::ParamInfo and
791
+ $dat =~ /# (Generated) at (.*?)[\n\r]/)
792
+ {
793
+ $exifTool->HandleTag($tagTablePtr, $1, $2);
794
+ }
795
+
796
+ for (;;) {
797
+ $dat =~ /.(\d+).(label|value|param) (unicode|text) "(.*)"/g or last;
798
+ my ($tag, $val) = (ucfirst($2) . $1, $4);
799
+ if ($3 eq 'unicode' and $val =~ /\\/) {
800
+ # convert escaped Unicode characters (backslash followed by 4 hex digits)
801
+ $val =~ s/\\([0-9a-fA-F]{4}|.)/UnescapeFLIR($1)/sge;
802
+ $exifTool->Decode($val, 'UTF8');
803
+ }
804
+ $$tagTablePtr{$tag} or AddTagToTable($tagTablePtr, $tag, { Name => $tag });
805
+ $exifTool->HandleTag($tagTablePtr, $tag, $val);
806
+ }
807
+
808
+ return 1;
809
+ }
810
+
811
+ #------------------------------------------------------------------------------
812
+ # Process FLIR FFF record (ref PH/1/3)
813
+ # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
814
+ # Returns: 1 if this was a valid FFF record
815
+ sub ProcessFLIR($$;$)
816
+ {
817
+ my ($exifTool, $dirInfo, $tagTablePtr) = @_;
818
+ my $raf = $$dirInfo{RAF} || new File::RandomAccess($$dirInfo{DataPt});
819
+ my $verbose = $exifTool->Options('Verbose');
820
+ my $out = $exifTool->Options('TextOut');
821
+ my ($i, $buff, $rec);
822
+
823
+ # read and verify FFF header
824
+ $raf->Read($buff, 0x40) == 0x40 and $buff =~ /^FFF\0/ or return 0;
825
+
826
+ # set file type if reading from FFF file ($tagTablePtr will not be defined)
827
+ $exifTool->SetFileType() unless $tagTablePtr;
828
+
829
+ # FLIR file header (ref 3)
830
+ # 0x00 - string[4] file format ID = "FFF\0"
831
+ # 0x04 - string[16] file origin: seen "\0","MTX IR\0","CAMCTRL\0"
832
+ # 0x14 - int32u file format version = 100
833
+ # 0x18 - int32u offset to record directory
834
+ # 0x1c - int32u number of entries in record directory
835
+ # 0x20 - int32u next free index ID = 2
836
+ # 0x24 - int16u swap pattern = 0 (?)
837
+ # 0x28 - int16u[7] spares
838
+ # 0x34 - int32u[2] reserved
839
+ # 0x3c - int32u checksum
840
+
841
+ # determine byte ordering by validating version number
842
+ # (in my samples FLIR APP1 is big-endian, FFF files are little-endian)
843
+ my $ver = Get32u(\$buff, 0x14);
844
+ if ($ver != 100) {
845
+ $ver == 0x64000000 or $exifTool->Warn('Unsupported FLIR FFF version'), return 1;
846
+ ToggleByteOrder();
847
+ }
848
+
849
+ # read the FLIR record directory
850
+ my $pos = Get32u(\$buff, 0x18);
851
+ my $num = Get32u(\$buff, 0x1c);
852
+ unless ($raf->Seek($pos) and $raf->Read($buff, $num * 0x20) == $num * 0x20) {
853
+ $exifTool->Warn('Truncated FLIR FFF directory');
854
+ return 1;
855
+ }
856
+
857
+ unless ($tagTablePtr) {
858
+ $tagTablePtr = GetTagTable('Image::ExifTool::FLIR::FFF');
859
+ $$exifTool{SET_GROUP0} = 'FLIR'; # (set group 0 to 'FLIR' for FFF files)
860
+ }
861
+
862
+ for ($i=0; $i<$num; ++$i) {
863
+
864
+ # FLIR record entry (ref 3):
865
+ # 0x00 - int16u record type
866
+ # 0x02 - int16u record subtype: RawData 1=BE, 2=LE, 3=PNG; 1 for other record types
867
+ # 0x04 - int32u record version: seen 0x64,0x66,0x67,0x68,0x6f,0x104
868
+ # 0x08 - int32u index id = 1
869
+ # 0x0c - int32u record offset from start of FLIR data
870
+ # 0x10 - int32u record length
871
+ # 0x14 - int32u parent = 0 (?)
872
+ # 0x18 - int32u object number = 0 (?)
873
+ # 0x1c - int32u checksum: 0 for no checksum
874
+
875
+ my $entry = $i * 0x20;
876
+ my $recType = Get16u(\$buff, $entry);
877
+ next if $recType == 0; # ignore free records
878
+ my $recPos = Get32u(\$buff, $entry + 0x0c);
879
+ my $recLen = Get32u(\$buff, $entry + 0x10);
880
+
881
+ $verbose and printf $out "%sFLIR Record 0x%.2x, offset 0x%.4x, length 0x%.4x\n",
882
+ $$exifTool{INDENT}, $recType, $recPos, $recLen;
883
+
884
+ unless ($raf->Seek($recPos) and $raf->Read($rec, $recLen) == $recLen) {
885
+ $exifTool->Warn('Invalid FLIR record');
886
+ last;
887
+ }
888
+ if ($$tagTablePtr{$recType}) {
889
+ $exifTool->HandleTag($tagTablePtr, $recType, undef,
890
+ DataPt => \$rec,
891
+ DataPos => $recPos,
892
+ Start => 0,
893
+ Size => $recLen,
894
+ );
895
+ } elsif ($verbose > 2) {
896
+ my %parms = ( DataPos => $recPos, Prefix => $$exifTool{INDENT} );
897
+ $parms{MaxLen} = 96 if $verbose < 4;
898
+ Image::ExifTool::HexDump(\$rec, $recLen, %parms);
899
+ }
900
+ }
901
+ delete $$exifTool{SET_GROUP0};
902
+ return 1;
903
+ }
904
+
905
+ #------------------------------------------------------------------------------
906
+ # Process FLIR public image format (FPF) file (ref PH/4)
907
+ # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
908
+ # Returns: 1 if this was a valid FFF file
909
+ sub ProcessFPF($$)
910
+ {
911
+ my ($exifTool, $dirInfo) = @_;
912
+ my $raf = $$dirInfo{RAF};
913
+ my $buff;
914
+
915
+ $raf->Read($buff, 892) == 892 and $buff =~ /^FPF Public Image Format\0/ or return 0;
916
+
917
+ # I think these are always little-endian, but check FPFVersion just in case
918
+ SetByteOrder('II');
919
+ ToggleByteOrder() unless Get32u(\$buff, 0x20) & 0xffff;
920
+
921
+ my $tagTablePtr = GetTagTable('Image::ExifTool::FLIR::FPF');
922
+ $exifTool->SetFileType();
923
+ $exifTool->ProcessDirectory( { DataPt => \$buff, Parent => 'FPF' }, $tagTablePtr);
924
+ return 1;
925
+ }
926
+
927
+ 1; # end
928
+
929
+ __END__
930
+
931
+ =head1 NAME
932
+
933
+ Image::ExifTool::FLIR - Read FLIR meta information
934
+
935
+ =head1 SYNOPSIS
936
+
937
+ This module is loaded automatically by Image::ExifTool when required.
938
+
939
+ =head1 DESCRIPTION
940
+
941
+ This module contains the definitions to read meta information from FLIR
942
+ Systems Inc. thermal image files (FFF, FPF and JPEG format).
943
+
944
+ =head1 AUTHOR
945
+
946
+ Copyright 2003-2013, Phil Harvey (phil at owl.phy.queensu.ca)
947
+
948
+ This library is free software; you can redistribute it and/or modify it
949
+ under the same terms as Perl itself.
950
+
951
+ =head1 REFERENCES
952
+
953
+ =over 4
954
+
955
+ =item L<http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4898.0.html>
956
+
957
+ =item L<http://www.nuage.ch/site/flir-i7-some-analysis/>
958
+
959
+ =item L<http://www.workswell.cz/manuals/flir/hardware/A3xx_and_A6xx_models/Streaming_format_ThermoVision.pdf>
960
+
961
+ =item L<http://support.flir.com/DocDownload/Assets/62/English/1557488%24A.pdf>
962
+
963
+ =item L<http://code.google.com/p/dvelib/source/browse/trunk/flirPublicFormat/fpfConverter/Fpfimg.h?spec=svn3&r=3>
964
+
965
+ =back
966
+
967
+ =head1 SEE ALSO
968
+
969
+ L<Image::ExifTool::TagNames/FLIR Tags>,
970
+ L<Image::ExifTool(3pm)|Image::ExifTool>
971
+
972
+ =cut