seal 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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 */