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,164 @@
1
+ /*
2
+ pulse: audio output using PulseAudio server
3
+
4
+ copyright 2006-9 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 Nicholas J. Humfrey
7
+ */
8
+
9
+ #include <stdlib.h>
10
+ #include <stdio.h>
11
+ #include <math.h>
12
+
13
+ #include <pulse/simple.h>
14
+ #include <pulse/error.h>
15
+
16
+ #include "config.h"
17
+ #include "mpg123app.h"
18
+ #include "audio.h"
19
+ #include "module.h"
20
+ #include "debug.h"
21
+
22
+ static int open_pulse(audio_output_t *ao)
23
+ {
24
+ int err;
25
+ pa_simple* pas = NULL;
26
+ pa_sample_spec ss;
27
+ /* Check if already open ? */
28
+ if (ao->userptr) {
29
+ error("Pulse audio output is already open.");
30
+ return -1;
31
+ }
32
+
33
+ /* Open an audio I/O stream. */
34
+ /* When they are < 0, I shall set some default. */
35
+ if(ao->rate < 0 || ao->format < 0 || ao->channels < 0)
36
+ {
37
+ ao->rate = 44100;
38
+ ao->channels = 2;
39
+ ao->format = MPG123_ENC_SIGNED_16;
40
+ }
41
+
42
+ /* Fill out pulse audio's data structure */
43
+ ss.channels = ao->channels;
44
+ ss.rate = ao->rate;
45
+
46
+ switch(ao->format) {
47
+ case MPG123_ENC_SIGNED_16:
48
+ #ifdef WORDS_BIGENDIAN
49
+ ss.format=PA_SAMPLE_S16BE;
50
+ #else
51
+ ss.format=PA_SAMPLE_S16LE;
52
+ #endif
53
+ break;
54
+ case MPG123_ENC_ALAW_8:
55
+ ss.format=PA_SAMPLE_ALAW;
56
+ break;
57
+ case MPG123_ENC_ULAW_8:
58
+ ss.format=PA_SAMPLE_ULAW;
59
+ break;
60
+ case MPG123_ENC_UNSIGNED_8:
61
+ ss.format=PA_SAMPLE_U8;
62
+ break;
63
+ default:
64
+ error1("Unsupported audio format: 0x%x", ao->format);
65
+ return -1;
66
+ break;
67
+ }
68
+
69
+
70
+ /* Perform the open */
71
+ pas = pa_simple_new(
72
+ NULL, /* Use the default server */
73
+ "mpg123", /* Our application's name */
74
+ PA_STREAM_PLAYBACK,
75
+ ao->device, /* Use the default device if NULL */
76
+ "MPEG Audio", /* Description of our stream */
77
+ &ss, /* Our sample format */
78
+ NULL, /* Use default channel map */
79
+ NULL, /* Use default buffering attributes */
80
+ &err /* Error result code */
81
+ );
82
+
83
+ if( pas == NULL ) {
84
+ error1("Failed to open pulse audio output: %s", pa_strerror(err));
85
+ return -1;
86
+ }
87
+
88
+ /* Store the pointer */
89
+ ao->userptr = (void*)pas;
90
+ return 0;
91
+ }
92
+
93
+
94
+ static int get_formats_pulse(audio_output_t *ao)
95
+ {
96
+ /* Only implemented Signed 16-bit audio for now */
97
+ return MPG123_ENC_SIGNED_16;
98
+ }
99
+
100
+
101
+ static int write_pulse(audio_output_t *ao, unsigned char *buf, int len)
102
+ {
103
+ pa_simple *pas = (pa_simple*)ao->userptr;
104
+ int ret, err;
105
+ /* Doesn't return number of bytes but just success or not. */
106
+ ret = pa_simple_write( pas, buf, len, &err );
107
+ if(ret<0){ error1("Failed to write audio: %s", pa_strerror(err)); return -1; }
108
+
109
+ return len; /* If successful, everything has been written. */
110
+ }
111
+
112
+ static int close_pulse(audio_output_t *ao)
113
+ {
114
+ pa_simple *pas = (pa_simple*)ao->userptr;
115
+
116
+ if (pas) {
117
+ pa_simple_free( pas );
118
+ ao->userptr = NULL;
119
+ }
120
+
121
+ return 0;
122
+ }
123
+
124
+ static void flush_pulse(audio_output_t *ao)
125
+ {
126
+ pa_simple *pas = (pa_simple*)ao->userptr;
127
+
128
+ if (pas) {
129
+ int err;
130
+ pa_simple_flush( pas, &err );
131
+ if (err) error1("Failed to flush audio: %s", pa_strerror(err));
132
+ }
133
+ }
134
+
135
+
136
+ static int init_pulse(audio_output_t* ao)
137
+ {
138
+ if (ao==NULL) return -1;
139
+
140
+ /* Set callbacks */
141
+ ao->open = open_pulse;
142
+ ao->flush = flush_pulse;
143
+ ao->write = write_pulse;
144
+ ao->get_formats = get_formats_pulse;
145
+ ao->close = close_pulse;
146
+
147
+ /* Success */
148
+ return 0;
149
+ }
150
+
151
+
152
+ /*
153
+ Module information data structure
154
+ */
155
+ mpg123_module_t mpg123_output_module_info = {
156
+ /* api_version */ MPG123_MODULE_API_VERSION,
157
+ /* name */ "pulse",
158
+ /* description */ "Output audio using PulseAudio Server",
159
+ /* revision */ "$Rev:$",
160
+ /* handle */ NULL,
161
+
162
+ /* init_output */ init_pulse,
163
+ };
164
+
@@ -0,0 +1,206 @@
1
+ /*
2
+ sdl: audio output via SDL cross-platform API
3
+
4
+ copyright 2006-9 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 Nicholas J. Humfrey
7
+ */
8
+
9
+ #include <math.h>
10
+
11
+ #include <SDL.h>
12
+
13
+ #include "audio.h"
14
+ #include "mpg123app.h"
15
+ #ifdef WIN32
16
+ #include <windows.h>
17
+ #endif
18
+
19
+ /* Including the sfifo code locally, to avoid module linkage issues. */
20
+ #define SFIFO_STATIC
21
+ #include "sfifo.c"
22
+
23
+ #include "debug.h"
24
+
25
+
26
+ #define SAMPLE_SIZE (2)
27
+ #define FRAMES_PER_BUFFER (256)
28
+ #define FIFO_DURATION (0.5f)
29
+
30
+
31
+
32
+
33
+ /* The audio function callback takes the following parameters:
34
+ stream: A pointer to the audio buffer to be filled
35
+ len: The length (in bytes) of the audio buffer
36
+ */
37
+ static void audio_callback_sdl(void *udata, Uint8 *stream, int len)
38
+ {
39
+ audio_output_t *ao = (audio_output_t*)udata;
40
+ sfifo_t *fifo = (sfifo_t*)ao->userptr;
41
+ int bytes_read;
42
+
43
+ /* Only play if we have data left */
44
+ if ( sfifo_used( fifo ) < len ) {
45
+ warning("Didn't have any audio data for SDL (buffer underflow)");
46
+ SDL_PauseAudio(1);
47
+ return;
48
+ }
49
+
50
+ /* Read audio from FIFO to SDL's buffer */
51
+ bytes_read = sfifo_read( fifo, stream, len );
52
+
53
+ if (len!=bytes_read)
54
+ warning2("Error reading from the FIFO (wanted=%u, bytes_read=%u).\n", len, bytes_read);
55
+
56
+ }
57
+
58
+ static int open_sdl(audio_output_t *ao)
59
+ {
60
+ sfifo_t *fifo = (sfifo_t*)ao->userptr;
61
+
62
+ /* Open an audio I/O stream. */
63
+ if (ao->rate > 0 && ao->channels >0 ) {
64
+ size_t ringbuffer_len;
65
+ SDL_AudioSpec wanted;
66
+
67
+ /* L16 uncompressed audio data, using 16-bit signed representation in twos
68
+ complement notation - system endian-ness. */
69
+ wanted.format = AUDIO_S16SYS;
70
+ wanted.samples = 1024; /* Good low-latency value for callback */
71
+ wanted.callback = audio_callback_sdl;
72
+ wanted.userdata = ao;
73
+ wanted.channels = ao->channels;
74
+ wanted.freq = ao->rate;
75
+
76
+ /* Open the audio device, forcing the desired format */
77
+ if ( SDL_OpenAudio(&wanted, NULL) ) {
78
+ error1("Couldn't open SDL audio: %s\n", SDL_GetError());
79
+ return -1;
80
+ }
81
+
82
+ /* Initialise FIFO */
83
+ ringbuffer_len = ao->rate * FIFO_DURATION * SAMPLE_SIZE *ao->channels;
84
+ debug2( "Allocating %d byte ring-buffer (%f seconds)", (int)ringbuffer_len, (float)FIFO_DURATION);
85
+ if (sfifo_init( fifo, ringbuffer_len )) error1( "Failed to initialise FIFO of size %d bytes", (int)ringbuffer_len );
86
+ }
87
+
88
+ return(0);
89
+ }
90
+
91
+
92
+ static int get_formats_sdl(audio_output_t *ao)
93
+ {
94
+ /* Only implemented Signed 16-bit audio for now */
95
+ return MPG123_ENC_SIGNED_16;
96
+ }
97
+
98
+
99
+ static int write_sdl(audio_output_t *ao, unsigned char *buf, int len)
100
+ {
101
+ sfifo_t *fifo = (sfifo_t*)ao->userptr;
102
+
103
+ /* Sleep for half the length of the FIFO */
104
+ while (sfifo_space( fifo ) < len )
105
+ #ifdef WIN32
106
+ Sleep( (FIFO_DURATION/2) * 1000);
107
+ #else
108
+ usleep( (FIFO_DURATION/2) * 1000000 );
109
+ #endif
110
+
111
+ /* Bung decoded audio into the FIFO
112
+ SDL Audio locking probably isn't actually needed
113
+ as SFIFO claims to be thread safe...
114
+ */
115
+ SDL_LockAudio();
116
+ sfifo_write( fifo, buf, len);
117
+ SDL_UnlockAudio();
118
+
119
+
120
+ /* Unpause once the buffer is 50% full */
121
+ if (sfifo_used(fifo) > (sfifo_size(fifo)*0.5) ) SDL_PauseAudio(0);
122
+
123
+ return len;
124
+ }
125
+
126
+ static int close_sdl(audio_output_t *ao)
127
+ {
128
+ sfifo_t *fifo = (sfifo_t*)ao->userptr;
129
+
130
+ SDL_CloseAudio();
131
+
132
+ /* Free up the memory used by the FIFO */
133
+ sfifo_close( fifo );
134
+
135
+ return 0;
136
+ }
137
+
138
+ static void flush_sdl(audio_output_t *ao)
139
+ {
140
+ sfifo_t *fifo = (sfifo_t*)ao->userptr;
141
+
142
+ SDL_PauseAudio(1);
143
+
144
+ sfifo_flush( fifo );
145
+ }
146
+
147
+
148
+ static int deinit_sdl(audio_output_t* ao)
149
+ {
150
+ /* Free up memory */
151
+ if (ao->userptr) {
152
+ free( ao->userptr );
153
+ ao->userptr = NULL;
154
+ }
155
+
156
+ /* Shut down SDL */
157
+ SDL_Quit();
158
+
159
+ /* Success */
160
+ return 0;
161
+ }
162
+
163
+
164
+ static int init_sdl(audio_output_t* ao)
165
+ {
166
+ if (ao==NULL) return -1;
167
+
168
+ /* Set callbacks */
169
+ ao->open = open_sdl;
170
+ ao->flush = flush_sdl;
171
+ ao->write = write_sdl;
172
+ ao->get_formats = get_formats_sdl;
173
+ ao->close = close_sdl;
174
+ ao->deinit = deinit_sdl;
175
+
176
+ /* Allocate memory */
177
+ ao->userptr = malloc( sizeof(sfifo_t) );
178
+ if (ao->userptr==NULL) {
179
+ error( "Failed to allocated memory for FIFO structure" );
180
+ return -1;
181
+ }
182
+ memset( ao->userptr, 0, sizeof(sfifo_t) );
183
+
184
+ /* Initialise SDL */
185
+ if (SDL_Init( SDL_INIT_AUDIO ) ) {
186
+ error1("Failed to initialise SDL: %s\n", SDL_GetError());
187
+ return -1;
188
+ }
189
+
190
+ /* Success */
191
+ return 0;
192
+ }
193
+
194
+
195
+ /*
196
+ Module information data structure
197
+ */
198
+ mpg123_module_t mpg123_output_module_info = {
199
+ /* api_version */ MPG123_MODULE_API_VERSION,
200
+ /* name */ "sdl",
201
+ /* description */ "Output audio using SDL (Simple DirectMedia Layer).",
202
+ /* revision */ "$Rev:$",
203
+ /* handle */ NULL,
204
+
205
+ /* init_output */ init_sdl,
206
+ };
@@ -0,0 +1,213 @@
1
+ /*
2
+ sgi: audio output on SGI boxen
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 (as it seems) by Thomas Woerner
7
+ */
8
+
9
+ #include <fcntl.h>
10
+
11
+ /* #include <audio.h> */
12
+ #include <dmedia/audio.h>
13
+
14
+ #include "mpg123app.h"
15
+ #include "debug.h"
16
+
17
+
18
+ /* Analog output constant */
19
+ static const char analog_output_res_name[] = ".AnalogOut";
20
+
21
+
22
+ static int set_rate(audio_output_t *ao, ALconfig config)
23
+ {
24
+ int dev = alGetDevice(config);
25
+ ALpv params[1];
26
+
27
+ /* Make sure the device is OK */
28
+ if (dev < 0)
29
+ {
30
+ error1("set_rate: %s",alGetErrorString(oserror()));
31
+ return 1;
32
+ }
33
+
34
+ params[0].param = AL_OUTPUT_RATE;
35
+ params[0].value.ll = alDoubleToFixed(ao->rate);
36
+
37
+ if (alSetParams(dev, params,1) < 0)
38
+ error1("set_rate: %s",alGetErrorString(oserror()));
39
+
40
+ return 0;
41
+ }
42
+
43
+
44
+ static int set_channels(audio_output_t *ao, ALconfig config)
45
+ {
46
+ int ret;
47
+
48
+ if(ao->channels == 2)
49
+ ret = alSetChannels(config, AL_STEREO);
50
+ else
51
+ ret = alSetChannels(config, AL_MONO);
52
+
53
+ if (ret < 0)
54
+ error1("set_channels : %s",alGetErrorString(oserror()));
55
+
56
+ return 0;
57
+ }
58
+
59
+ static int set_format(audio_output_t *ao, ALconfig config)
60
+ {
61
+ if (alSetSampFmt(config,AL_SAMPFMT_TWOSCOMP) < 0)
62
+ error1("set_format : %s",alGetErrorString(oserror()));
63
+
64
+ if (alSetWidth(config,AL_SAMPLE_16) < 0)
65
+ error1("set_format : %s",alGetErrorString(oserror()));
66
+
67
+ return 0;
68
+ }
69
+
70
+
71
+ static int open_sgi(audio_output_t *ao)
72
+ {
73
+ int dev = AL_DEFAULT_OUTPUT;
74
+ ALconfig config = alNewConfig();
75
+ ALport port = NULL;
76
+
77
+ /* Test for correct completion */
78
+ if (config == 0) {
79
+ error1("open_sgi: %s",alGetErrorString(oserror()));
80
+ return -1;
81
+ }
82
+
83
+ /* Set port parameters */
84
+ if(ao->channels == 2)
85
+ alSetChannels(config, AL_STEREO);
86
+ else
87
+ alSetChannels(config, AL_MONO);
88
+
89
+ alSetWidth(config, AL_SAMPLE_16);
90
+ alSetSampFmt(config,AL_SAMPFMT_TWOSCOMP);
91
+ alSetQueueSize(config, 131069);
92
+
93
+ /* Setup output device to specified module. If there is no module
94
+ specified in ao structure, use the default four output */
95
+ if ((ao->device) != NULL) {
96
+ char *dev_name;
97
+
98
+ dev_name=malloc((strlen(ao->device) + strlen(analog_output_res_name) + 1) *
99
+ sizeof(char));
100
+
101
+ strcpy(dev_name,ao->device);
102
+ strcat(dev_name,analog_output_res_name);
103
+
104
+ /* Find the asked device resource */
105
+ dev=alGetResourceByName(AL_SYSTEM,dev_name,AL_DEVICE_TYPE);
106
+
107
+ /* Free allocated space */
108
+ free(dev_name);
109
+
110
+ if (!dev) {
111
+ error2("Invalid audio resource: %s (%s)",dev_name, alGetErrorString(oserror()));
112
+ return -1;
113
+ }
114
+ }
115
+
116
+ /* Set the device */
117
+ if (alSetDevice(config,dev) < 0)
118
+ {
119
+ error1("open_sgi: %s",alGetErrorString(oserror()));
120
+ return -1;
121
+ }
122
+
123
+ /* Open the audio port */
124
+ port = alOpenPort("mpg123-VSC", "w", config);
125
+ if(port == NULL) {
126
+ error1("Unable to open audio channel: %s", alGetErrorString(oserror()));
127
+ return -1;
128
+ }
129
+
130
+ ao->userptr = (void*)port;
131
+
132
+
133
+ set_format(ao, config);
134
+ set_channels(ao, config);
135
+ set_rate(ao, config);
136
+
137
+
138
+ alFreeConfig(config);
139
+
140
+ return 1;
141
+ }
142
+
143
+
144
+ static int get_formats_sgi(audio_output_t *ao)
145
+ {
146
+ return MPG123_ENC_SIGNED_16;
147
+ }
148
+
149
+
150
+ static int write_sgi(audio_output_t *ao,unsigned char *buf,int len)
151
+ {
152
+ ALport port = (ALport)ao->userptr;
153
+
154
+ if(ao->format == MPG123_ENC_SIGNED_8)
155
+ alWriteFrames(port, buf, len>>1);
156
+ else
157
+ alWriteFrames(port, buf, len>>2);
158
+
159
+ return len;
160
+ }
161
+
162
+
163
+ static int close_sgi(audio_output_t *ao)
164
+ {
165
+ ALport port = (ALport)ao->userptr;
166
+
167
+ if (port) {
168
+ while(alGetFilled(port) > 0) sginap(1);
169
+ alClosePort(port);
170
+ ao->userptr=NULL;
171
+ }
172
+
173
+ return 0;
174
+ }
175
+
176
+ static void flush_sgi(audio_output_t *ao)
177
+ {
178
+ }
179
+
180
+
181
+ static int init_sgi(audio_output_t* ao)
182
+ {
183
+ if (ao==NULL) return -1;
184
+
185
+ /* Set callbacks */
186
+ ao->open = open_sgi;
187
+ ao->flush = flush_sgi;
188
+ ao->write = write_sgi;
189
+ ao->get_formats = get_formats_sgi;
190
+ ao->close = close_sgi;
191
+
192
+ /* Success */
193
+ return 0;
194
+ }
195
+
196
+
197
+
198
+
199
+
200
+ /*
201
+ Module information data structure
202
+ */
203
+ mpg123_module_t mpg123_output_module_info = {
204
+ /* api_version */ MPG123_MODULE_API_VERSION,
205
+ /* name */ "sgi",
206
+ /* description */ "Audio output for SGI.",
207
+ /* revision */ "$Rev:$",
208
+ /* handle */ NULL,
209
+
210
+ /* init_output */ init_sgi,
211
+ };
212
+
213
+