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,196 @@
1
+ /*
2
+ synth.h: generic synth functions
3
+
4
+ copyright 1995-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Michael Hipp, generalized by Thomas Orgis
7
+
8
+ This header is used multiple times to create different variants of these functions.
9
+ See decode.c and friends.
10
+ Hint: BLOCK, MONO_NAME, MONO2STEREO_NAME, SYNTH_NAME and SAMPLE_T as well as WRITE_SAMPLE do vary.
11
+
12
+ Thomas looked closely at the decode_1to1, decode_2to1 and decode_4to1 contents, seeing that they are too similar to be separate files.
13
+ This is what resulted...
14
+
15
+ Basically, you need one set of these functions for each output sample type.
16
+ That currently means signed short, 8bit or float/double; though unsigned short may come, too.
17
+
18
+ Define NO_AUTOINCREMENT i386 code that shall not rely on autoincrement.
19
+ Actual benefit of this has to be examined; may apply to specific (old) compilers, only.
20
+ */
21
+
22
+
23
+ /* Main synth function, uses the plain dct64 or dct64_i386. */
24
+ int SYNTH_NAME(real *bandPtr, int channel, mpg123_handle *fr, int final)
25
+ {
26
+ #ifndef NO_AUTOINCREMENT
27
+ #define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
28
+ #define MY_DCT64 dct64
29
+ #else
30
+ #define BACKPEDAL 0x00 /* i386 code does not need that. */
31
+ #define MY_DCT64 dct64_i386
32
+ #endif
33
+ static const int step = 2;
34
+ SAMPLE_T *samples = (SAMPLE_T *) (fr->buffer.data + fr->buffer.fill);
35
+
36
+ real *b0, **buf; /* (*buf)[0x110]; */
37
+ int clip = 0;
38
+ int bo1;
39
+
40
+ if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
41
+
42
+ if(!channel)
43
+ {
44
+ fr->bo--;
45
+ fr->bo &= 0xf;
46
+ buf = fr->real_buffs[0];
47
+ }
48
+ else
49
+ {
50
+ #ifdef USE_DITHER
51
+ /* We always go forward 32 dither points (and back again for the second channel),
52
+ (re)sampling the noise the same way as the original signal. */
53
+ fr->ditherindex -= 32;
54
+ #endif
55
+ samples++;
56
+ buf = fr->real_buffs[1];
57
+ }
58
+ #ifdef USE_DITHER
59
+ /* We check only once for the overflow of dither index here ...
60
+ this wraps differently than the original i586 dither code, in theory (but when DITHERSIZE % BLOCK/2 == 0 it's the same). */
61
+ if(DITHERSIZE-fr->ditherindex < 32) fr->ditherindex = 0;
62
+ /* And we define a macro for the dither action... */
63
+ #define ADD_DITHER(fr,sum) sum+=fr->dithernoise[fr->ditherindex]; fr->ditherindex += 64/BLOCK;
64
+ #else
65
+ #define ADD_DITHER(fr,sum)
66
+ #endif
67
+
68
+ if(fr->bo & 0x1)
69
+ {
70
+ b0 = buf[0];
71
+ bo1 = fr->bo;
72
+ MY_DCT64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
73
+ }
74
+ else
75
+ {
76
+ b0 = buf[1];
77
+ bo1 = fr->bo+1;
78
+ MY_DCT64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
79
+ }
80
+
81
+ {
82
+ register int j;
83
+ real *window = fr->decwin + 16 - bo1;
84
+
85
+ for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
86
+ {
87
+ real sum;
88
+ #ifndef NO_AUTOINCREMENT
89
+ sum = REAL_MUL_SYNTH(*window++, *b0++);
90
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
91
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
92
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
93
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
94
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
95
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
96
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
97
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
98
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
99
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
100
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
101
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
102
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
103
+ sum += REAL_MUL_SYNTH(*window++, *b0++);
104
+ sum -= REAL_MUL_SYNTH(*window++, *b0++);
105
+ #else
106
+ sum = REAL_MUL_SYNTH(window[0x0], b0[0x0]);
107
+ sum -= REAL_MUL_SYNTH(window[0x1], b0[0x1]);
108
+ sum += REAL_MUL_SYNTH(window[0x2], b0[0x2]);
109
+ sum -= REAL_MUL_SYNTH(window[0x3], b0[0x3]);
110
+ sum += REAL_MUL_SYNTH(window[0x4], b0[0x4]);
111
+ sum -= REAL_MUL_SYNTH(window[0x5], b0[0x5]);
112
+ sum += REAL_MUL_SYNTH(window[0x6], b0[0x6]);
113
+ sum -= REAL_MUL_SYNTH(window[0x7], b0[0x7]);
114
+ sum += REAL_MUL_SYNTH(window[0x8], b0[0x8]);
115
+ sum -= REAL_MUL_SYNTH(window[0x9], b0[0x9]);
116
+ sum += REAL_MUL_SYNTH(window[0xA], b0[0xA]);
117
+ sum -= REAL_MUL_SYNTH(window[0xB], b0[0xB]);
118
+ sum += REAL_MUL_SYNTH(window[0xC], b0[0xC]);
119
+ sum -= REAL_MUL_SYNTH(window[0xD], b0[0xD]);
120
+ sum += REAL_MUL_SYNTH(window[0xE], b0[0xE]);
121
+ sum -= REAL_MUL_SYNTH(window[0xF], b0[0xF]);
122
+ #endif
123
+
124
+ ADD_DITHER(fr,sum)
125
+ WRITE_SAMPLE(samples,sum,clip);
126
+ }
127
+
128
+ {
129
+ real sum;
130
+ sum = REAL_MUL_SYNTH(window[0x0], b0[0x0]);
131
+ sum += REAL_MUL_SYNTH(window[0x2], b0[0x2]);
132
+ sum += REAL_MUL_SYNTH(window[0x4], b0[0x4]);
133
+ sum += REAL_MUL_SYNTH(window[0x6], b0[0x6]);
134
+ sum += REAL_MUL_SYNTH(window[0x8], b0[0x8]);
135
+ sum += REAL_MUL_SYNTH(window[0xA], b0[0xA]);
136
+ sum += REAL_MUL_SYNTH(window[0xC], b0[0xC]);
137
+ sum += REAL_MUL_SYNTH(window[0xE], b0[0xE]);
138
+
139
+ ADD_DITHER(fr,sum)
140
+ WRITE_SAMPLE(samples,sum,clip);
141
+ samples += step;
142
+ b0-=0x400/BLOCK;
143
+ window-=0x800/BLOCK;
144
+ }
145
+ window += bo1<<1;
146
+
147
+ for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
148
+ {
149
+ real sum;
150
+ #ifndef NO_AUTOINCREMENT
151
+ sum = -REAL_MUL_SYNTH(*(--window), *b0++);
152
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
153
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
154
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
155
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
156
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
157
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
158
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
159
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
160
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
161
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
162
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
163
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
164
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
165
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
166
+ sum -= REAL_MUL_SYNTH(*(--window), *b0++);
167
+ #else
168
+ sum = -REAL_MUL_SYNTH(window[-0x1], b0[0x0]);
169
+ sum -= REAL_MUL_SYNTH(window[-0x2], b0[0x1]);
170
+ sum -= REAL_MUL_SYNTH(window[-0x3], b0[0x2]);
171
+ sum -= REAL_MUL_SYNTH(window[-0x4], b0[0x3]);
172
+ sum -= REAL_MUL_SYNTH(window[-0x5], b0[0x4]);
173
+ sum -= REAL_MUL_SYNTH(window[-0x6], b0[0x5]);
174
+ sum -= REAL_MUL_SYNTH(window[-0x7], b0[0x6]);
175
+ sum -= REAL_MUL_SYNTH(window[-0x8], b0[0x7]);
176
+ sum -= REAL_MUL_SYNTH(window[-0x9], b0[0x8]);
177
+ sum -= REAL_MUL_SYNTH(window[-0xA], b0[0x9]);
178
+ sum -= REAL_MUL_SYNTH(window[-0xB], b0[0xA]);
179
+ sum -= REAL_MUL_SYNTH(window[-0xC], b0[0xB]);
180
+ sum -= REAL_MUL_SYNTH(window[-0xD], b0[0xC]);
181
+ sum -= REAL_MUL_SYNTH(window[-0xE], b0[0xD]);
182
+ sum -= REAL_MUL_SYNTH(window[-0xF], b0[0xE]);
183
+ sum -= REAL_MUL_SYNTH(window[-0x0], b0[0xF]); /* Is that right? 0x0? Just wondering... */
184
+ #endif
185
+ ADD_DITHER(fr,sum)
186
+ WRITE_SAMPLE(samples,sum,clip);
187
+ }
188
+ }
189
+
190
+ if(final) fr->buffer.fill += BLOCK*sizeof(SAMPLE_T);
191
+
192
+ return clip;
193
+ #undef ADD_DITHER
194
+ #undef BACKPEDAL
195
+ #undef MY_DCT64
196
+ }
@@ -0,0 +1,318 @@
1
+ /*
2
+ decode_3dnow.s - 3DNow! optimized synth_1to1()
3
+
4
+ copyright ?-2007 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 Syuuhei Kashiyama
7
+
8
+ This code based 'decode_3dnow.s' by Syuuhei Kashiyama
9
+ <squash@mb.kcom.ne.jp>,only two types of changes have been made:
10
+
11
+ - remove PREFETCH instruction for speedup
12
+ - change function name for support 3DNow! automatic detect
13
+ - femms moved to before 'call dct64_3dnow'
14
+
15
+ You can find Kashiyama's original 3dnow! support patch
16
+ (for mpg123-0.59o) at
17
+ http://user.ecc.u-tokyo.ac.jp/~g810370/linux-simd/ (Japanese).
18
+
19
+ by KIMURA Takuhiro <kim@hannah.ipc.miyakyo-u.ac.jp> - until 31.Mar.1999
20
+ <kim@comtec.co.jp> - after 1.Apr.1999
21
+
22
+
23
+
24
+ Replacement of synth_1to1() with AMD's 3DNow! SIMD operations support
25
+
26
+ Syuuhei Kashiyama <squash@mb.kcom.ne.jp>
27
+
28
+ The author of this program disclaim whole expressed or implied
29
+ warranties with regard to this program, and in no event shall the
30
+ author of this program liable to whatever resulted from the use of
31
+ this program. Use it at your own risk.
32
+ */
33
+
34
+ #include "mangle.h"
35
+
36
+ #ifdef ACCURATE_ROUNDING
37
+ #ifndef __APPLE__
38
+ .section .rodata
39
+ #else
40
+ .data
41
+ #endif
42
+ ALIGN8
43
+ max_s16:
44
+ .long 1191181824 /* 32767.0 */
45
+ .long 1191181824
46
+ min_s16:
47
+ .long -956301312 /* -32768.0 */
48
+ .long -956301312
49
+ ftoi_magic:
50
+ .long 1262485504 /* 2^23 + 2^22 */
51
+ .long 1262485504
52
+ #endif
53
+ .text
54
+ ALIGN16
55
+ .globl ASM_NAME(synth_1to1_3dnow_asm)
56
+ /* int synth_1to1_3dnow_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin); */
57
+ ASM_NAME(synth_1to1_3dnow_asm):
58
+ subl $24,%esp
59
+ pushl %ebp
60
+ pushl %edi
61
+ xorl %ebp,%ebp
62
+ pushl %esi
63
+ pushl %ebx
64
+ /* stack old: 0=ebx 4=esi 8=edi 12=ebp 16,20,24,28,32,36=local 40=back 44=bandptr 48=channel 52=out 56=pnt */
65
+ /* stack new: 0=ebx 4=esi 8=edi 12=ebp 16,20,24,28,32,36=local 40=back 44=bandptr 48=channel 52=out 56=buffs 60=bo 64=decwin */
66
+ #define OUT 52(%esp)
67
+ #define CHANNEL 48(%esp)
68
+ #define BANDPTR 44(%esp)
69
+ #define BUFFS 56(%esp)
70
+ #define BO 60(%esp)
71
+ #define DECWIN 64(%esp)
72
+ #define LOCAL0 16(%esp)
73
+ #define LOCAL1 20(%esp)
74
+ #define LOCAL5 36(%esp)
75
+ movl OUT,%esi
76
+ movl %esi,LOCAL0 /* save buffer start (samples pointer) to another local var */
77
+ movl CHANNEL,%ebx
78
+ movl BO,%esi /* bo address */
79
+ movl (%esi),%edx /* bo value */
80
+
81
+ femms
82
+ testl %ebx,%ebx
83
+ jne .L26
84
+ /* if(!channel) */
85
+ decl %edx /* --bo */
86
+ andl $15,%edx
87
+ movl %edx,(%esi) /* save bo */
88
+ movl BUFFS,%ecx
89
+ jmp .L27
90
+ .L26: /* if(channel) */
91
+ addl $2,LOCAL0 /* samples++ */
92
+ movl BUFFS,%ecx
93
+ addl $2176,%ecx
94
+ .L27:
95
+ /* edx (and it's lower end) still holds bo value */
96
+ testb $1,%dl /* bo & 0x1 */
97
+ je .L28
98
+ movl %edx,LOCAL5
99
+ movl %ecx,%ebx
100
+ movl BANDPTR,%esi
101
+ movl %edx,%edi
102
+ pushl %esi
103
+ sall $2,%edi
104
+ movl %ebx,%eax
105
+ movl %edi,24(%esp) /* LOCAL1, actually */
106
+ addl %edi,%eax
107
+ pushl %eax
108
+ movl %edx,%eax
109
+ incl %eax
110
+ andl $15,%eax
111
+ leal 1088(,%eax,4),%eax
112
+ addl %ebx,%eax
113
+ pushl %eax
114
+ call ASM_NAME(dct64_3dnow)
115
+ addl $12,%esp
116
+ jmp .L29
117
+ .L28:
118
+ leal 1(%edx),%esi
119
+ movl BANDPTR,%edi
120
+ movl %esi,LOCAL5
121
+ leal 1092(%ecx,%edx,4),%eax
122
+ pushl %edi
123
+ leal 1088(%ecx),%ebx
124
+ pushl %eax
125
+ sall $2,%esi
126
+ leal (%ecx,%edx,4),%eax
127
+ pushl %eax
128
+ call ASM_NAME(dct64_3dnow)
129
+ addl $12,%esp
130
+ movl %esi,LOCAL1
131
+ .L29:
132
+ movl DECWIN,%edx
133
+ addl $64,%edx
134
+ movl $16,%ecx
135
+ subl LOCAL1,%edx
136
+ movl LOCAL0,%edi
137
+
138
+ pcmpeqb %mm7,%mm7
139
+ pslld $31,%mm7
140
+ movq (%edx),%mm0
141
+ movq (%ebx),%mm1
142
+ ALIGN32
143
+ .L33:
144
+ movq 8(%edx),%mm3
145
+ pfmul %mm1,%mm0
146
+ movq 8(%ebx),%mm4
147
+ movq 16(%edx),%mm5
148
+ pfmul %mm4,%mm3
149
+ movq 16(%ebx),%mm6
150
+ pfadd %mm3,%mm0
151
+ movq 24(%edx),%mm1
152
+ pfmul %mm6,%mm5
153
+ movq 24(%ebx),%mm2
154
+ pfadd %mm5,%mm0
155
+ movq 32(%edx),%mm3
156
+ pfmul %mm2,%mm1
157
+ movq 32(%ebx),%mm4
158
+ pfadd %mm1,%mm0
159
+ movq 40(%edx),%mm5
160
+ pfmul %mm4,%mm3
161
+ movq 40(%ebx),%mm6
162
+ pfadd %mm3,%mm0
163
+ movq 48(%edx),%mm1
164
+ pfmul %mm6,%mm5
165
+ movq 48(%ebx),%mm2
166
+ pfadd %mm0,%mm5
167
+ movq 56(%edx),%mm3
168
+ pfmul %mm1,%mm2
169
+ movq 56(%ebx),%mm4
170
+ pfadd %mm5,%mm2
171
+ addl $64,%ebx
172
+ subl $-128,%edx
173
+ movq (%edx),%mm0
174
+ pfmul %mm4,%mm3
175
+ movq (%ebx),%mm1
176
+ pfadd %mm3,%mm2
177
+ movq %mm2,%mm3
178
+ psrlq $32,%mm3
179
+ pfsub %mm3,%mm2
180
+ incl %ebp
181
+ #ifdef ACCURATE_ROUNDING
182
+ pfmin (max_s16),%mm2
183
+ pfmax (min_s16),%mm2
184
+ pfadd (ftoi_magic),%mm2
185
+ #else
186
+ pf2id %mm2,%mm2
187
+ packssdw %mm2,%mm2
188
+ #endif
189
+ movd %mm2,%eax
190
+ movw %ax,0(%edi)
191
+ addl $4,%edi
192
+ decl %ecx
193
+ jnz .L33
194
+
195
+ movd (%ebx),%mm0
196
+ movd (%edx),%mm1
197
+ punpckldq 8(%ebx),%mm0
198
+ punpckldq 8(%edx),%mm1
199
+ movd 16(%ebx),%mm3
200
+ movd 16(%edx),%mm4
201
+ pfmul %mm1,%mm0
202
+ punpckldq 24(%ebx),%mm3
203
+ punpckldq 24(%edx),%mm4
204
+ movd 32(%ebx),%mm5
205
+ movd 32(%edx),%mm6
206
+ pfmul %mm4,%mm3
207
+ punpckldq 40(%ebx),%mm5
208
+ punpckldq 40(%edx),%mm6
209
+ pfadd %mm3,%mm0
210
+ movd 48(%ebx),%mm1
211
+ movd 48(%edx),%mm2
212
+ pfmul %mm6,%mm5
213
+ punpckldq 56(%ebx),%mm1
214
+ punpckldq 56(%edx),%mm2
215
+ pfadd %mm5,%mm0
216
+ pfmul %mm2,%mm1
217
+ pfadd %mm1,%mm0
218
+ pfacc %mm1,%mm0
219
+ #ifdef ACCURATE_ROUNDING
220
+ pfmin (max_s16),%mm0
221
+ pfmax (min_s16),%mm0
222
+ pfadd (ftoi_magic),%mm0
223
+ #else
224
+ pf2id %mm0,%mm0
225
+ packssdw %mm0,%mm0
226
+ #endif
227
+ movd %mm0,%eax
228
+ movw %ax,0(%edi)
229
+ incl %ebp
230
+ movl LOCAL5,%esi
231
+ addl $-64,%ebx
232
+ movl $15,%ebp
233
+ addl $4,%edi
234
+ leal -128(%edx,%esi,8),%edx
235
+
236
+ movl $15,%ecx
237
+ movd (%ebx),%mm0
238
+ movd -4(%edx),%mm1
239
+ punpckldq 4(%ebx),%mm0
240
+ punpckldq -8(%edx),%mm1
241
+ ALIGN32
242
+ .L46:
243
+ movd 8(%ebx),%mm3
244
+ movd -12(%edx),%mm4
245
+ pfmul %mm1,%mm0
246
+ punpckldq 12(%ebx),%mm3
247
+ punpckldq -16(%edx),%mm4
248
+ movd 16(%ebx),%mm5
249
+ movd -20(%edx),%mm6
250
+ pfmul %mm4,%mm3
251
+ punpckldq 20(%ebx),%mm5
252
+ punpckldq -24(%edx),%mm6
253
+ pfadd %mm3,%mm0
254
+ movd 24(%ebx),%mm1
255
+ movd -28(%edx),%mm2
256
+ pfmul %mm6,%mm5
257
+ punpckldq 28(%ebx),%mm1
258
+ punpckldq -32(%edx),%mm2
259
+ pfadd %mm5,%mm0
260
+ movd 32(%ebx),%mm3
261
+ movd -36(%edx),%mm4
262
+ pfmul %mm2,%mm1
263
+ punpckldq 36(%ebx),%mm3
264
+ punpckldq -40(%edx),%mm4
265
+ pfadd %mm1,%mm0
266
+ movd 40(%ebx),%mm5
267
+ movd -44(%edx),%mm6
268
+ pfmul %mm4,%mm3
269
+ punpckldq 44(%ebx),%mm5
270
+ punpckldq -48(%edx),%mm6
271
+ pfadd %mm3,%mm0
272
+ movd 48(%ebx),%mm1
273
+ movd -52(%edx),%mm2
274
+ pfmul %mm6,%mm5
275
+ punpckldq 52(%ebx),%mm1
276
+ punpckldq -56(%edx),%mm2
277
+ pfadd %mm0,%mm5
278
+ movd 56(%ebx),%mm3
279
+ movd -60(%edx),%mm4
280
+ pfmul %mm2,%mm1
281
+ punpckldq 60(%ebx),%mm3
282
+ punpckldq (%edx),%mm4
283
+ pfadd %mm1,%mm5
284
+ addl $-128,%edx
285
+ addl $-64,%ebx
286
+ movd (%ebx),%mm0
287
+ movd -4(%edx),%mm1
288
+ pfmul %mm4,%mm3
289
+ punpckldq 4(%ebx),%mm0
290
+ punpckldq -8(%edx),%mm1
291
+ pfadd %mm5,%mm3
292
+ pfacc %mm3,%mm3
293
+ incl %ebp
294
+ pxor %mm7,%mm3
295
+ #ifdef ACCURATE_ROUNDING
296
+ pfmin (max_s16),%mm3
297
+ pfmax (min_s16),%mm3
298
+ pfadd (ftoi_magic),%mm3
299
+ #else
300
+ pf2id %mm3,%mm3
301
+ packssdw %mm3,%mm3
302
+ #endif
303
+ movd %mm3,%eax
304
+ movw %ax,(%edi)
305
+ addl $4,%edi
306
+ decl %ecx
307
+ jnz .L46
308
+
309
+ femms
310
+ movl %ebp,%eax
311
+ popl %ebx
312
+ popl %esi
313
+ popl %edi
314
+ popl %ebp
315
+ addl $24,%esp
316
+ ret
317
+
318
+ NONEXEC_STACK