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 @@
1
+ src/rubyext.c
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2
+ Version 2, December 2004
3
+
4
+ Copyright (C) 2012 Su Zhang <me@zhang.su>
5
+
6
+ Everyone is permitted to copy and distribute verbatim or modified
7
+ copies of this license document, and changing it is allowed as long
8
+ as the name is changed.
9
+
10
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12
+
13
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
@@ -0,0 +1,265 @@
1
+ # Scorched End Audio Library
2
+
3
+ Seal is a C library with Ruby binding for audio rendering and manipulation,
4
+ such as direction and distance attenuation, the simulation of the Doppler
5
+ effect and reverberation, in a 3D space. It is built on top of [OpenAL]
6
+ (http://connect.creativelabs.com/openal/default.aspx), adding support for
7
+ audio streaming and audio formats like Ogg Vorbis, MPEG Audio and WAVE.
8
+
9
+ ## Basic Use
10
+
11
+ Initialize Seal:
12
+
13
+ ```ruby
14
+ Seal.startup
15
+
16
+ include Seal
17
+ ```
18
+
19
+ Use a source object to represent a sound source, and attach an audio buffer:
20
+
21
+ ```ruby
22
+ source = Source.new
23
+ source.buffer = Buffer.new("audio.ogg")
24
+ ```
25
+
26
+ Change the position of the source:
27
+
28
+ ```ruby
29
+ source.position = 3, 2, -4
30
+ ```
31
+
32
+ Change the position of the listener (a singleton of Seal::Listener):
33
+
34
+ ```ruby
35
+ Seal.listener.position = -1, -1, 0
36
+ ```
37
+
38
+ Play the source:
39
+
40
+ ```ruby
41
+ source.play
42
+ ```
43
+
44
+ In case of massive audio resource, use of buffer will eat all the memory, so
45
+ we can use streams:
46
+
47
+ ```ruby
48
+ source.stream = Stream.open("background_music.ogg")
49
+ ```
50
+
51
+ Make sure to detach the audio from the source before switching from a buffer
52
+ to a stream or vice-versa:
53
+
54
+ ```ruby
55
+ source.buffer = ...
56
+
57
+ # ...
58
+
59
+ source.buffer = nil
60
+ source.stream = ...
61
+
62
+ # ...
63
+
64
+ source.stream = nil
65
+ source.buffer = ...
66
+ ```
67
+
68
+ Apply a reverberation effect to the sound source:
69
+
70
+ ```ruby
71
+ # Allocate an effect slot and associate a specific reverb object.
72
+ slot = EffectSlot.new(Reverb.new(Reverb::Preset::FOREST))
73
+ # Start feeding the slot.
74
+ slot.feed(0, source)
75
+ ```
76
+
77
+ Uninitialize Seal:
78
+
79
+ ```ruby
80
+ seal.cleanup
81
+ ```
82
+
83
+ You can find detailed documentations in the header files under `include/seal`
84
+ for each of the modules.
85
+
86
+ The C interface is very similar to the Ruby binding, except that some of the
87
+ Seal objects are abbreviated (but still more verbose than Ruby in general):
88
+
89
+ src -> Source
90
+ buf -> Buffer
91
+ rvb -> Reverb
92
+ efs -> EffectSlot
93
+
94
+ For example:
95
+
96
+ ```c
97
+ seal_src_t src;
98
+ seal_buf_t buf;
99
+
100
+ seal_startup(0);
101
+
102
+ seal_init_src(&src);
103
+ seal_init_buf(&buf);
104
+ seal_load2buf(&buf, "audio.ogg", SEAL_UNKNOWN_FMT);
105
+ seal_set_src_buf(&src, &buf);
106
+ seal_play_src(&src);
107
+
108
+ // Wait to hear.
109
+ _seal_sleep(3000);
110
+
111
+ seal_destroy_src(&src);
112
+ seal_destroy_buf(&buf);
113
+ seal_destroy_efs(&efs);
114
+ seal_destroy_rvb(&rvb);
115
+ seal_cleanup();
116
+ ```
117
+
118
+ ## Platforms
119
+
120
+ Linux, Windows and Mac OS X are officially tested and supported. Seal should
121
+ run on all Unix-like operating systems where OpenAL, libogg, libvorbis and
122
+ libmpg123 can run, but those platforms are never tested. The Makefiles are
123
+ generated specifically for MSVC and GCC (MinGW or native Unix-like systems).
124
+
125
+ ## Installation
126
+
127
+ ### Prerequisite
128
+
129
+ Seal has native dependencies; you need to have OpenAL installed on your system.
130
+
131
+ You need [CMake](http://www.cmake.org/) 2.4 or later to install
132
+ [libopenal](http://kcat.strangesoft.net/openal.html) as follows:
133
+
134
+ ```bash
135
+ git clone git://repo.or.cz/openal-soft.git openal-soft
136
+ cd openal-soft/build
137
+ cmake -DCMAKE_BUILD_TYPE=Release ..
138
+ make
139
+ make install
140
+ ```
141
+
142
+ Note: There has been issues compiling OpenAL on some versions of OS X
143
+ because LLVM is the default compiler. I haven't had luck compiling
144
+ OpenAL with LLVM, so I explicitly specified GCC instead:
145
+
146
+ ```bash
147
+ ...
148
+ CC=/usr/bin/gcc-4.2 cmake -DCMAKE_BUILD_TYPE=Release ..
149
+ ...
150
+ ```
151
+
152
+ After OpenAL is installed, you can start building Seal. Seal will dynamically
153
+ link OpenAL.
154
+
155
+ ### Install as a Gem (in a sane environment)
156
+
157
+ ```Bash
158
+ gem install seal
159
+ ```
160
+
161
+ ### GCC + GNU Make + Unix-like operating systems + UN*X shell
162
+
163
+ From Seal directory:
164
+
165
+ ```bash
166
+ cd make/unix-like
167
+ make
168
+ ```
169
+
170
+ ### GCC + GNU Make + MinGW + UN*X shell
171
+
172
+ ```bash
173
+ cd make/win32
174
+ make
175
+ ```
176
+
177
+ ### MSVC + Microsoft Visual Studio 2010
178
+
179
+ use the solution and project files under /msvc.
180
+
181
+ ### Ruby extension
182
+
183
+ ```bash
184
+ bundle install
185
+ rake compile
186
+ ```
187
+
188
+ The default output is `lib/seal.{so,dll,bundle}`, which is a dynamic library
189
+ that could be required by Ruby at runtime.
190
+
191
+ ## Demos
192
+
193
+ Use `rake demo:<demo_name>` to run the demos under the `demo/` directory.
194
+
195
+ - playback
196
+
197
+ Basic playback of audio.
198
+
199
+ - control
200
+
201
+ Various controls of audio like play, pause, stop.
202
+
203
+ - pitch
204
+
205
+ Audio pitch shifting.
206
+
207
+ - walk
208
+
209
+ 3D audio positioning (attenuation).
210
+
211
+ - reverb
212
+
213
+ Audio reverberation. There are lots of built-in reverb presets, but this
214
+ demo only simulates a large room in ice palace.
215
+
216
+ ## Running Tests
217
+
218
+ Tests are written on top of the Ruby binding, using [RSpec]
219
+ (https://github.com/rspec/rspec). You need to build Seal as a Ruby extension
220
+ to run the tests:
221
+
222
+ ```Bash
223
+ bundle install
224
+ rake compile
225
+ rspec
226
+ ```
227
+
228
+ ## Thread Safety
229
+
230
+ Seal can be safely used in a multi-threaded environment so long as no Seal
231
+ source, buffer or stream instance is accessed by different threads at the
232
+ *same time* , which is similar to libvorbis' thread-safety conditions
233
+ described [here](http://xiph.org/vorbis/doc/vorbisfile/threads.html).
234
+
235
+ Exceptions are the two functions `seal_startup` and `seal_cleanup`, which are
236
+ *NOT* thread-safe. Refer to the documentation for these two functions for
237
+ details.
238
+
239
+ ## Character Encoding
240
+
241
+ UTF-8 should be used to encode the source code or at least the path strings so
242
+ that Seal can properly input audio files using paths that contain multi-byte
243
+ (Chinese, Japanese, etc.) characters.
244
+
245
+ ## Etymology
246
+
247
+ The phrase "Scorched end" (Chinese: 焦尾; Pinyin: Jiao Wei) is a direct
248
+ translation of the name of a Guqin[1] existed in China in the second
249
+ century CE. The name literally means that one end of the Qin is scorched.
250
+
251
+ This Qin was found by Cai Yong.[2] According to the "History of the Later
252
+ Han",[3] Cai Yong once heard very loud sound of someone burning Firmiana
253
+ simplex[4] wood for cooking and realized that it is a good material for
254
+ making Qin soundboards. He then asked for the wood and cut it into a Qin,
255
+ and the sound it produced was pleasant to hear as expected. However, one
256
+ end of the wood had already been scorched by the time Cai Yong got it,
257
+ hence the name "Scorched end".
258
+
259
+ Seal was named so with the hope that it will be more useful than it seems
260
+ and will be discovered by the right people who need the right tool.
261
+
262
+ [1] http://en.wikipedia.org/wiki/Guqin
263
+ [2] http://en.wikipedia.org/wiki/Cai_Yong
264
+ [3] http://en.wikipedia.org/wiki/History_of_the_Later_Han
265
+ [4] http://en.wikipedia.org/wiki/Firmiana_simplex
@@ -0,0 +1,45 @@
1
+ require 'mkmf'
2
+ require 'fileutils'
3
+ require 'rbconfig'
4
+
5
+ include FileUtils
6
+ include RbConfig
7
+
8
+ target_os = CONFIG['target_os']
9
+ root_dir = File.join(File.dirname(__FILE__), '..', '..')
10
+ src_dir = File.join root_dir, 'src'
11
+ mpg123_dir = File.join root_dir, 'mpg123'
12
+ mpg123_src_dir = File.join mpg123_dir, 'src'
13
+ mpg123_lib_dir = File.join mpg123_src_dir, 'libmpg123', '.libs'
14
+
15
+ $defs << '-DNDEBUG'
16
+ $LDFLAGS << ' -s'
17
+
18
+ unless File.exists?(File.join(mpg123_src_dir, 'config.h'))
19
+ puts 'Building libmpg123...'
20
+ cd(mpg123_dir) { `sh ./configure --with-pic --disable-shared` }
21
+ cd(mpg123_src_dir) { `make` }
22
+ end
23
+ find_library 'mpg123', 'mpg123_init', mpg123_lib_dir
24
+
25
+ def check_library(lib, func)
26
+ raise "#{lib} is missing. See README." unless have_library(lib, func)
27
+ end
28
+
29
+ if target_os =~ /mswin|mingw/
30
+ include_dir = "#{root_dir}/include"
31
+ lib_dir = File.join root_dir, 'msvc', 'lib'
32
+ find_library('OpenAL32', 'alcOpenDevice', lib_dir)
33
+ else
34
+ include_dir = "#{root_dir}"
35
+ check_library('openal', 'alcOpenDevice')
36
+ check_library('pthread', 'pthread_create')
37
+ end
38
+
39
+ # Add source directories.
40
+ $VPATH << src_dir << File.join(src_dir, 'seal') <<
41
+ File.join(src_dir, 'libogg') <<
42
+ File.join(src_dir, 'libvorbis')
43
+ dir_config('seal', include_dir, lib_dir)
44
+
45
+ create_makefile('seal', File.join(src_dir, '**', ''))
@@ -0,0 +1,724 @@
1
+ #ifndef AL_AL_H
2
+ #define AL_AL_H
3
+
4
+ #if defined(__cplusplus)
5
+ extern "C" {
6
+ #endif
7
+
8
+ #if defined(AL_LIBTYPE_STATIC)
9
+ #define AL_API
10
+ #elif defined(_WIN32) && !defined(_XBOX)
11
+ #if defined(AL_BUILD_LIBRARY)
12
+ #define AL_API __declspec(dllexport)
13
+ #else
14
+ #define AL_API __declspec(dllimport)
15
+ #endif
16
+ #else
17
+ #if defined(AL_BUILD_LIBRARY) && defined(HAVE_GCC_VISIBILITY)
18
+ #define AL_API __attribute__((visibility("protected")))
19
+ #else
20
+ #define AL_API extern
21
+ #endif
22
+ #endif
23
+
24
+ #if defined(_WIN32)
25
+ #define AL_APIENTRY __cdecl
26
+ #else
27
+ #define AL_APIENTRY
28
+ #endif
29
+
30
+ #if defined(TARGET_OS_MAC) && TARGET_OS_MAC
31
+ #pragma export on
32
+ #endif
33
+
34
+ /*
35
+ * The OPENAL, ALAPI, ALAPIENTRY, AL_INVALID, AL_ILLEGAL_ENUM, and
36
+ * AL_ILLEGAL_COMMAND macros are deprecated, but are included for
37
+ * applications porting code from AL 1.0
38
+ */
39
+ #define OPENAL
40
+ #define ALAPI AL_API
41
+ #define ALAPIENTRY AL_APIENTRY
42
+ #define AL_INVALID (-1)
43
+ #define AL_ILLEGAL_ENUM AL_INVALID_ENUM
44
+ #define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION
45
+
46
+ #define AL_VERSION_1_0
47
+ #define AL_VERSION_1_1
48
+
49
+
50
+ /** 8-bit boolean */
51
+ typedef char ALboolean;
52
+
53
+ /** character */
54
+ typedef char ALchar;
55
+
56
+ /** signed 8-bit 2's complement integer */
57
+ typedef signed char ALbyte;
58
+
59
+ /** unsigned 8-bit integer */
60
+ typedef unsigned char ALubyte;
61
+
62
+ /** signed 16-bit 2's complement integer */
63
+ typedef short ALshort;
64
+
65
+ /** unsigned 16-bit integer */
66
+ typedef unsigned short ALushort;
67
+
68
+ /** signed 32-bit 2's complement integer */
69
+ typedef int ALint;
70
+
71
+ /** unsigned 32-bit integer */
72
+ typedef unsigned int ALuint;
73
+
74
+ /** non-negative 32-bit binary integer size */
75
+ typedef int ALsizei;
76
+
77
+ /** enumerated 32-bit value */
78
+ typedef int ALenum;
79
+
80
+ /** 32-bit IEEE754 floating-point */
81
+ typedef float ALfloat;
82
+
83
+ /** 64-bit IEEE754 floating-point */
84
+ typedef double ALdouble;
85
+
86
+ /** void type (for opaque pointers only) */
87
+ typedef void ALvoid;
88
+
89
+
90
+ /* Enumerant values begin at column 50. No tabs. */
91
+
92
+ /* "no distance model" or "no buffer" */
93
+ #define AL_NONE 0
94
+
95
+ /* Boolean False. */
96
+ #define AL_FALSE 0
97
+
98
+ /** Boolean True. */
99
+ #define AL_TRUE 1
100
+
101
+ /** Indicate Source has relative coordinates. */
102
+ #define AL_SOURCE_RELATIVE 0x202
103
+
104
+
105
+
106
+ /**
107
+ * Directional source, inner cone angle, in degrees.
108
+ * Range: [0-360]
109
+ * Default: 360
110
+ */
111
+ #define AL_CONE_INNER_ANGLE 0x1001
112
+
113
+ /**
114
+ * Directional source, outer cone angle, in degrees.
115
+ * Range: [0-360]
116
+ * Default: 360
117
+ */
118
+ #define AL_CONE_OUTER_ANGLE 0x1002
119
+
120
+ /**
121
+ * Specify the pitch to be applied at source.
122
+ * Range: [0.5-2.0]
123
+ * Default: 1.0
124
+ */
125
+ #define AL_PITCH 0x1003
126
+
127
+ /**
128
+ * Specify the current location in three dimensional space.
129
+ * OpenAL, like OpenGL, uses a right handed coordinate system,
130
+ * where in a frontal default view X (thumb) points right,
131
+ * Y points up (index finger), and Z points towards the
132
+ * viewer/camera (middle finger).
133
+ * To switch from a left handed coordinate system, flip the
134
+ * sign on the Z coordinate.
135
+ * Listener position is always in the world coordinate system.
136
+ */
137
+ #define AL_POSITION 0x1004
138
+
139
+ /** Specify the current direction. */
140
+ #define AL_DIRECTION 0x1005
141
+
142
+ /** Specify the current velocity in three dimensional space. */
143
+ #define AL_VELOCITY 0x1006
144
+
145
+ /**
146
+ * Indicate whether source is looping.
147
+ * Type: ALboolean?
148
+ * Range: [AL_TRUE, AL_FALSE]
149
+ * Default: FALSE.
150
+ */
151
+ #define AL_LOOPING 0x1007
152
+
153
+ /**
154
+ * Indicate the buffer to provide sound samples.
155
+ * Type: ALuint.
156
+ * Range: any valid Buffer id.
157
+ */
158
+ #define AL_BUFFER 0x1009
159
+
160
+ /**
161
+ * Indicate the gain (volume amplification) applied.
162
+ * Type: ALfloat.
163
+ * Range: ]0.0- ]
164
+ * A value of 1.0 means un-attenuated/unchanged.
165
+ * Each division by 2 equals an attenuation of -6dB.
166
+ * Each multiplicaton with 2 equals an amplification of +6dB.
167
+ * A value of 0.0 is meaningless with respect to a logarithmic
168
+ * scale; it is interpreted as zero volume - the channel
169
+ * is effectively disabled.
170
+ */
171
+ #define AL_GAIN 0x100A
172
+
173
+ /*
174
+ * Indicate minimum source attenuation
175
+ * Type: ALfloat
176
+ * Range: [0.0 - 1.0]
177
+ *
178
+ * Logarthmic
179
+ */
180
+ #define AL_MIN_GAIN 0x100D
181
+
182
+ /**
183
+ * Indicate maximum source attenuation
184
+ * Type: ALfloat
185
+ * Range: [0.0 - 1.0]
186
+ *
187
+ * Logarthmic
188
+ */
189
+ #define AL_MAX_GAIN 0x100E
190
+
191
+ /**
192
+ * Indicate listener orientation.
193
+ *
194
+ * at/up
195
+ */
196
+ #define AL_ORIENTATION 0x100F
197
+
198
+ /**
199
+ * Source state information.
200
+ */
201
+ #define AL_SOURCE_STATE 0x1010
202
+ #define AL_INITIAL 0x1011
203
+ #define AL_PLAYING 0x1012
204
+ #define AL_PAUSED 0x1013
205
+ #define AL_STOPPED 0x1014
206
+
207
+ /**
208
+ * Buffer Queue params
209
+ */
210
+ #define AL_BUFFERS_QUEUED 0x1015
211
+ #define AL_BUFFERS_PROCESSED 0x1016
212
+
213
+ /**
214
+ * Source buffer position information
215
+ */
216
+ #define AL_SEC_OFFSET 0x1024
217
+ #define AL_SAMPLE_OFFSET 0x1025
218
+ #define AL_BYTE_OFFSET 0x1026
219
+
220
+ /*
221
+ * Source type (Static, Streaming or undetermined)
222
+ * Source is Static if a Buffer has been attached using AL_BUFFER
223
+ * Source is Streaming if one or more Buffers have been attached using alSourceQueueBuffers
224
+ * Source is undetermined when it has the NULL buffer attached
225
+ */
226
+ #define AL_SOURCE_TYPE 0x1027
227
+ #define AL_STATIC 0x1028
228
+ #define AL_STREAMING 0x1029
229
+ #define AL_UNDETERMINED 0x1030
230
+
231
+ /** Sound samples: format specifier. */
232
+ #define AL_FORMAT_MONO8 0x1100
233
+ #define AL_FORMAT_MONO16 0x1101
234
+ #define AL_FORMAT_STEREO8 0x1102
235
+ #define AL_FORMAT_STEREO16 0x1103
236
+
237
+ /**
238
+ * source specific reference distance
239
+ * Type: ALfloat
240
+ * Range: 0.0 - +inf
241
+ *
242
+ * At 0.0, no distance attenuation occurs. Default is
243
+ * 1.0.
244
+ */
245
+ #define AL_REFERENCE_DISTANCE 0x1020
246
+
247
+ /**
248
+ * source specific rolloff factor
249
+ * Type: ALfloat
250
+ * Range: 0.0 - +inf
251
+ *
252
+ */
253
+ #define AL_ROLLOFF_FACTOR 0x1021
254
+
255
+ /**
256
+ * Directional source, outer cone gain.
257
+ *
258
+ * Default: 0.0
259
+ * Range: [0.0 - 1.0]
260
+ * Logarithmic
261
+ */
262
+ #define AL_CONE_OUTER_GAIN 0x1022
263
+
264
+ /**
265
+ * Indicate distance above which sources are not
266
+ * attenuated using the inverse clamped distance model.
267
+ *
268
+ * Default: +inf
269
+ * Type: ALfloat
270
+ * Range: 0.0 - +inf
271
+ */
272
+ #define AL_MAX_DISTANCE 0x1023
273
+
274
+ /**
275
+ * Sound samples: frequency, in units of Hertz [Hz].
276
+ * This is the number of samples per second. Half of the
277
+ * sample frequency marks the maximum significant
278
+ * frequency component.
279
+ */
280
+ #define AL_FREQUENCY 0x2001
281
+ #define AL_BITS 0x2002
282
+ #define AL_CHANNELS 0x2003
283
+ #define AL_SIZE 0x2004
284
+
285
+ /**
286
+ * Buffer state.
287
+ *
288
+ * Not supported for public use (yet).
289
+ */
290
+ #define AL_UNUSED 0x2010
291
+ #define AL_PENDING 0x2011
292
+ #define AL_PROCESSED 0x2012
293
+
294
+
295
+ /** Errors: No Error. */
296
+ #define AL_NO_ERROR AL_FALSE
297
+
298
+ /**
299
+ * Invalid Name paramater passed to AL call.
300
+ */
301
+ #define AL_INVALID_NAME 0xA001
302
+
303
+ /**
304
+ * Invalid parameter passed to AL call.
305
+ */
306
+ #define AL_INVALID_ENUM 0xA002
307
+
308
+ /**
309
+ * Invalid enum parameter value.
310
+ */
311
+ #define AL_INVALID_VALUE 0xA003
312
+
313
+ /**
314
+ * Illegal call.
315
+ */
316
+ #define AL_INVALID_OPERATION 0xA004
317
+
318
+
319
+ /**
320
+ * No mojo.
321
+ */
322
+ #define AL_OUT_OF_MEMORY 0xA005
323
+
324
+
325
+ /** Context strings: Vendor Name. */
326
+ #define AL_VENDOR 0xB001
327
+ #define AL_VERSION 0xB002
328
+ #define AL_RENDERER 0xB003
329
+ #define AL_EXTENSIONS 0xB004
330
+
331
+ /** Global tweakage. */
332
+
333
+ /**
334
+ * Doppler scale. Default 1.0
335
+ */
336
+ #define AL_DOPPLER_FACTOR 0xC000
337
+
338
+ /**
339
+ * Tweaks speed of propagation.
340
+ */
341
+ #define AL_DOPPLER_VELOCITY 0xC001
342
+
343
+ /**
344
+ * Speed of Sound in units per second
345
+ */
346
+ #define AL_SPEED_OF_SOUND 0xC003
347
+
348
+ /**
349
+ * Distance models
350
+ *
351
+ * used in conjunction with DistanceModel
352
+ *
353
+ * implicit: NONE, which disances distance attenuation.
354
+ */
355
+ #define AL_DISTANCE_MODEL 0xD000
356
+ #define AL_INVERSE_DISTANCE 0xD001
357
+ #define AL_INVERSE_DISTANCE_CLAMPED 0xD002
358
+ #define AL_LINEAR_DISTANCE 0xD003
359
+ #define AL_LINEAR_DISTANCE_CLAMPED 0xD004
360
+ #define AL_EXPONENT_DISTANCE 0xD005
361
+ #define AL_EXPONENT_DISTANCE_CLAMPED 0xD006
362
+
363
+ /*
364
+ * Renderer State management
365
+ */
366
+ AL_API void AL_APIENTRY alEnable( ALenum capability );
367
+
368
+ AL_API void AL_APIENTRY alDisable( ALenum capability );
369
+
370
+ AL_API ALboolean AL_APIENTRY alIsEnabled( ALenum capability );
371
+
372
+
373
+ /*
374
+ * State retrieval
375
+ */
376
+ AL_API const ALchar* AL_APIENTRY alGetString( ALenum param );
377
+
378
+ AL_API void AL_APIENTRY alGetBooleanv( ALenum param, ALboolean* data );
379
+
380
+ AL_API void AL_APIENTRY alGetIntegerv( ALenum param, ALint* data );
381
+
382
+ AL_API void AL_APIENTRY alGetFloatv( ALenum param, ALfloat* data );
383
+
384
+ AL_API void AL_APIENTRY alGetDoublev( ALenum param, ALdouble* data );
385
+
386
+ AL_API ALboolean AL_APIENTRY alGetBoolean( ALenum param );
387
+
388
+ AL_API ALint AL_APIENTRY alGetInteger( ALenum param );
389
+
390
+ AL_API ALfloat AL_APIENTRY alGetFloat( ALenum param );
391
+
392
+ AL_API ALdouble AL_APIENTRY alGetDouble( ALenum param );
393
+
394
+
395
+ /*
396
+ * Error support.
397
+ * Obtain the most recent error generated in the AL state machine.
398
+ */
399
+ AL_API ALenum AL_APIENTRY alGetError( void );
400
+
401
+
402
+ /*
403
+ * Extension support.
404
+ * Query for the presence of an extension, and obtain any appropriate
405
+ * function pointers and enum values.
406
+ */
407
+ AL_API ALboolean AL_APIENTRY alIsExtensionPresent( const ALchar* extname );
408
+
409
+ AL_API void* AL_APIENTRY alGetProcAddress( const ALchar* fname );
410
+
411
+ AL_API ALenum AL_APIENTRY alGetEnumValue( const ALchar* ename );
412
+
413
+
414
+ /*
415
+ * LISTENER
416
+ * Listener represents the location and orientation of the
417
+ * 'user' in 3D-space.
418
+ *
419
+ * Properties include: -
420
+ *
421
+ * Gain AL_GAIN ALfloat
422
+ * Position AL_POSITION ALfloat[3]
423
+ * Velocity AL_VELOCITY ALfloat[3]
424
+ * Orientation AL_ORIENTATION ALfloat[6] (Forward then Up vectors)
425
+ */
426
+
427
+ /*
428
+ * Set Listener parameters
429
+ */
430
+ AL_API void AL_APIENTRY alListenerf( ALenum param, ALfloat value );
431
+
432
+ AL_API void AL_APIENTRY alListener3f( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
433
+
434
+ AL_API void AL_APIENTRY alListenerfv( ALenum param, const ALfloat* values );
435
+
436
+ AL_API void AL_APIENTRY alListeneri( ALenum param, ALint value );
437
+
438
+ AL_API void AL_APIENTRY alListener3i( ALenum param, ALint value1, ALint value2, ALint value3 );
439
+
440
+ AL_API void AL_APIENTRY alListeneriv( ALenum param, const ALint* values );
441
+
442
+ /*
443
+ * Get Listener parameters
444
+ */
445
+ AL_API void AL_APIENTRY alGetListenerf( ALenum param, ALfloat* value );
446
+
447
+ AL_API void AL_APIENTRY alGetListener3f( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
448
+
449
+ AL_API void AL_APIENTRY alGetListenerfv( ALenum param, ALfloat* values );
450
+
451
+ AL_API void AL_APIENTRY alGetListeneri( ALenum param, ALint* value );
452
+
453
+ AL_API void AL_APIENTRY alGetListener3i( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
454
+
455
+ AL_API void AL_APIENTRY alGetListeneriv( ALenum param, ALint* values );
456
+
457
+
458
+ /**
459
+ * SOURCE
460
+ * Sources represent individual sound objects in 3D-space.
461
+ * Sources take the PCM data provided in the specified Buffer,
462
+ * apply Source-specific modifications, and then
463
+ * submit them to be mixed according to spatial arrangement etc.
464
+ *
465
+ * Properties include: -
466
+ *
467
+ * Gain AL_GAIN ALfloat
468
+ * Min Gain AL_MIN_GAIN ALfloat
469
+ * Max Gain AL_MAX_GAIN ALfloat
470
+ * Position AL_POSITION ALfloat[3]
471
+ * Velocity AL_VELOCITY ALfloat[3]
472
+ * Direction AL_DIRECTION ALfloat[3]
473
+ * Head Relative Mode AL_SOURCE_RELATIVE ALint (AL_TRUE or AL_FALSE)
474
+ * Reference Distance AL_REFERENCE_DISTANCE ALfloat
475
+ * Max Distance AL_MAX_DISTANCE ALfloat
476
+ * RollOff Factor AL_ROLLOFF_FACTOR ALfloat
477
+ * Inner Angle AL_CONE_INNER_ANGLE ALint or ALfloat
478
+ * Outer Angle AL_CONE_OUTER_ANGLE ALint or ALfloat
479
+ * Cone Outer Gain AL_CONE_OUTER_GAIN ALint or ALfloat
480
+ * Pitch AL_PITCH ALfloat
481
+ * Looping AL_LOOPING ALint (AL_TRUE or AL_FALSE)
482
+ * MS Offset AL_MSEC_OFFSET ALint or ALfloat
483
+ * Byte Offset AL_BYTE_OFFSET ALint or ALfloat
484
+ * Sample Offset AL_SAMPLE_OFFSET ALint or ALfloat
485
+ * Attached Buffer AL_BUFFER ALint
486
+ * State (Query only) AL_SOURCE_STATE ALint
487
+ * Buffers Queued (Query only) AL_BUFFERS_QUEUED ALint
488
+ * Buffers Processed (Query only) AL_BUFFERS_PROCESSED ALint
489
+ */
490
+
491
+ /* Create Source objects */
492
+ AL_API void AL_APIENTRY alGenSources( ALsizei n, ALuint* sources );
493
+
494
+ /* Delete Source objects */
495
+ AL_API void AL_APIENTRY alDeleteSources( ALsizei n, const ALuint* sources );
496
+
497
+ /* Verify a handle is a valid Source */
498
+ AL_API ALboolean AL_APIENTRY alIsSource( ALuint sid );
499
+
500
+ /*
501
+ * Set Source parameters
502
+ */
503
+ AL_API void AL_APIENTRY alSourcef( ALuint sid, ALenum param, ALfloat value );
504
+
505
+ AL_API void AL_APIENTRY alSource3f( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
506
+
507
+ AL_API void AL_APIENTRY alSourcefv( ALuint sid, ALenum param, const ALfloat* values );
508
+
509
+ AL_API void AL_APIENTRY alSourcei( ALuint sid, ALenum param, ALint value );
510
+
511
+ AL_API void AL_APIENTRY alSource3i( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
512
+
513
+ AL_API void AL_APIENTRY alSourceiv( ALuint sid, ALenum param, const ALint* values );
514
+
515
+ /*
516
+ * Get Source parameters
517
+ */
518
+ AL_API void AL_APIENTRY alGetSourcef( ALuint sid, ALenum param, ALfloat* value );
519
+
520
+ AL_API void AL_APIENTRY alGetSource3f( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
521
+
522
+ AL_API void AL_APIENTRY alGetSourcefv( ALuint sid, ALenum param, ALfloat* values );
523
+
524
+ AL_API void AL_APIENTRY alGetSourcei( ALuint sid, ALenum param, ALint* value );
525
+
526
+ AL_API void AL_APIENTRY alGetSource3i( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
527
+
528
+ AL_API void AL_APIENTRY alGetSourceiv( ALuint sid, ALenum param, ALint* values );
529
+
530
+
531
+ /*
532
+ * Source vector based playback calls
533
+ */
534
+
535
+ /* Play, replay, or resume (if paused) a list of Sources */
536
+ AL_API void AL_APIENTRY alSourcePlayv( ALsizei ns, const ALuint *sids );
537
+
538
+ /* Stop a list of Sources */
539
+ AL_API void AL_APIENTRY alSourceStopv( ALsizei ns, const ALuint *sids );
540
+
541
+ /* Rewind a list of Sources */
542
+ AL_API void AL_APIENTRY alSourceRewindv( ALsizei ns, const ALuint *sids );
543
+
544
+ /* Pause a list of Sources */
545
+ AL_API void AL_APIENTRY alSourcePausev( ALsizei ns, const ALuint *sids );
546
+
547
+ /*
548
+ * Source based playback calls
549
+ */
550
+
551
+ /* Play, replay, or resume a Source */
552
+ AL_API void AL_APIENTRY alSourcePlay( ALuint sid );
553
+
554
+ /* Stop a Source */
555
+ AL_API void AL_APIENTRY alSourceStop( ALuint sid );
556
+
557
+ /* Rewind a Source (set playback postiton to beginning) */
558
+ AL_API void AL_APIENTRY alSourceRewind( ALuint sid );
559
+
560
+ /* Pause a Source */
561
+ AL_API void AL_APIENTRY alSourcePause( ALuint sid );
562
+
563
+ /*
564
+ * Source Queuing
565
+ */
566
+ AL_API void AL_APIENTRY alSourceQueueBuffers( ALuint sid, ALsizei numEntries, const ALuint *bids );
567
+
568
+ AL_API void AL_APIENTRY alSourceUnqueueBuffers( ALuint sid, ALsizei numEntries, ALuint *bids );
569
+
570
+
571
+ /**
572
+ * BUFFER
573
+ * Buffer objects are storage space for sample data.
574
+ * Buffers are referred to by Sources. One Buffer can be used
575
+ * by multiple Sources.
576
+ *
577
+ * Properties include: -
578
+ *
579
+ * Frequency (Query only) AL_FREQUENCY ALint
580
+ * Size (Query only) AL_SIZE ALint
581
+ * Bits (Query only) AL_BITS ALint
582
+ * Channels (Query only) AL_CHANNELS ALint
583
+ */
584
+
585
+ /* Create Buffer objects */
586
+ AL_API void AL_APIENTRY alGenBuffers( ALsizei n, ALuint* buffers );
587
+
588
+ /* Delete Buffer objects */
589
+ AL_API void AL_APIENTRY alDeleteBuffers( ALsizei n, const ALuint* buffers );
590
+
591
+ /* Verify a handle is a valid Buffer */
592
+ AL_API ALboolean AL_APIENTRY alIsBuffer( ALuint bid );
593
+
594
+ /* Specify the data to be copied into a buffer */
595
+ AL_API void AL_APIENTRY alBufferData( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
596
+
597
+ /*
598
+ * Set Buffer parameters
599
+ */
600
+ AL_API void AL_APIENTRY alBufferf( ALuint bid, ALenum param, ALfloat value );
601
+
602
+ AL_API void AL_APIENTRY alBuffer3f( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
603
+
604
+ AL_API void AL_APIENTRY alBufferfv( ALuint bid, ALenum param, const ALfloat* values );
605
+
606
+ AL_API void AL_APIENTRY alBufferi( ALuint bid, ALenum param, ALint value );
607
+
608
+ AL_API void AL_APIENTRY alBuffer3i( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
609
+
610
+ AL_API void AL_APIENTRY alBufferiv( ALuint bid, ALenum param, const ALint* values );
611
+
612
+ /*
613
+ * Get Buffer parameters
614
+ */
615
+ AL_API void AL_APIENTRY alGetBufferf( ALuint bid, ALenum param, ALfloat* value );
616
+
617
+ AL_API void AL_APIENTRY alGetBuffer3f( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
618
+
619
+ AL_API void AL_APIENTRY alGetBufferfv( ALuint bid, ALenum param, ALfloat* values );
620
+
621
+ AL_API void AL_APIENTRY alGetBufferi( ALuint bid, ALenum param, ALint* value );
622
+
623
+ AL_API void AL_APIENTRY alGetBuffer3i( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
624
+
625
+ AL_API void AL_APIENTRY alGetBufferiv( ALuint bid, ALenum param, ALint* values );
626
+
627
+
628
+ /*
629
+ * Global Parameters
630
+ */
631
+ AL_API void AL_APIENTRY alDopplerFactor( ALfloat value );
632
+
633
+ AL_API void AL_APIENTRY alDopplerVelocity( ALfloat value );
634
+
635
+ AL_API void AL_APIENTRY alSpeedOfSound( ALfloat value );
636
+
637
+ AL_API void AL_APIENTRY alDistanceModel( ALenum distanceModel );
638
+
639
+ /*
640
+ * Pointer-to-function types, useful for dynamically getting AL entry points.
641
+ */
642
+ typedef void (AL_APIENTRY *LPALENABLE)( ALenum capability );
643
+ typedef void (AL_APIENTRY *LPALDISABLE)( ALenum capability );
644
+ typedef ALboolean (AL_APIENTRY *LPALISENABLED)( ALenum capability );
645
+ typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)( ALenum param );
646
+ typedef void (AL_APIENTRY *LPALGETBOOLEANV)( ALenum param, ALboolean* data );
647
+ typedef void (AL_APIENTRY *LPALGETINTEGERV)( ALenum param, ALint* data );
648
+ typedef void (AL_APIENTRY *LPALGETFLOATV)( ALenum param, ALfloat* data );
649
+ typedef void (AL_APIENTRY *LPALGETDOUBLEV)( ALenum param, ALdouble* data );
650
+ typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)( ALenum param );
651
+ typedef ALint (AL_APIENTRY *LPALGETINTEGER)( ALenum param );
652
+ typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)( ALenum param );
653
+ typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)( ALenum param );
654
+ typedef ALenum (AL_APIENTRY *LPALGETERROR)( void );
655
+ typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar* extname );
656
+ typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)( const ALchar* fname );
657
+ typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)( const ALchar* ename );
658
+ typedef void (AL_APIENTRY *LPALLISTENERF)( ALenum param, ALfloat value );
659
+ typedef void (AL_APIENTRY *LPALLISTENER3F)( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
660
+ typedef void (AL_APIENTRY *LPALLISTENERFV)( ALenum param, const ALfloat* values );
661
+ typedef void (AL_APIENTRY *LPALLISTENERI)( ALenum param, ALint value );
662
+ typedef void (AL_APIENTRY *LPALLISTENER3I)( ALenum param, ALint value1, ALint value2, ALint value3 );
663
+ typedef void (AL_APIENTRY *LPALLISTENERIV)( ALenum param, const ALint* values );
664
+ typedef void (AL_APIENTRY *LPALGETLISTENERF)( ALenum param, ALfloat* value );
665
+ typedef void (AL_APIENTRY *LPALGETLISTENER3F)( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
666
+ typedef void (AL_APIENTRY *LPALGETLISTENERFV)( ALenum param, ALfloat* values );
667
+ typedef void (AL_APIENTRY *LPALGETLISTENERI)( ALenum param, ALint* value );
668
+ typedef void (AL_APIENTRY *LPALGETLISTENER3I)( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
669
+ typedef void (AL_APIENTRY *LPALGETLISTENERIV)( ALenum param, ALint* values );
670
+ typedef void (AL_APIENTRY *LPALGENSOURCES)( ALsizei n, ALuint* sources );
671
+ typedef void (AL_APIENTRY *LPALDELETESOURCES)( ALsizei n, const ALuint* sources );
672
+ typedef ALboolean (AL_APIENTRY *LPALISSOURCE)( ALuint sid );
673
+ typedef void (AL_APIENTRY *LPALSOURCEF)( ALuint sid, ALenum param, ALfloat value);
674
+ typedef void (AL_APIENTRY *LPALSOURCE3F)( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
675
+ typedef void (AL_APIENTRY *LPALSOURCEFV)( ALuint sid, ALenum param, const ALfloat* values );
676
+ typedef void (AL_APIENTRY *LPALSOURCEI)( ALuint sid, ALenum param, ALint value);
677
+ typedef void (AL_APIENTRY *LPALSOURCE3I)( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
678
+ typedef void (AL_APIENTRY *LPALSOURCEIV)( ALuint sid, ALenum param, const ALint* values );
679
+ typedef void (AL_APIENTRY *LPALGETSOURCEF)( ALuint sid, ALenum param, ALfloat* value );
680
+ typedef void (AL_APIENTRY *LPALGETSOURCE3F)( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
681
+ typedef void (AL_APIENTRY *LPALGETSOURCEFV)( ALuint sid, ALenum param, ALfloat* values );
682
+ typedef void (AL_APIENTRY *LPALGETSOURCEI)( ALuint sid, ALenum param, ALint* value );
683
+ typedef void (AL_APIENTRY *LPALGETSOURCE3I)( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
684
+ typedef void (AL_APIENTRY *LPALGETSOURCEIV)( ALuint sid, ALenum param, ALint* values );
685
+ typedef void (AL_APIENTRY *LPALSOURCEPLAYV)( ALsizei ns, const ALuint *sids );
686
+ typedef void (AL_APIENTRY *LPALSOURCESTOPV)( ALsizei ns, const ALuint *sids );
687
+ typedef void (AL_APIENTRY *LPALSOURCEREWINDV)( ALsizei ns, const ALuint *sids );
688
+ typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)( ALsizei ns, const ALuint *sids );
689
+ typedef void (AL_APIENTRY *LPALSOURCEPLAY)( ALuint sid );
690
+ typedef void (AL_APIENTRY *LPALSOURCESTOP)( ALuint sid );
691
+ typedef void (AL_APIENTRY *LPALSOURCEREWIND)( ALuint sid );
692
+ typedef void (AL_APIENTRY *LPALSOURCEPAUSE)( ALuint sid );
693
+ typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, const ALuint *bids );
694
+ typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, ALuint *bids );
695
+ typedef void (AL_APIENTRY *LPALGENBUFFERS)( ALsizei n, ALuint* buffers );
696
+ typedef void (AL_APIENTRY *LPALDELETEBUFFERS)( ALsizei n, const ALuint* buffers );
697
+ typedef ALboolean (AL_APIENTRY *LPALISBUFFER)( ALuint bid );
698
+ typedef void (AL_APIENTRY *LPALBUFFERDATA)( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
699
+ typedef void (AL_APIENTRY *LPALBUFFERF)( ALuint bid, ALenum param, ALfloat value);
700
+ typedef void (AL_APIENTRY *LPALBUFFER3F)( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
701
+ typedef void (AL_APIENTRY *LPALBUFFERFV)( ALuint bid, ALenum param, const ALfloat* values );
702
+ typedef void (AL_APIENTRY *LPALBUFFERI)( ALuint bid, ALenum param, ALint value);
703
+ typedef void (AL_APIENTRY *LPALBUFFER3I)( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
704
+ typedef void (AL_APIENTRY *LPALBUFFERIV)( ALuint bid, ALenum param, const ALint* values );
705
+ typedef void (AL_APIENTRY *LPALGETBUFFERF)( ALuint bid, ALenum param, ALfloat* value );
706
+ typedef void (AL_APIENTRY *LPALGETBUFFER3F)( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
707
+ typedef void (AL_APIENTRY *LPALGETBUFFERFV)( ALuint bid, ALenum param, ALfloat* values );
708
+ typedef void (AL_APIENTRY *LPALGETBUFFERI)( ALuint bid, ALenum param, ALint* value );
709
+ typedef void (AL_APIENTRY *LPALGETBUFFER3I)( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
710
+ typedef void (AL_APIENTRY *LPALGETBUFFERIV)( ALuint bid, ALenum param, ALint* values );
711
+ typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)( ALfloat value );
712
+ typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)( ALfloat value );
713
+ typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)( ALfloat value );
714
+ typedef void (AL_APIENTRY *LPALDISTANCEMODEL)( ALenum distanceModel );
715
+
716
+ #if defined(TARGET_OS_MAC) && TARGET_OS_MAC
717
+ #pragma export off
718
+ #endif
719
+
720
+ #if defined(__cplusplus)
721
+ } /* extern "C" */
722
+ #endif
723
+
724
+ #endif /* AL_AL_H */