gosu 0.7.16 → 0.7.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (938) hide show
  1. data/Gosu/Version.hpp +2 -2
  2. data/GosuImpl/AudioFmod.cpp +7 -1
  3. data/GosuImpl/RubyGosuStub.mm +4 -1
  4. data/GosuImpl/RubyGosu_wrap.cxx +2 -2
  5. data/GosuImpl/TimingUnix.cpp +4 -1
  6. data/GosuImpl/TimingWin.cpp +31 -28
  7. data/GosuImpl/WindowWin.cpp +4 -0
  8. data/Rakefile +12 -18
  9. data/examples/ChipmunkIntegration.rb +1 -1
  10. data/examples/OpenGLIntegration.rb +1 -1
  11. data/examples/RMagickIntegration.rb +1 -1
  12. data/examples/Tutorial.cpp +2 -2
  13. data/examples/Tutorial.rb +1 -1
  14. data/lib/gosu/patches.rb +2 -2
  15. data/reference/cpp/_version_8hpp.html +4 -4
  16. data/reference/cpp/_version_8hpp_source.html +2 -2
  17. data/reference/rdoc/classes/Gosu.html +10 -10
  18. data/reference/rdoc/classes/Gosu/Color.html +3 -3
  19. data/reference/rdoc/classes/Gosu/Font.html +5 -5
  20. data/reference/rdoc/classes/Gosu/Image.html +9 -9
  21. data/reference/rdoc/classes/Gosu/Sample.html +3 -3
  22. data/reference/rdoc/classes/Gosu/SampleInstance.html +5 -5
  23. data/reference/rdoc/classes/Gosu/Song.html +7 -7
  24. data/reference/rdoc/classes/Gosu/TextInput.html +1 -1
  25. data/reference/rdoc/classes/Gosu/Window.html +17 -17
  26. data/reference/rdoc/classes/Numeric.html +2 -2
  27. data/reference/rdoc/created.rid +1 -1
  28. metadata +2 -912
  29. data/dependencies/libogg/AUTHORS +0 -4
  30. data/dependencies/libogg/CHANGES +0 -33
  31. data/dependencies/libogg/COPYING +0 -28
  32. data/dependencies/libogg/Makefile.am +0 -32
  33. data/dependencies/libogg/Makefile.in +0 -713
  34. data/dependencies/libogg/README +0 -103
  35. data/dependencies/libogg/aclocal.m4 +0 -6807
  36. data/dependencies/libogg/compile +0 -142
  37. data/dependencies/libogg/config.guess +0 -1465
  38. data/dependencies/libogg/config.h.in +0 -70
  39. data/dependencies/libogg/config.sub +0 -1569
  40. data/dependencies/libogg/configure +0 -23018
  41. data/dependencies/libogg/configure.in +0 -301
  42. data/dependencies/libogg/debian/changelog +0 -68
  43. data/dependencies/libogg/debian/control +0 -22
  44. data/dependencies/libogg/debian/copyright +0 -37
  45. data/dependencies/libogg/debian/libogg-dev.docs +0 -1
  46. data/dependencies/libogg/debian/libogg-dev.install +0 -8
  47. data/dependencies/libogg/debian/libogg0.README.Debian +0 -6
  48. data/dependencies/libogg/debian/libogg0.install +0 -1
  49. data/dependencies/libogg/debian/rules +0 -154
  50. data/dependencies/libogg/debian/watch +0 -3
  51. data/dependencies/libogg/depcomp +0 -529
  52. data/dependencies/libogg/doc/Makefile.am +0 -11
  53. data/dependencies/libogg/doc/Makefile.in +0 -518
  54. data/dependencies/libogg/doc/framing.html +0 -431
  55. data/dependencies/libogg/doc/index.html +0 -104
  56. data/dependencies/libogg/doc/libogg/Makefile.am +0 -28
  57. data/dependencies/libogg/doc/libogg/Makefile.in +0 -378
  58. data/dependencies/libogg/doc/libogg/bitpacking.html +0 -99
  59. data/dependencies/libogg/doc/libogg/datastructures.html +0 -59
  60. data/dependencies/libogg/doc/libogg/decoding.html +0 -100
  61. data/dependencies/libogg/doc/libogg/encoding.html +0 -64
  62. data/dependencies/libogg/doc/libogg/general.html +0 -105
  63. data/dependencies/libogg/doc/libogg/index.html +0 -39
  64. data/dependencies/libogg/doc/libogg/ogg_packet.html +0 -75
  65. data/dependencies/libogg/doc/libogg/ogg_packet_clear.html +0 -62
  66. data/dependencies/libogg/doc/libogg/ogg_page.html +0 -74
  67. data/dependencies/libogg/doc/libogg/ogg_page_bos.html +0 -65
  68. data/dependencies/libogg/doc/libogg/ogg_page_checksum_set.html +0 -62
  69. data/dependencies/libogg/doc/libogg/ogg_page_continued.html +0 -64
  70. data/dependencies/libogg/doc/libogg/ogg_page_eos.html +0 -65
  71. data/dependencies/libogg/doc/libogg/ogg_page_granulepos.html +0 -65
  72. data/dependencies/libogg/doc/libogg/ogg_page_packets.html +0 -75
  73. data/dependencies/libogg/doc/libogg/ogg_page_pageno.html +0 -63
  74. data/dependencies/libogg/doc/libogg/ogg_page_serialno.html +0 -63
  75. data/dependencies/libogg/doc/libogg/ogg_page_version.html +0 -63
  76. data/dependencies/libogg/doc/libogg/ogg_stream_clear.html +0 -61
  77. data/dependencies/libogg/doc/libogg/ogg_stream_destroy.html +0 -62
  78. data/dependencies/libogg/doc/libogg/ogg_stream_eos.html +0 -62
  79. data/dependencies/libogg/doc/libogg/ogg_stream_flush.html +0 -67
  80. data/dependencies/libogg/doc/libogg/ogg_stream_init.html +0 -66
  81. data/dependencies/libogg/doc/libogg/ogg_stream_packetin.html +0 -65
  82. data/dependencies/libogg/doc/libogg/ogg_stream_packetout.html +0 -71
  83. data/dependencies/libogg/doc/libogg/ogg_stream_packetpeek.html +0 -85
  84. data/dependencies/libogg/doc/libogg/ogg_stream_pagein.html +0 -67
  85. data/dependencies/libogg/doc/libogg/ogg_stream_pageout.html +0 -66
  86. data/dependencies/libogg/doc/libogg/ogg_stream_reset.html +0 -61
  87. data/dependencies/libogg/doc/libogg/ogg_stream_reset_serialno.html +0 -67
  88. data/dependencies/libogg/doc/libogg/ogg_stream_state.html +0 -121
  89. data/dependencies/libogg/doc/libogg/ogg_sync_buffer.html +0 -67
  90. data/dependencies/libogg/doc/libogg/ogg_sync_clear.html +0 -62
  91. data/dependencies/libogg/doc/libogg/ogg_sync_destroy.html +0 -62
  92. data/dependencies/libogg/doc/libogg/ogg_sync_init.html +0 -63
  93. data/dependencies/libogg/doc/libogg/ogg_sync_pageout.html +0 -79
  94. data/dependencies/libogg/doc/libogg/ogg_sync_pageseek.html +0 -68
  95. data/dependencies/libogg/doc/libogg/ogg_sync_reset.html +0 -63
  96. data/dependencies/libogg/doc/libogg/ogg_sync_state.html +0 -67
  97. data/dependencies/libogg/doc/libogg/ogg_sync_wrote.html +0 -73
  98. data/dependencies/libogg/doc/libogg/oggpack_adv.html +0 -64
  99. data/dependencies/libogg/doc/libogg/oggpack_adv1.html +0 -62
  100. data/dependencies/libogg/doc/libogg/oggpack_bits.html +0 -62
  101. data/dependencies/libogg/doc/libogg/oggpack_buffer.html +0 -66
  102. data/dependencies/libogg/doc/libogg/oggpack_bytes.html +0 -62
  103. data/dependencies/libogg/doc/libogg/oggpack_get_buffer.html +0 -62
  104. data/dependencies/libogg/doc/libogg/oggpack_look.html +0 -66
  105. data/dependencies/libogg/doc/libogg/oggpack_look1.html +0 -63
  106. data/dependencies/libogg/doc/libogg/oggpack_read.html +0 -65
  107. data/dependencies/libogg/doc/libogg/oggpack_read1.html +0 -63
  108. data/dependencies/libogg/doc/libogg/oggpack_readinit.html +0 -64
  109. data/dependencies/libogg/doc/libogg/oggpack_reset.html +0 -62
  110. data/dependencies/libogg/doc/libogg/oggpack_write.html +0 -68
  111. data/dependencies/libogg/doc/libogg/oggpack_writealign.html +0 -65
  112. data/dependencies/libogg/doc/libogg/oggpack_writeclear.html +0 -62
  113. data/dependencies/libogg/doc/libogg/oggpack_writecopy.html +0 -69
  114. data/dependencies/libogg/doc/libogg/oggpack_writeinit.html +0 -62
  115. data/dependencies/libogg/doc/libogg/oggpack_writetrunc.html +0 -65
  116. data/dependencies/libogg/doc/libogg/overview.html +0 -44
  117. data/dependencies/libogg/doc/libogg/reference.html +0 -93
  118. data/dependencies/libogg/doc/libogg/style.css +0 -7
  119. data/dependencies/libogg/doc/libogg/vorbis_comment.html +0 -70
  120. data/dependencies/libogg/doc/libogg/vorbis_info.html +0 -80
  121. data/dependencies/libogg/doc/ogg-multiplex.html +0 -445
  122. data/dependencies/libogg/doc/oggstream.html +0 -234
  123. data/dependencies/libogg/doc/rfc3533.txt +0 -843
  124. data/dependencies/libogg/doc/rfc3534.txt +0 -339
  125. data/dependencies/libogg/doc/stream.png +0 -0
  126. data/dependencies/libogg/doc/vorbisword2.png +0 -0
  127. data/dependencies/libogg/doc/white-ogg.png +0 -0
  128. data/dependencies/libogg/doc/white-xifish.png +0 -0
  129. data/dependencies/libogg/include/Makefile.am +0 -3
  130. data/dependencies/libogg/include/Makefile.in +0 -481
  131. data/dependencies/libogg/include/ogg/Makefile.am +0 -6
  132. data/dependencies/libogg/include/ogg/Makefile.in +0 -428
  133. data/dependencies/libogg/include/ogg/config_types.h.in +0 -11
  134. data/dependencies/libogg/include/ogg/ogg.h +0 -202
  135. data/dependencies/libogg/include/ogg/os_types.h +0 -127
  136. data/dependencies/libogg/install-sh +0 -323
  137. data/dependencies/libogg/libogg.spec +0 -106
  138. data/dependencies/libogg/libogg.spec.in +0 -106
  139. data/dependencies/libogg/ltmain.sh +0 -6426
  140. data/dependencies/libogg/macos/compat/strdup.c +0 -21
  141. data/dependencies/libogg/macos/compat/sys/types.h +0 -1
  142. data/dependencies/libogg/macos/libogg.mcp +0 -0
  143. data/dependencies/libogg/macos/libogg.mcp.exp +0 -64
  144. data/dependencies/libogg/macosx/English.lproj/InfoPlist.strings +0 -0
  145. data/dependencies/libogg/macosx/Info.plist +0 -30
  146. data/dependencies/libogg/macosx/Ogg.xcodeproj/project.pbxproj +0 -303
  147. data/dependencies/libogg/macosx/Ogg_Prefix.pch +0 -5
  148. data/dependencies/libogg/missing +0 -357
  149. data/dependencies/libogg/ogg-uninstalled.pc.in +0 -14
  150. data/dependencies/libogg/ogg.m4 +0 -102
  151. data/dependencies/libogg/ogg.pc.in +0 -14
  152. data/dependencies/libogg/src/Makefile.am +0 -28
  153. data/dependencies/libogg/src/Makefile.in +0 -536
  154. data/dependencies/libogg/src/bitwise.c +0 -784
  155. data/dependencies/libogg/src/framing.c +0 -1800
  156. data/dependencies/libogg/win32/Makefile.am +0 -5
  157. data/dependencies/libogg/win32/Makefile.in +0 -327
  158. data/dependencies/libogg/win32/build_ogg_dynamic.bat +0 -18
  159. data/dependencies/libogg/win32/build_ogg_dynamic_debug.bat +0 -18
  160. data/dependencies/libogg/win32/build_ogg_static.bat +0 -18
  161. data/dependencies/libogg/win32/build_ogg_static_debug.bat +0 -18
  162. data/dependencies/libogg/win32/ogg.def +0 -78
  163. data/dependencies/libogg/win32/ogg.dsw +0 -41
  164. data/dependencies/libogg/win32/ogg_dynamic.dsp +0 -128
  165. data/dependencies/libogg/win32/ogg_static.dsp +0 -108
  166. data/dependencies/libpng/ANNOUNCE +0 -61
  167. data/dependencies/libpng/CHANGES +0 -2173
  168. data/dependencies/libpng/INSTALL +0 -199
  169. data/dependencies/libpng/KNOWNBUG +0 -22
  170. data/dependencies/libpng/LICENSE +0 -109
  171. data/dependencies/libpng/README +0 -264
  172. data/dependencies/libpng/TODO +0 -24
  173. data/dependencies/libpng/Y2KINFO +0 -55
  174. data/dependencies/libpng/configure +0 -13
  175. data/dependencies/libpng/contrib/gregbook/COPYING +0 -340
  176. data/dependencies/libpng/contrib/gregbook/LICENSE +0 -50
  177. data/dependencies/libpng/contrib/gregbook/Makefile.mingw32 +0 -130
  178. data/dependencies/libpng/contrib/gregbook/Makefile.sgi +0 -104
  179. data/dependencies/libpng/contrib/gregbook/Makefile.unx +0 -132
  180. data/dependencies/libpng/contrib/gregbook/Makefile.w32 +0 -113
  181. data/dependencies/libpng/contrib/gregbook/README +0 -186
  182. data/dependencies/libpng/contrib/gregbook/makevms.com +0 -132
  183. data/dependencies/libpng/contrib/gregbook/readpng.c +0 -304
  184. data/dependencies/libpng/contrib/gregbook/readpng.h +0 -88
  185. data/dependencies/libpng/contrib/gregbook/readpng2.c +0 -645
  186. data/dependencies/libpng/contrib/gregbook/readpng2.h +0 -121
  187. data/dependencies/libpng/contrib/gregbook/readppm.c +0 -179
  188. data/dependencies/libpng/contrib/gregbook/rpng-win.c +0 -684
  189. data/dependencies/libpng/contrib/gregbook/rpng-x.c +0 -904
  190. data/dependencies/libpng/contrib/gregbook/rpng2-win.c +0 -1225
  191. data/dependencies/libpng/contrib/gregbook/rpng2-x.c +0 -2127
  192. data/dependencies/libpng/contrib/gregbook/toucan.png +0 -0
  193. data/dependencies/libpng/contrib/gregbook/wpng.c +0 -853
  194. data/dependencies/libpng/contrib/gregbook/writepng.c +0 -392
  195. data/dependencies/libpng/contrib/gregbook/writepng.h +0 -133
  196. data/dependencies/libpng/contrib/pngminim/decoder/README +0 -6
  197. data/dependencies/libpng/contrib/pngminim/decoder/gather.sh +0 -8
  198. data/dependencies/libpng/contrib/pngminim/decoder/makefile.std +0 -44
  199. data/dependencies/libpng/contrib/pngminim/decoder/pngusr.h +0 -67
  200. data/dependencies/libpng/contrib/pngminim/encoder/README +0 -6
  201. data/dependencies/libpng/contrib/pngminim/encoder/dummy_inflate.c +0 -27
  202. data/dependencies/libpng/contrib/pngminim/encoder/gather.sh +0 -9
  203. data/dependencies/libpng/contrib/pngminim/encoder/makefile.std +0 -43
  204. data/dependencies/libpng/contrib/pngminim/encoder/pngusr.h +0 -66
  205. data/dependencies/libpng/contrib/pngminus/README +0 -153
  206. data/dependencies/libpng/contrib/pngminus/makefile.std +0 -65
  207. data/dependencies/libpng/contrib/pngminus/makefile.tc3 +0 -38
  208. data/dependencies/libpng/contrib/pngminus/makevms.com +0 -92
  209. data/dependencies/libpng/contrib/pngminus/png2pnm.bat +0 -41
  210. data/dependencies/libpng/contrib/pngminus/png2pnm.c +0 -430
  211. data/dependencies/libpng/contrib/pngminus/png2pnm.sh +0 -42
  212. data/dependencies/libpng/contrib/pngminus/pngminus.bat +0 -4
  213. data/dependencies/libpng/contrib/pngminus/pngminus.sh +0 -5
  214. data/dependencies/libpng/contrib/pngminus/pnm2png.bat +0 -41
  215. data/dependencies/libpng/contrib/pngminus/pnm2png.c +0 -533
  216. data/dependencies/libpng/contrib/pngminus/pnm2png.sh +0 -42
  217. data/dependencies/libpng/contrib/pngsuite/basn0g01.png +0 -0
  218. data/dependencies/libpng/contrib/pngsuite/basn0g02.png +0 -0
  219. data/dependencies/libpng/contrib/pngsuite/basn0g04.png +0 -0
  220. data/dependencies/libpng/contrib/pngsuite/basn0g08.png +0 -0
  221. data/dependencies/libpng/contrib/pngsuite/basn0g16.png +0 -0
  222. data/dependencies/libpng/contrib/pngsuite/basn2c08.png +0 -0
  223. data/dependencies/libpng/contrib/pngsuite/basn2c16.png +0 -0
  224. data/dependencies/libpng/contrib/pngsuite/basn3p01.png +0 -0
  225. data/dependencies/libpng/contrib/pngsuite/basn3p02.png +0 -0
  226. data/dependencies/libpng/contrib/pngsuite/basn3p04.png +0 -0
  227. data/dependencies/libpng/contrib/pngsuite/basn3p08.png +0 -0
  228. data/dependencies/libpng/contrib/pngsuite/basn4a08.png +0 -0
  229. data/dependencies/libpng/contrib/pngsuite/basn4a16.png +0 -0
  230. data/dependencies/libpng/contrib/pngsuite/basn6a08.png +0 -0
  231. data/dependencies/libpng/contrib/pngsuite/basn6a16.png +0 -0
  232. data/dependencies/libpng/contrib/visupng/PngFile.c +0 -439
  233. data/dependencies/libpng/contrib/visupng/PngFile.h +0 -27
  234. data/dependencies/libpng/contrib/visupng/README.txt +0 -58
  235. data/dependencies/libpng/contrib/visupng/VisualPng.c +0 -961
  236. data/dependencies/libpng/contrib/visupng/VisualPng.dsp +0 -147
  237. data/dependencies/libpng/contrib/visupng/VisualPng.dsw +0 -29
  238. data/dependencies/libpng/contrib/visupng/VisualPng.ico +0 -0
  239. data/dependencies/libpng/contrib/visupng/VisualPng.png +0 -0
  240. data/dependencies/libpng/contrib/visupng/VisualPng.rc +0 -152
  241. data/dependencies/libpng/contrib/visupng/cexcept.h +0 -243
  242. data/dependencies/libpng/contrib/visupng/resource.h +0 -23
  243. data/dependencies/libpng/example.c +0 -814
  244. data/dependencies/libpng/libpng-1.2.29.txt +0 -2906
  245. data/dependencies/libpng/libpng.3 +0 -3680
  246. data/dependencies/libpng/libpngpf.3 +0 -274
  247. data/dependencies/libpng/png.5 +0 -74
  248. data/dependencies/libpng/png.c +0 -798
  249. data/dependencies/libpng/png.h +0 -3569
  250. data/dependencies/libpng/pngbar.jpg +0 -0
  251. data/dependencies/libpng/pngbar.png +0 -0
  252. data/dependencies/libpng/pngconf.h +0 -1481
  253. data/dependencies/libpng/pngerror.c +0 -343
  254. data/dependencies/libpng/pnggccrd.c +0 -103
  255. data/dependencies/libpng/pngget.c +0 -901
  256. data/dependencies/libpng/pngmem.c +0 -608
  257. data/dependencies/libpng/pngnow.png +0 -0
  258. data/dependencies/libpng/pngpread.c +0 -1598
  259. data/dependencies/libpng/pngread.c +0 -1479
  260. data/dependencies/libpng/pngrio.c +0 -167
  261. data/dependencies/libpng/pngrtran.c +0 -4292
  262. data/dependencies/libpng/pngrutil.c +0 -3183
  263. data/dependencies/libpng/pngset.c +0 -1268
  264. data/dependencies/libpng/pngtest.c +0 -1563
  265. data/dependencies/libpng/pngtest.png +0 -0
  266. data/dependencies/libpng/pngtrans.c +0 -662
  267. data/dependencies/libpng/pngvcrd.c +0 -1
  268. data/dependencies/libpng/pngwio.c +0 -234
  269. data/dependencies/libpng/pngwrite.c +0 -1532
  270. data/dependencies/libpng/pngwtran.c +0 -572
  271. data/dependencies/libpng/pngwutil.c +0 -2802
  272. data/dependencies/libpng/projects/beos/x86-shared.proj +0 -0
  273. data/dependencies/libpng/projects/beos/x86-shared.txt +0 -22
  274. data/dependencies/libpng/projects/beos/x86-static.proj +0 -0
  275. data/dependencies/libpng/projects/beos/x86-static.txt +0 -22
  276. data/dependencies/libpng/projects/cbuilder5/libpng.bpf +0 -22
  277. data/dependencies/libpng/projects/cbuilder5/libpng.bpg +0 -25
  278. data/dependencies/libpng/projects/cbuilder5/libpng.bpr +0 -157
  279. data/dependencies/libpng/projects/cbuilder5/libpng.cpp +0 -29
  280. data/dependencies/libpng/projects/cbuilder5/libpng.readme.txt +0 -25
  281. data/dependencies/libpng/projects/cbuilder5/libpngstat.bpf +0 -22
  282. data/dependencies/libpng/projects/cbuilder5/libpngstat.bpr +0 -109
  283. data/dependencies/libpng/projects/cbuilder5/zlib.readme.txt +0 -14
  284. data/dependencies/libpng/projects/netware.txt +0 -6
  285. data/dependencies/libpng/projects/visualc6/README.txt +0 -57
  286. data/dependencies/libpng/projects/visualc6/libpng.dsp +0 -472
  287. data/dependencies/libpng/projects/visualc6/libpng.dsw +0 -59
  288. data/dependencies/libpng/projects/visualc6/pngtest.dsp +0 -314
  289. data/dependencies/libpng/projects/visualc71/PRJ0041.mak +0 -21
  290. data/dependencies/libpng/projects/visualc71/README.txt +0 -57
  291. data/dependencies/libpng/projects/visualc71/README_zlib.txt +0 -44
  292. data/dependencies/libpng/projects/visualc71/libpng.sln +0 -88
  293. data/dependencies/libpng/projects/visualc71/libpng.vcproj +0 -702
  294. data/dependencies/libpng/projects/visualc71/pngtest.vcproj +0 -459
  295. data/dependencies/libpng/projects/visualc71/zlib.vcproj +0 -670
  296. data/dependencies/libpng/projects/wince.txt +0 -6
  297. data/dependencies/libpng/scripts/CMakeLists.txt +0 -210
  298. data/dependencies/libpng/scripts/SCOPTIONS.ppc +0 -7
  299. data/dependencies/libpng/scripts/descrip.mms +0 -52
  300. data/dependencies/libpng/scripts/libpng-config-body.in +0 -96
  301. data/dependencies/libpng/scripts/libpng-config-head.in +0 -21
  302. data/dependencies/libpng/scripts/libpng-config.in +0 -124
  303. data/dependencies/libpng/scripts/libpng.icc +0 -44
  304. data/dependencies/libpng/scripts/libpng.pc-configure.in +0 -10
  305. data/dependencies/libpng/scripts/libpng.pc.in +0 -10
  306. data/dependencies/libpng/scripts/makefile.32sunu +0 -254
  307. data/dependencies/libpng/scripts/makefile.64sunu +0 -254
  308. data/dependencies/libpng/scripts/makefile.acorn +0 -51
  309. data/dependencies/libpng/scripts/makefile.aix +0 -113
  310. data/dependencies/libpng/scripts/makefile.amiga +0 -48
  311. data/dependencies/libpng/scripts/makefile.atari +0 -51
  312. data/dependencies/libpng/scripts/makefile.bc32 +0 -152
  313. data/dependencies/libpng/scripts/makefile.beos +0 -226
  314. data/dependencies/libpng/scripts/makefile.bor +0 -162
  315. data/dependencies/libpng/scripts/makefile.cygwin +0 -299
  316. data/dependencies/libpng/scripts/makefile.darwin +0 -234
  317. data/dependencies/libpng/scripts/makefile.dec +0 -214
  318. data/dependencies/libpng/scripts/makefile.dj2 +0 -55
  319. data/dependencies/libpng/scripts/makefile.elf +0 -275
  320. data/dependencies/libpng/scripts/makefile.freebsd +0 -48
  321. data/dependencies/libpng/scripts/makefile.gcc +0 -79
  322. data/dependencies/libpng/scripts/makefile.gcmmx +0 -271
  323. data/dependencies/libpng/scripts/makefile.hp64 +0 -235
  324. data/dependencies/libpng/scripts/makefile.hpgcc +0 -245
  325. data/dependencies/libpng/scripts/makefile.hpux +0 -232
  326. data/dependencies/libpng/scripts/makefile.ibmc +0 -71
  327. data/dependencies/libpng/scripts/makefile.intel +0 -102
  328. data/dependencies/libpng/scripts/makefile.knr +0 -99
  329. data/dependencies/libpng/scripts/makefile.linux +0 -249
  330. data/dependencies/libpng/scripts/makefile.mingw +0 -289
  331. data/dependencies/libpng/scripts/makefile.mips +0 -83
  332. data/dependencies/libpng/scripts/makefile.msc +0 -86
  333. data/dependencies/libpng/scripts/makefile.ne12bsd +0 -45
  334. data/dependencies/libpng/scripts/makefile.netbsd +0 -45
  335. data/dependencies/libpng/scripts/makefile.nommx +0 -252
  336. data/dependencies/libpng/scripts/makefile.openbsd +0 -73
  337. data/dependencies/libpng/scripts/makefile.os2 +0 -69
  338. data/dependencies/libpng/scripts/makefile.sco +0 -229
  339. data/dependencies/libpng/scripts/makefile.sggcc +0 -242
  340. data/dependencies/libpng/scripts/makefile.sgi +0 -245
  341. data/dependencies/libpng/scripts/makefile.so9 +0 -251
  342. data/dependencies/libpng/scripts/makefile.solaris +0 -249
  343. data/dependencies/libpng/scripts/makefile.solaris-x86 +0 -248
  344. data/dependencies/libpng/scripts/makefile.std +0 -92
  345. data/dependencies/libpng/scripts/makefile.sunos +0 -97
  346. data/dependencies/libpng/scripts/makefile.tc3 +0 -89
  347. data/dependencies/libpng/scripts/makefile.vcawin32 +0 -99
  348. data/dependencies/libpng/scripts/makefile.vcwin32 +0 -99
  349. data/dependencies/libpng/scripts/makefile.watcom +0 -109
  350. data/dependencies/libpng/scripts/makevms.com +0 -144
  351. data/dependencies/libpng/scripts/pngos2.def +0 -257
  352. data/dependencies/libpng/scripts/pngw32.def +0 -238
  353. data/dependencies/libpng/scripts/pngw32.rc +0 -112
  354. data/dependencies/libpng/scripts/smakefile.ppc +0 -30
  355. data/dependencies/libvorbis/AUTHORS +0 -3
  356. data/dependencies/libvorbis/CHANGES +0 -48
  357. data/dependencies/libvorbis/COPYING +0 -28
  358. data/dependencies/libvorbis/Makefile.am +0 -41
  359. data/dependencies/libvorbis/Makefile.in +0 -759
  360. data/dependencies/libvorbis/README +0 -132
  361. data/dependencies/libvorbis/acinclude.m4 +0 -161
  362. data/dependencies/libvorbis/aclocal.m4 +0 -7273
  363. data/dependencies/libvorbis/autogen.sh +0 -127
  364. data/dependencies/libvorbis/config.guess +0 -1500
  365. data/dependencies/libvorbis/config.h.in +0 -78
  366. data/dependencies/libvorbis/config.sub +0 -1616
  367. data/dependencies/libvorbis/configure +0 -22114
  368. data/dependencies/libvorbis/configure.in +0 -246
  369. data/dependencies/libvorbis/depcomp +0 -584
  370. data/dependencies/libvorbis/doc/Makefile +0 -665
  371. data/dependencies/libvorbis/doc/Makefile.am +0 -137
  372. data/dependencies/libvorbis/doc/Makefile.in +0 -665
  373. data/dependencies/libvorbis/doc/Vorbis_I_spec.html +0 -2292
  374. data/dependencies/libvorbis/doc/Vorbis_I_spec.pdf +0 -0
  375. data/dependencies/libvorbis/doc/components.png +0 -0
  376. data/dependencies/libvorbis/doc/draft-ietf-avt-rtp-vorbis-06.txt +0 -1401
  377. data/dependencies/libvorbis/doc/draft-ietf-avt-rtp-vorbis-06.xml +0 -1388
  378. data/dependencies/libvorbis/doc/eightphase.png +0 -0
  379. data/dependencies/libvorbis/doc/evenlsp.png +0 -0
  380. data/dependencies/libvorbis/doc/fish_xiph_org.png +0 -0
  381. data/dependencies/libvorbis/doc/floor1-1.png +0 -0
  382. data/dependencies/libvorbis/doc/floor1-2.png +0 -0
  383. data/dependencies/libvorbis/doc/floor1-3.png +0 -0
  384. data/dependencies/libvorbis/doc/floor1-4.png +0 -0
  385. data/dependencies/libvorbis/doc/floor1_inverse_dB_table.html +0 -154
  386. data/dependencies/libvorbis/doc/floorval.png +0 -0
  387. data/dependencies/libvorbis/doc/fourphase.png +0 -0
  388. data/dependencies/libvorbis/doc/framing.html +0 -431
  389. data/dependencies/libvorbis/doc/helper.html +0 -239
  390. data/dependencies/libvorbis/doc/hufftree-under.png +0 -0
  391. data/dependencies/libvorbis/doc/hufftree.png +0 -0
  392. data/dependencies/libvorbis/doc/index.html +0 -114
  393. data/dependencies/libvorbis/doc/lspmap.png +0 -0
  394. data/dependencies/libvorbis/doc/oddlsp.png +0 -0
  395. data/dependencies/libvorbis/doc/oggstream.html +0 -234
  396. data/dependencies/libvorbis/doc/programming.html +0 -554
  397. data/dependencies/libvorbis/doc/residue-pack.png +0 -0
  398. data/dependencies/libvorbis/doc/residue2.png +0 -0
  399. data/dependencies/libvorbis/doc/squarepolar.png +0 -0
  400. data/dependencies/libvorbis/doc/stereo.html +0 -418
  401. data/dependencies/libvorbis/doc/stream.png +0 -0
  402. data/dependencies/libvorbis/doc/v-comment.html +0 -285
  403. data/dependencies/libvorbis/doc/vorbis-clip.txt +0 -139
  404. data/dependencies/libvorbis/doc/vorbis-errors.txt +0 -103
  405. data/dependencies/libvorbis/doc/vorbis-fidelity.html +0 -180
  406. data/dependencies/libvorbis/doc/vorbis.html +0 -234
  407. data/dependencies/libvorbis/doc/vorbisenc/Makefile +0 -382
  408. data/dependencies/libvorbis/doc/vorbisenc/Makefile.am +0 -9
  409. data/dependencies/libvorbis/doc/vorbisenc/Makefile.in +0 -382
  410. data/dependencies/libvorbis/doc/vorbisenc/changes.html +0 -104
  411. data/dependencies/libvorbis/doc/vorbisenc/examples.html +0 -133
  412. data/dependencies/libvorbis/doc/vorbisenc/index.html +0 -40
  413. data/dependencies/libvorbis/doc/vorbisenc/ov_ectl_ratemanage2_arg.html +0 -92
  414. data/dependencies/libvorbis/doc/vorbisenc/ov_ectl_ratemanage_arg.html +0 -92
  415. data/dependencies/libvorbis/doc/vorbisenc/overview.html +0 -382
  416. data/dependencies/libvorbis/doc/vorbisenc/reference.html +0 -48
  417. data/dependencies/libvorbis/doc/vorbisenc/style.css +0 -7
  418. data/dependencies/libvorbis/doc/vorbisenc/vorbis_encode_ctl.html +0 -169
  419. data/dependencies/libvorbis/doc/vorbisenc/vorbis_encode_init.html +0 -88
  420. data/dependencies/libvorbis/doc/vorbisenc/vorbis_encode_init_vbr.html +0 -81
  421. data/dependencies/libvorbis/doc/vorbisenc/vorbis_encode_setup_init.html +0 -88
  422. data/dependencies/libvorbis/doc/vorbisenc/vorbis_encode_setup_managed.html +0 -102
  423. data/dependencies/libvorbis/doc/vorbisenc/vorbis_encode_setup_vbr.html +0 -90
  424. data/dependencies/libvorbis/doc/vorbisenc/vorbis_info.html +0 -81
  425. data/dependencies/libvorbis/doc/vorbisfile/Makefile +0 -396
  426. data/dependencies/libvorbis/doc/vorbisfile/Makefile.am +0 -23
  427. data/dependencies/libvorbis/doc/vorbisfile/Makefile.in +0 -396
  428. data/dependencies/libvorbis/doc/vorbisfile/OggVorbis_File.html +0 -137
  429. data/dependencies/libvorbis/doc/vorbisfile/callbacks.html +0 -121
  430. data/dependencies/libvorbis/doc/vorbisfile/chaining_example_c.html +0 -90
  431. data/dependencies/libvorbis/doc/vorbisfile/chainingexample.html +0 -175
  432. data/dependencies/libvorbis/doc/vorbisfile/crosslap.html +0 -121
  433. data/dependencies/libvorbis/doc/vorbisfile/datastructures.html +0 -61
  434. data/dependencies/libvorbis/doc/vorbisfile/decoding.html +0 -87
  435. data/dependencies/libvorbis/doc/vorbisfile/example.html +0 -208
  436. data/dependencies/libvorbis/doc/vorbisfile/exampleindex.html +0 -39
  437. data/dependencies/libvorbis/doc/vorbisfile/fileinfo.html +0 -95
  438. data/dependencies/libvorbis/doc/vorbisfile/index.html +0 -49
  439. data/dependencies/libvorbis/doc/vorbisfile/initialization.html +0 -118
  440. data/dependencies/libvorbis/doc/vorbisfile/ov_bitrate.html +0 -72
  441. data/dependencies/libvorbis/doc/vorbisfile/ov_bitrate_instant.html +0 -65
  442. data/dependencies/libvorbis/doc/vorbisfile/ov_callbacks.html +0 -117
  443. data/dependencies/libvorbis/doc/vorbisfile/ov_clear.html +0 -64
  444. data/dependencies/libvorbis/doc/vorbisfile/ov_comment.html +0 -66
  445. data/dependencies/libvorbis/doc/vorbisfile/ov_crosslap.html +0 -100
  446. data/dependencies/libvorbis/doc/vorbisfile/ov_fopen.html +0 -124
  447. data/dependencies/libvorbis/doc/vorbisfile/ov_info.html +0 -64
  448. data/dependencies/libvorbis/doc/vorbisfile/ov_open.html +0 -183
  449. data/dependencies/libvorbis/doc/vorbisfile/ov_open_callbacks.html +0 -147
  450. data/dependencies/libvorbis/doc/vorbisfile/ov_pcm_seek.html +0 -83
  451. data/dependencies/libvorbis/doc/vorbisfile/ov_pcm_seek_lap.html +0 -103
  452. data/dependencies/libvorbis/doc/vorbisfile/ov_pcm_seek_page.html +0 -84
  453. data/dependencies/libvorbis/doc/vorbisfile/ov_pcm_seek_page_lap.html +0 -112
  454. data/dependencies/libvorbis/doc/vorbisfile/ov_pcm_tell.html +0 -63
  455. data/dependencies/libvorbis/doc/vorbisfile/ov_pcm_total.html +0 -67
  456. data/dependencies/libvorbis/doc/vorbisfile/ov_raw_seek.html +0 -83
  457. data/dependencies/libvorbis/doc/vorbisfile/ov_raw_seek_lap.html +0 -110
  458. data/dependencies/libvorbis/doc/vorbisfile/ov_raw_tell.html +0 -65
  459. data/dependencies/libvorbis/doc/vorbisfile/ov_raw_total.html +0 -68
  460. data/dependencies/libvorbis/doc/vorbisfile/ov_read.html +0 -123
  461. data/dependencies/libvorbis/doc/vorbisfile/ov_read_float.html +0 -101
  462. data/dependencies/libvorbis/doc/vorbisfile/ov_seekable.html +0 -63
  463. data/dependencies/libvorbis/doc/vorbisfile/ov_serialnumber.html +0 -67
  464. data/dependencies/libvorbis/doc/vorbisfile/ov_streams.html +0 -64
  465. data/dependencies/libvorbis/doc/vorbisfile/ov_test.html +0 -101
  466. data/dependencies/libvorbis/doc/vorbisfile/ov_test_callbacks.html +0 -111
  467. data/dependencies/libvorbis/doc/vorbisfile/ov_test_open.html +0 -82
  468. data/dependencies/libvorbis/doc/vorbisfile/ov_time_seek.html +0 -82
  469. data/dependencies/libvorbis/doc/vorbisfile/ov_time_seek_lap.html +0 -105
  470. data/dependencies/libvorbis/doc/vorbisfile/ov_time_seek_page.html +0 -83
  471. data/dependencies/libvorbis/doc/vorbisfile/ov_time_seek_page_lap.html +0 -112
  472. data/dependencies/libvorbis/doc/vorbisfile/ov_time_tell.html +0 -63
  473. data/dependencies/libvorbis/doc/vorbisfile/ov_time_total.html +0 -67
  474. data/dependencies/libvorbis/doc/vorbisfile/overview.html +0 -61
  475. data/dependencies/libvorbis/doc/vorbisfile/reference.html +0 -83
  476. data/dependencies/libvorbis/doc/vorbisfile/return.html +0 -77
  477. data/dependencies/libvorbis/doc/vorbisfile/seekexample.html +0 -152
  478. data/dependencies/libvorbis/doc/vorbisfile/seeking.html +0 -107
  479. data/dependencies/libvorbis/doc/vorbisfile/seeking_example_c.html +0 -86
  480. data/dependencies/libvorbis/doc/vorbisfile/seeking_test_c.html +0 -86
  481. data/dependencies/libvorbis/doc/vorbisfile/seekingexample.html +0 -203
  482. data/dependencies/libvorbis/doc/vorbisfile/style.css +0 -7
  483. data/dependencies/libvorbis/doc/vorbisfile/threads.html +0 -50
  484. data/dependencies/libvorbis/doc/vorbisfile/vorbis_comment.html +0 -70
  485. data/dependencies/libvorbis/doc/vorbisfile/vorbis_info.html +0 -80
  486. data/dependencies/libvorbis/doc/vorbisfile/vorbisfile_example_c.html +0 -106
  487. data/dependencies/libvorbis/doc/vorbisword2.png +0 -0
  488. data/dependencies/libvorbis/doc/wait.png +0 -0
  489. data/dependencies/libvorbis/doc/white-ogg.png +0 -0
  490. data/dependencies/libvorbis/doc/white-xifish.png +0 -0
  491. data/dependencies/libvorbis/doc/window1.png +0 -0
  492. data/dependencies/libvorbis/doc/window2.png +0 -0
  493. data/dependencies/libvorbis/doc/xifish.pdf +0 -0
  494. data/dependencies/libvorbis/doc/xml/01-introduction.xml +0 -665
  495. data/dependencies/libvorbis/doc/xml/02-bitpacking.xml +0 -280
  496. data/dependencies/libvorbis/doc/xml/03-codebook.xml +0 -458
  497. data/dependencies/libvorbis/doc/xml/04-codec.xml +0 -711
  498. data/dependencies/libvorbis/doc/xml/05-comment.xml +0 -284
  499. data/dependencies/libvorbis/doc/xml/06-floor0.xml +0 -257
  500. data/dependencies/libvorbis/doc/xml/07-floor1.xml +0 -450
  501. data/dependencies/libvorbis/doc/xml/08-residue.xml +0 -492
  502. data/dependencies/libvorbis/doc/xml/09-helper.xml +0 -211
  503. data/dependencies/libvorbis/doc/xml/10-tables.xml +0 -94
  504. data/dependencies/libvorbis/doc/xml/TODO +0 -28
  505. data/dependencies/libvorbis/doc/xml/Vorbis_I_spec.xml +0 -30
  506. data/dependencies/libvorbis/doc/xml/a1-encapsulation_ogg.xml +0 -201
  507. data/dependencies/libvorbis/doc/xml/a2-encapsulation_rtp.xml +0 -31
  508. data/dependencies/libvorbis/doc/xml/footer.xml +0 -60
  509. data/dependencies/libvorbis/doc/xml/spec-common.xsl +0 -24
  510. data/dependencies/libvorbis/doc/xml/spec-fo.xsl +0 -16
  511. data/dependencies/libvorbis/doc/xml/spec-html.xsl +0 -5
  512. data/dependencies/libvorbis/examples/Makefile +0 -515
  513. data/dependencies/libvorbis/examples/Makefile.am +0 -28
  514. data/dependencies/libvorbis/examples/Makefile.in +0 -515
  515. data/dependencies/libvorbis/examples/chaining_example.c +0 -72
  516. data/dependencies/libvorbis/examples/decoder_example.c +0 -307
  517. data/dependencies/libvorbis/examples/encoder_example.c +0 -253
  518. data/dependencies/libvorbis/examples/frameview.pl +0 -630
  519. data/dependencies/libvorbis/examples/seeking_example.c +0 -256
  520. data/dependencies/libvorbis/examples/vorbisfile_example.c +0 -87
  521. data/dependencies/libvorbis/include/Makefile.am +0 -3
  522. data/dependencies/libvorbis/include/Makefile.in +0 -506
  523. data/dependencies/libvorbis/include/vorbis/Makefile.am +0 -7
  524. data/dependencies/libvorbis/include/vorbis/Makefile.in +0 -426
  525. data/dependencies/libvorbis/include/vorbis/codec.h +0 -241
  526. data/dependencies/libvorbis/include/vorbis/vorbisenc.h +0 -112
  527. data/dependencies/libvorbis/include/vorbis/vorbisfile.h +0 -183
  528. data/dependencies/libvorbis/install-sh +0 -507
  529. data/dependencies/libvorbis/lib/Makefile.am +0 -44
  530. data/dependencies/libvorbis/lib/Makefile.in +0 -706
  531. data/dependencies/libvorbis/lib/analysis.c +0 -121
  532. data/dependencies/libvorbis/lib/backends.h +0 -146
  533. data/dependencies/libvorbis/lib/barkmel.c +0 -64
  534. data/dependencies/libvorbis/lib/bitrate.c +0 -253
  535. data/dependencies/libvorbis/lib/bitrate.h +0 -59
  536. data/dependencies/libvorbis/lib/block.c +0 -993
  537. data/dependencies/libvorbis/lib/books/Makefile.am +0 -3
  538. data/dependencies/libvorbis/lib/books/Makefile.in +0 -506
  539. data/dependencies/libvorbis/lib/books/coupled/Makefile.am +0 -3
  540. data/dependencies/libvorbis/lib/books/coupled/Makefile.in +0 -347
  541. data/dependencies/libvorbis/lib/books/coupled/res_books_stereo.h +0 -20681
  542. data/dependencies/libvorbis/lib/books/floor/Makefile.am +0 -3
  543. data/dependencies/libvorbis/lib/books/floor/Makefile.in +0 -347
  544. data/dependencies/libvorbis/lib/books/floor/floor_books.h +0 -1838
  545. data/dependencies/libvorbis/lib/books/uncoupled/Makefile.am +0 -3
  546. data/dependencies/libvorbis/lib/books/uncoupled/Makefile.in +0 -347
  547. data/dependencies/libvorbis/lib/books/uncoupled/res_books_uncoupled.h +0 -11517
  548. data/dependencies/libvorbis/lib/codebook.c +0 -634
  549. data/dependencies/libvorbis/lib/codebook.h +0 -160
  550. data/dependencies/libvorbis/lib/codec_internal.h +0 -137
  551. data/dependencies/libvorbis/lib/envelope.c +0 -382
  552. data/dependencies/libvorbis/lib/envelope.h +0 -81
  553. data/dependencies/libvorbis/lib/floor0.c +0 -223
  554. data/dependencies/libvorbis/lib/floor1.c +0 -1094
  555. data/dependencies/libvorbis/lib/highlevel.h +0 -57
  556. data/dependencies/libvorbis/lib/info.c +0 -644
  557. data/dependencies/libvorbis/lib/lookup.c +0 -94
  558. data/dependencies/libvorbis/lib/lookup.h +0 -32
  559. data/dependencies/libvorbis/lib/lookup_data.h +0 -189
  560. data/dependencies/libvorbis/lib/lookups.pl +0 -142
  561. data/dependencies/libvorbis/lib/lpc.c +0 -149
  562. data/dependencies/libvorbis/lib/lpc.h +0 -29
  563. data/dependencies/libvorbis/lib/lsp.c +0 -455
  564. data/dependencies/libvorbis/lib/lsp.h +0 -28
  565. data/dependencies/libvorbis/lib/mapping0.c +0 -844
  566. data/dependencies/libvorbis/lib/masking.h +0 -785
  567. data/dependencies/libvorbis/lib/mdct.c +0 -564
  568. data/dependencies/libvorbis/lib/mdct.h +0 -83
  569. data/dependencies/libvorbis/lib/misc.h +0 -52
  570. data/dependencies/libvorbis/lib/modes/Makefile.am +0 -6
  571. data/dependencies/libvorbis/lib/modes/Makefile.in +0 -351
  572. data/dependencies/libvorbis/lib/modes/floor_all.h +0 -248
  573. data/dependencies/libvorbis/lib/modes/psych_11.h +0 -51
  574. data/dependencies/libvorbis/lib/modes/psych_16.h +0 -136
  575. data/dependencies/libvorbis/lib/modes/psych_44.h +0 -666
  576. data/dependencies/libvorbis/lib/modes/psych_8.h +0 -102
  577. data/dependencies/libvorbis/lib/modes/residue_16.h +0 -163
  578. data/dependencies/libvorbis/lib/modes/residue_44.h +0 -294
  579. data/dependencies/libvorbis/lib/modes/residue_44u.h +0 -318
  580. data/dependencies/libvorbis/lib/modes/residue_8.h +0 -109
  581. data/dependencies/libvorbis/lib/modes/setup_11.h +0 -141
  582. data/dependencies/libvorbis/lib/modes/setup_16.h +0 -149
  583. data/dependencies/libvorbis/lib/modes/setup_22.h +0 -128
  584. data/dependencies/libvorbis/lib/modes/setup_32.h +0 -132
  585. data/dependencies/libvorbis/lib/modes/setup_44.h +0 -107
  586. data/dependencies/libvorbis/lib/modes/setup_44u.h +0 -74
  587. data/dependencies/libvorbis/lib/modes/setup_8.h +0 -146
  588. data/dependencies/libvorbis/lib/modes/setup_X.h +0 -226
  589. data/dependencies/libvorbis/lib/os.h +0 -156
  590. data/dependencies/libvorbis/lib/psy.c +0 -1227
  591. data/dependencies/libvorbis/lib/psy.h +0 -186
  592. data/dependencies/libvorbis/lib/psytune.c +0 -524
  593. data/dependencies/libvorbis/lib/registry.c +0 -46
  594. data/dependencies/libvorbis/lib/registry.h +0 -32
  595. data/dependencies/libvorbis/lib/res0.c +0 -919
  596. data/dependencies/libvorbis/lib/scales.h +0 -86
  597. data/dependencies/libvorbis/lib/sharedbook.c +0 -735
  598. data/dependencies/libvorbis/lib/smallft.c +0 -1255
  599. data/dependencies/libvorbis/lib/smallft.h +0 -34
  600. data/dependencies/libvorbis/lib/synthesis.c +0 -170
  601. data/dependencies/libvorbis/lib/tone.c +0 -54
  602. data/dependencies/libvorbis/lib/vorbisenc.c +0 -1184
  603. data/dependencies/libvorbis/lib/vorbisfile.c +0 -2194
  604. data/dependencies/libvorbis/lib/window.c +0 -2136
  605. data/dependencies/libvorbis/lib/window.h +0 -26
  606. data/dependencies/libvorbis/libvorbis.spec +0 -118
  607. data/dependencies/libvorbis/libvorbis.spec.in +0 -118
  608. data/dependencies/libvorbis/ltmain.sh +0 -6871
  609. data/dependencies/libvorbis/macos/compat/strdup.c +0 -21
  610. data/dependencies/libvorbis/macos/compat/sys/types.h +0 -1
  611. data/dependencies/libvorbis/macos/decoder_example.mcp +0 -0
  612. data/dependencies/libvorbis/macos/encoder_example.mcp +0 -0
  613. data/dependencies/libvorbis/macos/libvorbis.mcp +0 -0
  614. data/dependencies/libvorbis/macos/libvorbis.mcp.exp +0 -45
  615. data/dependencies/libvorbis/macos/libvorbisenc.mcp +0 -0
  616. data/dependencies/libvorbis/macos/libvorbisenc.mcp.exp +0 -8
  617. data/dependencies/libvorbis/macos/libvorbisfile.mcp +0 -0
  618. data/dependencies/libvorbis/macos/libvorbisfile.mcp.exp +0 -45
  619. data/dependencies/libvorbis/macos/vorbis.mcp +0 -0
  620. data/dependencies/libvorbis/macosx/English.lproj/InfoPlist.strings +0 -0
  621. data/dependencies/libvorbis/macosx/Info.plist +0 -30
  622. data/dependencies/libvorbis/macosx/Vorbis.xcodeproj/project.pbxproj +0 -893
  623. data/dependencies/libvorbis/missing +0 -367
  624. data/dependencies/libvorbis/symbian/bld.inf +0 -35
  625. data/dependencies/libvorbis/symbian/config.h +0 -54
  626. data/dependencies/libvorbis/symbian/vorbis.mmp +0 -43
  627. data/dependencies/libvorbis/todo.txt +0 -22
  628. data/dependencies/libvorbis/vorbis-uninstalled.pc.in +0 -14
  629. data/dependencies/libvorbis/vorbis.m4 +0 -122
  630. data/dependencies/libvorbis/vorbis.pc.in +0 -14
  631. data/dependencies/libvorbis/vorbisenc-uninstalled.pc.in +0 -14
  632. data/dependencies/libvorbis/vorbisenc.pc.in +0 -14
  633. data/dependencies/libvorbis/vorbisfile-uninstalled.pc.in +0 -14
  634. data/dependencies/libvorbis/vorbisfile.pc.in +0 -14
  635. data/dependencies/libvorbis/vq/16.vqs +0 -77
  636. data/dependencies/libvorbis/vq/16u.vqs +0 -71
  637. data/dependencies/libvorbis/vq/44c-1.vqs +0 -63
  638. data/dependencies/libvorbis/vq/44c0.vqs +0 -65
  639. data/dependencies/libvorbis/vq/44c1.vqs +0 -66
  640. data/dependencies/libvorbis/vq/44c2.vqs +0 -37
  641. data/dependencies/libvorbis/vq/44c3.vqs +0 -36
  642. data/dependencies/libvorbis/vq/44c4.vqs +0 -36
  643. data/dependencies/libvorbis/vq/44c5.vqs +0 -37
  644. data/dependencies/libvorbis/vq/44c6.vqs +0 -37
  645. data/dependencies/libvorbis/vq/44c7.vqs +0 -38
  646. data/dependencies/libvorbis/vq/44c8.vqs +0 -39
  647. data/dependencies/libvorbis/vq/44c9.vqs +0 -37
  648. data/dependencies/libvorbis/vq/44u0.vqs +0 -33
  649. data/dependencies/libvorbis/vq/44u1.vqs +0 -33
  650. data/dependencies/libvorbis/vq/44u2.vqs +0 -32
  651. data/dependencies/libvorbis/vq/44u3.vqs +0 -33
  652. data/dependencies/libvorbis/vq/44u4.vqs +0 -33
  653. data/dependencies/libvorbis/vq/44u5.vqs +0 -35
  654. data/dependencies/libvorbis/vq/44u6.vqs +0 -35
  655. data/dependencies/libvorbis/vq/44u7.vqs +0 -34
  656. data/dependencies/libvorbis/vq/44u8.vqs +0 -35
  657. data/dependencies/libvorbis/vq/44u9.vqs +0 -36
  658. data/dependencies/libvorbis/vq/8.vqs +0 -43
  659. data/dependencies/libvorbis/vq/8u.vqs +0 -41
  660. data/dependencies/libvorbis/vq/Makefile +0 -532
  661. data/dependencies/libvorbis/vq/Makefile.am +0 -34
  662. data/dependencies/libvorbis/vq/Makefile.in +0 -532
  663. data/dependencies/libvorbis/vq/auxpartition.pl +0 -71
  664. data/dependencies/libvorbis/vq/bookutil.c +0 -717
  665. data/dependencies/libvorbis/vq/bookutil.h +0 -43
  666. data/dependencies/libvorbis/vq/build.c +0 -195
  667. data/dependencies/libvorbis/vq/cascade.c +0 -91
  668. data/dependencies/libvorbis/vq/distribution.c +0 -248
  669. data/dependencies/libvorbis/vq/floor_11.vqs +0 -10
  670. data/dependencies/libvorbis/vq/floor_22.vqs +0 -27
  671. data/dependencies/libvorbis/vq/floor_44.vqs +0 -83
  672. data/dependencies/libvorbis/vq/genericdata.c +0 -61
  673. data/dependencies/libvorbis/vq/huffbuild.c +0 -201
  674. data/dependencies/libvorbis/vq/latticebuild.c +0 -177
  675. data/dependencies/libvorbis/vq/latticehint.c +0 -430
  676. data/dependencies/libvorbis/vq/latticepare.c +0 -595
  677. data/dependencies/libvorbis/vq/latticetune.c +0 -164
  678. data/dependencies/libvorbis/vq/localcodebook.h +0 -160
  679. data/dependencies/libvorbis/vq/lspdata.c +0 -157
  680. data/dependencies/libvorbis/vq/make_floor_books.pl +0 -108
  681. data/dependencies/libvorbis/vq/make_residue_books.pl +0 -187
  682. data/dependencies/libvorbis/vq/metrics.c +0 -295
  683. data/dependencies/libvorbis/vq/residue_entropy +0 -58
  684. data/dependencies/libvorbis/vq/residuedata.c +0 -160
  685. data/dependencies/libvorbis/vq/residuesplit.c +0 -282
  686. data/dependencies/libvorbis/vq/run.c +0 -216
  687. data/dependencies/libvorbis/vq/train.c +0 -364
  688. data/dependencies/libvorbis/vq/vqext.h +0 -34
  689. data/dependencies/libvorbis/vq/vqgen.c +0 -567
  690. data/dependencies/libvorbis/vq/vqgen.h +0 -85
  691. data/dependencies/libvorbis/vq/vqsplit.c +0 -612
  692. data/dependencies/libvorbis/vq/vqsplit.h +0 -37
  693. data/dependencies/libvorbis/win32/VS2003/libvorbis/libvorbis.vcproj +0 -467
  694. data/dependencies/libvorbis/win32/VS2003/libvorbisfile/libvorbisfile.def +0 -47
  695. data/dependencies/libvorbis/win32/VS2003/libvorbisfile/libvorbisfile.vcproj +0 -147
  696. data/dependencies/libvorbis/win32/VS2003/vorbisdec/vorbisdec.vcproj +0 -268
  697. data/dependencies/libvorbis/win32/VS2003/vorbisenc/vorbisenc.vcproj +0 -268
  698. data/dependencies/libvorbis/win32/VS2005/libvorbis/libvorbis.vcproj +0 -653
  699. data/dependencies/libvorbis/win32/VS2005/libvorbisfile/libvorbisfile.def +0 -47
  700. data/dependencies/libvorbis/win32/VS2005/libvorbisfile/libvorbisfile.vcproj +0 -219
  701. data/dependencies/libvorbis/win32/VS2005/vorbisdec/vorbisdec.vcproj +0 -389
  702. data/dependencies/libvorbis/win32/VS2005/vorbisenc/vorbisenc.vcproj +0 -390
  703. data/dependencies/libvorbis/win32/build_vorbis_dynamic.bat +0 -19
  704. data/dependencies/libvorbis/win32/build_vorbis_dynamic_debug.bat +0 -19
  705. data/dependencies/libvorbis/win32/build_vorbis_static.bat +0 -19
  706. data/dependencies/libvorbis/win32/build_vorbis_static_debug.bat +0 -19
  707. data/dependencies/libvorbis/win32/build_vorbisenc_dynamic.bat +0 -19
  708. data/dependencies/libvorbis/win32/build_vorbisenc_dynamic_debug.bat +0 -19
  709. data/dependencies/libvorbis/win32/build_vorbisenc_static.bat +0 -19
  710. data/dependencies/libvorbis/win32/build_vorbisenc_static_debug.bat +0 -19
  711. data/dependencies/libvorbis/win32/build_vorbisfile_dynamic.bat +0 -19
  712. data/dependencies/libvorbis/win32/build_vorbisfile_dynamic_debug.bat +0 -19
  713. data/dependencies/libvorbis/win32/build_vorbisfile_static.bat +0 -19
  714. data/dependencies/libvorbis/win32/build_vorbisfile_static_debug.bat +0 -19
  715. data/dependencies/libvorbis/win32/vorbis.def +0 -57
  716. data/dependencies/libvorbis/win32/vorbis.dsw +0 -101
  717. data/dependencies/libvorbis/win32/vorbis_dynamic.dsp +0 -281
  718. data/dependencies/libvorbis/win32/vorbis_static.dsp +0 -257
  719. data/dependencies/libvorbis/win32/vorbisenc.def +0 -13
  720. data/dependencies/libvorbis/win32/vorbisenc_dynamic.dsp +0 -121
  721. data/dependencies/libvorbis/win32/vorbisenc_static.dsp +0 -100
  722. data/dependencies/libvorbis/win32/vorbisfile.def +0 -41
  723. data/dependencies/libvorbis/win32/vorbisfile_dynamic.dsp +0 -119
  724. data/dependencies/libvorbis/win32/vorbisfile_static.dsp +0 -100
  725. data/dependencies/zlib/ChangeLog +0 -855
  726. data/dependencies/zlib/FAQ +0 -339
  727. data/dependencies/zlib/INDEX +0 -51
  728. data/dependencies/zlib/Makefile +0 -154
  729. data/dependencies/zlib/Makefile.in +0 -154
  730. data/dependencies/zlib/README +0 -125
  731. data/dependencies/zlib/adler32.c +0 -149
  732. data/dependencies/zlib/algorithm.txt +0 -209
  733. data/dependencies/zlib/amiga/Makefile.pup +0 -66
  734. data/dependencies/zlib/amiga/Makefile.sas +0 -65
  735. data/dependencies/zlib/as400/bndsrc +0 -132
  736. data/dependencies/zlib/as400/compile.clp +0 -123
  737. data/dependencies/zlib/as400/readme.txt +0 -111
  738. data/dependencies/zlib/as400/zlib.inc +0 -331
  739. data/dependencies/zlib/compress.c +0 -79
  740. data/dependencies/zlib/configure +0 -459
  741. data/dependencies/zlib/contrib/README.contrib +0 -71
  742. data/dependencies/zlib/contrib/ada/buffer_demo.adb +0 -106
  743. data/dependencies/zlib/contrib/ada/mtest.adb +0 -156
  744. data/dependencies/zlib/contrib/ada/read.adb +0 -156
  745. data/dependencies/zlib/contrib/ada/readme.txt +0 -65
  746. data/dependencies/zlib/contrib/ada/test.adb +0 -463
  747. data/dependencies/zlib/contrib/ada/zlib-streams.adb +0 -225
  748. data/dependencies/zlib/contrib/ada/zlib-streams.ads +0 -114
  749. data/dependencies/zlib/contrib/ada/zlib-thin.adb +0 -141
  750. data/dependencies/zlib/contrib/ada/zlib-thin.ads +0 -450
  751. data/dependencies/zlib/contrib/ada/zlib.adb +0 -701
  752. data/dependencies/zlib/contrib/ada/zlib.ads +0 -328
  753. data/dependencies/zlib/contrib/ada/zlib.gpr +0 -20
  754. data/dependencies/zlib/contrib/asm586/README.586 +0 -43
  755. data/dependencies/zlib/contrib/asm586/match.S +0 -364
  756. data/dependencies/zlib/contrib/asm686/README.686 +0 -34
  757. data/dependencies/zlib/contrib/asm686/match.S +0 -329
  758. data/dependencies/zlib/contrib/blast/Makefile +0 -8
  759. data/dependencies/zlib/contrib/blast/README +0 -4
  760. data/dependencies/zlib/contrib/blast/blast.c +0 -444
  761. data/dependencies/zlib/contrib/blast/blast.h +0 -71
  762. data/dependencies/zlib/contrib/blast/test.pk +0 -0
  763. data/dependencies/zlib/contrib/blast/test.txt +0 -1
  764. data/dependencies/zlib/contrib/delphi/ZLib.pas +0 -557
  765. data/dependencies/zlib/contrib/delphi/ZLibConst.pas +0 -11
  766. data/dependencies/zlib/contrib/delphi/readme.txt +0 -76
  767. data/dependencies/zlib/contrib/delphi/zlibd32.mak +0 -93
  768. data/dependencies/zlib/contrib/dotzlib/DotZLib.build +0 -33
  769. data/dependencies/zlib/contrib/dotzlib/DotZLib.chm +0 -0
  770. data/dependencies/zlib/contrib/dotzlib/DotZLib.sln +0 -21
  771. data/dependencies/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +0 -58
  772. data/dependencies/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +0 -202
  773. data/dependencies/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +0 -83
  774. data/dependencies/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +0 -198
  775. data/dependencies/zlib/contrib/dotzlib/DotZLib/Deflater.cs +0 -106
  776. data/dependencies/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +0 -288
  777. data/dependencies/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +0 -141
  778. data/dependencies/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +0 -301
  779. data/dependencies/zlib/contrib/dotzlib/DotZLib/Inflater.cs +0 -105
  780. data/dependencies/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +0 -274
  781. data/dependencies/zlib/contrib/dotzlib/LICENSE_1_0.txt +0 -23
  782. data/dependencies/zlib/contrib/dotzlib/readme.txt +0 -58
  783. data/dependencies/zlib/contrib/infback9/README +0 -1
  784. data/dependencies/zlib/contrib/infback9/infback9.c +0 -608
  785. data/dependencies/zlib/contrib/infback9/infback9.h +0 -37
  786. data/dependencies/zlib/contrib/infback9/inffix9.h +0 -107
  787. data/dependencies/zlib/contrib/infback9/inflate9.h +0 -47
  788. data/dependencies/zlib/contrib/infback9/inftree9.c +0 -323
  789. data/dependencies/zlib/contrib/infback9/inftree9.h +0 -55
  790. data/dependencies/zlib/contrib/inflate86/inffas86.c +0 -1157
  791. data/dependencies/zlib/contrib/inflate86/inffast.S +0 -1368
  792. data/dependencies/zlib/contrib/iostream/test.cpp +0 -24
  793. data/dependencies/zlib/contrib/iostream/zfstream.cpp +0 -329
  794. data/dependencies/zlib/contrib/iostream/zfstream.h +0 -128
  795. data/dependencies/zlib/contrib/iostream2/zstream.h +0 -307
  796. data/dependencies/zlib/contrib/iostream2/zstream_test.cpp +0 -25
  797. data/dependencies/zlib/contrib/iostream3/README +0 -35
  798. data/dependencies/zlib/contrib/iostream3/TODO +0 -17
  799. data/dependencies/zlib/contrib/iostream3/test.cc +0 -50
  800. data/dependencies/zlib/contrib/iostream3/zfstream.cc +0 -479
  801. data/dependencies/zlib/contrib/iostream3/zfstream.h +0 -466
  802. data/dependencies/zlib/contrib/masm686/match.asm +0 -413
  803. data/dependencies/zlib/contrib/masmx64/bld_ml64.bat +0 -2
  804. data/dependencies/zlib/contrib/masmx64/gvmat64.asm +0 -513
  805. data/dependencies/zlib/contrib/masmx64/gvmat64.obj +0 -0
  806. data/dependencies/zlib/contrib/masmx64/inffas8664.c +0 -186
  807. data/dependencies/zlib/contrib/masmx64/inffasx64.asm +0 -392
  808. data/dependencies/zlib/contrib/masmx64/inffasx64.obj +0 -0
  809. data/dependencies/zlib/contrib/masmx64/readme.txt +0 -28
  810. data/dependencies/zlib/contrib/masmx86/bld_ml32.bat +0 -2
  811. data/dependencies/zlib/contrib/masmx86/gvmat32.asm +0 -972
  812. data/dependencies/zlib/contrib/masmx86/gvmat32.obj +0 -0
  813. data/dependencies/zlib/contrib/masmx86/gvmat32c.c +0 -62
  814. data/dependencies/zlib/contrib/masmx86/inffas32.asm +0 -1083
  815. data/dependencies/zlib/contrib/masmx86/inffas32.obj +0 -0
  816. data/dependencies/zlib/contrib/masmx86/mkasm.bat +0 -3
  817. data/dependencies/zlib/contrib/masmx86/readme.txt +0 -21
  818. data/dependencies/zlib/contrib/minizip/ChangeLogUnzip +0 -67
  819. data/dependencies/zlib/contrib/minizip/Makefile +0 -25
  820. data/dependencies/zlib/contrib/minizip/crypt.h +0 -132
  821. data/dependencies/zlib/contrib/minizip/ioapi.c +0 -177
  822. data/dependencies/zlib/contrib/minizip/ioapi.h +0 -75
  823. data/dependencies/zlib/contrib/minizip/iowin32.c +0 -270
  824. data/dependencies/zlib/contrib/minizip/iowin32.h +0 -21
  825. data/dependencies/zlib/contrib/minizip/miniunz.c +0 -585
  826. data/dependencies/zlib/contrib/minizip/minizip.c +0 -420
  827. data/dependencies/zlib/contrib/minizip/mztools.c +0 -281
  828. data/dependencies/zlib/contrib/minizip/mztools.h +0 -31
  829. data/dependencies/zlib/contrib/minizip/unzip.c +0 -1598
  830. data/dependencies/zlib/contrib/minizip/unzip.h +0 -354
  831. data/dependencies/zlib/contrib/minizip/zip.c +0 -1219
  832. data/dependencies/zlib/contrib/minizip/zip.h +0 -235
  833. data/dependencies/zlib/contrib/pascal/example.pas +0 -599
  834. data/dependencies/zlib/contrib/pascal/readme.txt +0 -76
  835. data/dependencies/zlib/contrib/pascal/zlibd32.mak +0 -93
  836. data/dependencies/zlib/contrib/pascal/zlibpas.pas +0 -236
  837. data/dependencies/zlib/contrib/puff/Makefile +0 -8
  838. data/dependencies/zlib/contrib/puff/README +0 -63
  839. data/dependencies/zlib/contrib/puff/puff.c +0 -837
  840. data/dependencies/zlib/contrib/puff/puff.h +0 -31
  841. data/dependencies/zlib/contrib/puff/zeros.raw +0 -0
  842. data/dependencies/zlib/contrib/testzlib/testzlib.c +0 -275
  843. data/dependencies/zlib/contrib/testzlib/testzlib.txt +0 -10
  844. data/dependencies/zlib/contrib/untgz/Makefile +0 -14
  845. data/dependencies/zlib/contrib/untgz/Makefile.msc +0 -17
  846. data/dependencies/zlib/contrib/untgz/untgz.c +0 -674
  847. data/dependencies/zlib/contrib/vstudio/readme.txt +0 -73
  848. data/dependencies/zlib/contrib/vstudio/vc7/miniunz.vcproj +0 -126
  849. data/dependencies/zlib/contrib/vstudio/vc7/minizip.vcproj +0 -126
  850. data/dependencies/zlib/contrib/vstudio/vc7/testzlib.vcproj +0 -126
  851. data/dependencies/zlib/contrib/vstudio/vc7/zlib.rc +0 -32
  852. data/dependencies/zlib/contrib/vstudio/vc7/zlibstat.vcproj +0 -246
  853. data/dependencies/zlib/contrib/vstudio/vc7/zlibvc.def +0 -92
  854. data/dependencies/zlib/contrib/vstudio/vc7/zlibvc.sln +0 -78
  855. data/dependencies/zlib/contrib/vstudio/vc7/zlibvc.vcproj +0 -445
  856. data/dependencies/zlib/contrib/vstudio/vc8/miniunz.vcproj +0 -566
  857. data/dependencies/zlib/contrib/vstudio/vc8/minizip.vcproj +0 -563
  858. data/dependencies/zlib/contrib/vstudio/vc8/testzlib.vcproj +0 -948
  859. data/dependencies/zlib/contrib/vstudio/vc8/testzlibdll.vcproj +0 -567
  860. data/dependencies/zlib/contrib/vstudio/vc8/zlib.rc +0 -32
  861. data/dependencies/zlib/contrib/vstudio/vc8/zlibstat.vcproj +0 -870
  862. data/dependencies/zlib/contrib/vstudio/vc8/zlibvc.def +0 -92
  863. data/dependencies/zlib/contrib/vstudio/vc8/zlibvc.sln +0 -144
  864. data/dependencies/zlib/contrib/vstudio/vc8/zlibvc.vcproj +0 -1219
  865. data/dependencies/zlib/crc32.c +0 -423
  866. data/dependencies/zlib/crc32.h +0 -441
  867. data/dependencies/zlib/deflate.c +0 -1736
  868. data/dependencies/zlib/deflate.h +0 -331
  869. data/dependencies/zlib/example.c +0 -565
  870. data/dependencies/zlib/examples/README.examples +0 -42
  871. data/dependencies/zlib/examples/fitblk.c +0 -233
  872. data/dependencies/zlib/examples/gun.c +0 -693
  873. data/dependencies/zlib/examples/gzappend.c +0 -500
  874. data/dependencies/zlib/examples/gzjoin.c +0 -448
  875. data/dependencies/zlib/examples/gzlog.c +0 -413
  876. data/dependencies/zlib/examples/gzlog.h +0 -58
  877. data/dependencies/zlib/examples/zlib_how.html +0 -523
  878. data/dependencies/zlib/examples/zpipe.c +0 -191
  879. data/dependencies/zlib/examples/zran.c +0 -404
  880. data/dependencies/zlib/gzio.c +0 -1026
  881. data/dependencies/zlib/infback.c +0 -623
  882. data/dependencies/zlib/inffast.c +0 -318
  883. data/dependencies/zlib/inffast.h +0 -11
  884. data/dependencies/zlib/inffixed.h +0 -94
  885. data/dependencies/zlib/inflate.c +0 -1368
  886. data/dependencies/zlib/inflate.h +0 -115
  887. data/dependencies/zlib/inftrees.c +0 -329
  888. data/dependencies/zlib/inftrees.h +0 -55
  889. data/dependencies/zlib/make_vms.com +0 -461
  890. data/dependencies/zlib/minigzip.c +0 -322
  891. data/dependencies/zlib/msdos/Makefile.bor +0 -109
  892. data/dependencies/zlib/msdos/Makefile.dj2 +0 -104
  893. data/dependencies/zlib/msdos/Makefile.emx +0 -69
  894. data/dependencies/zlib/msdos/Makefile.msc +0 -106
  895. data/dependencies/zlib/msdos/Makefile.tc +0 -94
  896. data/dependencies/zlib/old/Makefile.riscos +0 -151
  897. data/dependencies/zlib/old/README +0 -3
  898. data/dependencies/zlib/old/descrip.mms +0 -48
  899. data/dependencies/zlib/old/os2/Makefile.os2 +0 -136
  900. data/dependencies/zlib/old/os2/zlib.def +0 -51
  901. data/dependencies/zlib/old/visual-basic.txt +0 -160
  902. data/dependencies/zlib/old/zlib.html +0 -971
  903. data/dependencies/zlib/projects/README.projects +0 -41
  904. data/dependencies/zlib/projects/visualc6/README.txt +0 -73
  905. data/dependencies/zlib/projects/visualc6/example.dsp +0 -278
  906. data/dependencies/zlib/projects/visualc6/minigzip.dsp +0 -278
  907. data/dependencies/zlib/projects/visualc6/zlib.dsp +0 -609
  908. data/dependencies/zlib/projects/visualc6/zlib.dsw +0 -59
  909. data/dependencies/zlib/qnx/package.qpg +0 -141
  910. data/dependencies/zlib/trees.c +0 -1219
  911. data/dependencies/zlib/trees.h +0 -128
  912. data/dependencies/zlib/uncompr.c +0 -61
  913. data/dependencies/zlib/win32/DLL_FAQ.txt +0 -397
  914. data/dependencies/zlib/win32/Makefile.bor +0 -107
  915. data/dependencies/zlib/win32/Makefile.emx +0 -69
  916. data/dependencies/zlib/win32/Makefile.gcc +0 -141
  917. data/dependencies/zlib/win32/Makefile.msc +0 -126
  918. data/dependencies/zlib/win32/VisualC.txt +0 -3
  919. data/dependencies/zlib/win32/zlib.def +0 -60
  920. data/dependencies/zlib/win32/zlib1.rc +0 -39
  921. data/dependencies/zlib/zconf.h +0 -332
  922. data/dependencies/zlib/zconf.in.h +0 -332
  923. data/dependencies/zlib/zlib.3 +0 -159
  924. data/dependencies/zlib/zlib.h +0 -1357
  925. data/dependencies/zlib/zutil.c +0 -318
  926. data/dependencies/zlib/zutil.h +0 -269
  927. data/mac/English.lproj/InfoPlist.strings +0 -0
  928. data/mac/Gosu-Info.plist +0 -26
  929. data/mac/Gosu.icns +0 -0
  930. data/mac/Gosu.xcodeproj/jlnr.mode1v3 +0 -1420
  931. data/mac/Gosu.xcodeproj/jlnr.mode2v3 +0 -1464
  932. data/mac/Gosu.xcodeproj/jlnr.pbxuser +0 -1407
  933. data/mac/Gosu.xcodeproj/jlnr.perspectivev3 +0 -1573
  934. data/mac/Gosu.xcodeproj/project.pbxproj +0 -2758
  935. data/mac/RubyGosu App-Info.plist +0 -26
  936. data/windows/Gosu.sln +0 -34
  937. data/windows/Gosu.vcproj +0 -553
  938. data/windows/RubyGosu.vcproj +0 -241
