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