mini_exiftool_vendored 8.9.7.v2 → 9.2.7.v1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1023) hide show
  1. checksums.yaml +7 -0
  2. data/lib/mini_exiftool_vendored.rb +1 -1
  3. data/lib/mini_exiftool_vendored/version.rb +2 -2
  4. data/mini_exiftool_vendored.gemspec +1 -1
  5. data/vendor/Image-ExifTool-9.27/Changes +6162 -0
  6. data/vendor/Image-ExifTool-9.27/MANIFEST +858 -0
  7. data/vendor/Image-ExifTool-9.27/META.yml +26 -0
  8. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/Makefile.PL +0 -0
  9. data/vendor/Image-ExifTool-9.27/README +227 -0
  10. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/exif2iptc.args +0 -0
  11. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/exif2xmp.args +0 -0
  12. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/gps2xmp.args +0 -0
  13. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/iptc2exif.args +0 -0
  14. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/iptc2xmp.args +0 -0
  15. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/iptcCore.args +0 -0
  16. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/pdf2xmp.args +0 -0
  17. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/xmp2exif.args +0 -0
  18. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/xmp2gps.args +0 -0
  19. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/xmp2iptc.args +0 -0
  20. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/arg_files}/xmp2pdf.args +0 -0
  21. data/vendor/Image-ExifTool-9.27/config_files/ExifTool_config +299 -0
  22. data/vendor/Image-ExifTool-9.27/config_files/convert_regions.config +81 -0
  23. data/vendor/Image-ExifTool-9.27/exiftool +5655 -0
  24. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/fmt_files}/gpx.fmt +0 -0
  25. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27/fmt_files}/gpx_wpt.fmt +0 -0
  26. data/vendor/Image-ExifTool-9.27/fmt_files/kml.fmt +53 -0
  27. data/vendor/Image-ExifTool-9.27/html/ExifTool.html +1951 -0
  28. data/vendor/Image-ExifTool-9.27/html/MIE1.1-20070121.pdf +0 -0
  29. data/vendor/Image-ExifTool-9.27/html/Shift.html +173 -0
  30. data/vendor/Image-ExifTool-9.27/html/TagNames/AFCP.html +49 -0
  31. data/vendor/Image-ExifTool-9.27/html/TagNames/AIFF.html +146 -0
  32. data/vendor/Image-ExifTool-9.27/html/TagNames/APE.html +149 -0
  33. data/vendor/Image-ExifTool-9.27/html/TagNames/APP12.html +188 -0
  34. data/vendor/Image-ExifTool-9.27/html/TagNames/ASF.html +1075 -0
  35. data/vendor/Image-ExifTool-9.27/html/TagNames/BMP.html +110 -0
  36. data/vendor/Image-ExifTool-9.27/html/TagNames/Canon.html +8021 -0
  37. data/vendor/Image-ExifTool-9.27/html/TagNames/CanonCustom.html +2044 -0
  38. data/vendor/Image-ExifTool-9.27/html/TagNames/CanonRaw.html +561 -0
  39. data/vendor/Image-ExifTool-9.27/html/TagNames/CanonVRD.html +1222 -0
  40. data/vendor/Image-ExifTool-9.27/html/TagNames/Casio.html +1569 -0
  41. data/vendor/Image-ExifTool-9.27/html/TagNames/Composite.html +659 -0
  42. data/vendor/Image-ExifTool-9.27/html/TagNames/DICOM.html +15762 -0
  43. data/vendor/Image-ExifTool-9.27/html/TagNames/DNG.html +273 -0
  44. data/vendor/Image-ExifTool-9.27/html/TagNames/DV.html +75 -0
  45. data/vendor/Image-ExifTool-9.27/html/TagNames/DarwinCore.html +1445 -0
  46. data/vendor/Image-ExifTool-9.27/html/TagNames/DjVu.html +312 -0
  47. data/vendor/Image-ExifTool-9.27/html/TagNames/EXE.html +697 -0
  48. data/vendor/Image-ExifTool-9.27/html/TagNames/EXIF.html +3244 -0
  49. data/vendor/Image-ExifTool-9.27/html/TagNames/Extra.html +300 -0
  50. data/vendor/Image-ExifTool-9.27/html/TagNames/FLAC.html +183 -0
  51. data/vendor/Image-ExifTool-9.27/html/TagNames/FLIR.html +615 -0
  52. data/vendor/Image-ExifTool-9.27/html/TagNames/Flash.html +419 -0
  53. data/vendor/Image-ExifTool-9.27/html/TagNames/FlashPix.html +1435 -0
  54. data/vendor/Image-ExifTool-9.27/html/TagNames/Font.html +485 -0
  55. data/vendor/Image-ExifTool-9.27/html/TagNames/FotoStation.html +103 -0
  56. data/vendor/Image-ExifTool-9.27/html/TagNames/FujiFilm.html +636 -0
  57. data/vendor/Image-ExifTool-9.27/html/TagNames/GE.html +40 -0
  58. data/vendor/Image-ExifTool-9.27/html/TagNames/GIF.html +116 -0
  59. data/vendor/Image-ExifTool-9.27/html/TagNames/GIMP.html +140 -0
  60. data/vendor/Image-ExifTool-9.27/html/TagNames/GPS.html +221 -0
  61. data/vendor/Image-ExifTool-9.27/html/TagNames/GeoTiff.html +2177 -0
  62. data/vendor/Image-ExifTool-9.27/html/TagNames/H264.html +387 -0
  63. data/vendor/Image-ExifTool-9.27/html/TagNames/HP.html +155 -0
  64. data/vendor/Image-ExifTool-9.27/html/TagNames/HTML.html +666 -0
  65. data/vendor/Image-ExifTool-9.27/html/TagNames/ICC_Profile.html +710 -0
  66. data/vendor/Image-ExifTool-9.27/html/TagNames/ID3.html +1429 -0
  67. data/vendor/Image-ExifTool-9.27/html/TagNames/IPTC.html +895 -0
  68. data/vendor/Image-ExifTool-9.27/html/TagNames/ITC.html +90 -0
  69. data/vendor/Image-ExifTool-9.27/html/TagNames/JFIF.html +61 -0
  70. data/vendor/Image-ExifTool-9.27/html/TagNames/JPEG.html +523 -0
  71. data/vendor/Image-ExifTool-9.27/html/TagNames/JVC.html +56 -0
  72. data/vendor/Image-ExifTool-9.27/html/TagNames/Jpeg2000.html +464 -0
  73. data/vendor/Image-ExifTool-9.27/html/TagNames/Kodak.html +1759 -0
  74. data/vendor/Image-ExifTool-9.27/html/TagNames/KyoceraRaw.html +92 -0
  75. data/vendor/Image-ExifTool-9.27/html/TagNames/LNK.html +478 -0
  76. data/vendor/Image-ExifTool-9.27/html/TagNames/Leaf.html +870 -0
  77. data/vendor/Image-ExifTool-9.27/html/TagNames/M2TS.html +133 -0
  78. data/vendor/Image-ExifTool-9.27/html/TagNames/MIE.html +1026 -0
  79. data/vendor/Image-ExifTool-9.27/html/TagNames/MIFF.html +196 -0
  80. data/vendor/Image-ExifTool-9.27/html/TagNames/MNG.html +847 -0
  81. data/vendor/Image-ExifTool-9.27/html/TagNames/MPC.html +97 -0
  82. data/vendor/Image-ExifTool-9.27/html/TagNames/MPEG.html +249 -0
  83. data/vendor/Image-ExifTool-9.27/html/TagNames/MPF.html +199 -0
  84. data/vendor/Image-ExifTool-9.27/html/TagNames/MWG.html +519 -0
  85. data/vendor/Image-ExifTool-9.27/html/TagNames/MXF.html +6673 -0
  86. data/vendor/Image-ExifTool-9.27/html/TagNames/Matroska.html +1069 -0
  87. data/vendor/Image-ExifTool-9.27/html/TagNames/Microsoft.html +2066 -0
  88. data/vendor/Image-ExifTool-9.27/html/TagNames/Minolta.html +2550 -0
  89. data/vendor/Image-ExifTool-9.27/html/TagNames/MinoltaRaw.html +326 -0
  90. data/vendor/Image-ExifTool-9.27/html/TagNames/Nikon.html +4453 -0
  91. data/vendor/Image-ExifTool-9.27/html/TagNames/NikonCapture.html +776 -0
  92. data/vendor/Image-ExifTool-9.27/html/TagNames/NikonCustom.html +3835 -0
  93. data/vendor/Image-ExifTool-9.27/html/TagNames/OOXML.html +280 -0
  94. data/vendor/Image-ExifTool-9.27/html/TagNames/Ogg.html +44 -0
  95. data/vendor/Image-ExifTool-9.27/html/TagNames/Olympus.html +3331 -0
  96. data/vendor/Image-ExifTool-9.27/html/TagNames/OpenEXR.html +222 -0
  97. data/vendor/Image-ExifTool-9.27/html/TagNames/PDF.html +745 -0
  98. data/vendor/Image-ExifTool-9.27/html/TagNames/PGF.html +80 -0
  99. data/vendor/Image-ExifTool-9.27/html/TagNames/PICT.html +753 -0
  100. data/vendor/Image-ExifTool-9.27/html/TagNames/PLIST.html +86 -0
  101. data/vendor/Image-ExifTool-9.27/html/TagNames/PNG.html +515 -0
  102. data/vendor/Image-ExifTool-9.27/html/TagNames/PSP.html +160 -0
  103. data/vendor/Image-ExifTool-9.27/html/TagNames/Panasonic.html +1359 -0
  104. data/vendor/Image-ExifTool-9.27/html/TagNames/PanasonicRaw.html +214 -0
  105. data/vendor/Image-ExifTool-9.27/html/TagNames/Pentax.html +4329 -0
  106. data/vendor/Image-ExifTool-9.27/html/TagNames/PhaseOne.html +258 -0
  107. data/vendor/Image-ExifTool-9.27/html/TagNames/PhotoCD.html +402 -0
  108. data/vendor/Image-ExifTool-9.27/html/TagNames/PhotoMechanic.html +196 -0
  109. data/vendor/Image-ExifTool-9.27/html/TagNames/Photoshop.html +460 -0
  110. data/vendor/Image-ExifTool-9.27/html/TagNames/PostScript.html +125 -0
  111. data/vendor/Image-ExifTool-9.27/html/TagNames/PrintIM.html +31 -0
  112. data/vendor/Image-ExifTool-9.27/html/TagNames/Qualcomm.html +4778 -0
  113. data/vendor/Image-ExifTool-9.27/html/TagNames/QuickTime.html +2967 -0
  114. data/vendor/Image-ExifTool-9.27/html/TagNames/RIFF.html +1164 -0
  115. data/vendor/Image-ExifTool-9.27/html/TagNames/RSRC.html +74 -0
  116. data/vendor/Image-ExifTool-9.27/html/TagNames/RTF.html +150 -0
  117. data/vendor/Image-ExifTool-9.27/html/TagNames/Radiance.html +87 -0
  118. data/vendor/Image-ExifTool-9.27/html/TagNames/Rawzor.html +45 -0
  119. data/vendor/Image-ExifTool-9.27/html/TagNames/Real.html +780 -0
  120. data/vendor/Image-ExifTool-9.27/html/TagNames/Reconyx.html +132 -0
  121. data/vendor/Image-ExifTool-9.27/html/TagNames/Ricoh.html +456 -0
  122. data/vendor/Image-ExifTool-9.27/html/TagNames/Samsung.html +377 -0
  123. data/vendor/Image-ExifTool-9.27/html/TagNames/Sanyo.html +366 -0
  124. data/vendor/Image-ExifTool-9.27/html/TagNames/Shortcuts.html +237 -0
  125. data/vendor/Image-ExifTool-9.27/html/TagNames/Sigma.html +372 -0
  126. data/vendor/Image-ExifTool-9.27/html/TagNames/SigmaRaw.html +403 -0
  127. data/vendor/Image-ExifTool-9.27/html/TagNames/Sony.html +4052 -0
  128. data/vendor/Image-ExifTool-9.27/html/TagNames/SonyIDC.html +267 -0
  129. data/vendor/Image-ExifTool-9.27/html/TagNames/Stim.html +200 -0
  130. data/vendor/Image-ExifTool-9.27/html/TagNames/Theora.html +102 -0
  131. data/vendor/Image-ExifTool-9.27/html/TagNames/Unknown.html +31 -0
  132. data/vendor/Image-ExifTool-9.27/html/TagNames/Vorbis.html +228 -0
  133. data/vendor/Image-ExifTool-9.27/html/TagNames/XMP.html +7188 -0
  134. data/vendor/Image-ExifTool-9.27/html/TagNames/ZIP.html +204 -0
  135. data/vendor/Image-ExifTool-9.27/html/TagNames/iWork.html +49 -0
  136. data/vendor/Image-ExifTool-9.27/html/TagNames/index.html +192 -0
  137. data/vendor/Image-ExifTool-9.27/html/TagNames/style.css +31 -0
  138. data/vendor/Image-ExifTool-9.27/html/ancient_history.html +6564 -0
  139. data/vendor/Image-ExifTool-9.27/html/canon_raw.html +366 -0
  140. data/vendor/Image-ExifTool-9.27/html/commentary.html +319 -0
  141. data/vendor/Image-ExifTool-9.27/html/config.html +312 -0
  142. data/vendor/Image-ExifTool-9.27/html/data_members.html +264 -0
  143. data/vendor/Image-ExifTool-9.27/html/exiftool_pod.html +2325 -0
  144. data/vendor/Image-ExifTool-9.27/html/faq.html +1427 -0
  145. data/vendor/Image-ExifTool-9.27/html/filename.html +281 -0
  146. data/vendor/Image-ExifTool-9.27/html/geotag.html +642 -0
  147. data/vendor/Image-ExifTool-9.27/html/history.html +433 -0
  148. data/vendor/Image-ExifTool-9.27/html/htmldump.html +732 -0
  149. data/vendor/Image-ExifTool-9.27/html/idiosyncracies.html +251 -0
  150. data/vendor/Image-ExifTool-9.27/html/index.html +1266 -0
  151. data/vendor/Image-ExifTool-9.27/html/install.html +239 -0
  152. data/vendor/Image-ExifTool-9.27/html/metafiles.html +266 -0
  153. data/vendor/Image-ExifTool-9.27/html/overview.png +0 -0
  154. data/vendor/Image-ExifTool-9.27/html/standards.html +277 -0
  155. data/vendor/Image-ExifTool-9.27/html/struct.html +342 -0
  156. data/vendor/Image-ExifTool-9.27/html/style.css +31 -0
  157. data/vendor/Image-ExifTool-9.27/html/under.html +120 -0
  158. data/vendor/Image-ExifTool-9.27/html/verbose.html +195 -0
  159. data/vendor/Image-ExifTool-9.27/html/writing.html +239 -0
  160. data/vendor/Image-ExifTool-9.27/lib/File/RandomAccess.pm +378 -0
  161. data/vendor/Image-ExifTool-9.27/lib/File/RandomAccess.pod +231 -0
  162. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool.pm +6811 -0
  163. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool.pod +2353 -0
  164. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/AES.pm +501 -0
  165. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/AFCP.pm +280 -0
  166. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/AIFF.pm +271 -0
  167. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/APE.pm +262 -0
  168. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/APP12.pm +322 -0
  169. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ASF.pm +871 -0
  170. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/BMP.pm +179 -0
  171. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/BZZ.pm +472 -0
  172. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/BigTIFF.pm +282 -0
  173. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/BuildTagLookup.pm +2391 -0
  174. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Canon.pm +7736 -0
  175. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/CanonCustom.pm +2523 -0
  176. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/CanonRaw.pm +931 -0
  177. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/CanonVRD.pm +1481 -0
  178. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/CaptureOne.pm +235 -0
  179. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Casio.pm +2013 -0
  180. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Charset.pm +396 -0
  181. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Arabic.pm +0 -0
  182. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Baltic.pm +0 -0
  183. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Cyrillic.pm +0 -0
  184. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Greek.pm +0 -0
  185. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Hebrew.pm +0 -0
  186. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/JIS.pm +0 -0
  187. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Latin.pm +0 -0
  188. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Latin2.pm +0 -0
  189. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacArabic.pm +0 -0
  190. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacChineseCN.pm +0 -0
  191. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacChineseTW.pm +0 -0
  192. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacCroatian.pm +0 -0
  193. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacCyrillic.pm +0 -0
  194. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacGreek.pm +0 -0
  195. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacHebrew.pm +0 -0
  196. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacIceland.pm +0 -0
  197. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacJapanese.pm +0 -0
  198. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacKorean.pm +0 -0
  199. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacLatin2.pm +0 -0
  200. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacRSymbol.pm +0 -0
  201. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacRoman.pm +0 -0
  202. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacRomanian.pm +0 -0
  203. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacThai.pm +0 -0
  204. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/MacTurkish.pm +0 -0
  205. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/PDFDoc.pm +0 -0
  206. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/ShiftJIS.pm +0 -0
  207. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Symbol.pm +0 -0
  208. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Thai.pm +0 -0
  209. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Turkish.pm +0 -0
  210. data/vendor/{Image-ExifTool-8.97 → Image-ExifTool-9.27}/lib/Image/ExifTool/Charset/Vietnam.pm +0 -0
  211. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DICOM.pm +3835 -0
  212. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DNG.pm +835 -0
  213. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DV.pm +319 -0
  214. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DarwinCore.pm +317 -0
  215. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/DjVu.pm +373 -0
  216. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/EXE.pm +1228 -0
  217. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Exif.pm +4526 -0
  218. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FLAC.pm +296 -0
  219. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FLIR.pm +672 -0
  220. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Fixup.pm +354 -0
  221. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Flash.pm +755 -0
  222. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FlashPix.pm +1882 -0
  223. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Font.pm +643 -0
  224. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FotoStation.pm +258 -0
  225. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/FujiFilm.pm +1019 -0
  226. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GE.pm +80 -0
  227. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GIF.pm +542 -0
  228. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GIMP.pm +258 -0
  229. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GPS.pm +511 -0
  230. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/GeoTiff.pm +2187 -0
  231. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Geotag.pm +1173 -0
  232. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/H264.pm +1097 -0
  233. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/HP.pm +262 -0
  234. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/HTML.pm +576 -0
  235. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/HtmlDump.pm +895 -0
  236. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ICC_Profile.pm +999 -0
  237. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ID3.pm +1486 -0
  238. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/IPTC.pm +1244 -0
  239. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ITC.pm +215 -0
  240. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Import.pm +308 -0
  241. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/InDesign.pm +277 -0
  242. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/JPEG.pm +588 -0
  243. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/JPEGDigest.pm +2511 -0
  244. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/JVC.pm +130 -0
  245. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Jpeg2000.pm +881 -0
  246. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Kodak.pm +2014 -0
  247. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/KyoceraRaw.pm +173 -0
  248. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/LNK.pm +723 -0
  249. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/cs.pm +1586 -0
  250. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/de.pm +7356 -0
  251. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/en_ca.pm +557 -0
  252. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/en_gb.pm +572 -0
  253. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/es.pm +4016 -0
  254. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/fi.pm +2856 -0
  255. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/fr.pm +4720 -0
  256. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/it.pm +7917 -0
  257. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/ja.pm +5815 -0
  258. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/ko.pm +2332 -0
  259. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/nl.pm +3220 -0
  260. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/pl.pm +1140 -0
  261. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/ru.pm +769 -0
  262. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/sv.pm +639 -0
  263. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/tr.pm +544 -0
  264. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/zh_cn.pm +1329 -0
  265. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Lang/zh_tw.pm +802 -0
  266. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Leaf.pm +515 -0
  267. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/M2TS.pm +729 -0
  268. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MIE.pm +2561 -0
  269. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MIEUnits.pod +377 -0
  270. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MIFF.pm +279 -0
  271. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MNG.pm +684 -0
  272. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MPC.pm +156 -0
  273. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MPEG.pm +736 -0
  274. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MPF.pm +289 -0
  275. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MWG.pm +736 -0
  276. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MXF.pm +3032 -0
  277. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MakerNotes.pm +1569 -0
  278. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Matroska.pm +891 -0
  279. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Microsoft.pm +879 -0
  280. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Minolta.pm +2823 -0
  281. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/MinoltaRaw.pm +534 -0
  282. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Nikon.pm +6105 -0
  283. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/NikonCapture.pm +911 -0
  284. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/NikonCustom.pm +4405 -0
  285. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/OOXML.pm +409 -0
  286. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Ogg.pm +237 -0
  287. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Olympus.pm +3540 -0
  288. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/OpenEXR.pm +324 -0
  289. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PDF.pm +2327 -0
  290. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PGF.pm +143 -0
  291. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PICT.pm +1260 -0
  292. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PLIST.pm +449 -0
  293. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PNG.pm +1100 -0
  294. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PPM.pm +169 -0
  295. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PSP.pm +305 -0
  296. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Panasonic.pm +1921 -0
  297. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PanasonicRaw.pm +535 -0
  298. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Pentax.pm +5486 -0
  299. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PhaseOne.pm +557 -0
  300. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PhotoCD.pm +507 -0
  301. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PhotoMechanic.pm +256 -0
  302. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Photoshop.pm +597 -0
  303. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PostScript.pm +693 -0
  304. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/PrintIM.pm +125 -0
  305. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Qualcomm.pm +1344 -0
  306. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/QuickTime.pm +3316 -0
  307. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/README +943 -0
  308. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/RIFF.pm +1322 -0
  309. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/RSRC.pm +241 -0
  310. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/RTF.pm +383 -0
  311. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Radiance.pm +144 -0
  312. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Rawzor.pm +190 -0
  313. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Real.pm +736 -0
  314. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Reconyx.pm +190 -0
  315. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Ricoh.pm +740 -0
  316. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Samsung.pm +769 -0
  317. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Sanyo.pm +439 -0
  318. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Shift.pl +594 -0
  319. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Shortcuts.pm +291 -0
  320. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Sigma.pm +574 -0
  321. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/SigmaRaw.pm +649 -0
  322. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Sony.pm +5388 -0
  323. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/SonyIDC.pm +330 -0
  324. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Stim.pm +196 -0
  325. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/TagInfoXML.pm +792 -0
  326. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/TagLookup.pm +7911 -0
  327. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/TagNames.pod +25645 -0
  328. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Theora.pm +145 -0
  329. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Unknown.pm +66 -0
  330. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Vorbis.pm +237 -0
  331. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WriteCanonRaw.pl +637 -0
  332. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WriteExif.pl +3674 -0
  333. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WriteIPTC.pl +702 -0
  334. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WritePDF.pl +759 -0
  335. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WritePNG.pl +330 -0
  336. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WritePhotoshop.pl +266 -0
  337. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WritePostScript.pl +777 -0
  338. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/WriteXMP.pl +1318 -0
  339. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/Writer.pl +5755 -0
  340. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/XMP.pm +3535 -0
  341. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/XMP2.pl +1298 -0
  342. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/XMPStruct.pl +813 -0
  343. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/ZIP.pm +623 -0
  344. data/vendor/Image-ExifTool-9.27/lib/Image/ExifTool/iWork.pm +223 -0
  345. data/vendor/Image-ExifTool-9.27/perl-Image-ExifTool.spec +104 -0
  346. data/vendor/Image-ExifTool-9.27/t/AFCP.t +44 -0
  347. data/vendor/Image-ExifTool-9.27/t/AFCP_2.out +37 -0
  348. data/vendor/Image-ExifTool-9.27/t/AFCP_3.out +20 -0
  349. data/vendor/Image-ExifTool-9.27/t/AIFF.t +28 -0
  350. data/vendor/Image-ExifTool-9.27/t/AIFF_2.out +31 -0
  351. data/vendor/Image-ExifTool-9.27/t/APE.t +38 -0
  352. data/vendor/Image-ExifTool-9.27/t/APE_2.out +28 -0
  353. data/vendor/Image-ExifTool-9.27/t/APE_3.out +57 -0
  354. data/vendor/Image-ExifTool-9.27/t/ASF.t +28 -0
  355. data/vendor/Image-ExifTool-9.27/t/ASF_2.out +48 -0
  356. data/vendor/Image-ExifTool-9.27/t/BMP.t +28 -0
  357. data/vendor/Image-ExifTool-9.27/t/BMP_2.out +21 -0
  358. data/vendor/Image-ExifTool-9.27/t/BigTIFF.t +28 -0
  359. data/vendor/Image-ExifTool-9.27/t/BigTIFF_2.out +19 -0
  360. data/vendor/Image-ExifTool-9.27/t/Canon.t +41 -0
  361. data/vendor/Image-ExifTool-9.27/t/CanonRaw.t +126 -0
  362. data/vendor/Image-ExifTool-9.27/t/CanonRaw_2.out +165 -0
  363. data/vendor/Image-ExifTool-9.27/t/CanonRaw_4.out +214 -0
  364. data/vendor/Image-ExifTool-9.27/t/CanonRaw_5.out +207 -0
  365. data/vendor/Image-ExifTool-9.27/t/CanonRaw_6.out +231 -0
  366. data/vendor/Image-ExifTool-9.27/t/CanonRaw_7.out +246 -0
  367. data/vendor/Image-ExifTool-9.27/t/CanonVRD.t +129 -0
  368. data/vendor/Image-ExifTool-9.27/t/CanonVRD_11.out +118 -0
  369. data/vendor/Image-ExifTool-9.27/t/CanonVRD_12.out +12 -0
  370. data/vendor/Image-ExifTool-9.27/t/CanonVRD_2.out +116 -0
  371. data/vendor/Image-ExifTool-9.27/t/CanonVRD_3.out +116 -0
  372. data/vendor/Image-ExifTool-9.27/t/CanonVRD_4.out +2 -0
  373. data/vendor/Image-ExifTool-9.27/t/CanonVRD_5.out +3 -0
  374. data/vendor/Image-ExifTool-9.27/t/CanonVRD_6.out +3 -0
  375. data/vendor/Image-ExifTool-9.27/t/CanonVRD_7.out +2 -0
  376. data/vendor/Image-ExifTool-9.27/t/CanonVRD_8.out +2 -0
  377. data/vendor/Image-ExifTool-9.27/t/CanonVRD_9.out +1 -0
  378. data/vendor/Image-ExifTool-9.27/t/Canon_2.out +350 -0
  379. data/vendor/Image-ExifTool-9.27/t/Canon_3.out +3 -0
  380. data/vendor/Image-ExifTool-9.27/t/Casio.t +54 -0
  381. data/vendor/Image-ExifTool-9.27/t/Casio_2.out +70 -0
  382. data/vendor/Image-ExifTool-9.27/t/Casio_3.out +100 -0
  383. data/vendor/Image-ExifTool-9.27/t/Casio_4.out +26 -0
  384. data/vendor/Image-ExifTool-9.27/t/Casio_5.out +78 -0
  385. data/vendor/Image-ExifTool-9.27/t/Casio_6.out +115 -0
  386. data/vendor/Image-ExifTool-9.27/t/DICOM.t +28 -0
  387. data/vendor/Image-ExifTool-9.27/t/DICOM_2.out +108 -0
  388. data/vendor/Image-ExifTool-9.27/t/DNG.t +39 -0
  389. data/vendor/Image-ExifTool-9.27/t/DNG_2.out +326 -0
  390. data/vendor/Image-ExifTool-9.27/t/DNG_3.out +4 -0
  391. data/vendor/Image-ExifTool-9.27/t/DV.t +27 -0
  392. data/vendor/Image-ExifTool-9.27/t/DV_2.out +24 -0
  393. data/vendor/Image-ExifTool-9.27/t/DjVu.t +28 -0
  394. data/vendor/Image-ExifTool-9.27/t/DjVu_2.out +44 -0
  395. data/vendor/Image-ExifTool-9.27/t/EXE.t +31 -0
  396. data/vendor/Image-ExifTool-9.27/t/EXE_2.out +40 -0
  397. data/vendor/Image-ExifTool-9.27/t/EXE_3.out +15 -0
  398. data/vendor/Image-ExifTool-9.27/t/EXE_4.out +14 -0
  399. data/vendor/Image-ExifTool-9.27/t/ExifTool.t +284 -0
  400. data/vendor/Image-ExifTool-9.27/t/ExifTool_16.out +180 -0
  401. data/vendor/Image-ExifTool-9.27/t/ExifTool_17.out +594 -0
  402. data/vendor/Image-ExifTool-9.27/t/ExifTool_2.out +399 -0
  403. data/vendor/Image-ExifTool-9.27/t/ExifTool_20.out +1 -0
  404. data/vendor/Image-ExifTool-9.27/t/ExifTool_21.out +1 -0
  405. data/vendor/Image-ExifTool-9.27/t/ExifTool_22.out +1 -0
  406. data/vendor/Image-ExifTool-9.27/t/ExifTool_23.out +6 -0
  407. data/vendor/Image-ExifTool-9.27/t/ExifTool_24.out +3 -0
  408. data/vendor/Image-ExifTool-9.27/t/ExifTool_25.out +13 -0
  409. data/vendor/Image-ExifTool-9.27/t/ExifTool_26.out +12 -0
  410. data/vendor/Image-ExifTool-9.27/t/ExifTool_3.out +87 -0
  411. data/vendor/Image-ExifTool-9.27/t/ExifTool_4.out +41 -0
  412. data/vendor/Image-ExifTool-9.27/t/ExifTool_5.out +6 -0
  413. data/vendor/Image-ExifTool-9.27/t/ExifTool_6.out +68 -0
  414. data/vendor/Image-ExifTool-9.27/t/ExifTool_7.out +125 -0
  415. data/vendor/Image-ExifTool-9.27/t/ExifTool_8.out +125 -0
  416. data/vendor/Image-ExifTool-9.27/t/ExifTool_9.out +33 -0
  417. data/vendor/Image-ExifTool-9.27/t/FLAC.t +37 -0
  418. data/vendor/Image-ExifTool-9.27/t/FLAC_2.out +25 -0
  419. data/vendor/Image-ExifTool-9.27/t/FLAC_3.out +19 -0
  420. data/vendor/Image-ExifTool-9.27/t/FLIR.t +30 -0
  421. data/vendor/Image-ExifTool-9.27/t/FLIR_2.out +93 -0
  422. data/vendor/Image-ExifTool-9.27/t/FLIR_3.out +47 -0
  423. data/vendor/Image-ExifTool-9.27/t/Flash.t +37 -0
  424. data/vendor/Image-ExifTool-9.27/t/FlashPix.t +30 -0
  425. data/vendor/Image-ExifTool-9.27/t/FlashPix_2.out +48 -0
  426. data/vendor/Image-ExifTool-9.27/t/Flash_2.out +20 -0
  427. data/vendor/Image-ExifTool-9.27/t/Flash_3.out +53 -0
  428. data/vendor/Image-ExifTool-9.27/t/Font.t +30 -0
  429. data/vendor/Image-ExifTool-9.27/t/Font_2.out +23 -0
  430. data/vendor/Image-ExifTool-9.27/t/Font_3.out +35 -0
  431. data/vendor/Image-ExifTool-9.27/t/Font_4.out +26 -0
  432. data/vendor/Image-ExifTool-9.27/t/Font_5.out +26 -0
  433. data/vendor/Image-ExifTool-9.27/t/Font_6.out +36 -0
  434. data/vendor/Image-ExifTool-9.27/t/Font_7.out +36 -0
  435. data/vendor/Image-ExifTool-9.27/t/FotoStation.t +38 -0
  436. data/vendor/Image-ExifTool-9.27/t/FotoStation_2.out +39 -0
  437. data/vendor/Image-ExifTool-9.27/t/FotoStation_3.out +3 -0
  438. data/vendor/Image-ExifTool-9.27/t/FujiFilm.t +78 -0
  439. data/vendor/Image-ExifTool-9.27/t/FujiFilm_2.out +87 -0
  440. data/vendor/Image-ExifTool-9.27/t/FujiFilm_3.out +88 -0
  441. data/vendor/Image-ExifTool-9.27/t/FujiFilm_4.out +117 -0
  442. data/vendor/Image-ExifTool-9.27/t/FujiFilm_5.out +1 -0
  443. data/vendor/Image-ExifTool-9.27/t/GE.t +46 -0
  444. data/vendor/Image-ExifTool-9.27/t/GE_2.out +84 -0
  445. data/vendor/Image-ExifTool-9.27/t/GE_3.out +84 -0
  446. data/vendor/Image-ExifTool-9.27/t/GIF.t +83 -0
  447. data/vendor/Image-ExifTool-9.27/t/GIF_2.out +40 -0
  448. data/vendor/Image-ExifTool-9.27/t/GIF_3.out +41 -0
  449. data/vendor/Image-ExifTool-9.27/t/GIF_4.out +16 -0
  450. data/vendor/Image-ExifTool-9.27/t/GIMP.t +27 -0
  451. data/vendor/Image-ExifTool-9.27/t/GIMP_2.out +63 -0
  452. data/vendor/Image-ExifTool-9.27/t/GPS.t +42 -0
  453. data/vendor/Image-ExifTool-9.27/t/GPS_2.out +94 -0
  454. data/vendor/Image-ExifTool-9.27/t/GPS_3.out +96 -0
  455. data/vendor/Image-ExifTool-9.27/t/GeoTiff.t +36 -0
  456. data/vendor/Image-ExifTool-9.27/t/GeoTiff_2.out +36 -0
  457. data/vendor/Image-ExifTool-9.27/t/GeoTiff_3.out +36 -0
  458. data/vendor/Image-ExifTool-9.27/t/Geotag.t +164 -0
  459. data/vendor/Image-ExifTool-9.27/t/Geotag_2.out +9 -0
  460. data/vendor/Image-ExifTool-9.27/t/Geotag_3.out +6 -0
  461. data/vendor/Image-ExifTool-9.27/t/Geotag_5.out +1 -0
  462. data/vendor/Image-ExifTool-9.27/t/Geotag_6.out +9 -0
  463. data/vendor/Image-ExifTool-9.27/t/Geotag_7.out +53 -0
  464. data/vendor/Image-ExifTool-9.27/t/Geotag_8.out +15 -0
  465. data/vendor/Image-ExifTool-9.27/t/HTML.t +28 -0
  466. data/vendor/Image-ExifTool-9.27/t/HTML_2.out +68 -0
  467. data/vendor/Image-ExifTool-9.27/t/IPTC.t +157 -0
  468. data/vendor/Image-ExifTool-9.27/t/IPTC_2.out +58 -0
  469. data/vendor/Image-ExifTool-9.27/t/IPTC_4.out +56 -0
  470. data/vendor/Image-ExifTool-9.27/t/IPTC_5.out +1 -0
  471. data/vendor/Image-ExifTool-9.27/t/IPTC_6.out +2 -0
  472. data/vendor/Image-ExifTool-9.27/t/IPTC_7.out +1 -0
  473. data/vendor/Image-ExifTool-9.27/t/IPTC_8.out +20 -0
  474. data/vendor/Image-ExifTool-9.27/t/ITC.t +28 -0
  475. data/vendor/Image-ExifTool-9.27/t/ITC_2.out +19 -0
  476. data/vendor/Image-ExifTool-9.27/t/InDesign.t +61 -0
  477. data/vendor/Image-ExifTool-9.27/t/InDesign_2.out +19 -0
  478. data/vendor/Image-ExifTool-9.27/t/InDesign_3.out +21 -0
  479. data/vendor/Image-ExifTool-9.27/t/InDesign_4.out +11 -0
  480. data/vendor/Image-ExifTool-9.27/t/JVC.t +36 -0
  481. data/vendor/Image-ExifTool-9.27/t/JVC_2.out +3 -0
  482. data/vendor/Image-ExifTool-9.27/t/JVC_3.out +3 -0
  483. data/vendor/Image-ExifTool-9.27/t/Jpeg2000.t +49 -0
  484. data/vendor/Image-ExifTool-9.27/t/Jpeg2000_2.out +63 -0
  485. data/vendor/Image-ExifTool-9.27/t/Jpeg2000_3.out +51 -0
  486. data/vendor/Image-ExifTool-9.27/t/Jpeg2000_4.out +15 -0
  487. data/vendor/Image-ExifTool-9.27/t/Kodak.t +40 -0
  488. data/vendor/Image-ExifTool-9.27/t/Kodak_2.out +109 -0
  489. data/vendor/Image-ExifTool-9.27/t/Kodak_3.out +119 -0
  490. data/vendor/Image-ExifTool-9.27/t/KyoceraRaw.t +28 -0
  491. data/vendor/Image-ExifTool-9.27/t/KyoceraRaw_2.out +27 -0
  492. data/vendor/Image-ExifTool-9.27/t/LNK.t +28 -0
  493. data/vendor/Image-ExifTool-9.27/t/LNK_2.out +45 -0
  494. data/vendor/Image-ExifTool-9.27/t/Lang.t +40 -0
  495. data/vendor/Image-ExifTool-9.27/t/Lang_1.out +1 -0
  496. data/vendor/Image-ExifTool-9.27/t/Lang_10.out +46 -0
  497. data/vendor/Image-ExifTool-9.27/t/Lang_11.out +46 -0
  498. data/vendor/Image-ExifTool-9.27/t/Lang_12.out +46 -0
  499. data/vendor/Image-ExifTool-9.27/t/Lang_13.out +46 -0
  500. data/vendor/Image-ExifTool-9.27/t/Lang_14.out +46 -0
  501. data/vendor/Image-ExifTool-9.27/t/Lang_15.out +46 -0
  502. data/vendor/Image-ExifTool-9.27/t/Lang_16.out +46 -0
  503. data/vendor/Image-ExifTool-9.27/t/Lang_17.out +46 -0
  504. data/vendor/Image-ExifTool-9.27/t/Lang_18.out +46 -0
  505. data/vendor/Image-ExifTool-9.27/t/Lang_2.out +46 -0
  506. data/vendor/Image-ExifTool-9.27/t/Lang_3.out +46 -0
  507. data/vendor/Image-ExifTool-9.27/t/Lang_4.out +46 -0
  508. data/vendor/Image-ExifTool-9.27/t/Lang_5.out +46 -0
  509. data/vendor/Image-ExifTool-9.27/t/Lang_6.out +46 -0
  510. data/vendor/Image-ExifTool-9.27/t/Lang_7.out +46 -0
  511. data/vendor/Image-ExifTool-9.27/t/Lang_8.out +46 -0
  512. data/vendor/Image-ExifTool-9.27/t/Lang_9.out +46 -0
  513. data/vendor/Image-ExifTool-9.27/t/M2TS.t +29 -0
  514. data/vendor/Image-ExifTool-9.27/t/M2TS_2.out +27 -0
  515. data/vendor/Image-ExifTool-9.27/t/MIE.t +82 -0
  516. data/vendor/Image-ExifTool-9.27/t/MIE_2.out +67 -0
  517. data/vendor/Image-ExifTool-9.27/t/MIE_3.out +134 -0
  518. data/vendor/Image-ExifTool-9.27/t/MIE_5.out +1 -0
  519. data/vendor/Image-ExifTool-9.27/t/MIE_6.out +1 -0
  520. data/vendor/Image-ExifTool-9.27/t/MIFF.t +28 -0
  521. data/vendor/Image-ExifTool-9.27/t/MIFF_2.out +108 -0
  522. data/vendor/Image-ExifTool-9.27/t/MP3.t +29 -0
  523. data/vendor/Image-ExifTool-9.27/t/MP3_2.out +45 -0
  524. data/vendor/Image-ExifTool-9.27/t/MWG.t +72 -0
  525. data/vendor/Image-ExifTool-9.27/t/MWG_2.out +13 -0
  526. data/vendor/Image-ExifTool-9.27/t/MWG_3.out +8 -0
  527. data/vendor/Image-ExifTool-9.27/t/MWG_4.out +5 -0
  528. data/vendor/Image-ExifTool-9.27/t/MWG_5.out +22 -0
  529. data/vendor/Image-ExifTool-9.27/t/MXF.t +27 -0
  530. data/vendor/Image-ExifTool-9.27/t/MXF_2.out +78 -0
  531. data/vendor/Image-ExifTool-9.27/t/Matroska.t +29 -0
  532. data/vendor/Image-ExifTool-9.27/t/Matroska_2.out +64 -0
  533. data/vendor/Image-ExifTool-9.27/t/Minolta.t +50 -0
  534. data/vendor/Image-ExifTool-9.27/t/Minolta_2.out +133 -0
  535. data/vendor/Image-ExifTool-9.27/t/Minolta_3.out +146 -0
  536. data/vendor/Image-ExifTool-9.27/t/Minolta_4.out +148 -0
  537. data/vendor/Image-ExifTool-9.27/t/Nikon.t +114 -0
  538. data/vendor/Image-ExifTool-9.27/t/Nikon_2.out +82 -0
  539. data/vendor/Image-ExifTool-9.27/t/Nikon_3.out +98 -0
  540. data/vendor/Image-ExifTool-9.27/t/Nikon_4.out +173 -0
  541. data/vendor/Image-ExifTool-9.27/t/Nikon_5.out +167 -0
  542. data/vendor/Image-ExifTool-9.27/t/Nikon_7.out +260 -0
  543. data/vendor/Image-ExifTool-9.27/t/Nikon_8.out +4 -0
  544. data/vendor/Image-ExifTool-9.27/t/Olympus.t +85 -0
  545. data/vendor/Image-ExifTool-9.27/t/Olympus_2.out +79 -0
  546. data/vendor/Image-ExifTool-9.27/t/Olympus_3.out +81 -0
  547. data/vendor/Image-ExifTool-9.27/t/Olympus_4.out +192 -0
  548. data/vendor/Image-ExifTool-9.27/t/Olympus_5.out +264 -0
  549. data/vendor/Image-ExifTool-9.27/t/Olympus_6.out +151 -0
  550. data/vendor/Image-ExifTool-9.27/t/Olympus_7.out +482 -0
  551. data/vendor/Image-ExifTool-9.27/t/OpenEXR.t +28 -0
  552. data/vendor/Image-ExifTool-9.27/t/OpenEXR_2.out +23 -0
  553. data/vendor/Image-ExifTool-9.27/t/PDF.t +295 -0
  554. data/vendor/Image-ExifTool-9.27/t/PDF_10.out +10 -0
  555. data/vendor/Image-ExifTool-9.27/t/PDF_11.out +10 -0
  556. data/vendor/Image-ExifTool-9.27/t/PDF_12.out +9 -0
  557. data/vendor/Image-ExifTool-9.27/t/PDF_14.out +5 -0
  558. data/vendor/Image-ExifTool-9.27/t/PDF_15.out +6 -0
  559. data/vendor/Image-ExifTool-9.27/t/PDF_16.out +4 -0
  560. data/vendor/Image-ExifTool-9.27/t/PDF_17.out +4 -0
  561. data/vendor/Image-ExifTool-9.27/t/PDF_18.out +5 -0
  562. data/vendor/Image-ExifTool-9.27/t/PDF_19.out +6 -0
  563. data/vendor/Image-ExifTool-9.27/t/PDF_2.out +117 -0
  564. data/vendor/Image-ExifTool-9.27/t/PDF_20.out +4 -0
  565. data/vendor/Image-ExifTool-9.27/t/PDF_22.out +3 -0
  566. data/vendor/Image-ExifTool-9.27/t/PDF_4.out +12 -0
  567. data/vendor/Image-ExifTool-9.27/t/PDF_5.out +8 -0
  568. data/vendor/Image-ExifTool-9.27/t/PDF_6.out +9 -0
  569. data/vendor/Image-ExifTool-9.27/t/PDF_7.out +11 -0
  570. data/vendor/Image-ExifTool-9.27/t/PDF_8.out +9 -0
  571. data/vendor/Image-ExifTool-9.27/t/PDF_9.out +9 -0
  572. data/vendor/Image-ExifTool-9.27/t/PGF.t +28 -0
  573. data/vendor/Image-ExifTool-9.27/t/PGF_2.out +32 -0
  574. data/vendor/Image-ExifTool-9.27/t/PICT.t +28 -0
  575. data/vendor/Image-ExifTool-9.27/t/PICT_2.out +15 -0
  576. data/vendor/Image-ExifTool-9.27/t/PLIST.t +31 -0
  577. data/vendor/Image-ExifTool-9.27/t/PLIST_2.out +20 -0
  578. data/vendor/Image-ExifTool-9.27/t/PLIST_3.out +20 -0
  579. data/vendor/Image-ExifTool-9.27/t/PNG.t +75 -0
  580. data/vendor/Image-ExifTool-9.27/t/PNG_2.out +22 -0
  581. data/vendor/Image-ExifTool-9.27/t/PNG_3.out +118 -0
  582. data/vendor/Image-ExifTool-9.27/t/PNG_4.out +12 -0
  583. data/vendor/Image-ExifTool-9.27/t/PPM.t +40 -0
  584. data/vendor/Image-ExifTool-9.27/t/PPM_2.out +15 -0
  585. data/vendor/Image-ExifTool-9.27/t/PPM_3.out +9 -0
  586. data/vendor/Image-ExifTool-9.27/t/PSP.t +28 -0
  587. data/vendor/Image-ExifTool-9.27/t/PSP_2.out +32 -0
  588. data/vendor/Image-ExifTool-9.27/t/Panasonic.t +60 -0
  589. data/vendor/Image-ExifTool-9.27/t/Panasonic_2.out +99 -0
  590. data/vendor/Image-ExifTool-9.27/t/Panasonic_3.out +119 -0
  591. data/vendor/Image-ExifTool-9.27/t/Panasonic_4.out +177 -0
  592. data/vendor/Image-ExifTool-9.27/t/Panasonic_5.out +228 -0
  593. data/vendor/Image-ExifTool-9.27/t/Pentax.t +50 -0
  594. data/vendor/Image-ExifTool-9.27/t/Pentax_2.out +219 -0
  595. data/vendor/Image-ExifTool-9.27/t/Pentax_3.out +262 -0
  596. data/vendor/Image-ExifTool-9.27/t/Pentax_4.out +123 -0
  597. data/vendor/Image-ExifTool-9.27/t/PhotoCD.t +28 -0
  598. data/vendor/Image-ExifTool-9.27/t/PhotoCD_2.out +35 -0
  599. data/vendor/Image-ExifTool-9.27/t/PhotoMechanic.t +38 -0
  600. data/vendor/Image-ExifTool-9.27/t/PhotoMechanic_2.out +81 -0
  601. data/vendor/Image-ExifTool-9.27/t/PhotoMechanic_3.out +2 -0
  602. data/vendor/Image-ExifTool-9.27/t/Photoshop.t +42 -0
  603. data/vendor/Image-ExifTool-9.27/t/Photoshop_2.out +96 -0
  604. data/vendor/Image-ExifTool-9.27/t/Photoshop_3.out +108 -0
  605. data/vendor/Image-ExifTool-9.27/t/PostScript.t +49 -0
  606. data/vendor/Image-ExifTool-9.27/t/PostScript_2.out +64 -0
  607. data/vendor/Image-ExifTool-9.27/t/PostScript_3.out +132 -0
  608. data/vendor/Image-ExifTool-9.27/t/QuickTime.t +31 -0
  609. data/vendor/Image-ExifTool-9.27/t/QuickTime_2.out +128 -0
  610. data/vendor/Image-ExifTool-9.27/t/QuickTime_3.out +69 -0
  611. data/vendor/Image-ExifTool-9.27/t/RIFF.t +31 -0
  612. data/vendor/Image-ExifTool-9.27/t/RIFF_2.out +24 -0
  613. data/vendor/Image-ExifTool-9.27/t/RIFF_3.out +52 -0
  614. data/vendor/Image-ExifTool-9.27/t/RIFF_4.out +16 -0
  615. data/vendor/Image-ExifTool-9.27/t/RTF.t +27 -0
  616. data/vendor/Image-ExifTool-9.27/t/RTF_2.out +20 -0
  617. data/vendor/Image-ExifTool-9.27/t/Radiance.t +28 -0
  618. data/vendor/Image-ExifTool-9.27/t/Radiance_2.out +22 -0
  619. data/vendor/Image-ExifTool-9.27/t/Real.t +46 -0
  620. data/vendor/Image-ExifTool-9.27/t/Real_2.out +68 -0
  621. data/vendor/Image-ExifTool-9.27/t/Real_3.out +18 -0
  622. data/vendor/Image-ExifTool-9.27/t/Real_4.out +11 -0
  623. data/vendor/Image-ExifTool-9.27/t/Ricoh.t +47 -0
  624. data/vendor/Image-ExifTool-9.27/t/Ricoh_2.out +70 -0
  625. data/vendor/Image-ExifTool-9.27/t/Ricoh_3.out +98 -0
  626. data/vendor/Image-ExifTool-9.27/t/Ricoh_4.out +112 -0
  627. data/vendor/Image-ExifTool-9.27/t/Sanyo.t +39 -0
  628. data/vendor/Image-ExifTool-9.27/t/Sanyo_2.out +101 -0
  629. data/vendor/Image-ExifTool-9.27/t/Sanyo_3.out +111 -0
  630. data/vendor/Image-ExifTool-9.27/t/Sigma.t +60 -0
  631. data/vendor/Image-ExifTool-9.27/t/Sigma_2.out +91 -0
  632. data/vendor/Image-ExifTool-9.27/t/Sigma_3.out +94 -0
  633. data/vendor/Image-ExifTool-9.27/t/Sigma_4.out +63 -0
  634. data/vendor/Image-ExifTool-9.27/t/Sigma_5.out +192 -0
  635. data/vendor/Image-ExifTool-9.27/t/Sony.t +62 -0
  636. data/vendor/Image-ExifTool-9.27/t/Sony_2.out +84 -0
  637. data/vendor/Image-ExifTool-9.27/t/Sony_3.out +85 -0
  638. data/vendor/Image-ExifTool-9.27/t/Sony_5.out +32 -0
  639. data/vendor/Image-ExifTool-9.27/t/TestLib.pm +417 -0
  640. data/vendor/Image-ExifTool-9.27/t/Unknown.t +36 -0
  641. data/vendor/Image-ExifTool-9.27/t/Unknown_2.out +90 -0
  642. data/vendor/Image-ExifTool-9.27/t/Unknown_3.out +90 -0
  643. data/vendor/Image-ExifTool-9.27/t/Vorbis.t +28 -0
  644. data/vendor/Image-ExifTool-9.27/t/Vorbis_2.out +28 -0
  645. data/vendor/Image-ExifTool-9.27/t/Writer.t +896 -0
  646. data/vendor/Image-ExifTool-9.27/t/Writer_10.out +239 -0
  647. data/vendor/Image-ExifTool-9.27/t/Writer_11.out +37 -0
  648. data/vendor/Image-ExifTool-9.27/t/Writer_13.out +160 -0
  649. data/vendor/Image-ExifTool-9.27/t/Writer_14.out +67 -0
  650. data/vendor/Image-ExifTool-9.27/t/Writer_15.out +171 -0
  651. data/vendor/Image-ExifTool-9.27/t/Writer_16.out +1 -0
  652. data/vendor/Image-ExifTool-9.27/t/Writer_17.out +1 -0
  653. data/vendor/Image-ExifTool-9.27/t/Writer_18.out +3 -0
  654. data/vendor/Image-ExifTool-9.27/t/Writer_19.out +34 -0
  655. data/vendor/Image-ExifTool-9.27/t/Writer_2.out +168 -0
  656. data/vendor/Image-ExifTool-9.27/t/Writer_22.out +4 -0
  657. data/vendor/Image-ExifTool-9.27/t/Writer_24.out +1 -0
  658. data/vendor/Image-ExifTool-9.27/t/Writer_25.out +38 -0
  659. data/vendor/Image-ExifTool-9.27/t/Writer_26.out +32 -0
  660. data/vendor/Image-ExifTool-9.27/t/Writer_27.out +14 -0
  661. data/vendor/Image-ExifTool-9.27/t/Writer_28.out +1 -0
  662. data/vendor/Image-ExifTool-9.27/t/Writer_29.out +2 -0
  663. data/vendor/Image-ExifTool-9.27/t/Writer_30.out +2 -0
  664. data/vendor/Image-ExifTool-9.27/t/Writer_31.out +97 -0
  665. data/vendor/Image-ExifTool-9.27/t/Writer_32.out +3 -0
  666. data/vendor/Image-ExifTool-9.27/t/Writer_33.out +3 -0
  667. data/vendor/Image-ExifTool-9.27/t/Writer_34.out +3 -0
  668. data/vendor/Image-ExifTool-9.27/t/Writer_35.out +187 -0
  669. data/vendor/Image-ExifTool-9.27/t/Writer_36.out +2 -0
  670. data/vendor/Image-ExifTool-9.27/t/Writer_37.out +2 -0
  671. data/vendor/Image-ExifTool-9.27/t/Writer_38.out +62 -0
  672. data/vendor/Image-ExifTool-9.27/t/Writer_39.out +4 -0
  673. data/vendor/Image-ExifTool-9.27/t/Writer_4.out +85 -0
  674. data/vendor/Image-ExifTool-9.27/t/Writer_40.out +4 -0
  675. data/vendor/Image-ExifTool-9.27/t/Writer_41.out +3 -0
  676. data/vendor/Image-ExifTool-9.27/t/Writer_42.out +5 -0
  677. data/vendor/Image-ExifTool-9.27/t/Writer_43.out +5 -0
  678. data/vendor/Image-ExifTool-9.27/t/Writer_44.out +2 -0
  679. data/vendor/Image-ExifTool-9.27/t/Writer_45.out +1 -0
  680. data/vendor/Image-ExifTool-9.27/t/Writer_46.out +77 -0
  681. data/vendor/Image-ExifTool-9.27/t/Writer_47.out +56 -0
  682. data/vendor/Image-ExifTool-9.27/t/Writer_48.out +29 -0
  683. data/vendor/Image-ExifTool-9.27/t/Writer_50.out +3 -0
  684. data/vendor/Image-ExifTool-9.27/t/Writer_6.out +182 -0
  685. data/vendor/Image-ExifTool-9.27/t/Writer_7.out +149 -0
  686. data/vendor/Image-ExifTool-9.27/t/Writer_9.out +236 -0
  687. data/vendor/Image-ExifTool-9.27/t/XMP.t +521 -0
  688. data/vendor/Image-ExifTool-9.27/t/XMP_10.out +33 -0
  689. data/vendor/Image-ExifTool-9.27/t/XMP_11.out +59 -0
  690. data/vendor/Image-ExifTool-9.27/t/XMP_12.out +4 -0
  691. data/vendor/Image-ExifTool-9.27/t/XMP_13.out +5 -0
  692. data/vendor/Image-ExifTool-9.27/t/XMP_14.out +3 -0
  693. data/vendor/Image-ExifTool-9.27/t/XMP_15.out +3 -0
  694. data/vendor/Image-ExifTool-9.27/t/XMP_16.out +5 -0
  695. data/vendor/Image-ExifTool-9.27/t/XMP_17.out +6 -0
  696. data/vendor/Image-ExifTool-9.27/t/XMP_18.out +10 -0
  697. data/vendor/Image-ExifTool-9.27/t/XMP_19.out +35 -0
  698. data/vendor/Image-ExifTool-9.27/t/XMP_2.out +138 -0
  699. data/vendor/Image-ExifTool-9.27/t/XMP_20.out +35 -0
  700. data/vendor/Image-ExifTool-9.27/t/XMP_21.out +37 -0
  701. data/vendor/Image-ExifTool-9.27/t/XMP_22.out +37 -0
  702. data/vendor/Image-ExifTool-9.27/t/XMP_23.out +9 -0
  703. data/vendor/Image-ExifTool-9.27/t/XMP_24.out +31 -0
  704. data/vendor/Image-ExifTool-9.27/t/XMP_25.out +28 -0
  705. data/vendor/Image-ExifTool-9.27/t/XMP_26.out +52 -0
  706. data/vendor/Image-ExifTool-9.27/t/XMP_27.out +93 -0
  707. data/vendor/Image-ExifTool-9.27/t/XMP_28.out +44 -0
  708. data/vendor/Image-ExifTool-9.27/t/XMP_29.out +24 -0
  709. data/vendor/Image-ExifTool-9.27/t/XMP_3.out +136 -0
  710. data/vendor/Image-ExifTool-9.27/t/XMP_30.out +90 -0
  711. data/vendor/Image-ExifTool-9.27/t/XMP_31.out +19 -0
  712. data/vendor/Image-ExifTool-9.27/t/XMP_32.out +2 -0
  713. data/vendor/Image-ExifTool-9.27/t/XMP_34.out +2 -0
  714. data/vendor/Image-ExifTool-9.27/t/XMP_36.out +18 -0
  715. data/vendor/Image-ExifTool-9.27/t/XMP_37.out +35 -0
  716. data/vendor/Image-ExifTool-9.27/t/XMP_39.out +44 -0
  717. data/vendor/Image-ExifTool-9.27/t/XMP_40.out +3 -0
  718. data/vendor/Image-ExifTool-9.27/t/XMP_41.out +175 -0
  719. data/vendor/Image-ExifTool-9.27/t/XMP_5.out +29 -0
  720. data/vendor/Image-ExifTool-9.27/t/XMP_6.out +87 -0
  721. data/vendor/Image-ExifTool-9.27/t/XMP_7.out +118 -0
  722. data/vendor/Image-ExifTool-9.27/t/XMP_8.out +17 -0
  723. data/vendor/Image-ExifTool-9.27/t/XMP_9.out +36 -0
  724. data/vendor/Image-ExifTool-9.27/t/ZIP.t +69 -0
  725. data/vendor/Image-ExifTool-9.27/t/ZIP_2.out +18 -0
  726. data/vendor/Image-ExifTool-9.27/t/ZIP_3.out +17 -0
  727. data/vendor/Image-ExifTool-9.27/t/ZIP_4.out +213 -0
  728. data/vendor/Image-ExifTool-9.27/t/ZIP_5.out +134 -0
  729. data/vendor/Image-ExifTool-9.27/t/ZIP_6.out +49 -0
  730. data/vendor/Image-ExifTool-9.27/t/ZIP_7.out +28 -0
  731. data/vendor/Image-ExifTool-9.27/t/images/AFCP.jpg +0 -0
  732. data/vendor/Image-ExifTool-9.27/t/images/AIFF.aif +0 -0
  733. data/vendor/Image-ExifTool-9.27/t/images/APE.ape +0 -0
  734. data/vendor/Image-ExifTool-9.27/t/images/APE.mpc +0 -0
  735. data/vendor/Image-ExifTool-9.27/t/images/ASF.wmv +0 -0
  736. data/vendor/Image-ExifTool-9.27/t/images/BMP.bmp +0 -0
  737. data/vendor/Image-ExifTool-9.27/t/images/BigTIFF.btf +0 -0
  738. data/vendor/Image-ExifTool-9.27/t/images/Canon.jpg +0 -0
  739. data/vendor/Image-ExifTool-9.27/t/images/Canon1DmkIII.jpg +0 -0
  740. data/vendor/Image-ExifTool-9.27/t/images/CanonRaw.cr2 +0 -0
  741. data/vendor/Image-ExifTool-9.27/t/images/CanonRaw.crw +0 -0
  742. data/vendor/Image-ExifTool-9.27/t/images/CanonVRD.vrd +0 -0
  743. data/vendor/Image-ExifTool-9.27/t/images/CaptureOne.eip +0 -0
  744. data/vendor/Image-ExifTool-9.27/t/images/Casio.jpg +0 -0
  745. data/vendor/Image-ExifTool-9.27/t/images/Casio2.jpg +0 -0
  746. data/vendor/Image-ExifTool-9.27/t/images/CasioQVCI.jpg +0 -0
  747. data/vendor/Image-ExifTool-9.27/t/images/DICOM.dcm +0 -0
  748. data/vendor/Image-ExifTool-9.27/t/images/DNG.dng +0 -0
  749. data/vendor/Image-ExifTool-9.27/t/images/DV.dv +0 -0
  750. data/vendor/Image-ExifTool-9.27/t/images/DjVu.djvu +0 -0
  751. data/vendor/Image-ExifTool-9.27/t/images/EXE.elf +0 -0
  752. data/vendor/Image-ExifTool-9.27/t/images/EXE.exe +0 -0
  753. data/vendor/Image-ExifTool-9.27/t/images/EXE.macho +0 -0
  754. data/vendor/Image-ExifTool-9.27/t/images/ExifTool.jpg +0 -0
  755. data/vendor/Image-ExifTool-9.27/t/images/ExifTool.tif +0 -0
  756. data/vendor/Image-ExifTool-9.27/t/images/ExtendedXMP.jpg +0 -0
  757. data/vendor/Image-ExifTool-9.27/t/images/FLAC.flac +0 -0
  758. data/vendor/Image-ExifTool-9.27/t/images/FLAC.ogg +0 -0
  759. data/vendor/Image-ExifTool-9.27/t/images/FLIR.fpf +0 -0
  760. data/vendor/Image-ExifTool-9.27/t/images/FLIR.jpg +0 -0
  761. data/vendor/Image-ExifTool-9.27/t/images/Flash.flv +0 -0
  762. data/vendor/Image-ExifTool-9.27/t/images/Flash.swf +0 -0
  763. data/vendor/Image-ExifTool-9.27/t/images/FlashPix.ppt +0 -0
  764. data/vendor/Image-ExifTool-9.27/t/images/Font.afm +28 -0
  765. data/vendor/Image-ExifTool-9.27/t/images/Font.dfont +0 -0
  766. data/vendor/Image-ExifTool-9.27/t/images/Font.pfa +38 -0
  767. data/vendor/Image-ExifTool-9.27/t/images/Font.pfb +0 -0
  768. data/vendor/Image-ExifTool-9.27/t/images/Font.pfm +0 -0
  769. data/vendor/Image-ExifTool-9.27/t/images/Font.ttf +0 -0
  770. data/vendor/Image-ExifTool-9.27/t/images/FotoStation.jpg +0 -0
  771. data/vendor/Image-ExifTool-9.27/t/images/FujiFilm.jpg +0 -0
  772. data/vendor/Image-ExifTool-9.27/t/images/FujiFilm.raf +0 -0
  773. data/vendor/Image-ExifTool-9.27/t/images/GE.jpg +0 -0
  774. data/vendor/Image-ExifTool-9.27/t/images/GIF.gif +0 -0
  775. data/vendor/Image-ExifTool-9.27/t/images/GIMP.xcf +0 -0
  776. data/vendor/Image-ExifTool-9.27/t/images/GPS.jpg +0 -0
  777. data/vendor/Image-ExifTool-9.27/t/images/GeoTiff.tif +0 -0
  778. data/vendor/Image-ExifTool-9.27/t/images/Geotag.gpx +23 -0
  779. data/vendor/Image-ExifTool-9.27/t/images/Geotag.igc +24 -0
  780. data/vendor/Image-ExifTool-9.27/t/images/Geotag.log +13 -0
  781. data/vendor/Image-ExifTool-9.27/t/images/Geotag.xml +23 -0
  782. data/vendor/Image-ExifTool-9.27/t/images/Geotag2.log +7 -0
  783. data/vendor/Image-ExifTool-9.27/t/images/HTML.html +77 -0
  784. data/vendor/Image-ExifTool-9.27/t/images/IPTC.jpg +0 -0
  785. data/vendor/Image-ExifTool-9.27/t/images/ITC.itc +0 -0
  786. data/vendor/Image-ExifTool-9.27/t/images/InDesign.indd +0 -0
  787. data/vendor/Image-ExifTool-9.27/t/images/JVC.jpg +0 -0
  788. data/vendor/Image-ExifTool-9.27/t/images/JVC2.jpg +0 -0
  789. data/vendor/Image-ExifTool-9.27/t/images/Jpeg2000.j2c +0 -0
  790. data/vendor/Image-ExifTool-9.27/t/images/Jpeg2000.jp2 +0 -0
  791. data/vendor/Image-ExifTool-9.27/t/images/Kodak.jpg +0 -0
  792. data/vendor/Image-ExifTool-9.27/t/images/KyoceraRaw.raw +0 -0
  793. data/vendor/Image-ExifTool-9.27/t/images/LNK.lnk +0 -0
  794. data/vendor/Image-ExifTool-9.27/t/images/M2TS.mts +0 -0
  795. data/vendor/Image-ExifTool-9.27/t/images/MIE.mie +0 -0
  796. data/vendor/Image-ExifTool-9.27/t/images/MIFF.miff +0 -0
  797. data/vendor/Image-ExifTool-9.27/t/images/MP3.mp3 +0 -0
  798. data/vendor/Image-ExifTool-9.27/t/images/MWG.jpg +0 -0
  799. data/vendor/Image-ExifTool-9.27/t/images/MXF.mxf +0 -0
  800. data/vendor/Image-ExifTool-9.27/t/images/Matroska.mkv +0 -0
  801. data/vendor/Image-ExifTool-9.27/t/images/Minolta.jpg +0 -0
  802. data/vendor/Image-ExifTool-9.27/t/images/Minolta.mrw +0 -0
  803. data/vendor/Image-ExifTool-9.27/t/images/Nikon.jpg +0 -0
  804. data/vendor/Image-ExifTool-9.27/t/images/Nikon.nef +0 -0
  805. data/vendor/Image-ExifTool-9.27/t/images/NikonD2Hs.jpg +0 -0
  806. data/vendor/Image-ExifTool-9.27/t/images/NikonD70.jpg +0 -0
  807. data/vendor/Image-ExifTool-9.27/t/images/OOXML.docx +0 -0
  808. data/vendor/Image-ExifTool-9.27/t/images/Olympus.jpg +0 -0
  809. data/vendor/Image-ExifTool-9.27/t/images/Olympus2.jpg +0 -0
  810. data/vendor/Image-ExifTool-9.27/t/images/OlympusE1.jpg +0 -0
  811. data/vendor/Image-ExifTool-9.27/t/images/OpenDoc.ods +0 -0
  812. data/vendor/Image-ExifTool-9.27/t/images/OpenEXR.exr +0 -0
  813. data/vendor/Image-ExifTool-9.27/t/images/PDF.pdf +0 -0
  814. data/vendor/Image-ExifTool-9.27/t/images/PDF2.pdf +0 -0
  815. data/vendor/Image-ExifTool-9.27/t/images/PGF.pgf +0 -0
  816. data/vendor/Image-ExifTool-9.27/t/images/PICT.pict +0 -0
  817. data/vendor/Image-ExifTool-9.27/t/images/PLIST-bin.plist +0 -0
  818. data/vendor/Image-ExifTool-9.27/t/images/PLIST-xml.plist +35 -0
  819. data/vendor/Image-ExifTool-9.27/t/images/PNG.png +0 -0
  820. data/vendor/Image-ExifTool-9.27/t/images/PPM.ppm +5 -0
  821. data/vendor/Image-ExifTool-9.27/t/images/PSP.psp +0 -0
  822. data/vendor/Image-ExifTool-9.27/t/images/Panasonic.jpg +0 -0
  823. data/vendor/Image-ExifTool-9.27/t/images/Panasonic.rw2 +0 -0
  824. data/vendor/Image-ExifTool-9.27/t/images/Pentax.avi +0 -0
  825. data/vendor/Image-ExifTool-9.27/t/images/Pentax.jpg +0 -0
  826. data/vendor/Image-ExifTool-9.27/t/images/PhotoCD.pcd +0 -0
  827. data/vendor/Image-ExifTool-9.27/t/images/PhotoMechanic.jpg +0 -0
  828. data/vendor/Image-ExifTool-9.27/t/images/Photoshop.psd +0 -0
  829. data/vendor/Image-ExifTool-9.27/t/images/PostScript.eps +108 -0
  830. data/vendor/Image-ExifTool-9.27/t/images/QuickTime.m4a +0 -0
  831. data/vendor/Image-ExifTool-9.27/t/images/QuickTime.mov +0 -0
  832. data/vendor/Image-ExifTool-9.27/t/images/RIFF.avi +0 -0
  833. data/vendor/Image-ExifTool-9.27/t/images/RIFF.wav +0 -0
  834. data/vendor/Image-ExifTool-9.27/t/images/RIFF.webp +0 -0
  835. data/vendor/Image-ExifTool-9.27/t/images/RTF.rtf +25 -0
  836. data/vendor/Image-ExifTool-9.27/t/images/Radiance.hdr +0 -0
  837. data/vendor/Image-ExifTool-9.27/t/images/Real.ra +0 -0
  838. data/vendor/Image-ExifTool-9.27/t/images/Real.ram +1 -0
  839. data/vendor/Image-ExifTool-9.27/t/images/Real.rm +0 -0
  840. data/vendor/Image-ExifTool-9.27/t/images/Ricoh.jpg +0 -0
  841. data/vendor/Image-ExifTool-9.27/t/images/Ricoh2.jpg +0 -0
  842. data/vendor/Image-ExifTool-9.27/t/images/Sanyo.jpg +0 -0
  843. data/vendor/Image-ExifTool-9.27/t/images/Sigma.jpg +0 -0
  844. data/vendor/Image-ExifTool-9.27/t/images/Sigma.x3f +0 -0
  845. data/vendor/Image-ExifTool-9.27/t/images/SigmaDP2.x3f +0 -0
  846. data/vendor/Image-ExifTool-9.27/t/images/Sony.jpg +0 -0
  847. data/vendor/Image-ExifTool-9.27/t/images/Sony.pmp +0 -0
  848. data/vendor/Image-ExifTool-9.27/t/images/Unknown.jpg +0 -0
  849. data/vendor/Image-ExifTool-9.27/t/images/Vorbis.ogg +0 -0
  850. data/vendor/Image-ExifTool-9.27/t/images/Writer.jpg +0 -0
  851. data/vendor/Image-ExifTool-9.27/t/images/XMP.inx +108 -0
  852. data/vendor/Image-ExifTool-9.27/t/images/XMP.jpg +0 -0
  853. data/vendor/Image-ExifTool-9.27/t/images/XMP.svg +33 -0
  854. data/vendor/Image-ExifTool-9.27/t/images/XMP.xml +98 -0
  855. data/vendor/Image-ExifTool-9.27/t/images/XMP.xmp +99 -0
  856. data/vendor/Image-ExifTool-9.27/t/images/XMP2.xmp +25 -0
  857. data/vendor/Image-ExifTool-9.27/t/images/XMP3.xmp +43 -0
  858. data/vendor/Image-ExifTool-9.27/t/images/XMP4.xmp +93 -0
  859. data/vendor/Image-ExifTool-9.27/t/images/XMP5.xmp +158 -0
  860. data/vendor/Image-ExifTool-9.27/t/images/ZIP.gz +0 -0
  861. data/vendor/Image-ExifTool-9.27/t/images/ZIP.zip +0 -0
  862. data/vendor/Image-ExifTool-9.27/t/images/iWork.numbers +0 -0
  863. metadata +868 -218
  864. data/vendor/Image-ExifTool-8.97/.DS_Store +0 -0
  865. data/vendor/Image-ExifTool-8.97/Changes +0 -5753
  866. data/vendor/Image-ExifTool-8.97/ExifTool_config +0 -299
  867. data/vendor/Image-ExifTool-8.97/MANIFEST +0 -831
  868. data/vendor/Image-ExifTool-8.97/META.yml +0 -26
  869. data/vendor/Image-ExifTool-8.97/README +0 -221
  870. data/vendor/Image-ExifTool-8.97/exiftool +0 -5207
  871. data/vendor/Image-ExifTool-8.97/kml.fmt +0 -63
  872. data/vendor/Image-ExifTool-8.97/lib/File/RandomAccess.pm +0 -378
  873. data/vendor/Image-ExifTool-8.97/lib/File/RandomAccess.pod +0 -231
  874. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool.pm +0 -6623
  875. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool.pod +0 -2276
  876. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/AES.pm +0 -501
  877. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/AFCP.pm +0 -280
  878. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/AIFF.pm +0 -271
  879. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/APE.pm +0 -254
  880. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/APP12.pm +0 -322
  881. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ASF.pm +0 -871
  882. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/BMP.pm +0 -179
  883. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/BZZ.pm +0 -472
  884. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/BigTIFF.pm +0 -286
  885. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/BuildTagLookup.pm +0 -2311
  886. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Canon.pm +0 -7435
  887. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/CanonCustom.pm +0 -2484
  888. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/CanonRaw.pm +0 -927
  889. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/CanonVRD.pm +0 -1481
  890. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/CaptureOne.pm +0 -235
  891. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Casio.pm +0 -2013
  892. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Charset.pm +0 -396
  893. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/DICOM.pm +0 -3832
  894. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/DNG.pm +0 -835
  895. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/DV.pm +0 -319
  896. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/DjVu.pm +0 -373
  897. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/EXE.pm +0 -1228
  898. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Exif.pm +0 -4344
  899. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/FLAC.pm +0 -296
  900. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Fixup.pm +0 -333
  901. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Flash.pm +0 -755
  902. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/FlashPix.pm +0 -1882
  903. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Font.pm +0 -643
  904. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/FotoStation.pm +0 -258
  905. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/FujiFilm.pm +0 -968
  906. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GE.pm +0 -80
  907. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GIF.pm +0 -525
  908. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GIMP.pm +0 -258
  909. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GPS.pm +0 -511
  910. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/GeoTiff.pm +0 -2187
  911. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Geotag.pm +0 -1171
  912. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/H264.pm +0 -1093
  913. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/HP.pm +0 -262
  914. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/HTML.pm +0 -576
  915. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/HtmlDump.pm +0 -886
  916. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ICC_Profile.pm +0 -997
  917. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ID3.pm +0 -1276
  918. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/IPTC.pm +0 -1233
  919. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ITC.pm +0 -215
  920. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Import.pm +0 -307
  921. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/InDesign.pm +0 -277
  922. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/JPEG.pm +0 -584
  923. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/JPEGDigest.pm +0 -2511
  924. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/JVC.pm +0 -130
  925. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Jpeg2000.pm +0 -823
  926. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Kodak.pm +0 -2012
  927. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/KyoceraRaw.pm +0 -173
  928. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/LNK.pm +0 -723
  929. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/cs.pm +0 -1581
  930. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/de.pm +0 -5503
  931. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/en_ca.pm +0 -557
  932. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/en_gb.pm +0 -572
  933. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/es.pm +0 -1718
  934. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/fi.pm +0 -2831
  935. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/fr.pm +0 -4716
  936. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/it.pm +0 -2201
  937. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/ja.pm +0 -5793
  938. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/ko.pm +0 -2324
  939. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/nl.pm +0 -3212
  940. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/pl.pm +0 -1134
  941. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/ru.pm +0 -761
  942. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/sv.pm +0 -632
  943. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/tr.pm +0 -539
  944. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1320
  945. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Lang/zh_tw.pm +0 -794
  946. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Leaf.pm +0 -515
  947. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/M2TS.pm +0 -729
  948. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MIE.pm +0 -2552
  949. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MIEUnits.pod +0 -377
  950. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MIFF.pm +0 -279
  951. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MNG.pm +0 -684
  952. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MPC.pm +0 -156
  953. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MPEG.pm +0 -736
  954. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MPF.pm +0 -286
  955. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MWG.pm +0 -586
  956. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MXF.pm +0 -3032
  957. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MakerNotes.pm +0 -1551
  958. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Matroska.pm +0 -891
  959. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Microsoft.pm +0 -861
  960. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Minolta.pm +0 -2786
  961. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/MinoltaRaw.pm +0 -534
  962. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Nikon.pm +0 -5568
  963. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/NikonCapture.pm +0 -911
  964. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/NikonCustom.pm +0 -3724
  965. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/OOXML.pm +0 -409
  966. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Ogg.pm +0 -237
  967. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Olympus.pm +0 -4027
  968. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/OpenEXR.pm +0 -324
  969. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PDF.pm +0 -1986
  970. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PGF.pm +0 -143
  971. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PICT.pm +0 -1260
  972. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PNG.pm +0 -1100
  973. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PPM.pm +0 -169
  974. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PSP.pm +0 -305
  975. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Panasonic.pm +0 -1852
  976. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PanasonicRaw.pm +0 -383
  977. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Pentax.pm +0 -5044
  978. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PhotoCD.pm +0 -507
  979. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PhotoMechanic.pm +0 -250
  980. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Photoshop.pm +0 -594
  981. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PostScript.pm +0 -691
  982. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/PrintIM.pm +0 -125
  983. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Qualcomm.pm +0 -1344
  984. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/QuickTime.pm +0 -2920
  985. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/README +0 -922
  986. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/RIFF.pm +0 -1278
  987. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/RSRC.pm +0 -240
  988. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/RTF.pm +0 -383
  989. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Radiance.pm +0 -144
  990. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Rawzor.pm +0 -190
  991. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Real.pm +0 -736
  992. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Reconyx.pm +0 -190
  993. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Ricoh.pm +0 -714
  994. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Samsung.pm +0 -764
  995. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Sanyo.pm +0 -439
  996. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Shift.pl +0 -594
  997. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Shortcuts.pm +0 -289
  998. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Sigma.pm +0 -488
  999. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/SigmaRaw.pm +0 -676
  1000. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Sony.pm +0 -3844
  1001. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/SonyIDC.pm +0 -330
  1002. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Stim.pm +0 -196
  1003. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/TagInfoXML.pm +0 -763
  1004. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/TagLookup.pm +0 -7305
  1005. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/TagNames.pod +0 -24147
  1006. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Theora.pm +0 -145
  1007. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Unknown.pm +0 -66
  1008. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Vorbis.pm +0 -221
  1009. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WriteCanonRaw.pl +0 -637
  1010. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WriteExif.pl +0 -3513
  1011. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WriteIPTC.pl +0 -700
  1012. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WritePDF.pl +0 -757
  1013. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WritePNG.pl +0 -329
  1014. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WritePhotoshop.pl +0 -266
  1015. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WritePostScript.pl +0 -776
  1016. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/WriteXMP.pl +0 -1296
  1017. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/Writer.pl +0 -5577
  1018. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/XMP.pm +0 -3589
  1019. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/XMP2.pl +0 -1315
  1020. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/XMPStruct.pl +0 -814
  1021. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/ZIP.pm +0 -623
  1022. data/vendor/Image-ExifTool-8.97/lib/Image/ExifTool/iWork.pm +0 -223
  1023. data/vendor/Image-ExifTool-8.97/perl-Image-ExifTool.spec +0 -103
