seal 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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,1255 @@
1
+ /********************************************************************
2
+ * *
3
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
4
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
5
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
7
+ * *
8
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
9
+ * by the Xiph.Org Foundation http://www.xiph.org/ *
10
+ * *
11
+ ********************************************************************
12
+
13
+ function: *unnormalized* fft transform
14
+ last mod: $Id: smallft.c 16227 2009-07-08 06:58:46Z xiphmont $
15
+
16
+ ********************************************************************/
17
+
18
+ /* FFT implementation from OggSquish, minus cosine transforms,
19
+ * minus all but radix 2/4 case. In Vorbis we only need this
20
+ * cut-down version.
21
+ *
22
+ * To do more than just power-of-two sized vectors, see the full
23
+ * version I wrote for NetLib.
24
+ *
25
+ * Note that the packing is a little strange; rather than the FFT r/i
26
+ * packing following R_0, I_n, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1,
27
+ * it follows R_0, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, I_n like the
28
+ * FORTRAN version
29
+ */
30
+
31
+ #include <stdlib.h>
32
+ #include <string.h>
33
+ #include <math.h>
34
+ #include "smallft.h"
35
+ #include "os.h"
36
+ #include "misc.h"
37
+
38
+ static void drfti1(int n, float *wa, int *ifac){
39
+ static int ntryh[4] = { 4,2,3,5 };
40
+ static float tpi = 6.28318530717958648f;
41
+ float arg,argh,argld,fi;
42
+ int ntry=0,i,j=-1;
43
+ int k1, l1, l2, ib;
44
+ int ld, ii, ip, is, nq, nr;
45
+ int ido, ipm, nfm1;
46
+ int nl=n;
47
+ int nf=0;
48
+
49
+ L101:
50
+ j++;
51
+ if (j < 4)
52
+ ntry=ntryh[j];
53
+ else
54
+ ntry+=2;
55
+
56
+ L104:
57
+ nq=nl/ntry;
58
+ nr=nl-ntry*nq;
59
+ if (nr!=0) goto L101;
60
+
61
+ nf++;
62
+ ifac[nf+1]=ntry;
63
+ nl=nq;
64
+ if(ntry!=2)goto L107;
65
+ if(nf==1)goto L107;
66
+
67
+ for (i=1;i<nf;i++){
68
+ ib=nf-i+1;
69
+ ifac[ib+1]=ifac[ib];
70
+ }
71
+ ifac[2] = 2;
72
+
73
+ L107:
74
+ if(nl!=1)goto L104;
75
+ ifac[0]=n;
76
+ ifac[1]=nf;
77
+ argh=tpi/n;
78
+ is=0;
79
+ nfm1=nf-1;
80
+ l1=1;
81
+
82
+ if(nfm1==0)return;
83
+
84
+ for (k1=0;k1<nfm1;k1++){
85
+ ip=ifac[k1+2];
86
+ ld=0;
87
+ l2=l1*ip;
88
+ ido=n/l2;
89
+ ipm=ip-1;
90
+
91
+ for (j=0;j<ipm;j++){
92
+ ld+=l1;
93
+ i=is;
94
+ argld=(float)ld*argh;
95
+ fi=0.f;
96
+ for (ii=2;ii<ido;ii+=2){
97
+ fi+=1.f;
98
+ arg=fi*argld;
99
+ wa[i++]=cos(arg);
100
+ wa[i++]=sin(arg);
101
+ }
102
+ is+=ido;
103
+ }
104
+ l1=l2;
105
+ }
106
+ }
107
+
108
+ static void fdrffti(int n, float *wsave, int *ifac){
109
+
110
+ if (n == 1) return;
111
+ drfti1(n, wsave+n, ifac);
112
+ }
113
+
114
+ static void dradf2(int ido,int l1,float *cc,float *ch,float *wa1){
115
+ int i,k;
116
+ float ti2,tr2;
117
+ int t0,t1,t2,t3,t4,t5,t6;
118
+
119
+ t1=0;
120
+ t0=(t2=l1*ido);
121
+ t3=ido<<1;
122
+ for(k=0;k<l1;k++){
123
+ ch[t1<<1]=cc[t1]+cc[t2];
124
+ ch[(t1<<1)+t3-1]=cc[t1]-cc[t2];
125
+ t1+=ido;
126
+ t2+=ido;
127
+ }
128
+
129
+ if(ido<2)return;
130
+ if(ido==2)goto L105;
131
+
132
+ t1=0;
133
+ t2=t0;
134
+ for(k=0;k<l1;k++){
135
+ t3=t2;
136
+ t4=(t1<<1)+(ido<<1);
137
+ t5=t1;
138
+ t6=t1+t1;
139
+ for(i=2;i<ido;i+=2){
140
+ t3+=2;
141
+ t4-=2;
142
+ t5+=2;
143
+ t6+=2;
144
+ tr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
145
+ ti2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
146
+ ch[t6]=cc[t5]+ti2;
147
+ ch[t4]=ti2-cc[t5];
148
+ ch[t6-1]=cc[t5-1]+tr2;
149
+ ch[t4-1]=cc[t5-1]-tr2;
150
+ }
151
+ t1+=ido;
152
+ t2+=ido;
153
+ }
154
+
155
+ if(ido%2==1)return;
156
+
157
+ L105:
158
+ t3=(t2=(t1=ido)-1);
159
+ t2+=t0;
160
+ for(k=0;k<l1;k++){
161
+ ch[t1]=-cc[t2];
162
+ ch[t1-1]=cc[t3];
163
+ t1+=ido<<1;
164
+ t2+=ido;
165
+ t3+=ido;
166
+ }
167
+ }
168
+
169
+ static void dradf4(int ido,int l1,float *cc,float *ch,float *wa1,
170
+ float *wa2,float *wa3){
171
+ static float hsqt2 = .70710678118654752f;
172
+ int i,k,t0,t1,t2,t3,t4,t5,t6;
173
+ float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
174
+ t0=l1*ido;
175
+
176
+ t1=t0;
177
+ t4=t1<<1;
178
+ t2=t1+(t1<<1);
179
+ t3=0;
180
+
181
+ for(k=0;k<l1;k++){
182
+ tr1=cc[t1]+cc[t2];
183
+ tr2=cc[t3]+cc[t4];
184
+
185
+ ch[t5=t3<<2]=tr1+tr2;
186
+ ch[(ido<<2)+t5-1]=tr2-tr1;
187
+ ch[(t5+=(ido<<1))-1]=cc[t3]-cc[t4];
188
+ ch[t5]=cc[t2]-cc[t1];
189
+
190
+ t1+=ido;
191
+ t2+=ido;
192
+ t3+=ido;
193
+ t4+=ido;
194
+ }
195
+
196
+ if(ido<2)return;
197
+ if(ido==2)goto L105;
198
+
199
+
200
+ t1=0;
201
+ for(k=0;k<l1;k++){
202
+ t2=t1;
203
+ t4=t1<<2;
204
+ t5=(t6=ido<<1)+t4;
205
+ for(i=2;i<ido;i+=2){
206
+ t3=(t2+=2);
207
+ t4+=2;
208
+ t5-=2;
209
+
210
+ t3+=t0;
211
+ cr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
212
+ ci2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
213
+ t3+=t0;
214
+ cr3=wa2[i-2]*cc[t3-1]+wa2[i-1]*cc[t3];
215
+ ci3=wa2[i-2]*cc[t3]-wa2[i-1]*cc[t3-1];
216
+ t3+=t0;
217
+ cr4=wa3[i-2]*cc[t3-1]+wa3[i-1]*cc[t3];
218
+ ci4=wa3[i-2]*cc[t3]-wa3[i-1]*cc[t3-1];
219
+
220
+ tr1=cr2+cr4;
221
+ tr4=cr4-cr2;
222
+ ti1=ci2+ci4;
223
+ ti4=ci2-ci4;
224
+
225
+ ti2=cc[t2]+ci3;
226
+ ti3=cc[t2]-ci3;
227
+ tr2=cc[t2-1]+cr3;
228
+ tr3=cc[t2-1]-cr3;
229
+
230
+ ch[t4-1]=tr1+tr2;
231
+ ch[t4]=ti1+ti2;
232
+
233
+ ch[t5-1]=tr3-ti4;
234
+ ch[t5]=tr4-ti3;
235
+
236
+ ch[t4+t6-1]=ti4+tr3;
237
+ ch[t4+t6]=tr4+ti3;
238
+
239
+ ch[t5+t6-1]=tr2-tr1;
240
+ ch[t5+t6]=ti1-ti2;
241
+ }
242
+ t1+=ido;
243
+ }
244
+ if(ido&1)return;
245
+
246
+ L105:
247
+
248
+ t2=(t1=t0+ido-1)+(t0<<1);
249
+ t3=ido<<2;
250
+ t4=ido;
251
+ t5=ido<<1;
252
+ t6=ido;
253
+
254
+ for(k=0;k<l1;k++){
255
+ ti1=-hsqt2*(cc[t1]+cc[t2]);
256
+ tr1=hsqt2*(cc[t1]-cc[t2]);
257
+
258
+ ch[t4-1]=tr1+cc[t6-1];
259
+ ch[t4+t5-1]=cc[t6-1]-tr1;
260
+
261
+ ch[t4]=ti1-cc[t1+t0];
262
+ ch[t4+t5]=ti1+cc[t1+t0];
263
+
264
+ t1+=ido;
265
+ t2+=ido;
266
+ t4+=t3;
267
+ t6+=ido;
268
+ }
269
+ }
270
+
271
+ static void dradfg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
272
+ float *c2,float *ch,float *ch2,float *wa){
273
+
274
+ static float tpi=6.283185307179586f;
275
+ int idij,ipph,i,j,k,l,ic,ik,is;
276
+ int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
277
+ float dc2,ai1,ai2,ar1,ar2,ds2;
278
+ int nbd;
279
+ float dcp,arg,dsp,ar1h,ar2h;
280
+ int idp2,ipp2;
281
+
282
+ arg=tpi/(float)ip;
283
+ dcp=cos(arg);
284
+ dsp=sin(arg);
285
+ ipph=(ip+1)>>1;
286
+ ipp2=ip;
287
+ idp2=ido;
288
+ nbd=(ido-1)>>1;
289
+ t0=l1*ido;
290
+ t10=ip*ido;
291
+
292
+ if(ido==1)goto L119;
293
+ for(ik=0;ik<idl1;ik++)ch2[ik]=c2[ik];
294
+
295
+ t1=0;
296
+ for(j=1;j<ip;j++){
297
+ t1+=t0;
298
+ t2=t1;
299
+ for(k=0;k<l1;k++){
300
+ ch[t2]=c1[t2];
301
+ t2+=ido;
302
+ }
303
+ }
304
+
305
+ is=-ido;
306
+ t1=0;
307
+ if(nbd>l1){
308
+ for(j=1;j<ip;j++){
309
+ t1+=t0;
310
+ is+=ido;
311
+ t2= -ido+t1;
312
+ for(k=0;k<l1;k++){
313
+ idij=is-1;
314
+ t2+=ido;
315
+ t3=t2;
316
+ for(i=2;i<ido;i+=2){
317
+ idij+=2;
318
+ t3+=2;
319
+ ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
320
+ ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
321
+ }
322
+ }
323
+ }
324
+ }else{
325
+
326
+ for(j=1;j<ip;j++){
327
+ is+=ido;
328
+ idij=is-1;
329
+ t1+=t0;
330
+ t2=t1;
331
+ for(i=2;i<ido;i+=2){
332
+ idij+=2;
333
+ t2+=2;
334
+ t3=t2;
335
+ for(k=0;k<l1;k++){
336
+ ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
337
+ ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
338
+ t3+=ido;
339
+ }
340
+ }
341
+ }
342
+ }
343
+
344
+ t1=0;
345
+ t2=ipp2*t0;
346
+ if(nbd<l1){
347
+ for(j=1;j<ipph;j++){
348
+ t1+=t0;
349
+ t2-=t0;
350
+ t3=t1;
351
+ t4=t2;
352
+ for(i=2;i<ido;i+=2){
353
+ t3+=2;
354
+ t4+=2;
355
+ t5=t3-ido;
356
+ t6=t4-ido;
357
+ for(k=0;k<l1;k++){
358
+ t5+=ido;
359
+ t6+=ido;
360
+ c1[t5-1]=ch[t5-1]+ch[t6-1];
361
+ c1[t6-1]=ch[t5]-ch[t6];
362
+ c1[t5]=ch[t5]+ch[t6];
363
+ c1[t6]=ch[t6-1]-ch[t5-1];
364
+ }
365
+ }
366
+ }
367
+ }else{
368
+ for(j=1;j<ipph;j++){
369
+ t1+=t0;
370
+ t2-=t0;
371
+ t3=t1;
372
+ t4=t2;
373
+ for(k=0;k<l1;k++){
374
+ t5=t3;
375
+ t6=t4;
376
+ for(i=2;i<ido;i+=2){
377
+ t5+=2;
378
+ t6+=2;
379
+ c1[t5-1]=ch[t5-1]+ch[t6-1];
380
+ c1[t6-1]=ch[t5]-ch[t6];
381
+ c1[t5]=ch[t5]+ch[t6];
382
+ c1[t6]=ch[t6-1]-ch[t5-1];
383
+ }
384
+ t3+=ido;
385
+ t4+=ido;
386
+ }
387
+ }
388
+ }
389
+
390
+ L119:
391
+ for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
392
+
393
+ t1=0;
394
+ t2=ipp2*idl1;
395
+ for(j=1;j<ipph;j++){
396
+ t1+=t0;
397
+ t2-=t0;
398
+ t3=t1-ido;
399
+ t4=t2-ido;
400
+ for(k=0;k<l1;k++){
401
+ t3+=ido;
402
+ t4+=ido;
403
+ c1[t3]=ch[t3]+ch[t4];
404
+ c1[t4]=ch[t4]-ch[t3];
405
+ }
406
+ }
407
+
408
+ ar1=1.f;
409
+ ai1=0.f;
410
+ t1=0;
411
+ t2=ipp2*idl1;
412
+ t3=(ip-1)*idl1;
413
+ for(l=1;l<ipph;l++){
414
+ t1+=idl1;
415
+ t2-=idl1;
416
+ ar1h=dcp*ar1-dsp*ai1;
417
+ ai1=dcp*ai1+dsp*ar1;
418
+ ar1=ar1h;
419
+ t4=t1;
420
+ t5=t2;
421
+ t6=t3;
422
+ t7=idl1;
423
+
424
+ for(ik=0;ik<idl1;ik++){
425
+ ch2[t4++]=c2[ik]+ar1*c2[t7++];
426
+ ch2[t5++]=ai1*c2[t6++];
427
+ }
428
+
429
+ dc2=ar1;
430
+ ds2=ai1;
431
+ ar2=ar1;
432
+ ai2=ai1;
433
+
434
+ t4=idl1;
435
+ t5=(ipp2-1)*idl1;
436
+ for(j=2;j<ipph;j++){
437
+ t4+=idl1;
438
+ t5-=idl1;
439
+
440
+ ar2h=dc2*ar2-ds2*ai2;
441
+ ai2=dc2*ai2+ds2*ar2;
442
+ ar2=ar2h;
443
+
444
+ t6=t1;
445
+ t7=t2;
446
+ t8=t4;
447
+ t9=t5;
448
+ for(ik=0;ik<idl1;ik++){
449
+ ch2[t6++]+=ar2*c2[t8++];
450
+ ch2[t7++]+=ai2*c2[t9++];
451
+ }
452
+ }
453
+ }
454
+
455
+ t1=0;
456
+ for(j=1;j<ipph;j++){
457
+ t1+=idl1;
458
+ t2=t1;
459
+ for(ik=0;ik<idl1;ik++)ch2[ik]+=c2[t2++];
460
+ }
461
+
462
+ if(ido<l1)goto L132;
463
+
464
+ t1=0;
465
+ t2=0;
466
+ for(k=0;k<l1;k++){
467
+ t3=t1;
468
+ t4=t2;
469
+ for(i=0;i<ido;i++)cc[t4++]=ch[t3++];
470
+ t1+=ido;
471
+ t2+=t10;
472
+ }
473
+
474
+ goto L135;
475
+
476
+ L132:
477
+ for(i=0;i<ido;i++){
478
+ t1=i;
479
+ t2=i;
480
+ for(k=0;k<l1;k++){
481
+ cc[t2]=ch[t1];
482
+ t1+=ido;
483
+ t2+=t10;
484
+ }
485
+ }
486
+
487
+ L135:
488
+ t1=0;
489
+ t2=ido<<1;
490
+ t3=0;
491
+ t4=ipp2*t0;
492
+ for(j=1;j<ipph;j++){
493
+
494
+ t1+=t2;
495
+ t3+=t0;
496
+ t4-=t0;
497
+
498
+ t5=t1;
499
+ t6=t3;
500
+ t7=t4;
501
+
502
+ for(k=0;k<l1;k++){
503
+ cc[t5-1]=ch[t6];
504
+ cc[t5]=ch[t7];
505
+ t5+=t10;
506
+ t6+=ido;
507
+ t7+=ido;
508
+ }
509
+ }
510
+
511
+ if(ido==1)return;
512
+ if(nbd<l1)goto L141;
513
+
514
+ t1=-ido;
515
+ t3=0;
516
+ t4=0;
517
+ t5=ipp2*t0;
518
+ for(j=1;j<ipph;j++){
519
+ t1+=t2;
520
+ t3+=t2;
521
+ t4+=t0;
522
+ t5-=t0;
523
+ t6=t1;
524
+ t7=t3;
525
+ t8=t4;
526
+ t9=t5;
527
+ for(k=0;k<l1;k++){
528
+ for(i=2;i<ido;i+=2){
529
+ ic=idp2-i;
530
+ cc[i+t7-1]=ch[i+t8-1]+ch[i+t9-1];
531
+ cc[ic+t6-1]=ch[i+t8-1]-ch[i+t9-1];
532
+ cc[i+t7]=ch[i+t8]+ch[i+t9];
533
+ cc[ic+t6]=ch[i+t9]-ch[i+t8];
534
+ }
535
+ t6+=t10;
536
+ t7+=t10;
537
+ t8+=ido;
538
+ t9+=ido;
539
+ }
540
+ }
541
+ return;
542
+
543
+ L141:
544
+
545
+ t1=-ido;
546
+ t3=0;
547
+ t4=0;
548
+ t5=ipp2*t0;
549
+ for(j=1;j<ipph;j++){
550
+ t1+=t2;
551
+ t3+=t2;
552
+ t4+=t0;
553
+ t5-=t0;
554
+ for(i=2;i<ido;i+=2){
555
+ t6=idp2+t1-i;
556
+ t7=i+t3;
557
+ t8=i+t4;
558
+ t9=i+t5;
559
+ for(k=0;k<l1;k++){
560
+ cc[t7-1]=ch[t8-1]+ch[t9-1];
561
+ cc[t6-1]=ch[t8-1]-ch[t9-1];
562
+ cc[t7]=ch[t8]+ch[t9];
563
+ cc[t6]=ch[t9]-ch[t8];
564
+ t6+=t10;
565
+ t7+=t10;
566
+ t8+=ido;
567
+ t9+=ido;
568
+ }
569
+ }
570
+ }
571
+ }
572
+
573
+ static void drftf1(int n,float *c,float *ch,float *wa,int *ifac){
574
+ int i,k1,l1,l2;
575
+ int na,kh,nf;
576
+ int ip,iw,ido,idl1,ix2,ix3;
577
+
578
+ nf=ifac[1];
579
+ na=1;
580
+ l2=n;
581
+ iw=n;
582
+
583
+ for(k1=0;k1<nf;k1++){
584
+ kh=nf-k1;
585
+ ip=ifac[kh+1];
586
+ l1=l2/ip;
587
+ ido=n/l2;
588
+ idl1=ido*l1;
589
+ iw-=(ip-1)*ido;
590
+ na=1-na;
591
+
592
+ if(ip!=4)goto L102;
593
+
594
+ ix2=iw+ido;
595
+ ix3=ix2+ido;
596
+ if(na!=0)
597
+ dradf4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
598
+ else
599
+ dradf4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
600
+ goto L110;
601
+
602
+ L102:
603
+ if(ip!=2)goto L104;
604
+ if(na!=0)goto L103;
605
+
606
+ dradf2(ido,l1,c,ch,wa+iw-1);
607
+ goto L110;
608
+
609
+ L103:
610
+ dradf2(ido,l1,ch,c,wa+iw-1);
611
+ goto L110;
612
+
613
+ L104:
614
+ if(ido==1)na=1-na;
615
+ if(na!=0)goto L109;
616
+
617
+ dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
618
+ na=1;
619
+ goto L110;
620
+
621
+ L109:
622
+ dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
623
+ na=0;
624
+
625
+ L110:
626
+ l2=l1;
627
+ }
628
+
629
+ if(na==1)return;
630
+
631
+ for(i=0;i<n;i++)c[i]=ch[i];
632
+ }
633
+
634
+ static void dradb2(int ido,int l1,float *cc,float *ch,float *wa1){
635
+ int i,k,t0,t1,t2,t3,t4,t5,t6;
636
+ float ti2,tr2;
637
+
638
+ t0=l1*ido;
639
+
640
+ t1=0;
641
+ t2=0;
642
+ t3=(ido<<1)-1;
643
+ for(k=0;k<l1;k++){
644
+ ch[t1]=cc[t2]+cc[t3+t2];
645
+ ch[t1+t0]=cc[t2]-cc[t3+t2];
646
+ t2=(t1+=ido)<<1;
647
+ }
648
+
649
+ if(ido<2)return;
650
+ if(ido==2)goto L105;
651
+
652
+ t1=0;
653
+ t2=0;
654
+ for(k=0;k<l1;k++){
655
+ t3=t1;
656
+ t5=(t4=t2)+(ido<<1);
657
+ t6=t0+t1;
658
+ for(i=2;i<ido;i+=2){
659
+ t3+=2;
660
+ t4+=2;
661
+ t5-=2;
662
+ t6+=2;
663
+ ch[t3-1]=cc[t4-1]+cc[t5-1];
664
+ tr2=cc[t4-1]-cc[t5-1];
665
+ ch[t3]=cc[t4]-cc[t5];
666
+ ti2=cc[t4]+cc[t5];
667
+ ch[t6-1]=wa1[i-2]*tr2-wa1[i-1]*ti2;
668
+ ch[t6]=wa1[i-2]*ti2+wa1[i-1]*tr2;
669
+ }
670
+ t2=(t1+=ido)<<1;
671
+ }
672
+
673
+ if(ido%2==1)return;
674
+
675
+ L105:
676
+ t1=ido-1;
677
+ t2=ido-1;
678
+ for(k=0;k<l1;k++){
679
+ ch[t1]=cc[t2]+cc[t2];
680
+ ch[t1+t0]=-(cc[t2+1]+cc[t2+1]);
681
+ t1+=ido;
682
+ t2+=ido<<1;
683
+ }
684
+ }
685
+
686
+ static void dradb3(int ido,int l1,float *cc,float *ch,float *wa1,
687
+ float *wa2){
688
+ static float taur = -.5f;
689
+ static float taui = .8660254037844386f;
690
+ int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
691
+ float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;
692
+ t0=l1*ido;
693
+
694
+ t1=0;
695
+ t2=t0<<1;
696
+ t3=ido<<1;
697
+ t4=ido+(ido<<1);
698
+ t5=0;
699
+ for(k=0;k<l1;k++){
700
+ tr2=cc[t3-1]+cc[t3-1];
701
+ cr2=cc[t5]+(taur*tr2);
702
+ ch[t1]=cc[t5]+tr2;
703
+ ci3=taui*(cc[t3]+cc[t3]);
704
+ ch[t1+t0]=cr2-ci3;
705
+ ch[t1+t2]=cr2+ci3;
706
+ t1+=ido;
707
+ t3+=t4;
708
+ t5+=t4;
709
+ }
710
+
711
+ if(ido==1)return;
712
+
713
+ t1=0;
714
+ t3=ido<<1;
715
+ for(k=0;k<l1;k++){
716
+ t7=t1+(t1<<1);
717
+ t6=(t5=t7+t3);
718
+ t8=t1;
719
+ t10=(t9=t1+t0)+t0;
720
+
721
+ for(i=2;i<ido;i+=2){
722
+ t5+=2;
723
+ t6-=2;
724
+ t7+=2;
725
+ t8+=2;
726
+ t9+=2;
727
+ t10+=2;
728
+ tr2=cc[t5-1]+cc[t6-1];
729
+ cr2=cc[t7-1]+(taur*tr2);
730
+ ch[t8-1]=cc[t7-1]+tr2;
731
+ ti2=cc[t5]-cc[t6];
732
+ ci2=cc[t7]+(taur*ti2);
733
+ ch[t8]=cc[t7]+ti2;
734
+ cr3=taui*(cc[t5-1]-cc[t6-1]);
735
+ ci3=taui*(cc[t5]+cc[t6]);
736
+ dr2=cr2-ci3;
737
+ dr3=cr2+ci3;
738
+ di2=ci2+cr3;
739
+ di3=ci2-cr3;
740
+ ch[t9-1]=wa1[i-2]*dr2-wa1[i-1]*di2;
741
+ ch[t9]=wa1[i-2]*di2+wa1[i-1]*dr2;
742
+ ch[t10-1]=wa2[i-2]*dr3-wa2[i-1]*di3;
743
+ ch[t10]=wa2[i-2]*di3+wa2[i-1]*dr3;
744
+ }
745
+ t1+=ido;
746
+ }
747
+ }
748
+
749
+ static void dradb4(int ido,int l1,float *cc,float *ch,float *wa1,
750
+ float *wa2,float *wa3){
751
+ static float sqrt2=1.414213562373095f;
752
+ int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8;
753
+ float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
754
+ t0=l1*ido;
755
+
756
+ t1=0;
757
+ t2=ido<<2;
758
+ t3=0;
759
+ t6=ido<<1;
760
+ for(k=0;k<l1;k++){
761
+ t4=t3+t6;
762
+ t5=t1;
763
+ tr3=cc[t4-1]+cc[t4-1];
764
+ tr4=cc[t4]+cc[t4];
765
+ tr1=cc[t3]-cc[(t4+=t6)-1];
766
+ tr2=cc[t3]+cc[t4-1];
767
+ ch[t5]=tr2+tr3;
768
+ ch[t5+=t0]=tr1-tr4;
769
+ ch[t5+=t0]=tr2-tr3;
770
+ ch[t5+=t0]=tr1+tr4;
771
+ t1+=ido;
772
+ t3+=t2;
773
+ }
774
+
775
+ if(ido<2)return;
776
+ if(ido==2)goto L105;
777
+
778
+ t1=0;
779
+ for(k=0;k<l1;k++){
780
+ t5=(t4=(t3=(t2=t1<<2)+t6))+t6;
781
+ t7=t1;
782
+ for(i=2;i<ido;i+=2){
783
+ t2+=2;
784
+ t3+=2;
785
+ t4-=2;
786
+ t5-=2;
787
+ t7+=2;
788
+ ti1=cc[t2]+cc[t5];
789
+ ti2=cc[t2]-cc[t5];
790
+ ti3=cc[t3]-cc[t4];
791
+ tr4=cc[t3]+cc[t4];
792
+ tr1=cc[t2-1]-cc[t5-1];
793
+ tr2=cc[t2-1]+cc[t5-1];
794
+ ti4=cc[t3-1]-cc[t4-1];
795
+ tr3=cc[t3-1]+cc[t4-1];
796
+ ch[t7-1]=tr2+tr3;
797
+ cr3=tr2-tr3;
798
+ ch[t7]=ti2+ti3;
799
+ ci3=ti2-ti3;
800
+ cr2=tr1-tr4;
801
+ cr4=tr1+tr4;
802
+ ci2=ti1+ti4;
803
+ ci4=ti1-ti4;
804
+
805
+ ch[(t8=t7+t0)-1]=wa1[i-2]*cr2-wa1[i-1]*ci2;
806
+ ch[t8]=wa1[i-2]*ci2+wa1[i-1]*cr2;
807
+ ch[(t8+=t0)-1]=wa2[i-2]*cr3-wa2[i-1]*ci3;
808
+ ch[t8]=wa2[i-2]*ci3+wa2[i-1]*cr3;
809
+ ch[(t8+=t0)-1]=wa3[i-2]*cr4-wa3[i-1]*ci4;
810
+ ch[t8]=wa3[i-2]*ci4+wa3[i-1]*cr4;
811
+ }
812
+ t1+=ido;
813
+ }
814
+
815
+ if(ido%2 == 1)return;
816
+
817
+ L105:
818
+
819
+ t1=ido;
820
+ t2=ido<<2;
821
+ t3=ido-1;
822
+ t4=ido+(ido<<1);
823
+ for(k=0;k<l1;k++){
824
+ t5=t3;
825
+ ti1=cc[t1]+cc[t4];
826
+ ti2=cc[t4]-cc[t1];
827
+ tr1=cc[t1-1]-cc[t4-1];
828
+ tr2=cc[t1-1]+cc[t4-1];
829
+ ch[t5]=tr2+tr2;
830
+ ch[t5+=t0]=sqrt2*(tr1-ti1);
831
+ ch[t5+=t0]=ti2+ti2;
832
+ ch[t5+=t0]=-sqrt2*(tr1+ti1);
833
+
834
+ t3+=ido;
835
+ t1+=t2;
836
+ t4+=t2;
837
+ }
838
+ }
839
+
840
+ static void dradbg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
841
+ float *c2,float *ch,float *ch2,float *wa){
842
+ static float tpi=6.283185307179586f;
843
+ int idij,ipph,i,j,k,l,ik,is,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,
844
+ t11,t12;
845
+ float dc2,ai1,ai2,ar1,ar2,ds2;
846
+ int nbd;
847
+ float dcp,arg,dsp,ar1h,ar2h;
848
+ int ipp2;
849
+
850
+ t10=ip*ido;
851
+ t0=l1*ido;
852
+ arg=tpi/(float)ip;
853
+ dcp=cos(arg);
854
+ dsp=sin(arg);
855
+ nbd=(ido-1)>>1;
856
+ ipp2=ip;
857
+ ipph=(ip+1)>>1;
858
+ if(ido<l1)goto L103;
859
+
860
+ t1=0;
861
+ t2=0;
862
+ for(k=0;k<l1;k++){
863
+ t3=t1;
864
+ t4=t2;
865
+ for(i=0;i<ido;i++){
866
+ ch[t3]=cc[t4];
867
+ t3++;
868
+ t4++;
869
+ }
870
+ t1+=ido;
871
+ t2+=t10;
872
+ }
873
+ goto L106;
874
+
875
+ L103:
876
+ t1=0;
877
+ for(i=0;i<ido;i++){
878
+ t2=t1;
879
+ t3=t1;
880
+ for(k=0;k<l1;k++){
881
+ ch[t2]=cc[t3];
882
+ t2+=ido;
883
+ t3+=t10;
884
+ }
885
+ t1++;
886
+ }
887
+
888
+ L106:
889
+ t1=0;
890
+ t2=ipp2*t0;
891
+ t7=(t5=ido<<1);
892
+ for(j=1;j<ipph;j++){
893
+ t1+=t0;
894
+ t2-=t0;
895
+ t3=t1;
896
+ t4=t2;
897
+ t6=t5;
898
+ for(k=0;k<l1;k++){
899
+ ch[t3]=cc[t6-1]+cc[t6-1];
900
+ ch[t4]=cc[t6]+cc[t6];
901
+ t3+=ido;
902
+ t4+=ido;
903
+ t6+=t10;
904
+ }
905
+ t5+=t7;
906
+ }
907
+
908
+ if (ido == 1)goto L116;
909
+ if(nbd<l1)goto L112;
910
+
911
+ t1=0;
912
+ t2=ipp2*t0;
913
+ t7=0;
914
+ for(j=1;j<ipph;j++){
915
+ t1+=t0;
916
+ t2-=t0;
917
+ t3=t1;
918
+ t4=t2;
919
+
920
+ t7+=(ido<<1);
921
+ t8=t7;
922
+ for(k=0;k<l1;k++){
923
+ t5=t3;
924
+ t6=t4;
925
+ t9=t8;
926
+ t11=t8;
927
+ for(i=2;i<ido;i+=2){
928
+ t5+=2;
929
+ t6+=2;
930
+ t9+=2;
931
+ t11-=2;
932
+ ch[t5-1]=cc[t9-1]+cc[t11-1];
933
+ ch[t6-1]=cc[t9-1]-cc[t11-1];
934
+ ch[t5]=cc[t9]-cc[t11];
935
+ ch[t6]=cc[t9]+cc[t11];
936
+ }
937
+ t3+=ido;
938
+ t4+=ido;
939
+ t8+=t10;
940
+ }
941
+ }
942
+ goto L116;
943
+
944
+ L112:
945
+ t1=0;
946
+ t2=ipp2*t0;
947
+ t7=0;
948
+ for(j=1;j<ipph;j++){
949
+ t1+=t0;
950
+ t2-=t0;
951
+ t3=t1;
952
+ t4=t2;
953
+ t7+=(ido<<1);
954
+ t8=t7;
955
+ t9=t7;
956
+ for(i=2;i<ido;i+=2){
957
+ t3+=2;
958
+ t4+=2;
959
+ t8+=2;
960
+ t9-=2;
961
+ t5=t3;
962
+ t6=t4;
963
+ t11=t8;
964
+ t12=t9;
965
+ for(k=0;k<l1;k++){
966
+ ch[t5-1]=cc[t11-1]+cc[t12-1];
967
+ ch[t6-1]=cc[t11-1]-cc[t12-1];
968
+ ch[t5]=cc[t11]-cc[t12];
969
+ ch[t6]=cc[t11]+cc[t12];
970
+ t5+=ido;
971
+ t6+=ido;
972
+ t11+=t10;
973
+ t12+=t10;
974
+ }
975
+ }
976
+ }
977
+
978
+ L116:
979
+ ar1=1.f;
980
+ ai1=0.f;
981
+ t1=0;
982
+ t9=(t2=ipp2*idl1);
983
+ t3=(ip-1)*idl1;
984
+ for(l=1;l<ipph;l++){
985
+ t1+=idl1;
986
+ t2-=idl1;
987
+
988
+ ar1h=dcp*ar1-dsp*ai1;
989
+ ai1=dcp*ai1+dsp*ar1;
990
+ ar1=ar1h;
991
+ t4=t1;
992
+ t5=t2;
993
+ t6=0;
994
+ t7=idl1;
995
+ t8=t3;
996
+ for(ik=0;ik<idl1;ik++){
997
+ c2[t4++]=ch2[t6++]+ar1*ch2[t7++];
998
+ c2[t5++]=ai1*ch2[t8++];
999
+ }
1000
+ dc2=ar1;
1001
+ ds2=ai1;
1002
+ ar2=ar1;
1003
+ ai2=ai1;
1004
+
1005
+ t6=idl1;
1006
+ t7=t9-idl1;
1007
+ for(j=2;j<ipph;j++){
1008
+ t6+=idl1;
1009
+ t7-=idl1;
1010
+ ar2h=dc2*ar2-ds2*ai2;
1011
+ ai2=dc2*ai2+ds2*ar2;
1012
+ ar2=ar2h;
1013
+ t4=t1;
1014
+ t5=t2;
1015
+ t11=t6;
1016
+ t12=t7;
1017
+ for(ik=0;ik<idl1;ik++){
1018
+ c2[t4++]+=ar2*ch2[t11++];
1019
+ c2[t5++]+=ai2*ch2[t12++];
1020
+ }
1021
+ }
1022
+ }
1023
+
1024
+ t1=0;
1025
+ for(j=1;j<ipph;j++){
1026
+ t1+=idl1;
1027
+ t2=t1;
1028
+ for(ik=0;ik<idl1;ik++)ch2[ik]+=ch2[t2++];
1029
+ }
1030
+
1031
+ t1=0;
1032
+ t2=ipp2*t0;
1033
+ for(j=1;j<ipph;j++){
1034
+ t1+=t0;
1035
+ t2-=t0;
1036
+ t3=t1;
1037
+ t4=t2;
1038
+ for(k=0;k<l1;k++){
1039
+ ch[t3]=c1[t3]-c1[t4];
1040
+ ch[t4]=c1[t3]+c1[t4];
1041
+ t3+=ido;
1042
+ t4+=ido;
1043
+ }
1044
+ }
1045
+
1046
+ if(ido==1)goto L132;
1047
+ if(nbd<l1)goto L128;
1048
+
1049
+ t1=0;
1050
+ t2=ipp2*t0;
1051
+ for(j=1;j<ipph;j++){
1052
+ t1+=t0;
1053
+ t2-=t0;
1054
+ t3=t1;
1055
+ t4=t2;
1056
+ for(k=0;k<l1;k++){
1057
+ t5=t3;
1058
+ t6=t4;
1059
+ for(i=2;i<ido;i+=2){
1060
+ t5+=2;
1061
+ t6+=2;
1062
+ ch[t5-1]=c1[t5-1]-c1[t6];
1063
+ ch[t6-1]=c1[t5-1]+c1[t6];
1064
+ ch[t5]=c1[t5]+c1[t6-1];
1065
+ ch[t6]=c1[t5]-c1[t6-1];
1066
+ }
1067
+ t3+=ido;
1068
+ t4+=ido;
1069
+ }
1070
+ }
1071
+ goto L132;
1072
+
1073
+ L128:
1074
+ t1=0;
1075
+ t2=ipp2*t0;
1076
+ for(j=1;j<ipph;j++){
1077
+ t1+=t0;
1078
+ t2-=t0;
1079
+ t3=t1;
1080
+ t4=t2;
1081
+ for(i=2;i<ido;i+=2){
1082
+ t3+=2;
1083
+ t4+=2;
1084
+ t5=t3;
1085
+ t6=t4;
1086
+ for(k=0;k<l1;k++){
1087
+ ch[t5-1]=c1[t5-1]-c1[t6];
1088
+ ch[t6-1]=c1[t5-1]+c1[t6];
1089
+ ch[t5]=c1[t5]+c1[t6-1];
1090
+ ch[t6]=c1[t5]-c1[t6-1];
1091
+ t5+=ido;
1092
+ t6+=ido;
1093
+ }
1094
+ }
1095
+ }
1096
+
1097
+ L132:
1098
+ if(ido==1)return;
1099
+
1100
+ for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
1101
+
1102
+ t1=0;
1103
+ for(j=1;j<ip;j++){
1104
+ t2=(t1+=t0);
1105
+ for(k=0;k<l1;k++){
1106
+ c1[t2]=ch[t2];
1107
+ t2+=ido;
1108
+ }
1109
+ }
1110
+
1111
+ if(nbd>l1)goto L139;
1112
+
1113
+ is= -ido-1;
1114
+ t1=0;
1115
+ for(j=1;j<ip;j++){
1116
+ is+=ido;
1117
+ t1+=t0;
1118
+ idij=is;
1119
+ t2=t1;
1120
+ for(i=2;i<ido;i+=2){
1121
+ t2+=2;
1122
+ idij+=2;
1123
+ t3=t2;
1124
+ for(k=0;k<l1;k++){
1125
+ c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
1126
+ c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
1127
+ t3+=ido;
1128
+ }
1129
+ }
1130
+ }
1131
+ return;
1132
+
1133
+ L139:
1134
+ is= -ido-1;
1135
+ t1=0;
1136
+ for(j=1;j<ip;j++){
1137
+ is+=ido;
1138
+ t1+=t0;
1139
+ t2=t1;
1140
+ for(k=0;k<l1;k++){
1141
+ idij=is;
1142
+ t3=t2;
1143
+ for(i=2;i<ido;i+=2){
1144
+ idij+=2;
1145
+ t3+=2;
1146
+ c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
1147
+ c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
1148
+ }
1149
+ t2+=ido;
1150
+ }
1151
+ }
1152
+ }
1153
+
1154
+ static void drftb1(int n, float *c, float *ch, float *wa, int *ifac){
1155
+ int i,k1,l1,l2;
1156
+ int na;
1157
+ int nf,ip,iw,ix2,ix3,ido,idl1;
1158
+
1159
+ nf=ifac[1];
1160
+ na=0;
1161
+ l1=1;
1162
+ iw=1;
1163
+
1164
+ for(k1=0;k1<nf;k1++){
1165
+ ip=ifac[k1 + 2];
1166
+ l2=ip*l1;
1167
+ ido=n/l2;
1168
+ idl1=ido*l1;
1169
+ if(ip!=4)goto L103;
1170
+ ix2=iw+ido;
1171
+ ix3=ix2+ido;
1172
+
1173
+ if(na!=0)
1174
+ dradb4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
1175
+ else
1176
+ dradb4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
1177
+ na=1-na;
1178
+ goto L115;
1179
+
1180
+ L103:
1181
+ if(ip!=2)goto L106;
1182
+
1183
+ if(na!=0)
1184
+ dradb2(ido,l1,ch,c,wa+iw-1);
1185
+ else
1186
+ dradb2(ido,l1,c,ch,wa+iw-1);
1187
+ na=1-na;
1188
+ goto L115;
1189
+
1190
+ L106:
1191
+ if(ip!=3)goto L109;
1192
+
1193
+ ix2=iw+ido;
1194
+ if(na!=0)
1195
+ dradb3(ido,l1,ch,c,wa+iw-1,wa+ix2-1);
1196
+ else
1197
+ dradb3(ido,l1,c,ch,wa+iw-1,wa+ix2-1);
1198
+ na=1-na;
1199
+ goto L115;
1200
+
1201
+ L109:
1202
+ /* The radix five case can be translated later..... */
1203
+ /* if(ip!=5)goto L112;
1204
+
1205
+ ix2=iw+ido;
1206
+ ix3=ix2+ido;
1207
+ ix4=ix3+ido;
1208
+ if(na!=0)
1209
+ dradb5(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
1210
+ else
1211
+ dradb5(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
1212
+ na=1-na;
1213
+ goto L115;
1214
+
1215
+ L112:*/
1216
+ if(na!=0)
1217
+ dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
1218
+ else
1219
+ dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
1220
+ if(ido==1)na=1-na;
1221
+
1222
+ L115:
1223
+ l1=l2;
1224
+ iw+=(ip-1)*ido;
1225
+ }
1226
+
1227
+ if(na==0)return;
1228
+
1229
+ for(i=0;i<n;i++)c[i]=ch[i];
1230
+ }
1231
+
1232
+ void drft_forward(drft_lookup *l,float *data){
1233
+ if(l->n==1)return;
1234
+ drftf1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
1235
+ }
1236
+
1237
+ void drft_backward(drft_lookup *l,float *data){
1238
+ if (l->n==1)return;
1239
+ drftb1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
1240
+ }
1241
+
1242
+ void drft_init(drft_lookup *l,int n){
1243
+ l->n=n;
1244
+ l->trigcache=_ogg_calloc(3*n,sizeof(*l->trigcache));
1245
+ l->splitcache=_ogg_calloc(32,sizeof(*l->splitcache));
1246
+ fdrffti(n, l->trigcache, l->splitcache);
1247
+ }
1248
+
1249
+ void drft_clear(drft_lookup *l){
1250
+ if(l){
1251
+ if(l->trigcache)_ogg_free(l->trigcache);
1252
+ if(l->splitcache)_ogg_free(l->splitcache);
1253
+ memset(l,0,sizeof(*l));
1254
+ }
1255
+ }