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,411 @@
1
+ /*
2
+ synth_s32.c: The functions for synthesizing real (float) samples, at the end of decoding.
3
+
4
+ copyright 1995-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Michael Hipp, heavily dissected and rearranged by Thomas Orgis
7
+ */
8
+
9
+ #include "mpg123lib_intern.h"
10
+ #include "sample.h"
11
+ #include "debug.h"
12
+
13
+ #ifdef REAL_IS_FIXED
14
+ #error "Do not build this file with fixed point math!"
15
+ #else
16
+ /*
17
+ Part 4: All synth functions that produce signed 32 bit output.
18
+ What we need is just a special WRITE_SAMPLE.
19
+ */
20
+
21
+ #define SAMPLE_T int32_t
22
+ #define WRITE_SAMPLE(samples,sum,clip) WRITE_S32_SAMPLE(samples,sum,clip)
23
+
24
+ /* Part 4a: All straight 1to1 decoding functions */
25
+ #define BLOCK 0x40 /* One decoding block is 64 samples. */
26
+
27
+ #define SYNTH_NAME synth_1to1_s32
28
+ #include "synth.h"
29
+ #undef SYNTH_NAME
30
+
31
+ /* Mono-related synths; they wrap over _some_ synth_1to1_s32 (could be generic, could be i386). */
32
+ #define SYNTH_NAME fr->synths.plain[r_1to1][f_32]
33
+ #define MONO_NAME synth_1to1_s32_mono
34
+ #define MONO2STEREO_NAME synth_1to1_s32_m2s
35
+ #include "synth_mono.h"
36
+ #undef SYNTH_NAME
37
+ #undef MONO_NAME
38
+ #undef MONO2STEREO_NAME
39
+
40
+ #ifdef OPT_X86
41
+ #define NO_AUTOINCREMENT
42
+ #define SYNTH_NAME synth_1to1_s32_i386
43
+ #include "synth.h"
44
+ #undef SYNTH_NAME
45
+ /* i386 uses the normal mono functions. */
46
+ #undef NO_AUTOINCREMENT
47
+ #endif
48
+
49
+ #ifdef OPT_X86_64
50
+ /* Assembler routines. */
51
+ int synth_1to1_s32_x86_64_asm(real *window, real *b0, int32_t *samples, int bo1);
52
+ int synth_1to1_s32_s_x86_64_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1);
53
+ void dct64_real_x86_64(real *out0, real *out1, real *samples);
54
+ /* Hull for C mpg123 API */
55
+ int synth_1to1_s32_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final)
56
+ {
57
+ int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
58
+
59
+ real *b0, **buf;
60
+ int bo1;
61
+ int clip;
62
+
63
+ if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
64
+
65
+ if(!channel)
66
+ {
67
+ fr->bo--;
68
+ fr->bo &= 0xf;
69
+ buf = fr->real_buffs[0];
70
+ }
71
+ else
72
+ {
73
+ samples++;
74
+ buf = fr->real_buffs[1];
75
+ }
76
+
77
+ if(fr->bo & 0x1)
78
+ {
79
+ b0 = buf[0];
80
+ bo1 = fr->bo;
81
+ dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
82
+ }
83
+ else
84
+ {
85
+ b0 = buf[1];
86
+ bo1 = fr->bo+1;
87
+ dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
88
+ }
89
+
90
+ clip = synth_1to1_s32_x86_64_asm(fr->decwin, b0, samples, bo1);
91
+
92
+ if(final) fr->buffer.fill += 256;
93
+
94
+ return clip;
95
+ }
96
+
97
+
98
+ int synth_1to1_s32_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
99
+ {
100
+ int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
101
+
102
+ real *b0l, *b0r, **bufl, **bufr;
103
+ int bo1;
104
+ int clip;
105
+
106
+ if(fr->have_eq_settings)
107
+ {
108
+ do_equalizer(bandPtr_l,0,fr->equalizer);
109
+ do_equalizer(bandPtr_r,1,fr->equalizer);
110
+ }
111
+
112
+ fr->bo--;
113
+ fr->bo &= 0xf;
114
+ bufl = fr->real_buffs[0];
115
+ bufr = fr->real_buffs[1];
116
+
117
+ if(fr->bo & 0x1)
118
+ {
119
+ b0l = bufl[0];
120
+ b0r = bufr[0];
121
+ bo1 = fr->bo;
122
+ dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
123
+ dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
124
+ }
125
+ else
126
+ {
127
+ b0l = bufl[1];
128
+ b0r = bufr[1];
129
+ bo1 = fr->bo+1;
130
+ dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
131
+ dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
132
+ }
133
+
134
+ clip = synth_1to1_s32_s_x86_64_asm(fr->decwin, b0l, b0r, samples, bo1);
135
+
136
+ fr->buffer.fill += 256;
137
+
138
+ return clip;
139
+ }
140
+ #endif
141
+
142
+ #ifdef OPT_SSE
143
+ /* Assembler routines. */
144
+ int synth_1to1_s32_sse_asm(real *window, real *b0, int32_t *samples, int bo1);
145
+ int synth_1to1_s32_s_sse_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1);
146
+ void dct64_real_sse(real *out0, real *out1, real *samples);
147
+ /* Hull for C mpg123 API */
148
+ int synth_1to1_s32_sse(real *bandPtr,int channel, mpg123_handle *fr, int final)
149
+ {
150
+ int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
151
+
152
+ real *b0, **buf;
153
+ int bo1;
154
+ int clip;
155
+
156
+ if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
157
+
158
+ if(!channel)
159
+ {
160
+ fr->bo--;
161
+ fr->bo &= 0xf;
162
+ buf = fr->real_buffs[0];
163
+ }
164
+ else
165
+ {
166
+ samples++;
167
+ buf = fr->real_buffs[1];
168
+ }
169
+
170
+ if(fr->bo & 0x1)
171
+ {
172
+ b0 = buf[0];
173
+ bo1 = fr->bo;
174
+ dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
175
+ }
176
+ else
177
+ {
178
+ b0 = buf[1];
179
+ bo1 = fr->bo+1;
180
+ dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
181
+ }
182
+
183
+ clip = synth_1to1_s32_sse_asm(fr->decwin, b0, samples, bo1);
184
+
185
+ if(final) fr->buffer.fill += 256;
186
+
187
+ return clip;
188
+ }
189
+
190
+
191
+ int synth_1to1_s32_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
192
+ {
193
+ int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
194
+
195
+ real *b0l, *b0r, **bufl, **bufr;
196
+ int bo1;
197
+ int clip;
198
+
199
+ if(fr->have_eq_settings)
200
+ {
201
+ do_equalizer(bandPtr_l,0,fr->equalizer);
202
+ do_equalizer(bandPtr_r,1,fr->equalizer);
203
+ }
204
+
205
+ fr->bo--;
206
+ fr->bo &= 0xf;
207
+ bufl = fr->real_buffs[0];
208
+ bufr = fr->real_buffs[1];
209
+
210
+ if(fr->bo & 0x1)
211
+ {
212
+ b0l = bufl[0];
213
+ b0r = bufr[0];
214
+ bo1 = fr->bo;
215
+ dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
216
+ dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
217
+ }
218
+ else
219
+ {
220
+ b0l = bufl[1];
221
+ b0r = bufr[1];
222
+ bo1 = fr->bo+1;
223
+ dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
224
+ dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
225
+ }
226
+
227
+ clip = synth_1to1_s32_s_sse_asm(fr->decwin, b0l, b0r, samples, bo1);
228
+
229
+ fr->buffer.fill += 256;
230
+
231
+ return clip;
232
+ }
233
+ #endif
234
+
235
+ #ifdef OPT_NEON
236
+ /* Assembler routines. */
237
+ int synth_1to1_s32_neon_asm(real *window, real *b0, int32_t *samples, int bo1);
238
+ int synth_1to1_s32_s_neon_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1);
239
+ void dct64_real_neon(real *out0, real *out1, real *samples);
240
+ /* Hull for C mpg123 API */
241
+ int synth_1to1_s32_neon(real *bandPtr,int channel, mpg123_handle *fr, int final)
242
+ {
243
+ int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
244
+
245
+ real *b0, **buf;
246
+ int bo1;
247
+ int clip;
248
+
249
+ if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
250
+
251
+ if(!channel)
252
+ {
253
+ fr->bo--;
254
+ fr->bo &= 0xf;
255
+ buf = fr->real_buffs[0];
256
+ }
257
+ else
258
+ {
259
+ samples++;
260
+ buf = fr->real_buffs[1];
261
+ }
262
+
263
+ if(fr->bo & 0x1)
264
+ {
265
+ b0 = buf[0];
266
+ bo1 = fr->bo;
267
+ dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
268
+ }
269
+ else
270
+ {
271
+ b0 = buf[1];
272
+ bo1 = fr->bo+1;
273
+ dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
274
+ }
275
+
276
+ clip = synth_1to1_s32_neon_asm(fr->decwin, b0, samples, bo1);
277
+
278
+ if(final) fr->buffer.fill += 256;
279
+
280
+ return clip;
281
+ }
282
+
283
+ int synth_1to1_s32_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
284
+ {
285
+ int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
286
+
287
+ real *b0l, *b0r, **bufl, **bufr;
288
+ int bo1;
289
+ int clip;
290
+
291
+ if(fr->have_eq_settings)
292
+ {
293
+ do_equalizer(bandPtr_l,0,fr->equalizer);
294
+ do_equalizer(bandPtr_r,1,fr->equalizer);
295
+ }
296
+
297
+ fr->bo--;
298
+ fr->bo &= 0xf;
299
+ bufl = fr->real_buffs[0];
300
+ bufr = fr->real_buffs[1];
301
+
302
+ if(fr->bo & 0x1)
303
+ {
304
+ b0l = bufl[0];
305
+ b0r = bufr[0];
306
+ bo1 = fr->bo;
307
+ dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
308
+ dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
309
+ }
310
+ else
311
+ {
312
+ b0l = bufl[1];
313
+ b0r = bufr[1];
314
+ bo1 = fr->bo+1;
315
+ dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
316
+ dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
317
+ }
318
+
319
+ clip = synth_1to1_s32_s_neon_asm(fr->decwin, b0l, b0r, samples, bo1);
320
+
321
+ fr->buffer.fill += 256;
322
+
323
+ return clip;
324
+ }
325
+ #endif
326
+
327
+ #undef BLOCK
328
+
329
+ #ifndef NO_DOWNSAMPLE
330
+
331
+ /*
332
+ Part 4b: 2to1 synth. Only generic and i386.
333
+ */
334
+ #define BLOCK 0x20 /* One decoding block is 32 samples. */
335
+
336
+ #define SYNTH_NAME synth_2to1_s32
337
+ #include "synth.h"
338
+ #undef SYNTH_NAME
339
+
340
+ /* Mono-related synths; they wrap over _some_ synth_2to1_s32 (could be generic, could be i386). */
341
+ #define SYNTH_NAME fr->synths.plain[r_2to1][f_32]
342
+ #define MONO_NAME synth_2to1_s32_mono
343
+ #define MONO2STEREO_NAME synth_2to1_s32_m2s
344
+ #include "synth_mono.h"
345
+ #undef SYNTH_NAME
346
+ #undef MONO_NAME
347
+ #undef MONO2STEREO_NAME
348
+
349
+ #ifdef OPT_X86
350
+ #define NO_AUTOINCREMENT
351
+ #define SYNTH_NAME synth_2to1_s32_i386
352
+ #include "synth.h"
353
+ #undef SYNTH_NAME
354
+ /* i386 uses the normal mono functions. */
355
+ #undef NO_AUTOINCREMENT
356
+ #endif
357
+
358
+ #undef BLOCK
359
+
360
+ /*
361
+ Part 4c: 4to1 synth. Only generic and i386.
362
+ */
363
+ #define BLOCK 0x10 /* One decoding block is 16 samples. */
364
+
365
+ #define SYNTH_NAME synth_4to1_s32
366
+ #include "synth.h"
367
+ #undef SYNTH_NAME
368
+
369
+ /* Mono-related synths; they wrap over _some_ synth_4to1_s32 (could be generic, could be i386). */
370
+ #define SYNTH_NAME fr->synths.plain[r_4to1][f_32]
371
+ #define MONO_NAME synth_4to1_s32_mono
372
+ #define MONO2STEREO_NAME synth_4to1_s32_m2s
373
+ #include "synth_mono.h"
374
+ #undef SYNTH_NAME
375
+ #undef MONO_NAME
376
+ #undef MONO2STEREO_NAME
377
+
378
+ #ifdef OPT_X86
379
+ #define NO_AUTOINCREMENT
380
+ #define SYNTH_NAME synth_4to1_s32_i386
381
+ #include "synth.h"
382
+ #undef SYNTH_NAME
383
+ /* i386 uses the normal mono functions. */
384
+ #undef NO_AUTOINCREMENT
385
+ #endif
386
+
387
+ #undef BLOCK
388
+
389
+ #endif /* NO_DOWNSAMPLE */
390
+
391
+ #ifndef NO_NTOM
392
+ /*
393
+ Part 4d: ntom synth.
394
+ Same procedure as above... Just no extra play anymore, straight synth that may use an optimized dct64.
395
+ */
396
+
397
+ /* These are all in one header, there's no flexibility to gain. */
398
+ #define SYNTH_NAME synth_ntom_s32
399
+ #define MONO_NAME synth_ntom_s32_mono
400
+ #define MONO2STEREO_NAME synth_ntom_s32_m2s
401
+ #include "synth_ntom.h"
402
+ #undef SYNTH_NAME
403
+ #undef MONO_NAME
404
+ #undef MONO2STEREO_NAME
405
+
406
+ #endif
407
+
408
+ #undef SAMPLE_T
409
+ #undef WRITE_SAMPLE
410
+
411
+ #endif /* non-fixed type */
@@ -0,0 +1,6 @@
1
+ #include "mangle.h"
2
+ #define MPL_DCT64 ASM_NAME(dct64_sse)
3
+ #define SYNTH_NAME ASM_NAME(synth_1to1_sse_asm)
4
+ #include "synth_sse3d.h"
5
+
6
+ NONEXEC_STACK
@@ -0,0 +1,246 @@
1
+ /*
2
+ decode_sse3d: Synth for SSE and extended 3DNow (yeah, the name is a relic)
3
+
4
+ copyright 2006-2007 by Zuxy Meng/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 the mysterious higway for MMX (apparently)
7
+ then developed into SSE opt by Zuxy Meng, also building on Romain Dolbeau's AltiVec
8
+ Both have agreed to distribution under LGPL 2.1 .
9
+
10
+ Transformed back into standalone asm, with help of
11
+ gcc -S -DHAVE_CONFIG_H -I. -march=pentium -O3 -Wall -pedantic -fno-strict-aliasing -DREAL_IS_FLOAT -c -o decode_mmxsse.{S,c}
12
+
13
+ The difference between SSE and 3DNowExt is the dct64 function and the synth function name.
14
+ This template here uses the SYNTH_NAME and MPL_DCT64 macros for this - see decode_sse.S and decode_3dnowext.S...
15
+ That's not memory efficient since there's doubled code, but it's easier than giving another function pointer.
16
+ Maybe I'll change it in future, but now I need something that works.
17
+
18
+ Original comment from MPlayer source follows:
19
+ */
20
+
21
+ /*
22
+ * this code comes under GPL
23
+ * This code was taken from http://www.mpg123.org
24
+ * See ChangeLog of mpg123-0.59s-pre.1 for detail
25
+ * Applied to mplayer by Nick Kurshev <nickols_k@mail.ru>
26
+ *
27
+ * Local ChangeLog:
28
+ * - Partial loops unrolling and removing MOVW insn from loops
29
+ */
30
+
31
+ #include "mangle.h"
32
+
33
+ .data
34
+ ALIGN8
35
+ one_null:
36
+ .long -65536
37
+ .long -65536
38
+ ALIGN8
39
+ null_one:
40
+ .long 65535
41
+ .long 65535
42
+
43
+ .text
44
+ ALIGN16
45
+ /* void SYNTH_NAME(real *bandPtr, int channel, short *samples, short *buffs, int *bo, float *decwins) */
46
+ .globl SYNTH_NAME
47
+ SYNTH_NAME:
48
+ pushl %ebp
49
+ /* stack:0=ebp 4=back 8=bandptr 12=channel 16=samples 20=buffs 24=bo 28=decwins */
50
+ movl %esp, %ebp
51
+ /* Now the old stack addresses are preserved via %epb. */
52
+ subl $4,%esp /* What has been called temp before. */
53
+ pushl %edi
54
+ pushl %esi
55
+ pushl %ebx
56
+ #define TEMP 12(%esp)
57
+ /* APP */
58
+ movl 12(%ebp),%ecx
59
+ movl 16(%ebp),%edi
60
+ movl $15,%ebx
61
+ movl 24(%ebp),%edx
62
+ leal (%edi,%ecx,2),%edi
63
+ decl %ecx
64
+ movl 20(%ebp),%esi
65
+ movl (%edx),%eax
66
+ jecxz .L01
67
+ decl %eax
68
+ andl %ebx,%eax
69
+ leal 1088(%esi),%esi
70
+ movl %eax,(%edx)
71
+ .L01:
72
+ leal (%esi,%eax,2),%edx
73
+ movl %eax,TEMP
74
+ incl %eax
75
+ andl %ebx,%eax
76
+ leal 544(%esi,%eax,2),%ecx
77
+ incl %ebx
78
+ testl $1, %eax
79
+ jnz .L02
80
+ xchgl %edx,%ecx
81
+ incl TEMP
82
+ leal 544(%esi),%esi
83
+ .L02:
84
+ pushl 8(%ebp)
85
+ pushl %edx
86
+ pushl %ecx
87
+ call MPL_DCT64
88
+ addl $12, %esp
89
+ leal 1(%ebx), %ecx
90
+ subl TEMP,%ebx
91
+ pushl %ecx
92
+ /* leal ASM_NAME(decwins)(%ebx,%ebx,1), %edx */
93
+ movl 28(%ebp),%ecx
94
+ leal (%ecx,%ebx,2), %edx
95
+ movl (%esp),%ecx /* restore, but leave value on stack */
96
+ shrl $1, %ecx
97
+ ALIGN16
98
+ .L03:
99
+ movq (%edx),%mm0
100
+ movq 64(%edx),%mm4
101
+ pmaddwd (%esi),%mm0
102
+ pmaddwd 32(%esi),%mm4
103
+ movq 8(%edx),%mm1
104
+ movq 72(%edx),%mm5
105
+ pmaddwd 8(%esi),%mm1
106
+ pmaddwd 40(%esi),%mm5
107
+ movq 16(%edx),%mm2
108
+ movq 80(%edx),%mm6
109
+ pmaddwd 16(%esi),%mm2
110
+ pmaddwd 48(%esi),%mm6
111
+ movq 24(%edx),%mm3
112
+ movq 88(%edx),%mm7
113
+ pmaddwd 24(%esi),%mm3
114
+ pmaddwd 56(%esi),%mm7
115
+ paddd %mm1,%mm0
116
+ paddd %mm5,%mm4
117
+ paddd %mm2,%mm0
118
+ paddd %mm6,%mm4
119
+ paddd %mm3,%mm0
120
+ paddd %mm7,%mm4
121
+ movq %mm0,%mm1
122
+ movq %mm4,%mm5
123
+ psrlq $32,%mm1
124
+ psrlq $32,%mm5
125
+ paddd %mm1,%mm0
126
+ paddd %mm5,%mm4
127
+ psrad $13,%mm0
128
+ psrad $13,%mm4
129
+ packssdw %mm0,%mm0
130
+ packssdw %mm4,%mm4
131
+ movq (%edi), %mm1
132
+ punpckldq %mm4, %mm0
133
+ pand one_null, %mm1
134
+ pand null_one, %mm0
135
+ por %mm0, %mm1
136
+ movq %mm1,(%edi)
137
+ leal 64(%esi),%esi
138
+ leal 128(%edx),%edx
139
+ leal 8(%edi),%edi
140
+ decl %ecx
141
+ jnz .L03
142
+ popl %ecx
143
+ andl $1, %ecx
144
+ jecxz .next_loop
145
+ movq (%edx),%mm0
146
+ pmaddwd (%esi),%mm0
147
+ movq 8(%edx),%mm1
148
+ pmaddwd 8(%esi),%mm1
149
+ movq 16(%edx),%mm2
150
+ pmaddwd 16(%esi),%mm2
151
+ movq 24(%edx),%mm3
152
+ pmaddwd 24(%esi),%mm3
153
+ paddd %mm1,%mm0
154
+ paddd %mm2,%mm0
155
+ paddd %mm3,%mm0
156
+ movq %mm0,%mm1
157
+ psrlq $32,%mm1
158
+ paddd %mm1,%mm0
159
+ psrad $13,%mm0
160
+ packssdw %mm0,%mm0
161
+ movd %mm0,%eax
162
+ movw %ax, (%edi)
163
+ leal 32(%esi),%esi
164
+ leal 64(%edx),%edx
165
+ leal 4(%edi),%edi
166
+ .next_loop:
167
+ subl $64,%esi
168
+ movl $7,%ecx
169
+ ALIGN16
170
+ .L04:
171
+ movq (%edx),%mm0
172
+ movq 64(%edx),%mm4
173
+ pmaddwd (%esi),%mm0
174
+ pmaddwd -32(%esi),%mm4
175
+ movq 8(%edx),%mm1
176
+ movq 72(%edx),%mm5
177
+ pmaddwd 8(%esi),%mm1
178
+ pmaddwd -24(%esi),%mm5
179
+ movq 16(%edx),%mm2
180
+ movq 80(%edx),%mm6
181
+ pmaddwd 16(%esi),%mm2
182
+ pmaddwd -16(%esi),%mm6
183
+ movq 24(%edx),%mm3
184
+ movq 88(%edx),%mm7
185
+ pmaddwd 24(%esi),%mm3
186
+ pmaddwd -8(%esi),%mm7
187
+ paddd %mm1,%mm0
188
+ paddd %mm5,%mm4
189
+ paddd %mm2,%mm0
190
+ paddd %mm6,%mm4
191
+ paddd %mm3,%mm0
192
+ paddd %mm7,%mm4
193
+ movq %mm0,%mm1
194
+ movq %mm4,%mm5
195
+ psrlq $32,%mm1
196
+ psrlq $32,%mm5
197
+ paddd %mm0,%mm1
198
+ paddd %mm4,%mm5
199
+ psrad $13,%mm1
200
+ psrad $13,%mm5
201
+ packssdw %mm1,%mm1
202
+ packssdw %mm5,%mm5
203
+ psubd %mm0,%mm0
204
+ psubd %mm4,%mm4
205
+ psubsw %mm1,%mm0
206
+ psubsw %mm5,%mm4
207
+ movq (%edi), %mm1
208
+ punpckldq %mm4, %mm0
209
+ pand one_null, %mm1
210
+ pand null_one, %mm0
211
+ por %mm0, %mm1
212
+ movq %mm1,(%edi)
213
+ subl $64,%esi
214
+ addl $128,%edx
215
+ leal 8(%edi),%edi
216
+ decl %ecx
217
+ jnz .L04
218
+ movq (%edx),%mm0
219
+ pmaddwd (%esi),%mm0
220
+ movq 8(%edx),%mm1
221
+ pmaddwd 8(%esi),%mm1
222
+ movq 16(%edx),%mm2
223
+ pmaddwd 16(%esi),%mm2
224
+ movq 24(%edx),%mm3
225
+ pmaddwd 24(%esi),%mm3
226
+ paddd %mm1,%mm0
227
+ paddd %mm2,%mm0
228
+ paddd %mm3,%mm0
229
+ movq %mm0,%mm1
230
+ psrlq $32,%mm1
231
+ paddd %mm0,%mm1
232
+ psrad $13,%mm1
233
+ packssdw %mm1,%mm1
234
+ psubd %mm0,%mm0
235
+ psubsw %mm1,%mm0
236
+ movd %mm0,%eax
237
+ movw %ax,(%edi)
238
+ emms
239
+
240
+ /* NO_APP */
241
+ popl %ebx
242
+ popl %esi
243
+ popl %edi
244
+ addl $4,%esp
245
+ popl %ebp
246
+ ret