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,109 @@
1
+ /*
2
+ * stream.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 <stddef.h>
8
+ #include <seal/stream.h>
9
+ #include <seal/raw.h>
10
+ #include <seal/fmt.h>
11
+ #include <seal/err.h>
12
+ #include "ov.h"
13
+ #include "mpg.h"
14
+ #include "wav.h"
15
+
16
+ seal_err_t
17
+ seal_open_stream(seal_stream_t* stream, const char* filename, seal_fmt_t fmt)
18
+ {
19
+ seal_err_t err;
20
+
21
+ if ((err = seal_ensure_fmt_known(filename, &fmt)) != SEAL_OK)
22
+ return err;
23
+
24
+ switch (fmt) {
25
+ case SEAL_WAV_FMT:
26
+ err = _seal_init_wav_stream(stream, filename);
27
+ break;
28
+ case SEAL_OV_FMT:
29
+ err = _seal_init_ov_stream(stream, filename);
30
+ break;
31
+ case SEAL_MPG_FMT:
32
+ err = _seal_init_mpg_stream(stream, filename);
33
+ break;
34
+ default:
35
+ return SEAL_BAD_AUDIO;
36
+ }
37
+
38
+ return err;
39
+ }
40
+
41
+ seal_err_t
42
+ seal_stream(seal_stream_t* stream, seal_raw_t* raw, size_t* psize)
43
+ {
44
+ if (stream->id == 0)
45
+ return SEAL_STREAM_UNOPENED;
46
+
47
+ switch (stream->fmt) {
48
+ case SEAL_WAV_FMT:
49
+ return _seal_stream_wav(stream, raw, psize);
50
+ case SEAL_OV_FMT:
51
+ return _seal_stream_ov(stream, raw, psize);
52
+ case SEAL_MPG_FMT:
53
+ return _seal_stream_mpg(stream, raw, psize);
54
+ default:
55
+ return SEAL_BAD_AUDIO;
56
+ }
57
+ }
58
+
59
+ seal_err_t
60
+ seal_rewind_stream(seal_stream_t* stream)
61
+ {
62
+ if (stream->id == 0)
63
+ return SEAL_STREAM_UNOPENED;
64
+
65
+ switch (stream->fmt) {
66
+ case SEAL_WAV_FMT:
67
+ return _seal_rewind_wav_stream(stream);
68
+ case SEAL_OV_FMT:
69
+ return _seal_rewind_ov_stream(stream);
70
+ case SEAL_MPG_FMT:
71
+ return _seal_rewind_mpg_stream(stream);
72
+ default:
73
+ return SEAL_BAD_AUDIO;
74
+ }
75
+
76
+ return SEAL_OK;
77
+ }
78
+
79
+ seal_err_t
80
+ seal_close_stream(seal_stream_t* stream)
81
+ {
82
+ seal_err_t err;
83
+
84
+ if (stream->id == 0)
85
+ return SEAL_STREAM_UNOPENED;
86
+
87
+ switch (stream->fmt) {
88
+ case SEAL_WAV_FMT:
89
+ err = _seal_close_wav_stream(stream);
90
+ break;
91
+ case SEAL_OV_FMT:
92
+ err = _seal_close_ov_stream(stream);
93
+ break;
94
+ case SEAL_MPG_FMT:
95
+ err = _seal_close_mpg_stream(stream);
96
+ break;
97
+ default:
98
+ return SEAL_BAD_AUDIO;
99
+ }
100
+
101
+ if (err == SEAL_OK) {
102
+ stream->id = 0;
103
+ stream->attr.freq = 0;
104
+ stream->attr.nchannels = 1;
105
+ stream->attr.bit_depth = 16;
106
+ }
107
+
108
+ return err;
109
+ }
@@ -0,0 +1,66 @@
1
+ /*
2
+ * threading.c is part of the Scorched End Audio Library (SEAL) and is
3
+ * licensed under the terms of the GNU Lesser General Public License. See
4
+ * COPYING attached with the library.
5
+ */
6
+
7
+ #include <stdlib.h>
8
+ #include <stdint.h>
9
+ #include "threading.h"
10
+
11
+ #if defined (__unix__) || defined (__APPLE_CC__)
12
+ # include <pthread.h>
13
+ # include <unistd.h>
14
+
15
+ void*
16
+ _seal_create_thread(_seal_routine_t* routine, void* args)
17
+ {
18
+ pthread_t thread;
19
+
20
+ pthread_create(&thread, 0, routine, args);
21
+
22
+ return (void*) thread;
23
+ }
24
+
25
+ void
26
+ _seal_join_thread(void* thread)
27
+ {
28
+ pthread_join((pthread_t) thread, 0);
29
+ }
30
+
31
+ int
32
+ _seal_calling_thread_is(void* thread)
33
+ {
34
+ return pthread_self() == (pthread_t) thread;
35
+ }
36
+
37
+ #elif defined (_WIN32)
38
+ # define _WIN32_WINNT 0x0500
39
+ # include <Windows.h>
40
+
41
+ void*
42
+ _seal_create_thread(_seal_routine_t* routine, void* args)
43
+ {
44
+ DWORD thread;
45
+
46
+ CloseHandle(CreateThread(0, 0, (LPTHREAD_START_ROUTINE) routine,
47
+ args, 0, &thread));
48
+
49
+ return (void*) thread;
50
+ }
51
+
52
+ void
53
+ _seal_join_thread(void* thread)
54
+ {
55
+ HANDLE thread_handle = OpenThread(SYNCHRONIZE, 0, (DWORD) thread);
56
+ WaitForSingleObject(thread_handle, INFINITE);
57
+ CloseHandle(thread_handle);
58
+ }
59
+
60
+ int
61
+ _seal_calling_thread_is(void* thread)
62
+ {
63
+ return GetCurrentThreadId() == (DWORD) thread;
64
+ }
65
+
66
+ #endif /* __unix__, _WIN32 */
@@ -0,0 +1,20 @@
1
+ /*
2
+ * threading.h is part of the Scorched End Audio Library (SEAL) and is
3
+ * licensed under the terms of the GNU Lesser General Public License.
4
+ * See COPYING attached with the library.
5
+ *
6
+ * threading.h is an abstraction layer for thread-related operations, which
7
+ * ensures Seal's thread-safety.
8
+ */
9
+
10
+ #ifndef _SEAL_THREADING_H_
11
+ #define _SEAL_THREADING_H_
12
+
13
+ typedef void* _seal_routine_t(void*);
14
+
15
+ /* Thread manipulations. */
16
+ void* _seal_create_thread(_seal_routine_t*, void* /*args*/);
17
+ void _seal_join_thread(void* /*thread*/);
18
+ int _seal_calling_thread_is(void* /*thread*/);
19
+
20
+ #endif /* _SEAL_THREADING_H_ */
@@ -0,0 +1,297 @@
1
+ /*
2
+ * wav.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 <stdio.h>
9
+ #include <seal/raw.h>
10
+ #include <seal/stream.h>
11
+ #include <seal/err.h>
12
+ #include "reader.h"
13
+ #include "wav.h"
14
+
15
+ enum
16
+ {
17
+ FMT_ = SEAL_MKTAG('f', 'm', 't', ' '),
18
+ DATA = SEAL_MKTAG('d', 'a', 't', 'a'),
19
+ FACT = SEAL_MKTAG('f', 'a', 'c', 't'),
20
+ WAVL = SEAL_MKTAG('w', 'a', 'v', 'l'),
21
+ SLNT = SEAL_MKTAG('s', 'l', 'n', 't'),
22
+ CUE_ = SEAL_MKTAG('c', 'u', 'e', ' '),
23
+ PLST = SEAL_MKTAG('p', 'l', 's', 't'),
24
+ LIST = SEAL_MKTAG('l', 'i', 's', 't'),
25
+ LABL = SEAL_MKTAG('l', 'a', 'b', 'l'),
26
+ NOTE = SEAL_MKTAG('n', 'o', 't', 'e'),
27
+ LTXT = SEAL_MKTAG('l', 't', 'x', 't'),
28
+ SMPL = SEAL_MKTAG('s', 'm', 'p', 'l'),
29
+ INST = SEAL_MKTAG('i', 'n', 's', 't')
30
+ };
31
+
32
+ enum io_state_t
33
+ {
34
+ NEED_MORE_CHUNKS,
35
+ NO_MORE_CHUNKS
36
+ };
37
+
38
+ struct wav_stream_t
39
+ {
40
+ FILE* file;
41
+ uint32_t base_offset;
42
+ uint32_t offset;
43
+ uint32_t end_offset;
44
+ };
45
+
46
+ typedef enum io_state_t io_state_t;
47
+ typedef struct wav_stream_t wav_stream_t;
48
+
49
+ static const uint16_t PCM_CODE = 1;
50
+ static const uint32_t CHUNK_MIN_SIZE = 4;
51
+
52
+ static
53
+ seal_err_t
54
+ read_fmt_(seal_raw_attr_t* attr, uint32_t chunk_size, FILE* wav)
55
+ {
56
+ uint16_t compression_code = 0;
57
+ uint16_t nchannels = 0, bit_depth = 0;
58
+
59
+ _seal_read_uint16le(&compression_code, 1, wav);
60
+ if (compression_code != PCM_CODE)
61
+ return SEAL_BAD_WAV_SUBTYPE;
62
+
63
+ _seal_read_uint16le(&nchannels, 1, wav);
64
+
65
+ _seal_read_uint32le((uint32_t*) &attr->freq, 1, wav);
66
+ if (attr->freq == 0)
67
+ return FILE_BAD_WAV_FREQ;
68
+
69
+ /* average B/s and block align are ignored. */
70
+ _seal_skip(6, wav);
71
+
72
+ _seal_read_uint16le(&bit_depth, 1, wav);
73
+
74
+ attr->nchannels = nchannels;
75
+ attr->bit_depth = bit_depth;
76
+
77
+ /* Extra format data are ignored. */
78
+ _seal_skip(chunk_size - 16, wav);
79
+
80
+ return SEAL_OK;
81
+ }
82
+
83
+ static
84
+ seal_err_t
85
+ read_data(seal_raw_t* raw, uint32_t chunk_size, FILE* wav)
86
+ {
87
+ size_t count;
88
+ seal_err_t err;
89
+
90
+ if ((err = seal_alloc_raw_data(raw, chunk_size)) != SEAL_OK)
91
+ return err;
92
+
93
+ count = fread(raw->data, 1, chunk_size, wav);
94
+
95
+ return SEAL_OK;
96
+ }
97
+
98
+ static
99
+ void
100
+ prepare_data(wav_stream_t* wav_stream, uint32_t chunk_size)
101
+ {
102
+ wav_stream->offset = wav_stream->base_offset = ftell(wav_stream->file);
103
+ wav_stream->end_offset = wav_stream->base_offset + chunk_size;
104
+ _seal_skip(chunk_size, wav_stream->file);
105
+ }
106
+
107
+ static
108
+ seal_err_t
109
+ read_chunk(seal_raw_t* raw, wav_stream_t* wav_stream, FILE* wav,
110
+ io_state_t* pstate)
111
+ {
112
+ uint32_t chunk_id, chunk_size = 0;
113
+ seal_err_t err = SEAL_OK;
114
+
115
+ _seal_read_uint32le(&chunk_id, 1, wav);
116
+ if (feof(wav)) {
117
+ *pstate = NO_MORE_CHUNKS;
118
+ return SEAL_OK;
119
+ }
120
+
121
+ _seal_read_uint32le(&chunk_size, 1, wav);
122
+ if (chunk_size <= CHUNK_MIN_SIZE)
123
+ return SEAL_BAD_WAV_CHUNK_SIZE;
124
+
125
+ switch (chunk_id) {
126
+ case FMT_:
127
+ err = read_fmt_(&raw->attr, chunk_size, wav);
128
+ break;
129
+ case DATA:
130
+ if (wav_stream != 0)
131
+ prepare_data(wav_stream, chunk_size);
132
+ else
133
+ err = read_data(raw, chunk_size, wav);
134
+ break;
135
+ case FACT:
136
+ case WAVL:
137
+ case SLNT:
138
+ case CUE_:
139
+ case PLST:
140
+ case LIST:
141
+ case LABL:
142
+ case NOTE:
143
+ case LTXT:
144
+ case SMPL:
145
+ case INST:
146
+ /* Ignores all other chunks. */
147
+ _seal_skip(chunk_size, wav);
148
+ break;
149
+ default:
150
+ return SEAL_BAD_WAV_CHUNK;
151
+ }
152
+
153
+ *pstate = NEED_MORE_CHUNKS;
154
+
155
+ return err;
156
+ }
157
+
158
+ static
159
+ seal_err_t
160
+ read_chunks(seal_raw_t* raw, wav_stream_t* wav_stream, FILE* wav)
161
+ {
162
+ io_state_t state;
163
+ seal_err_t err;
164
+
165
+ /* Assumes the first 12 bytes are correct. */
166
+ _seal_skip(12, wav);
167
+ do {
168
+ if ((err = read_chunk(raw, wav_stream, wav, &state)) != SEAL_OK)
169
+ return err;
170
+ } while (state == NEED_MORE_CHUNKS);
171
+
172
+ return SEAL_OK;
173
+ }
174
+
175
+ seal_err_t
176
+ _seal_load_wav(seal_raw_t* raw, const char* filename)
177
+ {
178
+ FILE* wav;
179
+ seal_raw_t tmp_raw = SEAL_RAW_INIT_LST;
180
+ seal_err_t err;
181
+
182
+ wav = _seal_fopen(filename);
183
+ if (wav == 0)
184
+ return SEAL_CANNOT_OPEN_FILE;
185
+ err = read_chunks(&tmp_raw, 0, wav);
186
+ _seal_fclose(wav);
187
+ if (err != SEAL_OK)
188
+ goto cleanup;
189
+ if (tmp_raw.data == 0 || tmp_raw.attr.freq == 0) {
190
+ err = SEAL_ABSENT_WAV_CHUNK;
191
+ goto cleanup;
192
+ }
193
+
194
+ *raw = tmp_raw;
195
+
196
+ return SEAL_OK;
197
+
198
+ cleanup:
199
+ if (tmp_raw.data != 0)
200
+ free(tmp_raw.data);
201
+
202
+ return err;
203
+ }
204
+
205
+ seal_err_t
206
+ _seal_init_wav_stream(seal_stream_t* stream, const char* filename)
207
+ {
208
+ wav_stream_t* wav_stream;
209
+ seal_raw_t tmp_raw = SEAL_RAW_INIT_LST;
210
+ seal_err_t err;
211
+
212
+ wav_stream = malloc(sizeof (wav_stream_t));
213
+ if (wav_stream == 0)
214
+ return SEAL_CANNOT_ALLOC_MEM;
215
+
216
+ wav_stream->file = _seal_fopen(filename);
217
+ if (wav_stream->file == 0) {
218
+ err = SEAL_CANNOT_OPEN_FILE;
219
+ goto mem_cleanup;
220
+ }
221
+
222
+ err = read_chunks(&tmp_raw, wav_stream, wav_stream->file);
223
+ if (err != SEAL_OK)
224
+ goto cleanup;
225
+ if (wav_stream->base_offset == wav_stream->end_offset
226
+ || tmp_raw.attr.freq == 0) {
227
+ err = SEAL_ABSENT_WAV_CHUNK;
228
+ goto cleanup;
229
+ }
230
+
231
+ stream->id = wav_stream;
232
+ stream->fmt = SEAL_WAV_FMT;
233
+ stream->attr = tmp_raw.attr;
234
+ _seal_rewind_wav_stream(stream);
235
+
236
+ return SEAL_OK;
237
+
238
+ cleanup:
239
+ /* For streaming, close file only on errors. */
240
+ _seal_fclose(wav_stream->file);
241
+ mem_cleanup:
242
+ free(wav_stream);
243
+
244
+ return err;
245
+ }
246
+
247
+ seal_err_t
248
+ _seal_stream_wav(seal_stream_t* stream, seal_raw_t* raw, size_t* psize)
249
+ {
250
+ void* data;
251
+ size_t nbytes_left, nbytes = 0;
252
+ wav_stream_t* wav_stream;
253
+
254
+ wav_stream = stream->id;
255
+ if (wav_stream->offset >= wav_stream->end_offset)
256
+ goto done;
257
+
258
+ nbytes_left = wav_stream->end_offset - wav_stream->offset;
259
+ nbytes = nbytes_left < raw->size ? nbytes_left : raw->size;
260
+
261
+ data = malloc(nbytes);
262
+ if (data == 0)
263
+ return SEAL_CANNOT_ALLOC_MEM;
264
+
265
+ wav_stream->offset += nbytes;
266
+ nbytes_left = fread(data, 1, nbytes, wav_stream->file);
267
+
268
+ raw->data = data;
269
+ raw->attr = stream->attr;
270
+ raw->size = nbytes;
271
+ done:
272
+ *psize = nbytes;
273
+
274
+ return SEAL_OK;
275
+ }
276
+
277
+ seal_err_t
278
+ _seal_rewind_wav_stream(seal_stream_t* stream)
279
+ {
280
+ wav_stream_t* wav_stream;
281
+
282
+ wav_stream = stream->id;
283
+ wav_stream->offset = wav_stream->base_offset;
284
+ if (fseek(wav_stream->file, wav_stream->base_offset, SEEK_SET) != 0)
285
+ return SEAL_CANNOT_REWIND_WAV;
286
+
287
+ return SEAL_OK;
288
+ }
289
+
290
+ seal_err_t
291
+ _seal_close_wav_stream(seal_stream_t* stream)
292
+ {
293
+ _seal_fclose(((wav_stream_t*) stream->id)->file);
294
+ free(stream->id);
295
+
296
+ return SEAL_OK;
297
+ }