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.
- data/.yardopts +1 -0
- data/LICENSE +13 -0
- data/README.md +265 -0
- data/ext/seal/extconf.rb +45 -0
- data/include/al/al.h +724 -0
- data/include/al/alc.h +277 -0
- data/include/al/efx-presets.h +402 -0
- data/include/al/efx.h +758 -0
- data/include/mpg123/mpg123.h +1034 -0
- data/include/ogg/config_types.h +25 -0
- data/include/ogg/ogg.h +210 -0
- data/include/ogg/os_types.h +147 -0
- data/include/seal.h +23 -0
- data/include/seal/buf.h +143 -0
- data/include/seal/core.h +95 -0
- data/include/seal/efs.h +112 -0
- data/include/seal/err.h +93 -0
- data/include/seal/fmt.h +58 -0
- data/include/seal/listener.h +103 -0
- data/include/seal/raw.h +86 -0
- data/include/seal/rvb.h +520 -0
- data/include/seal/src.h +413 -0
- data/include/seal/stream.h +81 -0
- data/include/vorbis/codec.h +243 -0
- data/include/vorbis/vorbisfile.h +206 -0
- data/mpg123/AUTHORS +150 -0
- data/mpg123/COPYING +773 -0
- data/mpg123/ChangeLog +3 -0
- data/mpg123/INSTALL +111 -0
- data/mpg123/Makefile.am +99 -0
- data/mpg123/Makefile.in +1043 -0
- data/mpg123/NEWS +1200 -0
- data/mpg123/NEWS.libmpg123 +133 -0
- data/mpg123/README +203 -0
- data/mpg123/TODO +38 -0
- data/mpg123/aclocal.m4 +1168 -0
- data/mpg123/build/config.guess +1530 -0
- data/mpg123/build/config.sub +1782 -0
- data/mpg123/build/depcomp +707 -0
- data/mpg123/build/install-sh +527 -0
- data/mpg123/build/ltmain.sh +9655 -0
- data/mpg123/build/missing +330 -0
- data/mpg123/configure +20267 -0
- data/mpg123/configure.ac +2178 -0
- data/mpg123/doc/ACCURACY +2 -0
- data/mpg123/doc/BENCHMARKING +110 -0
- data/mpg123/doc/BUGS +3 -0
- data/mpg123/doc/CONTACT +17 -0
- data/mpg123/doc/LICENSE +22 -0
- data/mpg123/doc/Makefile.am +32 -0
- data/mpg123/doc/Makefile.in +490 -0
- data/mpg123/doc/PATENTS +39 -0
- data/mpg123/doc/README.3DNOW +56 -0
- data/mpg123/doc/README.gain +171 -0
- data/mpg123/doc/README.remote +218 -0
- data/mpg123/doc/ROAD_TO_LGPL +270 -0
- data/mpg123/doc/THANKS +13 -0
- data/mpg123/doc/TODO +63 -0
- data/mpg123/doc/doxy_examples.c +21 -0
- data/mpg123/doc/doxygen.conf +41 -0
- data/mpg123/doc/doxyhead.xhtml +12 -0
- data/mpg123/doc/examples/dump_seekindex.c +41 -0
- data/mpg123/doc/examples/extract_frames.c +92 -0
- data/mpg123/doc/examples/feedseek.c +238 -0
- data/mpg123/doc/examples/id3dump.c +178 -0
- data/mpg123/doc/examples/mpg123_to_wav.c +118 -0
- data/mpg123/doc/examples/mpglib.c +92 -0
- data/mpg123/doc/examples/scan.c +47 -0
- data/mpg123/doc/libmpg123_speed.txt +84 -0
- data/mpg123/equalize.dat +37 -0
- data/mpg123/libmpg123.pc.in +11 -0
- data/mpg123/m4/addrconfig.m4 +34 -0
- data/mpg123/m4/libtool.m4 +7982 -0
- data/mpg123/m4/ltoptions.m4 +384 -0
- data/mpg123/m4/ltsugar.m4 +123 -0
- data/mpg123/m4/ltversion.m4 +23 -0
- data/mpg123/m4/lt~obsolete.m4 +98 -0
- data/mpg123/makedll.sh +19 -0
- data/mpg123/man1/mpg123.1 +512 -0
- data/mpg123/mpg123.spec +68 -0
- data/mpg123/mpg123.spec.in +68 -0
- data/mpg123/ports/MSVC++/2005/libmpg123/libmpg123.vcproj +741 -0
- data/mpg123/ports/MSVC++/2008/dump_seekindex/dump_seekindex.vcproj +194 -0
- data/mpg123/ports/MSVC++/2008/feedseek/feedseek.vcproj +195 -0
- data/mpg123/ports/MSVC++/2008/libmpg123/libmpg123.vcproj +1357 -0
- data/mpg123/ports/MSVC++/2008/mpg123.sln +44 -0
- data/mpg123/ports/MSVC++/2008/mpglib/mpglib.vcproj +191 -0
- data/mpg123/ports/MSVC++/2008/scan/scan.vcproj +195 -0
- data/mpg123/ports/MSVC++/2008clr/2008clr.sln +81 -0
- data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/Program.cs +435 -0
- data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/Properties/AssemblyInfo.cs +36 -0
- data/mpg123/ports/MSVC++/2008clr/examples/ReplaceReaderclr/ReplaceReaderclr.csproj +72 -0
- data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/Program.cs +331 -0
- data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/Properties/AssemblyInfo.cs +36 -0
- data/mpg123/ports/MSVC++/2008clr/examples/feedseekclr/feedseekclr.csproj +71 -0
- data/mpg123/ports/MSVC++/2008clr/examples/scanclr/Program.cs +79 -0
- data/mpg123/ports/MSVC++/2008clr/examples/scanclr/Properties/AssemblyInfo.cs +36 -0
- data/mpg123/ports/MSVC++/2008clr/examples/scanclr/scanclr.csproj +70 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/AssemblyInfo.cpp +76 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/ReadMe.txt +165 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/advanced.cpp +91 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/advanced.h +130 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/dllmain.cpp +19 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/enum.h +218 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/error.cpp +48 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/error.h +134 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v1.cpp +92 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v1.h +132 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v2.cpp +138 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/id3v2.h +152 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.cpp +896 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.h +953 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.rc +102 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/mpg123clr.vcproj +328 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/resource.h +14 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/stdafx.cpp +8 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/stdafx.h +38 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/string.cpp +166 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/string.h +265 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/targetver.h +24 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/text.cpp +67 -0
- data/mpg123/ports/MSVC++/2008clr/mpg123clr/text.h +111 -0
- data/mpg123/ports/MSVC++/2010/dump_seekindex/dump_seekindex.vcxproj +90 -0
- data/mpg123/ports/MSVC++/2010/dump_seekindex/dump_seekindex.vcxproj.filters +6 -0
- data/mpg123/ports/MSVC++/2010/feedseek/feedseek.vcxproj +95 -0
- data/mpg123/ports/MSVC++/2010/feedseek/feedseek.vcxproj.filters +6 -0
- data/mpg123/ports/MSVC++/2010/libmpg123/libmpg123.vcxproj +960 -0
- data/mpg123/ports/MSVC++/2010/libmpg123/libmpg123.vcxproj.user +3 -0
- data/mpg123/ports/MSVC++/2010/libmpg123/yasm.exe +0 -0
- data/mpg123/ports/MSVC++/2010/mpg123.sln +38 -0
- data/mpg123/ports/MSVC++/2010/scan/scan.vcxproj +93 -0
- data/mpg123/ports/MSVC++/2010/scan/scan.vcxproj.filters +6 -0
- data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/CORE/CORE_FileIn.H +15 -0
- data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/CORE/SourceFilter_MP3.H +139 -0
- data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/IIEP_Def.H +206 -0
- data/mpg123/ports/MSVC++/CMP3Stream/INCLUDE/IIEP_FileIn.H +167 -0
- data/mpg123/ports/MSVC++/CMP3Stream/README +4 -0
- data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_FileIn.CPP +462 -0
- data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_Log.CPP +122 -0
- data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/CORE_Mutex.CPP +35 -0
- data/mpg123/ports/MSVC++/CMP3Stream/SOURCE/SourceFilter_MP3Stream.CPP +586 -0
- data/mpg123/ports/MSVC++/CMP3Stream/libMPG123/PLACE_LIBMPG123_SOURCES_HERE +0 -0
- data/mpg123/ports/MSVC++/CMP3Stream/libMPG123/libMPG123.vcproj +245 -0
- data/mpg123/ports/MSVC++/config.h +35 -0
- data/mpg123/ports/MSVC++/examples/feedseek.c +240 -0
- data/mpg123/ports/MSVC++/examples/scan.c +47 -0
- data/mpg123/ports/MSVC++/mpg123.h +46 -0
- data/mpg123/ports/MSVC++/msvc.c +59 -0
- data/mpg123/ports/README +26 -0
- data/mpg123/ports/Sony_PSP/Makefile.psp +38 -0
- data/mpg123/ports/Sony_PSP/README +11 -0
- data/mpg123/ports/Sony_PSP/config.h +368 -0
- data/mpg123/ports/Sony_PSP/readers.c.patch +2 -0
- data/mpg123/ports/Xcode/config.h +197 -0
- data/mpg123/ports/Xcode/mpg123.h +17 -0
- data/mpg123/ports/Xcode/mpg123.xcodeproj/project.pbxproj +670 -0
- data/mpg123/ports/mpg123_.pas +478 -0
- data/mpg123/scripts/benchmark-cpu.pl +56 -0
- data/mpg123/scripts/tag_lyrics.py +76 -0
- data/mpg123/src/Makefile.am +186 -0
- data/mpg123/src/Makefile.in +1097 -0
- data/mpg123/src/audio.c +725 -0
- data/mpg123/src/audio.h +106 -0
- data/mpg123/src/buffer.c +312 -0
- data/mpg123/src/buffer.h +45 -0
- data/mpg123/src/common.c +240 -0
- data/mpg123/src/common.h +29 -0
- data/mpg123/src/config.h.in +436 -0
- data/mpg123/src/control_generic.c +809 -0
- data/mpg123/src/equalizer.c +48 -0
- data/mpg123/src/genre.c +271 -0
- data/mpg123/src/genre.h +15 -0
- data/mpg123/src/getlopt.c +148 -0
- data/mpg123/src/getlopt.h +77 -0
- data/mpg123/src/httpget.c +700 -0
- data/mpg123/src/httpget.h +66 -0
- data/mpg123/src/legacy_module.c +74 -0
- data/mpg123/src/libmpg123/Makefile.am +141 -0
- data/mpg123/src/libmpg123/Makefile.in +919 -0
- data/mpg123/src/libmpg123/compat.c +138 -0
- data/mpg123/src/libmpg123/compat.h +178 -0
- data/mpg123/src/libmpg123/dct36_3dnow.S +505 -0
- data/mpg123/src/libmpg123/dct36_3dnowext.S +512 -0
- data/mpg123/src/libmpg123/dct64.c +174 -0
- data/mpg123/src/libmpg123/dct64_3dnow.S +712 -0
- data/mpg123/src/libmpg123/dct64_3dnowext.S +714 -0
- data/mpg123/src/libmpg123/dct64_altivec.c +315 -0
- data/mpg123/src/libmpg123/dct64_i386.c +336 -0
- data/mpg123/src/libmpg123/dct64_i486.c +342 -0
- data/mpg123/src/libmpg123/dct64_mmx.S +811 -0
- data/mpg123/src/libmpg123/dct64_neon.S +297 -0
- data/mpg123/src/libmpg123/dct64_neon_float.S +270 -0
- data/mpg123/src/libmpg123/dct64_sse.S +454 -0
- data/mpg123/src/libmpg123/dct64_sse_float.S +401 -0
- data/mpg123/src/libmpg123/dct64_x86_64.S +464 -0
- data/mpg123/src/libmpg123/dct64_x86_64_float.S +426 -0
- data/mpg123/src/libmpg123/debug.h +171 -0
- data/mpg123/src/libmpg123/decode.h +268 -0
- data/mpg123/src/libmpg123/dither.c +119 -0
- data/mpg123/src/libmpg123/dither.h +23 -0
- data/mpg123/src/libmpg123/equalizer.c +17 -0
- data/mpg123/src/libmpg123/equalizer_3dnow.S +70 -0
- data/mpg123/src/libmpg123/feature.c +106 -0
- data/mpg123/src/libmpg123/format.c +521 -0
- data/mpg123/src/libmpg123/frame.c +1046 -0
- data/mpg123/src/libmpg123/frame.h +410 -0
- data/mpg123/src/libmpg123/gapless.h +119 -0
- data/mpg123/src/libmpg123/getbits.h +100 -0
- data/mpg123/src/libmpg123/getcpuflags.S +91 -0
- data/mpg123/src/libmpg123/getcpuflags.h +47 -0
- data/mpg123/src/libmpg123/huffman.h +340 -0
- data/mpg123/src/libmpg123/icy.c +32 -0
- data/mpg123/src/libmpg123/icy.h +38 -0
- data/mpg123/src/libmpg123/icy2utf8.c +438 -0
- data/mpg123/src/libmpg123/icy2utf8.h +10 -0
- data/mpg123/src/libmpg123/id3.c +999 -0
- data/mpg123/src/libmpg123/id3.h +43 -0
- data/mpg123/src/libmpg123/index.c +134 -0
- data/mpg123/src/libmpg123/index.h +59 -0
- data/mpg123/src/libmpg123/intsym.h +256 -0
- data/mpg123/src/libmpg123/l12_integer_tables.h +278 -0
- data/mpg123/src/libmpg123/l2tables.h +164 -0
- data/mpg123/src/libmpg123/l3_integer_tables.h +1002 -0
- data/mpg123/src/libmpg123/layer1.c +155 -0
- data/mpg123/src/libmpg123/layer2.c +371 -0
- data/mpg123/src/libmpg123/layer3.c +2053 -0
- data/mpg123/src/libmpg123/lfs_alias.c +252 -0
- data/mpg123/src/libmpg123/lfs_wrap.c +751 -0
- data/mpg123/src/libmpg123/libmpg123.c +1607 -0
- data/mpg123/src/libmpg123/mangle.h +74 -0
- data/mpg123/src/libmpg123/mpeghead.h +87 -0
- data/mpg123/src/libmpg123/mpg123.h.in +1075 -0
- data/mpg123/src/libmpg123/mpg123lib_intern.h +338 -0
- data/mpg123/src/libmpg123/ntom.c +148 -0
- data/mpg123/src/libmpg123/optimize.c +964 -0
- data/mpg123/src/libmpg123/optimize.h +219 -0
- data/mpg123/src/libmpg123/parse.c +1179 -0
- data/mpg123/src/libmpg123/parse.h +25 -0
- data/mpg123/src/libmpg123/reader.h +137 -0
- data/mpg123/src/libmpg123/readers.c +1235 -0
- data/mpg123/src/libmpg123/sample.h +152 -0
- data/mpg123/src/libmpg123/stringbuf.c +163 -0
- data/mpg123/src/libmpg123/synth.c +816 -0
- data/mpg123/src/libmpg123/synth.h +196 -0
- data/mpg123/src/libmpg123/synth_3dnow.S +318 -0
- data/mpg123/src/libmpg123/synth_3dnowext.S +6 -0
- data/mpg123/src/libmpg123/synth_8bit.c +142 -0
- data/mpg123/src/libmpg123/synth_8bit.h +86 -0
- data/mpg123/src/libmpg123/synth_altivec.c +1057 -0
- data/mpg123/src/libmpg123/synth_arm.S +271 -0
- data/mpg123/src/libmpg123/synth_arm_accurate.S +287 -0
- data/mpg123/src/libmpg123/synth_i486.c +252 -0
- data/mpg123/src/libmpg123/synth_i586.S +336 -0
- data/mpg123/src/libmpg123/synth_i586_dither.S +375 -0
- data/mpg123/src/libmpg123/synth_mmx.S +125 -0
- data/mpg123/src/libmpg123/synth_mono.h +64 -0
- data/mpg123/src/libmpg123/synth_neon.S +123 -0
- data/mpg123/src/libmpg123/synth_neon_accurate.S +173 -0
- data/mpg123/src/libmpg123/synth_neon_float.S +149 -0
- data/mpg123/src/libmpg123/synth_neon_s32.S +168 -0
- data/mpg123/src/libmpg123/synth_ntom.h +213 -0
- data/mpg123/src/libmpg123/synth_real.c +404 -0
- data/mpg123/src/libmpg123/synth_s32.c +411 -0
- data/mpg123/src/libmpg123/synth_sse.S +6 -0
- data/mpg123/src/libmpg123/synth_sse3d.h +246 -0
- data/mpg123/src/libmpg123/synth_sse_accurate.S +294 -0
- data/mpg123/src/libmpg123/synth_sse_float.S +241 -0
- data/mpg123/src/libmpg123/synth_sse_s32.S +306 -0
- data/mpg123/src/libmpg123/synth_stereo_neon.S +175 -0
- data/mpg123/src/libmpg123/synth_stereo_neon_accurate.S +262 -0
- data/mpg123/src/libmpg123/synth_stereo_neon_float.S +220 -0
- data/mpg123/src/libmpg123/synth_stereo_neon_s32.S +247 -0
- data/mpg123/src/libmpg123/synth_stereo_sse_accurate.S +508 -0
- data/mpg123/src/libmpg123/synth_stereo_sse_float.S +416 -0
- data/mpg123/src/libmpg123/synth_stereo_sse_s32.S +540 -0
- data/mpg123/src/libmpg123/synth_stereo_x86_64.S +335 -0
- data/mpg123/src/libmpg123/synth_stereo_x86_64_accurate.S +454 -0
- data/mpg123/src/libmpg123/synth_stereo_x86_64_float.S +396 -0
- data/mpg123/src/libmpg123/synth_stereo_x86_64_s32.S +473 -0
- data/mpg123/src/libmpg123/synth_x86_64.S +244 -0
- data/mpg123/src/libmpg123/synth_x86_64_accurate.S +301 -0
- data/mpg123/src/libmpg123/synth_x86_64_float.S +259 -0
- data/mpg123/src/libmpg123/synth_x86_64_s32.S +312 -0
- data/mpg123/src/libmpg123/synths.h +52 -0
- data/mpg123/src/libmpg123/tabinit.c +294 -0
- data/mpg123/src/libmpg123/tabinit_mmx.S +210 -0
- data/mpg123/src/libmpg123/testcpu.c +35 -0
- data/mpg123/src/libmpg123/true.h +14 -0
- data/mpg123/src/local.c +63 -0
- data/mpg123/src/local.h +21 -0
- data/mpg123/src/metaprint.c +373 -0
- data/mpg123/src/metaprint.h +17 -0
- data/mpg123/src/module.c +306 -0
- data/mpg123/src/module.h +48 -0
- data/mpg123/src/mpg123.c +1405 -0
- data/mpg123/src/mpg123app.h +171 -0
- data/mpg123/src/output/Makefile.am +213 -0
- data/mpg123/src/output/Makefile.in +1238 -0
- data/mpg123/src/output/aix.c +300 -0
- data/mpg123/src/output/alib.c +209 -0
- data/mpg123/src/output/alsa.c +297 -0
- data/mpg123/src/output/arts.c +117 -0
- data/mpg123/src/output/coreaudio.c +370 -0
- data/mpg123/src/output/dummy.c +78 -0
- data/mpg123/src/output/esd.c +167 -0
- data/mpg123/src/output/hp.c +184 -0
- data/mpg123/src/output/jack.c +450 -0
- data/mpg123/src/output/mint.c +197 -0
- data/mpg123/src/output/nas.c +335 -0
- data/mpg123/src/output/openal.c +197 -0
- data/mpg123/src/output/os2.c +665 -0
- data/mpg123/src/output/oss.c +319 -0
- data/mpg123/src/output/portaudio.c +255 -0
- data/mpg123/src/output/pulse.c +164 -0
- data/mpg123/src/output/sdl.c +206 -0
- data/mpg123/src/output/sgi.c +213 -0
- data/mpg123/src/output/sndio.c +161 -0
- data/mpg123/src/output/sun.c +281 -0
- data/mpg123/src/output/win32.c +229 -0
- data/mpg123/src/playlist.c +596 -0
- data/mpg123/src/playlist.h +52 -0
- data/mpg123/src/resolver.c +319 -0
- data/mpg123/src/resolver.h +25 -0
- data/mpg123/src/sfifo.c +146 -0
- data/mpg123/src/sfifo.h +95 -0
- data/mpg123/src/streamdump.c +74 -0
- data/mpg123/src/streamdump.h +20 -0
- data/mpg123/src/term.c +479 -0
- data/mpg123/src/term.h +81 -0
- data/mpg123/src/tests/noise.c +52 -0
- data/mpg123/src/tests/plain_id3.c +109 -0
- data/mpg123/src/tests/seek_accuracy.c +261 -0
- data/mpg123/src/tests/seek_whence.c +56 -0
- data/mpg123/src/tests/testtext.h +34 -0
- data/mpg123/src/tests/text.c +80 -0
- data/mpg123/src/wav.c +464 -0
- data/mpg123/src/wavhead.h +68 -0
- data/mpg123/src/win32_net.c +599 -0
- data/mpg123/src/win32_support.c +191 -0
- data/mpg123/src/win32_support.h +152 -0
- data/mpg123/src/xfermem.c +321 -0
- data/mpg123/src/xfermem.h +74 -0
- data/mpg123/windows-builds.sh +137 -0
- data/msvc/lib/OpenAL32.lib +0 -0
- data/spec/fixtures/heal.ogg +0 -0
- data/spec/fixtures/tone_up.wav +0 -0
- data/spec/seal/buffer_spec.rb +37 -0
- data/spec/seal/core_spec.rb +29 -0
- data/spec/seal/effect_slot_spec.rb +38 -0
- data/spec/seal/listener_spec.rb +33 -0
- data/spec/seal/reverb_spec.rb +51 -0
- data/spec/seal/source_spec.rb +370 -0
- data/spec/seal/stream_spec.rb +38 -0
- data/spec/spec_helper.rb +45 -0
- data/spec/support/attribute_examples.rb +75 -0
- data/spec/support/audio_object_with_format.rb +27 -0
- data/spec/support/movable_object.rb +22 -0
- data/src/libogg/bitwise.c +857 -0
- data/src/libogg/framing.c +2093 -0
- data/src/libvorbis/backends.h +144 -0
- data/src/libvorbis/bitrate.c +253 -0
- data/src/libvorbis/bitrate.h +59 -0
- data/src/libvorbis/block.c +1046 -0
- data/src/libvorbis/codebook.c +484 -0
- data/src/libvorbis/codebook.h +119 -0
- data/src/libvorbis/codec_internal.h +167 -0
- data/src/libvorbis/envelope.c +375 -0
- data/src/libvorbis/envelope.h +80 -0
- data/src/libvorbis/floor0.c +221 -0
- data/src/libvorbis/floor1.c +1100 -0
- data/src/libvorbis/highlevel.h +58 -0
- data/src/libvorbis/info.c +668 -0
- data/src/libvorbis/lookup.c +94 -0
- data/src/libvorbis/lookup.h +32 -0
- data/src/libvorbis/lookup_data.h +192 -0
- data/src/libvorbis/lpc.c +160 -0
- data/src/libvorbis/lpc.h +29 -0
- data/src/libvorbis/lsp.c +456 -0
- data/src/libvorbis/lsp.h +28 -0
- data/src/libvorbis/mapping0.c +816 -0
- data/src/libvorbis/masking.h +785 -0
- data/src/libvorbis/mdct.c +563 -0
- data/src/libvorbis/mdct.h +71 -0
- data/src/libvorbis/misc.h +57 -0
- data/src/libvorbis/os.h +186 -0
- data/src/libvorbis/psy.c +1206 -0
- data/src/libvorbis/psy.h +154 -0
- data/src/libvorbis/registry.c +45 -0
- data/src/libvorbis/registry.h +32 -0
- data/src/libvorbis/res0.c +889 -0
- data/src/libvorbis/scales.h +90 -0
- data/src/libvorbis/sharedbook.c +579 -0
- data/src/libvorbis/smallft.c +1255 -0
- data/src/libvorbis/smallft.h +34 -0
- data/src/libvorbis/synthesis.c +184 -0
- data/src/libvorbis/vorbisfile.c +2337 -0
- data/src/libvorbis/window.c +2135 -0
- data/src/libvorbis/window.h +26 -0
- data/src/rubyext.c +2329 -0
- data/src/seal/buf.c +124 -0
- data/src/seal/core.c +283 -0
- data/src/seal/efs.c +74 -0
- data/src/seal/err.c +118 -0
- data/src/seal/fmt.c +86 -0
- data/src/seal/listener.c +111 -0
- data/src/seal/mpg.c +174 -0
- data/src/seal/mpg.h +24 -0
- data/src/seal/ov.c +180 -0
- data/src/seal/ov.h +22 -0
- data/src/seal/raw.c +59 -0
- data/src/seal/reader.c +102 -0
- data/src/seal/reader.h +59 -0
- data/src/seal/rvb.c +368 -0
- data/src/seal/src.c +654 -0
- data/src/seal/stream.c +109 -0
- data/src/seal/threading.c +66 -0
- data/src/seal/threading.h +20 -0
- data/src/seal/wav.c +297 -0
- data/src/seal/wav.h +23 -0
- data/src/win32api.rb +29 -0
- metadata +563 -0
@@ -0,0 +1,411 @@
|
|
1
|
+
/*
|
2
|
+
synth_s32.c: The functions for synthesizing real (float) samples, at the end of decoding.
|
3
|
+
|
4
|
+
copyright 1995-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
|
5
|
+
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
6
|
+
initially written by Michael Hipp, heavily dissected and rearranged by Thomas Orgis
|
7
|
+
*/
|
8
|
+
|
9
|
+
#include "mpg123lib_intern.h"
|
10
|
+
#include "sample.h"
|
11
|
+
#include "debug.h"
|
12
|
+
|
13
|
+
#ifdef REAL_IS_FIXED
|
14
|
+
#error "Do not build this file with fixed point math!"
|
15
|
+
#else
|
16
|
+
/*
|
17
|
+
Part 4: All synth functions that produce signed 32 bit output.
|
18
|
+
What we need is just a special WRITE_SAMPLE.
|
19
|
+
*/
|
20
|
+
|
21
|
+
#define SAMPLE_T int32_t
|
22
|
+
#define WRITE_SAMPLE(samples,sum,clip) WRITE_S32_SAMPLE(samples,sum,clip)
|
23
|
+
|
24
|
+
/* Part 4a: All straight 1to1 decoding functions */
|
25
|
+
#define BLOCK 0x40 /* One decoding block is 64 samples. */
|
26
|
+
|
27
|
+
#define SYNTH_NAME synth_1to1_s32
|
28
|
+
#include "synth.h"
|
29
|
+
#undef SYNTH_NAME
|
30
|
+
|
31
|
+
/* Mono-related synths; they wrap over _some_ synth_1to1_s32 (could be generic, could be i386). */
|
32
|
+
#define SYNTH_NAME fr->synths.plain[r_1to1][f_32]
|
33
|
+
#define MONO_NAME synth_1to1_s32_mono
|
34
|
+
#define MONO2STEREO_NAME synth_1to1_s32_m2s
|
35
|
+
#include "synth_mono.h"
|
36
|
+
#undef SYNTH_NAME
|
37
|
+
#undef MONO_NAME
|
38
|
+
#undef MONO2STEREO_NAME
|
39
|
+
|
40
|
+
#ifdef OPT_X86
|
41
|
+
#define NO_AUTOINCREMENT
|
42
|
+
#define SYNTH_NAME synth_1to1_s32_i386
|
43
|
+
#include "synth.h"
|
44
|
+
#undef SYNTH_NAME
|
45
|
+
/* i386 uses the normal mono functions. */
|
46
|
+
#undef NO_AUTOINCREMENT
|
47
|
+
#endif
|
48
|
+
|
49
|
+
#ifdef OPT_X86_64
|
50
|
+
/* Assembler routines. */
|
51
|
+
int synth_1to1_s32_x86_64_asm(real *window, real *b0, int32_t *samples, int bo1);
|
52
|
+
int synth_1to1_s32_s_x86_64_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1);
|
53
|
+
void dct64_real_x86_64(real *out0, real *out1, real *samples);
|
54
|
+
/* Hull for C mpg123 API */
|
55
|
+
int synth_1to1_s32_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final)
|
56
|
+
{
|
57
|
+
int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
|
58
|
+
|
59
|
+
real *b0, **buf;
|
60
|
+
int bo1;
|
61
|
+
int clip;
|
62
|
+
|
63
|
+
if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
|
64
|
+
|
65
|
+
if(!channel)
|
66
|
+
{
|
67
|
+
fr->bo--;
|
68
|
+
fr->bo &= 0xf;
|
69
|
+
buf = fr->real_buffs[0];
|
70
|
+
}
|
71
|
+
else
|
72
|
+
{
|
73
|
+
samples++;
|
74
|
+
buf = fr->real_buffs[1];
|
75
|
+
}
|
76
|
+
|
77
|
+
if(fr->bo & 0x1)
|
78
|
+
{
|
79
|
+
b0 = buf[0];
|
80
|
+
bo1 = fr->bo;
|
81
|
+
dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
|
82
|
+
}
|
83
|
+
else
|
84
|
+
{
|
85
|
+
b0 = buf[1];
|
86
|
+
bo1 = fr->bo+1;
|
87
|
+
dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
|
88
|
+
}
|
89
|
+
|
90
|
+
clip = synth_1to1_s32_x86_64_asm(fr->decwin, b0, samples, bo1);
|
91
|
+
|
92
|
+
if(final) fr->buffer.fill += 256;
|
93
|
+
|
94
|
+
return clip;
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
int synth_1to1_s32_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
|
99
|
+
{
|
100
|
+
int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
|
101
|
+
|
102
|
+
real *b0l, *b0r, **bufl, **bufr;
|
103
|
+
int bo1;
|
104
|
+
int clip;
|
105
|
+
|
106
|
+
if(fr->have_eq_settings)
|
107
|
+
{
|
108
|
+
do_equalizer(bandPtr_l,0,fr->equalizer);
|
109
|
+
do_equalizer(bandPtr_r,1,fr->equalizer);
|
110
|
+
}
|
111
|
+
|
112
|
+
fr->bo--;
|
113
|
+
fr->bo &= 0xf;
|
114
|
+
bufl = fr->real_buffs[0];
|
115
|
+
bufr = fr->real_buffs[1];
|
116
|
+
|
117
|
+
if(fr->bo & 0x1)
|
118
|
+
{
|
119
|
+
b0l = bufl[0];
|
120
|
+
b0r = bufr[0];
|
121
|
+
bo1 = fr->bo;
|
122
|
+
dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
|
123
|
+
dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
|
124
|
+
}
|
125
|
+
else
|
126
|
+
{
|
127
|
+
b0l = bufl[1];
|
128
|
+
b0r = bufr[1];
|
129
|
+
bo1 = fr->bo+1;
|
130
|
+
dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
|
131
|
+
dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
|
132
|
+
}
|
133
|
+
|
134
|
+
clip = synth_1to1_s32_s_x86_64_asm(fr->decwin, b0l, b0r, samples, bo1);
|
135
|
+
|
136
|
+
fr->buffer.fill += 256;
|
137
|
+
|
138
|
+
return clip;
|
139
|
+
}
|
140
|
+
#endif
|
141
|
+
|
142
|
+
#ifdef OPT_SSE
|
143
|
+
/* Assembler routines. */
|
144
|
+
int synth_1to1_s32_sse_asm(real *window, real *b0, int32_t *samples, int bo1);
|
145
|
+
int synth_1to1_s32_s_sse_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1);
|
146
|
+
void dct64_real_sse(real *out0, real *out1, real *samples);
|
147
|
+
/* Hull for C mpg123 API */
|
148
|
+
int synth_1to1_s32_sse(real *bandPtr,int channel, mpg123_handle *fr, int final)
|
149
|
+
{
|
150
|
+
int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
|
151
|
+
|
152
|
+
real *b0, **buf;
|
153
|
+
int bo1;
|
154
|
+
int clip;
|
155
|
+
|
156
|
+
if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
|
157
|
+
|
158
|
+
if(!channel)
|
159
|
+
{
|
160
|
+
fr->bo--;
|
161
|
+
fr->bo &= 0xf;
|
162
|
+
buf = fr->real_buffs[0];
|
163
|
+
}
|
164
|
+
else
|
165
|
+
{
|
166
|
+
samples++;
|
167
|
+
buf = fr->real_buffs[1];
|
168
|
+
}
|
169
|
+
|
170
|
+
if(fr->bo & 0x1)
|
171
|
+
{
|
172
|
+
b0 = buf[0];
|
173
|
+
bo1 = fr->bo;
|
174
|
+
dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
|
175
|
+
}
|
176
|
+
else
|
177
|
+
{
|
178
|
+
b0 = buf[1];
|
179
|
+
bo1 = fr->bo+1;
|
180
|
+
dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
|
181
|
+
}
|
182
|
+
|
183
|
+
clip = synth_1to1_s32_sse_asm(fr->decwin, b0, samples, bo1);
|
184
|
+
|
185
|
+
if(final) fr->buffer.fill += 256;
|
186
|
+
|
187
|
+
return clip;
|
188
|
+
}
|
189
|
+
|
190
|
+
|
191
|
+
int synth_1to1_s32_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
|
192
|
+
{
|
193
|
+
int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
|
194
|
+
|
195
|
+
real *b0l, *b0r, **bufl, **bufr;
|
196
|
+
int bo1;
|
197
|
+
int clip;
|
198
|
+
|
199
|
+
if(fr->have_eq_settings)
|
200
|
+
{
|
201
|
+
do_equalizer(bandPtr_l,0,fr->equalizer);
|
202
|
+
do_equalizer(bandPtr_r,1,fr->equalizer);
|
203
|
+
}
|
204
|
+
|
205
|
+
fr->bo--;
|
206
|
+
fr->bo &= 0xf;
|
207
|
+
bufl = fr->real_buffs[0];
|
208
|
+
bufr = fr->real_buffs[1];
|
209
|
+
|
210
|
+
if(fr->bo & 0x1)
|
211
|
+
{
|
212
|
+
b0l = bufl[0];
|
213
|
+
b0r = bufr[0];
|
214
|
+
bo1 = fr->bo;
|
215
|
+
dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
|
216
|
+
dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
|
217
|
+
}
|
218
|
+
else
|
219
|
+
{
|
220
|
+
b0l = bufl[1];
|
221
|
+
b0r = bufr[1];
|
222
|
+
bo1 = fr->bo+1;
|
223
|
+
dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
|
224
|
+
dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
|
225
|
+
}
|
226
|
+
|
227
|
+
clip = synth_1to1_s32_s_sse_asm(fr->decwin, b0l, b0r, samples, bo1);
|
228
|
+
|
229
|
+
fr->buffer.fill += 256;
|
230
|
+
|
231
|
+
return clip;
|
232
|
+
}
|
233
|
+
#endif
|
234
|
+
|
235
|
+
#ifdef OPT_NEON
|
236
|
+
/* Assembler routines. */
|
237
|
+
int synth_1to1_s32_neon_asm(real *window, real *b0, int32_t *samples, int bo1);
|
238
|
+
int synth_1to1_s32_s_neon_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1);
|
239
|
+
void dct64_real_neon(real *out0, real *out1, real *samples);
|
240
|
+
/* Hull for C mpg123 API */
|
241
|
+
int synth_1to1_s32_neon(real *bandPtr,int channel, mpg123_handle *fr, int final)
|
242
|
+
{
|
243
|
+
int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
|
244
|
+
|
245
|
+
real *b0, **buf;
|
246
|
+
int bo1;
|
247
|
+
int clip;
|
248
|
+
|
249
|
+
if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
|
250
|
+
|
251
|
+
if(!channel)
|
252
|
+
{
|
253
|
+
fr->bo--;
|
254
|
+
fr->bo &= 0xf;
|
255
|
+
buf = fr->real_buffs[0];
|
256
|
+
}
|
257
|
+
else
|
258
|
+
{
|
259
|
+
samples++;
|
260
|
+
buf = fr->real_buffs[1];
|
261
|
+
}
|
262
|
+
|
263
|
+
if(fr->bo & 0x1)
|
264
|
+
{
|
265
|
+
b0 = buf[0];
|
266
|
+
bo1 = fr->bo;
|
267
|
+
dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
|
268
|
+
}
|
269
|
+
else
|
270
|
+
{
|
271
|
+
b0 = buf[1];
|
272
|
+
bo1 = fr->bo+1;
|
273
|
+
dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
|
274
|
+
}
|
275
|
+
|
276
|
+
clip = synth_1to1_s32_neon_asm(fr->decwin, b0, samples, bo1);
|
277
|
+
|
278
|
+
if(final) fr->buffer.fill += 256;
|
279
|
+
|
280
|
+
return clip;
|
281
|
+
}
|
282
|
+
|
283
|
+
int synth_1to1_s32_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
|
284
|
+
{
|
285
|
+
int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
|
286
|
+
|
287
|
+
real *b0l, *b0r, **bufl, **bufr;
|
288
|
+
int bo1;
|
289
|
+
int clip;
|
290
|
+
|
291
|
+
if(fr->have_eq_settings)
|
292
|
+
{
|
293
|
+
do_equalizer(bandPtr_l,0,fr->equalizer);
|
294
|
+
do_equalizer(bandPtr_r,1,fr->equalizer);
|
295
|
+
}
|
296
|
+
|
297
|
+
fr->bo--;
|
298
|
+
fr->bo &= 0xf;
|
299
|
+
bufl = fr->real_buffs[0];
|
300
|
+
bufr = fr->real_buffs[1];
|
301
|
+
|
302
|
+
if(fr->bo & 0x1)
|
303
|
+
{
|
304
|
+
b0l = bufl[0];
|
305
|
+
b0r = bufr[0];
|
306
|
+
bo1 = fr->bo;
|
307
|
+
dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
|
308
|
+
dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
|
309
|
+
}
|
310
|
+
else
|
311
|
+
{
|
312
|
+
b0l = bufl[1];
|
313
|
+
b0r = bufr[1];
|
314
|
+
bo1 = fr->bo+1;
|
315
|
+
dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
|
316
|
+
dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
|
317
|
+
}
|
318
|
+
|
319
|
+
clip = synth_1to1_s32_s_neon_asm(fr->decwin, b0l, b0r, samples, bo1);
|
320
|
+
|
321
|
+
fr->buffer.fill += 256;
|
322
|
+
|
323
|
+
return clip;
|
324
|
+
}
|
325
|
+
#endif
|
326
|
+
|
327
|
+
#undef BLOCK
|
328
|
+
|
329
|
+
#ifndef NO_DOWNSAMPLE
|
330
|
+
|
331
|
+
/*
|
332
|
+
Part 4b: 2to1 synth. Only generic and i386.
|
333
|
+
*/
|
334
|
+
#define BLOCK 0x20 /* One decoding block is 32 samples. */
|
335
|
+
|
336
|
+
#define SYNTH_NAME synth_2to1_s32
|
337
|
+
#include "synth.h"
|
338
|
+
#undef SYNTH_NAME
|
339
|
+
|
340
|
+
/* Mono-related synths; they wrap over _some_ synth_2to1_s32 (could be generic, could be i386). */
|
341
|
+
#define SYNTH_NAME fr->synths.plain[r_2to1][f_32]
|
342
|
+
#define MONO_NAME synth_2to1_s32_mono
|
343
|
+
#define MONO2STEREO_NAME synth_2to1_s32_m2s
|
344
|
+
#include "synth_mono.h"
|
345
|
+
#undef SYNTH_NAME
|
346
|
+
#undef MONO_NAME
|
347
|
+
#undef MONO2STEREO_NAME
|
348
|
+
|
349
|
+
#ifdef OPT_X86
|
350
|
+
#define NO_AUTOINCREMENT
|
351
|
+
#define SYNTH_NAME synth_2to1_s32_i386
|
352
|
+
#include "synth.h"
|
353
|
+
#undef SYNTH_NAME
|
354
|
+
/* i386 uses the normal mono functions. */
|
355
|
+
#undef NO_AUTOINCREMENT
|
356
|
+
#endif
|
357
|
+
|
358
|
+
#undef BLOCK
|
359
|
+
|
360
|
+
/*
|
361
|
+
Part 4c: 4to1 synth. Only generic and i386.
|
362
|
+
*/
|
363
|
+
#define BLOCK 0x10 /* One decoding block is 16 samples. */
|
364
|
+
|
365
|
+
#define SYNTH_NAME synth_4to1_s32
|
366
|
+
#include "synth.h"
|
367
|
+
#undef SYNTH_NAME
|
368
|
+
|
369
|
+
/* Mono-related synths; they wrap over _some_ synth_4to1_s32 (could be generic, could be i386). */
|
370
|
+
#define SYNTH_NAME fr->synths.plain[r_4to1][f_32]
|
371
|
+
#define MONO_NAME synth_4to1_s32_mono
|
372
|
+
#define MONO2STEREO_NAME synth_4to1_s32_m2s
|
373
|
+
#include "synth_mono.h"
|
374
|
+
#undef SYNTH_NAME
|
375
|
+
#undef MONO_NAME
|
376
|
+
#undef MONO2STEREO_NAME
|
377
|
+
|
378
|
+
#ifdef OPT_X86
|
379
|
+
#define NO_AUTOINCREMENT
|
380
|
+
#define SYNTH_NAME synth_4to1_s32_i386
|
381
|
+
#include "synth.h"
|
382
|
+
#undef SYNTH_NAME
|
383
|
+
/* i386 uses the normal mono functions. */
|
384
|
+
#undef NO_AUTOINCREMENT
|
385
|
+
#endif
|
386
|
+
|
387
|
+
#undef BLOCK
|
388
|
+
|
389
|
+
#endif /* NO_DOWNSAMPLE */
|
390
|
+
|
391
|
+
#ifndef NO_NTOM
|
392
|
+
/*
|
393
|
+
Part 4d: ntom synth.
|
394
|
+
Same procedure as above... Just no extra play anymore, straight synth that may use an optimized dct64.
|
395
|
+
*/
|
396
|
+
|
397
|
+
/* These are all in one header, there's no flexibility to gain. */
|
398
|
+
#define SYNTH_NAME synth_ntom_s32
|
399
|
+
#define MONO_NAME synth_ntom_s32_mono
|
400
|
+
#define MONO2STEREO_NAME synth_ntom_s32_m2s
|
401
|
+
#include "synth_ntom.h"
|
402
|
+
#undef SYNTH_NAME
|
403
|
+
#undef MONO_NAME
|
404
|
+
#undef MONO2STEREO_NAME
|
405
|
+
|
406
|
+
#endif
|
407
|
+
|
408
|
+
#undef SAMPLE_T
|
409
|
+
#undef WRITE_SAMPLE
|
410
|
+
|
411
|
+
#endif /* non-fixed type */
|
@@ -0,0 +1,246 @@
|
|
1
|
+
/*
|
2
|
+
decode_sse3d: Synth for SSE and extended 3DNow (yeah, the name is a relic)
|
3
|
+
|
4
|
+
copyright 2006-2007 by Zuxy Meng/the mpg123 project - free software under the terms of the LGPL 2.1
|
5
|
+
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
6
|
+
initially written by the mysterious higway for MMX (apparently)
|
7
|
+
then developed into SSE opt by Zuxy Meng, also building on Romain Dolbeau's AltiVec
|
8
|
+
Both have agreed to distribution under LGPL 2.1 .
|
9
|
+
|
10
|
+
Transformed back into standalone asm, with help of
|
11
|
+
gcc -S -DHAVE_CONFIG_H -I. -march=pentium -O3 -Wall -pedantic -fno-strict-aliasing -DREAL_IS_FLOAT -c -o decode_mmxsse.{S,c}
|
12
|
+
|
13
|
+
The difference between SSE and 3DNowExt is the dct64 function and the synth function name.
|
14
|
+
This template here uses the SYNTH_NAME and MPL_DCT64 macros for this - see decode_sse.S and decode_3dnowext.S...
|
15
|
+
That's not memory efficient since there's doubled code, but it's easier than giving another function pointer.
|
16
|
+
Maybe I'll change it in future, but now I need something that works.
|
17
|
+
|
18
|
+
Original comment from MPlayer source follows:
|
19
|
+
*/
|
20
|
+
|
21
|
+
/*
|
22
|
+
* this code comes under GPL
|
23
|
+
* This code was taken from http://www.mpg123.org
|
24
|
+
* See ChangeLog of mpg123-0.59s-pre.1 for detail
|
25
|
+
* Applied to mplayer by Nick Kurshev <nickols_k@mail.ru>
|
26
|
+
*
|
27
|
+
* Local ChangeLog:
|
28
|
+
* - Partial loops unrolling and removing MOVW insn from loops
|
29
|
+
*/
|
30
|
+
|
31
|
+
#include "mangle.h"
|
32
|
+
|
33
|
+
.data
|
34
|
+
ALIGN8
|
35
|
+
one_null:
|
36
|
+
.long -65536
|
37
|
+
.long -65536
|
38
|
+
ALIGN8
|
39
|
+
null_one:
|
40
|
+
.long 65535
|
41
|
+
.long 65535
|
42
|
+
|
43
|
+
.text
|
44
|
+
ALIGN16
|
45
|
+
/* void SYNTH_NAME(real *bandPtr, int channel, short *samples, short *buffs, int *bo, float *decwins) */
|
46
|
+
.globl SYNTH_NAME
|
47
|
+
SYNTH_NAME:
|
48
|
+
pushl %ebp
|
49
|
+
/* stack:0=ebp 4=back 8=bandptr 12=channel 16=samples 20=buffs 24=bo 28=decwins */
|
50
|
+
movl %esp, %ebp
|
51
|
+
/* Now the old stack addresses are preserved via %epb. */
|
52
|
+
subl $4,%esp /* What has been called temp before. */
|
53
|
+
pushl %edi
|
54
|
+
pushl %esi
|
55
|
+
pushl %ebx
|
56
|
+
#define TEMP 12(%esp)
|
57
|
+
/* APP */
|
58
|
+
movl 12(%ebp),%ecx
|
59
|
+
movl 16(%ebp),%edi
|
60
|
+
movl $15,%ebx
|
61
|
+
movl 24(%ebp),%edx
|
62
|
+
leal (%edi,%ecx,2),%edi
|
63
|
+
decl %ecx
|
64
|
+
movl 20(%ebp),%esi
|
65
|
+
movl (%edx),%eax
|
66
|
+
jecxz .L01
|
67
|
+
decl %eax
|
68
|
+
andl %ebx,%eax
|
69
|
+
leal 1088(%esi),%esi
|
70
|
+
movl %eax,(%edx)
|
71
|
+
.L01:
|
72
|
+
leal (%esi,%eax,2),%edx
|
73
|
+
movl %eax,TEMP
|
74
|
+
incl %eax
|
75
|
+
andl %ebx,%eax
|
76
|
+
leal 544(%esi,%eax,2),%ecx
|
77
|
+
incl %ebx
|
78
|
+
testl $1, %eax
|
79
|
+
jnz .L02
|
80
|
+
xchgl %edx,%ecx
|
81
|
+
incl TEMP
|
82
|
+
leal 544(%esi),%esi
|
83
|
+
.L02:
|
84
|
+
pushl 8(%ebp)
|
85
|
+
pushl %edx
|
86
|
+
pushl %ecx
|
87
|
+
call MPL_DCT64
|
88
|
+
addl $12, %esp
|
89
|
+
leal 1(%ebx), %ecx
|
90
|
+
subl TEMP,%ebx
|
91
|
+
pushl %ecx
|
92
|
+
/* leal ASM_NAME(decwins)(%ebx,%ebx,1), %edx */
|
93
|
+
movl 28(%ebp),%ecx
|
94
|
+
leal (%ecx,%ebx,2), %edx
|
95
|
+
movl (%esp),%ecx /* restore, but leave value on stack */
|
96
|
+
shrl $1, %ecx
|
97
|
+
ALIGN16
|
98
|
+
.L03:
|
99
|
+
movq (%edx),%mm0
|
100
|
+
movq 64(%edx),%mm4
|
101
|
+
pmaddwd (%esi),%mm0
|
102
|
+
pmaddwd 32(%esi),%mm4
|
103
|
+
movq 8(%edx),%mm1
|
104
|
+
movq 72(%edx),%mm5
|
105
|
+
pmaddwd 8(%esi),%mm1
|
106
|
+
pmaddwd 40(%esi),%mm5
|
107
|
+
movq 16(%edx),%mm2
|
108
|
+
movq 80(%edx),%mm6
|
109
|
+
pmaddwd 16(%esi),%mm2
|
110
|
+
pmaddwd 48(%esi),%mm6
|
111
|
+
movq 24(%edx),%mm3
|
112
|
+
movq 88(%edx),%mm7
|
113
|
+
pmaddwd 24(%esi),%mm3
|
114
|
+
pmaddwd 56(%esi),%mm7
|
115
|
+
paddd %mm1,%mm0
|
116
|
+
paddd %mm5,%mm4
|
117
|
+
paddd %mm2,%mm0
|
118
|
+
paddd %mm6,%mm4
|
119
|
+
paddd %mm3,%mm0
|
120
|
+
paddd %mm7,%mm4
|
121
|
+
movq %mm0,%mm1
|
122
|
+
movq %mm4,%mm5
|
123
|
+
psrlq $32,%mm1
|
124
|
+
psrlq $32,%mm5
|
125
|
+
paddd %mm1,%mm0
|
126
|
+
paddd %mm5,%mm4
|
127
|
+
psrad $13,%mm0
|
128
|
+
psrad $13,%mm4
|
129
|
+
packssdw %mm0,%mm0
|
130
|
+
packssdw %mm4,%mm4
|
131
|
+
movq (%edi), %mm1
|
132
|
+
punpckldq %mm4, %mm0
|
133
|
+
pand one_null, %mm1
|
134
|
+
pand null_one, %mm0
|
135
|
+
por %mm0, %mm1
|
136
|
+
movq %mm1,(%edi)
|
137
|
+
leal 64(%esi),%esi
|
138
|
+
leal 128(%edx),%edx
|
139
|
+
leal 8(%edi),%edi
|
140
|
+
decl %ecx
|
141
|
+
jnz .L03
|
142
|
+
popl %ecx
|
143
|
+
andl $1, %ecx
|
144
|
+
jecxz .next_loop
|
145
|
+
movq (%edx),%mm0
|
146
|
+
pmaddwd (%esi),%mm0
|
147
|
+
movq 8(%edx),%mm1
|
148
|
+
pmaddwd 8(%esi),%mm1
|
149
|
+
movq 16(%edx),%mm2
|
150
|
+
pmaddwd 16(%esi),%mm2
|
151
|
+
movq 24(%edx),%mm3
|
152
|
+
pmaddwd 24(%esi),%mm3
|
153
|
+
paddd %mm1,%mm0
|
154
|
+
paddd %mm2,%mm0
|
155
|
+
paddd %mm3,%mm0
|
156
|
+
movq %mm0,%mm1
|
157
|
+
psrlq $32,%mm1
|
158
|
+
paddd %mm1,%mm0
|
159
|
+
psrad $13,%mm0
|
160
|
+
packssdw %mm0,%mm0
|
161
|
+
movd %mm0,%eax
|
162
|
+
movw %ax, (%edi)
|
163
|
+
leal 32(%esi),%esi
|
164
|
+
leal 64(%edx),%edx
|
165
|
+
leal 4(%edi),%edi
|
166
|
+
.next_loop:
|
167
|
+
subl $64,%esi
|
168
|
+
movl $7,%ecx
|
169
|
+
ALIGN16
|
170
|
+
.L04:
|
171
|
+
movq (%edx),%mm0
|
172
|
+
movq 64(%edx),%mm4
|
173
|
+
pmaddwd (%esi),%mm0
|
174
|
+
pmaddwd -32(%esi),%mm4
|
175
|
+
movq 8(%edx),%mm1
|
176
|
+
movq 72(%edx),%mm5
|
177
|
+
pmaddwd 8(%esi),%mm1
|
178
|
+
pmaddwd -24(%esi),%mm5
|
179
|
+
movq 16(%edx),%mm2
|
180
|
+
movq 80(%edx),%mm6
|
181
|
+
pmaddwd 16(%esi),%mm2
|
182
|
+
pmaddwd -16(%esi),%mm6
|
183
|
+
movq 24(%edx),%mm3
|
184
|
+
movq 88(%edx),%mm7
|
185
|
+
pmaddwd 24(%esi),%mm3
|
186
|
+
pmaddwd -8(%esi),%mm7
|
187
|
+
paddd %mm1,%mm0
|
188
|
+
paddd %mm5,%mm4
|
189
|
+
paddd %mm2,%mm0
|
190
|
+
paddd %mm6,%mm4
|
191
|
+
paddd %mm3,%mm0
|
192
|
+
paddd %mm7,%mm4
|
193
|
+
movq %mm0,%mm1
|
194
|
+
movq %mm4,%mm5
|
195
|
+
psrlq $32,%mm1
|
196
|
+
psrlq $32,%mm5
|
197
|
+
paddd %mm0,%mm1
|
198
|
+
paddd %mm4,%mm5
|
199
|
+
psrad $13,%mm1
|
200
|
+
psrad $13,%mm5
|
201
|
+
packssdw %mm1,%mm1
|
202
|
+
packssdw %mm5,%mm5
|
203
|
+
psubd %mm0,%mm0
|
204
|
+
psubd %mm4,%mm4
|
205
|
+
psubsw %mm1,%mm0
|
206
|
+
psubsw %mm5,%mm4
|
207
|
+
movq (%edi), %mm1
|
208
|
+
punpckldq %mm4, %mm0
|
209
|
+
pand one_null, %mm1
|
210
|
+
pand null_one, %mm0
|
211
|
+
por %mm0, %mm1
|
212
|
+
movq %mm1,(%edi)
|
213
|
+
subl $64,%esi
|
214
|
+
addl $128,%edx
|
215
|
+
leal 8(%edi),%edi
|
216
|
+
decl %ecx
|
217
|
+
jnz .L04
|
218
|
+
movq (%edx),%mm0
|
219
|
+
pmaddwd (%esi),%mm0
|
220
|
+
movq 8(%edx),%mm1
|
221
|
+
pmaddwd 8(%esi),%mm1
|
222
|
+
movq 16(%edx),%mm2
|
223
|
+
pmaddwd 16(%esi),%mm2
|
224
|
+
movq 24(%edx),%mm3
|
225
|
+
pmaddwd 24(%esi),%mm3
|
226
|
+
paddd %mm1,%mm0
|
227
|
+
paddd %mm2,%mm0
|
228
|
+
paddd %mm3,%mm0
|
229
|
+
movq %mm0,%mm1
|
230
|
+
psrlq $32,%mm1
|
231
|
+
paddd %mm0,%mm1
|
232
|
+
psrad $13,%mm1
|
233
|
+
packssdw %mm1,%mm1
|
234
|
+
psubd %mm0,%mm0
|
235
|
+
psubsw %mm1,%mm0
|
236
|
+
movd %mm0,%eax
|
237
|
+
movw %ax,(%edi)
|
238
|
+
emms
|
239
|
+
|
240
|
+
/* NO_APP */
|
241
|
+
popl %ebx
|
242
|
+
popl %esi
|
243
|
+
popl %edi
|
244
|
+
addl $4,%esp
|
245
|
+
popl %ebp
|
246
|
+
ret
|