@@ -0,0 +1,354 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: Fixup.pm
3
+ #
4
+ # Description: Utility to handle pointer fixups
5
+ #
6
+ # Revisions: 01/19/2005 - P. Harvey Created
7
+ # 04/11/2005 - P. Harvey Allow fixups to be tagged with a marker,
8
+ # and add new marker-related routines
9
+ # 06/21/2006 - P. Harvey Patch to work with negative offsets
10
+ # 07/07/2006 - P. Harvey Added support for 16-bit pointers
11
+ # 02/19/2013 - P. Harvey Added IsEmpty()
12
+ #
13
+ # Data Members:
14
+ #
15
+ # Start - Position in data where a zero pointer points to.
16
+ # Shift - Amount to shift offsets (relative to Start).
17
+ # Fixups - List of Fixup object references to to shift relative to this Fixup.
18
+ # Pointers - Hash of references to fixup pointer arrays, keyed by ByteOrder
19
+ # string (with "2" added if pointer is 16-bit [default is 32-bit],
20
+ # plus "_$marker" suffix if tagged with a marker name).
21
+ #------------------------------------------------------------------------------
22
+
23
+ package Image::ExifTool::Fixup;
24
+
25
+ use strict;
26
+ use Image::ExifTool qw(GetByteOrder SetByteOrder Get32u Get32s Set32u
27
+ Get16u Get16s Set16u);
28
+ use vars qw($VERSION);
29
+
30
+ $VERSION = '1.05';
31
+
32
+ sub AddFixup($$;$$);
33
+ sub ApplyFixup($$);
34
+ sub Dump($;$);
35
+
36
+ #------------------------------------------------------------------------------
37
+ # New - create new Fixup object
38
+ # Inputs: 0) reference to Fixup object or Fixup class name
39
+ sub new
40
+ {
41
+ local $_;
42
+ my $that = shift;
43
+ my $class = ref($that) || $that || 'Image::ExifTool::Fixup';
44
+ my $self = bless {}, $class;
45
+
46
+ # initialize required members
47
+ $self->{Start} = 0;
48
+ $self->{Shift} = 0;
49
+
50
+ return $self;
51
+ }
52
+
53
+ #------------------------------------------------------------------------------
54
+ # Clone this object
55
+ # Inputs: 0) reference to Fixup object or Fixup class name
56
+ # Returns: reference to new Fixup object
57
+ sub Clone($)
58
+ {
59
+ my $self = shift;
60
+ my $clone = new Image::ExifTool::Fixup;
61
+ $clone->{Start} = $self->{Start};
62
+ $clone->{Shift} = $self->{Shift};
63
+ my $phash = $self->{Pointers};
64
+ if ($phash) {
65
+ $clone->{Pointers} = { };
66
+ my $byteOrder;
67
+ foreach $byteOrder (keys %$phash) {
68
+ my @pointers = @{$phash->{$byteOrder}};
69
+ $clone->{Pointers}->{$byteOrder} = \@pointers;
70
+ }
71
+ }
72
+ if ($self->{Fixups}) {
73
+ $clone->{Fixups} = [ ];
74
+ my $subFixup;
75
+ foreach $subFixup (@{$self->{Fixups}}) {
76
+ push @{$clone->{Fixups}}, $subFixup->Clone();
77
+ }
78
+ }
79
+ return $clone;
80
+ }
81
+
82
+ #------------------------------------------------------------------------------
83
+ # Add fixup pointer or another fixup object below this one
84
+ # Inputs: 0) Fixup object reference
85
+ # 1) Scalar for pointer offset, or reference to Fixup object
86
+ # 2) Optional marker name for the pointer
87
+ # 3) Optional pointer format ('int16u' or 'int32u', defaults to 'int32u')
88
+ # Notes: Byte ordering must be set properly for the pointer being added (must keep
89
+ # track of the byte order of each offset since MakerNotes may have different byte order!)
90
+ sub AddFixup($$;$$)
91
+ {
92
+ my ($self, $pointer, $marker, $format) = @_;
93
+ if (ref $pointer) {
94
+ $self->{Fixups} or $self->{Fixups} = [ ];
95
+ push @{$self->{Fixups}}, $pointer;
96
+ } else {
97
+ my $byteOrder = GetByteOrder();
98
+ if (defined $format) {
99
+ if ($format eq 'int16u') {
100
+ $byteOrder .= '2';
101
+ } elsif ($format ne 'int32u') {
102
+ warn "Bad Fixup pointer format $format\n";
103
+ }
104
+ }
105
+ $byteOrder .= "_$marker" if defined $marker;
106
+ my $phash = $self->{Pointers};
107
+ $phash or $phash = $self->{Pointers} = { };
108
+ $phash->{$byteOrder} or $phash->{$byteOrder} = [ ];
109
+ push @{$phash->{$byteOrder}}, $pointer;
110
+ }
111
+ }
112
+
113
+ #------------------------------------------------------------------------------
114
+ # fix up pointer offsets
115
+ # Inputs: 0) Fixup object reference, 1) data reference
116
+ # Outputs: Collapses fixup hierarchy into linear lists of fixup pointers
117
+ sub ApplyFixup($$)
118
+ {
119
+ my ($self, $dataPt) = @_;
120
+
121
+ my $start = $self->{Start};
122
+ my $shift = $self->{Shift} + $start; # make shift relative to start
123
+ my $phash = $self->{Pointers};
124
+
125
+ # fix up pointers in this fixup
126
+ if ($phash and ($start or $shift)) {
127
+ my $saveOrder = GetByteOrder(); # save original byte ordering
128
+ my ($byteOrder, $ptr);
129
+ foreach $byteOrder (keys %$phash) {
130
+ SetByteOrder(substr($byteOrder,0,2));
131
+ # apply the fixup offset shift (must get as signed integer
132
+ # to avoid overflow in case it was negative before)
133
+ my ($get, $set) = ($byteOrder =~ /^(II2|MM2)/) ?
134
+ (\&Get16s, \&Set16u) : (\&Get32s, \&Set32u);
135
+ foreach $ptr (@{$phash->{$byteOrder}}) {
136
+ $ptr += $start; # update pointer to new start location
137
+ next unless $shift;
138
+ &$set(&$get($dataPt, $ptr) + $shift, $dataPt, $ptr);
139
+ }
140
+ }
141
+ SetByteOrder($saveOrder); # restore original byte ordering
142
+ }
143
+ # recurse into contained fixups
144
+ if ($self->{Fixups}) {
145
+ # create our pointer hash if it doesn't exist
146
+ $phash or $phash = $self->{Pointers} = { };
147
+ # loop through all contained fixups
148
+ my $subFixup;
149
+ foreach $subFixup (@{$self->{Fixups}}) {
150
+ # adjust the subfixup start and shift
151
+ $subFixup->{Start} += $start;
152
+ $subFixup->{Shift} += $shift - $start;
153
+ # recursively apply contained fixups
154
+ ApplyFixup($subFixup, $dataPt);
155
+ my $shash = $subFixup->{Pointers} or next;
156
+ # add all pointers to our collapsed lists
157
+ my $byteOrder;
158
+ foreach $byteOrder (keys %$shash) {
159
+ $phash->{$byteOrder} or $phash->{$byteOrder} = [ ];
160
+ push @{$phash->{$byteOrder}}, @{$shash->{$byteOrder}};
161
+ delete $shash->{$byteOrder};
162
+ }
163
+ delete $subFixup->{Pointers};
164
+ }
165
+ delete $self->{Fixups}; # remove our contained fixups
166
+ }
167
+ # reset our Start/Shift for the collapsed fixup
168
+ $self->{Start} = $self->{Shift} = 0;
169
+ }
170
+
171
+ #------------------------------------------------------------------------------
172
+ # Is this Fixup empty?
173
+ # Inputs: 0) Fixup object ref
174
+ # Returns: True if there are no offsets to fix
175
+ sub IsEmpty($)
176
+ {
177
+ my $self = shift;
178
+ my $phash = $self->{Pointers};
179
+ if ($phash) {
180
+ my $key;
181
+ foreach $key (keys %$phash) {
182
+ next unless ref $$phash{$key} eq 'ARRAY';
183
+ return 0 if @{$$phash{$key}};
184
+ }
185
+ }
186
+ return 1;
187
+ }
188
+
189
+ #------------------------------------------------------------------------------
190
+ # Does specified marker exist?
191
+ # Inputs: 0) Fixup object reference, 1) marker name
192
+ # Returns: True if fixup contains specified marker name
193
+ sub HasMarker($$)
194
+ {
195
+ my ($self, $marker) = @_;
196
+ my $phash = $self->{Pointers};
197
+ return 0 unless $phash;
198
+ return 1 if grep /_$marker$/, keys %$phash;
199
+ return 0 unless $self->{Fixups};
200
+ my $subFixup;
201
+ foreach $subFixup (@{$self->{Fixups}}) {
202
+ return 1 if $subFixup->HasMarker($marker);
203
+ }
204
+ return 0;
205
+ }
206
+
207
+ #------------------------------------------------------------------------------
208
+ # Set all marker pointers to specified value
209
+ # Inputs: 0) Fixup object reference, 1) data reference
210
+ # 2) marker name, 3) pointer value, 4) offset to start of data
211
+ sub SetMarkerPointers($$$$;$)
212
+ {
213
+ my ($self, $dataPt, $marker, $value, $startOffset) = @_;
214
+ my $start = $self->{Start} + ($startOffset || 0);
215
+ my $phash = $self->{Pointers};
216
+
217
+ if ($phash) {
218
+ my $saveOrder = GetByteOrder(); # save original byte ordering
219
+ my ($byteOrder, $ptr);
220
+ foreach $byteOrder (keys %$phash) {
221
+ next unless $byteOrder =~ /^(II|MM)(2?)_$marker$/;
222
+ SetByteOrder($1);
223
+ my $set = $2 ? \&Set16u : \&Set32u;
224
+ foreach $ptr (@{$phash->{$byteOrder}}) {
225
+ &$set($value, $dataPt, $ptr + $start);
226
+ }
227
+ }
228
+ SetByteOrder($saveOrder); # restore original byte ordering
229
+ }
230
+ if ($self->{Fixups}) {
231
+ my $subFixup;
232
+ foreach $subFixup (@{$self->{Fixups}}) {
233
+ $subFixup->SetMarkerPointers($dataPt, $marker, $value, $start);
234
+ }
235
+ }
236
+ }
237
+
238
+ #------------------------------------------------------------------------------
239
+ # Get pointer values for specified marker
240
+ # Inputs: 0) Fixup object reference, 1) data reference,
241
+ # 2) marker name, 3) offset to start of data
242
+ # Returns: List of marker pointers in list context, or first marker pointer otherwise
243
+ sub GetMarkerPointers($$$;$)
244
+ {
245
+ my ($self, $dataPt, $marker, $startOffset) = @_;
246
+ my $start = $self->{Start} + ($startOffset || 0);
247
+ my $phash = $self->{Pointers};
248
+ my @pointers;
249
+
250
+ if ($phash) {
251
+ my $saveOrder = GetByteOrder();
252
+ my ($byteOrder, $ptr);
253
+ foreach $byteOrder (grep /_$marker$/, keys %$phash) {
254
+ SetByteOrder(substr($byteOrder,0,2));
255
+ my $get = ($byteOrder =~ /^(II2|MM2)/) ? \&Get16u : \&Get32u;
256
+ foreach $ptr (@{$phash->{$byteOrder}}) {
257
+ push @pointers, &$get($dataPt, $ptr + $start);
258
+ }
259
+ }
260
+ SetByteOrder($saveOrder); # restore original byte ordering
261
+ }
262
+ if ($self->{Fixups}) {
263
+ my $subFixup;
264
+ foreach $subFixup (@{$self->{Fixups}}) {
265
+ push @pointers, $subFixup->GetMarkerPointers($dataPt, $marker, $start);
266
+ }
267
+ }
268
+ return @pointers if wantarray;
269
+ return $pointers[0];
270
+ }
271
+
272
+ #------------------------------------------------------------------------------
273
+ # Dump fixup to console for debugging
274
+ # Inputs: 0) Fixup object reference, 1) optional initial indent string
275
+ sub Dump($;$)
276
+ {
277
+ my ($self, $indent) = @_;
278
+ $indent or $indent = '';
279
+ printf "${indent}Fixup start=0x%x shift=0x%x\n", $self->{Start}, $self->{Shift};
280
+ my $phash = $self->{Pointers};
281
+ if ($phash) {
282
+ my $byteOrder;
283
+ foreach $byteOrder (sort keys %$phash) {
284
+ print "$indent $byteOrder: ", join(' ',@{$phash->{$byteOrder}}),"\n";
285
+ }
286
+ }
287
+ if ($self->{Fixups}) {
288
+ my $subFixup;
289
+ foreach $subFixup (@{$self->{Fixups}}) {
290
+ Dump($subFixup, $indent . ' ');
291
+ }
292
+ }
293
+ }
294
+
295
+
296
+ 1; # end
297
+
298
+ __END__
299
+
300
+ =head1 NAME
301
+
302
+ Image::ExifTool::Fixup - Utility to handle pointer fixups
303
+
304
+ =head1 SYNOPSIS
305
+
306
+ use Image::ExifTool::Fixup;
307
+
308
+ $fixup = new Image::ExifTool::Fixup;
309
+
310
+ # add a new fixup to a pointer at the specified offset in data
311
+ $fixup->AddFixup($offset);
312
+
313
+ # add a new Fixup object to the tree
314
+ $fixup->AddFixup($subFixup);
315
+
316
+ $fixup->{Start} += $shift1; # shift pointer offsets and values
317
+
318
+ $fixup->{Shift} += $shift2; # shift pointer values only
319
+
320
+ # recursively apply fixups to the specified data
321
+ $fixup->ApplyFixups(\$data);
322
+
323
+ $fixup->Dump(); # dump debugging information
324
+
325
+ $fixup->IsEmpty(); # return true if no offsets to fix
326
+
327
+ =head1 DESCRIPTION
328
+
329
+ This module contains the code to keep track of pointers in memory and to
330
+ shift these pointers as required. It is used by ExifTool to maintain the
331
+ pointers in image file directories (IFD's).
332
+
333
+ =head1 NOTES
334
+
335
+ Keeps track of pointers with different byte ordering, and relies on
336
+ Image::ExifTool::GetByteOrder() to determine the current byte ordering
337
+ when adding new pointers to a fixup.
338
+
339
+ Maintains a hierarchical list of fixups so that the whole hierarchy can
340
+ be shifted by a simple shift at the base. Hierarchy is collapsed to a
341
+ linear list when ApplyFixups() is called.
342
+
343
+ =head1 AUTHOR
344
+
345
+ Copyright 2003-2013, Phil Harvey (phil at owl.phy.queensu.ca)
346
+
347
+ This library is free software; you can redistribute it and/or modify it
348
+ under the same terms as Perl itself.
349
+
350
+ =head1 SEE ALSO
351
+
352
+ L<Image::ExifTool(3pm)|Image::ExifTool>
353
+
354
+ =cut
@@ -0,0 +1,755 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: Flash.pm
3
+ #
4
+ # Description: Read Shockwave Flash meta information
5
+ #
6
+ # Revisions: 05/16/2006 - P. Harvey Created
7
+ # 06/07/2007 - PH Added support for FLV (Flash Video) files
8
+ # 10/23/2008 - PH Added support for XMP in FLV and SWF
9
+ #
10
+ # References: 1) http://www.the-labs.com/MacromediaFlash/SWF-Spec/SWFfileformat.html
11
+ # 2) http://sswf.sourceforge.net/SWFalexref.html
12
+ # 3) http://osflash.org/flv/
13
+ # 4) http://www.irisa.fr/texmex/people/dufouil/ffmpegdoxy/flv_8h.html
14
+ # 5) http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart3.pdf (Oct 2008)
15
+ # 6) http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v9.pdf
16
+ # 7) http://help.adobe.com/en_US/FlashMediaServer/3.5_Deving/WS5b3ccc516d4fbf351e63e3d11a0773d56e-7ff6.html
17
+ # 8) http://www.adobe.com/devnet/flv/pdf/video_file_format_spec_v10.pdf
18
+ #
19
+ # Notes: I'll add AMF3 support if someone sends me a FLV with AMF3 data
20
+ #------------------------------------------------------------------------------
21
+
22
+ package Image::ExifTool::Flash;
23
+
24
+ use strict;
25
+ use vars qw($VERSION);
26
+ use Image::ExifTool qw(:DataAccess :Utils);
27
+ use Image::ExifTool::FLAC;
28
+
29
+ $VERSION = '1.09';
30
+
31
+ sub ProcessMeta($$$;$);
32
+
33
+ # Meta packets that we process
34
+ my %processMetaPacket = ( onMetaData => 1, onXMPData => 1 );
35
+
36
+ # information extracted from SWF header
37
+ %Image::ExifTool::Flash::Main = (
38
+ GROUPS => { 2 => 'Video' },
39
+ VARS => { ALPHA_FIRST => 1 },
40
+ NOTES => q{
41
+ The information below is extracted from SWF (Shockwave Flash) files. Tags
42
+ with string ID's represent information extracted from the file header.
43
+ },
44
+ FlashVersion => { },
45
+ Compressed => { PrintConv => { 0 => 'False', 1 => 'True' } },
46
+ ImageWidth => { },
47
+ ImageHeight => { },
48
+ FrameRate => { },
49
+ FrameCount => { },
50
+ Duration => {
51
+ Notes => 'calculated from FrameRate and FrameCount',
52
+ PrintConv => 'ConvertDuration($val)',
53
+ },
54
+ 69 => {
55
+ Name => 'FileAttributes',
56
+ PrintConv => { BITMASK => {
57
+ 0 => 'UseNetwork',
58
+ 3 => 'ActionScript3',
59
+ 4 => 'HasMetadata',
60
+ } },
61
+ },
62
+ 77 => {
63
+ Name => 'XMP',
64
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
65
+ },
66
+ );
67
+
68
+ # packets in Flash Video files
69
+ %Image::ExifTool::Flash::FLV = (
70
+ NOTES => q{
71
+ Information is extracted from the following packets in FLV (Flash Video)
72
+ files.
73
+ },
74
+ 0x08 => {
75
+ Name => 'Audio',
76
+ BitMask => 0x04,
77
+ SubDirectory => { TagTable => 'Image::ExifTool::Flash::Audio' },
78
+ },
79
+ 0x09 => {
80
+ Name => 'Video',
81
+ BitMask => 0x01,
82
+ SubDirectory => { TagTable => 'Image::ExifTool::Flash::Video' },
83
+ },
84
+ 0x12 => {
85
+ Name => 'Meta',
86
+ SubDirectory => { TagTable => 'Image::ExifTool::Flash::Meta' },
87
+ },
88
+ );
89
+
90
+ # tags in Flash Video packet header
91
+ %Image::ExifTool::Flash::Audio = (
92
+ PROCESS_PROC => \&Image::ExifTool::FLAC::ProcessBitStream,
93
+ GROUPS => { 2 => 'Audio' },
94
+ NOTES => 'Information extracted from the Flash Audio header.',
95
+ 'Bit0-3' => {
96
+ Name => 'AudioEncoding',
97
+ PrintConv => {
98
+ 0 => 'PCM-BE (uncompressed)', # PCM-BE according to ref 4
99
+ 1 => 'ADPCM',
100
+ 2 => 'MP3',
101
+ 3 => 'PCM-LE (uncompressed)', #4
102
+ 4 => 'Nellymoser 16kHz Mono', #8
103
+ 5 => 'Nellymoser 8kHz Mono',
104
+ 6 => 'Nellymoser',
105
+ 7 => 'G.711 A-law logarithmic PCM', #8
106
+ 8 => 'G.711 mu-law logarithmic PCM', #8
107
+ # (9 is reserved, ref 8)
108
+ 10 => 'AAC', #8
109
+ 11 => 'Speex', #8
110
+ 13 => 'MP3 8-Khz', #8
111
+ 15 => 'Device-specific sound', #8
112
+ },
113
+ },
114
+ 'Bit4-5' => {
115
+ Name => 'AudioSampleRate',
116
+ ValueConv => {
117
+ 0 => 5512,
118
+ 1 => 11025,
119
+ 2 => 22050,
120
+ 3 => 44100,
121
+ },
122
+ },
123
+ 'Bit6' => {
124
+ Name => 'AudioBitsPerSample',
125
+ ValueConv => '8 * ($val + 1)',
126
+ },
127
+ 'Bit7' => {
128
+ Name => 'AudioChannels',
129
+ ValueConv => '$val + 1',
130
+ PrintConv => {
131
+ 1 => '1 (mono)',
132
+ 2 => '2 (stereo)',
133
+ },
134
+ },
135
+ );
136
+
137
+ # tags in Flash Video packet header
138
+ %Image::ExifTool::Flash::Video = (
139
+ PROCESS_PROC => \&Image::ExifTool::FLAC::ProcessBitStream,
140
+ GROUPS => { 2 => 'Video' },
141
+ NOTES => 'Information extracted from the Flash Video header.',
142
+ 'Bit4-7' => {
143
+ Name => 'VideoEncoding',
144
+ PrintConv => {
145
+ 1 => 'JPEG', #8
146
+ 2 => 'Sorensen H.263',
147
+ 3 => 'Screen Video',
148
+ 4 => 'On2 VP6',
149
+ 5 => 'On2 VP6 Alpha', #3
150
+ 6 => 'Screen Video 2', #3
151
+ 7 => 'H.264', #7 (called "AVC" by ref 8)
152
+ },
153
+ },
154
+ );
155
+
156
+ # tags in Flash META packet (in ActionScript Message Format)
157
+ %Image::ExifTool::Flash::Meta = (
158
+ PROCESS_PROC => \&ProcessMeta,
159
+ GROUPS => { 2 => 'Video' },
160
+ NOTES => q{
161
+ Below are a few observed FLV Meta tags, but ExifTool will attempt to extract
162
+ information from any tag found.
163
+ },
164
+ 'audiocodecid' => { Name => 'AudioCodecID', Groups => { 2 => 'Audio' } },
165
+ 'audiodatarate' => {
166
+ Name => 'AudioBitrate',
167
+ Groups => { 2 => 'Audio' },
168
+ ValueConv => '$val * 1000',
169
+ PrintConv => 'ConvertBitrate($val)',
170
+ },
171
+ 'audiodelay' => { Name => 'AudioDelay', Groups => { 2 => 'Audio' } },
172
+ 'audiosamplerate'=>{ Name => 'AudioSampleRate', Groups => { 2 => 'Audio' } },
173
+ 'audiosamplesize'=>{ Name => 'AudioSampleSize', Groups => { 2 => 'Audio' } },
174
+ 'audiosize' => { Name => 'AudioSize', Groups => { 2 => 'Audio' } },
175
+ 'bytelength' => 'ByteLength', # (youtube)
176
+ 'canseekontime' => 'CanSeekOnTime', # (youtube)
177
+ 'canSeekToEnd' => 'CanSeekToEnd',
178
+ 'creationdate' => {
179
+ # (not an AMF date type in my sample)
180
+ Name => 'CreateDate',
181
+ Groups => { 2 => 'Time' },
182
+ ValueConv => '$val=~s/\s+$//; $val', # trim trailing whitespace
183
+ },
184
+ 'createdby' => 'CreatedBy', #7
185
+ 'cuePoints' => {
186
+ Name => 'CuePoint',
187
+ SubDirectory => { TagTable => 'Image::ExifTool::Flash::CuePoint' },
188
+ },
189
+ 'datasize' => 'DataSize',
190
+ 'duration' => {
191
+ Name => 'Duration',
192
+ PrintConv => 'ConvertDuration($val)',
193
+ },
194
+ 'filesize' => 'FileSizeBytes',
195
+ 'framerate' => {
196
+ Name => 'FrameRate',
197
+ PrintConv => 'int($val * 1000 + 0.5) / 1000',
198
+ },
199
+ 'hasAudio' => { Name => 'HasAudio', Groups => { 2 => 'Audio' } },
200
+ 'hasCuePoints' => 'HasCuePoints',
201
+ 'hasKeyframes' => 'HasKeyFrames',
202
+ 'hasMetadata' => 'HasMetadata',
203
+ 'hasVideo' => 'HasVideo',
204
+ 'height' => 'ImageHeight',
205
+ 'httphostheader'=> 'HTTPHostHeader', # (youtube)
206
+ 'keyframesTimes'=> 'KeyFramesTimes',
207
+ 'keyframesFilepositions' => 'KeyFramePositions',
208
+ 'lasttimestamp' => 'LastTimeStamp',
209
+ 'lastkeyframetimestamp' => 'LastKeyFrameTime',
210
+ 'metadatacreator'=>'MetadataCreator',
211
+ 'metadatadate' => {
212
+ Name => 'MetadataDate',
213
+ Groups => { 2 => 'Time' },
214
+ PrintConv => '$self->ConvertDateTime($val)',
215
+ },
216
+ 'purl' => 'URL', # (youtube) (what does P mean?)
217
+ 'pmsg' => 'Message', # (youtube) (what does P mean?)
218
+ 'sourcedata' => 'SourceData', # (youtube)
219
+ 'starttime' => { # (youtube)
220
+ Name => 'StartTime',
221
+ PrintConv => 'ConvertDuration($val)',
222
+ },
223
+ 'stereo' => { Name => 'Stereo', Groups => { 2 => 'Audio' } },
224
+ 'totalduration' => { # (youtube)
225
+ Name => 'TotalDuration',
226
+ PrintConv => 'ConvertDuration($val)',
227
+ },
228
+ 'totaldatarate' => { # (youtube)
229
+ Name => 'TotalDataRate',
230
+ ValueConv => '$val * 1000',
231
+ PrintConv => 'int($val + 0.5)',
232
+ },
233
+ 'totalduration' => 'TotalDuration',
234
+ 'videocodecid' => 'VideoCodecID',
235
+ 'videodatarate' => {
236
+ Name => 'VideoBitrate',
237
+ ValueConv => '$val * 1000',
238
+ PrintConv => 'ConvertBitrate($val)',
239
+ },
240
+ 'videosize' => 'VideoSize',
241
+ 'width' => 'ImageWidth',
242
+ # tags in 'onXMPData' packets
243
+ 'liveXML' => { #5
244
+ Name => 'XMP',
245
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
246
+ },
247
+ );
248
+
249
+ # tags in Flash META CuePoint structure
250
+ %Image::ExifTool::Flash::CuePoint = (
251
+ PROCESS_PROC => \&ProcessMeta,
252
+ GROUPS => { 2 => 'Video' },
253
+ NOTES => q{
254
+ These tag names are added to the CuePoint name to generate complete tag
255
+ names like "CuePoint0Name".
256
+ },
257
+ 'name' => 'Name',
258
+ 'type' => 'Type',
259
+ 'time' => 'Time',
260
+ 'parameters' => {
261
+ Name => 'Parameter',
262
+ SubDirectory => { TagTable => 'Image::ExifTool::Flash::Parameter' },
263
+ },
264
+ );
265
+
266
+ # tags in Flash META CuePoint Parameter structure
267
+ %Image::ExifTool::Flash::Parameter = (
268
+ PROCESS_PROC => \&ProcessMeta,
269
+ GROUPS => { 2 => 'Video' },
270
+ NOTES => q{
271
+ There are no pre-defined parameter tags, but ExifTool will extract any
272
+ existing parameters, with tag names like "CuePoint0ParameterXxx".
273
+ },
274
+ );
275
+
276
+ # name lookup for known AMF data types
277
+ my @amfType = qw(double boolean string object movieClip null undefined reference
278
+ mixedArray objectEnd array date longString unsupported recordSet
279
+ XML typedObject AMF3data);
280
+
281
+ # test for AMF structure types (object, mixed array or typed object)
282
+ my %isStruct = ( 0x03 => 1, 0x08 => 1, 0x10 => 1 );
283
+
284
+ #------------------------------------------------------------------------------
285
+ # Process Flash Video AMF Meta packet (ref 3)
286
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
287
+ # 3) Set to extract single type/value only
288
+ # Returns: 1 on success, (or type/value if extracting single value)
289
+ # Notes: Updates DataPos in dirInfo if extracting single value
290
+ sub ProcessMeta($$$;$)
291
+ {
292
+ my ($exifTool, $dirInfo, $tagTablePtr, $single) = @_;
293
+ my $dataPt = $$dirInfo{DataPt};
294
+ my $dataPos = $$dirInfo{DataPos};
295
+ my $dirLen = $$dirInfo{DirLen} || length($$dataPt);
296
+ my $pos = $$dirInfo{Pos} || 0;
297
+ my ($type, $val, $rec);
298
+
299
+ $exifTool->VerboseDir('Meta') unless $single;
300
+
301
+ Record: for ($rec=0; ; ++$rec) {
302
+ last if $pos >= $dirLen;
303
+ $type = ord(substr($$dataPt, $pos));
304
+ ++$pos;
305
+ if ($type == 0x00 or $type == 0x0b) { # double or date
306
+ last if $pos + 8 > $dirLen;
307
+ $val = GetDouble($dataPt, $pos);
308
+ $pos += 8;
309
+ if ($type == 0x0b) { # date
310
+ $val /= 1000; # convert to seconds
311
+ my $frac = $val - int($val); # fractional seconds
312
+ # get time zone
313
+ last if $pos + 2 > $dirLen;
314
+ my $tz = Get16s($dataPt, $pos);
315
+ $pos += 2;
316
+ # construct date/time string
317
+ $val = Image::ExifTool::ConvertUnixTime(int($val));
318
+ if ($frac) {
319
+ $frac = sprintf('%.6f', $frac);
320
+ $frac =~ s/(^0|0+$)//g;
321
+ $val .= $frac;
322
+ }
323
+ # add timezone
324
+ if ($tz < 0) {
325
+ $val .= '-';
326
+ $tz *= -1;
327
+ } else {
328
+ $val .= '+';
329
+ }
330
+ $val .= sprintf('%.2d:%.2d', int($tz/60), $tz%60);
331
+ }
332
+ } elsif ($type == 0x01) { # boolean
333
+ last if $pos + 1 > $dirLen;
334
+ $val = Get8u($dataPt, $pos);
335
+ $val = { 0 => 'No', 1 => 'Yes' }->{$val} if $val < 2;
336
+ ++$pos;
337
+ } elsif ($type == 0x02) { # string
338
+ last if $pos + 2 > $dirLen;
339
+ my $len = Get16u($dataPt, $pos);
340
+ last if $pos + 2 + $len > $dirLen;
341
+ $val = substr($$dataPt, $pos + 2, $len);
342
+ $pos += 2 + $len;
343
+ } elsif ($isStruct{$type}) { # object, mixed array or typed object
344
+ $exifTool->VPrint(1, " + [$amfType[$type]]\n");
345
+ my $getName;
346
+ $val = ''; # dummy value
347
+ if ($type == 0x08) { # mixed array
348
+ # skip last array index for mixed array
349
+ last if $pos + 4 > $dirLen;
350
+ $pos += 4;
351
+ } elsif ($type == 0x10) { # typed object
352
+ $getName = 1;
353
+ }
354
+ for (;;) {
355
+ # get tag ID (or typed object name)
356
+ last Record if $pos + 2 > $dirLen;
357
+ my $len = Get16u($dataPt, $pos);
358
+ if ($pos + 2 + $len > $dirLen) {
359
+ $exifTool->Warn("Truncated $amfType[$type] record");
360
+ last Record;
361
+ }
362
+ my $tag = substr($$dataPt, $pos + 2, $len);
363
+ $pos += 2 + $len;
364
+ # first string of a typed object is the object name
365
+ if ($getName) {
366
+ $exifTool->VPrint(1," | (object name '$tag')\n");
367
+ undef $getName;
368
+ next; # (ignore name for now)
369
+ }
370
+ my $subTablePtr = $tagTablePtr;
371
+ my $tagInfo = $$subTablePtr{$tag};
372
+ # switch to subdirectory table if necessary
373
+ if ($tagInfo and $$tagInfo{SubDirectory}) {
374
+ my $subTable = $tagInfo->{SubDirectory}->{TagTable};
375
+ # descend into Flash SubDirectory
376
+ if ($subTable =~ /^Image::ExifTool::Flash::/) {
377
+ $tag = $$tagInfo{Name}; # use our name for the tag
378
+ $subTablePtr = GetTagTable($subTable);
379
+ }
380
+ }
381
+ # get object value
382
+ my $valPos = $pos + 1;
383
+ $$dirInfo{Pos} = $pos;
384
+ my $structName = $$dirInfo{StructName};
385
+ # add structure name to start of tag name
386
+ $tag = $structName . ucfirst($tag) if defined $structName;
387
+ $$dirInfo{StructName} = $tag; # set new structure name
388
+ my ($t, $v) = ProcessMeta($exifTool, $dirInfo, $subTablePtr, 1);
389
+ $$dirInfo{StructName} = $structName;# restore original structure name
390
+ $pos = $$dirInfo{Pos}; # update to new position in packet
391
+ # all done if this value contained tags
392
+ last Record unless defined $t and defined $v;
393
+ next if $isStruct{$t}; # already handled tags in sub-structures
394
+ next if ref($v) eq 'ARRAY' and not @$v; # ignore empty arrays
395
+ last if $t == 0x09; # (end of object)
396
+ if (not $$subTablePtr{$tag} and $tag =~ /^\w+$/) {
397
+ AddTagToTable($subTablePtr, $tag, { Name => ucfirst($tag) });
398
+ $exifTool->VPrint(1, " | (adding $tag)\n");
399
+ }
400
+ $exifTool->HandleTag($subTablePtr, $tag, $v,
401
+ DataPt => $dataPt,
402
+ DataPos => $dataPos,
403
+ Start => $valPos,
404
+ Size => $pos - $valPos,
405
+ Format => $amfType[$t] || sprintf('0x%x',$t),
406
+ );
407
+ }
408
+ # } elsif ($type == 0x04) { # movie clip (not supported)
409
+ } elsif ($type == 0x05 or $type == 0x06 or $type == 0x09 or $type == 0x0d) {
410
+ # null, undefined, dirLen of object, or unsupported
411
+ $val = '';
412
+ } elsif ($type == 0x07) { # reference
413
+ last if $pos + 2 > $dirLen;
414
+ $val = Get16u($dataPt, $pos);
415
+ $pos += 2;
416
+ } elsif ($type == 0x0a) { # array
417
+ last if $pos + 4 > $dirLen;
418
+ my $num = Get32u($dataPt, $pos);
419
+ $$dirInfo{Pos} = $pos + 4;
420
+ my ($i, @vals);
421
+ # add array index to compount tag name
422
+ my $structName = $$dirInfo{StructName};
423
+ for ($i=0; $i<$num; ++$i) {
424
+ $$dirInfo{StructName} = $structName . $i if defined $structName;
425
+ my ($t, $v) = ProcessMeta($exifTool, $dirInfo, $tagTablePtr, 1);
426
+ last Record unless defined $v;
427
+ # save value unless contained in a sub-structure
428
+ push @vals, $v unless $isStruct{$t};
429
+ }
430
+ $$dirInfo{StructName} = $structName;
431
+ $pos = $$dirInfo{Pos};
432
+ $val = \@vals;
433
+ } elsif ($type == 0x0c or $type == 0x0f) { # long string or XML
434
+ last if $pos + 4 > $dirLen;
435
+ my $len = Get32u($dataPt, $pos);
436
+ last if $pos + 4 + $len > $dirLen;
437
+ $val = substr($$dataPt, $pos + 4, $len);
438
+ $pos += 4 + $len;
439
+ # } elsif ($type == 0x0e) { # record set (not supported)
440
+ # } elsif ($type == 0x11) { # AMF3 data (can't add support for this without a test sample)
441
+ } else {
442
+ my $t = $amfType[$type] || sprintf('type 0x%x',$type);
443
+ $exifTool->Warn("AMF $t record not yet supported");
444
+ undef $type; # (so we don't print another warning)
445
+ last; # can't continue
446
+ }
447
+ last if $single; # all done if extracting single value
448
+ unless ($isStruct{$type}) {
449
+ # only process certain Meta packets
450
+ if ($type == 0x02 and not $rec) {
451
+ my $verb = $processMetaPacket{$val} ? 'processing' : 'ignoring';
452
+ $exifTool->VPrint(0, " | ($verb $val information)\n");
453
+ last unless $processMetaPacket{$val};
454
+ } else {
455
+ # give verbose indication if we ignore a lone value
456
+ my $t = $amfType[$type] || sprintf('type 0x%x',$type);
457
+ $exifTool->VPrint(1, " | (ignored lone $t value '$val')\n");
458
+ }
459
+ }
460
+ }
461
+ if (not defined $val and defined $type) {
462
+ $exifTool->Warn(sprintf("Truncated AMF record 0x%x",$type));
463
+ }
464
+ return 1 unless $single; # all done
465
+ $$dirInfo{Pos} = $pos; # update position
466
+ return($type,$val); # return single type/value pair
467
+ }
468
+
469
+ #------------------------------------------------------------------------------
470
+ # Read information frame a Flash Video file
471
+ # Inputs: 0) ExifTool object reference, 1) Directory information reference
472
+ # Returns: 1 on success, 0 if this wasn't a valid Flash Video file
473
+ sub ProcessFLV($$)
474
+ {
475
+ my ($exifTool, $dirInfo) = @_;
476
+ my $verbose = $exifTool->Options('Verbose');
477
+ my $raf = $$dirInfo{RAF};
478
+ my $buff;
479
+
480
+ $raf->Read($buff, 9) == 9 or return 0;
481
+ $buff =~ /^FLV\x01/ or return 0;
482
+ SetByteOrder('MM');
483
+ $exifTool->SetFileType();
484
+ my ($flags, $offset) = unpack('x4CN', $buff);
485
+ $raf->Seek($offset-9, 1) or return 1 if $offset > 9;
486
+ $flags &= 0x05; # only look for audio/video
487
+ my $found = 0;
488
+ my $tagTablePtr = GetTagTable('Image::ExifTool::Flash::FLV');
489
+ for (;;) {
490
+ $raf->Read($buff, 15) == 15 or last;
491
+ my $len = unpack('x4N', $buff);
492
+ my $type = $len >> 24;
493
+ $len &= 0x00ffffff;
494
+ my $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $type);
495
+ if ($verbose > 1) {
496
+ my $name = $tagInfo ? $$tagInfo{Name} : "type $type";
497
+ $exifTool->VPrint(1, "FLV $name packet, len $len\n");
498
+ }
499
+ undef $buff;
500
+ if ($tagInfo and $$tagInfo{SubDirectory}) {
501
+ my $mask = $$tagInfo{BitMask};
502
+ if ($mask) {
503
+ # handle audio or video packet
504
+ unless ($found & $mask) {
505
+ $found |= $mask;
506
+ $flags &= ~$mask;
507
+ if ($len>=1 and $raf->Read($buff, 1) == 1) {
508
+ $len -= 1;
509
+ } else {
510
+ $exifTool->Warn("Bad $$tagInfo{Name} packet");
511
+ last;
512
+ }
513
+ }
514
+ } elsif ($raf->Read($buff, $len) == $len) {
515
+ $len = 0;
516
+ } else {
517
+ $exifTool->Warn('Truncated Meta packet');
518
+ last;
519
+ }
520
+ }
521
+ if (defined $buff) {
522
+ $exifTool->HandleTag($tagTablePtr, $type, undef,
523
+ DataPt => \$buff,
524
+ DataPos => $raf->Tell() - length($buff),
525
+ );
526
+ }
527
+ last unless $flags;
528
+ $raf->Seek($len, 1) or last if $len;
529
+ }
530
+ return 1;
531
+ }
532
+
533
+ #------------------------------------------------------------------------------
534
+ # Found a Flash tag
535
+ # Inputs: 0) ExifTool object ref, 1) tag name, 2) tag value
536
+ sub FoundFlashTag($$$)
537
+ {
538
+ my ($exifTool, $tag, $val) = @_;
539
+ $exifTool->HandleTag(\%Image::ExifTool::Flash::Main, $tag, $val);
540
+ }
541
+
542
+ #------------------------------------------------------------------------------
543
+ # Read data from possibly compressed file
544
+ # Inputs: 0) RAF reference, 1) data buffer, 2) bytes to read, 2) compressed flag
545
+ # Returns: number of bytes read (may be greater than requested bytes if compressed)
546
+ # - concatenates data to current buffer
547
+ # - updates compressed flag with reference to inflate object for future calls
548
+ # (or sets to error message and returns zero on error)
549
+ sub ReadCompressed($$$$)
550
+ {
551
+ my ($raf, $len, $inflate) = ($_[0], $_[2], $_[3]);
552
+ my $buff;
553
+ unless ($raf->Read($buff, $len)) {
554
+ $_[3] = 'Error reading file';
555
+ return 0;
556
+ }
557
+ # uncompress if necessary
558
+ if ($inflate) {
559
+ unless (ref $inflate) {
560
+ unless (eval 'require Compress::Zlib') {
561
+ $_[3] = 'Install Compress::Zlib to extract compressed information';
562
+ return 0;
563
+ }
564
+ $inflate = Compress::Zlib::inflateInit();
565
+ unless ($inflate) {
566
+ $_[3] = 'Error initializing inflate for Flash data';
567
+ return 0;
568
+ }
569
+ $_[3] = $inflate; # pass inflate object back to caller
570
+ }
571
+ my $tmp = $buff;
572
+ $buff = '';
573
+ # read 64 more bytes at a time and inflate until we get enough uncompressed data
574
+ for (;;) {
575
+ my ($dat, $stat) = $inflate->inflate($tmp);
576
+ if ($stat == Compress::Zlib::Z_STREAM_END() or
577
+ $stat == Compress::Zlib::Z_OK())
578
+ {
579
+ $buff .= $dat; # add inflated data to buffer
580
+ last if length $buff >= $len or $stat == Compress::Zlib::Z_STREAM_END();
581
+ $raf->Read($tmp,64) or last; # must read a bit more data
582
+ } else {
583
+ $buff = '';
584
+ last;
585
+ }
586
+ }
587
+ $_[3] = 'Error inflating compressed Flash data' unless length $buff;
588
+ }
589
+ $_[1] = defined $_[1] ? $_[1] . $buff : $buff;
590
+ return length $buff;
591
+ }
592
+
593
+ #------------------------------------------------------------------------------
594
+ # Read information frame a Flash file
595
+ # Inputs: 0) ExifTool object reference, 1) Directory information reference
596
+ # Returns: 1 on success, 0 if this wasn't a valid Flash file
597
+ sub ProcessSWF($$)
598
+ {
599
+ my ($exifTool, $dirInfo) = @_;
600
+ my $raf = $$dirInfo{RAF};
601
+ my ($buff, $hasMeta);
602
+
603
+ $raf->Read($buff, 8) == 8 or return 0;
604
+ $buff =~ /^(F|C)WS([^\0])/ or return 0;
605
+ my ($compressed, $vers) = ($1 eq 'C' ? 1 : 0, ord($2));
606
+
607
+ SetByteOrder('II');
608
+ $exifTool->SetFileType();
609
+ GetTagTable('Image::ExifTool::Flash::Main'); # make sure table is initialized
610
+
611
+ FoundFlashTag($exifTool, FlashVersion => $vers);
612
+ FoundFlashTag($exifTool, Compressed => $compressed);
613
+
614
+ # read the next 64 bytes of the file (and inflate if necessary)
615
+ $buff = '';
616
+ unless (ReadCompressed($raf, $buff, 64, $compressed)) {
617
+ $exifTool->Warn($compressed) if $compressed;
618
+ return 1;
619
+ }
620
+
621
+ # unpack elements of bit-packed Flash Rect structure
622
+ my $nBits = unpack('C', $buff) >> 3; # bits in x1,x2,y1,y2 elements
623
+ my $totBits = 5 + $nBits * 4; # total bits in Rect structure
624
+ my $nBytes = int(($totBits + 7) / 8); # byte length of Rect structure
625
+ if (length $buff < $nBytes + 4) {
626
+ $exifTool->Warn('Truncated Flash file');
627
+ return 1;
628
+ }
629
+ my $bits = unpack("B$totBits", $buff);
630
+ # isolate Rect elements and convert from ASCII bit strings to integers
631
+ my @vals = unpack('x5' . "a$nBits" x 4, $bits);
632
+ # (do conversion the hard way because oct("0b$val") requires Perl 5.6)
633
+ map { $_ = unpack('N', pack('B32', '0' x (32 - length $_) . $_)) } @vals;
634
+
635
+ # calculate and store ImageWidth/Height
636
+ FoundFlashTag($exifTool, ImageWidth => ($vals[1] - $vals[0]) / 20);
637
+ FoundFlashTag($exifTool, ImageHeight => ($vals[3] - $vals[2]) / 20);
638
+
639
+ # get frame rate and count
640
+ @vals = unpack("x${nBytes}v2", $buff);
641
+ FoundFlashTag($exifTool, FrameRate => $vals[0] / 256);
642
+ FoundFlashTag($exifTool, FrameCount => $vals[1]);
643
+ FoundFlashTag($exifTool, Duration => $vals[1] * 256 / $vals[0]) if $vals[0];
644
+
645
+ # scan through the tags to find FileAttributes and XMP
646
+ $buff = substr($buff, $nBytes + 4);
647
+ for (;;) {
648
+ my $buffLen = length $buff;
649
+ last if $buffLen < 2;
650
+ my $code = Get16u(\$buff, 0);
651
+ my $pos = 2;
652
+ my $tag = $code >> 6;
653
+ my $size = $code & 0x3f;
654
+ $exifTool->VPrint(1, "SWF tag $tag ($size bytes):\n");
655
+ last unless $tag == 69 or $tag == 77 or $hasMeta;
656
+ # read enough to get a complete short record
657
+ if ($pos + $size > $buffLen) {
658
+ # (read 2 extra bytes if available to get next tag word)
659
+ unless (ReadCompressed($raf, $buff, $size + 2, $compressed)) {
660
+ $exifTool->Warn($compressed) if $compressed;
661
+ return 1;
662
+ }
663
+ $buffLen = length $buff;
664
+ last if $pos + $size > $buffLen;
665
+ }
666
+ # read extended record if necessary
667
+ if ($size == 0x3f) {
668
+ last if $pos + 4 > $buffLen;
669
+ $size = Get32u(\$buff, $pos);
670
+ $pos += 4;
671
+ last if $size > 1000000; # don't read anything huge
672
+ if ($pos + $size > $buffLen) {
673
+ unless (ReadCompressed($raf, $buff, $size + 2, $compressed)) {
674
+ $exifTool->Warn($compressed) if $compressed;
675
+ return 1;
676
+ }
677
+ $buffLen = length $buff;
678
+ last if $pos + $size > $buffLen;
679
+ }
680
+ $exifTool->VPrint(1, " [extended size $size bytes]\n");
681
+ }
682
+ if ($tag == 69) { # FileAttributes
683
+ last unless $size;
684
+ my $flags = Get8u(\$buff, $pos);
685
+ FoundFlashTag($exifTool, $tag => $flags);
686
+ last unless $flags & 0x10; # only continue if we have metadata (XMP)
687
+ $hasMeta = 1;
688
+ } elsif ($tag == 77) { # Metadata
689
+ my $val = substr($buff, $pos, $size);
690
+ FoundFlashTag($exifTool, $tag => $val);
691
+ last;
692
+ }
693
+ last if $pos + 2 > $buffLen;
694
+ $buff = substr($buff, $pos); # remove everything before the next tag
695
+ }
696
+ return 1;
697
+ }
698
+
699
+ 1; # end
700
+
701
+ __END__
702
+
703
+ =head1 NAME
704
+
705
+ Image::ExifTool::Flash - Read Shockwave Flash meta information
706
+
707
+ =head1 SYNOPSIS
708
+
709
+ This module is used by Image::ExifTool
710
+
711
+ =head1 DESCRIPTION
712
+
713
+ This module contains definitions required by Image::ExifTool to read SWF
714
+ (Shockwave Flash) and FLV (Flash Video) files.
715
+
716
+ =head1 NOTES
717
+
718
+ Flash Video AMF3 support has not yet been added because I haven't yet found
719
+ a FLV file containing AMF3 information. If someone sends me a sample then I
720
+ will add AMF3 support.
721
+
722
+ =head1 AUTHOR
723
+
724
+ Copyright 2003-2013, Phil Harvey (phil at owl.phy.queensu.ca)
725
+
726
+ This library is free software; you can redistribute it and/or modify it
727
+ under the same terms as Perl itself.
728
+
729
+ =head1 REFERENCES
730
+
731
+ =over 4
732
+
733
+ =item L<http://www.the-labs.com/MacromediaFlash/SWF-Spec/SWFfileformat.html>
734
+
735
+ =item L<http://sswf.sourceforge.net/SWFalexref.html>
736
+
737
+ =item L<http://osflash.org/flv/>
738
+
739
+ =item L<http://www.irisa.fr/texmex/people/dufouil/ffmpegdoxy/flv_8h.html>
740
+
741
+ =item L<http://help.adobe.com/en_US/FlashMediaServer/3.5_Deving/WS5b3ccc516d4fbf351e63e3d11a0773d56e-7ff6.html>
742
+
743
+ =item L<http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v9.pdf>
744
+
745
+ =item L<http://www.adobe.com/devnet/flv/pdf/video_file_format_spec_v10.pdf>
746
+
747
+ =back
748
+
749
+ =head1 SEE ALSO
750
+
751
+ L<Image::ExifTool::TagNames/Flash Tags>,
752
+ L<Image::ExifTool(3pm)|Image::ExifTool>
753
+
754
+ =cut
755
+