@@ -1,2194 +0,0 @@
1
- /********************************************************************
2
- * *
3
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
4
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
5
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
7
- * *
8
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
9
- * by the Xiph.Org Foundation http://www.xiph.org/ *
10
- * *
11
- ********************************************************************
12
-
13
- function: stdio-based convenience library for opening/seeking/decoding
14
- last mod: $Id: vorbisfile.c 13294 2007-07-24 01:08:23Z xiphmont $
15
-
16
- ********************************************************************/
17
-
18
- #include <stdlib.h>
19
- #include <stdio.h>
20
- #include <errno.h>
21
- #include <string.h>
22
- #include <math.h>
23
-
24
- #include "vorbis/codec.h"
25
- #include "vorbis/vorbisfile.h"
26
-
27
- #include "os.h"
28
- #include "misc.h"
29
-
30
- /* A 'chained bitstream' is a Vorbis bitstream that contains more than
31
- one logical bitstream arranged end to end (the only form of Ogg
32
- multiplexing allowed in a Vorbis bitstream; grouping [parallel
33
- multiplexing] is not allowed in Vorbis) */
34
-
35
- /* A Vorbis file can be played beginning to end (streamed) without
36
- worrying ahead of time about chaining (see decoder_example.c). If
37
- we have the whole file, however, and want random access
38
- (seeking/scrubbing) or desire to know the total length/time of a
39
- file, we need to account for the possibility of chaining. */
40
-
41
- /* We can handle things a number of ways; we can determine the entire
42
- bitstream structure right off the bat, or find pieces on demand.
43
- This example determines and caches structure for the entire
44
- bitstream, but builds a virtual decoder on the fly when moving
45
- between links in the chain. */
46
-
47
- /* There are also different ways to implement seeking. Enough
48
- information exists in an Ogg bitstream to seek to
49
- sample-granularity positions in the output. Or, one can seek by
50
- picking some portion of the stream roughly in the desired area if
51
- we only want coarse navigation through the stream. */
52
-
53
- /*************************************************************************
54
- * Many, many internal helpers. The intention is not to be confusing;
55
- * rampant duplication and monolithic function implementation would be
56
- * harder to understand anyway. The high level functions are last. Begin
57
- * grokking near the end of the file */
58
-
59
- /* read a little more data from the file/pipe into the ogg_sync framer
60
- */
61
- #define CHUNKSIZE 65536
62
-
63
- static long _get_data(OggVorbis_File *vf){
64
- errno=0;
65
- if(!(vf->callbacks.read_func))return(-1);
66
- if(vf->datasource){
67
- char *buffer=ogg_sync_buffer(&vf->oy,CHUNKSIZE);
68
- long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource);
69
- if(bytes>0)ogg_sync_wrote(&vf->oy,bytes);
70
- if(bytes==0 && errno)return(-1);
71
- return(bytes);
72
- }else
73
- return(0);
74
- }
75
-
76
- /* save a tiny smidge of verbosity to make the code more readable */
77
- static int _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){
78
- if(vf->datasource){
79
- if(!(vf->callbacks.seek_func)||
80
- (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1)
81
- return OV_EREAD;
82
- vf->offset=offset;
83
- ogg_sync_reset(&vf->oy);
84
- }else{
85
- /* shouldn't happen unless someone writes a broken callback */
86
- return OV_EFAULT;
87
- }
88
- return 0;
89
- }
90
-
91
- /* The read/seek functions track absolute position within the stream */
92
-
93
- /* from the head of the stream, get the next page. boundary specifies
94
- if the function is allowed to fetch more data from the stream (and
95
- how much) or only use internally buffered data.
96
-
97
- boundary: -1) unbounded search
98
- 0) read no additional data; use cached only
99
- n) search for a new page beginning for n bytes
100
-
101
- return: <0) did not find a page (OV_FALSE, OV_EOF, OV_EREAD)
102
- n) found a page at absolute offset n */
103
-
104
- static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og,
105
- ogg_int64_t boundary){
106
- if(boundary>0)boundary+=vf->offset;
107
- while(1){
108
- long more;
109
-
110
- if(boundary>0 && vf->offset>=boundary)return(OV_FALSE);
111
- more=ogg_sync_pageseek(&vf->oy,og);
112
-
113
- if(more<0){
114
- /* skipped n bytes */
115
- vf->offset-=more;
116
- }else{
117
- if(more==0){
118
- /* send more paramedics */
119
- if(!boundary)return(OV_FALSE);
120
- {
121
- long ret=_get_data(vf);
122
- if(ret==0)return(OV_EOF);
123
- if(ret<0)return(OV_EREAD);
124
- }
125
- }else{
126
- /* got a page. Return the offset at the page beginning,
127
- advance the internal offset past the page end */
128
- ogg_int64_t ret=vf->offset;
129
- vf->offset+=more;
130
- return(ret);
131
-
132
- }
133
- }
134
- }
135
- }
136
-
137
- /* find the latest page beginning before the current stream cursor
138
- position. Much dirtier than the above as Ogg doesn't have any
139
- backward search linkage. no 'readp' as it will certainly have to
140
- read. */
141
- /* returns offset or OV_EREAD, OV_FAULT */
142
- static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_page *og){
143
- ogg_int64_t begin=vf->offset;
144
- ogg_int64_t end=begin;
145
- ogg_int64_t ret;
146
- ogg_int64_t offset=-1;
147
-
148
- while(offset==-1){
149
- begin-=CHUNKSIZE;
150
- if(begin<0)
151
- begin=0;
152
-
153
- ret=_seek_helper(vf,begin);
154
- if(ret)return(ret);
155
-
156
- while(vf->offset<end){
157
- ret=_get_next_page(vf,og,end-vf->offset);
158
- if(ret==OV_EREAD)return(OV_EREAD);
159
- if(ret<0){
160
- break;
161
- }else{
162
- offset=ret;
163
- }
164
- }
165
- }
166
-
167
- /* we have the offset. Actually snork and hold the page now */
168
- ret=_seek_helper(vf,offset);
169
- if(ret)return(ret);
170
-
171
- ret=_get_next_page(vf,og,CHUNKSIZE);
172
- if(ret<0)
173
- /* this shouldn't be possible */
174
- return(OV_EFAULT);
175
-
176
- return(offset);
177
- }
178
-
179
- static void _add_serialno(ogg_page *og,long **serialno_list, int *n){
180
- long s = ogg_page_serialno(og);
181
- (*n)++;
182
-
183
- if(serialno_list){
184
- *serialno_list = _ogg_realloc(*serialno_list, sizeof(*serialno_list)*(*n));
185
- }else{
186
- *serialno_list = _ogg_malloc(sizeof(**serialno_list));
187
- }
188
-
189
- (*serialno_list)[(*n)-1] = s;
190
- }
191
-
192
- /* returns nonzero if found */
193
- static int _lookup_serialno(ogg_page *og, long *serialno_list, int n){
194
- long s = ogg_page_serialno(og);
195
-
196
- if(serialno_list){
197
- while(n--){
198
- if(*serialno_list == s) return 1;
199
- serialno_list++;
200
- }
201
- }
202
- return 0;
203
- }
204
-
205
- /* start parsing pages at current offset, remembering all serial
206
- numbers. Stop logging at first non-bos page */
207
- static int _get_serialnos(OggVorbis_File *vf, long **s, int *n){
208
- ogg_page og;
209
-
210
- *s=NULL;
211
- *n=0;
212
-
213
- while(1){
214
- ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE);
215
- if(llret==OV_EOF)return(0);
216
- if(llret<0)return(llret);
217
- if(!ogg_page_bos(&og)) return 0;
218
-
219
- /* look for duplicate serialnos; add this one if unique */
220
- if(_lookup_serialno(&og,*s,*n)){
221
- if(*s)_ogg_free(*s);
222
- *s=0;
223
- *n=0;
224
- return(OV_EBADHEADER);
225
- }
226
-
227
- _add_serialno(&og,s,n);
228
- }
229
- }
230
-
231
- /* finds each bitstream link one at a time using a bisection search
232
- (has to begin by knowing the offset of the lb's initial page).
233
- Recurses for each link so it can alloc the link storage after
234
- finding them all, then unroll and fill the cache at the same time */
235
- static int _bisect_forward_serialno(OggVorbis_File *vf,
236
- ogg_int64_t begin,
237
- ogg_int64_t searched,
238
- ogg_int64_t end,
239
- long *currentno_list,
240
- int currentnos,
241
- long m){
242
- ogg_int64_t endsearched=end;
243
- ogg_int64_t next=end;
244
- ogg_page og;
245
- ogg_int64_t ret;
246
-
247
- /* the below guards against garbage seperating the last and
248
- first pages of two links. */
249
- while(searched<endsearched){
250
- ogg_int64_t bisect;
251
-
252
- if(endsearched-searched<CHUNKSIZE){
253
- bisect=searched;
254
- }else{
255
- bisect=(searched+endsearched)/2;
256
- }
257
-
258
- ret=_seek_helper(vf,bisect);
259
- if(ret)return(ret);
260
-
261
- ret=_get_next_page(vf,&og,-1);
262
- if(ret==OV_EREAD)return(OV_EREAD);
263
- if(ret<0 || !_lookup_serialno(&og,currentno_list,currentnos)){
264
- endsearched=bisect;
265
- if(ret>=0)next=ret;
266
- }else{
267
- searched=ret+og.header_len+og.body_len;
268
- }
269
- }
270
-
271
- {
272
- long *next_serialno_list=NULL;
273
- int next_serialnos=0;
274
-
275
- ret=_seek_helper(vf,next);
276
- if(ret)return(ret);
277
- ret=_get_serialnos(vf,&next_serialno_list,&next_serialnos);
278
- if(ret)return(ret);
279
-
280
- if(searched>=end || next_serialnos==0){
281
- vf->links=m+1;
282
- vf->offsets=_ogg_malloc((vf->links+1)*sizeof(*vf->offsets));
283
- vf->offsets[m+1]=searched;
284
- }else{
285
- ret=_bisect_forward_serialno(vf,next,vf->offset,
286
- end,next_serialno_list,next_serialnos,m+1);
287
- if(ret)return(ret);
288
- }
289
-
290
- if(next_serialno_list)_ogg_free(next_serialno_list);
291
- }
292
- vf->offsets[m]=begin;
293
- return(0);
294
- }
295
-
296
- /* uses the local ogg_stream storage in vf; this is important for
297
- non-streaming input sources */
298
- static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc,
299
- long *serialno,ogg_page *og_ptr){
300
- ogg_page og;
301
- ogg_packet op;
302
- int i,ret;
303
- int allbos=0;
304
-
305
- if(!og_ptr){
306
- ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE);
307
- if(llret==OV_EREAD)return(OV_EREAD);
308
- if(llret<0)return(OV_ENOTVORBIS);
309
- og_ptr=&og;
310
- }
311
-
312
- vorbis_info_init(vi);
313
- vorbis_comment_init(vc);
314
-
315
- /* extract the first set of vorbis headers we see in the headerset */
316
-
317
- while(1){
318
-
319
- /* if we're past the ID headers, we won't be finding a Vorbis
320
- stream in this link */
321
- if(!ogg_page_bos(og_ptr)){
322
- ret = OV_ENOTVORBIS;
323
- goto bail_header;
324
- }
325
-
326
- /* prospective stream setup; we need a stream to get packets */
327
- ogg_stream_reset_serialno(&vf->os,ogg_page_serialno(og_ptr));
328
- ogg_stream_pagein(&vf->os,og_ptr);
329
-
330
- if(ogg_stream_packetout(&vf->os,&op) > 0 &&
331
- vorbis_synthesis_idheader(&op)){
332
-
333
- /* continue Vorbis header load; past this point, any error will
334
- render this link useless (we won't continue looking for more
335
- Vorbis streams */
336
- if(serialno)*serialno=vf->os.serialno;
337
- vf->ready_state=STREAMSET;
338
- if((ret=vorbis_synthesis_headerin(vi,vc,&op)))
339
- goto bail_header;
340
-
341
- i=0;
342
- while(i<2){ /* get a page loop */
343
-
344
- while(i<2){ /* get a packet loop */
345
-
346
- int result=ogg_stream_packetout(&vf->os,&op);
347
- if(result==0)break;
348
- if(result==-1){
349
- ret=OV_EBADHEADER;
350
- goto bail_header;
351
- }
352
-
353
- if((ret=vorbis_synthesis_headerin(vi,vc,&op)))
354
- goto bail_header;
355
-
356
- i++;
357
- }
358
-
359
- while(i<2){
360
- if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){
361
- ret=OV_EBADHEADER;
362
- goto bail_header;
363
- }
364
-
365
- /* if this page belongs to the correct stream, go parse it */
366
- if(vf->os.serialno == ogg_page_serialno(og_ptr)){
367
- ogg_stream_pagein(&vf->os,og_ptr);
368
- break;
369
- }
370
-
371
- /* if we never see the final vorbis headers before the link
372
- ends, abort */
373
- if(ogg_page_bos(og_ptr)){
374
- if(allbos){
375
- ret = OV_EBADHEADER;
376
- goto bail_header;
377
- }else
378
- allbos=1;
379
- }
380
-
381
- /* otherwise, keep looking */
382
- }
383
- }
384
-
385
- return 0;
386
- }
387
-
388
- /* this wasn't vorbis, get next page, try again */
389
- {
390
- ogg_int64_t llret=_get_next_page(vf,og_ptr,CHUNKSIZE);
391
- if(llret==OV_EREAD)return(OV_EREAD);
392
- if(llret<0)return(OV_ENOTVORBIS);
393
- }
394
- }
395
-
396
- bail_header:
397
- vorbis_info_clear(vi);
398
- vorbis_comment_clear(vc);
399
- vf->ready_state=OPENED;
400
-
401
- return ret;
402
- }
403
-
404
- /* last step of the OggVorbis_File initialization; get all the
405
- vorbis_info structs and PCM positions. Only called by the seekable
406
- initialization (local stream storage is hacked slightly; pay
407
- attention to how that's done) */
408
-
409
- /* this is void and does not propogate errors up because we want to be
410
- able to open and use damaged bitstreams as well as we can. Just
411
- watch out for missing information for links in the OggVorbis_File
412
- struct */
413
- static void _prefetch_all_headers(OggVorbis_File *vf, ogg_int64_t dataoffset){
414
- ogg_page og;
415
- int i;
416
- ogg_int64_t ret;
417
-
418
- vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi));
419
- vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc));
420
- vf->serialnos=_ogg_malloc(vf->links*sizeof(*vf->serialnos));
421
- vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets));
422
- vf->pcmlengths=_ogg_malloc(vf->links*2*sizeof(*vf->pcmlengths));
423
-
424
- for(i=0;i<vf->links;i++){
425
- if(i==0){
426
- /* we already grabbed the initial header earlier. Just set the offset */
427
- vf->serialnos[i]=vf->current_serialno;
428
- vf->dataoffsets[i]=dataoffset;
429
- ret=_seek_helper(vf,dataoffset);
430
- if(ret)
431
- vf->dataoffsets[i]=-1;
432
-
433
- }else{
434
-
435
- /* seek to the location of the initial header */
436
-
437
- ret=_seek_helper(vf,vf->offsets[i]);
438
- if(ret){
439
- vf->dataoffsets[i]=-1;
440
- }else{
441
- if(_fetch_headers(vf,vf->vi+i,vf->vc+i,vf->serialnos+i,NULL)<0){
442
- vf->dataoffsets[i]=-1;
443
- }else{
444
- vf->dataoffsets[i]=vf->offset;
445
- }
446
- }
447
- }
448
-
449
- /* fetch beginning PCM offset */
450
-
451
- if(vf->dataoffsets[i]!=-1){
452
- ogg_int64_t accumulated=0;
453
- long lastblock=-1;
454
- int result;
455
-
456
- ogg_stream_reset_serialno(&vf->os,vf->serialnos[i]);
457
-
458
- while(1){
459
- ogg_packet op;
460
-
461
- ret=_get_next_page(vf,&og,-1);
462
- if(ret<0)
463
- /* this should not be possible unless the file is
464
- truncated/mangled */
465
- break;
466
-
467
- if(ogg_page_bos(&og)) break;
468
-
469
- if(ogg_page_serialno(&og)!=vf->serialnos[i])
470
- continue;
471
-
472
- /* count blocksizes of all frames in the page */
473
- ogg_stream_pagein(&vf->os,&og);
474
- while((result=ogg_stream_packetout(&vf->os,&op))){
475
- if(result>0){ /* ignore holes */
476
- long thisblock=vorbis_packet_blocksize(vf->vi+i,&op);
477
- if(lastblock!=-1)
478
- accumulated+=(lastblock+thisblock)>>2;
479
- lastblock=thisblock;
480
- }
481
- }
482
-
483
- if(ogg_page_granulepos(&og)!=-1){
484
- /* pcm offset of last packet on the first audio page */
485
- accumulated= ogg_page_granulepos(&og)-accumulated;
486
- break;
487
- }
488
- }
489
-
490
- /* less than zero? This is a stream with samples trimmed off
491
- the beginning, a normal occurrence; set the offset to zero */
492
- if(accumulated<0)accumulated=0;
493
-
494
- vf->pcmlengths[i*2]=accumulated;
495
- }
496
-
497
- /* get the PCM length of this link. To do this,
498
- get the last page of the stream */
499
- {
500
- ogg_int64_t end=vf->offsets[i+1];
501
- ret=_seek_helper(vf,end);
502
- if(ret){
503
- /* this should not be possible */
504
- vorbis_info_clear(vf->vi+i);
505
- vorbis_comment_clear(vf->vc+i);
506
- }else{
507
-
508
- while(1){
509
- ret=_get_prev_page(vf,&og);
510
- if(ret<0){
511
- /* this should not be possible */
512
- vorbis_info_clear(vf->vi+i);
513
- vorbis_comment_clear(vf->vc+i);
514
- break;
515
- }
516
- if(ogg_page_serialno(&og)==vf->serialnos[i]){
517
- if(ogg_page_granulepos(&og)!=-1){
518
- vf->pcmlengths[i*2+1]=ogg_page_granulepos(&og)-vf->pcmlengths[i*2];
519
- break;
520
- }
521
- }
522
- vf->offset=ret;
523
- }
524
- }
525
- }
526
- }
527
- }
528
-
529
- static int _make_decode_ready(OggVorbis_File *vf){
530
- if(vf->ready_state>STREAMSET)return 0;
531
- if(vf->ready_state<STREAMSET)return OV_EFAULT;
532
- if(vf->seekable){
533
- if(vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link))
534
- return OV_EBADLINK;
535
- }else{
536
- if(vorbis_synthesis_init(&vf->vd,vf->vi))
537
- return OV_EBADLINK;
538
- }
539
- vorbis_block_init(&vf->vd,&vf->vb);
540
- vf->ready_state=INITSET;
541
- vf->bittrack=0.f;
542
- vf->samptrack=0.f;
543
- return 0;
544
- }
545
-
546
- static int _open_seekable2(OggVorbis_File *vf){
547
- ogg_int64_t dataoffset=vf->offset,end;
548
- long *serialno_list=NULL;
549
- int serialnos=0;
550
- int ret;
551
- ogg_page og;
552
-
553
- /* we're partially open and have a first link header state in
554
- storage in vf */
555
- /* we can seek, so set out learning all about this file */
556
- if(vf->callbacks.seek_func && vf->callbacks.tell_func){
557
- (vf->callbacks.seek_func)(vf->datasource,0,SEEK_END);
558
- vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource);
559
- }else{
560
- vf->offset=vf->end=-1;
561
- }
562
-
563
- /* If seek_func is implemented, tell_func must also be implemented */
564
- if(vf->end==-1) return(OV_EINVAL);
565
-
566
- /* We get the offset for the last page of the physical bitstream.
567
- Most OggVorbis files will contain a single logical bitstream */
568
- end=_get_prev_page(vf,&og);
569
- if(end<0)return(end);
570
-
571
- /* back to beginning, learn all serialnos of first link */
572
- ret=_seek_helper(vf,0);
573
- if(ret)return(ret);
574
- ret=_get_serialnos(vf,&serialno_list,&serialnos);
575
- if(ret)return(ret);
576
-
577
- /* now determine bitstream structure recursively */
578
- if(_bisect_forward_serialno(vf,0,0,end+1,serialno_list,serialnos,0)<0)return(OV_EREAD);
579
- if(serialno_list)_ogg_free(serialno_list);
580
-
581
- /* the initial header memory is referenced by vf after; don't free it */
582
- _prefetch_all_headers(vf,dataoffset);
583
- return(ov_raw_seek(vf,0));
584
- }
585
-
586
- /* clear out the current logical bitstream decoder */
587
- static void _decode_clear(OggVorbis_File *vf){
588
- vorbis_dsp_clear(&vf->vd);
589
- vorbis_block_clear(&vf->vb);
590
- vf->ready_state=OPENED;
591
- }
592
-
593
- /* fetch and process a packet. Handles the case where we're at a
594
- bitstream boundary and dumps the decoding machine. If the decoding
595
- machine is unloaded, it loads it. It also keeps pcm_offset up to
596
- date (seek and read both use this. seek uses a special hack with
597
- readp).
598
-
599
- return: <0) error, OV_HOLE (lost packet) or OV_EOF
600
- 0) need more data (only if readp==0)
601
- 1) got a packet
602
- */
603
-
604
- static int _fetch_and_process_packet(OggVorbis_File *vf,
605
- ogg_packet *op_in,
606
- int readp,
607
- int spanp){
608
- ogg_page og;
609
-
610
- /* handle one packet. Try to fetch it from current stream state */
611
- /* extract packets from page */
612
- while(1){
613
-
614
- /* process a packet if we can. If the machine isn't loaded,
615
- neither is a page */
616
- if(vf->ready_state==INITSET){
617
- while(1) {
618
- ogg_packet op;
619
- ogg_packet *op_ptr=(op_in?op_in:&op);
620
- int result=ogg_stream_packetout(&vf->os,op_ptr);
621
- ogg_int64_t granulepos;
622
-
623
- op_in=NULL;
624
- if(result==-1)return(OV_HOLE); /* hole in the data. */
625
- if(result>0){
626
- /* got a packet. process it */
627
- granulepos=op_ptr->granulepos;
628
- if(!vorbis_synthesis(&vf->vb,op_ptr)){ /* lazy check for lazy
629
- header handling. The
630
- header packets aren't
631
- audio, so if/when we
632
- submit them,
633
- vorbis_synthesis will
634
- reject them */
635
-
636
- /* suck in the synthesis data and track bitrate */
637
- {
638
- int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL);
639
- /* for proper use of libvorbis within libvorbisfile,
640
- oldsamples will always be zero. */
641
- if(oldsamples)return(OV_EFAULT);
642
-
643
- vorbis_synthesis_blockin(&vf->vd,&vf->vb);
644
- vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples;
645
- vf->bittrack+=op_ptr->bytes*8;
646
- }
647
-
648
- /* update the pcm offset. */
649
- if(granulepos!=-1 && !op_ptr->e_o_s){
650
- int link=(vf->seekable?vf->current_link:0);
651
- int i,samples;
652
-
653
- /* this packet has a pcm_offset on it (the last packet
654
- completed on a page carries the offset) After processing
655
- (above), we know the pcm position of the *last* sample
656
- ready to be returned. Find the offset of the *first*
657
-
658
- As an aside, this trick is inaccurate if we begin
659
- reading anew right at the last page; the end-of-stream
660
- granulepos declares the last frame in the stream, and the
661
- last packet of the last page may be a partial frame.
662
- So, we need a previous granulepos from an in-sequence page
663
- to have a reference point. Thus the !op_ptr->e_o_s clause
664
- above */
665
-
666
- if(vf->seekable && link>0)
667
- granulepos-=vf->pcmlengths[link*2];
668
- if(granulepos<0)granulepos=0; /* actually, this
669
- shouldn't be possible
670
- here unless the stream
671
- is very broken */
672
-
673
- samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
674
-
675
- granulepos-=samples;
676
- for(i=0;i<link;i++)
677
- granulepos+=vf->pcmlengths[i*2+1];
678
- vf->pcm_offset=granulepos;
679
- }
680
- return(1);
681
- }
682
- }
683
- else
684
- break;
685
- }
686
- }
687
-
688
- if(vf->ready_state>=OPENED){
689
- ogg_int64_t ret;
690
-
691
- while(1){
692
- /* the loop is not strictly necessary, but there's no sense in
693
- doing the extra checks of the larger loop for the common
694
- case in a multiplexed bistream where the page is simply
695
- part of a different logical bitstream; keep reading until
696
- we get one with the correct serialno */
697
-
698
- if(!readp)return(0);
699
- if((ret=_get_next_page(vf,&og,-1))<0){
700
- return(OV_EOF); /* eof. leave unitialized */
701
- }
702
-
703
- /* bitrate tracking; add the header's bytes here, the body bytes
704
- are done by packet above */
705
- vf->bittrack+=og.header_len*8;
706
-
707
- if(vf->ready_state==INITSET){
708
- if(vf->current_serialno!=ogg_page_serialno(&og)){
709
-
710
- /* two possibilities:
711
- 1) our decoding just traversed a bitstream boundary
712
- 2) another stream is multiplexed into this logical section? */
713
-
714
- if(ogg_page_bos(&og)){
715
- /* boundary case */
716
- if(!spanp)
717
- return(OV_EOF);
718
-
719
- _decode_clear(vf);
720
-
721
- if(!vf->seekable){
722
- vorbis_info_clear(vf->vi);
723
- vorbis_comment_clear(vf->vc);
724
- }
725
- break;
726
-
727
- }else
728
- continue; /* possibility #2 */
729
- }
730
- }
731
-
732
- break;
733
- }
734
- }
735
-
736
- /* Do we need to load a new machine before submitting the page? */
737
- /* This is different in the seekable and non-seekable cases.
738
-
739
- In the seekable case, we already have all the header
740
- information loaded and cached; we just initialize the machine
741
- with it and continue on our merry way.
742
-
743
- In the non-seekable (streaming) case, we'll only be at a
744
- boundary if we just left the previous logical bitstream and
745
- we're now nominally at the header of the next bitstream
746
- */
747
-
748
- if(vf->ready_state!=INITSET){
749
- int link;
750
-
751
- if(vf->ready_state<STREAMSET){
752
- if(vf->seekable){
753
- long serialno = ogg_page_serialno(&og);
754
-
755
- /* match the serialno to bitstream section. We use this rather than
756
- offset positions to avoid problems near logical bitstream
757
- boundaries */
758
-
759
- for(link=0;link<vf->links;link++)
760
- if(vf->serialnos[link]==serialno)break;
761
-
762
- if(link==vf->links) continue; /* not the desired Vorbis
763
- bitstream section; keep
764
- trying */
765
-
766
- vf->current_serialno=serialno;
767
- vf->current_link=link;
768
-
769
- ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
770
- vf->ready_state=STREAMSET;
771
-
772
- }else{
773
- /* we're streaming */
774
- /* fetch the three header packets, build the info struct */
775
-
776
- int ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,&og);
777
- if(ret)return(ret);
778
- vf->current_link++;
779
- link=0;
780
- }
781
- }
782
-
783
- {
784
- int ret=_make_decode_ready(vf);
785
- if(ret<0)return ret;
786
- }
787
- }
788
-
789
- /* the buffered page is the data we want, and we're ready for it;
790
- add it to the stream state */
791
- ogg_stream_pagein(&vf->os,&og);
792
-
793
- }
794
- }
795
-
796
- /* if, eg, 64 bit stdio is configured by default, this will build with
797
- fseek64 */
798
- static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){
799
- if(f==NULL)return(-1);
800
- return fseek(f,off,whence);
801
- }
802
-
803
- static int _ov_open1(void *f,OggVorbis_File *vf,char *initial,
804
- long ibytes, ov_callbacks callbacks){
805
- int offsettest=((f && callbacks.seek_func)?callbacks.seek_func(f,0,SEEK_CUR):-1);
806
- int ret;
807
-
808
- memset(vf,0,sizeof(*vf));
809
- vf->datasource=f;
810
- vf->callbacks = callbacks;
811
-
812
- /* init the framing state */
813
- ogg_sync_init(&vf->oy);
814
-
815
- /* perhaps some data was previously read into a buffer for testing
816
- against other stream types. Allow initialization from this
817
- previously read data (as we may be reading from a non-seekable
818
- stream) */
819
- if(initial){
820
- char *buffer=ogg_sync_buffer(&vf->oy,ibytes);
821
- memcpy(buffer,initial,ibytes);
822
- ogg_sync_wrote(&vf->oy,ibytes);
823
- }
824
-
825
- /* can we seek? Stevens suggests the seek test was portable */
826
- if(offsettest!=-1)vf->seekable=1;
827
-
828
- /* No seeking yet; Set up a 'single' (current) logical bitstream
829
- entry for partial open */
830
- vf->links=1;
831
- vf->vi=_ogg_calloc(vf->links,sizeof(*vf->vi));
832
- vf->vc=_ogg_calloc(vf->links,sizeof(*vf->vc));
833
- ogg_stream_init(&vf->os,-1); /* fill in the serialno later */
834
-
835
- /* Try to fetch the headers, maintaining all the storage */
836
- if((ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,NULL))<0){
837
- vf->datasource=NULL;
838
- ov_clear(vf);
839
- }else
840
- vf->ready_state=PARTOPEN;
841
- return(ret);
842
- }
843
-
844
- static int _ov_open2(OggVorbis_File *vf){
845
- if(vf->ready_state != PARTOPEN) return OV_EINVAL;
846
- vf->ready_state=OPENED;
847
- if(vf->seekable){
848
- int ret=_open_seekable2(vf);
849
- if(ret){
850
- vf->datasource=NULL;
851
- ov_clear(vf);
852
- }
853
- return(ret);
854
- }else
855
- vf->ready_state=STREAMSET;
856
-
857
- return 0;
858
- }
859
-
860
-
861
- /* clear out the OggVorbis_File struct */
862
- int ov_clear(OggVorbis_File *vf){
863
- if(vf){
864
- vorbis_block_clear(&vf->vb);
865
- vorbis_dsp_clear(&vf->vd);
866
- ogg_stream_clear(&vf->os);
867
-
868
- if(vf->vi && vf->links){
869
- int i;
870
- for(i=0;i<vf->links;i++){
871
- vorbis_info_clear(vf->vi+i);
872
- vorbis_comment_clear(vf->vc+i);
873
- }
874
- _ogg_free(vf->vi);
875
- _ogg_free(vf->vc);
876
- }
877
- if(vf->dataoffsets)_ogg_free(vf->dataoffsets);
878
- if(vf->pcmlengths)_ogg_free(vf->pcmlengths);
879
- if(vf->serialnos)_ogg_free(vf->serialnos);
880
- if(vf->offsets)_ogg_free(vf->offsets);
881
- ogg_sync_clear(&vf->oy);
882
- if(vf->datasource && vf->callbacks.close_func)
883
- (vf->callbacks.close_func)(vf->datasource);
884
- memset(vf,0,sizeof(*vf));
885
- }
886
- #ifdef DEBUG_LEAKS
887
- _VDBG_dump();
888
- #endif
889
- return(0);
890
- }
891
-
892
- /* inspects the OggVorbis file and finds/documents all the logical
893
- bitstreams contained in it. Tries to be tolerant of logical
894
- bitstream sections that are truncated/woogie.
895
-
896
- return: -1) error
897
- 0) OK
898
- */
899
-
900
- int ov_open_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
901
- ov_callbacks callbacks){
902
- int ret=_ov_open1(f,vf,initial,ibytes,callbacks);
903
- if(ret)return ret;
904
- return _ov_open2(vf);
905
- }
906
-
907
- int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){
908
- ov_callbacks callbacks = {
909
- (size_t (*)(void *, size_t, size_t, void *)) fread,
910
- (int (*)(void *, ogg_int64_t, int)) _fseek64_wrap,
911
- (int (*)(void *)) fclose,
912
- (long (*)(void *)) ftell
913
- };
914
-
915
- return ov_open_callbacks((void *)f, vf, initial, ibytes, callbacks);
916
- }
917
-
918
- int ov_fopen(char *path,OggVorbis_File *vf){
919
- int ret;
920
- FILE *f = fopen(path,"rb");
921
- if(!f) return -1;
922
-
923
- ret = ov_open(f,vf,NULL,0);
924
- if(ret) fclose(f);
925
- return ret;
926
- }
927
-
928
-
929
- /* cheap hack for game usage where downsampling is desirable; there's
930
- no need for SRC as we can just do it cheaply in libvorbis. */
931
-
932
- int ov_halfrate(OggVorbis_File *vf,int flag){
933
- int i;
934
- if(vf->vi==NULL)return OV_EINVAL;
935
- if(!vf->seekable)return OV_EINVAL;
936
- if(vf->ready_state>=STREAMSET)
937
- _decode_clear(vf); /* clear out stream state; later on libvorbis
938
- will be able to swap this on the fly, but
939
- for now dumping the decode machine is needed
940
- to reinit the MDCT lookups. 1.1 libvorbis
941
- is planned to be able to switch on the fly */
942
-
943
- for(i=0;i<vf->links;i++){
944
- if(vorbis_synthesis_halfrate(vf->vi+i,flag)){
945
- ov_halfrate(vf,0);
946
- return OV_EINVAL;
947
- }
948
- }
949
- return 0;
950
- }
951
-
952
- int ov_halfrate_p(OggVorbis_File *vf){
953
- if(vf->vi==NULL)return OV_EINVAL;
954
- return vorbis_synthesis_halfrate_p(vf->vi);
955
- }
956
-
957
- /* Only partially open the vorbis file; test for Vorbisness, and load
958
- the headers for the first chain. Do not seek (although test for
959
- seekability). Use ov_test_open to finish opening the file, else
960
- ov_clear to close/free it. Same return codes as open. */
961
-
962
- int ov_test_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
963
- ov_callbacks callbacks)
964
- {
965
- return _ov_open1(f,vf,initial,ibytes,callbacks);
966
- }
967
-
968
- int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){
969
- ov_callbacks callbacks = {
970
- (size_t (*)(void *, size_t, size_t, void *)) fread,
971
- (int (*)(void *, ogg_int64_t, int)) _fseek64_wrap,
972
- (int (*)(void *)) fclose,
973
- (long (*)(void *)) ftell
974
- };
975
-
976
- return ov_test_callbacks((void *)f, vf, initial, ibytes, callbacks);
977
- }
978
-
979
- int ov_test_open(OggVorbis_File *vf){
980
- if(vf->ready_state!=PARTOPEN)return(OV_EINVAL);
981
- return _ov_open2(vf);
982
- }
983
-
984
- /* How many logical bitstreams in this physical bitstream? */
985
- long ov_streams(OggVorbis_File *vf){
986
- return vf->links;
987
- }
988
-
989
- /* Is the FILE * associated with vf seekable? */
990
- long ov_seekable(OggVorbis_File *vf){
991
- return vf->seekable;
992
- }
993
-
994
- /* returns the bitrate for a given logical bitstream or the entire
995
- physical bitstream. If the file is open for random access, it will
996
- find the *actual* average bitrate. If the file is streaming, it
997
- returns the nominal bitrate (if set) else the average of the
998
- upper/lower bounds (if set) else -1 (unset).
999
-
1000
- If you want the actual bitrate field settings, get them from the
1001
- vorbis_info structs */
1002
-
1003
- long ov_bitrate(OggVorbis_File *vf,int i){
1004
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1005
- if(i>=vf->links)return(OV_EINVAL);
1006
- if(!vf->seekable && i!=0)return(ov_bitrate(vf,0));
1007
- if(i<0){
1008
- ogg_int64_t bits=0;
1009
- int i;
1010
- float br;
1011
- for(i=0;i<vf->links;i++)
1012
- bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8;
1013
- /* This once read: return(rint(bits/ov_time_total(vf,-1)));
1014
- * gcc 3.x on x86 miscompiled this at optimisation level 2 and above,
1015
- * so this is slightly transformed to make it work.
1016
- */
1017
- br = bits/ov_time_total(vf,-1);
1018
- return(rint(br));
1019
- }else{
1020
- if(vf->seekable){
1021
- /* return the actual bitrate */
1022
- return(rint((vf->offsets[i+1]-vf->dataoffsets[i])*8/ov_time_total(vf,i)));
1023
- }else{
1024
- /* return nominal if set */
1025
- if(vf->vi[i].bitrate_nominal>0){
1026
- return vf->vi[i].bitrate_nominal;
1027
- }else{
1028
- if(vf->vi[i].bitrate_upper>0){
1029
- if(vf->vi[i].bitrate_lower>0){
1030
- return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2;
1031
- }else{
1032
- return vf->vi[i].bitrate_upper;
1033
- }
1034
- }
1035
- return(OV_FALSE);
1036
- }
1037
- }
1038
- }
1039
- }
1040
-
1041
- /* returns the actual bitrate since last call. returns -1 if no
1042
- additional data to offer since last call (or at beginning of stream),
1043
- EINVAL if stream is only partially open
1044
- */
1045
- long ov_bitrate_instant(OggVorbis_File *vf){
1046
- int link=(vf->seekable?vf->current_link:0);
1047
- long ret;
1048
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1049
- if(vf->samptrack==0)return(OV_FALSE);
1050
- ret=vf->bittrack/vf->samptrack*vf->vi[link].rate+.5;
1051
- vf->bittrack=0.f;
1052
- vf->samptrack=0.f;
1053
- return(ret);
1054
- }
1055
-
1056
- /* Guess */
1057
- long ov_serialnumber(OggVorbis_File *vf,int i){
1058
- if(i>=vf->links)return(ov_serialnumber(vf,vf->links-1));
1059
- if(!vf->seekable && i>=0)return(ov_serialnumber(vf,-1));
1060
- if(i<0){
1061
- return(vf->current_serialno);
1062
- }else{
1063
- return(vf->serialnos[i]);
1064
- }
1065
- }
1066
-
1067
- /* returns: total raw (compressed) length of content if i==-1
1068
- raw (compressed) length of that logical bitstream for i==0 to n
1069
- OV_EINVAL if the stream is not seekable (we can't know the length)
1070
- or if stream is only partially open
1071
- */
1072
- ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){
1073
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1074
- if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
1075
- if(i<0){
1076
- ogg_int64_t acc=0;
1077
- int i;
1078
- for(i=0;i<vf->links;i++)
1079
- acc+=ov_raw_total(vf,i);
1080
- return(acc);
1081
- }else{
1082
- return(vf->offsets[i+1]-vf->offsets[i]);
1083
- }
1084
- }
1085
-
1086
- /* returns: total PCM length (samples) of content if i==-1 PCM length
1087
- (samples) of that logical bitstream for i==0 to n
1088
- OV_EINVAL if the stream is not seekable (we can't know the
1089
- length) or only partially open
1090
- */
1091
- ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){
1092
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1093
- if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
1094
- if(i<0){
1095
- ogg_int64_t acc=0;
1096
- int i;
1097
- for(i=0;i<vf->links;i++)
1098
- acc+=ov_pcm_total(vf,i);
1099
- return(acc);
1100
- }else{
1101
- return(vf->pcmlengths[i*2+1]);
1102
- }
1103
- }
1104
-
1105
- /* returns: total seconds of content if i==-1
1106
- seconds in that logical bitstream for i==0 to n
1107
- OV_EINVAL if the stream is not seekable (we can't know the
1108
- length) or only partially open
1109
- */
1110
- double ov_time_total(OggVorbis_File *vf,int i){
1111
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1112
- if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
1113
- if(i<0){
1114
- double acc=0;
1115
- int i;
1116
- for(i=0;i<vf->links;i++)
1117
- acc+=ov_time_total(vf,i);
1118
- return(acc);
1119
- }else{
1120
- return((double)(vf->pcmlengths[i*2+1])/vf->vi[i].rate);
1121
- }
1122
- }
1123
-
1124
- /* seek to an offset relative to the *compressed* data. This also
1125
- scans packets to update the PCM cursor. It will cross a logical
1126
- bitstream boundary, but only if it can't get any packets out of the
1127
- tail of the bitstream we seek to (so no surprises).
1128
-
1129
- returns zero on success, nonzero on failure */
1130
-
1131
- int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){
1132
- ogg_stream_state work_os;
1133
- int ret;
1134
-
1135
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1136
- if(!vf->seekable)
1137
- return(OV_ENOSEEK); /* don't dump machine if we can't seek */
1138
-
1139
- if(pos<0 || pos>vf->end)return(OV_EINVAL);
1140
-
1141
- /* don't yet clear out decoding machine (if it's initialized), in
1142
- the case we're in the same link. Restart the decode lapping, and
1143
- let _fetch_and_process_packet deal with a potential bitstream
1144
- boundary */
1145
- vf->pcm_offset=-1;
1146
- ogg_stream_reset_serialno(&vf->os,
1147
- vf->current_serialno); /* must set serialno */
1148
- vorbis_synthesis_restart(&vf->vd);
1149
-
1150
- ret=_seek_helper(vf,pos);
1151
- if(ret)goto seek_error;
1152
-
1153
- /* we need to make sure the pcm_offset is set, but we don't want to
1154
- advance the raw cursor past good packets just to get to the first
1155
- with a granulepos. That's not equivalent behavior to beginning
1156
- decoding as immediately after the seek position as possible.
1157
-
1158
- So, a hack. We use two stream states; a local scratch state and
1159
- the shared vf->os stream state. We use the local state to
1160
- scan, and the shared state as a buffer for later decode.
1161
-
1162
- Unfortuantely, on the last page we still advance to last packet
1163
- because the granulepos on the last page is not necessarily on a
1164
- packet boundary, and we need to make sure the granpos is
1165
- correct.
1166
- */
1167
-
1168
- {
1169
- ogg_page og;
1170
- ogg_packet op;
1171
- int lastblock=0;
1172
- int accblock=0;
1173
- int thisblock=0;
1174
- int eosflag=0;
1175
-
1176
- ogg_stream_init(&work_os,vf->current_serialno); /* get the memory ready */
1177
- ogg_stream_reset(&work_os); /* eliminate the spurious OV_HOLE
1178
- return from not necessarily
1179
- starting from the beginning */
1180
-
1181
- while(1){
1182
- if(vf->ready_state>=STREAMSET){
1183
- /* snarf/scan a packet if we can */
1184
- int result=ogg_stream_packetout(&work_os,&op);
1185
-
1186
- if(result>0){
1187
-
1188
- if(vf->vi[vf->current_link].codec_setup){
1189
- thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
1190
- if(thisblock<0){
1191
- ogg_stream_packetout(&vf->os,NULL);
1192
- thisblock=0;
1193
- }else{
1194
-
1195
- if(eosflag)
1196
- ogg_stream_packetout(&vf->os,NULL);
1197
- else
1198
- if(lastblock)accblock+=(lastblock+thisblock)>>2;
1199
- }
1200
-
1201
- if(op.granulepos!=-1){
1202
- int i,link=vf->current_link;
1203
- ogg_int64_t granulepos=op.granulepos-vf->pcmlengths[link*2];
1204
- if(granulepos<0)granulepos=0;
1205
-
1206
- for(i=0;i<link;i++)
1207
- granulepos+=vf->pcmlengths[i*2+1];
1208
- vf->pcm_offset=granulepos-accblock;
1209
- break;
1210
- }
1211
- lastblock=thisblock;
1212
- continue;
1213
- }else
1214
- ogg_stream_packetout(&vf->os,NULL);
1215
- }
1216
- }
1217
-
1218
- if(!lastblock){
1219
- if(_get_next_page(vf,&og,-1)<0){
1220
- vf->pcm_offset=ov_pcm_total(vf,-1);
1221
- break;
1222
- }
1223
- }else{
1224
- /* huh? Bogus stream with packets but no granulepos */
1225
- vf->pcm_offset=-1;
1226
- break;
1227
- }
1228
-
1229
- /* has our decoding just traversed a bitstream boundary? */
1230
- if(vf->ready_state>=STREAMSET){
1231
- if(vf->current_serialno!=ogg_page_serialno(&og)){
1232
-
1233
- /* two possibilities:
1234
- 1) our decoding just traversed a bitstream boundary
1235
- 2) another stream is multiplexed into this logical section? */
1236
-
1237
- if(ogg_page_bos(&og)){
1238
- /* we traversed */
1239
- _decode_clear(vf); /* clear out stream state */
1240
- ogg_stream_clear(&work_os);
1241
- } /* else, do nothing; next loop will scoop another page */
1242
- }
1243
- }
1244
-
1245
- if(vf->ready_state<STREAMSET){
1246
- int link;
1247
- long serialno = ogg_page_serialno(&og);
1248
-
1249
- for(link=0;link<vf->links;link++)
1250
- if(vf->serialnos[link]==serialno)break;
1251
-
1252
- if(link==vf->links) continue; /* not the desired Vorbis
1253
- bitstream section; keep
1254
- trying */
1255
- vf->current_link=link;
1256
- vf->current_serialno=serialno;
1257
- ogg_stream_reset_serialno(&vf->os,serialno);
1258
- ogg_stream_reset_serialno(&work_os,serialno);
1259
- vf->ready_state=STREAMSET;
1260
-
1261
- }
1262
-
1263
- ogg_stream_pagein(&vf->os,&og);
1264
- ogg_stream_pagein(&work_os,&og);
1265
- eosflag=ogg_page_eos(&og);
1266
- }
1267
- }
1268
-
1269
- ogg_stream_clear(&work_os);
1270
- vf->bittrack=0.f;
1271
- vf->samptrack=0.f;
1272
- return(0);
1273
-
1274
- seek_error:
1275
- /* dump the machine so we're in a known state */
1276
- vf->pcm_offset=-1;
1277
- ogg_stream_clear(&work_os);
1278
- _decode_clear(vf);
1279
- return OV_EBADLINK;
1280
- }
1281
-
1282
- /* Page granularity seek (faster than sample granularity because we
1283
- don't do the last bit of decode to find a specific sample).
1284
-
1285
- Seek to the last [granule marked] page preceeding the specified pos
1286
- location, such that decoding past the returned point will quickly
1287
- arrive at the requested position. */
1288
- int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
1289
- int link=-1;
1290
- ogg_int64_t result=0;
1291
- ogg_int64_t total=ov_pcm_total(vf,-1);
1292
-
1293
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1294
- if(!vf->seekable)return(OV_ENOSEEK);
1295
-
1296
- if(pos<0 || pos>total)return(OV_EINVAL);
1297
-
1298
- /* which bitstream section does this pcm offset occur in? */
1299
- for(link=vf->links-1;link>=0;link--){
1300
- total-=vf->pcmlengths[link*2+1];
1301
- if(pos>=total)break;
1302
- }
1303
-
1304
- /* search within the logical bitstream for the page with the highest
1305
- pcm_pos preceeding (or equal to) pos. There is a danger here;
1306
- missing pages or incorrect frame number information in the
1307
- bitstream could make our task impossible. Account for that (it
1308
- would be an error condition) */
1309
-
1310
- /* new search algorithm by HB (Nicholas Vinen) */
1311
- {
1312
- ogg_int64_t end=vf->offsets[link+1];
1313
- ogg_int64_t begin=vf->offsets[link];
1314
- ogg_int64_t begintime = vf->pcmlengths[link*2];
1315
- ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime;
1316
- ogg_int64_t target=pos-total+begintime;
1317
- ogg_int64_t best=begin;
1318
-
1319
- ogg_page og;
1320
- while(begin<end){
1321
- ogg_int64_t bisect;
1322
-
1323
- if(end-begin<CHUNKSIZE){
1324
- bisect=begin;
1325
- }else{
1326
- /* take a (pretty decent) guess. */
1327
- bisect=begin +
1328
- (target-begintime)*(end-begin)/(endtime-begintime) - CHUNKSIZE;
1329
- if(bisect<=begin)
1330
- bisect=begin+1;
1331
- }
1332
-
1333
- result=_seek_helper(vf,bisect);
1334
- if(result) goto seek_error;
1335
-
1336
- while(begin<end){
1337
- result=_get_next_page(vf,&og,end-vf->offset);
1338
- if(result==OV_EREAD) goto seek_error;
1339
- if(result<0){
1340
- if(bisect<=begin+1)
1341
- end=begin; /* found it */
1342
- else{
1343
- if(bisect==0) goto seek_error;
1344
- bisect-=CHUNKSIZE;
1345
- if(bisect<=begin)bisect=begin+1;
1346
- result=_seek_helper(vf,bisect);
1347
- if(result) goto seek_error;
1348
- }
1349
- }else{
1350
- ogg_int64_t granulepos;
1351
-
1352
- if(ogg_page_serialno(&og)!=vf->serialnos[link])
1353
- continue;
1354
-
1355
- granulepos=ogg_page_granulepos(&og);
1356
- if(granulepos==-1)continue;
1357
-
1358
- if(granulepos<target){
1359
- best=result; /* raw offset of packet with granulepos */
1360
- begin=vf->offset; /* raw offset of next page */
1361
- begintime=granulepos;
1362
-
1363
- if(target-begintime>44100)break;
1364
- bisect=begin; /* *not* begin + 1 */
1365
- }else{
1366
- if(bisect<=begin+1)
1367
- end=begin; /* found it */
1368
- else{
1369
- if(end==vf->offset){ /* we're pretty close - we'd be stuck in */
1370
- end=result;
1371
- bisect-=CHUNKSIZE; /* an endless loop otherwise. */
1372
- if(bisect<=begin)bisect=begin+1;
1373
- result=_seek_helper(vf,bisect);
1374
- if(result) goto seek_error;
1375
- }else{
1376
- end=bisect;
1377
- endtime=granulepos;
1378
- break;
1379
- }
1380
- }
1381
- }
1382
- }
1383
- }
1384
- }
1385
-
1386
- /* found our page. seek to it, update pcm offset. Easier case than
1387
- raw_seek, don't keep packets preceeding granulepos. */
1388
- {
1389
- ogg_page og;
1390
- ogg_packet op;
1391
-
1392
- /* seek */
1393
- result=_seek_helper(vf,best);
1394
- vf->pcm_offset=-1;
1395
- if(result) goto seek_error;
1396
- result=_get_next_page(vf,&og,-1);
1397
- if(result<0) goto seek_error;
1398
-
1399
- if(link!=vf->current_link){
1400
- /* Different link; dump entire decode machine */
1401
- _decode_clear(vf);
1402
-
1403
- vf->current_link=link;
1404
- vf->current_serialno=vf->serialnos[link];
1405
- vf->ready_state=STREAMSET;
1406
-
1407
- }else{
1408
- vorbis_synthesis_restart(&vf->vd);
1409
- }
1410
-
1411
- ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
1412
- ogg_stream_pagein(&vf->os,&og);
1413
-
1414
- /* pull out all but last packet; the one with granulepos */
1415
- while(1){
1416
- result=ogg_stream_packetpeek(&vf->os,&op);
1417
- if(result==0){
1418
- /* !!! the packet finishing this page originated on a
1419
- preceeding page. Keep fetching previous pages until we
1420
- get one with a granulepos or without the 'continued' flag
1421
- set. Then just use raw_seek for simplicity. */
1422
-
1423
- result=_seek_helper(vf,best);
1424
- if(result<0) goto seek_error;
1425
-
1426
- while(1){
1427
- result=_get_prev_page(vf,&og);
1428
- if(result<0) goto seek_error;
1429
- if(ogg_page_serialno(&og)==vf->current_serialno &&
1430
- (ogg_page_granulepos(&og)>-1 ||
1431
- !ogg_page_continued(&og))){
1432
- return ov_raw_seek(vf,result);
1433
- }
1434
- vf->offset=result;
1435
- }
1436
- }
1437
- if(result<0){
1438
- result = OV_EBADPACKET;
1439
- goto seek_error;
1440
- }
1441
- if(op.granulepos!=-1){
1442
- vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
1443
- if(vf->pcm_offset<0)vf->pcm_offset=0;
1444
- vf->pcm_offset+=total;
1445
- break;
1446
- }else
1447
- result=ogg_stream_packetout(&vf->os,NULL);
1448
- }
1449
- }
1450
- }
1451
-
1452
- /* verify result */
1453
- if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){
1454
- result=OV_EFAULT;
1455
- goto seek_error;
1456
- }
1457
- vf->bittrack=0.f;
1458
- vf->samptrack=0.f;
1459
- return(0);
1460
-
1461
- seek_error:
1462
- /* dump machine so we're in a known state */
1463
- vf->pcm_offset=-1;
1464
- _decode_clear(vf);
1465
- return (int)result;
1466
- }
1467
-
1468
- /* seek to a sample offset relative to the decompressed pcm stream
1469
- returns zero on success, nonzero on failure */
1470
-
1471
- int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){
1472
- int thisblock,lastblock=0;
1473
- int ret=ov_pcm_seek_page(vf,pos);
1474
- if(ret<0)return(ret);
1475
- if((ret=_make_decode_ready(vf)))return ret;
1476
-
1477
- /* discard leading packets we don't need for the lapping of the
1478
- position we want; don't decode them */
1479
-
1480
- while(1){
1481
- ogg_packet op;
1482
- ogg_page og;
1483
-
1484
- int ret=ogg_stream_packetpeek(&vf->os,&op);
1485
- if(ret>0){
1486
- thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
1487
- if(thisblock<0){
1488
- ogg_stream_packetout(&vf->os,NULL);
1489
- continue; /* non audio packet */
1490
- }
1491
- if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2;
1492
-
1493
- if(vf->pcm_offset+((thisblock+
1494
- vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break;
1495
-
1496
- /* remove the packet from packet queue and track its granulepos */
1497
- ogg_stream_packetout(&vf->os,NULL);
1498
- vorbis_synthesis_trackonly(&vf->vb,&op); /* set up a vb with
1499
- only tracking, no
1500
- pcm_decode */
1501
- vorbis_synthesis_blockin(&vf->vd,&vf->vb);
1502
-
1503
- /* end of logical stream case is hard, especially with exact
1504
- length positioning. */
1505
-
1506
- if(op.granulepos>-1){
1507
- int i;
1508
- /* always believe the stream markers */
1509
- vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
1510
- if(vf->pcm_offset<0)vf->pcm_offset=0;
1511
- for(i=0;i<vf->current_link;i++)
1512
- vf->pcm_offset+=vf->pcmlengths[i*2+1];
1513
- }
1514
-
1515
- lastblock=thisblock;
1516
-
1517
- }else{
1518
- if(ret<0 && ret!=OV_HOLE)break;
1519
-
1520
- /* suck in a new page */
1521
- if(_get_next_page(vf,&og,-1)<0)break;
1522
- if(ogg_page_bos(&og))_decode_clear(vf);
1523
-
1524
- if(vf->ready_state<STREAMSET){
1525
- long serialno=ogg_page_serialno(&og);
1526
- int link;
1527
-
1528
- for(link=0;link<vf->links;link++)
1529
- if(vf->serialnos[link]==serialno)break;
1530
- if(link==vf->links) continue;
1531
- vf->current_link=link;
1532
-
1533
- vf->ready_state=STREAMSET;
1534
- vf->current_serialno=ogg_page_serialno(&og);
1535
- ogg_stream_reset_serialno(&vf->os,serialno);
1536
- ret=_make_decode_ready(vf);
1537
- if(ret)return ret;
1538
- lastblock=0;
1539
- }
1540
-
1541
- ogg_stream_pagein(&vf->os,&og);
1542
- }
1543
- }
1544
-
1545
- vf->bittrack=0.f;
1546
- vf->samptrack=0.f;
1547
- /* discard samples until we reach the desired position. Crossing a
1548
- logical bitstream boundary with abandon is OK. */
1549
- while(vf->pcm_offset<pos){
1550
- ogg_int64_t target=pos-vf->pcm_offset;
1551
- long samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
1552
-
1553
- if(samples>target)samples=target;
1554
- vorbis_synthesis_read(&vf->vd,samples);
1555
- vf->pcm_offset+=samples;
1556
-
1557
- if(samples<target)
1558
- if(_fetch_and_process_packet(vf,NULL,1,1)<=0)
1559
- vf->pcm_offset=ov_pcm_total(vf,-1); /* eof */
1560
- }
1561
- return 0;
1562
- }
1563
-
1564
- /* seek to a playback time relative to the decompressed pcm stream
1565
- returns zero on success, nonzero on failure */
1566
- int ov_time_seek(OggVorbis_File *vf,double seconds){
1567
- /* translate time to PCM position and call ov_pcm_seek */
1568
-
1569
- int link=-1;
1570
- ogg_int64_t pcm_total=0;
1571
- double time_total=0.;
1572
-
1573
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1574
- if(!vf->seekable)return(OV_ENOSEEK);
1575
- if(seconds<0)return(OV_EINVAL);
1576
-
1577
- /* which bitstream section does this time offset occur in? */
1578
- for(link=0;link<vf->links;link++){
1579
- double addsec = ov_time_total(vf,link);
1580
- if(seconds<time_total+addsec)break;
1581
- time_total+=addsec;
1582
- pcm_total+=vf->pcmlengths[link*2+1];
1583
- }
1584
-
1585
- if(link==vf->links)return(OV_EINVAL);
1586
-
1587
- /* enough information to convert time offset to pcm offset */
1588
- {
1589
- ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
1590
- return(ov_pcm_seek(vf,target));
1591
- }
1592
- }
1593
-
1594
- /* page-granularity version of ov_time_seek
1595
- returns zero on success, nonzero on failure */
1596
- int ov_time_seek_page(OggVorbis_File *vf,double seconds){
1597
- /* translate time to PCM position and call ov_pcm_seek */
1598
-
1599
- int link=-1;
1600
- ogg_int64_t pcm_total=0;
1601
- double time_total=0.;
1602
-
1603
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1604
- if(!vf->seekable)return(OV_ENOSEEK);
1605
- if(seconds<0)return(OV_EINVAL);
1606
-
1607
- /* which bitstream section does this time offset occur in? */
1608
- for(link=0;link<vf->links;link++){
1609
- double addsec = ov_time_total(vf,link);
1610
- if(seconds<time_total+addsec)break;
1611
- time_total+=addsec;
1612
- pcm_total+=vf->pcmlengths[link*2+1];
1613
- }
1614
-
1615
- if(link==vf->links)return(OV_EINVAL);
1616
-
1617
- /* enough information to convert time offset to pcm offset */
1618
- {
1619
- ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
1620
- return(ov_pcm_seek_page(vf,target));
1621
- }
1622
- }
1623
-
1624
- /* tell the current stream offset cursor. Note that seek followed by
1625
- tell will likely not give the set offset due to caching */
1626
- ogg_int64_t ov_raw_tell(OggVorbis_File *vf){
1627
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1628
- return(vf->offset);
1629
- }
1630
-
1631
- /* return PCM offset (sample) of next PCM sample to be read */
1632
- ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){
1633
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1634
- return(vf->pcm_offset);
1635
- }
1636
-
1637
- /* return time offset (seconds) of next PCM sample to be read */
1638
- double ov_time_tell(OggVorbis_File *vf){
1639
- int link=0;
1640
- ogg_int64_t pcm_total=0;
1641
- double time_total=0.f;
1642
-
1643
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1644
- if(vf->seekable){
1645
- pcm_total=ov_pcm_total(vf,-1);
1646
- time_total=ov_time_total(vf,-1);
1647
-
1648
- /* which bitstream section does this time offset occur in? */
1649
- for(link=vf->links-1;link>=0;link--){
1650
- pcm_total-=vf->pcmlengths[link*2+1];
1651
- time_total-=ov_time_total(vf,link);
1652
- if(vf->pcm_offset>=pcm_total)break;
1653
- }
1654
- }
1655
-
1656
- return((double)time_total+(double)(vf->pcm_offset-pcm_total)/vf->vi[link].rate);
1657
- }
1658
-
1659
- /* link: -1) return the vorbis_info struct for the bitstream section
1660
- currently being decoded
1661
- 0-n) to request information for a specific bitstream section
1662
-
1663
- In the case of a non-seekable bitstream, any call returns the
1664
- current bitstream. NULL in the case that the machine is not
1665
- initialized */
1666
-
1667
- vorbis_info *ov_info(OggVorbis_File *vf,int link){
1668
- if(vf->seekable){
1669
- if(link<0)
1670
- if(vf->ready_state>=STREAMSET)
1671
- return vf->vi+vf->current_link;
1672
- else
1673
- return vf->vi;
1674
- else
1675
- if(link>=vf->links)
1676
- return NULL;
1677
- else
1678
- return vf->vi+link;
1679
- }else{
1680
- return vf->vi;
1681
- }
1682
- }
1683
-
1684
- /* grr, strong typing, grr, no templates/inheritence, grr */
1685
- vorbis_comment *ov_comment(OggVorbis_File *vf,int link){
1686
- if(vf->seekable){
1687
- if(link<0)
1688
- if(vf->ready_state>=STREAMSET)
1689
- return vf->vc+vf->current_link;
1690
- else
1691
- return vf->vc;
1692
- else
1693
- if(link>=vf->links)
1694
- return NULL;
1695
- else
1696
- return vf->vc+link;
1697
- }else{
1698
- return vf->vc;
1699
- }
1700
- }
1701
-
1702
- static int host_is_big_endian() {
1703
- ogg_int32_t pattern = 0xfeedface; /* deadbeef */
1704
- unsigned char *bytewise = (unsigned char *)&pattern;
1705
- if (bytewise[0] == 0xfe) return 1;
1706
- return 0;
1707
- }
1708
-
1709
- /* up to this point, everything could more or less hide the multiple
1710
- logical bitstream nature of chaining from the toplevel application
1711
- if the toplevel application didn't particularly care. However, at
1712
- the point that we actually read audio back, the multiple-section
1713
- nature must surface: Multiple bitstream sections do not necessarily
1714
- have to have the same number of channels or sampling rate.
1715
-
1716
- ov_read returns the sequential logical bitstream number currently
1717
- being decoded along with the PCM data in order that the toplevel
1718
- application can take action on channel/sample rate changes. This
1719
- number will be incremented even for streamed (non-seekable) streams
1720
- (for seekable streams, it represents the actual logical bitstream
1721
- index within the physical bitstream. Note that the accessor
1722
- functions above are aware of this dichotomy).
1723
-
1724
- input values: buffer) a buffer to hold packed PCM data for return
1725
- length) the byte length requested to be placed into buffer
1726
- bigendianp) should the data be packed LSB first (0) or
1727
- MSB first (1)
1728
- word) word size for output. currently 1 (byte) or
1729
- 2 (16 bit short)
1730
-
1731
- return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
1732
- 0) EOF
1733
- n) number of bytes of PCM actually returned. The
1734
- below works on a packet-by-packet basis, so the
1735
- return length is not related to the 'length' passed
1736
- in, just guaranteed to fit.
1737
-
1738
- *section) set to the logical bitstream number */
1739
-
1740
- long ov_read(OggVorbis_File *vf,char *buffer,int length,
1741
- int bigendianp,int word,int sgned,int *bitstream){
1742
- int i,j;
1743
- int host_endian = host_is_big_endian();
1744
-
1745
- float **pcm;
1746
- long samples;
1747
-
1748
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1749
-
1750
- while(1){
1751
- if(vf->ready_state==INITSET){
1752
- samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
1753
- if(samples)break;
1754
- }
1755
-
1756
- /* suck in another packet */
1757
- {
1758
- int ret=_fetch_and_process_packet(vf,NULL,1,1);
1759
- if(ret==OV_EOF)
1760
- return(0);
1761
- if(ret<=0)
1762
- return(ret);
1763
- }
1764
-
1765
- }
1766
-
1767
- if(samples>0){
1768
-
1769
- /* yay! proceed to pack data into the byte buffer */
1770
-
1771
- long channels=ov_info(vf,-1)->channels;
1772
- long bytespersample=word * channels;
1773
- vorbis_fpu_control fpu;
1774
- if(samples>length/bytespersample)samples=length/bytespersample;
1775
-
1776
- if(samples <= 0)
1777
- return OV_EINVAL;
1778
-
1779
- /* a tight loop to pack each size */
1780
- {
1781
- int val;
1782
- if(word==1){
1783
- int off=(sgned?0:128);
1784
- vorbis_fpu_setround(&fpu);
1785
- for(j=0;j<samples;j++)
1786
- for(i=0;i<channels;i++){
1787
- val=vorbis_ftoi(pcm[i][j]*128.f);
1788
- if(val>127)val=127;
1789
- else if(val<-128)val=-128;
1790
- *buffer++=val+off;
1791
- }
1792
- vorbis_fpu_restore(fpu);
1793
- }else{
1794
- int off=(sgned?0:32768);
1795
-
1796
- if(host_endian==bigendianp){
1797
- if(sgned){
1798
-
1799
- vorbis_fpu_setround(&fpu);
1800
- for(i=0;i<channels;i++) { /* It's faster in this order */
1801
- float *src=pcm[i];
1802
- short *dest=((short *)buffer)+i;
1803
- for(j=0;j<samples;j++) {
1804
- val=vorbis_ftoi(src[j]*32768.f);
1805
- if(val>32767)val=32767;
1806
- else if(val<-32768)val=-32768;
1807
- *dest=val;
1808
- dest+=channels;
1809
- }
1810
- }
1811
- vorbis_fpu_restore(fpu);
1812
-
1813
- }else{
1814
-
1815
- vorbis_fpu_setround(&fpu);
1816
- for(i=0;i<channels;i++) {
1817
- float *src=pcm[i];
1818
- short *dest=((short *)buffer)+i;
1819
- for(j=0;j<samples;j++) {
1820
- val=vorbis_ftoi(src[j]*32768.f);
1821
- if(val>32767)val=32767;
1822
- else if(val<-32768)val=-32768;
1823
- *dest=val+off;
1824
- dest+=channels;
1825
- }
1826
- }
1827
- vorbis_fpu_restore(fpu);
1828
-
1829
- }
1830
- }else if(bigendianp){
1831
-
1832
- vorbis_fpu_setround(&fpu);
1833
- for(j=0;j<samples;j++)
1834
- for(i=0;i<channels;i++){
1835
- val=vorbis_ftoi(pcm[i][j]*32768.f);
1836
- if(val>32767)val=32767;
1837
- else if(val<-32768)val=-32768;
1838
- val+=off;
1839
- *buffer++=(val>>8);
1840
- *buffer++=(val&0xff);
1841
- }
1842
- vorbis_fpu_restore(fpu);
1843
-
1844
- }else{
1845
- int val;
1846
- vorbis_fpu_setround(&fpu);
1847
- for(j=0;j<samples;j++)
1848
- for(i=0;i<channels;i++){
1849
- val=vorbis_ftoi(pcm[i][j]*32768.f);
1850
- if(val>32767)val=32767;
1851
- else if(val<-32768)val=-32768;
1852
- val+=off;
1853
- *buffer++=(val&0xff);
1854
- *buffer++=(val>>8);
1855
- }
1856
- vorbis_fpu_restore(fpu);
1857
-
1858
- }
1859
- }
1860
- }
1861
-
1862
- vorbis_synthesis_read(&vf->vd,samples);
1863
- vf->pcm_offset+=samples;
1864
- if(bitstream)*bitstream=vf->current_link;
1865
- return(samples*bytespersample);
1866
- }else{
1867
- return(samples);
1868
- }
1869
- }
1870
-
1871
- /* input values: pcm_channels) a float vector per channel of output
1872
- length) the sample length being read by the app
1873
-
1874
- return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
1875
- 0) EOF
1876
- n) number of samples of PCM actually returned. The
1877
- below works on a packet-by-packet basis, so the
1878
- return length is not related to the 'length' passed
1879
- in, just guaranteed to fit.
1880
-
1881
- *section) set to the logical bitstream number */
1882
-
1883
-
1884
-
1885
- long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int length,
1886
- int *bitstream){
1887
-
1888
- if(vf->ready_state<OPENED)return(OV_EINVAL);
1889
-
1890
- while(1){
1891
- if(vf->ready_state==INITSET){
1892
- float **pcm;
1893
- long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
1894
- if(samples){
1895
- if(pcm_channels)*pcm_channels=pcm;
1896
- if(samples>length)samples=length;
1897
- vorbis_synthesis_read(&vf->vd,samples);
1898
- vf->pcm_offset+=samples;
1899
- if(bitstream)*bitstream=vf->current_link;
1900
- return samples;
1901
-
1902
- }
1903
- }
1904
-
1905
- /* suck in another packet */
1906
- {
1907
- int ret=_fetch_and_process_packet(vf,NULL,1,1);
1908
- if(ret==OV_EOF)return(0);
1909
- if(ret<=0)return(ret);
1910
- }
1911
-
1912
- }
1913
- }
1914
-
1915
- extern float *vorbis_window(vorbis_dsp_state *v,int W);
1916
- extern void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,
1917
- ogg_int64_t off);
1918
-
1919
- static void _ov_splice(float **pcm,float **lappcm,
1920
- int n1, int n2,
1921
- int ch1, int ch2,
1922
- float *w1, float *w2){
1923
- int i,j;
1924
- float *w=w1;
1925
- int n=n1;
1926
-
1927
- if(n1>n2){
1928
- n=n2;
1929
- w=w2;
1930
- }
1931
-
1932
- /* splice */
1933
- for(j=0;j<ch1 && j<ch2;j++){
1934
- float *s=lappcm[j];
1935
- float *d=pcm[j];
1936
-
1937
- for(i=0;i<n;i++){
1938
- float wd=w[i]*w[i];
1939
- float ws=1.-wd;
1940
- d[i]=d[i]*wd + s[i]*ws;
1941
- }
1942
- }
1943
- /* window from zero */
1944
- for(;j<ch2;j++){
1945
- float *d=pcm[j];
1946
- for(i=0;i<n;i++){
1947
- float wd=w[i]*w[i];
1948
- d[i]=d[i]*wd;
1949
- }
1950
- }
1951
-
1952
- }
1953
-
1954
- /* make sure vf is INITSET */
1955
- static int _ov_initset(OggVorbis_File *vf){
1956
- while(1){
1957
- if(vf->ready_state==INITSET)break;
1958
- /* suck in another packet */
1959
- {
1960
- int ret=_fetch_and_process_packet(vf,NULL,1,0);
1961
- if(ret<0 && ret!=OV_HOLE)return(ret);
1962
- }
1963
- }
1964
- return 0;
1965
- }
1966
-
1967
- /* make sure vf is INITSET and that we have a primed buffer; if
1968
- we're crosslapping at a stream section boundary, this also makes
1969
- sure we're sanity checking against the right stream information */
1970
- static int _ov_initprime(OggVorbis_File *vf){
1971
- vorbis_dsp_state *vd=&vf->vd;
1972
- while(1){
1973
- if(vf->ready_state==INITSET)
1974
- if(vorbis_synthesis_pcmout(vd,NULL))break;
1975
-
1976
- /* suck in another packet */
1977
- {
1978
- int ret=_fetch_and_process_packet(vf,NULL,1,0);
1979
- if(ret<0 && ret!=OV_HOLE)return(ret);
1980
- }
1981
- }
1982
- return 0;
1983
- }
1984
-
1985
- /* grab enough data for lapping from vf; this may be in the form of
1986
- unreturned, already-decoded pcm, remaining PCM we will need to
1987
- decode, or synthetic postextrapolation from last packets. */
1988
- static void _ov_getlap(OggVorbis_File *vf,vorbis_info *vi,vorbis_dsp_state *vd,
1989
- float **lappcm,int lapsize){
1990
- int lapcount=0,i;
1991
- float **pcm;
1992
-
1993
- /* try first to decode the lapping data */
1994
- while(lapcount<lapsize){
1995
- int samples=vorbis_synthesis_pcmout(vd,&pcm);
1996
- if(samples){
1997
- if(samples>lapsize-lapcount)samples=lapsize-lapcount;
1998
- for(i=0;i<vi->channels;i++)
1999
- memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
2000
- lapcount+=samples;
2001
- vorbis_synthesis_read(vd,samples);
2002
- }else{
2003
- /* suck in another packet */
2004
- int ret=_fetch_and_process_packet(vf,NULL,1,0); /* do *not* span */
2005
- if(ret==OV_EOF)break;
2006
- }
2007
- }
2008
- if(lapcount<lapsize){
2009
- /* failed to get lapping data from normal decode; pry it from the
2010
- postextrapolation buffering, or the second half of the MDCT
2011
- from the last packet */
2012
- int samples=vorbis_synthesis_lapout(&vf->vd,&pcm);
2013
- if(samples==0){
2014
- for(i=0;i<vi->channels;i++)
2015
- memset(lappcm[i]+lapcount,0,sizeof(**pcm)*lapsize-lapcount);
2016
- lapcount=lapsize;
2017
- }else{
2018
- if(samples>lapsize-lapcount)samples=lapsize-lapcount;
2019
- for(i=0;i<vi->channels;i++)
2020
- memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
2021
- lapcount+=samples;
2022
- }
2023
- }
2024
- }
2025
-
2026
- /* this sets up crosslapping of a sample by using trailing data from
2027
- sample 1 and lapping it into the windowing buffer of sample 2 */
2028
- int ov_crosslap(OggVorbis_File *vf1, OggVorbis_File *vf2){
2029
- vorbis_info *vi1,*vi2;
2030
- float **lappcm;
2031
- float **pcm;
2032
- float *w1,*w2;
2033
- int n1,n2,i,ret,hs1,hs2;
2034
-
2035
- if(vf1==vf2)return(0); /* degenerate case */
2036
- if(vf1->ready_state<OPENED)return(OV_EINVAL);
2037
- if(vf2->ready_state<OPENED)return(OV_EINVAL);
2038
-
2039
- /* the relevant overlap buffers must be pre-checked and pre-primed
2040
- before looking at settings in the event that priming would cross
2041
- a bitstream boundary. So, do it now */
2042
-
2043
- ret=_ov_initset(vf1);
2044
- if(ret)return(ret);
2045
- ret=_ov_initprime(vf2);
2046
- if(ret)return(ret);
2047
-
2048
- vi1=ov_info(vf1,-1);
2049
- vi2=ov_info(vf2,-1);
2050
- hs1=ov_halfrate_p(vf1);
2051
- hs2=ov_halfrate_p(vf2);
2052
-
2053
- lappcm=alloca(sizeof(*lappcm)*vi1->channels);
2054
- n1=vorbis_info_blocksize(vi1,0)>>(1+hs1);
2055
- n2=vorbis_info_blocksize(vi2,0)>>(1+hs2);
2056
- w1=vorbis_window(&vf1->vd,0);
2057
- w2=vorbis_window(&vf2->vd,0);
2058
-
2059
- for(i=0;i<vi1->channels;i++)
2060
- lappcm[i]=alloca(sizeof(**lappcm)*n1);
2061
-
2062
- _ov_getlap(vf1,vi1,&vf1->vd,lappcm,n1);
2063
-
2064
- /* have a lapping buffer from vf1; now to splice it into the lapping
2065
- buffer of vf2 */
2066
- /* consolidate and expose the buffer. */
2067
- vorbis_synthesis_lapout(&vf2->vd,&pcm);
2068
- _analysis_output_always("pcmL",0,pcm[0],n1*2,0,0,0);
2069
- _analysis_output_always("pcmR",0,pcm[1],n1*2,0,0,0);
2070
-
2071
- /* splice */
2072
- _ov_splice(pcm,lappcm,n1,n2,vi1->channels,vi2->channels,w1,w2);
2073
-
2074
- /* done */
2075
- return(0);
2076
- }
2077
-
2078
- static int _ov_64_seek_lap(OggVorbis_File *vf,ogg_int64_t pos,
2079
- int (*localseek)(OggVorbis_File *,ogg_int64_t)){
2080
- vorbis_info *vi;
2081
- float **lappcm;
2082
- float **pcm;
2083
- float *w1,*w2;
2084
- int n1,n2,ch1,ch2,hs;
2085
- int i,ret;
2086
-
2087
- if(vf->ready_state<OPENED)return(OV_EINVAL);
2088
- ret=_ov_initset(vf);
2089
- if(ret)return(ret);
2090
- vi=ov_info(vf,-1);
2091
- hs=ov_halfrate_p(vf);
2092
-
2093
- ch1=vi->channels;
2094
- n1=vorbis_info_blocksize(vi,0)>>(1+hs);
2095
- w1=vorbis_window(&vf->vd,0); /* window arrays from libvorbis are
2096
- persistent; even if the decode state
2097
- from this link gets dumped, this
2098
- window array continues to exist */
2099
-
2100
- lappcm=alloca(sizeof(*lappcm)*ch1);
2101
- for(i=0;i<ch1;i++)
2102
- lappcm[i]=alloca(sizeof(**lappcm)*n1);
2103
- _ov_getlap(vf,vi,&vf->vd,lappcm,n1);
2104
-
2105
- /* have lapping data; seek and prime the buffer */
2106
- ret=localseek(vf,pos);
2107
- if(ret)return ret;
2108
- ret=_ov_initprime(vf);
2109
- if(ret)return(ret);
2110
-
2111
- /* Guard against cross-link changes; they're perfectly legal */
2112
- vi=ov_info(vf,-1);
2113
- ch2=vi->channels;
2114
- n2=vorbis_info_blocksize(vi,0)>>(1+hs);
2115
- w2=vorbis_window(&vf->vd,0);
2116
-
2117
- /* consolidate and expose the buffer. */
2118
- vorbis_synthesis_lapout(&vf->vd,&pcm);
2119
-
2120
- /* splice */
2121
- _ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
2122
-
2123
- /* done */
2124
- return(0);
2125
- }
2126
-
2127
- int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
2128
- return _ov_64_seek_lap(vf,pos,ov_raw_seek);
2129
- }
2130
-
2131
- int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
2132
- return _ov_64_seek_lap(vf,pos,ov_pcm_seek);
2133
- }
2134
-
2135
- int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos){
2136
- return _ov_64_seek_lap(vf,pos,ov_pcm_seek_page);
2137
- }
2138
-
2139
- static int _ov_d_seek_lap(OggVorbis_File *vf,double pos,
2140
- int (*localseek)(OggVorbis_File *,double)){
2141
- vorbis_info *vi;
2142
- float **lappcm;
2143
- float **pcm;
2144
- float *w1,*w2;
2145
- int n1,n2,ch1,ch2,hs;
2146
- int i,ret;
2147
-
2148
- if(vf->ready_state<OPENED)return(OV_EINVAL);
2149
- ret=_ov_initset(vf);
2150
- if(ret)return(ret);
2151
- vi=ov_info(vf,-1);
2152
- hs=ov_halfrate_p(vf);
2153
-
2154
- ch1=vi->channels;
2155
- n1=vorbis_info_blocksize(vi,0)>>(1+hs);
2156
- w1=vorbis_window(&vf->vd,0); /* window arrays from libvorbis are
2157
- persistent; even if the decode state
2158
- from this link gets dumped, this
2159
- window array continues to exist */
2160
-
2161
- lappcm=alloca(sizeof(*lappcm)*ch1);
2162
- for(i=0;i<ch1;i++)
2163
- lappcm[i]=alloca(sizeof(**lappcm)*n1);
2164
- _ov_getlap(vf,vi,&vf->vd,lappcm,n1);
2165
-
2166
- /* have lapping data; seek and prime the buffer */
2167
- ret=localseek(vf,pos);
2168
- if(ret)return ret;
2169
- ret=_ov_initprime(vf);
2170
- if(ret)return(ret);
2171
-
2172
- /* Guard against cross-link changes; they're perfectly legal */
2173
- vi=ov_info(vf,-1);
2174
- ch2=vi->channels;
2175
- n2=vorbis_info_blocksize(vi,0)>>(1+hs);
2176
- w2=vorbis_window(&vf->vd,0);
2177
-
2178
- /* consolidate and expose the buffer. */
2179
- vorbis_synthesis_lapout(&vf->vd,&pcm);
2180
-
2181
- /* splice */
2182
- _ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
2183
-
2184
- /* done */
2185
- return(0);
2186
- }
2187
-
2188
- int ov_time_seek_lap(OggVorbis_File *vf,double pos){
2189
- return _ov_d_seek_lap(vf,pos,ov_time_seek);
2190
- }
2191
-
2192
- int ov_time_seek_page_lap(OggVorbis_File *vf,double pos){
2193
- return _ov_d_seek_lap(vf,pos,ov_time_seek_page);
2194
- }