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,268 @@
1
+ /*
2
+ decode.h: common definitions for decode functions
3
+
4
+ This file is strongly tied with optimize.h concerning the synth functions.
5
+ Perhaps one should restructure that a bit.
6
+
7
+ copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1
8
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
9
+ initially written by Thomas Orgis, taking WRITE_SAMPLE from decode.c
10
+ */
11
+ #ifndef MPG123_DECODE_H
12
+ #define MPG123_DECODE_H
13
+
14
+ /* Selection of class of output routines for basic format. */
15
+ #ifndef REAL_IS_FIXED
16
+ #define OUT_FORMATS 4 /* Basic output formats: 16bit, 8bit, real and s32 */
17
+ #else
18
+ #define OUT_FORMATS 2 /* Only up to 16bit */
19
+ #endif
20
+
21
+ #define OUT_16 0
22
+ #define OUT_8 1
23
+ /* Those are defined but not supported for fixed point decoding! */
24
+ #define OUT_REAL 2 /* Write a floating point sample (that is, one matching the internal real type). */
25
+ #define OUT_S32 3
26
+
27
+ #ifdef NO_NTOM
28
+ #define NTOM_MAX 1
29
+ #else
30
+ #define NTOM_MAX 8 /* maximum allowed factor for upsampling */
31
+ #define NTOM_MAX_FREQ 96000 /* maximum frequency to upsample to / downsample from */
32
+ #define NTOM_MUL (32768)
33
+ void ntom_set_ntom(mpg123_handle *fr, off_t num);
34
+ #endif
35
+
36
+ /* Let's collect all possible synth functions here, for an overview.
37
+ If they are actually defined and used depends on preprocessor machinery.
38
+ See synth.c and optimize.h for that, also some special C and assembler files. */
39
+
40
+ #ifndef NO_16BIT
41
+ /* The signed-16bit-producing variants. */
42
+ int synth_1to1 (real*, int, mpg123_handle*, int);
43
+ int synth_1to1_dither (real*, int, mpg123_handle*, int);
44
+ int synth_1to1_i386 (real*, int, mpg123_handle*, int);
45
+ int synth_1to1_i586 (real*, int, mpg123_handle*, int);
46
+ int synth_1to1_i586_dither(real*, int, mpg123_handle*, int);
47
+ int synth_1to1_mmx (real*, int, mpg123_handle*, int);
48
+ int synth_1to1_3dnow (real*, int, mpg123_handle*, int);
49
+ int synth_1to1_sse (real*, int, mpg123_handle*, int);
50
+ int synth_1to1_stereo_sse (real*, real*, mpg123_handle*);
51
+ int synth_1to1_3dnowext (real*, int, mpg123_handle*, int);
52
+ int synth_1to1_altivec (real*, int, mpg123_handle*, int);
53
+ int synth_1to1_stereo_altivec(real*, real*, mpg123_handle*);
54
+ int synth_1to1_x86_64 (real*, int, mpg123_handle*, int);
55
+ int synth_1to1_stereo_x86_64(real*, real*, mpg123_handle*);
56
+ int synth_1to1_arm (real*, int, mpg123_handle*, int);
57
+ int synth_1to1_neon (real*, int, mpg123_handle*, int);
58
+ int synth_1to1_stereo_neon(real*, real*, mpg123_handle*);
59
+ /* This is different, special usage in layer3.c only.
60
+ Hence, the name... and now forget about it.
61
+ Never use it outside that special portion of code inside layer3.c! */
62
+ int absynth_1to1_i486(real*, int, mpg123_handle*, int);
63
+ /* These mono/stereo converters use one of the above for the grunt work. */
64
+ int synth_1to1_mono (real*, mpg123_handle*);
65
+ int synth_1to1_m2s(real*, mpg123_handle*);
66
+
67
+ /* Sample rate decimation comes in less flavours. */
68
+ #ifndef NO_DOWNSAMPLE
69
+ int synth_2to1 (real*, int, mpg123_handle*, int);
70
+ int synth_2to1_dither (real*, int, mpg123_handle*, int);
71
+ int synth_2to1_i386 (real*, int, mpg123_handle*, int);
72
+ int synth_2to1_mono (real*, mpg123_handle*);
73
+ int synth_2to1_m2s(real*, mpg123_handle*);
74
+ int synth_4to1 (real *,int, mpg123_handle*, int);
75
+ int synth_4to1_dither (real *,int, mpg123_handle*, int);
76
+ int synth_4to1_i386 (real*, int, mpg123_handle*, int);
77
+ int synth_4to1_mono (real*, mpg123_handle*);
78
+ int synth_4to1_m2s(real*, mpg123_handle*);
79
+ #endif
80
+ #ifndef NO_NTOM
81
+ /* NtoM is really just one implementation. */
82
+ int synth_ntom (real *,int, mpg123_handle*, int);
83
+ int synth_ntom_mono (real *, mpg123_handle *);
84
+ int synth_ntom_m2s (real *, mpg123_handle *);
85
+ #endif
86
+ #endif
87
+
88
+ #ifndef NO_8BIT
89
+ /* The 8bit-producing variants. */
90
+ /* There are direct 8-bit synths and wrappers over a possibly optimized 16bit one. */
91
+ int synth_1to1_8bit (real*, int, mpg123_handle*, int);
92
+ int synth_1to1_8bit_i386 (real*, int, mpg123_handle*, int);
93
+ #ifndef NO_16BIT
94
+ int synth_1to1_8bit_wrap (real*, int, mpg123_handle*, int);
95
+ int synth_1to1_8bit_mono (real*, mpg123_handle*);
96
+ #endif
97
+ int synth_1to1_8bit_m2s(real*, mpg123_handle*);
98
+ #ifndef NO_16BIT
99
+ int synth_1to1_8bit_wrap_mono (real*, mpg123_handle*);
100
+ int synth_1to1_8bit_wrap_m2s(real*, mpg123_handle*);
101
+ #endif
102
+ #ifndef NO_DOWNSAMPLE
103
+ int synth_2to1_8bit (real*, int, mpg123_handle*, int);
104
+ int synth_2to1_8bit_i386 (real*, int, mpg123_handle*, int);
105
+ int synth_2to1_8bit_mono (real*, mpg123_handle*);
106
+ int synth_2to1_8bit_m2s(real*, mpg123_handle*);
107
+ int synth_4to1_8bit (real*, int, mpg123_handle*, int);
108
+ int synth_4to1_8bit_i386 (real*, int, mpg123_handle*, int);
109
+ int synth_4to1_8bit_mono (real*, mpg123_handle*);
110
+ int synth_4to1_8bit_m2s(real*, mpg123_handle*);
111
+ #endif
112
+ #ifndef NO_NTOM
113
+ int synth_ntom_8bit (real*, int, mpg123_handle*, int);
114
+ int synth_ntom_8bit_mono (real*, mpg123_handle*);
115
+ int synth_ntom_8bit_m2s(real*, mpg123_handle*);
116
+ #endif
117
+ #endif
118
+
119
+ #ifndef REAL_IS_FIXED
120
+
121
+ #ifndef NO_REAL
122
+ /* The real-producing variants. */
123
+ int synth_1to1_real (real*, int, mpg123_handle*, int);
124
+ int synth_1to1_real_i386 (real*, int, mpg123_handle*, int);
125
+ int synth_1to1_real_sse (real*, int, mpg123_handle*, int);
126
+ int synth_1to1_real_stereo_sse (real*, real*, mpg123_handle*);
127
+ int synth_1to1_real_x86_64 (real*, int, mpg123_handle*, int);
128
+ int synth_1to1_real_stereo_x86_64(real*, real*, mpg123_handle*);
129
+ int synth_1to1_real_altivec (real*, int, mpg123_handle*, int);
130
+ int synth_1to1_real_stereo_altivec(real*, real*, mpg123_handle*);
131
+ int synth_1to1_real_neon (real*, int, mpg123_handle*, int);
132
+ int synth_1to1_real_stereo_neon(real*, real*, mpg123_handle*);
133
+ int synth_1to1_real_mono (real*, mpg123_handle*);
134
+ int synth_1to1_real_m2s(real*, mpg123_handle*);
135
+ #ifndef NO_DOWNSAMPLE
136
+ int synth_2to1_real (real*, int, mpg123_handle*, int);
137
+ int synth_2to1_real_i386 (real*, int, mpg123_handle*, int);
138
+ int synth_2to1_real_mono (real*, mpg123_handle*);
139
+ int synth_2to1_real_m2s(real*, mpg123_handle*);
140
+ int synth_4to1_real (real*, int, mpg123_handle*, int);
141
+ int synth_4to1_real_i386 (real*, int, mpg123_handle*, int);
142
+ int synth_4to1_real_mono (real*, mpg123_handle*);
143
+ int synth_4to1_real_m2s(real*, mpg123_handle*);
144
+ #endif
145
+ #ifndef NO_NTOM
146
+ int synth_ntom_real (real*, int, mpg123_handle*, int);
147
+ int synth_ntom_real_mono (real*, mpg123_handle*);
148
+ int synth_ntom_real_m2s(real*, mpg123_handle*);
149
+ #endif
150
+ #endif
151
+
152
+ #ifndef NO_32BIT
153
+ /* 32bit integer */
154
+ int synth_1to1_s32 (real*, int, mpg123_handle*, int);
155
+ int synth_1to1_s32_i386 (real*, int, mpg123_handle*, int);
156
+ int synth_1to1_s32_sse (real*, int, mpg123_handle*, int);
157
+ int synth_1to1_s32_stereo_sse (real*, real*, mpg123_handle*);
158
+ int synth_1to1_s32_x86_64 (real*, int, mpg123_handle*, int);
159
+ int synth_1to1_s32_stereo_x86_64(real*, real*, mpg123_handle*);
160
+ int synth_1to1_s32_altivec (real*, int, mpg123_handle*, int);
161
+ int synth_1to1_s32_stereo_altivec(real*, real*, mpg123_handle*);
162
+ int synth_1to1_s32_neon (real*, int, mpg123_handle*, int);
163
+ int synth_1to1_s32_stereo_neon(real*, real*, mpg123_handle*);
164
+ int synth_1to1_s32_mono (real*, mpg123_handle*);
165
+ int synth_1to1_s32_m2s(real*, mpg123_handle*);
166
+ #ifndef NO_DOWNSAMPLE
167
+ int synth_2to1_s32 (real*, int, mpg123_handle*, int);
168
+ int synth_2to1_s32_i386 (real*, int, mpg123_handle*, int);
169
+ int synth_2to1_s32_mono (real*, mpg123_handle*);
170
+ int synth_2to1_s32_m2s(real*, mpg123_handle*);
171
+ int synth_4to1_s32 (real*, int, mpg123_handle*, int);
172
+ int synth_4to1_s32_i386 (real*, int, mpg123_handle*, int);
173
+ int synth_4to1_s32_mono (real*, mpg123_handle*);
174
+ int synth_4to1_s32_m2s(real*, mpg123_handle*);
175
+ #endif
176
+ #ifndef NO_NTOM
177
+ int synth_ntom_s32 (real*, int, mpg123_handle*, int);
178
+ int synth_ntom_s32_mono (real*, mpg123_handle*);
179
+ int synth_ntom_s32_m2s(real*, mpg123_handle*);
180
+ #endif
181
+ #endif
182
+
183
+ #endif /* FIXED */
184
+
185
+
186
+ /* Inside these synth functions, some dct64 variants may be used.
187
+ The special optimized ones that only appear in assembler code are not mentioned here.
188
+ And, generally, these functions are only employed in a matching synth function. */
189
+ void dct64 (real *,real *,real *);
190
+ void dct64_i386 (real *,real *,real *);
191
+ void dct64_altivec(real *,real *,real *);
192
+ void dct64_i486(int*, int* , real*); /* Yeah, of no use outside of synth_i486.c .*/
193
+
194
+ /* This is used by the layer 3 decoder, one generic function and 3DNow variants. */
195
+ void dct36 (real *,real *,real *,real *,real *);
196
+ void dct36_3dnow (real *,real *,real *,real *,real *);
197
+ void dct36_3dnowext(real *,real *,real *,real *,real *);
198
+
199
+ /* Tools for NtoM resampling synth, defined in ntom.c . */
200
+ int synth_ntom_set_step(mpg123_handle *fr); /* prepare ntom decoding */
201
+ unsigned long ntom_val(mpg123_handle *fr, off_t frame); /* compute ntom_val for frame offset */
202
+ /* Frame and sample offsets. */
203
+ #ifndef NO_NTOM
204
+ /*
205
+ Outsamples of _this_ frame.
206
+ To be exact: The samples to be expected from the next frame decode (using the current ntom_val). When you already decoded _this_ frame, this is the number of samples to be expected from the next one.
207
+ */
208
+ off_t ntom_frame_outsamples(mpg123_handle *fr);
209
+ /* Total out/insample offset. */
210
+ off_t ntom_frmouts(mpg123_handle *fr, off_t frame);
211
+ off_t ntom_ins2outs(mpg123_handle *fr, off_t ins);
212
+ off_t ntom_frameoff(mpg123_handle *fr, off_t soff);
213
+ #endif
214
+
215
+ /* Initialization of any static data that majy be needed at runtime.
216
+ Make sure you call these once before it is too late. */
217
+ #ifndef NO_LAYER3
218
+ void init_layer3(void);
219
+ real init_layer3_gainpow2(mpg123_handle *fr, int i);
220
+ void init_layer3_stuff(mpg123_handle *fr, real (*gainpow2)(mpg123_handle *fr, int i));
221
+ #endif
222
+ #ifndef NO_LAYER12
223
+ void init_layer12(void);
224
+ real* init_layer12_table(mpg123_handle *fr, real *table, int m);
225
+ void init_layer12_stuff(mpg123_handle *fr, real* (*init_table)(mpg123_handle *fr, real *table, int m));
226
+ #endif
227
+
228
+ void prepare_decode_tables(void);
229
+
230
+ extern real *pnts[5]; /* tabinit provides, dct64 needs */
231
+
232
+ /* Runtime (re)init functions; needed more often. */
233
+ void make_decode_tables(mpg123_handle *fr); /* For every volume change. */
234
+ /* Stuff needed after updating synth setup (see set_synth_functions()). */
235
+
236
+ #ifdef OPT_MMXORSSE
237
+ /* Special treatment for mmx-like decoders, these functions go into the slots below. */
238
+ void make_decode_tables_mmx(mpg123_handle *fr);
239
+ #ifndef NO_LAYER3
240
+ real init_layer3_gainpow2_mmx(mpg123_handle *fr, int i);
241
+ #endif
242
+ #ifndef NO_LAYER12
243
+ real* init_layer12_table_mmx(mpg123_handle *fr, real *table, int m);
244
+ #endif
245
+ #endif
246
+
247
+ #ifndef NO_8BIT
248
+ /* Needed when switching to 8bit output. */
249
+ int make_conv16to8_table(mpg123_handle *fr);
250
+ #endif
251
+
252
+ /* These are the actual workers.
253
+ They operate on the parsed frame data and handle decompression to audio samples.
254
+ The synth functions defined above are called from inside the layer handlers. */
255
+
256
+ #ifndef NO_LAYER3
257
+ int do_layer3(mpg123_handle *fr);
258
+ #endif
259
+ #ifndef NO_LAYER2
260
+ int do_layer2(mpg123_handle *fr);
261
+ #endif
262
+ #ifndef NO_LAYER1
263
+ int do_layer1(mpg123_handle *fr);
264
+ #endif
265
+ /* There's an 3DNow counterpart in asm. */
266
+ void do_equalizer(real *bandPtr,int channel, real equalizer[2][32]);
267
+
268
+ #endif
@@ -0,0 +1,119 @@
1
+ /*
2
+ dither: Generate shaped noise for dithering
3
+
4
+ copyright 2009 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Taihei Monma
7
+ */
8
+
9
+ #include "config.h"
10
+ #include "compat.h"
11
+ #include "dither.h"
12
+
13
+ static const uint32_t init_seed = 2463534242UL;
14
+
15
+ #define LAP 100
16
+
17
+ /*
18
+ xorshift random number generator, with output scaling to [-0.5, 0.5]
19
+ This is the white noise...
20
+ See http://www.jstatsoft.org/v08/i14/paper on XOR shift random number generators.
21
+ */
22
+ static float rand_xorshift32(uint32_t *seed)
23
+ {
24
+ union
25
+ {
26
+ uint32_t i;
27
+ float f;
28
+ } fi;
29
+
30
+ fi.i = *seed;
31
+ fi.i ^= (fi.i<<13);
32
+ fi.i ^= (fi.i>>17);
33
+ fi.i ^= (fi.i<<5);
34
+ *seed = fi.i;
35
+
36
+ /* scale the number to [-0.5, 0.5] */
37
+ #ifdef IEEE_FLOAT
38
+ fi.i = (fi.i>>9)|0x3f800000;
39
+ fi.f -= 1.5f;
40
+ #else
41
+ fi.f = (double)fi.i / 4294967295.0;
42
+ fi.f -= 0.5f;
43
+ #endif
44
+ return fi.f;
45
+ }
46
+
47
+ static void white_noise(float *table, size_t count)
48
+ {
49
+ size_t i;
50
+ uint32_t seed = init_seed;
51
+
52
+ for(i=0; i<count; ++i)
53
+ table[i] = rand_xorshift32(&seed);
54
+ }
55
+
56
+ static void tpdf_noise(float *table, size_t count)
57
+ {
58
+ size_t i;
59
+ uint32_t seed = init_seed;
60
+
61
+ for(i=0; i<count; ++i)
62
+ table[i] = rand_xorshift32(&seed) + rand_xorshift32(&seed);
63
+ }
64
+
65
+ static void highpass_tpdf_noise(float *table, size_t count)
66
+ {
67
+ size_t i;
68
+ uint32_t seed = init_seed;
69
+ /* Ensure some minimum lap for keeping the high-pass filter circular. */
70
+ size_t lap = count > 2*LAP ? LAP : count/2;
71
+
72
+ float input_noise;
73
+ float xv[9], yv[9];
74
+
75
+ for(i=0;i<9;i++)
76
+ {
77
+ xv[i] = yv[i] = 0.0f;
78
+ }
79
+
80
+ for(i=0;i<count+lap;i++)
81
+ {
82
+ if(i==count) seed=init_seed;
83
+
84
+ /* generate and add 2 random numbers, to make a TPDF noise distribution */
85
+ input_noise = rand_xorshift32(&seed) + rand_xorshift32(&seed);
86
+
87
+ /* apply 8th order Chebyshev high-pass IIR filter */
88
+ /* Coefficients are from http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html
89
+ Given parameters are: Chebyshev, Highpass, ripple=-1, order=8, samplerate=44100, corner1=19000 */
90
+ xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = xv[5]; xv[5] = xv[6]; xv[6] = xv[7]; xv[7] = xv[8];
91
+ xv[8] = input_noise / 1.382814179e+07;
92
+ yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = yv[5]; yv[5] = yv[6]; yv[6] = yv[7]; yv[7] = yv[8];
93
+ yv[8] = (xv[0] + xv[8]) - 8 * (xv[1] + xv[7]) + 28 * (xv[2] + xv[6])
94
+ - 56 * (xv[3] + xv[5]) + 70 * xv[4]
95
+ + ( -0.6706204984 * yv[0]) + ( -5.3720827038 * yv[1])
96
+ + (-19.0865382480 * yv[2]) + (-39.2831607860 * yv[3])
97
+ + (-51.2308985070 * yv[4]) + (-43.3590135780 * yv[5])
98
+ + (-23.2632305320 * yv[6]) + ( -7.2370122050 * yv[7]);
99
+ if(i>=lap) table[i-lap] = yv[8] * 3.0f;
100
+ }
101
+ }
102
+
103
+ void mpg123_noise(float* table, size_t count, enum mpg123_noise_type noisetype)
104
+ {
105
+ switch(noisetype)
106
+ {
107
+ case mpg123_white_noise: white_noise(table, count); break;
108
+ case mpg123_tpdf_noise: tpdf_noise(table, count); break;
109
+ case mpg123_highpass_tpdf_noise:
110
+ highpass_tpdf_noise(table, count);
111
+ break;
112
+ }
113
+ }
114
+
115
+ /* Generate white noise and shape it with a high pass filter. */
116
+ void dither_table_init(float *dithertable)
117
+ {
118
+ highpass_tpdf_noise(dithertable, DITHERSIZE);
119
+ }
@@ -0,0 +1,23 @@
1
+ /*
2
+ dither: Generate noise for dithering / noise shaping.
3
+
4
+ copyright 2009 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Taihei Monma
7
+ */
8
+
9
+ #ifndef MPG123_DITHER_H
10
+ #define MPG123_DITHER_H
11
+
12
+ #define DITHERSIZE 65536
13
+ enum mpg123_noise_type
14
+ {
15
+ mpg123_white_noise = 0
16
+ ,mpg123_tpdf_noise
17
+ ,mpg123_highpass_tpdf_noise
18
+ };
19
+
20
+ void mpg123_noise(float* table, size_t count, enum mpg123_noise_type noisetype);
21
+ void dither_table_init(float *dithertable);
22
+
23
+ #endif
@@ -0,0 +1,17 @@
1
+ /*
2
+ equalizer.c: equalizer settings
3
+
4
+ copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Michael Hipp
7
+ */
8
+
9
+
10
+ #include "mpg123lib_intern.h"
11
+
12
+ void do_equalizer(real *bandPtr,int channel, real equalizer[2][32])
13
+ {
14
+ int i;
15
+ for(i=0;i<32;i++)
16
+ bandPtr[i] = REAL_MUL(bandPtr[i], equalizer[channel][i]);
17
+ }
@@ -0,0 +1,70 @@
1
+ /*
2
+ equalizer_3dnow: 3DNow! optimized do_equalizer()
3
+
4
+ copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by KIMURA Takuhiro
7
+ */
8
+
9
+ #include "mangle.h"
10
+
11
+ .text
12
+ ALIGN4
13
+ .globl ASM_NAME(do_equalizer_3dnow)
14
+ /* .type ASM_NAME(do_equalizer_3dnow),@function */
15
+ /* void do_equalizer(real *bandPtr,int channel, real equalizer[2][32]); */
16
+ ASM_NAME(do_equalizer_3dnow):
17
+ pushl %esi
18
+ pushl %ebx
19
+ /* bandPtr */
20
+ movl 12(%esp),%ebx
21
+ /* channel */
22
+ movl 16(%esp),%ecx
23
+ xorl %edx,%edx
24
+ /* equalizer */
25
+ movl 20(%esp),%esi
26
+ sall $7,%ecx
27
+ ALIGN4
28
+ .L9:
29
+ movq (%ebx,%edx),%mm0
30
+ pfmul (%esi,%ecx),%mm0
31
+
32
+ movq 8(%ebx,%edx),%mm1
33
+ pfmul 8(%esi,%ecx),%mm1
34
+ movq %mm0,(%ebx,%edx)
35
+
36
+ movq 16(%ebx,%edx),%mm0
37
+ pfmul 16(%esi,%ecx),%mm0
38
+ movq %mm1,8(%ebx,%edx)
39
+
40
+ movq 24(%ebx,%edx),%mm1
41
+ pfmul 24(%esi,%ecx),%mm1
42
+ movq %mm0,16(%ebx,%edx)
43
+
44
+ movq 32(%ebx,%edx),%mm0
45
+ pfmul 32(%esi,%ecx),%mm0
46
+ movq %mm1,24(%ebx,%edx)
47
+
48
+ movq 40(%ebx,%edx),%mm1
49
+ pfmul 40(%esi,%ecx),%mm1
50
+ movq %mm0,32(%ebx,%edx)
51
+
52
+ movq 48(%ebx,%edx),%mm0
53
+ pfmul 48(%esi,%ecx),%mm0
54
+ movq %mm1,40(%ebx,%edx)
55
+
56
+ movq 56(%ebx,%edx),%mm1
57
+ pfmul 56(%esi,%ecx),%mm1
58
+ movq %mm0,48(%ebx,%edx)
59
+ movq %mm1,56(%ebx,%edx)
60
+
61
+ addl $64,%edx
62
+ addl $32,%ecx
63
+ cmpl $124,%edx
64
+ jle .L9
65
+ ALIGN4
66
+ popl %ebx
67
+ popl %esi
68
+ ret
69
+
70
+ NONEXEC_STACK