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,396 @@
1
+ /*
2
+ synth_stereo_x86_64_float: SSE optimized synth for x86-64 (stereo specific, float output version)
3
+
4
+ copyright 1995-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 "mangle.h"
10
+
11
+ #ifdef _WIN64
12
+ /* short *window; */
13
+ #define WINDOW %r10
14
+ /* short *b0l; */
15
+ #define B0L %rdx
16
+ /* short *b0r; */
17
+ #define B0R %r8
18
+ /* short *samples; */
19
+ #define SAMPLES %r9
20
+ #else
21
+ /* real *window; */
22
+ #define WINDOW %rdi
23
+ /* real *b0l; */
24
+ #define B0L %rsi
25
+ /* real *b0r; */
26
+ #define B0R %rdx
27
+ /* real *samples; */
28
+ #define SAMPLES %r9
29
+ #endif
30
+
31
+ #define XMMREG_SCALE (%r11) /* {1/32768.0, 1/32768.0, 1/32768.0, 1/32768.0} */
32
+
33
+ /*
34
+ int synth_1to1_real_s_x86_64_asm(real *window, real *b0l, real *b0r, real *samples, int bo1);
35
+ return value: number of clipped samples (0)
36
+ */
37
+
38
+ #ifndef __APPLE__
39
+ .section .rodata
40
+ #else
41
+ .data
42
+ #endif
43
+ ALIGN32
44
+ ASM_NAME(scale_x86_64):
45
+ .long 939524096
46
+ .long 939524096
47
+ .long 939524096
48
+ .long 939524096
49
+ .text
50
+ ALIGN16
51
+ .globl ASM_NAME(synth_1to1_real_s_x86_64_asm)
52
+ ASM_NAME(synth_1to1_real_s_x86_64_asm):
53
+ #ifdef _WIN64 /* should save xmm6-15 */
54
+ movl 40(%rsp), %eax /* 5th argument; placed after 32-byte shadow space */
55
+ subq $168, %rsp /* stack alignment + 10 xmm registers */
56
+ movaps %xmm6, (%rsp)
57
+ movaps %xmm7, 16(%rsp)
58
+ movaps %xmm8, 32(%rsp)
59
+ movaps %xmm9, 48(%rsp)
60
+ movaps %xmm10, 64(%rsp)
61
+ movaps %xmm11, 80(%rsp)
62
+ movaps %xmm12, 96(%rsp)
63
+ movaps %xmm13, 112(%rsp)
64
+ movaps %xmm14, 128(%rsp)
65
+ movaps %xmm15, 144(%rsp)
66
+ #endif
67
+
68
+ leaq ASM_NAME(scale_x86_64)(%rip), %r11
69
+
70
+ #ifdef _WIN64
71
+ shlq $32, %rax
72
+ shrq $30, %rax
73
+ movq %rcx, %r10
74
+ #else
75
+ movq %r8, %rax
76
+ shlq $32, %rax
77
+ shrq $30, %rax
78
+ movq %rcx, %r9
79
+ #endif
80
+ leaq 64(WINDOW), WINDOW
81
+ subq %rax, WINDOW
82
+
83
+ movl $4, %ecx
84
+
85
+ ALIGN16
86
+ Loop_start_1:
87
+ movups (WINDOW), %xmm8
88
+ movups 16(WINDOW), %xmm1
89
+ movups 32(WINDOW), %xmm2
90
+ movups 48(WINDOW), %xmm3
91
+ movups 128(WINDOW), %xmm9
92
+ movups 144(WINDOW), %xmm5
93
+ movups 160(WINDOW), %xmm6
94
+ movups 176(WINDOW), %xmm7
95
+ movaps %xmm8, %xmm0
96
+ movaps %xmm1, %xmm4
97
+ movaps %xmm2, %xmm10
98
+ movaps %xmm3, %xmm11
99
+ movaps %xmm9, %xmm12
100
+ movaps %xmm5, %xmm13
101
+ movaps %xmm6, %xmm14
102
+ movaps %xmm7, %xmm15
103
+ mulps (B0L), %xmm8
104
+ mulps 16(B0L), %xmm1
105
+ mulps 32(B0L), %xmm2
106
+ mulps 48(B0L), %xmm3
107
+ mulps 64(B0L), %xmm9
108
+ mulps 80(B0L), %xmm5
109
+ mulps 96(B0L), %xmm6
110
+ mulps 112(B0L), %xmm7
111
+ mulps (B0R), %xmm0
112
+ mulps 16(B0R), %xmm4
113
+ mulps 32(B0R), %xmm10
114
+ mulps 48(B0R), %xmm11
115
+ mulps 64(B0R), %xmm12
116
+ mulps 80(B0R), %xmm13
117
+ mulps 96(B0R), %xmm14
118
+ mulps 112(B0R), %xmm15
119
+
120
+ addps %xmm1, %xmm8
121
+ addps %xmm2, %xmm3
122
+ addps %xmm4, %xmm0
123
+ addps %xmm11, %xmm10
124
+ addps %xmm5, %xmm9
125
+ addps %xmm7, %xmm6
126
+ addps %xmm13, %xmm12
127
+ addps %xmm15, %xmm14
128
+ addps %xmm3, %xmm8
129
+ addps %xmm6, %xmm9
130
+ addps %xmm10, %xmm0
131
+ addps %xmm12, %xmm14
132
+ movaps %xmm0, %xmm12
133
+ movaps %xmm14, %xmm13
134
+ leaq 256(WINDOW), WINDOW
135
+ leaq 128(B0L), B0L
136
+ leaq 128(B0R), B0R
137
+
138
+ movups (WINDOW), %xmm10
139
+ movups 16(WINDOW), %xmm1
140
+ movups 32(WINDOW), %xmm2
141
+ movups 48(WINDOW), %xmm3
142
+ movups 128(WINDOW), %xmm11
143
+ movups 144(WINDOW), %xmm5
144
+ movups 160(WINDOW), %xmm6
145
+ movups 176(WINDOW), %xmm7
146
+ movaps %xmm10, %xmm0
147
+ movaps %xmm1, %xmm4
148
+ movaps %xmm2, %xmm14
149
+ movaps %xmm3, %xmm15
150
+ mulps (B0L), %xmm10
151
+ mulps 16(B0L), %xmm1
152
+ mulps 32(B0L), %xmm2
153
+ mulps 48(B0L), %xmm3
154
+ mulps (B0R), %xmm0
155
+ mulps 16(B0R), %xmm4
156
+ mulps 32(B0R), %xmm14
157
+ mulps 48(B0R), %xmm15
158
+ addps %xmm1, %xmm10
159
+ addps %xmm2, %xmm3
160
+ addps %xmm4, %xmm0
161
+ addps %xmm15, %xmm14
162
+ movaps %xmm11, %xmm1
163
+ movaps %xmm5, %xmm2
164
+ movaps %xmm6, %xmm4
165
+ movaps %xmm7, %xmm15
166
+ mulps 64(B0L), %xmm11
167
+ mulps 80(B0L), %xmm5
168
+ mulps 96(B0L), %xmm6
169
+ mulps 112(B0L), %xmm7
170
+ mulps 64(B0R), %xmm1
171
+ mulps 80(B0R), %xmm2
172
+ mulps 96(B0R), %xmm4
173
+ mulps 112(B0R), %xmm15
174
+ addps %xmm5, %xmm11
175
+ addps %xmm7, %xmm6
176
+ addps %xmm2, %xmm1
177
+ addps %xmm15, %xmm4
178
+
179
+ addps %xmm3, %xmm10
180
+ addps %xmm6, %xmm11
181
+ addps %xmm0, %xmm14
182
+ addps %xmm4, %xmm1
183
+ movaps %xmm1, %xmm15
184
+ leaq 256(WINDOW), WINDOW
185
+ leaq 128(B0L), B0L
186
+ leaq 128(B0R), B0R
187
+
188
+ movaps %xmm8, %xmm0
189
+ movaps %xmm10, %xmm1
190
+ movaps %xmm12, %xmm4
191
+ movaps %xmm14, %xmm5
192
+ unpcklps %xmm9, %xmm8
193
+ unpcklps %xmm11, %xmm10
194
+ unpckhps %xmm9, %xmm0
195
+ unpckhps %xmm11, %xmm1
196
+ unpcklps %xmm13, %xmm12
197
+ unpcklps %xmm15, %xmm14
198
+ unpckhps %xmm13, %xmm4
199
+ unpckhps %xmm15, %xmm5
200
+ movaps %xmm8, %xmm2
201
+ movaps %xmm0, %xmm3
202
+ movaps %xmm12, %xmm6
203
+ movaps %xmm4, %xmm7
204
+ movlhps %xmm10, %xmm8
205
+ movhlps %xmm2, %xmm10
206
+ movlhps %xmm1, %xmm0
207
+ movhlps %xmm3, %xmm1
208
+ movlhps %xmm14, %xmm12
209
+ movhlps %xmm6, %xmm14
210
+ movlhps %xmm5, %xmm4
211
+ movhlps %xmm7, %xmm5
212
+ subps %xmm10, %xmm8
213
+ subps %xmm1, %xmm0
214
+ subps %xmm14, %xmm12
215
+ subps %xmm5, %xmm4
216
+ addps %xmm8, %xmm0
217
+ addps %xmm12, %xmm4
218
+
219
+ mulps XMMREG_SCALE, %xmm0
220
+ mulps XMMREG_SCALE, %xmm4
221
+ movaps %xmm0, %xmm1
222
+ unpcklps %xmm4, %xmm0
223
+ unpckhps %xmm4, %xmm1
224
+ movups %xmm0, (SAMPLES)
225
+ movups %xmm1, 16(SAMPLES)
226
+
227
+ leaq 32(SAMPLES), SAMPLES
228
+ decl %ecx
229
+ jnz Loop_start_1
230
+
231
+ movl $4, %ecx
232
+
233
+ ALIGN16
234
+ Loop_start_2:
235
+ movups (WINDOW), %xmm8
236
+ movups 16(WINDOW), %xmm1
237
+ movups 32(WINDOW), %xmm2
238
+ movups 48(WINDOW), %xmm3
239
+ movups 128(WINDOW), %xmm9
240
+ movups 144(WINDOW), %xmm5
241
+ movups 160(WINDOW), %xmm6
242
+ movups 176(WINDOW), %xmm7
243
+ movaps %xmm8, %xmm0
244
+ movaps %xmm1, %xmm4
245
+ movaps %xmm2, %xmm10
246
+ movaps %xmm3, %xmm11
247
+ movaps %xmm9, %xmm12
248
+ movaps %xmm5, %xmm13
249
+ movaps %xmm6, %xmm14
250
+ movaps %xmm7, %xmm15
251
+ mulps (B0L), %xmm8
252
+ mulps 16(B0L), %xmm1
253
+ mulps 32(B0L), %xmm2
254
+ mulps 48(B0L), %xmm3
255
+ mulps -64(B0L), %xmm9
256
+ mulps -48(B0L), %xmm5
257
+ mulps -32(B0L), %xmm6
258
+ mulps -16(B0L), %xmm7
259
+ mulps (B0R), %xmm0
260
+ mulps 16(B0R), %xmm4
261
+ mulps 32(B0R), %xmm10
262
+ mulps 48(B0R), %xmm11
263
+ mulps -64(B0R), %xmm12
264
+ mulps -48(B0R), %xmm13
265
+ mulps -32(B0R), %xmm14
266
+ mulps -16(B0R), %xmm15
267
+
268
+ addps %xmm1, %xmm8
269
+ addps %xmm2, %xmm3
270
+ addps %xmm4, %xmm0
271
+ addps %xmm11, %xmm10
272
+ addps %xmm5, %xmm9
273
+ addps %xmm7, %xmm6
274
+ addps %xmm13, %xmm12
275
+ addps %xmm15, %xmm14
276
+ addps %xmm3, %xmm8
277
+ addps %xmm6, %xmm9
278
+ addps %xmm10, %xmm0
279
+ addps %xmm12, %xmm14
280
+ movaps %xmm0, %xmm12
281
+ movaps %xmm14, %xmm13
282
+ leaq 256(WINDOW), WINDOW
283
+ leaq -128(B0L), B0L
284
+ leaq -128(B0R), B0R
285
+
286
+ movups (WINDOW), %xmm10
287
+ movups 16(WINDOW), %xmm1
288
+ movups 32(WINDOW), %xmm2
289
+ movups 48(WINDOW), %xmm3
290
+ movups 128(WINDOW), %xmm11
291
+ movups 144(WINDOW), %xmm5
292
+ movups 160(WINDOW), %xmm6
293
+ movups 176(WINDOW), %xmm7
294
+ movaps %xmm10, %xmm0
295
+ movaps %xmm1, %xmm4
296
+ movaps %xmm2, %xmm14
297
+ movaps %xmm3, %xmm15
298
+ mulps (B0L), %xmm10
299
+ mulps 16(B0L), %xmm1
300
+ mulps 32(B0L), %xmm2
301
+ mulps 48(B0L), %xmm3
302
+ mulps (B0R), %xmm0
303
+ mulps 16(B0R), %xmm4
304
+ mulps 32(B0R), %xmm14
305
+ mulps 48(B0R), %xmm15
306
+ addps %xmm1, %xmm10
307
+ addps %xmm2, %xmm3
308
+ addps %xmm4, %xmm0
309
+ addps %xmm15, %xmm14
310
+ movaps %xmm11, %xmm1
311
+ movaps %xmm5, %xmm2
312
+ movaps %xmm6, %xmm4
313
+ movaps %xmm7, %xmm15
314
+ mulps -64(B0L), %xmm11
315
+ mulps -48(B0L), %xmm5
316
+ mulps -32(B0L), %xmm6
317
+ mulps -16(B0L), %xmm7
318
+ mulps -64(B0R), %xmm1
319
+ mulps -48(B0R), %xmm2
320
+ mulps -32(B0R), %xmm4
321
+ mulps -16(B0R), %xmm15
322
+ addps %xmm5, %xmm11
323
+ addps %xmm7, %xmm6
324
+ addps %xmm2, %xmm1
325
+ addps %xmm15, %xmm4
326
+
327
+ addps %xmm3, %xmm10
328
+ addps %xmm6, %xmm11
329
+ addps %xmm0, %xmm14
330
+ addps %xmm4, %xmm1
331
+ movaps %xmm1, %xmm15
332
+ leaq 256(WINDOW), WINDOW
333
+ leaq -128(B0L), B0L
334
+ leaq -128(B0R), B0R
335
+
336
+ movaps %xmm8, %xmm0
337
+ movaps %xmm10, %xmm1
338
+ movaps %xmm12, %xmm4
339
+ movaps %xmm14, %xmm5
340
+ unpcklps %xmm9, %xmm8
341
+ unpcklps %xmm11, %xmm10
342
+ unpckhps %xmm9, %xmm0
343
+ unpckhps %xmm11, %xmm1
344
+ unpcklps %xmm13, %xmm12
345
+ unpcklps %xmm15, %xmm14
346
+ unpckhps %xmm13, %xmm4
347
+ unpckhps %xmm15, %xmm5
348
+ movaps %xmm8, %xmm2
349
+ movaps %xmm0, %xmm3
350
+ movaps %xmm12, %xmm6
351
+ movaps %xmm4, %xmm7
352
+ movlhps %xmm10, %xmm8
353
+ movhlps %xmm2, %xmm10
354
+ movlhps %xmm1, %xmm0
355
+ movhlps %xmm3, %xmm1
356
+ movlhps %xmm14, %xmm12
357
+ movhlps %xmm6, %xmm14
358
+ movlhps %xmm5, %xmm4
359
+ movhlps %xmm7, %xmm5
360
+ addps %xmm10, %xmm8
361
+ addps %xmm1, %xmm0
362
+ addps %xmm14, %xmm12
363
+ addps %xmm5, %xmm4
364
+ addps %xmm8, %xmm0
365
+ addps %xmm12, %xmm4
366
+
367
+ mulps XMMREG_SCALE, %xmm0
368
+ mulps XMMREG_SCALE, %xmm4
369
+ movaps %xmm0, %xmm1
370
+ unpcklps %xmm4, %xmm0
371
+ unpckhps %xmm4, %xmm1
372
+ movups %xmm0, (SAMPLES)
373
+ movups %xmm1, 16(SAMPLES)
374
+
375
+ leaq 32(SAMPLES), SAMPLES
376
+ decl %ecx
377
+ jnz Loop_start_2
378
+
379
+ xorl %eax, %eax
380
+
381
+ #ifdef _WIN64
382
+ movaps (%rsp), %xmm6
383
+ movaps 16(%rsp), %xmm7
384
+ movaps 32(%rsp), %xmm8
385
+ movaps 48(%rsp), %xmm9
386
+ movaps 64(%rsp), %xmm10
387
+ movaps 80(%rsp), %xmm11
388
+ movaps 96(%rsp), %xmm12
389
+ movaps 112(%rsp), %xmm13
390
+ movaps 128(%rsp), %xmm14
391
+ movaps 144(%rsp), %xmm15
392
+ addq $168, %rsp
393
+ #endif
394
+ ret
395
+
396
+ NONEXEC_STACK
@@ -0,0 +1,473 @@
1
+ /*
2
+ synth_stereo_x86_64_s32: SSE optimized synth for x86-64 (stereo specific, s32 output version)
3
+
4
+ copyright 1995-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 "mangle.h"
10
+
11
+ #ifdef _WIN64
12
+ /* short *window; */
13
+ #define WINDOW %rsi
14
+ /* short *b0l; */
15
+ #define B0L %rdx
16
+ /* short *b0r; */
17
+ #define B0R %r8
18
+ /* short *samples; */
19
+ #define SAMPLES %rdi
20
+ #else
21
+ /* real *window; */
22
+ #define WINDOW %rdi
23
+ /* real *b0l; */
24
+ #define B0L %rsi
25
+ /* real *b0r; */
26
+ #define B0R %rdx
27
+ /* real *samples; */
28
+ #define SAMPLES %r8
29
+ #endif
30
+
31
+ #define XMMREG_SCALE (%r9) /* {65536.0, 65536.0, 65536.0, 65536.0} */
32
+ #define XMMREG_MAX (%r10) /* {32767.999, 32767.999, 32767.999, 32767.999} */
33
+ #define XMMREG_MIN (%r11) /* {-32768.0, -32768.0, -32768.0, -32768.0} */
34
+ #define TEMP_CLIP (%rsp)
35
+
36
+ /*
37
+ int synth_1to1_s32_s_x86_64_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1);
38
+ return value: number of clipped samples
39
+ */
40
+
41
+ #ifndef __APPLE__
42
+ .section .rodata
43
+ #else
44
+ .data
45
+ #endif
46
+ ALIGN32
47
+ ASM_NAME(scale_s32):
48
+ .long 1199570944
49
+ .long 1199570944
50
+ .long 1199570944
51
+ .long 1199570944
52
+ ALIGN16
53
+ ASM_NAME(maxmin_s32):
54
+ .long 1191182335
55
+ .long 1191182335
56
+ .long 1191182335
57
+ .long 1191182335
58
+ .long -956301312
59
+ .long -956301312
60
+ .long -956301312
61
+ .long -956301312
62
+ .text
63
+ ALIGN16
64
+ .globl ASM_NAME(synth_1to1_s32_s_x86_64_asm)
65
+ ASM_NAME(synth_1to1_s32_s_x86_64_asm):
66
+ #ifdef _WIN64 /* should save xmm6-15 */
67
+ movl 40(%rsp), %eax /* 5th argument; placed after 32-byte shadow space */
68
+ pushq %rsi
69
+ pushq %rdi
70
+ subq $184, %rsp /* stack alignment + 10 xmm registers + temp */
71
+ movaps %xmm6, 16(%rsp)
72
+ movaps %xmm7, 32(%rsp)
73
+ movaps %xmm8, 48(%rsp)
74
+ movaps %xmm9, 64(%rsp)
75
+ movaps %xmm10, 80(%rsp)
76
+ movaps %xmm11, 96(%rsp)
77
+ movaps %xmm12, 112(%rsp)
78
+ movaps %xmm13, 128(%rsp)
79
+ movaps %xmm14, 144(%rsp)
80
+ movaps %xmm15, 160(%rsp)
81
+ #else
82
+ subq $24, %rsp /* stack alignment + temp */
83
+ #endif
84
+
85
+ #ifdef _WIN64
86
+ shlq $32, %rax
87
+ shrq $30, %rax
88
+ movq %rcx, %rsi
89
+ movq %r9, %rdi
90
+ #else
91
+ movq %r8, %rax
92
+ shlq $32, %rax
93
+ shrq $30, %rax
94
+ movq %rcx, %r8
95
+ #endif
96
+ leaq 64(WINDOW), WINDOW
97
+ subq %rax, WINDOW
98
+
99
+ leaq ASM_NAME(scale_s32)(%rip), %r9
100
+ leaq ASM_NAME(maxmin_s32)(%rip), %r10
101
+ leaq 16(%r10), %r11
102
+ xorps %xmm0, %xmm0
103
+ movaps %xmm0, TEMP_CLIP
104
+
105
+ movl $4, %ecx
106
+
107
+ ALIGN16
108
+ Loop_start_1:
109
+ movups (WINDOW), %xmm8
110
+ movups 16(WINDOW), %xmm1
111
+ movups 32(WINDOW), %xmm2
112
+ movups 48(WINDOW), %xmm3
113
+ movups 128(WINDOW), %xmm9
114
+ movups 144(WINDOW), %xmm5
115
+ movups 160(WINDOW), %xmm6
116
+ movups 176(WINDOW), %xmm7
117
+ movaps %xmm8, %xmm0
118
+ movaps %xmm1, %xmm4
119
+ movaps %xmm2, %xmm10
120
+ movaps %xmm3, %xmm11
121
+ movaps %xmm9, %xmm12
122
+ movaps %xmm5, %xmm13
123
+ movaps %xmm6, %xmm14
124
+ movaps %xmm7, %xmm15
125
+ mulps (B0L), %xmm8
126
+ mulps 16(B0L), %xmm1
127
+ mulps 32(B0L), %xmm2
128
+ mulps 48(B0L), %xmm3
129
+ mulps 64(B0L), %xmm9
130
+ mulps 80(B0L), %xmm5
131
+ mulps 96(B0L), %xmm6
132
+ mulps 112(B0L), %xmm7
133
+ mulps (B0R), %xmm0
134
+ mulps 16(B0R), %xmm4
135
+ mulps 32(B0R), %xmm10
136
+ mulps 48(B0R), %xmm11
137
+ mulps 64(B0R), %xmm12
138
+ mulps 80(B0R), %xmm13
139
+ mulps 96(B0R), %xmm14
140
+ mulps 112(B0R), %xmm15
141
+
142
+ addps %xmm1, %xmm8
143
+ addps %xmm2, %xmm3
144
+ addps %xmm4, %xmm0
145
+ addps %xmm11, %xmm10
146
+ addps %xmm5, %xmm9
147
+ addps %xmm7, %xmm6
148
+ addps %xmm13, %xmm12
149
+ addps %xmm15, %xmm14
150
+ addps %xmm3, %xmm8
151
+ addps %xmm6, %xmm9
152
+ addps %xmm10, %xmm0
153
+ addps %xmm12, %xmm14
154
+ movaps %xmm0, %xmm12
155
+ movaps %xmm14, %xmm13
156
+ leaq 256(WINDOW), WINDOW
157
+ leaq 128(B0L), B0L
158
+ leaq 128(B0R), B0R
159
+
160
+ movups (WINDOW), %xmm10
161
+ movups 16(WINDOW), %xmm1
162
+ movups 32(WINDOW), %xmm2
163
+ movups 48(WINDOW), %xmm3
164
+ movups 128(WINDOW), %xmm11
165
+ movups 144(WINDOW), %xmm5
166
+ movups 160(WINDOW), %xmm6
167
+ movups 176(WINDOW), %xmm7
168
+ movaps %xmm10, %xmm0
169
+ movaps %xmm1, %xmm4
170
+ movaps %xmm2, %xmm14
171
+ movaps %xmm3, %xmm15
172
+ mulps (B0L), %xmm10
173
+ mulps 16(B0L), %xmm1
174
+ mulps 32(B0L), %xmm2
175
+ mulps 48(B0L), %xmm3
176
+ mulps (B0R), %xmm0
177
+ mulps 16(B0R), %xmm4
178
+ mulps 32(B0R), %xmm14
179
+ mulps 48(B0R), %xmm15
180
+ addps %xmm1, %xmm10
181
+ addps %xmm2, %xmm3
182
+ addps %xmm4, %xmm0
183
+ addps %xmm15, %xmm14
184
+ movaps %xmm11, %xmm1
185
+ movaps %xmm5, %xmm2
186
+ movaps %xmm6, %xmm4
187
+ movaps %xmm7, %xmm15
188
+ mulps 64(B0L), %xmm11
189
+ mulps 80(B0L), %xmm5
190
+ mulps 96(B0L), %xmm6
191
+ mulps 112(B0L), %xmm7
192
+ mulps 64(B0R), %xmm1
193
+ mulps 80(B0R), %xmm2
194
+ mulps 96(B0R), %xmm4
195
+ mulps 112(B0R), %xmm15
196
+ addps %xmm5, %xmm11
197
+ addps %xmm7, %xmm6
198
+ addps %xmm2, %xmm1
199
+ addps %xmm15, %xmm4
200
+
201
+ addps %xmm3, %xmm10
202
+ addps %xmm6, %xmm11
203
+ addps %xmm0, %xmm14
204
+ addps %xmm4, %xmm1
205
+ movaps %xmm1, %xmm15
206
+ leaq 256(WINDOW), WINDOW
207
+ leaq 128(B0L), B0L
208
+ leaq 128(B0R), B0R
209
+
210
+ movaps %xmm8, %xmm0
211
+ movaps %xmm10, %xmm1
212
+ movaps %xmm12, %xmm4
213
+ movaps %xmm14, %xmm5
214
+ unpcklps %xmm9, %xmm8
215
+ unpcklps %xmm11, %xmm10
216
+ unpckhps %xmm9, %xmm0
217
+ unpckhps %xmm11, %xmm1
218
+ unpcklps %xmm13, %xmm12
219
+ unpcklps %xmm15, %xmm14
220
+ unpckhps %xmm13, %xmm4
221
+ unpckhps %xmm15, %xmm5
222
+ movaps %xmm8, %xmm2
223
+ movaps %xmm0, %xmm3
224
+ movaps %xmm12, %xmm6
225
+ movaps %xmm4, %xmm7
226
+ movlhps %xmm10, %xmm8
227
+ movhlps %xmm2, %xmm10
228
+ movlhps %xmm1, %xmm0
229
+ movhlps %xmm3, %xmm1
230
+ movlhps %xmm14, %xmm12
231
+ movhlps %xmm6, %xmm14
232
+ movlhps %xmm5, %xmm4
233
+ movhlps %xmm7, %xmm5
234
+ subps %xmm10, %xmm8
235
+ subps %xmm1, %xmm0
236
+ subps %xmm14, %xmm12
237
+ subps %xmm5, %xmm4
238
+ addps %xmm8, %xmm0
239
+ addps %xmm12, %xmm4
240
+
241
+ movaps %xmm0, %xmm2
242
+ movaps %xmm0, %xmm3
243
+ movaps %xmm4, %xmm5
244
+ movaps %xmm4, %xmm6
245
+ mulps XMMREG_SCALE, %xmm0
246
+ mulps XMMREG_SCALE, %xmm4
247
+ cmpnleps XMMREG_MAX, %xmm2
248
+ cmpltps XMMREG_MIN, %xmm3
249
+ cmpnleps XMMREG_MAX, %xmm5
250
+ cmpltps XMMREG_MIN, %xmm6
251
+ cvtps2dq %xmm0, %xmm0
252
+ cvtps2dq %xmm4, %xmm4
253
+ xorps %xmm2, %xmm0
254
+ xorps %xmm5, %xmm4
255
+ movaps %xmm0, %xmm1
256
+ unpcklps %xmm4, %xmm0
257
+ unpckhps %xmm4, %xmm1
258
+ movups %xmm0, (SAMPLES)
259
+ movups %xmm1, 16(SAMPLES)
260
+
261
+ packssdw %xmm5, %xmm2
262
+ packssdw %xmm6, %xmm3
263
+ psrlw $15, %xmm2
264
+ psrlw $15, %xmm3
265
+ paddw %xmm3, %xmm2
266
+ paddw TEMP_CLIP, %xmm2
267
+ movaps %xmm2, TEMP_CLIP
268
+
269
+ leaq 32(SAMPLES), SAMPLES
270
+ decl %ecx
271
+ jnz Loop_start_1
272
+
273
+ movl $4, %ecx
274
+
275
+ ALIGN16
276
+ Loop_start_2:
277
+ movups (WINDOW), %xmm8
278
+ movups 16(WINDOW), %xmm1
279
+ movups 32(WINDOW), %xmm2
280
+ movups 48(WINDOW), %xmm3
281
+ movups 128(WINDOW), %xmm9
282
+ movups 144(WINDOW), %xmm5
283
+ movups 160(WINDOW), %xmm6
284
+ movups 176(WINDOW), %xmm7
285
+ movaps %xmm8, %xmm0
286
+ movaps %xmm1, %xmm4
287
+ movaps %xmm2, %xmm10
288
+ movaps %xmm3, %xmm11
289
+ movaps %xmm9, %xmm12
290
+ movaps %xmm5, %xmm13
291
+ movaps %xmm6, %xmm14
292
+ movaps %xmm7, %xmm15
293
+ mulps (B0L), %xmm8
294
+ mulps 16(B0L), %xmm1
295
+ mulps 32(B0L), %xmm2
296
+ mulps 48(B0L), %xmm3
297
+ mulps -64(B0L), %xmm9
298
+ mulps -48(B0L), %xmm5
299
+ mulps -32(B0L), %xmm6
300
+ mulps -16(B0L), %xmm7
301
+ mulps (B0R), %xmm0
302
+ mulps 16(B0R), %xmm4
303
+ mulps 32(B0R), %xmm10
304
+ mulps 48(B0R), %xmm11
305
+ mulps -64(B0R), %xmm12
306
+ mulps -48(B0R), %xmm13
307
+ mulps -32(B0R), %xmm14
308
+ mulps -16(B0R), %xmm15
309
+
310
+ addps %xmm1, %xmm8
311
+ addps %xmm2, %xmm3
312
+ addps %xmm4, %xmm0
313
+ addps %xmm11, %xmm10
314
+ addps %xmm5, %xmm9
315
+ addps %xmm7, %xmm6
316
+ addps %xmm13, %xmm12
317
+ addps %xmm15, %xmm14
318
+ addps %xmm3, %xmm8
319
+ addps %xmm6, %xmm9
320
+ addps %xmm10, %xmm0
321
+ addps %xmm12, %xmm14
322
+ movaps %xmm0, %xmm12
323
+ movaps %xmm14, %xmm13
324
+ leaq 256(WINDOW), WINDOW
325
+ leaq -128(B0L), B0L
326
+ leaq -128(B0R), B0R
327
+
328
+ movups (WINDOW), %xmm10
329
+ movups 16(WINDOW), %xmm1
330
+ movups 32(WINDOW), %xmm2
331
+ movups 48(WINDOW), %xmm3
332
+ movups 128(WINDOW), %xmm11
333
+ movups 144(WINDOW), %xmm5
334
+ movups 160(WINDOW), %xmm6
335
+ movups 176(WINDOW), %xmm7
336
+ movaps %xmm10, %xmm0
337
+ movaps %xmm1, %xmm4
338
+ movaps %xmm2, %xmm14
339
+ movaps %xmm3, %xmm15
340
+ mulps (B0L), %xmm10
341
+ mulps 16(B0L), %xmm1
342
+ mulps 32(B0L), %xmm2
343
+ mulps 48(B0L), %xmm3
344
+ mulps (B0R), %xmm0
345
+ mulps 16(B0R), %xmm4
346
+ mulps 32(B0R), %xmm14
347
+ mulps 48(B0R), %xmm15
348
+ addps %xmm1, %xmm10
349
+ addps %xmm2, %xmm3
350
+ addps %xmm4, %xmm0
351
+ addps %xmm15, %xmm14
352
+ movaps %xmm11, %xmm1
353
+ movaps %xmm5, %xmm2
354
+ movaps %xmm6, %xmm4
355
+ movaps %xmm7, %xmm15
356
+ mulps -64(B0L), %xmm11
357
+ mulps -48(B0L), %xmm5
358
+ mulps -32(B0L), %xmm6
359
+ mulps -16(B0L), %xmm7
360
+ mulps -64(B0R), %xmm1
361
+ mulps -48(B0R), %xmm2
362
+ mulps -32(B0R), %xmm4
363
+ mulps -16(B0R), %xmm15
364
+ addps %xmm5, %xmm11
365
+ addps %xmm7, %xmm6
366
+ addps %xmm2, %xmm1
367
+ addps %xmm15, %xmm4
368
+
369
+ addps %xmm3, %xmm10
370
+ addps %xmm6, %xmm11
371
+ addps %xmm0, %xmm14
372
+ addps %xmm4, %xmm1
373
+ movaps %xmm1, %xmm15
374
+ leaq 256(WINDOW), WINDOW
375
+ leaq -128(B0L), B0L
376
+ leaq -128(B0R), B0R
377
+
378
+ movaps %xmm8, %xmm0
379
+ movaps %xmm10, %xmm1
380
+ movaps %xmm12, %xmm4
381
+ movaps %xmm14, %xmm5
382
+ unpcklps %xmm9, %xmm8
383
+ unpcklps %xmm11, %xmm10
384
+ unpckhps %xmm9, %xmm0
385
+ unpckhps %xmm11, %xmm1
386
+ unpcklps %xmm13, %xmm12
387
+ unpcklps %xmm15, %xmm14
388
+ unpckhps %xmm13, %xmm4
389
+ unpckhps %xmm15, %xmm5
390
+ movaps %xmm8, %xmm2
391
+ movaps %xmm0, %xmm3
392
+ movaps %xmm12, %xmm6
393
+ movaps %xmm4, %xmm7
394
+ movlhps %xmm10, %xmm8
395
+ movhlps %xmm2, %xmm10
396
+ movlhps %xmm1, %xmm0
397
+ movhlps %xmm3, %xmm1
398
+ movlhps %xmm14, %xmm12
399
+ movhlps %xmm6, %xmm14
400
+ movlhps %xmm5, %xmm4
401
+ movhlps %xmm7, %xmm5
402
+ addps %xmm10, %xmm8
403
+ addps %xmm1, %xmm0
404
+ addps %xmm14, %xmm12
405
+ addps %xmm5, %xmm4
406
+ addps %xmm8, %xmm0
407
+ addps %xmm12, %xmm4
408
+
409
+ movaps %xmm0, %xmm2
410
+ movaps %xmm0, %xmm3
411
+ movaps %xmm4, %xmm5
412
+ movaps %xmm4, %xmm6
413
+ mulps XMMREG_SCALE, %xmm0
414
+ mulps XMMREG_SCALE, %xmm4
415
+ cmpnleps XMMREG_MAX, %xmm2
416
+ cmpltps XMMREG_MIN, %xmm3
417
+ cmpnleps XMMREG_MAX, %xmm5
418
+ cmpltps XMMREG_MIN, %xmm6
419
+ cvtps2dq %xmm0, %xmm0
420
+ cvtps2dq %xmm4, %xmm4
421
+ xorps %xmm2, %xmm0
422
+ xorps %xmm5, %xmm4
423
+ movaps %xmm0, %xmm1
424
+ unpcklps %xmm4, %xmm0
425
+ unpckhps %xmm4, %xmm1
426
+ movups %xmm0, (SAMPLES)
427
+ movups %xmm1, 16(SAMPLES)
428
+
429
+ packssdw %xmm5, %xmm2
430
+ packssdw %xmm6, %xmm3
431
+ psrlw $15, %xmm2
432
+ psrlw $15, %xmm3
433
+ paddw %xmm3, %xmm2
434
+ paddw TEMP_CLIP, %xmm2
435
+ movaps %xmm2, TEMP_CLIP
436
+
437
+ leaq 32(SAMPLES), SAMPLES
438
+ decl %ecx
439
+ jnz Loop_start_2
440
+
441
+ movaps TEMP_CLIP, %xmm4
442
+ movhlps %xmm4, %xmm0
443
+ paddw %xmm4, %xmm0
444
+ pshuflw $0x55, %xmm0, %xmm1
445
+ pshuflw $0xaa, %xmm0, %xmm2
446
+ pshuflw $0xff, %xmm0, %xmm3
447
+ paddw %xmm1, %xmm0
448
+ paddw %xmm2, %xmm0
449
+ paddw %xmm3, %xmm0
450
+
451
+ movd %xmm0, %eax
452
+ andl $0xffff, %eax
453
+
454
+ #ifdef _WIN64
455
+ movaps (%rsp), %xmm6
456
+ movaps 16(%rsp), %xmm7
457
+ movaps 32(%rsp), %xmm8
458
+ movaps 48(%rsp), %xmm9
459
+ movaps 64(%rsp), %xmm10
460
+ movaps 80(%rsp), %xmm11
461
+ movaps 96(%rsp), %xmm12
462
+ movaps 112(%rsp), %xmm13
463
+ movaps 128(%rsp), %xmm14
464
+ movaps 144(%rsp), %xmm15
465
+ addq $184, %rsp
466
+ popq %rdi
467
+ popq %rsi
468
+ #else
469
+ addq $24, %rsp
470
+ #endif
471
+ ret
472
+
473
+ NONEXEC_STACK