seal 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. data/.yardopts +1 -0
  2. data/LICENSE +13 -0
  3. data/README.md +265 -0
  4. data/ext/seal/extconf.rb +45 -0
  5. data/include/al/al.h +724 -0
  6. data/include/al/alc.h +277 -0
  7. data/include/al/efx-presets.h +402 -0
  8. data/include/al/efx.h +758 -0
  9. data/include/mpg123/mpg123.h +1034 -0
  10. data/include/ogg/config_types.h +25 -0
  11. data/include/ogg/ogg.h +210 -0
  12. data/include/ogg/os_types.h +147 -0
  13. data/include/seal.h +23 -0
  14. data/include/seal/buf.h +143 -0
  15. data/include/seal/core.h +95 -0
  16. data/include/seal/efs.h +112 -0
  17. data/include/seal/err.h +93 -0
  18. data/include/seal/fmt.h +58 -0
  19. data/include/seal/listener.h +103 -0
  20. data/include/seal/raw.h +86 -0
  21. data/include/seal/rvb.h +520 -0
  22. data/include/seal/src.h +413 -0
  23. data/include/seal/stream.h +81 -0
  24. data/include/vorbis/codec.h +243 -0
  25. data/include/vorbis/vorbisfile.h +206 -0
  26. data/mpg123/AUTHORS +150 -0
  27. data/mpg123/COPYING +773 -0
  28. data/mpg123/ChangeLog +3 -0
  29. data/mpg123/INSTALL +111 -0
  30. data/mpg123/Makefile.am +99 -0
  31. data/mpg123/Makefile.in +1043 -0
  32. data/mpg123/NEWS +1200 -0
  33. data/mpg123/NEWS.libmpg123 +133 -0
  34. data/mpg123/README +203 -0
  35. data/mpg123/TODO +38 -0
  36. data/mpg123/aclocal.m4 +1168 -0
  37. data/mpg123/build/config.guess +1530 -0
  38. data/mpg123/build/config.sub +1782 -0
  39. data/mpg123/build/depcomp +707 -0
  40. data/mpg123/build/install-sh +527 -0
  41. data/mpg123/build/ltmain.sh +9655 -0
  42. data/mpg123/build/missing +330 -0
  43. data/mpg123/configure +20267 -0
  44. data/mpg123/configure.ac +2178 -0
  45. data/mpg123/doc/ACCURACY +2 -0
  46. data/mpg123/doc/BENCHMARKING +110 -0
  47. data/mpg123/doc/BUGS +3 -0
  48. data/mpg123/doc/CONTACT +17 -0
  49. data/mpg123/doc/LICENSE +22 -0
  50. data/mpg123/doc/Makefile.am +32 -0
  51. data/mpg123/doc/Makefile.in +490 -0
  52. data/mpg123/doc/PATENTS +39 -0
  53. data/mpg123/doc/README.3DNOW +56 -0
  54. data/mpg123/doc/README.gain +171 -0
  55. data/mpg123/doc/README.remote +218 -0
  56. data/mpg123/doc/ROAD_TO_LGPL +270 -0
  57. data/mpg123/doc/THANKS +13 -0
  58. data/mpg123/doc/TODO +63 -0
  59. data/mpg123/doc/doxy_examples.c +21 -0
  60. data/mpg123/doc/doxygen.conf +41 -0
  61. data/mpg123/doc/doxyhead.xhtml +12 -0
  62. data/mpg123/doc/examples/dump_seekindex.c +41 -0
  63. data/mpg123/doc/examples/extract_frames.c +92 -0
  64. data/mpg123/doc/examples/feedseek.c +238 -0
  65. data/mpg123/doc/examples/id3dump.c +178 -0
  66. data/mpg123/doc/examples/mpg123_to_wav.c +118 -0
  67. data/mpg123/doc/examples/mpglib.c +92 -0
  68. data/mpg123/doc/examples/scan.c +47 -0
  69. data/mpg123/doc/libmpg123_speed.txt +84 -0
  70. data/mpg123/equalize.dat +37 -0
  71. data/mpg123/libmpg123.pc.in +11 -0
  72. data/mpg123/m4/addrconfig.m4 +34 -0
  73. data/mpg123/m4/libtool.m4 +7982 -0
  74. data/mpg123/m4/ltoptions.m4 +384 -0
  75. data/mpg123/m4/ltsugar.m4 +123 -0
  76. data/mpg123/m4/ltversion.m4 +23 -0
  77. data/mpg123/m4/lt~obsolete.m4 +98 -0
  78. data/mpg123/makedll.sh +19 -0
  79. data/mpg123/man1/mpg123.1 +512 -0
  80. data/mpg123/mpg123.spec +68 -0
  81. data/mpg123/mpg123.spec.in +68 -0
  82. data/mpg123/ports/MSVC++/2005/libmpg123/libmpg123.vcproj +741 -0
  83. data/mpg123/ports/MSVC++/2008/dump_seekindex/dump_seekindex.vcproj +194 -0
  84. data/mpg123/ports/MSVC++/2008/feedseek/feedseek.vcproj +195 -0
  85. data/mpg123/ports/MSVC++/2008/libmpg123/libmpg123.vcproj +1357 -0
  86. data/mpg123/ports/MSVC++/2008/mpg123.sln +44 -0
  87. data/mpg123/ports/MSVC++/2008/mpglib/mpglib.vcproj +191 -0
  88. data/mpg123/ports/MSVC++/2008/scan/scan.vcproj +195 -0
  89. data/mpg123/ports/MSVC++/2008clr/2008clr.sln +81 -0
  90. data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/Program.cs +435 -0
  91. data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/Properties/AssemblyInfo.cs +36 -0
  92. data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/ReplaceReaderclr.csproj +72 -0
  93. data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/Program.cs +331 -0
  94. data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/Properties/AssemblyInfo.cs +36 -0
  95. data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/feedseekclr.csproj +71 -0
  96. data/mpg123/ports/MSVC++/2008clr/examples/scanclr/Program.cs +79 -0
  97. data/mpg123/ports/MSVC++/2008clr/examples/scanclr/Properties/AssemblyInfo.cs +36 -0
  98. data/mpg123/ports/MSVC++/2008clr/examples/scanclr/scanclr.csproj +70 -0
  99. data/mpg123/ports/MSVC++/2008clr/mpg123clr/AssemblyInfo.cpp +76 -0
  100. data/mpg123/ports/MSVC++/2008clr/mpg123clr/ReadMe.txt +165 -0
  101. data/mpg123/ports/MSVC++/2008clr/mpg123clr/advanced.cpp +91 -0
  102. data/mpg123/ports/MSVC++/2008clr/mpg123clr/advanced.h +130 -0
  103. data/mpg123/ports/MSVC++/2008clr/mpg123clr/dllmain.cpp +19 -0
  104. data/mpg123/ports/MSVC++/2008clr/mpg123clr/enum.h +218 -0
  105. data/mpg123/ports/MSVC++/2008clr/mpg123clr/error.cpp +48 -0
  106. data/mpg123/ports/MSVC++/2008clr/mpg123clr/error.h +134 -0
  107. data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v1.cpp +92 -0
  108. data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v1.h +132 -0
  109. data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v2.cpp +138 -0
  110. data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v2.h +152 -0
  111. data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.cpp +896 -0
  112. data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.h +953 -0
  113. data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.rc +102 -0
  114. data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.vcproj +328 -0
  115. data/mpg123/ports/MSVC++/2008clr/mpg123clr/resource.h +14 -0
  116. data/mpg123/ports/MSVC++/2008clr/mpg123clr/stdafx.cpp +8 -0
  117. data/mpg123/ports/MSVC++/2008clr/mpg123clr/stdafx.h +38 -0
  118. data/mpg123/ports/MSVC++/2008clr/mpg123clr/string.cpp +166 -0
  119. data/mpg123/ports/MSVC++/2008clr/mpg123clr/string.h +265 -0
  120. data/mpg123/ports/MSVC++/2008clr/mpg123clr/targetver.h +24 -0
  121. data/mpg123/ports/MSVC++/2008clr/mpg123clr/text.cpp +67 -0
  122. data/mpg123/ports/MSVC++/2008clr/mpg123clr/text.h +111 -0
  123. data/mpg123/ports/MSVC++/2010/dump_seekindex/dump_seekindex.vcxproj +90 -0
  124. data/mpg123/ports/MSVC++/2010/dump_seekindex/dump_seekindex.vcxproj.filters +6 -0
  125. data/mpg123/ports/MSVC++/2010/feedseek/feedseek.vcxproj +95 -0
  126. data/mpg123/ports/MSVC++/2010/feedseek/feedseek.vcxproj.filters +6 -0
  127. data/mpg123/ports/MSVC++/2010/libmpg123/libmpg123.vcxproj +960 -0
  128. data/mpg123/ports/MSVC++/2010/libmpg123/libmpg123.vcxproj.user +3 -0
  129. data/mpg123/ports/MSVC++/2010/libmpg123/yasm.exe +0 -0
  130. data/mpg123/ports/MSVC++/2010/mpg123.sln +38 -0
  131. data/mpg123/ports/MSVC++/2010/scan/scan.vcxproj +93 -0
  132. data/mpg123/ports/MSVC++/2010/scan/scan.vcxproj.filters +6 -0
  133. data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/CORE/CORE_FileIn.H +15 -0
  134. data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/CORE/SourceFilter_MP3.H +139 -0
  135. data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/IIEP_Def.H +206 -0
  136. data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/IIEP_FileIn.H +167 -0
  137. data/mpg123/ports/MSVC++/CMP3Stream/README +4 -0
  138. data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_FileIn.CPP +462 -0
  139. data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_Log.CPP +122 -0
  140. data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_Mutex.CPP +35 -0
  141. data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/SourceFilter_MP3Stream.CPP +586 -0
  142. data/mpg123/ports/MSVC++/CMP3Stream/libMPG123/PLACE_LIBMPG123_SOURCES_HERE +0 -0
  143. data/mpg123/ports/MSVC++/CMP3Stream/libMPG123/libMPG123.vcproj +245 -0
  144. data/mpg123/ports/MSVC++/config.h +35 -0
  145. data/mpg123/ports/MSVC++/examples/feedseek.c +240 -0
  146. data/mpg123/ports/MSVC++/examples/scan.c +47 -0
  147. data/mpg123/ports/MSVC++/mpg123.h +46 -0
  148. data/mpg123/ports/MSVC++/msvc.c +59 -0
  149. data/mpg123/ports/README +26 -0
  150. data/mpg123/ports/Sony_PSP/Makefile.psp +38 -0
  151. data/mpg123/ports/Sony_PSP/README +11 -0
  152. data/mpg123/ports/Sony_PSP/config.h +368 -0
  153. data/mpg123/ports/Sony_PSP/readers.c.patch +2 -0
  154. data/mpg123/ports/Xcode/config.h +197 -0
  155. data/mpg123/ports/Xcode/mpg123.h +17 -0
  156. data/mpg123/ports/Xcode/mpg123.xcodeproj/project.pbxproj +670 -0
  157. data/mpg123/ports/mpg123_.pas +478 -0
  158. data/mpg123/scripts/benchmark-cpu.pl +56 -0
  159. data/mpg123/scripts/tag_lyrics.py +76 -0
  160. data/mpg123/src/Makefile.am +186 -0
  161. data/mpg123/src/Makefile.in +1097 -0
  162. data/mpg123/src/audio.c +725 -0
  163. data/mpg123/src/audio.h +106 -0
  164. data/mpg123/src/buffer.c +312 -0
  165. data/mpg123/src/buffer.h +45 -0
  166. data/mpg123/src/common.c +240 -0
  167. data/mpg123/src/common.h +29 -0
  168. data/mpg123/src/config.h.in +436 -0
  169. data/mpg123/src/control_generic.c +809 -0
  170. data/mpg123/src/equalizer.c +48 -0
  171. data/mpg123/src/genre.c +271 -0
  172. data/mpg123/src/genre.h +15 -0
  173. data/mpg123/src/getlopt.c +148 -0
  174. data/mpg123/src/getlopt.h +77 -0
  175. data/mpg123/src/httpget.c +700 -0
  176. data/mpg123/src/httpget.h +66 -0
  177. data/mpg123/src/legacy_module.c +74 -0
  178. data/mpg123/src/libmpg123/Makefile.am +141 -0
  179. data/mpg123/src/libmpg123/Makefile.in +919 -0
  180. data/mpg123/src/libmpg123/compat.c +138 -0
  181. data/mpg123/src/libmpg123/compat.h +178 -0
  182. data/mpg123/src/libmpg123/dct36_3dnow.S +505 -0
  183. data/mpg123/src/libmpg123/dct36_3dnowext.S +512 -0
  184. data/mpg123/src/libmpg123/dct64.c +174 -0
  185. data/mpg123/src/libmpg123/dct64_3dnow.S +712 -0
  186. data/mpg123/src/libmpg123/dct64_3dnowext.S +714 -0
  187. data/mpg123/src/libmpg123/dct64_altivec.c +315 -0
  188. data/mpg123/src/libmpg123/dct64_i386.c +336 -0
  189. data/mpg123/src/libmpg123/dct64_i486.c +342 -0
  190. data/mpg123/src/libmpg123/dct64_mmx.S +811 -0
  191. data/mpg123/src/libmpg123/dct64_neon.S +297 -0
  192. data/mpg123/src/libmpg123/dct64_neon_float.S +270 -0
  193. data/mpg123/src/libmpg123/dct64_sse.S +454 -0
  194. data/mpg123/src/libmpg123/dct64_sse_float.S +401 -0
  195. data/mpg123/src/libmpg123/dct64_x86_64.S +464 -0
  196. data/mpg123/src/libmpg123/dct64_x86_64_float.S +426 -0
  197. data/mpg123/src/libmpg123/debug.h +171 -0
  198. data/mpg123/src/libmpg123/decode.h +268 -0
  199. data/mpg123/src/libmpg123/dither.c +119 -0
  200. data/mpg123/src/libmpg123/dither.h +23 -0
  201. data/mpg123/src/libmpg123/equalizer.c +17 -0
  202. data/mpg123/src/libmpg123/equalizer_3dnow.S +70 -0
  203. data/mpg123/src/libmpg123/feature.c +106 -0
  204. data/mpg123/src/libmpg123/format.c +521 -0
  205. data/mpg123/src/libmpg123/frame.c +1046 -0
  206. data/mpg123/src/libmpg123/frame.h +410 -0
  207. data/mpg123/src/libmpg123/gapless.h +119 -0
  208. data/mpg123/src/libmpg123/getbits.h +100 -0
  209. data/mpg123/src/libmpg123/getcpuflags.S +91 -0
  210. data/mpg123/src/libmpg123/getcpuflags.h +47 -0
  211. data/mpg123/src/libmpg123/huffman.h +340 -0
  212. data/mpg123/src/libmpg123/icy.c +32 -0
  213. data/mpg123/src/libmpg123/icy.h +38 -0
  214. data/mpg123/src/libmpg123/icy2utf8.c +438 -0
  215. data/mpg123/src/libmpg123/icy2utf8.h +10 -0
  216. data/mpg123/src/libmpg123/id3.c +999 -0
  217. data/mpg123/src/libmpg123/id3.h +43 -0
  218. data/mpg123/src/libmpg123/index.c +134 -0
  219. data/mpg123/src/libmpg123/index.h +59 -0
  220. data/mpg123/src/libmpg123/intsym.h +256 -0
  221. data/mpg123/src/libmpg123/l12_integer_tables.h +278 -0
  222. data/mpg123/src/libmpg123/l2tables.h +164 -0
  223. data/mpg123/src/libmpg123/l3_integer_tables.h +1002 -0
  224. data/mpg123/src/libmpg123/layer1.c +155 -0
  225. data/mpg123/src/libmpg123/layer2.c +371 -0
  226. data/mpg123/src/libmpg123/layer3.c +2053 -0
  227. data/mpg123/src/libmpg123/lfs_alias.c +252 -0
  228. data/mpg123/src/libmpg123/lfs_wrap.c +751 -0
  229. data/mpg123/src/libmpg123/libmpg123.c +1607 -0
  230. data/mpg123/src/libmpg123/mangle.h +74 -0
  231. data/mpg123/src/libmpg123/mpeghead.h +87 -0
  232. data/mpg123/src/libmpg123/mpg123.h.in +1075 -0
  233. data/mpg123/src/libmpg123/mpg123lib_intern.h +338 -0
  234. data/mpg123/src/libmpg123/ntom.c +148 -0
  235. data/mpg123/src/libmpg123/optimize.c +964 -0
  236. data/mpg123/src/libmpg123/optimize.h +219 -0
  237. data/mpg123/src/libmpg123/parse.c +1179 -0
  238. data/mpg123/src/libmpg123/parse.h +25 -0
  239. data/mpg123/src/libmpg123/reader.h +137 -0
  240. data/mpg123/src/libmpg123/readers.c +1235 -0
  241. data/mpg123/src/libmpg123/sample.h +152 -0
  242. data/mpg123/src/libmpg123/stringbuf.c +163 -0
  243. data/mpg123/src/libmpg123/synth.c +816 -0
  244. data/mpg123/src/libmpg123/synth.h +196 -0
  245. data/mpg123/src/libmpg123/synth_3dnow.S +318 -0
  246. data/mpg123/src/libmpg123/synth_3dnowext.S +6 -0
  247. data/mpg123/src/libmpg123/synth_8bit.c +142 -0
  248. data/mpg123/src/libmpg123/synth_8bit.h +86 -0
  249. data/mpg123/src/libmpg123/synth_altivec.c +1057 -0
  250. data/mpg123/src/libmpg123/synth_arm.S +271 -0
  251. data/mpg123/src/libmpg123/synth_arm_accurate.S +287 -0
  252. data/mpg123/src/libmpg123/synth_i486.c +252 -0
  253. data/mpg123/src/libmpg123/synth_i586.S +336 -0
  254. data/mpg123/src/libmpg123/synth_i586_dither.S +375 -0
  255. data/mpg123/src/libmpg123/synth_mmx.S +125 -0
  256. data/mpg123/src/libmpg123/synth_mono.h +64 -0
  257. data/mpg123/src/libmpg123/synth_neon.S +123 -0
  258. data/mpg123/src/libmpg123/synth_neon_accurate.S +173 -0
  259. data/mpg123/src/libmpg123/synth_neon_float.S +149 -0
  260. data/mpg123/src/libmpg123/synth_neon_s32.S +168 -0
  261. data/mpg123/src/libmpg123/synth_ntom.h +213 -0
  262. data/mpg123/src/libmpg123/synth_real.c +404 -0
  263. data/mpg123/src/libmpg123/synth_s32.c +411 -0
  264. data/mpg123/src/libmpg123/synth_sse.S +6 -0
  265. data/mpg123/src/libmpg123/synth_sse3d.h +246 -0
  266. data/mpg123/src/libmpg123/synth_sse_accurate.S +294 -0
  267. data/mpg123/src/libmpg123/synth_sse_float.S +241 -0
  268. data/mpg123/src/libmpg123/synth_sse_s32.S +306 -0
  269. data/mpg123/src/libmpg123/synth_stereo_neon.S +175 -0
  270. data/mpg123/src/libmpg123/synth_stereo_neon_accurate.S +262 -0
  271. data/mpg123/src/libmpg123/synth_stereo_neon_float.S +220 -0
  272. data/mpg123/src/libmpg123/synth_stereo_neon_s32.S +247 -0
  273. data/mpg123/src/libmpg123/synth_stereo_sse_accurate.S +508 -0
  274. data/mpg123/src/libmpg123/synth_stereo_sse_float.S +416 -0
  275. data/mpg123/src/libmpg123/synth_stereo_sse_s32.S +540 -0
  276. data/mpg123/src/libmpg123/synth_stereo_x86_64.S +335 -0
  277. data/mpg123/src/libmpg123/synth_stereo_x86_64_accurate.S +454 -0
  278. data/mpg123/src/libmpg123/synth_stereo_x86_64_float.S +396 -0
  279. data/mpg123/src/libmpg123/synth_stereo_x86_64_s32.S +473 -0
  280. data/mpg123/src/libmpg123/synth_x86_64.S +244 -0
  281. data/mpg123/src/libmpg123/synth_x86_64_accurate.S +301 -0
  282. data/mpg123/src/libmpg123/synth_x86_64_float.S +259 -0
  283. data/mpg123/src/libmpg123/synth_x86_64_s32.S +312 -0
  284. data/mpg123/src/libmpg123/synths.h +52 -0
  285. data/mpg123/src/libmpg123/tabinit.c +294 -0
  286. data/mpg123/src/libmpg123/tabinit_mmx.S +210 -0
  287. data/mpg123/src/libmpg123/testcpu.c +35 -0
  288. data/mpg123/src/libmpg123/true.h +14 -0
  289. data/mpg123/src/local.c +63 -0
  290. data/mpg123/src/local.h +21 -0
  291. data/mpg123/src/metaprint.c +373 -0
  292. data/mpg123/src/metaprint.h +17 -0
  293. data/mpg123/src/module.c +306 -0
  294. data/mpg123/src/module.h +48 -0
  295. data/mpg123/src/mpg123.c +1405 -0
  296. data/mpg123/src/mpg123app.h +171 -0
  297. data/mpg123/src/output/Makefile.am +213 -0
  298. data/mpg123/src/output/Makefile.in +1238 -0
  299. data/mpg123/src/output/aix.c +300 -0
  300. data/mpg123/src/output/alib.c +209 -0
  301. data/mpg123/src/output/alsa.c +297 -0
  302. data/mpg123/src/output/arts.c +117 -0
  303. data/mpg123/src/output/coreaudio.c +370 -0
  304. data/mpg123/src/output/dummy.c +78 -0
  305. data/mpg123/src/output/esd.c +167 -0
  306. data/mpg123/src/output/hp.c +184 -0
  307. data/mpg123/src/output/jack.c +450 -0
  308. data/mpg123/src/output/mint.c +197 -0
  309. data/mpg123/src/output/nas.c +335 -0
  310. data/mpg123/src/output/openal.c +197 -0
  311. data/mpg123/src/output/os2.c +665 -0
  312. data/mpg123/src/output/oss.c +319 -0
  313. data/mpg123/src/output/portaudio.c +255 -0
  314. data/mpg123/src/output/pulse.c +164 -0
  315. data/mpg123/src/output/sdl.c +206 -0
  316. data/mpg123/src/output/sgi.c +213 -0
  317. data/mpg123/src/output/sndio.c +161 -0
  318. data/mpg123/src/output/sun.c +281 -0
  319. data/mpg123/src/output/win32.c +229 -0
  320. data/mpg123/src/playlist.c +596 -0
  321. data/mpg123/src/playlist.h +52 -0
  322. data/mpg123/src/resolver.c +319 -0
  323. data/mpg123/src/resolver.h +25 -0
  324. data/mpg123/src/sfifo.c +146 -0
  325. data/mpg123/src/sfifo.h +95 -0
  326. data/mpg123/src/streamdump.c +74 -0
  327. data/mpg123/src/streamdump.h +20 -0
  328. data/mpg123/src/term.c +479 -0
  329. data/mpg123/src/term.h +81 -0
  330. data/mpg123/src/tests/noise.c +52 -0
  331. data/mpg123/src/tests/plain_id3.c +109 -0
  332. data/mpg123/src/tests/seek_accuracy.c +261 -0
  333. data/mpg123/src/tests/seek_whence.c +56 -0
  334. data/mpg123/src/tests/testtext.h +34 -0
  335. data/mpg123/src/tests/text.c +80 -0
  336. data/mpg123/src/wav.c +464 -0
  337. data/mpg123/src/wavhead.h +68 -0
  338. data/mpg123/src/win32_net.c +599 -0
  339. data/mpg123/src/win32_support.c +191 -0
  340. data/mpg123/src/win32_support.h +152 -0
  341. data/mpg123/src/xfermem.c +321 -0
  342. data/mpg123/src/xfermem.h +74 -0
  343. data/mpg123/windows-builds.sh +137 -0
  344. data/msvc/lib/OpenAL32.lib +0 -0
  345. data/spec/fixtures/heal.ogg +0 -0
  346. data/spec/fixtures/tone_up.wav +0 -0
  347. data/spec/seal/buffer_spec.rb +37 -0
  348. data/spec/seal/core_spec.rb +29 -0
  349. data/spec/seal/effect_slot_spec.rb +38 -0
  350. data/spec/seal/listener_spec.rb +33 -0
  351. data/spec/seal/reverb_spec.rb +51 -0
  352. data/spec/seal/source_spec.rb +370 -0
  353. data/spec/seal/stream_spec.rb +38 -0
  354. data/spec/spec_helper.rb +45 -0
  355. data/spec/support/attribute_examples.rb +75 -0
  356. data/spec/support/audio_object_with_format.rb +27 -0
  357. data/spec/support/movable_object.rb +22 -0
  358. data/src/libogg/bitwise.c +857 -0
  359. data/src/libogg/framing.c +2093 -0
  360. data/src/libvorbis/backends.h +144 -0
  361. data/src/libvorbis/bitrate.c +253 -0
  362. data/src/libvorbis/bitrate.h +59 -0
  363. data/src/libvorbis/block.c +1046 -0
  364. data/src/libvorbis/codebook.c +484 -0
  365. data/src/libvorbis/codebook.h +119 -0
  366. data/src/libvorbis/codec_internal.h +167 -0
  367. data/src/libvorbis/envelope.c +375 -0
  368. data/src/libvorbis/envelope.h +80 -0
  369. data/src/libvorbis/floor0.c +221 -0
  370. data/src/libvorbis/floor1.c +1100 -0
  371. data/src/libvorbis/highlevel.h +58 -0
  372. data/src/libvorbis/info.c +668 -0
  373. data/src/libvorbis/lookup.c +94 -0
  374. data/src/libvorbis/lookup.h +32 -0
  375. data/src/libvorbis/lookup_data.h +192 -0
  376. data/src/libvorbis/lpc.c +160 -0
  377. data/src/libvorbis/lpc.h +29 -0
  378. data/src/libvorbis/lsp.c +456 -0
  379. data/src/libvorbis/lsp.h +28 -0
  380. data/src/libvorbis/mapping0.c +816 -0
  381. data/src/libvorbis/masking.h +785 -0
  382. data/src/libvorbis/mdct.c +563 -0
  383. data/src/libvorbis/mdct.h +71 -0
  384. data/src/libvorbis/misc.h +57 -0
  385. data/src/libvorbis/os.h +186 -0
  386. data/src/libvorbis/psy.c +1206 -0
  387. data/src/libvorbis/psy.h +154 -0
  388. data/src/libvorbis/registry.c +45 -0
  389. data/src/libvorbis/registry.h +32 -0
  390. data/src/libvorbis/res0.c +889 -0
  391. data/src/libvorbis/scales.h +90 -0
  392. data/src/libvorbis/sharedbook.c +579 -0
  393. data/src/libvorbis/smallft.c +1255 -0
  394. data/src/libvorbis/smallft.h +34 -0
  395. data/src/libvorbis/synthesis.c +184 -0
  396. data/src/libvorbis/vorbisfile.c +2337 -0
  397. data/src/libvorbis/window.c +2135 -0
  398. data/src/libvorbis/window.h +26 -0
  399. data/src/rubyext.c +2329 -0
  400. data/src/seal/buf.c +124 -0
  401. data/src/seal/core.c +283 -0
  402. data/src/seal/efs.c +74 -0
  403. data/src/seal/err.c +118 -0
  404. data/src/seal/fmt.c +86 -0
  405. data/src/seal/listener.c +111 -0
  406. data/src/seal/mpg.c +174 -0
  407. data/src/seal/mpg.h +24 -0
  408. data/src/seal/ov.c +180 -0
  409. data/src/seal/ov.h +22 -0
  410. data/src/seal/raw.c +59 -0
  411. data/src/seal/reader.c +102 -0
  412. data/src/seal/reader.h +59 -0
  413. data/src/seal/rvb.c +368 -0
  414. data/src/seal/src.c +654 -0
  415. data/src/seal/stream.c +109 -0
  416. data/src/seal/threading.c +66 -0
  417. data/src/seal/threading.h +20 -0
  418. data/src/seal/wav.c +297 -0
  419. data/src/seal/wav.h +23 -0
  420. data/src/win32api.rb +29 -0
  421. metadata +563 -0
