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,168 @@
1
+ /*
2
+ synth_neon_s32: ARM NEON optimized synth (32-bit output version)
3
+
4
+ copyright 1995-2010 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 "mangle.h"
10
+
11
+ #define WINDOW r0
12
+ #define B0 r1
13
+ #define SAMPLES r2
14
+
15
+ /*
16
+ int synth_1to1_s32_neon_asm(real *window, real *b0, int *samples, int bo1);
17
+ return value: number of clipped samples (0)
18
+ */
19
+
20
+ .text
21
+ .globl ASM_NAME(synth_1to1_s32_neon_asm)
22
+ ALIGN4
23
+ ASM_NAME(synth_1to1_s32_neon_asm):
24
+ push {r4-r6, lr}
25
+ vpush {q4-q7}
26
+ mov r6, sp
27
+ sub sp, sp, #16
28
+ bic sp, #0xff
29
+
30
+ add WINDOW, WINDOW, #64
31
+ sub WINDOW, WINDOW, r3, lsl #2
32
+
33
+ mov r3, #4
34
+ mov r4, #128
35
+ mov r5, #64
36
+ .Loop_start_1:
37
+ vld1.32 {q0,q1}, [WINDOW], r4
38
+ vld1.32 {q2,q3}, [WINDOW], r4
39
+ vld1.32 {q4,q5}, [WINDOW], r4
40
+ vld1.32 {q6,q7}, [WINDOW]
41
+ sub WINDOW, WINDOW, #352
42
+ vld1.32 {q8,q9}, [B0, :128], r5
43
+ vld1.32 {q10,q11}, [B0, :128], r5
44
+ vld1.32 {q12,q13}, [B0, :128], r5
45
+ vld1.32 {q14,q15}, [B0, :128]
46
+ vswp q1, q4
47
+ vswp q3, q6
48
+ sub B0, B0, #160
49
+ vmul.f32 q0, q0, q8
50
+ vmul.f32 q2, q2, q10
51
+ vmul.f32 q1, q1, q12
52
+ vmul.f32 q3, q3, q14
53
+ vmla.f32 q0, q4, q9
54
+ vmla.f32 q2, q6, q11
55
+ vmla.f32 q1, q5, q13
56
+ vmla.f32 q3, q7, q15
57
+ vld1.32 {q4,q5}, [WINDOW], r4
58
+ vld1.32 {q6,q7}, [WINDOW], r4
59
+ vld1.32 {q8,q9}, [WINDOW], r4
60
+ vld1.32 {q10,q11}, [B0, :128], r5
61
+ vld1.32 {q12,q13}, [B0, :128], r5
62
+ vld1.32 {q14,q15}, [B0, :128], r5
63
+ vswp q5, q6
64
+ vswp q11, q12
65
+ vmla.f32 q0, q4, q10
66
+ vmla.f32 q2, q5, q11
67
+ vmla.f32 q1, q8, q14
68
+ vld1.32 {q4,q5}, [WINDOW]
69
+ vld1.32 {q10,q11}, [B0, :128]!
70
+ add WINDOW, WINDOW, #96
71
+ vmla.f32 q3, q4, q10
72
+ vmla.f32 q0, q6, q12
73
+ vmla.f32 q2, q7, q13
74
+ vmla.f32 q1, q9, q15
75
+ vmla.f32 q3, q5, q11
76
+ vmvn.i32 q5, #0xb9000000
77
+ vpadd.f32 d0, d0, d1
78
+ vpadd.f32 d4, d4, d5
79
+ vpadd.f32 d2, d2, d3
80
+ vpadd.f32 d6, d6, d7
81
+ vld1.32 {q6}, [sp, :128]
82
+ vpadd.f32 d0, d0, d4
83
+ vpadd.f32 d1, d2, d6
84
+
85
+ vcvt.s32.f32 q3, q0, #16
86
+ vacgt.f32 q5, q0, q5
87
+ vld2.32 {q1,q2}, [SAMPLES]
88
+ vshr.u32 q5, q5, #31
89
+ vmov q1, q3
90
+ vst2.32 {q1,q2}, [SAMPLES]!
91
+ vadd.i32 q5, q5, q6
92
+ vst1.32 {q5}, [sp, :128]
93
+
94
+ subs r3, r3, #1
95
+ bne .Loop_start_1
96
+
97
+ mov r3, #4
98
+ mov r5, #-64
99
+ .Loop_start_2:
100
+ vld1.32 {q0,q1}, [WINDOW], r4
101
+ vld1.32 {q2,q3}, [WINDOW], r4
102
+ vld1.32 {q4,q5}, [WINDOW], r4
103
+ vld1.32 {q6,q7}, [WINDOW]
104
+ sub WINDOW, WINDOW, #352
105
+ vld1.32 {q8,q9}, [B0, :128], r5
106
+ vld1.32 {q10,q11}, [B0, :128], r5
107
+ vld1.32 {q12,q13}, [B0, :128], r5
108
+ vld1.32 {q14,q15}, [B0, :128]
109
+ vswp q1, q4
110
+ vswp q3, q6
111
+ add B0, B0, #224
112
+ vmul.f32 q0, q0, q8
113
+ vmul.f32 q2, q2, q10
114
+ vmul.f32 q1, q1, q12
115
+ vmul.f32 q3, q3, q14
116
+ vmla.f32 q0, q4, q9
117
+ vmla.f32 q2, q6, q11
118
+ vmla.f32 q1, q5, q13
119
+ vmla.f32 q3, q7, q15
120
+ vld1.32 {q4,q5}, [WINDOW], r4
121
+ vld1.32 {q6,q7}, [WINDOW], r4
122
+ vld1.32 {q8,q9}, [WINDOW], r4
123
+ vld1.32 {q10,q11}, [B0, :128], r5
124
+ vld1.32 {q12,q13}, [B0, :128], r5
125
+ vld1.32 {q14,q15}, [B0, :128], r5
126
+ vswp q5, q6
127
+ vswp q11, q12
128
+ vmla.f32 q0, q4, q10
129
+ vmla.f32 q2, q5, q11
130
+ vmla.f32 q1, q8, q14
131
+ vld1.32 {q4,q5}, [WINDOW]
132
+ vld1.32 {q10,q11}, [B0, :128]
133
+ add WINDOW, WINDOW, #96
134
+ sub B0, B0, #96
135
+ vmla.f32 q3, q4, q10
136
+ vmla.f32 q0, q6, q12
137
+ vmla.f32 q2, q7, q13
138
+ vmla.f32 q1, q9, q15
139
+ vmla.f32 q3, q5, q11
140
+ vmvn.i32 q5, #0xb9000000
141
+ vpadd.f32 d0, d0, d1
142
+ vpadd.f32 d4, d4, d5
143
+ vpadd.f32 d2, d2, d3
144
+ vpadd.f32 d6, d6, d7
145
+ vld1.32 {q6}, [sp, :128]
146
+ vpadd.f32 d0, d0, d4
147
+ vpadd.f32 d1, d2, d6
148
+
149
+ vcvt.s32.f32 q3, q0, #16
150
+ vacgt.f32 q5, q0, q5
151
+ vld2.32 {q1,q2}, [SAMPLES]
152
+ vshr.u32 q5, q5, #31
153
+ vmov q1, q3
154
+ vst2.32 {q1,q2}, [SAMPLES]!
155
+ vadd.i32 q5, q5, q6
156
+ vst1.32 {q5}, [sp, :128]
157
+
158
+ subs r3, r3, #1
159
+ bne .Loop_start_2
160
+
161
+ vld1.32 {q0}, [sp, :128]
162
+ vpadd.i32 d0, d0, d1
163
+ vpadd.i32 d0, d0, d0
164
+ vmov.32 r0, d0[0]
165
+
166
+ mov sp, r6
167
+ vpop {q4-q7}
168
+ pop {r4-r6, pc}
@@ -0,0 +1,213 @@
1
+ /*
2
+ synth_ntom.h: ntom-resampling synth functions
3
+
4
+ This header is used multiple times to create different variants of this function.
5
+ Hint: MONO_NAME, MONO2STEREO_NAME, SYNTH_NAME and SAMPLE_T as well as WRITE_SAMPLE do vary.
6
+
7
+ copyright 1995-2008 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 Michael Hipp, generalized by Thomas Orgis
10
+
11
+ Well, this is very simple resampling... you may or may not like what you hear.
12
+ But it's cheap.
13
+ But still, we don't implement a non-autoincrement version of this one.
14
+ */
15
+
16
+ /* Note: These mono functions would also work generically,
17
+ it's just that they need a runtime calculation for the conversion loop...
18
+ The fixed XtoY functions have the chance for loop unrolling... */
19
+
20
+ int MONO_NAME(real *bandPtr, mpg123_handle *fr)
21
+ {
22
+ SAMPLE_T samples_tmp[8*64];
23
+ SAMPLE_T *tmp1 = samples_tmp;
24
+ size_t i;
25
+ int ret;
26
+
27
+ size_t pnt = fr->buffer.fill;
28
+ unsigned char *samples = fr->buffer.data;
29
+ fr->buffer.data = (unsigned char*) samples_tmp;
30
+ fr->buffer.fill = 0;
31
+ ret = SYNTH_NAME(bandPtr, 0, fr, 1);
32
+ fr->buffer.data = samples;
33
+
34
+ samples += pnt;
35
+ for(i=0;i<(fr->buffer.fill/(2*sizeof(SAMPLE_T)));i++)
36
+ {
37
+ *( (SAMPLE_T *)samples) = *tmp1;
38
+ samples += sizeof(SAMPLE_T);
39
+ tmp1 += 2;
40
+ }
41
+ fr->buffer.fill = pnt + (fr->buffer.fill/2);
42
+
43
+ return ret;
44
+ }
45
+
46
+
47
+ int MONO2STEREO_NAME(real *bandPtr, mpg123_handle *fr)
48
+ {
49
+ size_t i;
50
+ int ret;
51
+ size_t pnt1 = fr->buffer.fill;
52
+ unsigned char *samples = fr->buffer.data + pnt1;
53
+
54
+ ret = SYNTH_NAME(bandPtr, 0, fr, 1);
55
+
56
+ for(i=0;i<((fr->buffer.fill-pnt1)/(2*sizeof(SAMPLE_T)));i++)
57
+ {
58
+ ((SAMPLE_T *)samples)[1] = ((SAMPLE_T *)samples)[0];
59
+ samples+=2*sizeof(SAMPLE_T);
60
+ }
61
+
62
+ return ret;
63
+ }
64
+
65
+
66
+ int SYNTH_NAME(real *bandPtr,int channel, mpg123_handle *fr, int final)
67
+ {
68
+ static const int step = 2;
69
+ SAMPLE_T *samples = (SAMPLE_T *) (fr->buffer.data + fr->buffer.fill);
70
+
71
+ real *b0, **buf; /* (*buf)[0x110]; */
72
+ int clip = 0;
73
+ int bo1;
74
+ int ntom;
75
+
76
+ if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
77
+
78
+ if(!channel)
79
+ {
80
+ fr->bo--;
81
+ fr->bo &= 0xf;
82
+ buf = fr->real_buffs[0];
83
+ ntom = fr->ntom_val[1] = fr->ntom_val[0];
84
+ }
85
+ else
86
+ {
87
+ samples++;
88
+ buf = fr->real_buffs[1];
89
+ ntom = fr->ntom_val[1];
90
+ }
91
+
92
+ if(fr->bo & 0x1)
93
+ {
94
+ b0 = buf[0];
95
+ bo1 = fr->bo;
96
+ dct64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
97
+ }
98
+ else
99
+ {
100
+ b0 = buf[1];
101
+ bo1 = fr->bo+1;
102
+ dct64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
103
+ }
104
+
105
+ {
106
+ register int j;
107
+ real *window = fr->decwin + 16 - bo1;
108
+
109
+ for (j=16;j;j--,window+=0x10)
110
+ {
111
+ real sum;
112
+
113
+ ntom += fr->ntom_step;
114
+ if(ntom < NTOM_MUL)
115
+ {
116
+ window += 16;
117
+ b0 += 16;
118
+ continue;
119
+ }
120
+
121
+ sum = REAL_MUL_SYNTH(*window++, *b0++);
122
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
123
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
124
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
125
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
126
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
127
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
128
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
129
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
130
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
131
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
132
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
133
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
134
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
135
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
136
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
137
+
138
+ while(ntom >= NTOM_MUL)
139
+ {
140
+ WRITE_SAMPLE(samples,sum,clip);
141
+ samples += step;
142
+ ntom -= NTOM_MUL;
143
+ }
144
+ }
145
+
146
+ ntom += fr->ntom_step;
147
+ if(ntom >= NTOM_MUL)
148
+ {
149
+ real sum;
150
+ sum = REAL_MUL_SYNTH(window[0x0], b0[0x0]);
151
+ sum += REAL_MUL_SYNTH(window[0x2], b0[0x2]);
152
+ sum += REAL_MUL_SYNTH(window[0x4], b0[0x4]);
153
+ sum += REAL_MUL_SYNTH(window[0x6], b0[0x6]);
154
+ sum += REAL_MUL_SYNTH(window[0x8], b0[0x8]);
155
+ sum += REAL_MUL_SYNTH(window[0xA], b0[0xA]);
156
+ sum += REAL_MUL_SYNTH(window[0xC], b0[0xC]);
157
+ sum += REAL_MUL_SYNTH(window[0xE], b0[0xE]);
158
+
159
+ while(ntom >= NTOM_MUL)
160
+ {
161
+ WRITE_SAMPLE(samples,sum,clip);
162
+ samples += step;
163
+ ntom -= NTOM_MUL;
164
+ }
165
+ }
166
+
167
+ b0-=0x10,window-=0x20;
168
+ window += bo1<<1;
169
+
170
+ for (j=15;j;j--,b0-=0x20,window-=0x10)
171
+ {
172
+ real sum;
173
+
174
+ ntom += fr->ntom_step;
175
+ if(ntom < NTOM_MUL)
176
+ {
177
+ window -= 16;
178
+ b0 += 16;
179
+ continue;
180
+ }
181
+
182
+ sum = REAL_MUL_SYNTH(-*(--window), *b0++);
183
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
184
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
185
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
186
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
187
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
188
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
189
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
190
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
191
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
192
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
193
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
194
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
195
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
196
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
197
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
198
+
199
+ while(ntom >= NTOM_MUL)
200
+ {
201
+ WRITE_SAMPLE(samples,sum,clip);
202
+ samples += step;
203
+ ntom -= NTOM_MUL;
204
+ }
205
+ }
206
+ }
207
+
208
+ fr->ntom_val[channel] = ntom;
209
+ if(final) fr->buffer.fill = ((unsigned char *) samples - fr->buffer.data - (channel ? sizeof(SAMPLE_T) : 0));
210
+
211
+ return clip;
212
+ }
213
+
@@ -0,0 +1,404 @@
1
+ /*
2
+ synth_real.c: The functions for synthesizing real (float) samples, at the end of decoding.
3
+
4
+ copyright 1995-2008 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, heavily dissected and rearranged by Thomas Orgis
7
+ */
8
+
9
+ #include "mpg123lib_intern.h"
10
+ #include "sample.h"
11
+ #include "debug.h"
12
+
13
+ #ifdef REAL_IS_FIXED
14
+ #error "Do not build this file with fixed point math!"
15
+ #else
16
+ /*
17
+ Part 3: All synth functions that produce float output.
18
+ What we need is just a special WRITE_SAMPLE. For the generic and i386 functions, that is.
19
+ The optimized synths would need to be changed internally to support float output.
20
+ */
21
+
22
+ #define SAMPLE_T real
23
+ #define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
24
+
25
+ /* Part 3a: All straight 1to1 decoding functions */
26
+ #define BLOCK 0x40 /* One decoding block is 64 samples. */
27
+
28
+ #define SYNTH_NAME synth_1to1_real
29
+ #include "synth.h"
30
+ #undef SYNTH_NAME
31
+
32
+ /* Mono-related synths; they wrap over _some_ synth_1to1_real (could be generic, could be i386). */
33
+ #define SYNTH_NAME fr->synths.plain[r_1to1][f_real]
34
+ #define MONO_NAME synth_1to1_real_mono
35
+ #define MONO2STEREO_NAME synth_1to1_real_m2s
36
+ #include "synth_mono.h"
37
+ #undef SYNTH_NAME
38
+ #undef MONO_NAME
39
+ #undef MONO2STEREO_NAME
40
+
41
+ #ifdef OPT_X86
42
+ #define NO_AUTOINCREMENT
43
+ #define SYNTH_NAME synth_1to1_real_i386
44
+ #include "synth.h"
45
+ #undef SYNTH_NAME
46
+ /* i386 uses the normal mono functions. */
47
+ #undef NO_AUTOINCREMENT
48
+ #endif
49
+
50
+ #undef BLOCK
51
+
52
+ /* At least one optimized real decoder... */
53
+ #ifdef OPT_X86_64
54
+ /* Assembler routines. */
55
+ int synth_1to1_real_x86_64_asm(real *window, real *b0, real *samples, int bo1);
56
+ int synth_1to1_real_s_x86_64_asm(real *window, real *b0l, real *b0r, real *samples, int bo1);
57
+ void dct64_real_x86_64(real *out0, real *out1, real *samples);
58
+ /* Hull for C mpg123 API */
59
+ int synth_1to1_real_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final)
60
+ {
61
+ real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
62
+
63
+ real *b0, **buf;
64
+ int bo1;
65
+
66
+ if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
67
+
68
+ if(!channel)
69
+ {
70
+ fr->bo--;
71
+ fr->bo &= 0xf;
72
+ buf = fr->real_buffs[0];
73
+ }
74
+ else
75
+ {
76
+ samples++;
77
+ buf = fr->real_buffs[1];
78
+ }
79
+
80
+ if(fr->bo & 0x1)
81
+ {
82
+ b0 = buf[0];
83
+ bo1 = fr->bo;
84
+ dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
85
+ }
86
+ else
87
+ {
88
+ b0 = buf[1];
89
+ bo1 = fr->bo+1;
90
+ dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
91
+ }
92
+
93
+ synth_1to1_real_x86_64_asm(fr->decwin, b0, samples, bo1);
94
+
95
+ if(final) fr->buffer.fill += 256;
96
+
97
+ return 0;
98
+ }
99
+
100
+ int synth_1to1_real_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
101
+ {
102
+ real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
103
+
104
+ real *b0l, *b0r, **bufl, **bufr;
105
+ int bo1;
106
+
107
+ if(fr->have_eq_settings)
108
+ {
109
+ do_equalizer(bandPtr_l,0,fr->equalizer);
110
+ do_equalizer(bandPtr_r,1,fr->equalizer);
111
+ }
112
+
113
+ fr->bo--;
114
+ fr->bo &= 0xf;
115
+ bufl = fr->real_buffs[0];
116
+ bufr = fr->real_buffs[1];
117
+
118
+ if(fr->bo & 0x1)
119
+ {
120
+ b0l = bufl[0];
121
+ b0r = bufr[0];
122
+ bo1 = fr->bo;
123
+ dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
124
+ dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
125
+ }
126
+ else
127
+ {
128
+ b0l = bufl[1];
129
+ b0r = bufr[1];
130
+ bo1 = fr->bo+1;
131
+ dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
132
+ dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
133
+ }
134
+
135
+ synth_1to1_real_s_x86_64_asm(fr->decwin, b0l, b0r, samples, bo1);
136
+
137
+ fr->buffer.fill += 256;
138
+
139
+ return 0;
140
+ }
141
+ #endif
142
+
143
+ #ifdef OPT_SSE
144
+ /* Assembler routines. */
145
+ int synth_1to1_real_sse_asm(real *window, real *b0, real *samples, int bo1);
146
+ int synth_1to1_real_s_sse_asm(real *window, real *b0l, real *b0r, real *samples, int bo1);
147
+ void dct64_real_sse(real *out0, real *out1, real *samples);
148
+ /* Hull for C mpg123 API */
149
+ int synth_1to1_real_sse(real *bandPtr,int channel, mpg123_handle *fr, int final)
150
+ {
151
+ real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
152
+
153
+ real *b0, **buf;
154
+ int bo1;
155
+
156
+ if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
157
+
158
+ if(!channel)
159
+ {
160
+ fr->bo--;
161
+ fr->bo &= 0xf;
162
+ buf = fr->real_buffs[0];
163
+ }
164
+ else
165
+ {
166
+ samples++;
167
+ buf = fr->real_buffs[1];
168
+ }
169
+
170
+ if(fr->bo & 0x1)
171
+ {
172
+ b0 = buf[0];
173
+ bo1 = fr->bo;
174
+ dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
175
+ }
176
+ else
177
+ {
178
+ b0 = buf[1];
179
+ bo1 = fr->bo+1;
180
+ dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
181
+ }
182
+
183
+ synth_1to1_real_sse_asm(fr->decwin, b0, samples, bo1);
184
+
185
+ if(final) fr->buffer.fill += 256;
186
+
187
+ return 0;
188
+ }
189
+
190
+ int synth_1to1_real_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
191
+ {
192
+ real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
193
+
194
+ real *b0l, *b0r, **bufl, **bufr;
195
+ int bo1;
196
+
197
+ if(fr->have_eq_settings)
198
+ {
199
+ do_equalizer(bandPtr_l,0,fr->equalizer);
200
+ do_equalizer(bandPtr_r,1,fr->equalizer);
201
+ }
202
+
203
+ fr->bo--;
204
+ fr->bo &= 0xf;
205
+ bufl = fr->real_buffs[0];
206
+ bufr = fr->real_buffs[1];
207
+
208
+ if(fr->bo & 0x1)
209
+ {
210
+ b0l = bufl[0];
211
+ b0r = bufr[0];
212
+ bo1 = fr->bo;
213
+ dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
214
+ dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
215
+ }
216
+ else
217
+ {
218
+ b0l = bufl[1];
219
+ b0r = bufr[1];
220
+ bo1 = fr->bo+1;
221
+ dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
222
+ dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
223
+ }
224
+
225
+ synth_1to1_real_s_sse_asm(fr->decwin, b0l, b0r, samples, bo1);
226
+
227
+ fr->buffer.fill += 256;
228
+
229
+ return 0;
230
+ }
231
+ #endif
232
+
233
+ #ifdef OPT_NEON
234
+ /* Assembler routines. */
235
+ int synth_1to1_real_neon_asm(real *window, real *b0, real *samples, int bo1);
236
+ int synth_1to1_real_s_neon_asm(real *window, real *b0l, real *b0r, real *samples, int bo1);
237
+ void dct64_real_neon(real *out0, real *out1, real *samples);
238
+ /* Hull for C mpg123 API */
239
+ int synth_1to1_real_neon(real *bandPtr,int channel, mpg123_handle *fr, int final)
240
+ {
241
+ real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
242
+
243
+ real *b0, **buf;
244
+ int bo1;
245
+
246
+ if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
247
+
248
+ if(!channel)
249
+ {
250
+ fr->bo--;
251
+ fr->bo &= 0xf;
252
+ buf = fr->real_buffs[0];
253
+ }
254
+ else
255
+ {
256
+ samples++;
257
+ buf = fr->real_buffs[1];
258
+ }
259
+
260
+ if(fr->bo & 0x1)
261
+ {
262
+ b0 = buf[0];
263
+ bo1 = fr->bo;
264
+ dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
265
+ }
266
+ else
267
+ {
268
+ b0 = buf[1];
269
+ bo1 = fr->bo+1;
270
+ dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
271
+ }
272
+
273
+ synth_1to1_real_neon_asm(fr->decwin, b0, samples, bo1);
274
+
275
+ if(final) fr->buffer.fill += 256;
276
+
277
+ return 0;
278
+ }
279
+ int synth_1to1_real_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
280
+ {
281
+ real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
282
+
283
+ real *b0l, *b0r, **bufl, **bufr;
284
+ int bo1;
285
+
286
+ if(fr->have_eq_settings)
287
+ {
288
+ do_equalizer(bandPtr_l,0,fr->equalizer);
289
+ do_equalizer(bandPtr_r,1,fr->equalizer);
290
+ }
291
+
292
+ fr->bo--;
293
+ fr->bo &= 0xf;
294
+ bufl = fr->real_buffs[0];
295
+ bufr = fr->real_buffs[1];
296
+
297
+ if(fr->bo & 0x1)
298
+ {
299
+ b0l = bufl[0];
300
+ b0r = bufr[0];
301
+ bo1 = fr->bo;
302
+ dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
303
+ dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
304
+ }
305
+ else
306
+ {
307
+ b0l = bufl[1];
308
+ b0r = bufr[1];
309
+ bo1 = fr->bo+1;
310
+ dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
311
+ dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
312
+ }
313
+
314
+ synth_1to1_real_s_neon_asm(fr->decwin, b0l, b0r, samples, bo1);
315
+
316
+ fr->buffer.fill += 256;
317
+
318
+ return 0;
319
+ }
320
+ #endif
321
+
322
+ #ifndef NO_DOWNSAMPLE
323
+
324
+ /*
325
+ Part 3b: 2to1 synth. Only generic and i386.
326
+ */
327
+ #define BLOCK 0x20 /* One decoding block is 32 samples. */
328
+
329
+ #define SYNTH_NAME synth_2to1_real
330
+ #include "synth.h"
331
+ #undef SYNTH_NAME
332
+
333
+ /* Mono-related synths; they wrap over _some_ synth_2to1_real (could be generic, could be i386). */
334
+ #define SYNTH_NAME fr->synths.plain[r_2to1][f_real]
335
+ #define MONO_NAME synth_2to1_real_mono
336
+ #define MONO2STEREO_NAME synth_2to1_real_m2s
337
+ #include "synth_mono.h"
338
+ #undef SYNTH_NAME
339
+ #undef MONO_NAME
340
+ #undef MONO2STEREO_NAME
341
+
342
+ #ifdef OPT_X86
343
+ #define NO_AUTOINCREMENT
344
+ #define SYNTH_NAME synth_2to1_real_i386
345
+ #include "synth.h"
346
+ #undef SYNTH_NAME
347
+ /* i386 uses the normal mono functions. */
348
+ #undef NO_AUTOINCREMENT
349
+ #endif
350
+
351
+ #undef BLOCK
352
+
353
+ /*
354
+ Part 3c: 4to1 synth. Only generic and i386.
355
+ */
356
+ #define BLOCK 0x10 /* One decoding block is 16 samples. */
357
+
358
+ #define SYNTH_NAME synth_4to1_real
359
+ #include "synth.h"
360
+ #undef SYNTH_NAME
361
+
362
+ /* Mono-related synths; they wrap over _some_ synth_4to1_real (could be generic, could be i386). */
363
+ #define SYNTH_NAME fr->synths.plain[r_4to1][f_real]
364
+ #define MONO_NAME synth_4to1_real_mono
365
+ #define MONO2STEREO_NAME synth_4to1_real_m2s
366
+ #include "synth_mono.h"
367
+ #undef SYNTH_NAME
368
+ #undef MONO_NAME
369
+ #undef MONO2STEREO_NAME
370
+
371
+ #ifdef OPT_X86
372
+ #define NO_AUTOINCREMENT
373
+ #define SYNTH_NAME synth_4to1_real_i386
374
+ #include "synth.h"
375
+ #undef SYNTH_NAME
376
+ /* i386 uses the normal mono functions. */
377
+ #undef NO_AUTOINCREMENT
378
+ #endif
379
+
380
+ #undef BLOCK
381
+
382
+ #endif /* NO_DOWNSAMPLE */
383
+
384
+ #ifndef NO_NTOM
385
+ /*
386
+ Part 3d: ntom synth.
387
+ Same procedure as above... Just no extra play anymore, straight synth that may use an optimized dct64.
388
+ */
389
+
390
+ /* These are all in one header, there's no flexibility to gain. */
391
+ #define SYNTH_NAME synth_ntom_real
392
+ #define MONO_NAME synth_ntom_real_mono
393
+ #define MONO2STEREO_NAME synth_ntom_real_m2s
394
+ #include "synth_ntom.h"
395
+ #undef SYNTH_NAME
396
+ #undef MONO_NAME
397
+ #undef MONO2STEREO_NAME
398
+
399
+ #endif
400
+
401
+ #undef SAMPLE_T
402
+ #undef WRITE_SAMPLE
403
+
404
+ #endif /* non-fixed type */