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,306 @@
1
+ /*
2
+ synth_sse_s32: SSE optimized synth (s32 output version)
3
+
4
+ copyright 1995-2009 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Taihei Monma
7
+ */
8
+
9
+ #include "mangle.h"
10
+
11
+ /* real *window; */
12
+ #define WINDOW %ebx
13
+ /* real *b0; */
14
+ #define B0 %edx
15
+ /* real *samples; */
16
+ #define SAMPLES %esi
17
+
18
+ #define MMREG_CLIP %mm7
19
+
20
+ /*
21
+ int synth_1to1_s32_sse_asm(real *window, real *b0, int32_t *samples, int bo1);
22
+ return value: number of clipped samples
23
+ */
24
+
25
+ #ifndef __APPLE__
26
+ .section .rodata
27
+ #else
28
+ .data
29
+ #endif
30
+ ALIGN32
31
+ ASM_NAME(scale_s32):
32
+ .long 1199570944 /* 65536.0 */
33
+ .long 1199570944
34
+ .long 1199570944
35
+ .long 1199570944
36
+ ALIGN16
37
+ ASM_NAME(maxmin_s32):
38
+ .long 1191182335 /* 32767.999 */
39
+ .long 1191182335
40
+ .long 1191182335
41
+ .long 1191182335
42
+ .long -956301312 /* -32768.0 */
43
+ .long -956301312
44
+ .long -956301312
45
+ .long -956301312
46
+ .text
47
+ ALIGN16
48
+ .globl ASM_NAME(synth_1to1_s32_sse_asm)
49
+ ASM_NAME(synth_1to1_s32_sse_asm):
50
+ pushl %ebp
51
+ movl %esp, %ebp
52
+ pushl %ebx
53
+ pushl %esi
54
+
55
+ pxor MMREG_CLIP, MMREG_CLIP
56
+
57
+ movl 8(%ebp), WINDOW
58
+ movl 12(%ebp), B0
59
+ movl 16(%ebp), SAMPLES
60
+ movl 20(%ebp), %eax
61
+ shll $2, %eax
62
+
63
+ leal 64(WINDOW), WINDOW
64
+ subl %eax, WINDOW
65
+
66
+ movl $4, %ecx
67
+
68
+ ALIGN16
69
+ Loop_start_1:
70
+ movups (WINDOW), %xmm0
71
+ movups 16(WINDOW), %xmm1
72
+ movups 32(WINDOW), %xmm2
73
+ movups 48(WINDOW), %xmm3
74
+ movups 128(WINDOW), %xmm4
75
+ movups 144(WINDOW), %xmm5
76
+ movups 160(WINDOW), %xmm6
77
+ movups 176(WINDOW), %xmm7
78
+ mulps 0(B0), %xmm0
79
+ mulps 16(B0), %xmm1
80
+ mulps 32(B0), %xmm2
81
+ mulps 48(B0), %xmm3
82
+ mulps 64(B0), %xmm4
83
+ mulps 80(B0), %xmm5
84
+ mulps 96(B0), %xmm6
85
+ mulps 112(B0), %xmm7
86
+ addps %xmm1, %xmm0
87
+ addps %xmm3, %xmm2
88
+ addps %xmm5, %xmm4
89
+ addps %xmm7, %xmm6
90
+ addps %xmm2, %xmm0
91
+ addps %xmm6, %xmm4
92
+ movaps %xmm4, %xmm5
93
+ movaps %xmm0, %xmm4
94
+
95
+ leal 256(WINDOW), WINDOW
96
+ leal 128(B0), B0
97
+
98
+ movups (WINDOW), %xmm0
99
+ movups 16(WINDOW), %xmm1
100
+ movups 32(WINDOW), %xmm2
101
+ movups 48(WINDOW), %xmm3
102
+ movups 128(WINDOW), %xmm6
103
+ movups 144(WINDOW), %xmm7
104
+ mulps (B0), %xmm0
105
+ mulps 16(B0), %xmm1
106
+ mulps 32(B0), %xmm2
107
+ mulps 48(B0), %xmm3
108
+ mulps 64(B0), %xmm6
109
+ mulps 80(B0), %xmm7
110
+ addps %xmm1, %xmm0
111
+ addps %xmm3, %xmm2
112
+ addps %xmm7, %xmm6
113
+ movups 160(WINDOW), %xmm1
114
+ movups 176(WINDOW), %xmm3
115
+ mulps 96(B0), %xmm1
116
+ mulps 112(B0), %xmm3
117
+ addps %xmm2, %xmm0
118
+ addps %xmm3, %xmm1
119
+ addps %xmm1, %xmm6
120
+ movaps %xmm6, %xmm7
121
+ movaps %xmm0, %xmm6
122
+
123
+ leal 256(WINDOW), WINDOW
124
+ leal 128(B0), B0
125
+
126
+ movaps %xmm4, %xmm0
127
+ movaps %xmm6, %xmm1
128
+ unpcklps %xmm5, %xmm4
129
+ unpcklps %xmm7, %xmm6
130
+ unpckhps %xmm5, %xmm0
131
+ unpckhps %xmm7, %xmm1
132
+ movaps %xmm4, %xmm2
133
+ movaps %xmm0, %xmm3
134
+ movlhps %xmm6, %xmm4
135
+ movhlps %xmm2, %xmm6
136
+ movlhps %xmm1, %xmm0
137
+ movhlps %xmm3, %xmm1
138
+ subps %xmm6, %xmm4
139
+ subps %xmm1, %xmm0
140
+ addps %xmm4, %xmm0
141
+
142
+ movaps %xmm0, %xmm1
143
+ movaps %xmm0, %xmm2
144
+ mulps ASM_NAME(scale_s32), %xmm0
145
+ cmpnleps ASM_NAME(maxmin_s32), %xmm1
146
+ cmpltps ASM_NAME(maxmin_s32)+16, %xmm2
147
+ cvtps2pi %xmm0, %mm0
148
+ movhlps %xmm0, %xmm0
149
+ cvtps2pi %xmm0, %mm1
150
+ cvtps2pi %xmm1, %mm2
151
+ movhlps %xmm1, %xmm1
152
+ cvtps2pi %xmm1, %mm3
153
+ psrad $31, %mm2
154
+ psrad $31, %mm3
155
+ pxor %mm2, %mm0
156
+ pxor %mm3, %mm1
157
+ movd %mm0, (SAMPLES)
158
+ psrlq $32, %mm0
159
+ movd %mm0, 8(SAMPLES)
160
+ movd %mm1, 16(SAMPLES)
161
+ psrlq $32, %mm1
162
+ movd %mm1, 24(SAMPLES)
163
+
164
+ cvtps2pi %xmm2, %mm0
165
+ movhlps %xmm2, %xmm2
166
+ cvtps2pi %xmm2, %mm1
167
+ packssdw %mm3, %mm2
168
+ packssdw %mm1, %mm0
169
+ psrlw $15, %mm2
170
+ psrlw $15, %mm0
171
+ paddw %mm2, %mm0
172
+ paddw %mm0, MMREG_CLIP
173
+
174
+ leal 32(SAMPLES), SAMPLES
175
+ decl %ecx
176
+ jnz Loop_start_1
177
+
178
+ movl $4, %ecx
179
+
180
+ ALIGN16
181
+ Loop_start_2:
182
+ movups (WINDOW), %xmm0
183
+ movups 16(WINDOW), %xmm1
184
+ movups 32(WINDOW), %xmm2
185
+ movups 48(WINDOW), %xmm3
186
+ movups 128(WINDOW), %xmm4
187
+ movups 144(WINDOW), %xmm5
188
+ movups 160(WINDOW), %xmm6
189
+ movups 176(WINDOW), %xmm7
190
+ mulps 0(B0), %xmm0
191
+ mulps 16(B0), %xmm1
192
+ mulps 32(B0), %xmm2
193
+ mulps 48(B0), %xmm3
194
+ mulps -64(B0), %xmm4
195
+ mulps -48(B0), %xmm5
196
+ mulps -32(B0), %xmm6
197
+ mulps -16(B0), %xmm7
198
+ addps %xmm1, %xmm0
199
+ addps %xmm3, %xmm2
200
+ addps %xmm5, %xmm4
201
+ addps %xmm7, %xmm6
202
+ addps %xmm2, %xmm0
203
+ addps %xmm6, %xmm4
204
+ movaps %xmm4, %xmm5
205
+ movaps %xmm0, %xmm4
206
+
207
+ leal 256(WINDOW), WINDOW
208
+ leal -128(B0), B0
209
+
210
+ movups (WINDOW), %xmm0
211
+ movups 16(WINDOW), %xmm1
212
+ movups 32(WINDOW), %xmm2
213
+ movups 48(WINDOW), %xmm3
214
+ movups 128(WINDOW), %xmm6
215
+ movups 144(WINDOW), %xmm7
216
+ mulps (B0), %xmm0
217
+ mulps 16(B0), %xmm1
218
+ mulps 32(B0), %xmm2
219
+ mulps 48(B0), %xmm3
220
+ mulps -64(B0), %xmm6
221
+ mulps -48(B0), %xmm7
222
+ addps %xmm1, %xmm0
223
+ addps %xmm3, %xmm2
224
+ addps %xmm7, %xmm6
225
+ movups 160(WINDOW), %xmm1
226
+ movups 176(WINDOW), %xmm3
227
+ mulps -32(B0), %xmm1
228
+ mulps -16(B0), %xmm3
229
+ addps %xmm2, %xmm0
230
+ addps %xmm3, %xmm1
231
+ addps %xmm1, %xmm6
232
+ movaps %xmm6, %xmm7
233
+ movaps %xmm0, %xmm6
234
+
235
+ leal 256(WINDOW), WINDOW
236
+ leal -128(B0), B0
237
+
238
+ movaps %xmm4, %xmm0
239
+ movaps %xmm6, %xmm1
240
+ unpcklps %xmm5, %xmm4
241
+ unpcklps %xmm7, %xmm6
242
+ unpckhps %xmm5, %xmm0
243
+ unpckhps %xmm7, %xmm1
244
+ movaps %xmm4, %xmm2
245
+ movaps %xmm0, %xmm3
246
+ movlhps %xmm6, %xmm4
247
+ movhlps %xmm2, %xmm6
248
+ movlhps %xmm1, %xmm0
249
+ movhlps %xmm3, %xmm1
250
+ addps %xmm6, %xmm4
251
+ addps %xmm1, %xmm0
252
+ addps %xmm4, %xmm0
253
+
254
+ movaps %xmm0, %xmm1
255
+ movaps %xmm0, %xmm2
256
+ mulps ASM_NAME(scale_s32), %xmm0
257
+ cmpnleps ASM_NAME(maxmin_s32), %xmm1
258
+ cmpltps ASM_NAME(maxmin_s32)+16, %xmm2
259
+ cvtps2pi %xmm0, %mm0
260
+ movhlps %xmm0, %xmm0
261
+ cvtps2pi %xmm0, %mm1
262
+ cvtps2pi %xmm1, %mm2
263
+ movhlps %xmm1, %xmm1
264
+ cvtps2pi %xmm1, %mm3
265
+ psrad $31, %mm2
266
+ psrad $31, %mm3
267
+ pxor %mm2, %mm0
268
+ pxor %mm3, %mm1
269
+ movd %mm0, (SAMPLES)
270
+ psrlq $32, %mm0
271
+ movd %mm0, 8(SAMPLES)
272
+ movd %mm1, 16(SAMPLES)
273
+ psrlq $32, %mm1
274
+ movd %mm1, 24(SAMPLES)
275
+
276
+ cvtps2pi %xmm2, %mm0
277
+ movhlps %xmm2, %xmm2
278
+ cvtps2pi %xmm2, %mm1
279
+ packssdw %mm3, %mm2
280
+ packssdw %mm1, %mm0
281
+ psrlw $15, %mm2
282
+ psrlw $15, %mm0
283
+ paddw %mm2, %mm0
284
+ paddw %mm0, MMREG_CLIP
285
+
286
+ leal 32(SAMPLES), SAMPLES
287
+ decl %ecx
288
+ jnz Loop_start_2
289
+
290
+ pshufw $0xee, MMREG_CLIP, %mm0
291
+ paddw MMREG_CLIP, %mm0
292
+ pshufw $0x55, %mm0, %mm1
293
+ paddw %mm1, %mm0
294
+ movd %mm0, %eax
295
+ andl $0xffff, %eax
296
+
297
+ popl %esi
298
+ popl %ebx
299
+ movl %ebp, %esp
300
+ popl %ebp
301
+
302
+ emms
303
+
304
+ ret
305
+
306
+ NONEXEC_STACK
@@ -0,0 +1,175 @@
1
+ /*
2
+ synth_stereo_neon: ARM NEON optimized synth (stereo specific version)
3
+
4
+ copyright 1995-2010 by the mpg123 project - free software under the terms of the LGPL 2.1
5
+ see COPYING and AUTHORS files in distribution or http://mpg123.org
6
+ initially written by Taihei Monma
7
+ */
8
+
9
+ #include "mangle.h"
10
+
11
+ #define WINDOW r0
12
+ #define B0L r1
13
+ #define B0R r2
14
+ #define SAMPLES r3
15
+
16
+ /*
17
+ int synth_1to1_s_neon_asm(short *window, short *b0l, short *b0r, short *samples, int bo1);
18
+ return value: number of clipped samples
19
+ */
20
+
21
+ .text
22
+ .globl ASM_NAME(synth_1to1_s_neon_asm)
23
+ ALIGN4
24
+ ASM_NAME(synth_1to1_s_neon_asm):
25
+ push {r4-r6, lr}
26
+ vpush {q4-q7}
27
+
28
+ ldr r4, [sp, #80]
29
+ add WINDOW, WINDOW, #32
30
+ sub WINDOW, WINDOW, r4, lsl #1
31
+
32
+ mov r4, #4
33
+ mov r5, #64
34
+ .Loop_start_1:
35
+ vld1.16 {d0-d3}, [WINDOW], r5
36
+ vld1.16 {d4-d7}, [WINDOW], r5
37
+ vld1.16 {d8-d11}, [B0L, :128]!
38
+ vld1.16 {d12-d15}, [B0R, :128]!
39
+ vld1.16 {d16-d19}, [B0L, :128]!
40
+ vld1.16 {d20-d23}, [B0R, :128]!
41
+
42
+ vmull.s16 q12, d0, d8
43
+ vmull.s16 q13, d0, d12
44
+ vmull.s16 q14, d4, d16
45
+ vmull.s16 q15, d4, d20
46
+ vmlal.s16 q12, d1, d9
47
+ vmlal.s16 q13, d1, d13
48
+ vmlal.s16 q14, d5, d17
49
+ vmlal.s16 q15, d5, d21
50
+ vmlal.s16 q12, d2, d10
51
+ vmlal.s16 q13, d2, d14
52
+ vmlal.s16 q14, d6, d18
53
+ vmlal.s16 q15, d6, d22
54
+ vmlal.s16 q12, d3, d11
55
+ vmlal.s16 q13, d3, d15
56
+ vmlal.s16 q14, d7, d19
57
+ vmlal.s16 q15, d7, d23
58
+ vpadd.i32 d24, d24, d25
59
+ vpadd.i32 d26, d26, d27
60
+ vpadd.i32 d28, d28, d29
61
+ vpadd.i32 d30, d30, d31
62
+ vpadd.i32 d24, d24, d26
63
+ vpadd.i32 d25, d28, d30
64
+ vqshrn.s32 d0, q12, #13
65
+ vst1.16 {d0}, [SAMPLES]!
66
+
67
+ vld1.16 {d0-d3}, [WINDOW], r5
68
+ vld1.16 {d4-d7}, [WINDOW], r5
69
+ vld1.16 {d8-d11}, [B0L, :128]!
70
+ vld1.16 {d12-d15}, [B0R, :128]!
71
+ vld1.16 {d16-d19}, [B0L, :128]!
72
+ vld1.16 {d20-d23}, [B0R, :128]!
73
+
74
+ vmull.s16 q12, d0, d8
75
+ vmull.s16 q13, d0, d12
76
+ vmull.s16 q14, d4, d16
77
+ vmull.s16 q15, d4, d20
78
+ vmlal.s16 q12, d1, d9
79
+ vmlal.s16 q13, d1, d13
80
+ vmlal.s16 q14, d5, d17
81
+ vmlal.s16 q15, d5, d21
82
+ vmlal.s16 q12, d2, d10
83
+ vmlal.s16 q13, d2, d14
84
+ vmlal.s16 q14, d6, d18
85
+ vmlal.s16 q15, d6, d22
86
+ vmlal.s16 q12, d3, d11
87
+ vmlal.s16 q13, d3, d15
88
+ vmlal.s16 q14, d7, d19
89
+ vmlal.s16 q15, d7, d23
90
+ vpadd.i32 d24, d24, d25
91
+ vpadd.i32 d26, d26, d27
92
+ vpadd.i32 d28, d28, d29
93
+ vpadd.i32 d30, d30, d31
94
+ vpadd.i32 d24, d24, d26
95
+ vpadd.i32 d25, d28, d30
96
+ vqshrn.s32 d0, q12, #13
97
+ vst1.16 {d0}, [SAMPLES]!
98
+
99
+ subs r4, r4, #1
100
+ bne .Loop_start_1
101
+
102
+ mov r4, #4
103
+ mov r6, #-32
104
+ .Loop_start_2:
105
+ vld1.16 {d0-d3}, [WINDOW], r5
106
+ vld1.16 {d4-d7}, [WINDOW], r5
107
+ vld1.16 {d8-d11}, [B0L, :128], r6
108
+ vld1.16 {d12-d15}, [B0R, :128], r6
109
+ vld1.16 {d16-d19}, [B0L, :128], r6
110
+ vld1.16 {d20-d23}, [B0R, :128], r6
111
+
112
+ vmull.s16 q12, d0, d8
113
+ vmull.s16 q13, d0, d12
114
+ vmull.s16 q14, d4, d16
115
+ vmull.s16 q15, d4, d20
116
+ vmlal.s16 q12, d1, d9
117
+ vmlal.s16 q13, d1, d13
118
+ vmlal.s16 q14, d5, d17
119
+ vmlal.s16 q15, d5, d21
120
+ vmlal.s16 q12, d2, d10
121
+ vmlal.s16 q13, d2, d14
122
+ vmlal.s16 q14, d6, d18
123
+ vmlal.s16 q15, d6, d22
124
+ vmlal.s16 q12, d3, d11
125
+ vmlal.s16 q13, d3, d15
126
+ vmlal.s16 q14, d7, d19
127
+ vmlal.s16 q15, d7, d23
128
+ vpadd.i32 d24, d24, d25
129
+ vpadd.i32 d26, d26, d27
130
+ vpadd.i32 d28, d28, d29
131
+ vpadd.i32 d30, d30, d31
132
+ vpadd.i32 d24, d24, d26
133
+ vpadd.i32 d25, d28, d30
134
+ vqshrn.s32 d0, q12, #13
135
+ vst1.16 {d0}, [SAMPLES]!
136
+
137
+ vld1.16 {d0-d3}, [WINDOW], r5
138
+ vld1.16 {d4-d7}, [WINDOW], r5
139
+ vld1.16 {d8-d11}, [B0L, :128], r6
140
+ vld1.16 {d12-d15}, [B0R, :128], r6
141
+ vld1.16 {d16-d19}, [B0L, :128], r6
142
+ vld1.16 {d20-d23}, [B0R, :128], r6
143
+
144
+ vmull.s16 q12, d0, d8
145
+ vmull.s16 q13, d0, d12
146
+ vmull.s16 q14, d4, d16
147
+ vmull.s16 q15, d4, d20
148
+ vmlal.s16 q12, d1, d9
149
+ vmlal.s16 q13, d1, d13
150
+ vmlal.s16 q14, d5, d17
151
+ vmlal.s16 q15, d5, d21
152
+ vmlal.s16 q12, d2, d10
153
+ vmlal.s16 q13, d2, d14
154
+ vmlal.s16 q14, d6, d18
155
+ vmlal.s16 q15, d6, d22
156
+ vmlal.s16 q12, d3, d11
157
+ vmlal.s16 q13, d3, d15
158
+ vmlal.s16 q14, d7, d19
159
+ vmlal.s16 q15, d7, d23
160
+ vpadd.i32 d24, d24, d25
161
+ vpadd.i32 d26, d26, d27
162
+ vpadd.i32 d28, d28, d29
163
+ vpadd.i32 d30, d30, d31
164
+ vpadd.i32 d24, d24, d26
165
+ vpadd.i32 d25, d28, d30
166
+ vqshrn.s32 d0, q12, #13
167
+ vst1.16 {d0}, [SAMPLES]!
168
+
169
+ subs r4, r4, #1
170
+ bne .Loop_start_2
171
+
172
+ mov r0, #0
173
+
174
+ vpop {q4-q7}
175
+ pop {r4-r6, pc}