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,416 @@
1
+ /*
2
+ synth_sse_float: SSE optimized synth (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
+ /* real *window; */
12
+ #define WINDOW %ebx
13
+ /* real *b0l; */
14
+ #define B0L %edx
15
+ /* real *b0r; */
16
+ #define B0R %esi
17
+ /* real *samples; */
18
+ #define SAMPLES %edi
19
+
20
+ #define TEMP(n) (12+16*n)(%esp)
21
+
22
+ /*
23
+ int synth_1to1_real_s_sse_asm(real *window, real *b0l, real *b0r, real *samples, int bo1);
24
+ return value: number of clipped samples (0)
25
+ */
26
+
27
+ #ifndef __APPLE__
28
+ .section .rodata
29
+ #else
30
+ .data
31
+ #endif
32
+ ALIGN32
33
+ ASM_NAME(scale_sse):
34
+ .long 939524096
35
+ .long 939524096
36
+ .long 939524096
37
+ .long 939524096
38
+ .text
39
+ ALIGN16
40
+ .globl ASM_NAME(synth_1to1_real_s_sse_asm)
41
+ ASM_NAME(synth_1to1_real_s_sse_asm):
42
+ pushl %ebp
43
+ movl %esp, %ebp
44
+ andl $-16, %esp
45
+ subl $128, %esp
46
+ pushl %ebx
47
+ pushl %esi
48
+ pushl %edi
49
+
50
+ movl 8(%ebp), WINDOW
51
+ movl 12(%ebp), B0L
52
+ movl 16(%ebp), B0R
53
+ movl 20(%ebp), SAMPLES
54
+ movl 24(%ebp), %eax
55
+ shll $2, %eax
56
+
57
+ leal 64(WINDOW), WINDOW
58
+ subl %eax, WINDOW
59
+
60
+ movl $4, %ecx
61
+
62
+ ALIGN16
63
+ Loop_start_1:
64
+ movups (WINDOW), %xmm0
65
+ movups 16(WINDOW), %xmm1
66
+ movups 32(WINDOW), %xmm2
67
+ movups 48(WINDOW), %xmm3
68
+ movaps %xmm0, %xmm4
69
+ movaps %xmm1, %xmm5
70
+ movaps %xmm2, %xmm6
71
+ movaps %xmm3, %xmm7
72
+ mulps 0(B0L), %xmm0
73
+ mulps 16(B0L), %xmm1
74
+ mulps 32(B0L), %xmm2
75
+ mulps 48(B0L), %xmm3
76
+ mulps 0(B0R), %xmm4
77
+ mulps 16(B0R), %xmm5
78
+ mulps 32(B0R), %xmm6
79
+ mulps 48(B0R), %xmm7
80
+ addps %xmm1, %xmm0
81
+ addps %xmm3, %xmm2
82
+ addps %xmm5, %xmm4
83
+ addps %xmm7, %xmm6
84
+ addps %xmm2, %xmm0
85
+ addps %xmm6, %xmm4
86
+ movaps %xmm0, TEMP(0)
87
+ movaps %xmm4, TEMP(4)
88
+
89
+ leal 128(WINDOW), WINDOW
90
+ leal 64(B0L), B0L
91
+ leal 64(B0R), B0R
92
+
93
+ movups (WINDOW), %xmm0
94
+ movups 16(WINDOW), %xmm1
95
+ movups 32(WINDOW), %xmm2
96
+ movups 48(WINDOW), %xmm3
97
+ movaps %xmm0, %xmm4
98
+ movaps %xmm1, %xmm5
99
+ movaps %xmm2, %xmm6
100
+ movaps %xmm3, %xmm7
101
+ mulps 0(B0L), %xmm0
102
+ mulps 16(B0L), %xmm1
103
+ mulps 32(B0L), %xmm2
104
+ mulps 48(B0L), %xmm3
105
+ mulps 0(B0R), %xmm4
106
+ mulps 16(B0R), %xmm5
107
+ mulps 32(B0R), %xmm6
108
+ mulps 48(B0R), %xmm7
109
+ addps %xmm1, %xmm0
110
+ addps %xmm3, %xmm2
111
+ addps %xmm5, %xmm4
112
+ addps %xmm7, %xmm6
113
+ addps %xmm2, %xmm0
114
+ addps %xmm6, %xmm4
115
+ movaps %xmm0, TEMP(1)
116
+ movaps %xmm4, TEMP(5)
117
+
118
+ leal 128(WINDOW), WINDOW
119
+ leal 64(B0L), B0L
120
+ leal 64(B0R), B0R
121
+
122
+ movups (WINDOW), %xmm0
123
+ movups 16(WINDOW), %xmm1
124
+ movups 32(WINDOW), %xmm2
125
+ movups 48(WINDOW), %xmm3
126
+ movaps %xmm0, %xmm4
127
+ movaps %xmm1, %xmm5
128
+ movaps %xmm2, %xmm6
129
+ movaps %xmm3, %xmm7
130
+ mulps 0(B0L), %xmm0
131
+ mulps 16(B0L), %xmm1
132
+ mulps 32(B0L), %xmm2
133
+ mulps 48(B0L), %xmm3
134
+ mulps 0(B0R), %xmm4
135
+ mulps 16(B0R), %xmm5
136
+ mulps 32(B0R), %xmm6
137
+ mulps 48(B0R), %xmm7
138
+ addps %xmm1, %xmm0
139
+ addps %xmm3, %xmm2
140
+ addps %xmm5, %xmm4
141
+ addps %xmm7, %xmm6
142
+ addps %xmm2, %xmm0
143
+ addps %xmm6, %xmm4
144
+ movaps %xmm0, TEMP(2)
145
+ movaps %xmm4, TEMP(6)
146
+
147
+ leal 128(WINDOW), WINDOW
148
+ leal 64(B0L), B0L
149
+ leal 64(B0R), B0R
150
+
151
+ movups (WINDOW), %xmm0
152
+ movups 16(WINDOW), %xmm1
153
+ movups 32(WINDOW), %xmm2
154
+ movups 48(WINDOW), %xmm3
155
+ movaps %xmm0, %xmm4
156
+ movaps %xmm1, %xmm5
157
+ movaps %xmm2, %xmm6
158
+ movaps %xmm3, %xmm7
159
+ mulps 0(B0L), %xmm0
160
+ mulps 16(B0L), %xmm1
161
+ mulps 32(B0L), %xmm2
162
+ mulps 48(B0L), %xmm3
163
+ mulps 0(B0R), %xmm4
164
+ mulps 16(B0R), %xmm5
165
+ mulps 32(B0R), %xmm6
166
+ mulps 48(B0R), %xmm7
167
+ addps %xmm1, %xmm0
168
+ addps %xmm3, %xmm2
169
+ addps %xmm5, %xmm4
170
+ addps %xmm7, %xmm6
171
+ addps %xmm2, %xmm0
172
+ addps %xmm6, %xmm4
173
+ movaps %xmm0, %xmm7
174
+ movaps %xmm4, TEMP(7)
175
+
176
+ leal 128(WINDOW), WINDOW
177
+ leal 64(B0L), B0L
178
+ leal 64(B0R), B0R
179
+
180
+ movaps TEMP(0), %xmm4
181
+ movaps TEMP(1), %xmm5
182
+ movaps TEMP(2), %xmm6
183
+ movaps %xmm4, %xmm0
184
+ movaps %xmm6, %xmm1
185
+ unpcklps %xmm5, %xmm4
186
+ unpcklps %xmm7, %xmm6
187
+ unpckhps %xmm5, %xmm0
188
+ unpckhps %xmm7, %xmm1
189
+ movaps %xmm4, %xmm2
190
+ movaps %xmm0, %xmm3
191
+ movlhps %xmm6, %xmm4
192
+ movhlps %xmm2, %xmm6
193
+ movlhps %xmm1, %xmm0
194
+ movhlps %xmm3, %xmm1
195
+ subps %xmm6, %xmm4
196
+ subps %xmm1, %xmm0
197
+ addps %xmm4, %xmm0
198
+ movaps %xmm0, %xmm2
199
+
200
+ movaps TEMP(4), %xmm4
201
+ movaps TEMP(5), %xmm5
202
+ movaps TEMP(6), %xmm6
203
+ movaps TEMP(7), %xmm7
204
+ movaps %xmm4, %xmm0
205
+ movaps %xmm6, %xmm1
206
+ unpcklps %xmm5, %xmm4
207
+ unpcklps %xmm7, %xmm6
208
+ unpckhps %xmm5, %xmm0
209
+ unpckhps %xmm7, %xmm1
210
+ movaps %xmm2, %xmm5
211
+ movaps %xmm4, %xmm2
212
+ movaps %xmm0, %xmm3
213
+ movlhps %xmm6, %xmm4
214
+ movhlps %xmm2, %xmm6
215
+ movlhps %xmm1, %xmm0
216
+ movhlps %xmm3, %xmm1
217
+ subps %xmm6, %xmm4
218
+ subps %xmm1, %xmm0
219
+ addps %xmm4, %xmm0
220
+
221
+ mulps ASM_NAME(scale_sse), %xmm5
222
+ mulps ASM_NAME(scale_sse), %xmm0
223
+ movaps %xmm5, %xmm1
224
+ unpcklps %xmm0, %xmm5
225
+ unpckhps %xmm0, %xmm1
226
+ movups %xmm5, (SAMPLES)
227
+ movups %xmm1, 16(SAMPLES)
228
+
229
+ leal 32(SAMPLES), SAMPLES
230
+ decl %ecx
231
+ jnz Loop_start_1
232
+
233
+ movl $4, %ecx
234
+
235
+ ALIGN16
236
+ Loop_start_2:
237
+ movups (WINDOW), %xmm0
238
+ movups 16(WINDOW), %xmm1
239
+ movups 32(WINDOW), %xmm2
240
+ movups 48(WINDOW), %xmm3
241
+ movaps %xmm0, %xmm4
242
+ movaps %xmm1, %xmm5
243
+ movaps %xmm2, %xmm6
244
+ movaps %xmm3, %xmm7
245
+ mulps 0(B0L), %xmm0
246
+ mulps 16(B0L), %xmm1
247
+ mulps 32(B0L), %xmm2
248
+ mulps 48(B0L), %xmm3
249
+ mulps 0(B0R), %xmm4
250
+ mulps 16(B0R), %xmm5
251
+ mulps 32(B0R), %xmm6
252
+ mulps 48(B0R), %xmm7
253
+ addps %xmm1, %xmm0
254
+ addps %xmm3, %xmm2
255
+ addps %xmm5, %xmm4
256
+ addps %xmm7, %xmm6
257
+ addps %xmm2, %xmm0
258
+ addps %xmm6, %xmm4
259
+ movaps %xmm0, TEMP(0)
260
+ movaps %xmm4, TEMP(4)
261
+
262
+ leal 128(WINDOW), WINDOW
263
+ leal -64(B0L), B0L
264
+ leal -64(B0R), B0R
265
+
266
+ movups (WINDOW), %xmm0
267
+ movups 16(WINDOW), %xmm1
268
+ movups 32(WINDOW), %xmm2
269
+ movups 48(WINDOW), %xmm3
270
+ movaps %xmm0, %xmm4
271
+ movaps %xmm1, %xmm5
272
+ movaps %xmm2, %xmm6
273
+ movaps %xmm3, %xmm7
274
+ mulps 0(B0L), %xmm0
275
+ mulps 16(B0L), %xmm1
276
+ mulps 32(B0L), %xmm2
277
+ mulps 48(B0L), %xmm3
278
+ mulps 0(B0R), %xmm4
279
+ mulps 16(B0R), %xmm5
280
+ mulps 32(B0R), %xmm6
281
+ mulps 48(B0R), %xmm7
282
+ addps %xmm1, %xmm0
283
+ addps %xmm3, %xmm2
284
+ addps %xmm5, %xmm4
285
+ addps %xmm7, %xmm6
286
+ addps %xmm2, %xmm0
287
+ addps %xmm6, %xmm4
288
+ movaps %xmm0, TEMP(1)
289
+ movaps %xmm4, TEMP(5)
290
+
291
+ leal 128(WINDOW), WINDOW
292
+ leal -64(B0L), B0L
293
+ leal -64(B0R), B0R
294
+
295
+ movups (WINDOW), %xmm0
296
+ movups 16(WINDOW), %xmm1
297
+ movups 32(WINDOW), %xmm2
298
+ movups 48(WINDOW), %xmm3
299
+ movaps %xmm0, %xmm4
300
+ movaps %xmm1, %xmm5
301
+ movaps %xmm2, %xmm6
302
+ movaps %xmm3, %xmm7
303
+ mulps 0(B0L), %xmm0
304
+ mulps 16(B0L), %xmm1
305
+ mulps 32(B0L), %xmm2
306
+ mulps 48(B0L), %xmm3
307
+ mulps 0(B0R), %xmm4
308
+ mulps 16(B0R), %xmm5
309
+ mulps 32(B0R), %xmm6
310
+ mulps 48(B0R), %xmm7
311
+ addps %xmm1, %xmm0
312
+ addps %xmm3, %xmm2
313
+ addps %xmm5, %xmm4
314
+ addps %xmm7, %xmm6
315
+ addps %xmm2, %xmm0
316
+ addps %xmm6, %xmm4
317
+ movaps %xmm0, TEMP(2)
318
+ movaps %xmm4, TEMP(6)
319
+
320
+ leal 128(WINDOW), WINDOW
321
+ leal -64(B0L), B0L
322
+ leal -64(B0R), B0R
323
+
324
+ movups (WINDOW), %xmm0
325
+ movups 16(WINDOW), %xmm1
326
+ movups 32(WINDOW), %xmm2
327
+ movups 48(WINDOW), %xmm3
328
+ movaps %xmm0, %xmm4
329
+ movaps %xmm1, %xmm5
330
+ movaps %xmm2, %xmm6
331
+ movaps %xmm3, %xmm7
332
+ mulps 0(B0L), %xmm0
333
+ mulps 16(B0L), %xmm1
334
+ mulps 32(B0L), %xmm2
335
+ mulps 48(B0L), %xmm3
336
+ mulps 0(B0R), %xmm4
337
+ mulps 16(B0R), %xmm5
338
+ mulps 32(B0R), %xmm6
339
+ mulps 48(B0R), %xmm7
340
+ addps %xmm1, %xmm0
341
+ addps %xmm3, %xmm2
342
+ addps %xmm5, %xmm4
343
+ addps %xmm7, %xmm6
344
+ addps %xmm2, %xmm0
345
+ addps %xmm6, %xmm4
346
+ movaps %xmm0, %xmm7
347
+ movaps %xmm4, TEMP(7)
348
+
349
+ leal 128(WINDOW), WINDOW
350
+ leal -64(B0L), B0L
351
+ leal -64(B0R), B0R
352
+
353
+ movaps TEMP(0), %xmm4
354
+ movaps TEMP(1), %xmm5
355
+ movaps TEMP(2), %xmm6
356
+ movaps %xmm4, %xmm0
357
+ movaps %xmm6, %xmm1
358
+ unpcklps %xmm5, %xmm4
359
+ unpcklps %xmm7, %xmm6
360
+ unpckhps %xmm5, %xmm0
361
+ unpckhps %xmm7, %xmm1
362
+ movaps %xmm4, %xmm2
363
+ movaps %xmm0, %xmm3
364
+ movlhps %xmm6, %xmm4
365
+ movhlps %xmm2, %xmm6
366
+ movlhps %xmm1, %xmm0
367
+ movhlps %xmm3, %xmm1
368
+ addps %xmm6, %xmm4
369
+ addps %xmm1, %xmm0
370
+ addps %xmm4, %xmm0
371
+ movaps %xmm0, %xmm2
372
+
373
+ movaps TEMP(4), %xmm4
374
+ movaps TEMP(5), %xmm5
375
+ movaps TEMP(6), %xmm6
376
+ movaps TEMP(7), %xmm7
377
+ movaps %xmm4, %xmm0
378
+ movaps %xmm6, %xmm1
379
+ unpcklps %xmm5, %xmm4
380
+ unpcklps %xmm7, %xmm6
381
+ unpckhps %xmm5, %xmm0
382
+ unpckhps %xmm7, %xmm1
383
+ movaps %xmm2, %xmm5
384
+ movaps %xmm4, %xmm2
385
+ movaps %xmm0, %xmm3
386
+ movlhps %xmm6, %xmm4
387
+ movhlps %xmm2, %xmm6
388
+ movlhps %xmm1, %xmm0
389
+ movhlps %xmm3, %xmm1
390
+ addps %xmm6, %xmm4
391
+ addps %xmm1, %xmm0
392
+ addps %xmm4, %xmm0
393
+
394
+ mulps ASM_NAME(scale_sse), %xmm5
395
+ mulps ASM_NAME(scale_sse), %xmm0
396
+ movaps %xmm5, %xmm1
397
+ unpcklps %xmm0, %xmm5
398
+ unpckhps %xmm0, %xmm1
399
+ movups %xmm5, (SAMPLES)
400
+ movups %xmm1, 16(SAMPLES)
401
+
402
+ leal 32(SAMPLES), SAMPLES
403
+ decl %ecx
404
+ jnz Loop_start_2
405
+
406
+ xorl %eax, %eax
407
+
408
+ popl %edi
409
+ popl %esi
410
+ popl %ebx
411
+ movl %ebp, %esp
412
+ popl %ebp
413
+
414
+ ret
415
+
416
+ NONEXEC_STACK
@@ -0,0 +1,540 @@
1
+ /*
2
+ synth_stereo_sse_s32: SSE optimized synth (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
+ /* real *window; */
12
+ #define WINDOW %ebx
13
+ /* real *b0l; */
14
+ #define B0L %edx
15
+ /* real *b0r; */
16
+ #define B0R %esi
17
+ /* real *samples; */
18
+ #define SAMPLES %edi
19
+
20
+ #define TEMP(n) (12+16*n)(%esp)
21
+ #define MMREG_CLIP %mm7
22
+
23
+ /*
24
+ int synth_1to1_s32_s_sse_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1);
25
+ return value: number of clipped samples
26
+ */
27
+
28
+ #ifndef __APPLE__
29
+ .section .rodata
30
+ #else
31
+ .data
32
+ #endif
33
+ ALIGN32
34
+ ASM_NAME(scale_s32):
35
+ .long 1199570944 /* 65536.0 */
36
+ .long 1199570944
37
+ .long 1199570944
38
+ .long 1199570944
39
+ ALIGN16
40
+ ASM_NAME(maxmin_s32):
41
+ .long 1191182335 /* 32767.999 */
42
+ .long 1191182335
43
+ .long 1191182335
44
+ .long 1191182335
45
+ .long -956301312 /* -32768.0 */
46
+ .long -956301312
47
+ .long -956301312
48
+ .long -956301312
49
+ .text
50
+ ALIGN16
51
+ .globl ASM_NAME(synth_1to1_s32_s_sse_asm)
52
+ ASM_NAME(synth_1to1_s32_s_sse_asm):
53
+ pushl %ebp
54
+ movl %esp, %ebp
55
+ andl $-16, %esp
56
+ subl $128, %esp
57
+ pushl %ebx
58
+ pushl %esi
59
+ pushl %edi
60
+
61
+ pxor MMREG_CLIP, MMREG_CLIP
62
+
63
+ movl 8(%ebp), WINDOW
64
+ movl 12(%ebp), B0L
65
+ movl 16(%ebp), B0R
66
+ movl 20(%ebp), SAMPLES
67
+ movl 24(%ebp), %eax
68
+ shll $2, %eax
69
+
70
+ leal 64(WINDOW), WINDOW
71
+ subl %eax, WINDOW
72
+
73
+ movl $4, %ecx
74
+
75
+ ALIGN16
76
+ Loop_start_1:
77
+ movups (WINDOW), %xmm0
78
+ movups 16(WINDOW), %xmm1
79
+ movups 32(WINDOW), %xmm2
80
+ movups 48(WINDOW), %xmm3
81
+ movaps %xmm0, %xmm4
82
+ movaps %xmm1, %xmm5
83
+ movaps %xmm2, %xmm6
84
+ movaps %xmm3, %xmm7
85
+ mulps 0(B0L), %xmm0
86
+ mulps 16(B0L), %xmm1
87
+ mulps 32(B0L), %xmm2
88
+ mulps 48(B0L), %xmm3
89
+ mulps 0(B0R), %xmm4
90
+ mulps 16(B0R), %xmm5
91
+ mulps 32(B0R), %xmm6
92
+ mulps 48(B0R), %xmm7
93
+ addps %xmm1, %xmm0
94
+ addps %xmm3, %xmm2
95
+ addps %xmm5, %xmm4
96
+ addps %xmm7, %xmm6
97
+ addps %xmm2, %xmm0
98
+ addps %xmm6, %xmm4
99
+ movaps %xmm0, TEMP(0)
100
+ movaps %xmm4, TEMP(4)
101
+
102
+ leal 128(WINDOW), WINDOW
103
+ leal 64(B0L), B0L
104
+ leal 64(B0R), B0R
105
+
106
+ movups (WINDOW), %xmm0
107
+ movups 16(WINDOW), %xmm1
108
+ movups 32(WINDOW), %xmm2
109
+ movups 48(WINDOW), %xmm3
110
+ movaps %xmm0, %xmm4
111
+ movaps %xmm1, %xmm5
112
+ movaps %xmm2, %xmm6
113
+ movaps %xmm3, %xmm7
114
+ mulps 0(B0L), %xmm0
115
+ mulps 16(B0L), %xmm1
116
+ mulps 32(B0L), %xmm2
117
+ mulps 48(B0L), %xmm3
118
+ mulps 0(B0R), %xmm4
119
+ mulps 16(B0R), %xmm5
120
+ mulps 32(B0R), %xmm6
121
+ mulps 48(B0R), %xmm7
122
+ addps %xmm1, %xmm0
123
+ addps %xmm3, %xmm2
124
+ addps %xmm5, %xmm4
125
+ addps %xmm7, %xmm6
126
+ addps %xmm2, %xmm0
127
+ addps %xmm6, %xmm4
128
+ movaps %xmm0, TEMP(1)
129
+ movaps %xmm4, TEMP(5)
130
+
131
+ leal 128(WINDOW), WINDOW
132
+ leal 64(B0L), B0L
133
+ leal 64(B0R), B0R
134
+
135
+ movups (WINDOW), %xmm0
136
+ movups 16(WINDOW), %xmm1
137
+ movups 32(WINDOW), %xmm2
138
+ movups 48(WINDOW), %xmm3
139
+ movaps %xmm0, %xmm4
140
+ movaps %xmm1, %xmm5
141
+ movaps %xmm2, %xmm6
142
+ movaps %xmm3, %xmm7
143
+ mulps 0(B0L), %xmm0
144
+ mulps 16(B0L), %xmm1
145
+ mulps 32(B0L), %xmm2
146
+ mulps 48(B0L), %xmm3
147
+ mulps 0(B0R), %xmm4
148
+ mulps 16(B0R), %xmm5
149
+ mulps 32(B0R), %xmm6
150
+ mulps 48(B0R), %xmm7
151
+ addps %xmm1, %xmm0
152
+ addps %xmm3, %xmm2
153
+ addps %xmm5, %xmm4
154
+ addps %xmm7, %xmm6
155
+ addps %xmm2, %xmm0
156
+ addps %xmm6, %xmm4
157
+ movaps %xmm0, TEMP(2)
158
+ movaps %xmm4, TEMP(6)
159
+
160
+ leal 128(WINDOW), WINDOW
161
+ leal 64(B0L), B0L
162
+ leal 64(B0R), B0R
163
+
164
+ movups (WINDOW), %xmm0
165
+ movups 16(WINDOW), %xmm1
166
+ movups 32(WINDOW), %xmm2
167
+ movups 48(WINDOW), %xmm3
168
+ movaps %xmm0, %xmm4
169
+ movaps %xmm1, %xmm5
170
+ movaps %xmm2, %xmm6
171
+ movaps %xmm3, %xmm7
172
+ mulps 0(B0L), %xmm0
173
+ mulps 16(B0L), %xmm1
174
+ mulps 32(B0L), %xmm2
175
+ mulps 48(B0L), %xmm3
176
+ mulps 0(B0R), %xmm4
177
+ mulps 16(B0R), %xmm5
178
+ mulps 32(B0R), %xmm6
179
+ mulps 48(B0R), %xmm7
180
+ addps %xmm1, %xmm0
181
+ addps %xmm3, %xmm2
182
+ addps %xmm5, %xmm4
183
+ addps %xmm7, %xmm6
184
+ addps %xmm2, %xmm0
185
+ addps %xmm6, %xmm4
186
+ movaps %xmm0, %xmm7
187
+ movaps %xmm4, TEMP(7)
188
+
189
+ leal 128(WINDOW), WINDOW
190
+ leal 64(B0L), B0L
191
+ leal 64(B0R), B0R
192
+
193
+ movaps TEMP(0), %xmm4
194
+ movaps TEMP(1), %xmm5
195
+ movaps TEMP(2), %xmm6
196
+ movaps %xmm4, %xmm0
197
+ movaps %xmm6, %xmm1
198
+ unpcklps %xmm5, %xmm4
199
+ unpcklps %xmm7, %xmm6
200
+ unpckhps %xmm5, %xmm0
201
+ unpckhps %xmm7, %xmm1
202
+ movaps %xmm4, %xmm2
203
+ movaps %xmm0, %xmm3
204
+ movlhps %xmm6, %xmm4
205
+ movhlps %xmm2, %xmm6
206
+ movlhps %xmm1, %xmm0
207
+ movhlps %xmm3, %xmm1
208
+ subps %xmm6, %xmm4
209
+ subps %xmm1, %xmm0
210
+ addps %xmm4, %xmm0
211
+ movaps %xmm0, %xmm2
212
+
213
+ movaps TEMP(4), %xmm4
214
+ movaps TEMP(5), %xmm5
215
+ movaps TEMP(6), %xmm6
216
+ movaps TEMP(7), %xmm7
217
+ movaps %xmm4, %xmm0
218
+ movaps %xmm6, %xmm1
219
+ unpcklps %xmm5, %xmm4
220
+ unpcklps %xmm7, %xmm6
221
+ unpckhps %xmm5, %xmm0
222
+ unpckhps %xmm7, %xmm1
223
+ movaps %xmm2, %xmm5
224
+ movaps %xmm4, %xmm2
225
+ movaps %xmm0, %xmm3
226
+ movlhps %xmm6, %xmm4
227
+ movhlps %xmm2, %xmm6
228
+ movlhps %xmm1, %xmm0
229
+ movhlps %xmm3, %xmm1
230
+ subps %xmm6, %xmm4
231
+ subps %xmm1, %xmm0
232
+ addps %xmm4, %xmm0
233
+
234
+ movaps %xmm5, %xmm1
235
+ movaps %xmm5, %xmm2
236
+ movaps %xmm0, %xmm3
237
+ movaps %xmm0, %xmm4
238
+ mulps ASM_NAME(scale_s32), %xmm5
239
+ mulps ASM_NAME(scale_s32), %xmm0
240
+ cmpnleps ASM_NAME(maxmin_s32), %xmm1
241
+ cmpltps ASM_NAME(maxmin_s32)+16, %xmm2
242
+ cmpnleps ASM_NAME(maxmin_s32), %xmm3
243
+ cmpltps ASM_NAME(maxmin_s32)+16, %xmm4
244
+ cvtps2pi %xmm5, %mm0
245
+ cvtps2pi %xmm0, %mm1
246
+ cvtps2pi %xmm1, %mm2
247
+ cvtps2pi %xmm3, %mm3
248
+ psrad $31, %mm2
249
+ psrad $31, %mm3
250
+ pxor %mm2, %mm0
251
+ pxor %mm3, %mm1
252
+ movq %mm0, %mm4
253
+ punpckldq %mm1, %mm0
254
+ punpckhdq %mm1, %mm4
255
+ movq %mm0, (SAMPLES)
256
+ movq %mm4, 8(SAMPLES)
257
+ movhlps %xmm5, %xmm5
258
+ movhlps %xmm0, %xmm0
259
+ movhlps %xmm1, %xmm1
260
+ movhlps %xmm3, %xmm3
261
+ cvtps2pi %xmm5, %mm0
262
+ cvtps2pi %xmm0, %mm1
263
+ cvtps2pi %xmm1, %mm4
264
+ cvtps2pi %xmm3, %mm5
265
+ psrad $31, %mm4
266
+ psrad $31, %mm5
267
+ pxor %mm4, %mm0
268
+ pxor %mm5, %mm1
269
+ movq %mm0, %mm6
270
+ punpckldq %mm1, %mm0
271
+ punpckhdq %mm1, %mm6
272
+ movq %mm0, 16(SAMPLES)
273
+ movq %mm6, 24(SAMPLES)
274
+
275
+ packssdw %mm4, %mm2
276
+ packssdw %mm5, %mm3
277
+ psrlw $15, %mm2
278
+ psrlw $15, %mm3
279
+ cvtps2pi %xmm2, %mm0
280
+ cvtps2pi %xmm4, %mm1
281
+ movhlps %xmm2, %xmm2
282
+ movhlps %xmm4, %xmm4
283
+ cvtps2pi %xmm2, %mm4
284
+ cvtps2pi %xmm4, %mm5
285
+ packssdw %mm4, %mm0
286
+ packssdw %mm5, %mm1
287
+ psrlw $15, %mm0
288
+ psrlw $15, %mm1
289
+ paddw %mm3, %mm2
290
+ paddw %mm1, %mm0
291
+ paddw %mm2, %mm0
292
+ paddw %mm0, MMREG_CLIP
293
+
294
+ leal 32(SAMPLES), SAMPLES
295
+ decl %ecx
296
+ jnz Loop_start_1
297
+
298
+ movl $4, %ecx
299
+
300
+ ALIGN16
301
+ Loop_start_2:
302
+ movups (WINDOW), %xmm0
303
+ movups 16(WINDOW), %xmm1
304
+ movups 32(WINDOW), %xmm2
305
+ movups 48(WINDOW), %xmm3
306
+ movaps %xmm0, %xmm4
307
+ movaps %xmm1, %xmm5
308
+ movaps %xmm2, %xmm6
309
+ movaps %xmm3, %xmm7
310
+ mulps 0(B0L), %xmm0
311
+ mulps 16(B0L), %xmm1
312
+ mulps 32(B0L), %xmm2
313
+ mulps 48(B0L), %xmm3
314
+ mulps 0(B0R), %xmm4
315
+ mulps 16(B0R), %xmm5
316
+ mulps 32(B0R), %xmm6
317
+ mulps 48(B0R), %xmm7
318
+ addps %xmm1, %xmm0
319
+ addps %xmm3, %xmm2
320
+ addps %xmm5, %xmm4
321
+ addps %xmm7, %xmm6
322
+ addps %xmm2, %xmm0
323
+ addps %xmm6, %xmm4
324
+ movaps %xmm0, TEMP(0)
325
+ movaps %xmm4, TEMP(4)
326
+
327
+ leal 128(WINDOW), WINDOW
328
+ leal -64(B0L), B0L
329
+ leal -64(B0R), B0R
330
+
331
+ movups (WINDOW), %xmm0
332
+ movups 16(WINDOW), %xmm1
333
+ movups 32(WINDOW), %xmm2
334
+ movups 48(WINDOW), %xmm3
335
+ movaps %xmm0, %xmm4
336
+ movaps %xmm1, %xmm5
337
+ movaps %xmm2, %xmm6
338
+ movaps %xmm3, %xmm7
339
+ mulps 0(B0L), %xmm0
340
+ mulps 16(B0L), %xmm1
341
+ mulps 32(B0L), %xmm2
342
+ mulps 48(B0L), %xmm3
343
+ mulps 0(B0R), %xmm4
344
+ mulps 16(B0R), %xmm5
345
+ mulps 32(B0R), %xmm6
346
+ mulps 48(B0R), %xmm7
347
+ addps %xmm1, %xmm0
348
+ addps %xmm3, %xmm2
349
+ addps %xmm5, %xmm4
350
+ addps %xmm7, %xmm6
351
+ addps %xmm2, %xmm0
352
+ addps %xmm6, %xmm4
353
+ movaps %xmm0, TEMP(1)
354
+ movaps %xmm4, TEMP(5)
355
+
356
+ leal 128(WINDOW), WINDOW
357
+ leal -64(B0L), B0L
358
+ leal -64(B0R), B0R
359
+
360
+ movups (WINDOW), %xmm0
361
+ movups 16(WINDOW), %xmm1
362
+ movups 32(WINDOW), %xmm2
363
+ movups 48(WINDOW), %xmm3
364
+ movaps %xmm0, %xmm4
365
+ movaps %xmm1, %xmm5
366
+ movaps %xmm2, %xmm6
367
+ movaps %xmm3, %xmm7
368
+ mulps 0(B0L), %xmm0
369
+ mulps 16(B0L), %xmm1
370
+ mulps 32(B0L), %xmm2
371
+ mulps 48(B0L), %xmm3
372
+ mulps 0(B0R), %xmm4
373
+ mulps 16(B0R), %xmm5
374
+ mulps 32(B0R), %xmm6
375
+ mulps 48(B0R), %xmm7
376
+ addps %xmm1, %xmm0
377
+ addps %xmm3, %xmm2
378
+ addps %xmm5, %xmm4
379
+ addps %xmm7, %xmm6
380
+ addps %xmm2, %xmm0
381
+ addps %xmm6, %xmm4
382
+ movaps %xmm0, TEMP(2)
383
+ movaps %xmm4, TEMP(6)
384
+
385
+ leal 128(WINDOW), WINDOW
386
+ leal -64(B0L), B0L
387
+ leal -64(B0R), B0R
388
+
389
+ movups (WINDOW), %xmm0
390
+ movups 16(WINDOW), %xmm1
391
+ movups 32(WINDOW), %xmm2
392
+ movups 48(WINDOW), %xmm3
393
+ movaps %xmm0, %xmm4
394
+ movaps %xmm1, %xmm5
395
+ movaps %xmm2, %xmm6
396
+ movaps %xmm3, %xmm7
397
+ mulps 0(B0L), %xmm0
398
+ mulps 16(B0L), %xmm1
399
+ mulps 32(B0L), %xmm2
400
+ mulps 48(B0L), %xmm3
401
+ mulps 0(B0R), %xmm4
402
+ mulps 16(B0R), %xmm5
403
+ mulps 32(B0R), %xmm6
404
+ mulps 48(B0R), %xmm7
405
+ addps %xmm1, %xmm0
406
+ addps %xmm3, %xmm2
407
+ addps %xmm5, %xmm4
408
+ addps %xmm7, %xmm6
409
+ addps %xmm2, %xmm0
410
+ addps %xmm6, %xmm4
411
+ movaps %xmm0, %xmm7
412
+ movaps %xmm4, TEMP(7)
413
+
414
+ leal 128(WINDOW), WINDOW
415
+ leal -64(B0L), B0L
416
+ leal -64(B0R), B0R
417
+
418
+ movaps TEMP(0), %xmm4
419
+ movaps TEMP(1), %xmm5
420
+ movaps TEMP(2), %xmm6
421
+ movaps %xmm4, %xmm0
422
+ movaps %xmm6, %xmm1
423
+ unpcklps %xmm5, %xmm4
424
+ unpcklps %xmm7, %xmm6
425
+ unpckhps %xmm5, %xmm0
426
+ unpckhps %xmm7, %xmm1
427
+ movaps %xmm4, %xmm2
428
+ movaps %xmm0, %xmm3
429
+ movlhps %xmm6, %xmm4
430
+ movhlps %xmm2, %xmm6
431
+ movlhps %xmm1, %xmm0
432
+ movhlps %xmm3, %xmm1
433
+ addps %xmm6, %xmm4
434
+ addps %xmm1, %xmm0
435
+ addps %xmm4, %xmm0
436
+ movaps %xmm0, %xmm2
437
+
438
+ movaps TEMP(4), %xmm4
439
+ movaps TEMP(5), %xmm5
440
+ movaps TEMP(6), %xmm6
441
+ movaps TEMP(7), %xmm7
442
+ movaps %xmm4, %xmm0
443
+ movaps %xmm6, %xmm1
444
+ unpcklps %xmm5, %xmm4
445
+ unpcklps %xmm7, %xmm6
446
+ unpckhps %xmm5, %xmm0
447
+ unpckhps %xmm7, %xmm1
448
+ movaps %xmm2, %xmm5
449
+ movaps %xmm4, %xmm2
450
+ movaps %xmm0, %xmm3
451
+ movlhps %xmm6, %xmm4
452
+ movhlps %xmm2, %xmm6
453
+ movlhps %xmm1, %xmm0
454
+ movhlps %xmm3, %xmm1
455
+ addps %xmm6, %xmm4
456
+ addps %xmm1, %xmm0
457
+ addps %xmm4, %xmm0
458
+
459
+ movaps %xmm5, %xmm1
460
+ movaps %xmm5, %xmm2
461
+ movaps %xmm0, %xmm3
462
+ movaps %xmm0, %xmm4
463
+ mulps ASM_NAME(scale_s32), %xmm5
464
+ mulps ASM_NAME(scale_s32), %xmm0
465
+ cmpnleps ASM_NAME(maxmin_s32), %xmm1
466
+ cmpltps ASM_NAME(maxmin_s32)+16, %xmm2
467
+ cmpnleps ASM_NAME(maxmin_s32), %xmm3
468
+ cmpltps ASM_NAME(maxmin_s32)+16, %xmm4
469
+ cvtps2pi %xmm5, %mm0
470
+ cvtps2pi %xmm0, %mm1
471
+ cvtps2pi %xmm1, %mm2
472
+ cvtps2pi %xmm3, %mm3
473
+ psrad $31, %mm2
474
+ psrad $31, %mm3
475
+ pxor %mm2, %mm0
476
+ pxor %mm3, %mm1
477
+ movq %mm0, %mm4
478
+ punpckldq %mm1, %mm0
479
+ punpckhdq %mm1, %mm4
480
+ movq %mm0, (SAMPLES)
481
+ movq %mm4, 8(SAMPLES)
482
+ movhlps %xmm5, %xmm5
483
+ movhlps %xmm0, %xmm0
484
+ movhlps %xmm1, %xmm1
485
+ movhlps %xmm3, %xmm3
486
+ cvtps2pi %xmm5, %mm0
487
+ cvtps2pi %xmm0, %mm1
488
+ cvtps2pi %xmm1, %mm4
489
+ cvtps2pi %xmm3, %mm5
490
+ psrad $31, %mm4
491
+ psrad $31, %mm5
492
+ pxor %mm4, %mm0
493
+ pxor %mm5, %mm1
494
+ movq %mm0, %mm6
495
+ punpckldq %mm1, %mm0
496
+ punpckhdq %mm1, %mm6
497
+ movq %mm0, 16(SAMPLES)
498
+ movq %mm6, 24(SAMPLES)
499
+
500
+ packssdw %mm4, %mm2
501
+ packssdw %mm5, %mm3
502
+ psrlw $15, %mm2
503
+ psrlw $15, %mm3
504
+ cvtps2pi %xmm2, %mm0
505
+ cvtps2pi %xmm4, %mm1
506
+ movhlps %xmm2, %xmm2
507
+ movhlps %xmm4, %xmm4
508
+ cvtps2pi %xmm2, %mm4
509
+ cvtps2pi %xmm4, %mm5
510
+ packssdw %mm4, %mm0
511
+ packssdw %mm5, %mm1
512
+ psrlw $15, %mm0
513
+ psrlw $15, %mm1
514
+ paddw %mm3, %mm2
515
+ paddw %mm1, %mm0
516
+ paddw %mm2, %mm0
517
+ paddw %mm0, MMREG_CLIP
518
+
519
+ leal 32(SAMPLES), SAMPLES
520
+ decl %ecx
521
+ jnz Loop_start_2
522
+
523
+ pshufw $0xee, MMREG_CLIP, %mm0
524
+ paddw MMREG_CLIP, %mm0
525
+ pshufw $0x55, %mm0, %mm1
526
+ paddw %mm1, %mm0
527
+ movd %mm0, %eax
528
+ andl $0xffff, %eax
529
+
530
+ popl %edi
531
+ popl %esi
532
+ popl %ebx
533
+ movl %ebp, %esp
534
+ popl %ebp
535
+
536
+ emms
537
+
538
+ ret
539
+
540
+ NONEXEC_STACK