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,124 @@
1
+ /*
2
+ * buf.c is part of the Scorched End Audio Library (SEAL) and is licensed
3
+ * under the terms of the GNU Lesser General Public License. See COPYING
4
+ * attached with the library.
5
+ */
6
+
7
+ #include <stdlib.h>
8
+ #include <al/al.h>
9
+ #include <seal/buf.h>
10
+ #include <seal/core.h>
11
+ #include <seal/raw.h>
12
+ #include <seal/fmt.h>
13
+ #include <seal/err.h>
14
+ #include "ov.h"
15
+ #include "mpg.h"
16
+ #include "wav.h"
17
+
18
+ seal_err_t
19
+ seal_init_buf(seal_buf_t* buf)
20
+ {
21
+ return _seal_init_obj(buf, alGenBuffers);
22
+ }
23
+
24
+ seal_err_t
25
+ seal_destroy_buf(seal_buf_t* buf)
26
+ {
27
+ return _seal_destroy_obj(buf, alDeleteBuffers, alIsBuffer);
28
+ }
29
+
30
+ seal_err_t
31
+ seal_load2buf(seal_buf_t* buf, const char* filename, seal_fmt_t fmt)
32
+ {
33
+ seal_raw_t raw;
34
+ seal_err_t err;
35
+
36
+ /* `raw.data' will be dynamically allocated by the callee. */
37
+ if ((err = seal_load(&raw, filename, fmt)) != SEAL_OK)
38
+ return err;
39
+
40
+ err = seal_raw2buf(buf, &raw);
41
+ free(raw.data);
42
+
43
+ return err;
44
+ }
45
+
46
+ seal_err_t
47
+ seal_raw2buf(seal_buf_t* buf, seal_raw_t* raw)
48
+ {
49
+ return _seal_raw2buf(buf->id, raw);
50
+ }
51
+
52
+ seal_err_t
53
+ _seal_raw2buf(unsigned int buf, seal_raw_t* raw)
54
+ {
55
+ alBufferData(buf, _seal_get_buf_fmt(raw->attr.nchannels,
56
+ raw->attr.bit_depth),
57
+ raw->data, raw->size, raw->attr.freq);
58
+
59
+ return _seal_get_openal_err();
60
+ }
61
+
62
+ seal_err_t
63
+ seal_get_buf_size(seal_buf_t* buf, int* psize)
64
+ {
65
+ return _seal_geti(buf, AL_SIZE, psize, alGetBufferi);
66
+ }
67
+
68
+ seal_err_t
69
+ seal_get_buf_freq(seal_buf_t* buf, int* pfreq)
70
+ {
71
+ return _seal_geti(buf, AL_FREQUENCY, pfreq, alGetBufferi);
72
+ }
73
+
74
+ seal_err_t
75
+ seal_get_buf_bps(seal_buf_t* buf, int* pbps)
76
+ {
77
+ return _seal_geti(buf, AL_BITS, pbps, alGetBufferi);
78
+ }
79
+
80
+ seal_err_t
81
+ seal_get_buf_nchannels(seal_buf_t* buf, int* pnchannels)
82
+ {
83
+ return _seal_geti(buf, AL_CHANNELS, pnchannels, alGetBufferi);
84
+ }
85
+
86
+ seal_err_t
87
+ seal_load(seal_raw_t* raw, const char* filename, seal_fmt_t fmt)
88
+ {
89
+ seal_err_t err;
90
+
91
+ if ((err = seal_ensure_fmt_known(filename, &fmt)) != SEAL_OK)
92
+ return err;
93
+
94
+ switch (fmt) {
95
+ case SEAL_WAV_FMT:
96
+ return _seal_load_wav(raw, filename);
97
+ case SEAL_OV_FMT:
98
+ return _seal_load_ov(raw, filename);
99
+ case SEAL_MPG_FMT:
100
+ return _seal_load_mpg(raw, filename);
101
+ default:
102
+ return SEAL_BAD_AUDIO;
103
+ }
104
+ }
105
+
106
+ /* All argument will have a single evaluation here. */
107
+ #define RETURN_FMT_CONST(bit_depth, type) do \
108
+ { \
109
+ switch (bit_depth) { \
110
+ case 8: \
111
+ return AL_FORMAT_##type##8; \
112
+ default: \
113
+ return AL_FORMAT_##type##16; \
114
+ } \
115
+ } while (0)
116
+
117
+ int
118
+ _seal_get_buf_fmt(int nchannels, int bit_depth)
119
+ {
120
+ if (nchannels == 1)
121
+ RETURN_FMT_CONST(bit_depth, MONO);
122
+ else
123
+ RETURN_FMT_CONST(bit_depth, STEREO);
124
+ }
@@ -0,0 +1,283 @@
1
+ /*
2
+ * core.c is part of the Scorched End Audio Library (SEAL) and is licensed
3
+ * under the terms of the GNU Lesser General Public License. See COPYING
4
+ * attached with the library.
5
+ */
6
+
7
+ #include <stdlib.h>
8
+ #include <stddef.h>
9
+ #include <al/al.h>
10
+ #include <al/alc.h>
11
+ #include <al/efx.h>
12
+ #include <mpg123/mpg123.h>
13
+ #include <seal/core.h>
14
+ #include <seal/err.h>
15
+
16
+ static int per_src_effect_limit = -1;
17
+
18
+ void _seal_nop() {}
19
+ void* _seal_nop_func() { return 0; }
20
+
21
+ _seal_openal_initializer_t* alGenEffects = (void*) _seal_nop;
22
+ _seal_openal_destroyer_t* alDeleteEffects = (void*) _seal_nop;
23
+ _seal_openal_validator_t* alIsEffect = (void*) _seal_nop_func;
24
+ LPALEFFECTF alEffectf = (void*) _seal_nop;
25
+ LPALEFFECTI alEffecti = (void*) _seal_nop;
26
+ LPALGETEFFECTF alGetEffectf = (void*) _seal_nop;
27
+ LPALGETEFFECTI alGetEffecti = (void*) _seal_nop;
28
+ _seal_openal_initializer_t* alGenAuxiliaryEffectSlots = (void*) _seal_nop;
29
+ _seal_openal_destroyer_t* alDeleteAuxiliaryEffectSlots = (void*) _seal_nop;
30
+ _seal_openal_validator_t* alIsAuxiliaryEffectSlot = (void*) _seal_nop_func;
31
+ LPALAUXILIARYEFFECTSLOTI alAuxiliaryEffectSloti = (void*) _seal_nop;
32
+ LPALAUXILIARYEFFECTSLOTF alAuxiliaryEffectSlotf = (void*) _seal_nop;
33
+ LPALGETAUXILIARYEFFECTSLOTI alGetAuxiliaryEffectSloti = (void*) _seal_nop;
34
+ LPALGETAUXILIARYEFFECTSLOTF alGetAuxiliaryEffectSlotf = (void*) _seal_nop;
35
+
36
+ const char*
37
+ seal_get_version(void)
38
+ {
39
+ return "0.1.0";
40
+ }
41
+
42
+ static
43
+ seal_err_t
44
+ init_ext_proc(void)
45
+ {
46
+ alGenEffects = alGetProcAddress("alGenEffects");
47
+ alDeleteEffects = alGetProcAddress("alDeleteEffects");
48
+ alIsEffect = alGetProcAddress("alIsEffect");
49
+ alEffectf = alGetProcAddress("alEffectf");
50
+ alEffecti = alGetProcAddress("alEffecti");
51
+ alGetEffectf = alGetProcAddress("alGetEffectf");
52
+ alGetEffecti = alGetProcAddress("alGetEffecti");
53
+ alGenAuxiliaryEffectSlots = alGetProcAddress("alGenAuxiliaryEffectSlots");
54
+ alDeleteAuxiliaryEffectSlots =
55
+ alGetProcAddress("alDeleteAuxiliaryEffectSlots");
56
+ alIsAuxiliaryEffectSlot = alGetProcAddress("alIsAuxiliaryEffectSlot");
57
+ alAuxiliaryEffectSloti = alGetProcAddress("alAuxiliaryEffectSloti");
58
+ alAuxiliaryEffectSlotf = alGetProcAddress("alAuxiliaryEffectSlotf");
59
+ alGetAuxiliaryEffectSloti = alGetProcAddress("alGetAuxiliaryEffectSloti");
60
+ alGetAuxiliaryEffectSlotf = alGetProcAddress("alGetAuxiliaryEffectSlotf");
61
+ if (alGenEffects && alDeleteEffects && alIsEffect && alGetEffectf
62
+ && alGetEffecti && alEffectf && alGenAuxiliaryEffectSlots
63
+ && alDeleteAuxiliaryEffectSlots && alIsAuxiliaryEffectSlot
64
+ && alAuxiliaryEffectSloti && alAuxiliaryEffectSlotf
65
+ && alGetAuxiliaryEffectSloti && alGetAuxiliaryEffectSlotf)
66
+ return SEAL_OK;
67
+ else
68
+ return SEAL_NO_EXT_FUNC;
69
+ }
70
+
71
+ static
72
+ void
73
+ reset_ext_proc(void)
74
+ {
75
+ alGenEffects = (void*) _seal_nop;
76
+ alDeleteEffects = (void*) _seal_nop;
77
+ alIsEffect = (void*) _seal_nop_func;
78
+ alEffectf = (void*) _seal_nop;
79
+ alEffecti = (void*) _seal_nop;
80
+ alGetEffectf = (void*) _seal_nop;
81
+ alGetEffecti = (void*) _seal_nop;
82
+ alGenAuxiliaryEffectSlots = (void*) _seal_nop;
83
+ alDeleteAuxiliaryEffectSlots = (void*) _seal_nop;
84
+ alIsAuxiliaryEffectSlot = (void*) _seal_nop_func;
85
+ alAuxiliaryEffectSloti = (void*) _seal_nop;
86
+ alAuxiliaryEffectSlotf = (void*) _seal_nop;
87
+ alGetAuxiliaryEffectSloti = (void*) _seal_nop;
88
+ alGetAuxiliaryEffectSlotf = (void*) _seal_nop;
89
+ }
90
+
91
+ /*
92
+ * Initializes the specified device and creates a single context. SEAL
93
+ * currently does not make use of multiple contexts.
94
+ */
95
+ seal_err_t
96
+ seal_startup(const char* device_name)
97
+ {
98
+ ALCdevice* device;
99
+ ALCcontext* context;
100
+ seal_err_t err;
101
+ ALint attr[] = { ALC_MAX_AUXILIARY_SENDS, 4, 0, 0 };
102
+
103
+ /* Initialize device. */
104
+ device = alcOpenDevice(device_name);
105
+ if (device == 0)
106
+ return SEAL_CANNOT_OPEN_DEVICE;
107
+ alcGetError(device);
108
+
109
+ /* Initialize extensions. */
110
+ if (!alcIsExtensionPresent(device, ALC_EXT_EFX_NAME)) {
111
+ err = SEAL_NO_EFX;
112
+ goto clean_device;
113
+ }
114
+
115
+ /* Initialize context. */
116
+ context = alcCreateContext(device, attr);
117
+ switch (alcGetError(device)) {
118
+ case ALC_INVALID_VALUE:
119
+ err = SEAL_CANNOT_CREATE_CONTEXT;
120
+ goto clean_device;
121
+ case ALC_INVALID_DEVICE:
122
+ err = SEAL_BAD_DEVICE;
123
+ goto clean_device;
124
+ }
125
+ alcMakeContextCurrent(context);
126
+
127
+ err = init_ext_proc();
128
+ if (err != SEAL_OK)
129
+ goto clean_all;
130
+
131
+ /* Initialize libmpg123 (thread-unsafe). */
132
+ if (mpg123_init() != MPG123_OK) {
133
+ err = SEAL_CANNOT_INIT_MPG;
134
+ goto clean_all;
135
+ }
136
+
137
+ /* Reset OpenAL's error state. */
138
+ alGetError();
139
+
140
+ alcGetIntegerv(device, ALC_MAX_AUXILIARY_SENDS, 1,&per_src_effect_limit);
141
+
142
+ return SEAL_OK;
143
+
144
+ clean_all:
145
+ alcMakeContextCurrent(0);
146
+ alcDestroyContext(context);
147
+ clean_device:
148
+ alcCloseDevice(device);
149
+
150
+ return err;
151
+ }
152
+
153
+ /* Finalizes the current device and context. */
154
+ void
155
+ seal_cleanup(void)
156
+ {
157
+ ALCdevice* device;
158
+ ALCcontext* context;
159
+
160
+ mpg123_exit();
161
+
162
+ context = alcGetCurrentContext();
163
+ device = alcGetContextsDevice(context);
164
+ alcMakeContextCurrent(0);
165
+ alcDestroyContext(context);
166
+ alcCloseDevice(device);
167
+
168
+ reset_ext_proc();
169
+ }
170
+
171
+ int
172
+ seal_get_per_src_effect_limit(void)
173
+ {
174
+ return per_src_effect_limit;
175
+ }
176
+
177
+ unsigned int
178
+ _seal_openal_id(void* obj)
179
+ {
180
+ /* Hack: assuming the object id is always at offset 0. */
181
+ return *(unsigned int*) obj;
182
+ }
183
+
184
+ seal_err_t
185
+ _seal_gen_objs(int n, unsigned int* objs,
186
+ _seal_openal_initializer_t* generate)
187
+ {
188
+ generate(n, objs);
189
+
190
+ return _seal_get_openal_err();
191
+ }
192
+
193
+ seal_err_t
194
+ _seal_delete_objs(int n, const unsigned int* objs,
195
+ _seal_openal_destroyer_t* destroy)
196
+ {
197
+ destroy(n, objs);
198
+
199
+ return _seal_get_openal_err();
200
+ }
201
+
202
+ seal_err_t
203
+ _seal_init_obj(void* obj, _seal_openal_initializer_t* allocate)
204
+ {
205
+ return _seal_gen_objs(1, obj, allocate);
206
+ }
207
+
208
+ seal_err_t
209
+ _seal_destroy_obj(void* obj, _seal_openal_destroyer_t* destroy,
210
+ _seal_openal_validator_t* valid)
211
+ {
212
+ if (valid(_seal_openal_id(obj)))
213
+ return _seal_delete_objs(1, obj, destroy);
214
+
215
+ return SEAL_OK;
216
+ }
217
+
218
+ seal_err_t
219
+ _seal_setf(void* obj, int key, float val, _seal_openal_setterf* set)
220
+ {
221
+ set(_seal_openal_id(obj), key, val);
222
+
223
+ return _seal_get_openal_err();
224
+ }
225
+
226
+ seal_err_t
227
+ _seal_getf(void* obj, int key, float* pval, _seal_openal_getterf* get)
228
+ {
229
+ get(_seal_openal_id(obj), key, pval);
230
+
231
+ return _seal_get_openal_err();
232
+ }
233
+
234
+ seal_err_t
235
+ _seal_seti(void* obj, int key, int val, _seal_openal_setteri* set)
236
+ {
237
+ set(_seal_openal_id(obj), key, val);
238
+
239
+ return _seal_get_openal_err();
240
+ }
241
+
242
+ seal_err_t
243
+ _seal_geti(void* obj, int key, int* pval, _seal_openal_getteri* get)
244
+ {
245
+ get(_seal_openal_id(obj), key, pval);
246
+
247
+ return _seal_get_openal_err();
248
+ }
249
+
250
+ seal_err_t
251
+ _seal_getb(void* obj, int key, char* pval, _seal_openal_getteri* get)
252
+ {
253
+ int val;
254
+ seal_err_t err;
255
+
256
+ err = _seal_geti(obj, key, &val, get);
257
+ if (err == SEAL_OK)
258
+ *pval = val;
259
+
260
+ return err;
261
+ }
262
+
263
+ #if defined (__unix__) || defined (__APPLE_CC__)
264
+
265
+ #include <unistd.h>
266
+
267
+ void
268
+ _seal_sleep(unsigned int millisec)
269
+ {
270
+ usleep(millisec * 1000);
271
+ }
272
+
273
+ #elif defined (_WIN32)
274
+
275
+ #include <Windows.h>
276
+
277
+ void
278
+ _seal_sleep(unsigned int millisec)
279
+ {
280
+ SleepEx(millisec, 0);
281
+ }
282
+
283
+ #endif /* __unix__, _WIN32 */
@@ -0,0 +1,74 @@
1
+ #include <al/al.h>
2
+ #include <al/efx.h>
3
+ #include <seal/efs.h>
4
+ #include <seal/core.h>
5
+ #include <seal/err.h>
6
+
7
+ seal_err_t
8
+ seal_init_efs(seal_efs_t* slot)
9
+ {
10
+ return _seal_init_obj(slot, alGenAuxiliaryEffectSlots);
11
+ }
12
+
13
+ seal_err_t
14
+ seal_destroy_efs(seal_efs_t* slot)
15
+ {
16
+ return _seal_destroy_obj(slot, alDeleteAuxiliaryEffectSlots,
17
+ alIsAuxiliaryEffectSlot);
18
+ }
19
+
20
+ seal_err_t
21
+ seal_set_efs_effect(seal_efs_t* slot, void* effect)
22
+ {
23
+ seal_err_t err;
24
+
25
+ err = _seal_seti(slot, AL_EFFECTSLOT_EFFECT,
26
+ effect == 0 ? AL_EFFECT_NULL : _seal_openal_id(effect),
27
+ alAuxiliaryEffectSloti);
28
+ if (err == SEAL_OK)
29
+ slot->effect = effect;
30
+
31
+ return err;
32
+ }
33
+
34
+ seal_err_t
35
+ seal_feed_efs(seal_efs_t* slot, int index, seal_src_t* src)
36
+ {
37
+ alSource3i(src->id, AL_AUXILIARY_SEND_FILTER, slot->id, index,
38
+ AL_FILTER_NULL);
39
+
40
+ return _seal_get_openal_err();
41
+ }
42
+
43
+ seal_err_t
44
+ seal_set_efs_gain(seal_efs_t* slot, float gain)
45
+ {
46
+ return _seal_setf(slot, AL_EFFECTSLOT_GAIN, gain, alAuxiliaryEffectSlotf);
47
+ }
48
+
49
+ seal_err_t
50
+ seal_set_efs_auto(seal_efs_t* slot, char automatic)
51
+ {
52
+ return _seal_seti(slot, AL_EFFECTSLOT_AUXILIARY_SEND_AUTO, automatic,
53
+ alAuxiliaryEffectSloti);
54
+ }
55
+
56
+ void*
57
+ seal_get_efs_effect(seal_efs_t* slot)
58
+ {
59
+ return slot->effect;
60
+ }
61
+
62
+ seal_err_t
63
+ seal_get_efs_gain(seal_efs_t* slot, float* pgain)
64
+ {
65
+ return _seal_getf(slot, AL_EFFECTSLOT_GAIN, pgain,
66
+ alGetAuxiliaryEffectSlotf);
67
+ }
68
+
69
+ seal_err_t
70
+ seal_is_efs_auto(seal_efs_t* slot, char* pauto)
71
+ {
72
+ return _seal_getb(slot, AL_EFFECTSLOT_AUXILIARY_SEND_AUTO, pauto,
73
+ alGetAuxiliaryEffectSloti);
74
+ }