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,52 @@
1
+ #ifndef MPG123_SYNTH_H
2
+ #define MPG123_SYNTH_H
3
+
4
+ /* This is included inside frame.h, which is included in mpg123lib_intern.h,
5
+ at the appropriate place.
6
+ Explicit header inclusions here would cause circular dependencies. */
7
+
8
+ /* The handle needs these types for selecting the decoding routine at runtime.
9
+ Not just for optimization, mainly for XtoY, mono/stereo. */
10
+ typedef int (*func_synth)(real *,int, mpg123_handle *,int );
11
+ typedef int (*func_synth_mono)(real *, mpg123_handle *);
12
+ typedef int (*func_synth_stereo)(real *, real *, mpg123_handle *);
13
+ enum synth_channel { c_plain=0, c_stereo, c_m2s, c_mono, c_limit };
14
+ enum synth_resample
15
+ {
16
+ r_none=-1
17
+ ,r_1to1=0
18
+ # ifndef NO_DOWNSAMPLE
19
+ ,r_2to1
20
+ ,r_4to1
21
+ # endif
22
+ # ifndef NO_NTOM
23
+ ,r_ntom
24
+ # endif
25
+ ,r_limit
26
+ };
27
+ enum synth_format
28
+ {
29
+ f_none=-1
30
+ # ifndef NO_16BIT
31
+ ,f_16
32
+ # endif
33
+ # ifndef NO_8BIT
34
+ ,f_8
35
+ # endif
36
+ # ifndef NO_REAL
37
+ ,f_real
38
+ # endif
39
+ # ifndef NO_32BIT
40
+ ,f_32
41
+ # endif
42
+ ,f_limit
43
+ };
44
+ struct synth_s
45
+ {
46
+ func_synth plain[r_limit][f_limit];
47
+ func_synth_stereo stereo[r_limit][f_limit];
48
+ func_synth_mono mono2stereo[r_limit][f_limit];
49
+ func_synth_mono mono[r_limit][f_limit];
50
+ };
51
+
52
+ #endif
@@ -0,0 +1,294 @@
1
+ /*
2
+ tabinit.c: initialize tables...
3
+
4
+ copyright ?-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
7
+ */
8
+
9
+ #include "mpg123lib_intern.h"
10
+ #include "debug.h"
11
+
12
+ /* That altivec alignment part here should not hurt generic code, I hope */
13
+ #ifdef OPT_ALTIVEC
14
+ static ALIGNED(16) real cos64[16];
15
+ static ALIGNED(16) real cos32[8];
16
+ static ALIGNED(16) real cos16[4];
17
+ static ALIGNED(16) real cos8[2];
18
+ static ALIGNED(16) real cos4[1];
19
+ #elif defined(REAL_IS_FIXED) && defined(PRECALC_TABLES)
20
+ static real cos64[16] =
21
+ {
22
+ 8398725,8480395,8647771,8909416,9279544,9780026,10443886,11321405,
23
+ 12491246,14081950,16316987,19619946,24900150,34523836,57170182,170959967
24
+ };
25
+ static real cos32[8] =
26
+ {
27
+ 8429197,8766072,9511743,10851869,13223040,17795219,28897867,85583072
28
+ };
29
+ static real cos16[4] =
30
+ {
31
+ 8552951,10088893,15099095,42998586
32
+ };
33
+ static real cos8[2] =
34
+ {
35
+ 9079764,21920489
36
+ };
37
+ static real cos4[1] =
38
+ {
39
+ 11863283
40
+ };
41
+ #else
42
+ static real cos64[16],cos32[8],cos16[4],cos8[2],cos4[1];
43
+ #endif
44
+
45
+ real *pnts[] = { cos64,cos32,cos16,cos8,cos4 };
46
+
47
+
48
+ static long intwinbase[] = {
49
+ 0, -1, -1, -1, -1, -1, -1, -2, -2, -2,
50
+ -2, -3, -3, -4, -4, -5, -5, -6, -7, -7,
51
+ -8, -9, -10, -11, -13, -14, -16, -17, -19, -21,
52
+ -24, -26, -29, -31, -35, -38, -41, -45, -49, -53,
53
+ -58, -63, -68, -73, -79, -85, -91, -97, -104, -111,
54
+ -117, -125, -132, -139, -147, -154, -161, -169, -176, -183,
55
+ -190, -196, -202, -208, -213, -218, -222, -225, -227, -228,
56
+ -228, -227, -224, -221, -215, -208, -200, -189, -177, -163,
57
+ -146, -127, -106, -83, -57, -29, 2, 36, 72, 111,
58
+ 153, 197, 244, 294, 347, 401, 459, 519, 581, 645,
59
+ 711, 779, 848, 919, 991, 1064, 1137, 1210, 1283, 1356,
60
+ 1428, 1498, 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962,
61
+ 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063, 2037, 2000,
62
+ 1952, 1893, 1822, 1739, 1644, 1535, 1414, 1280, 1131, 970,
63
+ 794, 605, 402, 185, -45, -288, -545, -814, -1095, -1388,
64
+ -1692, -2006, -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788,
65
+ -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597, -7910, -8209,
66
+ -8491, -8755, -8998, -9219, -9416, -9585, -9727, -9838, -9916, -9959,
67
+ -9966, -9935, -9863, -9750, -9592, -9389, -9139, -8840, -8492, -8092,
68
+ -7640, -7134, -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082,
69
+ -70, 998, 2122, 3300, 4533, 5818, 7154, 8540, 9975, 11455,
70
+ 12980, 14548, 16155, 17799, 19478, 21189, 22929, 24694, 26482, 28289,
71
+ 30112, 31947, 33791, 35640, 37489, 39336, 41176, 43006, 44821, 46617,
72
+ 48390, 50137, 51853, 53534, 55178, 56778, 58333, 59838, 61289, 62684,
73
+ 64019, 65290, 66494, 67629, 68692, 69679, 70590, 71420, 72169, 72835,
74
+ 73415, 73908, 74313, 74630, 74856, 74992, 75038 };
75
+
76
+ void prepare_decode_tables()
77
+ {
78
+ #if !defined(REAL_IS_FIXED) || !defined(PRECALC_TABLES)
79
+ int i,k,kr,divv;
80
+ real *costab;
81
+
82
+ for(i=0;i<5;i++)
83
+ {
84
+ kr=0x10>>i; divv=0x40>>i;
85
+ costab = pnts[i];
86
+ for(k=0;k<kr;k++)
87
+ costab[k] = DOUBLE_TO_REAL(1.0 / (2.0 * cos(M_PI * ((double) k * 2.0 + 1.0) / (double) divv)));
88
+ }
89
+ #endif
90
+ }
91
+
92
+ #ifdef OPT_MMXORSSE
93
+ #if !defined(OPT_X86_64) && !defined(OPT_NEON)
94
+ void make_decode_tables_mmx_asm(long scaleval, float* decwin_mmx, float *decwins);
95
+ void make_decode_tables_mmx(mpg123_handle *fr)
96
+ {
97
+ debug("MMX decode tables");
98
+ /* Take care: The scale should be like before, when we didn't have float output all around. */
99
+ make_decode_tables_mmx_asm((long)((fr->lastscale < 0 ? fr->p.outscale : fr->lastscale)*SHORT_SCALE), fr->decwin_mmx, fr->decwins);
100
+ debug("MMX decode tables done");
101
+ }
102
+ #else
103
+
104
+ /* This mimics round() as defined in C99. We stay C89. */
105
+ static int rounded(double f)
106
+ {
107
+ return (int)(f>0 ? floor(f+0.5) : ceil(f-0.5));
108
+ }
109
+
110
+ /* x86-64 doesn't use asm version */
111
+ void make_decode_tables_mmx(mpg123_handle *fr)
112
+ {
113
+ int i,j,val;
114
+ int idx = 0;
115
+ short *ptr = (short *)fr->decwins;
116
+ /* Scale is always based on 1.0 . */
117
+ double scaleval = -0.5*(fr->lastscale < 0 ? fr->p.outscale : fr->lastscale);
118
+ debug1("MMX decode tables with scaleval %g", scaleval);
119
+ for(i=0,j=0;i<256;i++,j++,idx+=32)
120
+ {
121
+ if(idx < 512+16)
122
+ fr->decwin_mmx[idx+16] = fr->decwin_mmx[idx] = DOUBLE_TO_REAL((double) intwinbase[j] * scaleval);
123
+
124
+ if(i % 32 == 31)
125
+ idx -= 1023;
126
+ if(i % 64 == 63)
127
+ scaleval = - scaleval;
128
+ }
129
+
130
+ for( /* i=256 */ ;i<512;i++,j--,idx+=32)
131
+ {
132
+ if(idx < 512+16)
133
+ fr->decwin_mmx[idx+16] = fr->decwin_mmx[idx] = DOUBLE_TO_REAL((double) intwinbase[j] * scaleval);
134
+
135
+ if(i % 32 == 31)
136
+ idx -= 1023;
137
+ if(i % 64 == 63)
138
+ scaleval = - scaleval;
139
+ }
140
+
141
+ for(i=0; i<512; i++) {
142
+ if(i&1) val = rounded(fr->decwin_mmx[i]*0.5);
143
+ else val = rounded(fr->decwin_mmx[i]*-0.5);
144
+ if(val > 32767) val = 32767;
145
+ else if(val < -32768) val = -32768;
146
+ ptr[i] = val;
147
+ }
148
+ for(i=512; i<512+32; i++) {
149
+ if(i&1) val = rounded(fr->decwin_mmx[i]*0.5);
150
+ else val = 0;
151
+ if(val > 32767) val = 32767;
152
+ else if(val < -32768) val = -32768;
153
+ ptr[i] = val;
154
+ }
155
+ for(i=0; i<512; i++) {
156
+ val = rounded(fr->decwin_mmx[511-i]*-0.5);
157
+ if(val > 32767) val = 32767;
158
+ else if(val < -32768) val = -32768;
159
+ ptr[512+32+i] = val;
160
+ }
161
+ debug("decode tables done");
162
+ }
163
+ #endif
164
+ #endif
165
+
166
+ void make_decode_tables(mpg123_handle *fr)
167
+ {
168
+ int i,j;
169
+ int idx = 0;
170
+ /* Scale is always based on 1.0 . */
171
+ double scaleval = -0.5*(fr->lastscale < 0 ? fr->p.outscale : fr->lastscale);
172
+ debug1("decode tables with scaleval %g", scaleval);
173
+ #ifdef REAL_IS_FIXED
174
+ long scaleval_long = DOUBLE_TO_REAL_15(scaleval);
175
+ #endif
176
+ for(i=0,j=0;i<256;i++,j++,idx+=32)
177
+ {
178
+ if(idx < 512+16)
179
+ #ifdef REAL_IS_FIXED
180
+ fr->decwin[idx+16] = fr->decwin[idx] = REAL_SCALE_WINDOW(intwinbase[j] * scaleval_long);
181
+ #else
182
+ fr->decwin[idx+16] = fr->decwin[idx] = DOUBLE_TO_REAL((double) intwinbase[j] * scaleval);
183
+ #endif
184
+
185
+ if(i % 32 == 31)
186
+ idx -= 1023;
187
+ if(i % 64 == 63)
188
+ #ifdef REAL_IS_FIXED
189
+ scaleval_long = - scaleval_long;
190
+ #else
191
+ scaleval = - scaleval;
192
+ #endif
193
+ }
194
+
195
+ for( /* i=256 */ ;i<512;i++,j--,idx+=32)
196
+ {
197
+ if(idx < 512+16)
198
+ #ifdef REAL_IS_FIXED
199
+ fr->decwin[idx+16] = fr->decwin[idx] = REAL_SCALE_WINDOW(intwinbase[j] * scaleval_long);
200
+ #else
201
+ fr->decwin[idx+16] = fr->decwin[idx] = DOUBLE_TO_REAL((double) intwinbase[j] * scaleval);
202
+ #endif
203
+
204
+ if(i % 32 == 31)
205
+ idx -= 1023;
206
+ if(i % 64 == 63)
207
+ #ifdef REAL_IS_FIXED
208
+ scaleval_long = - scaleval_long;
209
+ #else
210
+ scaleval = - scaleval;
211
+ #endif
212
+ }
213
+ #if defined(OPT_X86_64) || defined(OPT_ALTIVEC) || defined(OPT_SSE) || defined(OPT_ARM) || defined(OPT_NEON)
214
+ if(fr->cpu_opts.type == x86_64 || fr->cpu_opts.type == altivec || fr->cpu_opts.type == sse || fr->cpu_opts.type == arm || fr->cpu_opts.type == neon)
215
+ { /* for float SSE / AltiVec / ARM decoder */
216
+ for(i=512; i<512+32; i++)
217
+ {
218
+ fr->decwin[i] = (i&1) ? fr->decwin[i] : 0;
219
+ }
220
+ for(i=0; i<512; i++)
221
+ {
222
+ fr->decwin[512+32+i] = -fr->decwin[511-i];
223
+ }
224
+ #ifdef OPT_NEON
225
+ if(fr->cpu_opts.type == neon)
226
+ {
227
+ for(i=0; i<512; i+=2)
228
+ {
229
+ fr->decwin[i] = -fr->decwin[i];
230
+ }
231
+ }
232
+ #endif
233
+ }
234
+ #endif
235
+ debug("decode tables done");
236
+ }
237
+
238
+ #ifndef NO_8BIT
239
+ int make_conv16to8_table(mpg123_handle *fr)
240
+ {
241
+ int i;
242
+ int mode = fr->af.encoding;
243
+
244
+ /*
245
+ * ????: 8.0 is right but on SB cards '2.0' is a better value ???
246
+ */
247
+ const double mul = 8.0;
248
+
249
+ if(!fr->conv16to8_buf){
250
+ fr->conv16to8_buf = (unsigned char *) malloc(8192);
251
+ if(!fr->conv16to8_buf) {
252
+ fr->err = MPG123_ERR_16TO8TABLE;
253
+ if(NOQUIET) error("Can't allocate 16 to 8 converter table!");
254
+ return -1;
255
+ }
256
+ fr->conv16to8 = fr->conv16to8_buf + 4096;
257
+ }
258
+
259
+ if(fr->af.encoding == MPG123_ENC_ULAW_8){
260
+ double m=127.0 / log(256.0);
261
+ int c1;
262
+
263
+ for(i=-4096;i<4096;i++) {
264
+ /* dunno whether this is a valid transformation rule ?!?!? */
265
+ if(i < 0)
266
+ c1 = 127 - (int) (log( 1.0 - 255.0 * (double) i*mul / 32768.0 ) * m);
267
+ else
268
+ c1 = 255 - (int) (log( 1.0 + 255.0 * (double) i*mul / 32768.0 ) * m);
269
+ if((c1 < 0 || c1 > 255) && NOQUIET) error2("Converror %d %d",i,c1);
270
+
271
+ if(c1 == 0)
272
+ c1 = 2;
273
+ fr->conv16to8[i] = (unsigned char) c1;
274
+ }
275
+ }
276
+ else if(mode == MPG123_ENC_SIGNED_8) {
277
+ for(i=-4096;i<4096;i++) {
278
+ fr->conv16to8[i] = i>>5;
279
+ }
280
+ }
281
+ else if(mode == MPG123_ENC_UNSIGNED_8) {
282
+ for(i=-4096;i<4096;i++) {
283
+ fr->conv16to8[i] = (i>>5)+128;
284
+ }
285
+ }
286
+ else {
287
+ for(i=-4096;i<4096;i++) {
288
+ fr->conv16to8[i] = 0;
289
+ }
290
+ }
291
+ return 0;
292
+ }
293
+ #endif
294
+
@@ -0,0 +1,210 @@
1
+ /*
2
+ tabinit_mmx: make_decode_tables_mmx
3
+
4
+ copyright ?-2006 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 the mysterious higway (apparently)
7
+ */
8
+
9
+ #include "mangle.h"
10
+
11
+ .data
12
+ ALIGN32
13
+ .globl ASM_NAME(costab_mmxsse)
14
+ ASM_NAME(costab_mmxsse):
15
+ .long 1056974725
16
+ .long 1057056395
17
+ .long 1057223771
18
+ .long 1057485416
19
+ .long 1057855544
20
+ .long 1058356026
21
+ .long 1059019886
22
+ .long 1059897405
23
+ .long 1061067246
24
+ .long 1062657950
25
+ .long 1064892987
26
+ .long 1066774581
27
+ .long 1069414683
28
+ .long 1073984175
29
+ .long 1079645762
30
+ .long 1092815430
31
+ .long 1057005197
32
+ .long 1057342072
33
+ .long 1058087743
34
+ .long 1059427869
35
+ .long 1061799040
36
+ .long 1065862217
37
+ .long 1071413542
38
+ .long 1084439708
39
+ .long 1057128951
40
+ .long 1058664893
41
+ .long 1063675095
42
+ .long 1076102863
43
+ .long 1057655764
44
+ .long 1067924853
45
+ .long 1060439283
46
+ ALIGN32
47
+ intwinbase:
48
+ .short 0, -1, -1, -1, -1, -1, -1, -2
49
+ .short -2, -2, -2, -3, -3, -4, -4, -5
50
+ .short -5, -6, -7, -7, -8, -9, -10, -11
51
+ .short -13, -14, -16, -17, -19, -21, -24, -26
52
+ .short -29, -31, -35, -38, -41, -45, -49, -53
53
+ .short -58, -63, -68, -73, -79, -85, -91, -97
54
+ .short -104, -111, -117, -125, -132, -139, -147, -154
55
+ .short -161, -169, -176, -183, -190, -196, -202, -208
56
+ .short -213, -218, -222, -225, -227, -228, -228, -227
57
+ .short -224, -221, -215, -208, -200, -189, -177, -163
58
+ .short -146, -127, -106, -83, -57, -29, 2, 36
59
+ .short 72, 111, 153, 197, 244, 294, 347, 401
60
+ .short 459, 519, 581, 645, 711, 779, 848, 919
61
+ .short 991, 1064, 1137, 1210, 1283, 1356, 1428, 1498
62
+ .short 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962
63
+ .short 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063
64
+ .short 2037, 2000, 1952, 1893, 1822, 1739, 1644, 1535
65
+ .short 1414, 1280, 1131, 970, 794, 605, 402, 185
66
+ .short -45, -288, -545, -814, -1095, -1388, -1692, -2006
67
+ .short -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788
68
+ .short -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597
69
+ .short -7910, -8209, -8491, -8755, -8998, -9219, -9416, -9585
70
+ .short -9727, -9838, -9916, -9959, -9966, -9935, -9863, -9750
71
+ .short -9592, -9389, -9139, -8840, -8492, -8092, -7640, -7134
72
+ .short -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082
73
+ .short -70, 998, 2122, 3300, 4533, 5818, 7154, 8540
74
+ .short 9975, 11455, 12980, 14548, 16155, 17799, 19478, 21189
75
+ .short 22929, 24694, 26482, 28289, 30112, 31947,-26209,-24360
76
+ .short -22511,-20664,-18824,-16994,-15179,-13383,-11610, -9863
77
+ .short -8147, -6466, -4822, -3222, -1667, -162, 1289, 2684
78
+ .short 4019, 5290, 6494, 7629, 8692, 9679, 10590, 11420
79
+ .short 12169, 12835, 13415, 13908, 14313, 14630, 14856, 14992
80
+ .short 15038
81
+
82
+ intwindiv:
83
+ .long 0x47800000 # 65536.0
84
+ .text
85
+ ALIGN32
86
+ /* void make_decode_tables_mmx_asm(long scaleval, float* decwin_mmx, float *decwins); */
87
+ .globl ASM_NAME(make_decode_tables_mmx_asm)
88
+ ASM_NAME(make_decode_tables_mmx_asm):
89
+ pushl %edi
90
+ pushl %esi
91
+ pushl %ebx
92
+ /* stack: 0=ebx, 4=esi, 8=edi, 12=back, 16=scaleval, 20=decwin_mmx, 24=decwins */
93
+
94
+ xorl %ecx,%ecx
95
+ xorl %ebx,%ebx
96
+ movl $32,%esi
97
+ movl $intwinbase,%edi
98
+ negl 16(%esp) /* scaleval */
99
+ pushl $2 /* intwinbase step */
100
+ /* stack: 20=scaleval 24=decwin_mmx, 28=decwins */
101
+ .L00:
102
+ cmpl $528,%ecx
103
+ jnc .L02
104
+ movswl (%edi),%eax
105
+ cmpl $intwinbase+444,%edi
106
+ jc .L01
107
+ addl $60000,%eax
108
+ .L01:
109
+ pushl %eax
110
+ /* stack: 24=scaleval 28=decwin_mmx, 32=decwins */
111
+ fildl (%esp)
112
+ fdivs intwindiv
113
+ fimull 24(%esp) /* scaleval */
114
+ /* eax used to be popped the line before... I'll just use it here a bit */
115
+ movl 28(%esp),%eax /* decwin_mmx */
116
+ fsts (%eax,%ecx,4)
117
+ fstps 64(%eax,%ecx,4)
118
+ popl %eax
119
+ /* stack: 20=scaleval 24=decwin_mmx, 28=decwins */
120
+ .L02:
121
+ leal -1(%esi),%edx
122
+ andl %ebx,%edx
123
+ cmpl $31,%edx
124
+ jnz .L03
125
+ addl $-1023,%ecx
126
+ testl %esi,%ebx
127
+ jz .L03
128
+ negl 20(%esp)
129
+ .L03:
130
+ addl %esi,%ecx
131
+ addl (%esp),%edi
132
+ incl %ebx
133
+ cmpl $intwinbase,%edi
134
+ jz .L04
135
+ cmpl $256,%ebx
136
+ jnz .L00
137
+ negl (%esp)
138
+ jmp .L00
139
+ .L04:
140
+ popl %eax
141
+
142
+ xorl %ecx,%ecx
143
+ xorl %ebx,%ebx
144
+ pushl $2 /* paired with popl above */
145
+ .L05:
146
+ cmpl $528,%ecx
147
+ jnc .L11
148
+ movswl (%edi),%eax
149
+ cmpl $intwinbase+444,%edi
150
+ jc .L06
151
+ addl $60000,%eax
152
+ .L06:
153
+ cltd
154
+ imull 20(%esp)
155
+ shrdl $17,%edx,%eax
156
+ cmpl $32767,%eax
157
+ movl $1055,%edx
158
+ jle .L07
159
+ movl $32767,%eax
160
+ jmp .L08
161
+ .L07:
162
+ cmpl $-32767,%eax
163
+ jge .L08
164
+ movl $-32767,%eax
165
+ .L08:
166
+ /* going to use ebx for decwins, watch the jumps */
167
+ pushl %ebx
168
+ /* stack: 24=scaleval 28=decwin_mmx, 32=decwins */
169
+ movl 32(%esp),%ebx
170
+ cmpl $512,%ecx
171
+ jnc .L09
172
+ subl %ecx,%edx
173
+ movw %ax,(%ebx,%edx,2) /* decwins */
174
+ movw %ax,-32(%ebx,%edx,2)
175
+ .L09:
176
+ testl $1,%ecx
177
+ jnz .L10
178
+ negl %eax
179
+ .L10:
180
+ movw %ax,(%ebx,%ecx,2)
181
+ movw %ax,32(%ebx,%ecx,2)
182
+ popl %ebx /* that has to match the pushl before */
183
+ .L11:
184
+ leal -1(%esi),%edx
185
+ andl %ebx,%edx
186
+ cmpl $31,%edx
187
+ jnz .L12
188
+ addl $-1023,%ecx
189
+ testl %esi,%ebx
190
+ jz .L12
191
+ negl 20(%esp)
192
+ .L12:
193
+ addl %esi,%ecx
194
+ addl (%esp),%edi
195
+ incl %ebx
196
+ cmpl $intwinbase,%edi
197
+ jz .L13
198
+ cmpl $256,%ebx
199
+ jnz .L05
200
+ negl (%esp)
201
+ jmp .L05
202
+ .L13:
203
+ popl %eax
204
+
205
+ popl %ebx
206
+ popl %esi
207
+ popl %edi
208
+ ret
209
+
210
+ NONEXEC_STACK