@@ -0,0 +1,106 @@
1
+ /*
2
+ audio: audio output interface
3
+
4
+ copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Michael Hipp
7
+ */
8
+
9
+ /*
10
+ * Audio 'LIB' defines
11
+ */
12
+
13
+
14
+ #ifndef _MPG123_AUDIO_H_
15
+ #define _MPG123_AUDIO_H_
16
+
17
+ #include "compat.h"
18
+ #include "mpg123.h"
19
+ #include "module.h"
20
+
21
+ #define AUDIO_OUT_HEADPHONES 0x01
22
+ #define AUDIO_OUT_INTERNAL_SPEAKER 0x02
23
+ #define AUDIO_OUT_LINE_OUT 0x04
24
+
25
+ enum {
26
+ DECODE_TEST,
27
+ DECODE_AUDIO,
28
+ DECODE_FILE,
29
+ DECODE_BUFFER,
30
+ DECODE_WAV,
31
+ DECODE_AU,
32
+ DECODE_CDR,
33
+ DECODE_AUDIOFILE
34
+ };
35
+
36
+ /* 3% rate tolerance */
37
+ #define AUDIO_RATE_TOLERANCE 3
38
+
39
+ typedef struct audio_output_struct
40
+ {
41
+ int fn; /* filenumber */
42
+ void *userptr; /* driver specific pointer */
43
+
44
+ /* Callbacks */
45
+ int (*open)(struct audio_output_struct *);
46
+ int (*get_formats)(struct audio_output_struct *);
47
+ int (*write)(struct audio_output_struct *, unsigned char *,int);
48
+ void (*flush)(struct audio_output_struct *);
49
+ int (*close)(struct audio_output_struct *);
50
+ int (*deinit)(struct audio_output_struct *);
51
+
52
+ /* the module this belongs to */
53
+ mpg123_module_t *module;
54
+
55
+ char *device; /* device name */
56
+ int flags; /* some bits; namely headphone/speaker/line */
57
+ long rate; /* sample rate */
58
+ long gain; /* output gain */
59
+ int channels; /* number of channels */
60
+ int format; /* format flags */
61
+ int is_open; /* something opened? */
62
+ #define MPG123_OUT_QUIET 1
63
+ int auxflags; /* For now just one: quiet mode (for probing). */
64
+ } audio_output_t;
65
+
66
+ /* Lazy. */
67
+ #define AOQUIET (ao->auxflags & MPG123_OUT_QUIET)
68
+
69
+ struct audio_format_name {
70
+ int val;
71
+ char *name;
72
+ char *sname;
73
+ };
74
+
75
+ #define pitch_rate(rate) (param.pitch == 0 ? (rate) : (long) ((param.pitch+1.0)*(rate)))
76
+
77
+ /* ------ Declarations from "audio.c" ------ */
78
+
79
+ audio_output_t* open_output_module( const char* name );
80
+ void close_output_module( audio_output_t* ao );
81
+ audio_output_t* alloc_audio_output();
82
+ void audio_capabilities(audio_output_t *ao, mpg123_handle *mh);
83
+ int audio_fit_capabilities(audio_output_t *ao,int c,int r);
84
+ const char* audio_encoding_name(const int encoding, const int longer);
85
+ void print_capabilities(audio_output_t *ao, mpg123_handle *mh);
86
+
87
+ int init_output(audio_output_t **ao);
88
+ void exit_output(audio_output_t *ao, int rude);
89
+ int flush_output(audio_output_t *ao, unsigned char *bytes, size_t count);
90
+ int open_output(audio_output_t *ao);
91
+ void close_output(audio_output_t *ao );
92
+ int reset_output(audio_output_t *ao);
93
+ void output_pause(audio_output_t *ao); /* Prepare output for inactivity. */
94
+ void output_unpause(audio_output_t *ao); /* Reactivate output (buffer process). */
95
+
96
+ void audio_enclist(char** list); /* Make a string of encoding names. */
97
+
98
+ /*
99
+ Twiddle audio output rate to yield speedup/down (pitch) effect.
100
+ The actually achieved pitch value is stored in param.pitch.
101
+ Returns 1 if pitch setting succeeded, 0 otherwise.
102
+ */
103
+ int set_pitch(mpg123_handle *fr, audio_output_t *ao, double new_pitch);
104
+
105
+ #endif
106
+
@@ -0,0 +1,312 @@
1
+ /*
2
+ buffer.c: output buffer
3
+
4
+ copyright 1997-2009 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Oliver Fromme
7
+
8
+ I (ThOr) am reviewing this file at about the same daytime as Oliver's timestamp here:
9
+ Mon Apr 14 03:53:18 MET DST 1997
10
+ - dammed night coders;-)
11
+ */
12
+
13
+ #include "mpg123app.h"
14
+
15
+ #ifndef NOXFERMEM
16
+
17
+ #include "common.h"
18
+ #include <errno.h>
19
+ #include "debug.h"
20
+
21
+ int outburst = 32768;
22
+
23
+ static int intflag = FALSE;
24
+ static int usr1flag = FALSE;
25
+
26
+ static void catch_interrupt (void)
27
+ {
28
+ intflag = TRUE;
29
+ }
30
+
31
+ static void catch_usr1 (void)
32
+ {
33
+ usr1flag = TRUE;
34
+ }
35
+
36
+ /* Interfaces to writer process */
37
+
38
+ extern void buffer_sig(int signal, int block);
39
+
40
+ void real_buffer_ignore_lowmem(void)
41
+ {
42
+ if (!buffermem)
43
+ return;
44
+ if(buffermem->wakeme[XF_READER])
45
+ xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_WAKEUP);
46
+ }
47
+
48
+ void real_buffer_end(int rude)
49
+ {
50
+ if (!buffermem)
51
+ return;
52
+ xfermem_putcmd(buffermem->fd[XF_WRITER], rude ? XF_CMD_ABORT : XF_CMD_TERMINATE);
53
+ }
54
+
55
+ void real_buffer_resync(void)
56
+ {
57
+ if(buffermem->justwait)
58
+ {
59
+ buffermem->wakeme[XF_WRITER] = TRUE;
60
+ xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_RESYNC);
61
+ xfermem_getcmd(buffermem->fd[XF_WRITER], TRUE);
62
+ }
63
+ else buffer_sig(SIGINT, TRUE);
64
+ }
65
+
66
+ void real_plain_buffer_resync(void)
67
+ {
68
+ buffer_sig(SIGINT, FALSE);
69
+ }
70
+
71
+ void real_buffer_reset(void)
72
+ {
73
+ buffer_sig(SIGUSR1, TRUE);
74
+ }
75
+
76
+ void real_buffer_start(void)
77
+ {
78
+ if(buffermem->justwait)
79
+ {
80
+ debug("ending buffer's waiting");
81
+ buffermem->justwait = FALSE;
82
+ xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_WAKEUP);
83
+ }
84
+ }
85
+
86
+ void real_buffer_stop()
87
+ {
88
+ buffermem->justwait = TRUE;
89
+ buffer_sig(SIGINT, TRUE);
90
+ }
91
+
92
+ extern int buffer_pid;
93
+
94
+ void buffer_sig(int signal, int block)
95
+ {
96
+ if (!buffermem) return;
97
+
98
+ if (!block)
99
+ { /* Just signal, do not wait for anything. */
100
+ kill(buffer_pid, signal);
101
+ return;
102
+ }
103
+
104
+ /* kill() and the waiting needs to be taken care of properly for parallel execution.
105
+ Nobody reported issues so far, but I want to be sure. */
106
+ if(xfermem_sigblock(XF_WRITER, buffermem, buffer_pid, signal) != XF_CMD_WAKEUP)
107
+ perror("Could not resync/reset buffers");
108
+ return;
109
+ }
110
+
111
+ void buffer_loop(audio_output_t *ao, sigset_t *oldsigset)
112
+ {
113
+ int bytes, outbytes;
114
+ int my_fd = buffermem->fd[XF_READER];
115
+ txfermem *xf = buffermem;
116
+ int done = FALSE;
117
+ int preload;
118
+
119
+ catchsignal (SIGINT, catch_interrupt);
120
+ catchsignal (SIGUSR1, catch_usr1);
121
+ sigprocmask (SIG_SETMASK, oldsigset, NULL);
122
+
123
+ xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
124
+
125
+ debug("audio output: waiting for cap requests");
126
+ /* wait for audio setup queries */
127
+ while(1)
128
+ {
129
+ int cmd;
130
+ cmd = xfermem_block(XF_READER, xf);
131
+ if(cmd == XF_CMD_AUDIOCAP)
132
+ {
133
+ ao->rate = xf->rate;
134
+ ao->channels = xf->channels;
135
+ ao->format = ao->get_formats(ao);
136
+ debug3("formats for %liHz/%ich: 0x%x", ao->rate, ao->channels, ao->format);
137
+ xf->format = ao->format;
138
+ xfermem_putcmd(my_fd, XF_CMD_AUDIOCAP);
139
+ }
140
+ else if(cmd == XF_CMD_WAKEUP)
141
+ {
142
+ debug("got wakeup... leaving config mode");
143
+ xfermem_putcmd(buffermem->fd[XF_READER], XF_CMD_WAKEUP);
144
+ break;
145
+ }
146
+ else
147
+ {
148
+ error1("unexpected command %i", cmd);
149
+ return;
150
+ }
151
+ }
152
+
153
+ /* Fill complete buffer on first run before starting to play.
154
+ * Live mp3 streams constantly approach buffer underrun otherwise. [dk]
155
+ */
156
+ preload = (int)(param.preload*xf->size);
157
+ if(preload > xf->size) preload = xf->size;
158
+ if(preload < 0) preload = 0;
159
+
160
+ for (;;) {
161
+ if (intflag) {
162
+ debug("handle intflag... flushing");
163
+ intflag = FALSE;
164
+ ao->flush(ao);
165
+ /* Either prepare for waiting or empty buffer now. */
166
+ if(!xf->justwait) xf->readindex = xf->freeindex;
167
+ else
168
+ {
169
+ int cmd;
170
+ debug("Prepare for waiting; draining command queue. (There's a lot of wakeup commands pending, usually.)");
171
+ do
172
+ {
173
+ cmd = xfermem_getcmd(my_fd, FALSE);
174
+ /* debug1("drain: %i", cmd); */
175
+ } while(cmd > 0);
176
+ }
177
+ if(xf->wakeme[XF_WRITER]) xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
178
+ }
179
+ if (usr1flag) {
180
+ debug("handling usr1flag");
181
+ usr1flag = FALSE;
182
+ /* close and re-open in order to flush
183
+ * the device's internal buffer before
184
+ * changing the sample rate. [OF]
185
+ */
186
+ /* writer must block when sending SIGUSR1
187
+ * or we will lose all data processed
188
+ * in the meantime! [dk]
189
+ */
190
+ xf->readindex = xf->freeindex;
191
+ /* We've nailed down the new starting location -
192
+ * writer is now safe to go on. [dk]
193
+ */
194
+ if (xf->wakeme[XF_WRITER])
195
+ xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
196
+ ao->rate = xf->rate;
197
+ ao->channels = xf->channels;
198
+ ao->format = xf->format;
199
+ if (reset_output(ao) < 0) {
200
+ error1("failed to reset audio: %s", strerror(errno));
201
+ exit(1);
202
+ }
203
+ }
204
+ if ( (bytes = xfermem_get_usedspace(xf)) < outburst ) {
205
+ /* if we got a buffer underrun we first
206
+ * fill 1/8 of the buffer before continue/start
207
+ * playing */
208
+ if (preload < xf->size>>3)
209
+ preload = xf->size>>3;
210
+ if(preload < outburst)
211
+ preload = outburst;
212
+ }
213
+ debug1("bytes: %i", bytes);
214
+ if(xf->justwait || bytes < preload) {
215
+ int cmd;
216
+ if (done && !bytes) {
217
+ break;
218
+ }
219
+
220
+ if(xf->justwait || !done) {
221
+
222
+ /* Don't spill into errno check below. */
223
+ errno = 0;
224
+ cmd = xfermem_block(XF_READER, xf);
225
+ debug1("got %i", cmd);
226
+ switch(cmd) {
227
+
228
+ /* More input pending. */
229
+ case XF_CMD_WAKEUP_INFO:
230
+ continue;
231
+ /* Yes, we know buffer is low but
232
+ * know we don't care.
233
+ */
234
+ case XF_CMD_WAKEUP:
235
+ break; /* Proceed playing. */
236
+ case XF_CMD_ABORT: /* Immediate end, discard buffer contents. */
237
+ return; /* Cleanup happens outside of buffer_loop()*/
238
+ case XF_CMD_TERMINATE: /* Graceful end, playing stuff in buffer and then return. */
239
+ debug("going to terminate");
240
+ done = TRUE;
241
+ break;
242
+ case XF_CMD_RESYNC:
243
+ debug("ordered resync");
244
+ if (param.outmode == DECODE_AUDIO) ao->flush(ao);
245
+
246
+ xf->readindex = xf->freeindex;
247
+ if (xf->wakeme[XF_WRITER]) xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
248
+ continue;
249
+ break;
250
+ case -1:
251
+ if(intflag || usr1flag) /* Got signal, handle it at top of loop... */
252
+ {
253
+ debug("buffer interrupted");
254
+ continue;
255
+ }
256
+ if(errno)
257
+ error1("Yuck! Error in buffer handling... or somewhere unexpected: %s", strerror(errno));
258
+ done = TRUE;
259
+ xf->readindex = xf->freeindex;
260
+ xfermem_putcmd(xf->fd[XF_READER], XF_CMD_TERMINATE);
261
+ break;
262
+ default:
263
+ fprintf(stderr, "\nEh!? Received unknown command 0x%x in buffer process.\n", cmd);
264
+ }
265
+ }
266
+ }
267
+ /* Hack! The writer issues XF_CMD_WAKEUP when first adjust
268
+ * audio settings. We do not want to lower the preload mark
269
+ * just yet!
270
+ */
271
+ if (xf->justwait || !bytes)
272
+ continue;
273
+ preload = outburst; /* set preload to lower mark */
274
+ if (bytes > xf->size - xf->readindex)
275
+ bytes = xf->size - xf->readindex;
276
+ if (bytes > outburst)
277
+ bytes = outburst;
278
+
279
+ debug("write");
280
+ outbytes = flush_output(ao, (unsigned char*) xf->data + xf->readindex, bytes);
281
+
282
+ if(outbytes < bytes)
283
+ {
284
+ if(outbytes < 0) outbytes = 0;
285
+ if(!intflag && !usr1flag) {
286
+ error1("Ouch ... error while writing audio data: %s", strerror(errno));
287
+ /*
288
+ * done==TRUE tells writer process to stop
289
+ * sending data. There might be some latency
290
+ * involved when resetting readindex to
291
+ * freeindex so we might need more than one
292
+ * cycle to terminate. (The number of cycles
293
+ * should be finite unless I managed to mess
294
+ * up something. ;-) [dk]
295
+ */
296
+ done = TRUE;
297
+ xf->readindex = xf->freeindex;
298
+ xfermem_putcmd(xf->fd[XF_READER], XF_CMD_TERMINATE);
299
+ }
300
+ else debug("buffer interrupted");
301
+ }
302
+ bytes = outbytes;
303
+
304
+ xf->readindex = (xf->readindex + bytes) % xf->size;
305
+ if (xf->wakeme[XF_WRITER])
306
+ xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
307
+ }
308
+ }
309
+
310
+ #endif
311
+
312
+ /* EOF */
@@ -0,0 +1,45 @@
1
+ /*
2
+ buffer.h: output buffer
3
+
4
+ copyright 1999-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Daniel Kobras / Oliver Fromme
7
+ */
8
+
9
+ /*
10
+ * Application specific interaction between main and buffer
11
+ * process. This is much less generic than the functions in
12
+ * xfermem so I chose to put it in buffer.[hc].
13
+ * 01/28/99 [dk]
14
+ */
15
+
16
+ #ifndef _MPG123_BUFFER_H_
17
+ #define _MPG123_BUFFER_H_
18
+
19
+ #ifndef NOXFERMEM
20
+ void real_buffer_ignore_lowmem(void);
21
+ void real_buffer_end(int rude);
22
+ void real_buffer_resync(void);
23
+ void real_plain_buffer_resync(void);
24
+ void real_buffer_reset(void);
25
+ void real_buffer_start(void);
26
+ void real_buffer_stop(void);
27
+ /* Hm, that's funny preprocessor weirdness. */
28
+ #define buffer_start() (param.usebuffer ? real_buffer_start(),0 : 0)
29
+ #define buffer_stop() (param.usebuffer ? real_buffer_stop(),0 : 0)
30
+ #define buffer_reset() (param.usebuffer ? real_buffer_reset(),0 : 0)
31
+ #define buffer_resync() (param.usebuffer ? real_buffer_resync(),0 : 0)
32
+ #define plain_buffer_resync() (param.usebuffer ? real_plain_buffer_resync(),0 : 0)
33
+ #define buffer_end(a) (param.usebuffer ? real_buffer_end(a),0 : 0)
34
+ #define buffer_ignore_lowmem() (param.usebuffer ? real_buffer_ignore_lowmem(),0 : 0)
35
+ #else
36
+ #define buffer_start()
37
+ #define buffer_stop()
38
+ #define buffer_reset()
39
+ #define buffer_resync()
40
+ #define plain_buffer_resync()
41
+ #define buffer_end()
42
+ #define buffer_ignore_lowmem()
43
+ #endif
44
+
45
+ #endif