seal 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/mpg123/doc/PATENTS
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
Some notes about patents and mpg123 by Thomas Orgis
|
2
|
+
---------------------------------------------------
|
3
|
+
|
4
|
+
There has been a lot of confusion over mp3 (or more generic mpeg audio) patents and licensing issues due to the patents held by Fraunhofer and marketed by Thomson.
|
5
|
+
So, yes, there are patents held by Fraunhofer that are claimed to cover mpeg audio technology. There are also claims that they cover any similar technology (like OGG).
|
6
|
+
You may argue if these patents are valid at all (being illegal software patents, or being preceeded by known scientific publications), but they are internationally accepted by patent authorities and if you want to use mp3 commercially you should check
|
7
|
+
|
8
|
+
http://www.mp3licensing.org
|
9
|
+
|
10
|
+
for the Fraunhofer/Thomson opinion and their terms.
|
11
|
+
|
12
|
+
Since mpg123 is only a mpeg audio player, a good deal of patents that describe the encoding process (the tricky part) will not apply.
|
13
|
+
Also, statements from the patent holders up to now always allowed the non-commercial distribution of mpeg audio decoders without any fee.
|
14
|
+
They want you to pay for a license when you want to make money by selling a decoder, though. We don't sell mpg123.
|
15
|
+
Additionally, one should not forget the fact that the ideas are getting old; the basic (funded by government, btw.) research was somewhen back around the 80s and many patents are going to expire soon, best example in Germany:
|
16
|
+
|
17
|
+
P/DE 35 06 912 Method of transmission of an audio signal using grouping of amplitude values
|
18
|
+
|
19
|
+
Application was 22.02.1986 in Germany (and around Europe in the same time Jan/Feb 1986).
|
20
|
+
German patents last 20 years... now we have 24.07.2006. Time has come...
|
21
|
+
|
22
|
+
The idea of a patent is to make the inventor open the invention to the public by giving him some safe time to turn this invention into economical benefit.
|
23
|
+
People using (and improving!) the technology freely after that time is _the_ most important aspect of that idea.
|
24
|
+
|
25
|
+
Oh, I should mention the "core" mp3 patent (from http://gauss.ffii.org/PatentView/EP287578):
|
26
|
+
|
27
|
+
DE 3629434 / EP287578 Digital coding process
|
28
|
+
|
29
|
+
Application date in Germany was 29.08.1986 - that means that in a month from now (remember: 24.07.2006) this patent finds its natural end.
|
30
|
+
|
31
|
+
Then, there are other patents listed on the Fraunhofer/Thomson website that came very late... The one about join stereo coding was aplied for in Feb 1995. Did mpg123 implement that already back then? History is a bit blurry there...
|
32
|
+
There is a patent applied for in 1997, but probably covering encoding only. Still, even if that weren't the case - the basic decoding functionality of mpg123 didn't change that much after 1997; and they couldn't have patented existing functionality.
|
33
|
+
In general, few patents seem to cover decoders at all. Of course, with me being no lawyer, that statement is not trustworthy...
|
34
|
+
|
35
|
+
Bottom line is:
|
36
|
+
|
37
|
+
While Fraunhofer/Thomson don't want to charge free software players - they said that a long time ago, the time for they being able to place such charges is expiring or has already expired. One should really think before adding mp3pro/surround support to mpg123, though, since there are for sure more recent patents for that.
|
38
|
+
|
39
|
+
And don't forget: The progress bar is covered by a patent, too.
|
@@ -0,0 +1,56 @@
|
|
1
|
+
************************************************************************
|
2
|
+
* 3DNow! support by KIMURA Takuhiro <kim@hannah.ipc.miyakyo-u.ac.jp> *
|
3
|
+
* <kim@comtec.co.jp> *
|
4
|
+
* (http://hannah.ipc.miyakyo-u.ac.jp/kim/) *
|
5
|
+
* Syuuhei Kashiyama <squash@mb.kcom.ne.jp> *
|
6
|
+
* (http://user.ecc.u-tokyo.ac.jp/~g810370/)*
|
7
|
+
************************************************************************
|
8
|
+
|
9
|
+
-----------------------------
|
10
|
+
What's new in patch for 0.59r
|
11
|
+
-----------------------------
|
12
|
+
- 3DNow! optimized decode routine (decode_3dnow.s,dct36_3dnow.s ;
|
13
|
+
these code based Syuuhei Kashiyama's 3DNow! patch for mpg123-0.59o)
|
14
|
+
- 3DNow! optimized equalizer (equalizer_3dnow.s ; do_equalizer() only)
|
15
|
+
- target "linux-3dnow-alsa" "linux-3dnow-esd" added (untested)
|
16
|
+
- automatic detect 3DNow! support CPU from CPUFLAGS (getcpuflags.s)
|
17
|
+
(i.e. use floating-pointer decode routine if your CPU isn't support
|
18
|
+
3DNow! or MMX instructions)
|
19
|
+
|
20
|
+
-------------
|
21
|
+
Added options
|
22
|
+
-------------
|
23
|
+
"--test-3dnow" : display result of autodetect and exit
|
24
|
+
"--force-3dnow" : force use of 3DNow! optimized decoder
|
25
|
+
(it will cause SIGILL if your CPU isn't support 3DNow! or MMX
|
26
|
+
instructions)
|
27
|
+
"--no-3dnow" : force use of floating-pointer decoder
|
28
|
+
|
29
|
+
-----------
|
30
|
+
How to make
|
31
|
+
-----------
|
32
|
+
[1] To make 3DNow! optimized mpg123,you need binutils-2.9.1.0.15 or later.
|
33
|
+
You can find the most recent binutils (2.9.1.0.25 until 23.Jun.1999) at
|
34
|
+
- kernel.org (and mirrors) : /pub/linux/devel/gcc/
|
35
|
+
- http://hannah.ipc.miyakyo-u.ac.jp/kim/Linux/binutils/
|
36
|
+
(Takuhiro's local copy)
|
37
|
+
etc.
|
38
|
+
[2] Type "make linux-3dnow" (OSS)
|
39
|
+
or "make linux-3dnow-alsa" (ALSA).
|
40
|
+
[3] Enjoy!
|
41
|
+
|
42
|
+
------------------
|
43
|
+
Precompiled binary
|
44
|
+
------------------
|
45
|
+
You can get precompiled binary of mpg123 (with 3DNow! support) from
|
46
|
+
http://hannah.ipc.miyakyo-u.ac.jp/kim/Linux/mpg123/
|
47
|
+
|
48
|
+
----------
|
49
|
+
References
|
50
|
+
----------
|
51
|
+
Useful sources of information on optimizing 3DNow! code include:
|
52
|
+
- AMD 3DNow! Technology Manual (Publication #21928)
|
53
|
+
English: http://www.amd.com/K6/k6docs/pdf/21928d.pdf
|
54
|
+
(Japanese: http://www.amd.com/japan/K6/k6docs/j21928c.pdf)
|
55
|
+
- AMD-K6-2 Processor Code Optimization Application Note (Publication #21924)
|
56
|
+
English: http://www.amd.com/K6/k6docs/pdf/21924b.pdf
|
@@ -0,0 +1,171 @@
|
|
1
|
+
Thomas Orgis on RVA, Gain and Pain
|
2
|
+
|
3
|
+
|
4
|
+
Ok, so I'm going to add RVA/ReplayGain support... the problem there is not to read these valus from ID3 or Lame, not even to do the adjustment itself.
|
5
|
+
The problem is more to figure out how to interpret the dB values one gets there.
|
6
|
+
|
7
|
+
Main players in the field of relative volume adjustment / soft gain (without modifying actual audio data):
|
8
|
+
|
9
|
+
http://www1.cs.columbia.edu/~cvaill/normalize/
|
10
|
+
...writing RVA2 ID3v2tags for dB offset to user target amplitude, default being -12dB(FS)
|
11
|
+
http://www.replaygain.org/
|
12
|
+
...store the difference to reference of 83dB(SPL) ... somewhere
|
13
|
+
|
14
|
+
Both calculate some running RMS and do statistics with this - the main difference is the potentially different target level.
|
15
|
+
Also both know two basic types of adjustment: Per track to make all tracks sound at the same sevel (track / radio) and the one with default meaning to keep the loudness relations over albums (batch / audiophile).
|
16
|
+
|
17
|
+
dB can mean many things and also the raw value of a PCM sample doesn't equal directly to loudness (power of a wave != amplitude).
|
18
|
+
|
19
|
+
So that says the ReplayGain about applying the adjustment:
|
20
|
+
|
21
|
+
scale=10.^(replay_gain/20);
|
22
|
+
|
23
|
+
luckily, this is the same that I worked out on my own for the normalize RVA values in my mixplayer script:
|
24
|
+
|
25
|
+
return 10**($s/20);
|
26
|
+
|
27
|
+
I'll take that interpretaion of dB -> linear scale factor for samples for granted, then.
|
28
|
+
|
29
|
+
The replay_gain value is meant in the standard to represent the offset to 83dB(SPL - depending on your amplifier...), having in mind that actual most wanted average playback level should be 83dB(SPL) (defined by movie ppl as the loudness of a -20dB(FS) signal, leaving room for louder stuff).
|
30
|
+
But then there is the proposal to add 6dB preamp for pop music - am I judging music types with mpg123??
|
31
|
+
These 6dB are in fact the real world since lots of programs use 89dB(SPL...) as reference.
|
32
|
+
Thus, lame since 3.95.1 (according to MADplay's Rob Leslie who discussed with Lame ppl, verified in 3.96 source) stores the adjustment to 89dB.
|
33
|
+
To make that all sound the same, one should add 6bB to lame <3.95.1 ReplayGain values and use later ones verbatim - achieving 89dB everytime, whatever that may mean in reality out of my speakers (my Marantz' volume knob doesn't have a scale at all - be it dB or percent;-).
|
34
|
+
|
35
|
+
A funny aspect of this 6dB issue is to tell lame 3.95.1 from lame 3.95
|
36
|
+
|
37
|
+
As for normalize... the desired playback level is essentially undefined. Ignoring that and realizing that mpg123 has no way to determine real world sound power anyway, one has to just take the provided dB values and apply with the formula above.
|
38
|
+
The user is responsible for providing files with his desired settings... for that reason I also won't follow the ReplayGain demand/suggestion that a player should apply an average of gains of previous tracks if the current one lacks a setting.
|
39
|
+
|
40
|
+
So, well. Considering that ReplayGain (at least the radio one) being stored by current lame on encoding, I suppose that if there are RVA2 values in ID3v2 tags, these were added by a conscious user act and are overriding the ReplayGain ones.
|
41
|
+
|
42
|
+
I already read ReplayGain entries in Lame tag... should add ID3v2 parsing. Especially since the lame tag is ambignous because of the 6dB issue... I cannot distinguish 3.95.1 from 3.95 by reading the tag - frick!
|
43
|
+
But wait... 6dB?
|
44
|
+
|
45
|
+
[thomas@thorvas /home/thomas-data/mpg123-neu/lame-3.96.1]$ frontend/lame --cbr -T /mnt/knecht_mp3/music/covenant/2006_skyshaper/03-happy_man.mp3 ../testfiles/happy_man_lame-3.96.1.mp3
|
46
|
+
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
|
47
|
+
LAME version 3.96.1 (http://lame.sourceforge.net/)
|
48
|
+
Using polyphase lowpass filter, transition band: 17249 Hz - 17782 Hz
|
49
|
+
Encoding /mnt/knecht_mp3/music/covenant/2006_skyshaper/03-happy_man.mp3
|
50
|
+
to ../testfiles/happy_man_lame-3.96.1.mp3
|
51
|
+
Encoding as 44.1 kHz 128 kbps j-stereo MPEG-1 Layer III (11x) qval=3
|
52
|
+
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
|
53
|
+
6371/6374 (100%)| 1:41/ 1:41| 1:47/ 1:47| 1.6353x| 0:00
|
54
|
+
average: 128.0 kbps LR: 754 (11.83%) MS: 5620 (88.17%)
|
55
|
+
|
56
|
+
Writing LAME Tag...done
|
57
|
+
ReplayGain: -7.4dB
|
58
|
+
revmethod = 1
|
59
|
+
encoder padding: 1728
|
60
|
+
|
61
|
+
[thomas@thorvas /home/thomas-data/mpg123-neu/lame-3.95.1]$ frontend/lame --cbr -T /mnt/knecht_mp3/music/covenant/2006_skyshaper/03-happy_man.mp3 ../testfiles/happy_man.mp3
|
62
|
+
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
|
63
|
+
LAME version 3.95 (http://www.mp3dev.org/)
|
64
|
+
Using polyphase lowpass filter, transition band: 17249 Hz - 17782 Hz
|
65
|
+
Encoding /mnt/knecht_mp3/music/covenant/2006_skyshaper/03-happy_man.mp3
|
66
|
+
to ../testfiles/happy_man.mp3
|
67
|
+
Encoding as 44.1 kHz 128 kbps j-stereo MPEG-1 Layer III (11x) qval=3
|
68
|
+
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
|
69
|
+
6371/6374 (100%)| 1:36/ 1:36| 1:48/ 1:48| 1.7289x| 0:00
|
70
|
+
average: 128.0 kbps LR: 759 (11.91%) MS: 5615 (88.09%)
|
71
|
+
|
72
|
+
Writing LAME Tag...done
|
73
|
+
ReplayGain: -7.4dB
|
74
|
+
|
75
|
+
[thomas@thorvas /home/thomas-data/mpg123-neu/lame-3.95]$ frontend/lame --cbr -T /mnt/knecht_mp3/music/covenant/2006_skyshaper/03-happy_man.mp3 ../testfiles/happy_man_lame-3.95.mp3
|
76
|
+
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
|
77
|
+
LAME version 3.95 (http://www.mp3dev.org/)
|
78
|
+
Using polyphase lowpass filter, transition band: 17249 Hz - 17782 Hz
|
79
|
+
Encoding /mnt/knecht_mp3/music/covenant/2006_skyshaper/03-happy_man.mp3
|
80
|
+
to ../testfiles/happy_man_lame-3.95.mp3
|
81
|
+
Encoding as 44.1 kHz 128 kbps j-stereo MPEG-1 Layer III (11x) qval=3
|
82
|
+
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
|
83
|
+
6371/6374 (100%)| 1:37/ 1:37| 1:43/ 1:43| 1.7041x| 0:00
|
84
|
+
average: 128.0 kbps LR: 759 (11.91%) MS: 5615 (88.09%)
|
85
|
+
|
86
|
+
Writing LAME Tag...done
|
87
|
+
ReplayGain: -13.4dB
|
88
|
+
|
89
|
+
|
90
|
+
Together with the gain values read from tags:
|
91
|
+
|
92
|
+
3.96.1: -1.0dB (claimed -7.4dB)
|
93
|
+
3.95: -1.0dB (claimed -7.4dB)
|
94
|
+
3.95: -0.6dB (claimed -13.4dB)
|
95
|
+
|
96
|
+
So, the difference of 6dB shows in the values lame prints on the command line... but the lame tags only have 0.4dB difference and are much lower anyway - do I parse them correctly?
|
97
|
+
|
98
|
+
Opinion of normalize of these files: -2dB. Great. I guess the -1 is what lame really meant, then...
|
99
|
+
|
100
|
+
|
101
|
+
Storage places
|
102
|
+
==============
|
103
|
+
|
104
|
+
Points 1, 2 and 4 implemented to some respect.
|
105
|
+
|
106
|
+
|
107
|
+
1. Lame/Info tag
|
108
|
+
|
109
|
+
supposedly in format according to the proposed standard - but I yet have to verify if Lame really does this.
|
110
|
+
see http://gabriel.mp3-tech.org/mp3infotag.html
|
111
|
+
|
112
|
+
|
113
|
+
2. ID3v2 RVA2 frame(s)
|
114
|
+
|
115
|
+
Normalize does that. Rare is the software reading that.
|
116
|
+
I've never seen those frames since id3v2 -l doesn't know them.
|
117
|
+
|
118
|
+
|
119
|
+
3. APE tags
|
120
|
+
|
121
|
+
Gah, another Tag format. Foobar2000 uses this as default.
|
122
|
+
It's getting real-hy messy folks
|
123
|
+
|
124
|
+
|
125
|
+
4. Per convention in ID3 tags
|
126
|
+
|
127
|
+
Well, I myself once used the ID3v1 comment field for storing the mix rva value (textual) ... but that is a tad too unspecific.
|
128
|
+
I then also used user-defined ID3v2 comments like that:
|
129
|
+
|
130
|
+
[thomas@thorvas /home/thomas-data/mpg123-neu/svn/trunk]$ id3v2 -l /mnt/knecht_mp3/music/underworld/second_toughest_in_the_infants/02-banstyle_sappys_curry.mp3
|
131
|
+
id3v1 tag info for /mnt/knecht_mp3/music/underworld/second_toughest_in_the_infants/02-banstyle_sappys_curry.mp3:
|
132
|
+
Title : banstyle sappys curry Artist: underworld
|
133
|
+
Album : second toughest in the infants Year: 0 , Genre: Other (12)
|
134
|
+
Comment: Created by Grip Track: 2
|
135
|
+
id3v2 tag info for /mnt/knecht_mp3/music/underworld/second_toughest_in_the_infants/02-banstyle_sappys_curry.mp3:
|
136
|
+
TYER (Year): 0
|
137
|
+
TRCK (Track number/Position in set): 2
|
138
|
+
COMM (Comments): (ID3v1 Comment)[XXX]: Created by Grip
|
139
|
+
TCON (Content type): Other (12)
|
140
|
+
TPE1 (Lead performer(s)/Soloist(s)): underworld
|
141
|
+
TALB (Album/Movie/Show title): second toughest in the infants
|
142
|
+
TIT2 (Title/songname/content description): banstyle sappys curry
|
143
|
+
COMM (Comments): (RVA)[]: 4.3291
|
144
|
+
COMM (Comments): (RVA_ALBUM)[]: 3.666101
|
145
|
+
|
146
|
+
That still doesn't look like a bad Idea to me. Not bothering with byte ordering and whatnot. Just atof(id3v2_comm_rva).
|
147
|
+
One could still add dB, though.
|
148
|
+
|
149
|
+
Another convention is (rockbox mailinglist, not checked myself) used by Foobar:
|
150
|
+
|
151
|
+
TXXX (User defined text information): (replaygain_track_gain): -7.17 dB
|
152
|
+
TXXX (User defined text information): (replaygain_track_peak): 1.057122
|
153
|
+
TXXX (User defined text information): (replaygain_album_gain): -6.53 dB
|
154
|
+
TXXX (User defined text information): (replaygain_album_peak): 1.107456
|
155
|
+
|
156
|
+
So what are custom comment fields for when there are also custom text fields? They look very similar to me.
|
157
|
+
|
158
|
+
|
159
|
+
5. Leave the haunted music file alone and store metadata externally.
|
160
|
+
|
161
|
+
That's the only sane way for stuff like album art... and it's the way I do it in my music archive. the wrapper script reads the adjustment values and then sets an adjusted volume.
|
162
|
+
That's fine for my mixing daemon that manupulates the pcm data anyway, but it would be nice to have this functionality in the minimalist console mode. too.
|
163
|
+
Even more since it can be done without additional cpu power during decoding (well, one-time set up of the decode tables is needed for every track) similar to the equalizer.
|
164
|
+
I could simply start with text files with lines like
|
165
|
+
|
166
|
+
RVA_MIX: 3.4dB
|
167
|
+
RVA_ALBUM: 1.7dB
|
168
|
+
|
169
|
+
Prob here is that the effort to open and parse that extra file may hinder gapless decoding between tracks...
|
170
|
+
Well, one could parse all metadata files for a list of tracks before playback starts.
|
171
|
+
But all this won't work for streams via stdin (hm, one could argue if the stream needs RVA at all).
|
@@ -0,0 +1,218 @@
|
|
1
|
+
Control interface to generic frontends
|
2
|
+
|
3
|
+
The generic remote interface allows frontends to easily control
|
4
|
+
mpg123 by commands through stdin/stdout. To start the generic
|
5
|
+
remote interface, start mpg123 with parameter -R.
|
6
|
+
|
7
|
+
In case of a frontend that starts mpg123 with the -s option to read the audio from stdout, the --remote-err option is automatically activated to send responses to stderr so that stdout stays clean for audio.
|
8
|
+
|
9
|
+
(Still the case?)
|
10
|
+
As an example it's used by IRMP3, a tool that allows you to
|
11
|
+
control mpg123 with a standard infrared remote control. See
|
12
|
+
http://www.fasta.fh-dortmund.de/users/andy/irmp3/ for more
|
13
|
+
information.
|
14
|
+
|
15
|
+
You can also specify --fifo <path> to create a named pipe at <path> and listen on that for commands instead stdin.
|
16
|
+
That way, you can deliberately control mpg123 by echoing into the named pipe from any terminal / program.
|
17
|
+
The command respones are still sent to standard out or standard error (depending on -s or --remote-err switches).
|
18
|
+
|
19
|
+
|
20
|
+
COMMAND CODES
|
21
|
+
-------------
|
22
|
+
|
23
|
+
You can get this info via the control command "help".
|
24
|
+
|
25
|
+
HELP/H: command listing (LONG/SHORT forms), command case insensitve
|
26
|
+
|
27
|
+
LOAD/L <trackname>: load and start playing resource <trackname>
|
28
|
+
|
29
|
+
LOADPAUSED/LP <trackname>: load but do not start playing resource <trackname>
|
30
|
+
|
31
|
+
LOADLIST <entry> <url>: load a playlist from given <url>, and display its entries, optionally load and play one of these specificed by the integer <entry> (<0: just list, 0: play last track, >0:play track with that position in list)
|
32
|
+
|
33
|
+
PAUSE/P: pause playback
|
34
|
+
|
35
|
+
STOP/S: stop playback (closes file)
|
36
|
+
|
37
|
+
JUMP/J <frame>|<+offset>|<-offset>|<[+|-]seconds>s: jump to mpeg frame <frame> or change position by offset, same in seconds if number followed by "s"
|
38
|
+
|
39
|
+
VOLUME/V <percent>: set volume in % (0..100...); float value
|
40
|
+
|
41
|
+
RVA off|(mix|radio)|(album|audiophile): set rva mode
|
42
|
+
|
43
|
+
EQ/E <channel> <band> <value>: set equalizer value for frequency band 0 to 31 on channel 1 (left) or 2 (right) or 3 (both)
|
44
|
+
|
45
|
+
EQFILE <filename>: load EQ settings from a file
|
46
|
+
|
47
|
+
SHOWEQ: show all equalizer settings (as <channel> <band> <value> lines in a SHOWEQ block (like TAG))
|
48
|
+
|
49
|
+
SEEK/K <sample>|<+offset>|<-offset>: jump to output sample position <samples> or change position by offset
|
50
|
+
|
51
|
+
SCAN: scan through the file, building seek index
|
52
|
+
|
53
|
+
SAMPLE: print out the sample position and total number of samples
|
54
|
+
|
55
|
+
SEQ <bass> <mid> <treble>: simple eq setting...
|
56
|
+
|
57
|
+
PITCH <[+|-]value>: adjust playback speed (+0.01 is 1 % faster)
|
58
|
+
|
59
|
+
SILENCE: be silent during playback (meaning silence in text form)
|
60
|
+
|
61
|
+
STATE: Print auxilliary state info in several lines (just try it to see what info is there).
|
62
|
+
|
63
|
+
TAG/T: Print all available (ID3) tag info, for ID3v2 that gives output of all collected text fields, using the ID3v2.3/4 4-character names.
|
64
|
+
The output is multiple lines, begin marked by "@T {", end by "@T }".
|
65
|
+
ID3v1 data is like in the @I info lines (see below), just with "@T" in front.
|
66
|
+
An ID3v2 data field is introduced via ([ ... ] means optional):
|
67
|
+
@T ID3v2.<NAME>[ [lang(<LANG>)] desc(<description>)]:
|
68
|
+
The lines of data follow with "=" prefixed:
|
69
|
+
@T =<one line of content in UTF-8 encoding>
|
70
|
+
meaning of the @S stream info:
|
71
|
+
|
72
|
+
S <mpeg-version> <layer> <sampling freq> <mode(stereo/mono/...)> <mode_ext> <framesize> <stereo> <copyright> <error_protected> <emphasis> <bitrate> <extension> <vbr(0/1=yes/no)>
|
73
|
+
The @I lines after loading a track give some ID3 info, the format:
|
74
|
+
@I ID3:artist album year comment genretext
|
75
|
+
where artist,album and comment are exactly 30 characters each, year is 4 characters, genre text unspecified.
|
76
|
+
You will encounter "@I ID3.genre:<number>" and "@I ID3.track:<number>".
|
77
|
+
Then, there is an excerpt of ID3v2 info in the structure
|
78
|
+
@I ID3v2.title:Blabla bla Bla
|
79
|
+
for every line of the "title" data field. Likewise for other fields (author, album, etc).
|
80
|
+
|
81
|
+
|
82
|
+
RESPONSE CODES
|
83
|
+
--------------
|
84
|
+
|
85
|
+
Note: mpg123 returns errors on stderr, so your frontend should
|
86
|
+
look not only at stdout but also at stderr for responses.
|
87
|
+
It is a good idea to use --remote-err and just look at stderr.
|
88
|
+
|
89
|
+
@R MPG123 (ThOr) v7
|
90
|
+
Startup version message. Everything after MPG123 is auxilliary information about behaviour and command support, ID3v2 tag support is new in v3.
|
91
|
+
|
92
|
+
@I ID3:<a><b><c>
|
93
|
+
Status message after loading a song (ID3 song info)
|
94
|
+
a = title (exactly 30 chars)
|
95
|
+
b = artist (exactly 30 chars)
|
96
|
+
c = album (exactly 30 chars)
|
97
|
+
d = year (exactly 4 chars)
|
98
|
+
e = comment (exactly 30 chars)
|
99
|
+
f = genre (string)
|
100
|
+
|
101
|
+
@I ID3.genre:<number>
|
102
|
+
@I ID3.track:<number>
|
103
|
+
Optional lines with additional ID3v1 info (if present): Genre ID and track number in set.
|
104
|
+
|
105
|
+
@I ID3v2.title:<text>
|
106
|
+
After loading a track with ID3v2 info, such lines occur for every line of the "title" data field and likewise for other fields (author, album, etc).
|
107
|
+
|
108
|
+
@I <a>
|
109
|
+
Status message after loading a song (no ID3 song info)
|
110
|
+
a = filename without path and extension
|
111
|
+
|
112
|
+
@I LISTENTRY <n>: <url>
|
113
|
+
printout of playlists loaded with LOADLIST
|
114
|
+
|
115
|
+
@S <a> <b> ...
|
116
|
+
Stream info at beginning of playback, meaning
|
117
|
+
S <mpeg-version> <layer> <sampling freq> <mode(stereo/mono/...)> <mode_ext> <framesize> <stereo> <copyright> <error_protected> <emphasis> <bitrate> <extension> <vbr(0/1=yes/no)>
|
118
|
+
|
119
|
+
@S <a> <b> <c> <d> <e> <f> <g> <h> <i> <j> <k> <l>
|
120
|
+
Status message after loading a song (stream info)
|
121
|
+
a = mpeg type (string)
|
122
|
+
b = layer (int)
|
123
|
+
c = sampling frequency (int)
|
124
|
+
d = mode (string)
|
125
|
+
e = mode extension (int)
|
126
|
+
f = framesize (int)
|
127
|
+
g = stereo (int)
|
128
|
+
h = copyright (int)
|
129
|
+
i = error protection (int)
|
130
|
+
j = emphasis (int)
|
131
|
+
k = bitrate (int)
|
132
|
+
l = extension (int)
|
133
|
+
|
134
|
+
@F <a> <b> <c> <d>
|
135
|
+
Status message during playing (frame info)
|
136
|
+
a = framecount (int)
|
137
|
+
b = frames left this song (int)
|
138
|
+
c = seconds (float)
|
139
|
+
d = seconds left (float)
|
140
|
+
|
141
|
+
@P <a>
|
142
|
+
Playing status
|
143
|
+
a = 0: playing stopped
|
144
|
+
a = 1: playing paused
|
145
|
+
a = 2: playing unpaused
|
146
|
+
|
147
|
+
@E <a>
|
148
|
+
An error occured
|
149
|
+
Errors may be also reported by mpg123 through
|
150
|
+
stderr (without @E)
|
151
|
+
a = error message (string)
|
152
|
+
|
153
|
+
@J <n>
|
154
|
+
Jumped to frame n.
|
155
|
+
|
156
|
+
@RVA <mode>
|
157
|
+
Switched to specified RVA mode.
|
158
|
+
|
159
|
+
@V <volume>%
|
160
|
+
Set volume to specified value (float, percent).
|
161
|
+
|
162
|
+
@<x> : <y> : <z>
|
163
|
+
Set equalizer value z for band y of channel x.
|
164
|
+
|
165
|
+
@bass: <b> mid: <m> treble: <t>
|
166
|
+
Set simple equalizer control for bass, mid, treble.
|
167
|
+
|
168
|
+
@T <response from TAG command>
|
169
|
+
The output is multiple lines, begin marked by "@T {", end by "@T }".
|
170
|
+
ID3v1 data is like in the @I info lines, just with "@T" in front.
|
171
|
+
An ID3v2 data field is introduced via ([ ... ] means optional):
|
172
|
+
@T ID3v2.<NAME>[ [lang(<LANG>)] desc(<description>)]:
|
173
|
+
The lines of data follow with "=" prefixed:
|
174
|
+
@T =<one line of content in UTF-8 encoding>
|
175
|
+
|
176
|
+
|
177
|
+
EQUALIZER CONTROL (History)
|
178
|
+
---------------------------
|
179
|
+
|
180
|
+
WARNING: The interpretation of the command arguments changed. The channel is either 1 or 2 or 3 (left, right, both).
|
181
|
+
It used to be 0 or 1 for left or right but the change slipped through during libmpg123 work and now it is a fact.
|
182
|
+
Sorry.
|
183
|
+
|
184
|
+
Cold Feet Audio Patch for MPG123
|
185
|
+
|
186
|
+
10.07.2002
|
187
|
+
|
188
|
+
This is a dirty little hack to enable the equalizer in mpg123's
|
189
|
+
generic_control interface. It works like this, there are two
|
190
|
+
different channels on the equalizer and 32 frequencys.
|
191
|
+
|
192
|
+
The hack just enables mpg123's built in equalizer to run real-time.
|
193
|
+
We haven't built in any capability to save the eq, you're frontend
|
194
|
+
will have to handle that part, and init the eq on the startup of
|
195
|
+
mpg123.
|
196
|
+
|
197
|
+
K, it works like this:
|
198
|
+
|
199
|
+
#./mpg123 -R - <---- This command will start mpg123 in 'frontend' mode.
|
200
|
+
|
201
|
+
If you want to send it some eq values you'd send it:
|
202
|
+
eq X Y V[ENTER]
|
203
|
+
|
204
|
+
X = The channel. It can be either 0 or 1. I haven't put any error checking
|
205
|
+
in, so it probably wouldn't be a good idea to go out of bounds. (integer)
|
206
|
+
Y = This is the frequency, it can be 0 to 31. 0 being closer to treble and
|
207
|
+
31 being closer to bass. (integer)
|
208
|
+
V = The raw value of your equalizer setting. I've found that the values work
|
209
|
+
best between 0.00 and 3.00. When mpg123 starts up, all of them are set
|
210
|
+
to 1.00.
|
211
|
+
|
212
|
+
OK, have fun! If you have any questions or found some bugs, please contact
|
213
|
+
nutcase@dtmf.org
|
214
|
+
|
215
|
+
Thanks,
|
216
|
+
nut
|
217
|
+
|
218
|
+
Note by Thomas Orgis: The contact appears to be dead.
|