1
0
mirror of http://mpg123.de/trunk/.git synced 2025-10-29 14:09:21 +03:00

Now up-to-date with the progress I made in my own SVN repository.

Lots of changes to the audio output interface - it is now a lot cleaner.


git-svn-id: svn://scm.orgis.org/mpg123/trunk@159 35dc7657-300d-0410-a2e5-dc2837fedb53
This commit is contained in:
njh
2006-06-22 04:07:53 +00:00
parent 624821a561
commit 46cd84bfbb
28 changed files with 683 additions and 834 deletions

View File

@@ -1,4 +1,17 @@
#!/bin/sh #!/bin/sh
#LINE=`grep "AC_INIT(" configure.ac`
#AC_INIT([mpg123], [0.60-devel], [mpg123-devel@lists.sourceforge.net])
cd src cd src
# Need to extract this automatically from configure.ac
echo "// Created by MakeLegacy.sh" > config.h
echo "#define PACKAGE_NAME \"mpg123\"" >> config.h
echo "#define PACKAGE_VERSION \"0.60-devel\"" >> config.h
exec make -f Makefile.legacy $* exec make -f Makefile.legacy $*

View File

@@ -124,7 +124,7 @@ AC_CHECK_HEADERS([CoreAudio/CoreAudio.h], HAVE_COREAUDIO=yes, HAVE_COREAUDIO=no)
dnl ############## Choose compiler flags and CPU dnl ############## Choose compiler flags and CPU
CFLAGS="$CFLAGS -DHAVE_CONFIG_H -Wall -std=c99" CFLAGS="$CFLAGS -Wall -std=c99"
# If debugging is enabled then make warnings errors # If debugging is enabled then make warnings errors

View File

@@ -232,7 +232,7 @@ linux-alpha:
CFLAGS="$(CFLAGS) $(CPPFLAGS) -DLINUX -DOSS -DHAVE_TERMIOS -Wall -O2 \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -DLINUX -DOSS -DHAVE_TERMIOS -Wall -O2 \
-fomit-frame-pointer -funroll-all-loops \ -fomit-frame-pointer -funroll-all-loops \
-finline-functions -ffast-math \ -finline-functions -ffast-math \
-Wall -O6 -DUSE_MMAP" \ -Wall -O6 -DHAVE_MMAP" \
mpg123-make mpg123-make
linux-alpha-esd: linux-alpha-esd:
@@ -242,7 +242,7 @@ linux-alpha-esd:
CFLAGS="$(CFLAGS) $(CPPFLAGS) -DLINUX -DOSS -DHAVE_TERMIOS -Wall -O2 \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -DLINUX -DOSS -DHAVE_TERMIOS -Wall -O2 \
-fomit-frame-pointer -funroll-all-loops \ -fomit-frame-pointer -funroll-all-loops \
-finline-functions -ffast-math \ -finline-functions -ffast-math \
-Wall -O6 -DUSE_MMAP" \ -Wall -O6 -DHAVE_MMAP" \
mpg123-make mpg123-make
#linux-ppc: #linux-ppc:
@@ -286,7 +286,7 @@ linux-ppc-esd:
linux-sparc: linux-sparc:
$(MAKE) CC=gcc \ $(MAKE) CC=gcc \
OBJECTS='decode.o dct64.o audio_sun.o term.o' \ OBJECTS='decode.o dct64.o audio_sun.o term.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -DREAL_IS_FLOAT -DUSE_MMAP -DSPARCLINUX -Wall -O2 \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -DREAL_IS_FLOAT -DHAVE_MMAP -DSPARCLINUX -Wall -O2 \
-DHAVE_TERMIOS \ -DHAVE_TERMIOS \
-fomit-frame-pointer -funroll-all-loops \ -fomit-frame-pointer -funroll-all-loops \
-finline-functions -ffast-math" \ -finline-functions -ffast-math" \
@@ -363,7 +363,7 @@ freebsd:
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \
-funroll-all-loops -ffast-math -DROT_I386 \ -funroll-all-loops -ffast-math -DROT_I386 \
-DREAD_MMAP \ -DREAD_MMAP \
-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DOSS" \ -DI386_ASSEM -DREAL_IS_FLOAT -DHAVE_MMAP -DOSS" \
mpg123-make mpg123-make
freebsd-esd: freebsd-esd:
@@ -373,7 +373,7 @@ freebsd-esd:
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \
-funroll-all-loops -ffast-math -DROT_I386 \ -funroll-all-loops -ffast-math -DROT_I386 \
-DREAD_MMAP \ -DREAD_MMAP \
-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DOSS \ -DI386_ASSEM -DREAL_IS_FLOAT -DHAVE_MMAP -DOSS \
-I/usr/local/include -L/usr/local/lib" \ -I/usr/local/include -L/usr/local/lib" \
mpg123-make mpg123-make
@@ -384,7 +384,7 @@ freebsd-frontend:
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \
-funroll-all-loops -ffast-math -DROT_I386 \ -funroll-all-loops -ffast-math -DROT_I386 \
-DFRONTEND \ -DFRONTEND \
-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DOSS" \ -DI386_ASSEM -DREAL_IS_FLOAT -DHAVE_MMAP -DOSS" \
$(FRONTEND) $(FRONTEND)
@@ -397,14 +397,14 @@ solaris-pure:
LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \ LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \
OBJECTS='decode.o dct64.o audio_sun.o term.o' \ OBJECTS='decode.o dct64.o audio_sun.o term.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -fast -native -xO4 -DSOLARIS -DHAVE_TERMIOS \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -fast -native -xO4 -DSOLARIS -DHAVE_TERMIOS \
-DUSE_MMAP" \ -DHAVE_MMAP" \
mpg123-make mpg123-make
solaris-ccscc: solaris-ccscc:
$(MAKE) CC=/usr/ccs/bin/ucbcc LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \ $(MAKE) CC=/usr/ccs/bin/ucbcc LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \
OBJECTS='decode.o dct64.o audio_sun.o term.o' \ OBJECTS='decode.o dct64.o audio_sun.o term.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -fast -native -xO4 -DSOLARIS \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -fast -native -xO4 -DSOLARIS \
-DUSE_MMAP" \ -DHAVE_MMAP" \
mpg123-make mpg123-make
# common solaris compile entries # common solaris compile entries
@@ -412,14 +412,14 @@ solaris:
$(MAKE) CC=cc LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \ $(MAKE) CC=cc LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \
OBJECTS='decode.o dct64.o audio_sun.o term.o' \ OBJECTS='decode.o dct64.o audio_sun.o term.o' \
CFLAGS="$(CFLAGS)-fast -native -xO4 -DSOLARIS \ CFLAGS="$(CFLAGS)-fast -native -xO4 -DSOLARIS \
-DUSE_MMAP -DHAVE_TERMIOS" \ -DHAVE_MMAP -DHAVE_TERMIOS" \
mpg123-make mpg123-make
solaris-gcc-profile: solaris-gcc-profile:
$(MAKE) CC='gcc' \ $(MAKE) CC='gcc' \
LDFLAGS="$(LDFLAGS) -lsocket -lnsl -pg" \ LDFLAGS="$(LDFLAGS) -lsocket -lnsl -pg" \
OBJECTS='decode.o dct64.o audio_sun.o' \ OBJECTS='decode.o dct64.o audio_sun.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -g -pg -O2 -Wall -DSOLARIS -DREAL_IS_FLOAT -DUSE_MMAP \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -g -pg -O2 -Wall -DSOLARIS -DREAL_IS_FLOAT -DHAVE_MMAP \
-DREAD_MMAP \ -DREAD_MMAP \
-funroll-all-loops -finline-functions" \ -funroll-all-loops -finline-functions" \
mpg123-make mpg123-make
@@ -428,7 +428,7 @@ solaris-gcc:
$(MAKE) CC=gcc \ $(MAKE) CC=gcc \
LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \ LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \
OBJECTS='decode.o dct64.o audio_sun.o term.o' \ OBJECTS='decode.o dct64.o audio_sun.o term.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -Wall -pedantic -DSOLARIS -DREAL_IS_FLOAT -DUSE_MMAP \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -Wall -pedantic -DSOLARIS -DREAL_IS_FLOAT -DHAVE_MMAP \
-DREAD_MMAP -DHAVE_TERMIOS \ -DREAD_MMAP -DHAVE_TERMIOS \
-funroll-all-loops -finline-functions" \ -funroll-all-loops -finline-functions" \
mpg123-make mpg123-make
@@ -437,7 +437,7 @@ solaris-gcc-esd:
$(MAKE) CC=gcc LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \ $(MAKE) CC=gcc LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \
AUDIO_LIB='-lesd -lresolv' \ AUDIO_LIB='-lesd -lresolv' \
OBJECTS='decode.o dct64.o audio_esd.o' \ OBJECTS='decode.o dct64.o audio_esd.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -Wall -DSOLARIS -DREAL_IS_FLOAT -DUSE_MMAP \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -Wall -DSOLARIS -DREAL_IS_FLOAT -DHAVE_MMAP \
-DREAD_MMAP \ -DREAD_MMAP \
-funroll-all-loops -finline-functions" \ -funroll-all-loops -finline-functions" \
mpg123-make mpg123-make
@@ -446,7 +446,7 @@ solaris-x86-gcc-oss:
$(MAKE) CC=gcc LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \ $(MAKE) CC=gcc LDFLAGS="$(LDFLAGS) -lsocket -lnsl" \
OBJECTS='decode_i386.o dct64_i386.o $(PENTIUM_DECODE).o \ OBJECTS='decode_i386.o dct64_i386.o $(PENTIUM_DECODE).o \
audio_oss.o' \ audio_oss.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -DI386_ASSEM -DREAL_IS_FLOAT -DPENTIUM_OPT -DUSE_MMAP \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -DI386_ASSEM -DREAL_IS_FLOAT -DPENTIUM_OPT -DHAVE_MMAP \
-DREAD_MMAP -DOSS \ -DREAD_MMAP -DOSS \
-Wall -O2 -mcpu=i486 \ -Wall -O2 -mcpu=i486 \
-funroll-all-loops -finline-functions" \ -funroll-all-loops -finline-functions" \
@@ -457,7 +457,7 @@ solaris-gcc-nas:
AUDIO_LIB='-L/usr/openwin/lib -laudio -lXau'\ AUDIO_LIB='-L/usr/openwin/lib -laudio -lXau'\
OBJECTS='decode.o dct64.o audio_nas.o' \ OBJECTS='decode.o dct64.o audio_nas.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -I/usr/openwin/include -Wall \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -I/usr/openwin/include -Wall \
-DSOLARIS -DREAL_IS_FLOAT -DUSE_MMAP \ -DSOLARIS -DREAL_IS_FLOAT -DHAVE_MMAP \
-DREAD_MMAP -DNAS \ -DREAD_MMAP -DNAS \
-funroll-all-loops -finline-functions" \ -funroll-all-loops -finline-functions" \
mpg123-make mpg123-make
@@ -465,7 +465,7 @@ solaris-gcc-nas:
sunos: sunos:
$(MAKE) CC=gcc \ $(MAKE) CC=gcc \
OBJECTS='decode.o dct64.o audio_sun.o' \ OBJECTS='decode.o dct64.o audio_sun.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -DSUNOS -DREAL_IS_FLOAT -DUSE_MMAP \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -DSUNOS -DREAL_IS_FLOAT -DHAVE_MMAP \
-funroll-loops" \ -funroll-loops" \
mpg123-make mpg123-make
@@ -491,24 +491,24 @@ hpux-gcc:
sgi: sgi:
$(MAKE) CC=cc \ $(MAKE) CC=cc \
OBJECTS='decode.o dct64.o audio_sgi.o' AUDIO_LIB=-laudio \ OBJECTS='decode.o dct64.o audio_sgi.o' AUDIO_LIB=-laudio \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -DSGI -DREAL_IS_FLOAT -DUSE_MMAP' \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -DSGI -DREAL_IS_FLOAT -DHAVE_MMAP' \
mpg123-make mpg123-make
sgi-gcc: sgi-gcc:
$(MAKE) CC=gcc \ $(MAKE) CC=gcc \
OBJECTS='decode.o dct64.o audio_sgi.o' AUDIO_LIB=-laudio \ OBJECTS='decode.o dct64.o audio_sgi.o' AUDIO_LIB=-laudio \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -DSGI -DREAL_IS_FLOAT -DUSE_MMAP" \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -O2 -DSGI -DREAL_IS_FLOAT -DHAVE_MMAP" \
mpg123-make mpg123-make
dec: dec:
$(MAKE) CC=cc OBJECTS='decode.o dct64.o audio_dummy.o' \ $(MAKE) CC=cc OBJECTS='decode.o dct64.o audio_dummy.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -std1 -warnprotos -O4 -DUSE_MMAP" \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -std1 -warnprotos -O4 -DHAVE_MMAP" \
LDFLAGS="$(LDFLAGS) -lrt" \ LDFLAGS="$(LDFLAGS) -lrt" \
mpg123-make mpg123-make
dec-debug: dec-debug:
$(MAKE) CC=cc OBJECTS='decode.o dct64.o audio_dummy.o' \ $(MAKE) CC=cc OBJECTS='decode.o dct64.o audio_dummy.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -g3 -std1 -warnprotos -O4 -DUSE_MMAP" \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -g3 -std1 -warnprotos -O4 -DHAVE_MMAP" \
LDFLAGS="$(LDFLAGS) -lrt" \ LDFLAGS="$(LDFLAGS) -lrt" \
mpg123-make mpg123-make
@@ -516,7 +516,7 @@ dec-nas:
$(MAKE) CC=cc LDFLAGS="$(LDFLAGS) -L/usr/X11R6/lib" \ $(MAKE) CC=cc LDFLAGS="$(LDFLAGS) -L/usr/X11R6/lib" \
AUDIO_LIB='-laudio -lXau -ldnet_stub'\ AUDIO_LIB='-laudio -lXau -ldnet_stub'\
OBJECTS='decode.o dct64.o audio_nas.o' \ OBJECTS='decode.o dct64.o audio_nas.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -I/usr/X11R6/include -std1 -warnprotos -O4 -DUSE_MMAP" \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -I/usr/X11R6/include -std1 -warnprotos -O4 -DHAVE_MMAP" \
mpg123-make mpg123-make
ultrix: ultrix:
@@ -526,14 +526,14 @@ ultrix:
aix-gcc: aix-gcc:
$(MAKE) CC=gcc OBJECTS='decode.o dct64.o audio_aix.o' \ $(MAKE) CC=gcc OBJECTS='decode.o dct64.o audio_aix.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -DAIX -Wall -O6 -DUSE_MMAP -DREAD_MMAP -DREAL_IS_FLOAT \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -DAIX -Wall -O6 -DHAVE_MMAP -DREAD_MMAP -DREAL_IS_FLOAT \
-fomit-frame-pointer -funroll-all-loops \ -fomit-frame-pointer -funroll-all-loops \
-finline-functions -ffast-math" \ -finline-functions -ffast-math" \
mpg123-make mpg123-make
aix-xlc: aix-xlc:
$(MAKE) OBJECTS='decode.o dct64.o audio_aix.o' \ $(MAKE) OBJECTS='decode.o dct64.o audio_aix.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -O3 -qstrict -qcpluscmt -DAIX -DUSE_MMAP \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -O3 -qstrict -qcpluscmt -DAIX -DHAVE_MMAP \
-DREAD_MMAP" \ -DREAD_MMAP" \
mpg123-make mpg123-make
@@ -543,7 +543,7 @@ aix-tk3play:
aix-frontend: aix-frontend:
$(MAKE) OBJECTS='decode.o dct64.o audio_aix.o \ $(MAKE) OBJECTS='decode.o dct64.o audio_aix.o \
control_sajber.o control_tk3play.o' \ control_sajber.o control_tk3play.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -DAIX -Wall -O6 -DUSE_MMAP -DFRONTEND \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -DAIX -Wall -O6 -DHAVE_MMAP -DFRONTEND \
-fomit-frame-pointer -funroll-all-loops \ -fomit-frame-pointer -funroll-all-loops \
-finline-functions -ffast-math" \ -finline-functions -ffast-math" \
$(FRONTEND) $(FRONTEND)
@@ -562,7 +562,7 @@ netbsd:
OBJECTS='decode.o dct64.o audio_sun.o' \ OBJECTS='decode.o dct64.o audio_sun.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O3 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O3 -fomit-frame-pointer \
-funroll-all-loops -ffast-math \ -funroll-all-loops -ffast-math \
-DREAL_IS_FLOAT -DUSE_MMAP -DNETBSD -DNO_RT" \ -DREAL_IS_FLOAT -DHAVE_MMAP -DNETBSD -DNO_RT" \
mpg123-make mpg123-make
netbsd-x86: netbsd-x86:
@@ -570,7 +570,7 @@ netbsd-x86:
OBJECTS='decode_i386.o dct64_i386.o audio_sun.o' \ OBJECTS='decode_i386.o dct64_i386.o audio_sun.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \
-funroll-all-loops -ffast-math -DROT_I386 \ -funroll-all-loops -ffast-math -DROT_I386 \
-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DNETBSD -DNO_RT" \ -DI386_ASSEM -DREAL_IS_FLOAT -DHAVE_MMAP -DNETBSD -DNO_RT" \
mpg123-make mpg123-make
netbsd-rt: netbsd-rt:
@@ -578,7 +578,7 @@ netbsd-rt:
OBJECTS='decode.o dct64.o audio_sun.o' \ OBJECTS='decode.o dct64.o audio_sun.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O3 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O3 -fomit-frame-pointer \
-funroll-all-loops -ffast-math \ -funroll-all-loops -ffast-math \
-DREAL_IS_FLOAT -DUSE_MMAP -DNETBSD" \ -DREAL_IS_FLOAT -DHAVE_MMAP -DNETBSD" \
mpg123-make mpg123-make
netbsd-x86-rt: netbsd-x86-rt:
@@ -586,7 +586,7 @@ netbsd-x86-rt:
OBJECTS='decode_i386.o dct64_i386.o audio_sun.o' \ OBJECTS='decode_i386.o dct64_i386.o audio_sun.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -ansi -pedantic -O4 -mcpu=i486 -fomit-frame-pointer \
-funroll-all-loops -ffast-math -DROT_I386 \ -funroll-all-loops -ffast-math -DROT_I386 \
-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DNETBSD" \ -DI386_ASSEM -DREAL_IS_FLOAT -DHAVE_MMAP -DNETBSD" \
mpg123-make mpg123-make
bsdos: bsdos:
@@ -595,7 +595,7 @@ bsdos:
audio_oss.o' \ audio_oss.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -O4 -mcpu=i486 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -O4 -mcpu=i486 -fomit-frame-pointer \
-funroll-all-loops -ffast-math -DROT_I386 \ -funroll-all-loops -ffast-math -DROT_I386 \
-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DOSS \ -DI386_ASSEM -DREAL_IS_FLOAT -DHAVE_MMAP -DOSS \
-DDONT_CATCH_SIGNALS" \ -DDONT_CATCH_SIGNALS" \
mpg123-make mpg123-make
@@ -604,7 +604,7 @@ bsdos4:
OBJECTS='decode_i386.o dct64_i386.o audio_oss.o' \ OBJECTS='decode_i386.o dct64_i386.o audio_oss.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -O4 -mcpu=i486 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -O4 -mcpu=i486 -fomit-frame-pointer \
-funroll-all-loops -ffast-math -DROT_I386 \ -funroll-all-loops -ffast-math -DROT_I386 \
-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DOSS \ -DI386_ASSEM -DREAL_IS_FLOAT -DHAVE_MMAP -DOSS \
-DREAD_MMAP -DDONT_CATCH_SIGNALS" \ -DREAD_MMAP -DDONT_CATCH_SIGNALS" \
mpg123-make mpg123-make
@@ -615,7 +615,7 @@ bsdos-nas:
audio_nas.o' \ audio_nas.o' \
CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -O4 -mcpu=i486 -fomit-frame-pointer \ CFLAGS="$(CFLAGS) $(CPPFLAGS) -Wall -O4 -mcpu=i486 -fomit-frame-pointer \
-funroll-all-loops -ffast-math -DROT_I386 \ -funroll-all-loops -ffast-math -DROT_I386 \
-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DOSS \ -DI386_ASSEM -DREAL_IS_FLOAT -DHAVE_MMAP -DOSS \
-DDONT_CATCH_SIGNALS -DNAS" \ -DDONT_CATCH_SIGNALS -DNAS" \
mpg123-make mpg123-make

View File

@@ -3,20 +3,12 @@
void audio_info_struct_init(struct audio_info_struct *ai) void audio_info_struct_init(struct audio_info_struct *ai)
{ {
#ifdef AUDIO_USES_FD
ai->fn = -1; ai->fn = -1;
#endif
#ifdef SGI
#if 0
ALconfig config;
ALport port;
#endif
#endif
ai->rate = -1; ai->rate = -1;
ai->gain = -1; ai->gain = -1;
ai->output = -1; ai->output = -1;
#ifdef ALSA
ai->handle = NULL; ai->handle = NULL;
#ifdef ALSA
ai->alsa_format.format = -1; ai->alsa_format.format = -1;
ai->alsa_format.rate = -1; ai->alsa_format.rate = -1;
ai->alsa_format.channels = -1; ai->alsa_format.channels = -1;
@@ -26,6 +18,20 @@ void audio_info_struct_init(struct audio_info_struct *ai)
ai->format = -1; ai->format = -1;
} }
void audio_info_struct_dump(struct audio_info_struct *ai)
{
fprintf(stderr, "ai->fn=%d\n", ai->fn);
fprintf(stderr, "ai->handle=%p\n", ai->handle);
fprintf(stderr, "ai->rate=%ld\n", ai->rate);
fprintf(stderr, "ai->gain=%ld\n", ai->gain);
fprintf(stderr, "ai->output=%d\n", ai->output);
fprintf(stderr, "ai->device='%s'\n", ai->device);
fprintf(stderr, "ai->channels=%d\n", ai->channels);
fprintf(stderr, "ai->format=%d\n", ai->format);
}
#define NUM_CHANNELS 2 #define NUM_CHANNELS 2
#define NUM_ENCODINGS 6 #define NUM_ENCODINGS 6
#define NUM_RATES 10 #define NUM_RATES 10

View File

@@ -6,8 +6,16 @@
#define AUDIO_OUT_INTERNAL_SPEAKER 0x02 #define AUDIO_OUT_INTERNAL_SPEAKER 0x02
#define AUDIO_OUT_LINE_OUT 0x04 #define AUDIO_OUT_LINE_OUT 0x04
enum { DECODE_TEST, DECODE_AUDIO, DECODE_FILE, DECODE_BUFFER, DECODE_WAV, enum {
DECODE_AU,DECODE_CDR,DECODE_AUDIOFILE }; DECODE_TEST,
DECODE_AUDIO,
DECODE_FILE,
DECODE_BUFFER,
DECODE_WAV,
DECODE_AU,
DECODE_CDR,
DECODE_AUDIOFILE
};
#define AUDIO_FORMAT_MASK 0x100 #define AUDIO_FORMAT_MASK 0x100
#define AUDIO_FORMAT_16 0x100 #define AUDIO_FORMAT_16 0x100
@@ -23,44 +31,21 @@ enum { DECODE_TEST, DECODE_AUDIO, DECODE_FILE, DECODE_BUFFER, DECODE_WAV,
/* 3% rate tolerance */ /* 3% rate tolerance */
#define AUDIO_RATE_TOLERANCE 3 #define AUDIO_RATE_TOLERANCE 3
#if 0
#if defined(HPUX) || defined(SUNOS) || defined(SOLARIS) || defined(OSS) || defined(__NetBSD__) || defined(SPARCLINUX) || defined(__FreeBSD__)
#endif
#endif
#define AUDIO_USES_FD
#ifdef SGI
/* #include <audio.h> */
#include <dmedia/audio.h>
#endif
#ifdef ALSA
#include <sys/asoundlib.h>
#endif
struct audio_info_struct struct audio_info_struct
{ {
#ifdef AUDIO_USES_FD
int fn; /* filenumber */ int fn; /* filenumber */
#endif void *handle; /* driver specific pointer */
#ifdef SGI
ALconfig config;
ALport port;
#endif
long rate; long rate;
long gain; long gain;
int output; int output;
#ifdef ALSA
void *handle;
snd_pcm_format_t alsa_format;
#endif
char *device; char *device;
int channels; int channels;
int format; int format;
int private1;
void *private2;
}; };
struct audio_name { struct audio_name {
@@ -69,21 +54,21 @@ struct audio_name {
char *sname; char *sname;
}; };
/* ------ Declarations from "audio.c" ------ */
extern void audio_info_struct_init(struct audio_info_struct *);
extern void audio_info_struct_dump(struct audio_info_struct *ai);
extern void audio_capabilities(struct audio_info_struct *); extern void audio_capabilities(struct audio_info_struct *);
extern void audio_fit_capabilities(struct audio_info_struct *ai,int c,int r); extern void audio_fit_capabilities(struct audio_info_struct *ai,int c,int r);
extern char *audio_encoding_name(int format); extern char *audio_encoding_name(int format);
extern int audio_play_samples(struct audio_info_struct *,unsigned char *,int);
extern int audio_open(struct audio_info_struct *); /* ------ Declarations from "audio_*.c" ------ */
extern int audio_reset_parameters(struct audio_info_struct *);
extern int audio_rate_best_match(struct audio_info_struct *ai); extern int audio_open(struct audio_info_struct *);
extern int audio_set_rate(struct audio_info_struct *); extern int audio_get_formats(struct audio_info_struct *);
extern int audio_set_format(struct audio_info_struct *); extern int audio_play_samples(struct audio_info_struct *, unsigned char *,int);
extern int audio_get_formats(struct audio_info_struct *); extern void audio_queueflush(struct audio_info_struct *ai);
extern int audio_set_channels(struct audio_info_struct *); extern int audio_close(struct audio_info_struct *);
extern int audio_write_sample(struct audio_info_struct *,short *,int);
extern int audio_close(struct audio_info_struct *);
extern void audio_info_struct_init(struct audio_info_struct *);
extern void audio_queueflush(struct audio_info_struct *ai);

View File

@@ -30,6 +30,30 @@
/* #define AUDIO_BSIZE AUDIO_IGNORE */ /* #define AUDIO_BSIZE AUDIO_IGNORE */
#define AUDIO_BSIZE 200 #define AUDIO_BSIZE 200
int audio_rate_best_match(struct audio_info_struct *ai)
{
static long valid [ ] = { 5510, 6620, 8000, 9600, 11025, 16000, 18900,
22050, 27420, 32000, 33075, 37800, 44100, 48000, 0 };
int i = 0;
long best = 8000;
if(!ai || ai->fn < 0 || ai->rate < 0) {
return -1;
}
while (valid [i])
{
if (abs(valid[i] - ai->rate) < abs(best - ai->rate))
{
best = valid [i];
}
i = i + 1;
}
ai->rate = best;
return best;
}
int audio_open(struct audio_info_struct *ai) int audio_open(struct audio_info_struct *ai)
{ {
@@ -182,45 +206,6 @@ int audio_reset_parameters(struct audio_info_struct *ai)
return 0; return 0;
} }
int audio_rate_best_match(struct audio_info_struct *ai)
{
static long valid [ ] = { 5510, 6620, 8000, 9600, 11025, 16000, 18900,
22050, 27420, 32000, 33075, 37800, 44100, 48000, 0 };
int i = 0;
long best = 8000;
if(!ai || ai->fn < 0 || ai->rate < 0) {
return -1;
}
while (valid [i])
{
if (abs(valid[i] - ai->rate) < abs(best - ai->rate))
{
best = valid [i];
}
i = i + 1;
}
ai->rate = best;
return best;
}
int audio_set_rate(struct audio_info_struct *ai)
{
return audio_reset_parameters(ai);
}
int audio_set_channels(struct audio_info_struct *ai)
{
return audio_reset_parameters(ai);
}
int audio_set_format(struct audio_info_struct *ai)
{
return audio_reset_parameters(ai);
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
/* ULTIMEDIA DOCUMENTATION SAYS: /* ULTIMEDIA DOCUMENTATION SAYS:
@@ -285,3 +270,8 @@ int audio_close(struct audio_info_struct *ai)
return 0; return 0;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -175,23 +175,15 @@ inline int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,in
/**************************************************************************/ /**************************************************************************/
/* unused */
int audio_set_rate(struct audio_info_struct *ai) {
return 0;
}
/**************************************************************************/
/* unused */
int audio_set_channels(struct audio_info_struct *ai) {
return 0;
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
return AUDIO_FORMAT_SIGNED_16; return AUDIO_FORMAT_SIGNED_16;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}
/************************************************************************** /**************************************************************************
* T H A T ' S A L L F O L K S * T H A T ' S A L L F O L K S

View File

@@ -30,6 +30,9 @@
#define SND_PCM_FMT_U16_NE SND_PCM_FMT_U16_BE #define SND_PCM_FMT_U16_NE SND_PCM_FMT_U16_BE
#endif #endif
int audio_open(struct audio_info_struct *ai) int audio_open(struct audio_info_struct *ai)
{ {
int err; int err;
@@ -38,6 +41,7 @@ int audio_open(struct audio_info_struct *ai)
if(!ai) if(!ai)
return -1; return -1;
if(ai->device) { /* parse ALSA device name */ if(ai->device) { /* parse ALSA device name */
if(strchr(ai->device,':')) { /* card with device */ if(strchr(ai->device,':')) { /* card with device */
strncpy(scard, ai->device, sizeof(scard)-1); strncpy(scard, ai->device, sizeof(scard)-1);
@@ -60,21 +64,62 @@ int audio_open(struct audio_info_struct *ai)
} }
} }
// Open the ALSA device
if((err=snd_pcm_open(&ai->handle, card, device, SND_PCM_OPEN_PLAYBACK)) < 0 ) if((err=snd_pcm_open(&ai->handle, card, device, SND_PCM_OPEN_PLAYBACK)) < 0 )
{ {
fprintf(stderr, "open failed: %s\n", snd_strerror(err)); fprintf(stderr, "open failed: %s\n", snd_strerror(err));
exit(1); exit(1);
} }
if(audio_reset_parameters(ai) < 0)
{ // Now configure the device
audio_close(ai); audio_set_playback_format( ai )
return -1; audio_set_playback_params( ai );
}
return 0; return 0;
} }
static void audio_set_playback_format(struct audio_info_struct *ai)
{
snd_pcm_format_t alsa_format;
int err;
alsa_format.rat = ai->rate;
alsa_format.channels = ai->channels;
switch(ai->format)
{
case AUDIO_FORMAT_SIGNED_16:
default:
ai->alsa_format.format=SND_PCM_SFMT_S16_NE;
break;
case AUDIO_FORMAT_UNSIGNED_8:
ai->alsa_format.format=SND_PCM_SFMT_U8;
break;
case AUDIO_FORMAT_SIGNED_8:
ai->alsa_format.format=SND_PCM_SFMT_S8;
break;
case AUDIO_FORMAT_ULAW_8:
ai->alsa_format.format=SND_PCM_SFMT_MU_LAW;
break;
case AUDIO_FORMAT_ALAW_8:
ai->alsa_format.format=SND_PCM_SFMT_A_LAW;
break;
case AUDIO_FORMAT_UNSIGNED_16:
ai->alsa_format.format=SND_PCM_SFMT_U16_NE;
break;
}
if((err=snd_pcm_playback_format(ai->handle, &alsa_format)) < 0 )
{
fprintf(stderr, "snd_pcm_playback_format failed: %s\n", snd_strerror(err));
exit(1);
}
}
static void audio_set_playback_params(struct audio_info_struct *ai) static void audio_set_playback_params(struct audio_info_struct *ai)
{ {
int err; int err;
@@ -101,91 +146,8 @@ static void audio_set_playback_params(struct audio_info_struct *ai)
} }
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
audio_set_format(ai);
audio_set_channels(ai);
audio_set_rate(ai);
return 0;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
int ret;
if(!ai || ai->rate < 0)
return -1;
ai->alsa_format.rate=ai->rate;
if((ret=snd_pcm_playback_format(ai->handle, &ai->alsa_format)) < 0 )
return -1;
audio_set_playback_params(ai);
return 0;
}
int audio_set_channels(struct audio_info_struct *ai)
{
int ret;
if(ai->alsa_format.channels < 0)
return 0;
ai->alsa_format.channels = ai->channels;
if((ret=snd_pcm_playback_format(ai->handle, &ai->alsa_format)) < 0 )
return -1;
audio_set_playback_params(ai);
return 0;
}
int audio_set_format(struct audio_info_struct *ai)
{
int ret;
if(ai->format == -1)
return 0;
switch(ai->format)
{
case AUDIO_FORMAT_SIGNED_16:
default:
ai->alsa_format.format=SND_PCM_SFMT_S16_NE;
break;
case AUDIO_FORMAT_UNSIGNED_8:
ai->alsa_format.format=SND_PCM_SFMT_U8;
break;
case AUDIO_FORMAT_SIGNED_8:
ai->alsa_format.format=SND_PCM_SFMT_S8;
break;
case AUDIO_FORMAT_ULAW_8:
ai->alsa_format.format=SND_PCM_SFMT_MU_LAW;
break;
case AUDIO_FORMAT_ALAW_8:
ai->alsa_format.format=SND_PCM_SFMT_A_LAW;
break;
case AUDIO_FORMAT_UNSIGNED_16:
ai->alsa_format.format=SND_PCM_SFMT_U16_NE;
break;
}
if((ret=snd_pcm_playback_format(ai->handle, &ai->alsa_format)) < 0 )
return -1;
audio_set_playback_params(ai);
return 0;
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
@@ -236,3 +198,8 @@ int audio_close(struct audio_info_struct *ai)
ret = snd_pcm_close(ai->handle); ret = snd_pcm_close(ai->handle);
return ret; return ret;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -7,31 +7,6 @@ int audio_open(struct audio_info_struct *ai)
return -1; return -1;
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
return 0;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_channels(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_format(struct audio_info_struct *ai)
{
return 0;
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
return AUDIO_FORMAT_SIGNED_16; return AUDIO_FORMAT_SIGNED_16;
@@ -46,3 +21,7 @@ int audio_close(struct audio_info_struct *ai)
{ {
return 0; return 0;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -76,38 +76,10 @@ int audio_open(struct audio_info_struct *ai)
else if (ai->rate > esd_rate) else if (ai->rate > esd_rate)
return -1; return -1;
ai->fn = esd_play_stream_fallback(format, ai->rate, esdserver, "mpg123"); ai->fn = esd_play_stream_fallback(format, ai->rate, ai->device, "mpg123");
return (ai->fn); return (ai->fn);
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
return 0;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
audio_close(ai);
return audio_open(ai);
}
int audio_set_channels(struct audio_info_struct *ai)
{
audio_close(ai);
return audio_open(ai);
}
int audio_set_format(struct audio_info_struct *ai)
{
audio_close(ai);
return audio_open(ai);
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
if (0 < ai->channels && ai->channels <= esd_channels if (0 < ai->channels && ai->channels <= esd_channels

View File

@@ -8,6 +8,65 @@
#include <sys/audio.h> #include <sys/audio.h>
static int audio_set_rate(struct audio_info_struct *ai)
{
if(ai->rate >= 0)
return ioctl(ai->fn,AUDIO_SET_SAMPLE_RATE,ai->rate);
return 0;
}
static int audio_set_channels(struct audio_info_struct *ai)
{
if(ai->channels<0)
return 0;
return ioctl(ai->fn,AUDIO_SET_CHANNELS,ai->channels);
}
static int audio_set_format(struct audio_info_struct *ai)
{
int fmt;
switch(ai->format) {
case -1:
case AUDIO_FORMAT_SIGNED_16:
default:
fmt = AUDIO_FORMAT_LINEAR16BIT;
break;
case AUDIO_FORMAT_UNSIGNED_8:
fprintf(stderr,"unsigned 8 bit linear not supported\n");
return -1;
case AUDIO_FORMAT_SIGNED_8:
fprintf(stderr,"signed 8 bit linear not supported\n");
return -1;
case AUDIO_FORMAT_ALAW_8:
fmt = AUDIO_FORMAT_ALAW;
break;
case AUDIO_FORMAT_ULAW_8:
fmt = AUDIO_FORMAT_ULAW;
break;
}
return ioctl(ai->fn,AUDIO_SET_DATA_FORMAT,fmt);
}
static int audio_get_formats(struct audio_info_struct *ai)
{
return AUDIO_FORMAT_SIGNED_16;
}
static int audio_reset_parameters(struct audio_info_struct *ai)
{
int ret;
ret = audio_set_format(ai);
if(ret >= 0)
ret = audio_set_channels(ai);
if(ret >= 0)
ret = audio_set_rate(ai);
return ret;
}
int audio_open(struct audio_info_struct *ai) int audio_open(struct audio_info_struct *ai)
{ {
struct audio_describe ades; struct audio_describe ades;
@@ -72,66 +131,6 @@ int audio_open(struct audio_info_struct *ai)
return ai->fn; return ai->fn;
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
int ret;
ret = audio_set_format(ai);
if(ret >= 0)
ret = audio_set_channels(ai);
if(ret >= 0)
ret = audio_set_rate(ai);
return ret;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
if(ai->rate >= 0)
return ioctl(ai->fn,AUDIO_SET_SAMPLE_RATE,ai->rate);
return 0;
}
int audio_set_channels(struct audio_info_struct *ai)
{
if(ai->channels<0)
return 0;
return ioctl(ai->fn,AUDIO_SET_CHANNELS,ai->channels);
}
int audio_set_format(struct audio_info_struct *ai)
{
int fmt;
switch(ai->format) {
case -1:
case AUDIO_FORMAT_SIGNED_16:
default:
fmt = AUDIO_FORMAT_LINEAR16BIT;
break;
case AUDIO_FORMAT_UNSIGNED_8:
fprintf(stderr,"unsigned 8 bit linear not supported\n");
return -1;
case AUDIO_FORMAT_SIGNED_8:
fprintf(stderr,"signed 8 bit linear not supported\n");
return -1;
case AUDIO_FORMAT_ALAW_8:
fmt = AUDIO_FORMAT_ALAW;
break;
case AUDIO_FORMAT_ULAW_8:
fmt = AUDIO_FORMAT_ULAW;
break;
}
return ioctl(ai->fn,AUDIO_SET_DATA_FORMAT,fmt);
}
int audio_get_formats(struct audio_info_struct *ai)
{
return AUDIO_FORMAT_SIGNED_16;
}
int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len) int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len)
@@ -144,3 +143,8 @@ int audio_close(struct audio_info_struct *ai)
close (ai->fn); close (ai->fn);
return 0; return 0;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -123,7 +123,7 @@ int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len)
int res = 0; int res = 0;
ao_device *device = (ao_device*)ai->handle; ao_device *device = (ao_device*)ai->handle;
res = ao_play(device, buf, len); res = ao_play(device, (char*)buf, len);
if (res==0) { if (res==0) {
fprintf(stderr, "audio_play_samples(): error playing samples\n"); fprintf(stderr, "audio_play_samples(): error playing samples\n");
return -1; return -1;

View File

@@ -223,7 +223,7 @@ void start(int n)
int audio_open(struct audio_info_struct *ai) int audio_open(struct audio_info_struct *ai)
{ {
long size; UInt32 size;
AudioStreamBasicDescription format; AudioStreamBasicDescription format;
#if MOSX_USES_SEM #if MOSX_USES_SEM
char s[10]; char s[10];

View File

@@ -8,6 +8,93 @@ extern int outburst;
int real_rate_printed = 0; int real_rate_printed = 0;
static int audio_rate_best_match(struct audio_info_struct *ai)
{
int ret,dsp_rate;
if(!ai || ai->fn < 0 || ai->rate < 0)
return -1;
dsp_rate = ai->rate;
ret = ioctl(ai->fn,AIOCSSPEED, (void *)dsp_rate);
ret = ioctl(ai->fn,AIOCGSPEED,&dsp_rate);
if(ret < 0)
return ret;
ai->rate = dsp_rate;
return 0;
}
static int audio_set_rate(struct audio_info_struct *ai)
{
int dsp_rate = ai->rate;
if(ai->rate >= 0) {
int ret, real_rate;
ret = ioctl(ai->fn, AIOCSSPEED, (void *)dsp_rate);
if (ret >= 0 && !real_rate_printed) {
ioctl(ai->fn,AIOCGSPEED,&real_rate);
if (real_rate != dsp_rate) {
fprintf(stderr, "Replay rate: %d Hz\n", real_rate);
real_rate_printed = 1;
}
}
return ret;
}
return 0;
}
static int audio_set_channels(struct audio_info_struct *ai)
{
int chan = ai->channels;
if(ai->channels < 1)
return 0;
return ioctl(ai->fn, AIOCSCHAN, (void *)chan);
}
static int audio_set_format(struct audio_info_struct *ai)
{
int fmts;
if(ai->format == -1)
return 0;
switch(ai->format) {
case AUDIO_FORMAT_SIGNED_16:
default:
fmts = AFMT_S16;
break;
case AUDIO_FORMAT_UNSIGNED_8:
fmts = AFMT_U8;
break;
case AUDIO_FORMAT_SIGNED_8:
fmts = AFMT_S8;
break;
case AUDIO_FORMAT_ULAW_8:
fmts = AFMT_ULAW;
break;
}
return ioctl(ai->fn, AIOCSFMT, (void *)fmts);
}
static int audio_reset_parameters(struct audio_info_struct *ai)
{
int ret;
ret = ioctl(ai->fn,AIOCRESET,NULL);
if(ret >= 0)
ret = audio_set_format(ai);
if(ret >= 0)
ret = audio_set_channels(ai);
if(ret >= 0)
ret = audio_set_rate(ai);
return ret;
}
int audio_open(struct audio_info_struct *ai) int audio_open(struct audio_info_struct *ai)
{ {
if(!ai) if(!ai)
@@ -32,90 +119,6 @@ int audio_open(struct audio_info_struct *ai)
} }
return ai->fn; return ai->fn;
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
int ret;
ret = ioctl(ai->fn,AIOCRESET,NULL);
if(ret >= 0)
ret = audio_set_format(ai);
if(ret >= 0)
ret = audio_set_channels(ai);
if(ret >= 0)
ret = audio_set_rate(ai);
return ret;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
int ret,dsp_rate;
if(!ai || ai->fn < 0 || ai->rate < 0)
return -1;
dsp_rate = ai->rate;
ret = ioctl(ai->fn,AIOCSSPEED, (void *)dsp_rate);
ret = ioctl(ai->fn,AIOCGSPEED,&dsp_rate);
if(ret < 0)
return ret;
ai->rate = dsp_rate;
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
int dsp_rate = ai->rate;
if(ai->rate >= 0) {
int ret, real_rate;
ret = ioctl(ai->fn, AIOCSSPEED, (void *)dsp_rate);
if (ret >= 0 && !real_rate_printed) {
ioctl(ai->fn,AIOCGSPEED,&real_rate);
if (real_rate != dsp_rate) {
fprintf(stderr, "Replay rate: %d Hz\n", real_rate);
real_rate_printed = 1;
}
}
return ret;
}
return 0;
}
int audio_set_channels(struct audio_info_struct *ai)
{
int chan = ai->channels;
if(ai->channels < 1)
return 0;
return ioctl(ai->fn, AIOCSCHAN, (void *)chan);
}
int audio_set_format(struct audio_info_struct *ai)
{
int fmts;
if(ai->format == -1)
return 0;
switch(ai->format) {
case AUDIO_FORMAT_SIGNED_16:
default:
fmts = AFMT_S16;
break;
case AUDIO_FORMAT_UNSIGNED_8:
fmts = AFMT_U8;
break;
case AUDIO_FORMAT_SIGNED_8:
fmts = AFMT_S8;
break;
case AUDIO_FORMAT_ULAW_8:
fmts = AFMT_ULAW;
break;
}
return ioctl(ai->fn, AIOCSFMT, (void *)fmts);
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
int ret = 0; int ret = 0;
@@ -146,3 +149,8 @@ int audio_close(struct audio_info_struct *ai)
close (ai->fn); close (ai->fn);
return 0; return 0;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -185,7 +185,7 @@ void nas_createFlow(struct audio_info_struct *ai)
info.buf_size = buf_samples * ai->channels * AuSizeofFormat(format); info.buf_size = buf_samples * ai->channels * AuSizeofFormat(format);
info.buf = (char *) malloc(info.buf_size); info.buf = (char *) malloc(info.buf_size);
if (info.buf == NULL) { if (info.buf == NULL) {
fprintf(stderr, "Unable to allocate input/output buffer of size %d\n", fprintf(stderr, "Unable to allocate input/output buffer of size %ld\n",
info.buf_size); info.buf_size);
exit(1); exit(1);
} }
@@ -230,43 +230,7 @@ int audio_open(struct audio_info_struct *ai)
return 0; return 0;
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
int ret;
ret = audio_close(ai);
if (ret >= 0)
ret = audio_open(ai);
return ret;
}
extern int audio_rate_best_match(struct audio_info_struct *ai)
{
int maxRate, minRate;
if(!ai || ai->rate < 0)
return -1;
maxRate = AuServerMaxSampleRate(info.aud);
minRate = AuServerMinSampleRate(info.aud);
if (ai->rate > maxRate) ai->rate = maxRate;
if (ai->rate < minRate) ai->rate = minRate;
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_channels(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_format(struct audio_info_struct *ai)
{
return 0;
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
@@ -337,3 +301,7 @@ int audio_close(struct audio_info_struct *ai)
return 0; return 0;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -575,11 +575,6 @@ int audio_get_formats(struct audio_info_struct *ai)
return fmts; return fmts;
} }
int audio_rate_best_match(struct audio_info_struct *ai)
{
return 0;
}
int audio_get_devices(char *info, int deviceid) int audio_get_devices(char *info, int deviceid)
{ {
char buffer[128]; char buffer[128];
@@ -632,3 +627,6 @@ int audio_get_devices(char *info, int deviceid)
} }
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -34,6 +34,124 @@
extern int outburst; extern int outburst;
static int audio_rate_best_match(struct audio_info_struct *ai)
{
int ret,dsp_rate;
if(!ai || ai->fn < 0 || ai->rate < 0)
return -1;
dsp_rate = ai->rate;
ret = ioctl(ai->fn, SNDCTL_DSP_SPEED,&dsp_rate);
if(ret < 0)
return ret;
ai->rate = dsp_rate;
return 0;
}
static int audio_set_rate(struct audio_info_struct *ai)
{
int dsp_rate;
int ret = 0;
if(ai->rate >= 0) {
dsp_rate = ai->rate;
ret = ioctl(ai->fn, SNDCTL_DSP_SPEED,&dsp_rate);
}
return ret;
}
static int audio_set_channels(struct audio_info_struct *ai)
{
int chan = ai->channels - 1;
int ret;
if(ai->channels < 0)
return 0;
ret = ioctl(ai->fn, SNDCTL_DSP_STEREO, &chan);
if(chan != (ai->channels-1)) {
return -1;
}
return ret;
}
static int audio_set_format(struct audio_info_struct *ai)
{
int sample_size,fmts;
int sf,ret;
if(ai->format == -1)
return 0;
switch(ai->format) {
case AUDIO_FORMAT_SIGNED_16:
default:
fmts = AFMT_S16_NE;
sample_size = 16;
break;
case AUDIO_FORMAT_UNSIGNED_8:
fmts = AFMT_U8;
sample_size = 8;
break;
case AUDIO_FORMAT_SIGNED_8:
fmts = AFMT_S8;
sample_size = 8;
break;
case AUDIO_FORMAT_ULAW_8:
fmts = AFMT_MU_LAW;
sample_size = 8;
break;
case AUDIO_FORMAT_ALAW_8:
fmts = AFMT_A_LAW;
sample_size = 8;
break;
case AUDIO_FORMAT_UNSIGNED_16:
fmts = AFMT_U16_NE;
break;
}
#if 0
if(ioctl(ai->fn, SNDCTL_DSP_SAMPLESIZE,&sample_size) < 0)
return -1;
#endif
sf = fmts;
ret = ioctl(ai->fn, SNDCTL_DSP_SETFMT, &fmts);
if(sf != fmts) {
return -1;
}
return ret;
}
static int audio_reset_parameters(struct audio_info_struct *ai)
{
int ret;
ret = ioctl(ai->fn, SNDCTL_DSP_RESET, NULL);
if(ret < 0)
fprintf(stderr,"Can't reset audio!\n");
ret = audio_set_format(ai);
if (ret == -1)
goto err;
ret = audio_set_channels(ai);
if (ret == -1)
goto err;
ret = audio_set_rate(ai);
if (ret == -1)
goto err;
/* Careful here. As per OSS v1.1, the next ioctl() commits the format
* set above, so we must issue SNDCTL_DSP_RESET before we're allowed to
* change it again. [dk]
*/
if (ioctl(ai->fn, SNDCTL_DSP_GETBLKSIZE, &outburst) == -1 ||
outburst > MAXOUTBURST)
outburst = MAXOUTBURST;
err:
return ret;
}
int audio_open(struct audio_info_struct *ai) int audio_open(struct audio_info_struct *ai)
{ {
char usingdefdev = 0; char usingdefdev = 0;
@@ -90,141 +208,7 @@ int audio_open(struct audio_info_struct *ai)
return ai->fn; return ai->fn;
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
int ret;
ret = ioctl(ai->fn, SNDCTL_DSP_RESET, NULL);
if(ret < 0)
fprintf(stderr,"Can't reset audio!\n");
ret = audio_set_format(ai);
if (ret == -1)
goto err;
ret = audio_set_channels(ai);
if (ret == -1)
goto err;
ret = audio_set_rate(ai);
if (ret == -1)
goto err;
/* Careful here. As per OSS v1.1, the next ioctl() commits the format
* set above, so we must issue SNDCTL_DSP_RESET before we're allowed to
* change it again. [dk]
*/
if (ioctl(ai->fn, SNDCTL_DSP_GETBLKSIZE, &outburst) == -1 ||
outburst > MAXOUTBURST)
outburst = MAXOUTBURST;
err:
return ret;
}
static int audio_get_parameters(struct audio_info_struct *ai)
{
int c=-1;
int r=-1;
int f=-1;
if(ioctl(ai->fn,SNDCTL_DSP_SPEED,&r) < 0)
return -1;
if(ioctl(ai->fn,SNDCTL_DSP_STEREO,&c) < 0)
return -1;
if(ioctl(ai->fn,SNDCTL_DSP_SETFMT,&f) < 0)
return -1;
ai->rate = r;
ai->channels = c + 1;
ai->format = f;
return 0;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
int ret,dsp_rate;
if(!ai || ai->fn < 0 || ai->rate < 0)
return -1;
dsp_rate = ai->rate;
ret = ioctl(ai->fn, SNDCTL_DSP_SPEED,&dsp_rate);
if(ret < 0)
return ret;
ai->rate = dsp_rate;
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
int dsp_rate;
int ret = 0;
if(ai->rate >= 0) {
dsp_rate = ai->rate;
ret = ioctl(ai->fn, SNDCTL_DSP_SPEED,&dsp_rate);
}
return ret;
}
int audio_set_channels(struct audio_info_struct *ai)
{
int chan = ai->channels - 1;
int ret;
if(ai->channels < 0)
return 0;
ret = ioctl(ai->fn, SNDCTL_DSP_STEREO, &chan);
if(chan != (ai->channels-1)) {
return -1;
}
return ret;
}
int audio_set_format(struct audio_info_struct *ai)
{
int sample_size,fmts;
int sf,ret;
if(ai->format == -1)
return 0;
switch(ai->format) {
case AUDIO_FORMAT_SIGNED_16:
default:
fmts = AFMT_S16_NE;
sample_size = 16;
break;
case AUDIO_FORMAT_UNSIGNED_8:
fmts = AFMT_U8;
sample_size = 8;
break;
case AUDIO_FORMAT_SIGNED_8:
fmts = AFMT_S8;
sample_size = 8;
break;
case AUDIO_FORMAT_ULAW_8:
fmts = AFMT_MU_LAW;
sample_size = 8;
break;
case AUDIO_FORMAT_ALAW_8:
fmts = AFMT_A_LAW;
sample_size = 8;
break;
case AUDIO_FORMAT_UNSIGNED_16:
fmts = AFMT_U16_NE;
break;
}
#if 0
if(ioctl(ai->fn, SNDCTL_DSP_SAMPLESIZE,&sample_size) < 0)
return -1;
#endif
sf = fmts;
ret = ioctl(ai->fn, SNDCTL_DSP_SETFMT, &fmts);
if(sf != fmts) {
return -1;
}
return ret;
}
/* /*
* get formats for specific channel/rate parameters * get formats for specific channel/rate parameters
@@ -288,7 +272,7 @@ fprintf(stderr,"No");
int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len) int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len)
{ {
#ifdef PPC_ENDIAN #ifdef WORDS_BIGENDIAN
#define BYTE0(n) ((unsigned char)(n) & (0xFF)) #define BYTE0(n) ((unsigned char)(n) & (0xFF))
#define BYTE1(n) BYTE0((unsigned int)(n) >> 8) #define BYTE1(n) BYTE0((unsigned int)(n) >> 8)
#define BYTE2(n) BYTE0((unsigned int)(n) >> 16) #define BYTE2(n) BYTE0((unsigned int)(n) >> 16)
@@ -311,7 +295,7 @@ int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len)
intPtr++; intPtr++;
} }
} }
#endif /* PPC_ENDIAN */ #endif /* WORDS_BIGENDIAN */
return write(ai->fn,buf,len); return write(ai->fn,buf,len);
} }
@@ -321,3 +305,7 @@ int audio_close(struct audio_info_struct *ai)
close (ai->fn); close (ai->fn);
return 0; return 0;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -4,6 +4,9 @@
#include <fcntl.h> #include <fcntl.h>
#include <stdlib.h> #include <stdlib.h>
/* #include <audio.h> */
#include <dmedia/audio.h>
#include "mpg123.h" #include "mpg123.h"
@@ -11,27 +14,75 @@
static const char analog_output_res_name[] = ".AnalogOut"; static const char analog_output_res_name[] = ".AnalogOut";
static int audio_set_rate(struct audio_info_struct *ai, ALconfig config)
{
int dev = alGetDevice(config);
ALpv params[1];
/* Make sure the device is OK */
if (dev < 0)
{
fprintf(stderr,"audio_set_rate : %s\n",alGetErrorString(oserror()));
return 1;
}
params[0].param = AL_OUTPUT_RATE;
params[0].value.ll = alDoubleToFixed(ai->rate);
if (alSetParams(dev, params,1) < 0)
fprintf(stderr,"audio_set_rate : %s\n",alGetErrorString(oserror()));
return 0;
}
static int audio_set_channels(struct audio_info_struct *ai, ALconfig config)
{
int ret;
if(ai->channels == 2)
ret = alSetChannels(config, AL_STEREO);
else
ret = alSetChannels(config, AL_MONO);
if (ret < 0)
fprintf(stderr,"audio_set_channels : %s\n",alGetErrorString(oserror()));
return 0;
}
static int audio_set_format(struct audio_info_struct *ai, ALconfig config)
{
if (alSetSampFmt(config,AL_SAMPFMT_TWOSCOMP) < 0)
fprintf(stderr,"audio_set_format : %s\n",alGetErrorString(oserror()));
if (alSetWidth(config,AL_SAMPLE_16) < 0)
fprintf(stderr,"audio_set_format : %s\n",alGetErrorString(oserror()));
return 0;
}
int audio_open(struct audio_info_struct *ai) int audio_open(struct audio_info_struct *ai)
{ {
int dev = AL_DEFAULT_OUTPUT; int dev = AL_DEFAULT_OUTPUT;
ALconfig config = alNewConfig();
ai->config = alNewConfig(); ALport port = NULL;
/* Test for correct completion */ /* Test for correct completion */
if (ai->config == 0) { if (config == 0) {
fprintf(stderr,"audio_open : %s\n",alGetErrorString(oserror())); fprintf(stderr,"audio_open : %s\n",alGetErrorString(oserror()));
exit(-1); exit(-1);
} }
/* Set port parameters */ /* Set port parameters */
if(ai->channels == 2) if(ai->channels == 2)
alSetChannels(ai->config, AL_STEREO); alSetChannels(config, AL_STEREO);
else else
alSetChannels(ai->config, AL_MONO); alSetChannels(config, AL_MONO);
alSetWidth(ai->config, AL_SAMPLE_16); alSetWidth(config, AL_SAMPLE_16);
alSetSampFmt(ai->config,AL_SAMPFMT_TWOSCOMP); alSetSampFmt(config,AL_SAMPFMT_TWOSCOMP);
alSetQueueSize(ai->config, 131069); alSetQueueSize(config, 131069);
/* Setup output device to specified module. If there is no module /* Setup output device to specified module. If there is no module
specified in ai structure, use the default four output */ specified in ai structure, use the default four output */
@@ -59,90 +110,33 @@ int audio_open(struct audio_info_struct *ai)
} }
/* Set the device */ /* Set the device */
if (alSetDevice(ai->config,dev) < 0) if (alSetDevice(config,dev) < 0)
{ {
fprintf(stderr,"audio_open : %s\n",alGetErrorString(oserror())); fprintf(stderr,"audio_open : %s\n",alGetErrorString(oserror()));
exit(-1); exit(-1);
} }
/* Open the audio port */ /* Open the audio port */
ai->port = alOpenPort("mpg123-VSC", "w", ai->config); port = alOpenPort("mpg123-VSC", "w", config);
if(ai->port == NULL) { if(port == NULL) {
fprintf(stderr, "Unable to open audio channel: %s\n", fprintf(stderr, "Unable to open audio channel: %s\n",
alGetErrorString(oserror())); alGetErrorString(oserror()));
exit(-1); exit(-1);
} }
audio_reset_parameters(ai); ai->handle = (void*)port;
audio_set_format(ai, config);
audio_set_channels(ai, config);
audio_set_rate(ai, config);
alFreeConfig(config);
return 1; return 1;
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
int ret;
ret = audio_set_format(ai);
if(ret >= 0)
ret = audio_set_channels(ai);
if(ret >= 0)
ret = audio_set_rate(ai);
/* todo: Set new parameters here */
return ret;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
int dev = alGetDevice(ai->config);
ALpv params[1];
/* Make sure the device is OK */
if (dev < 0)
{
fprintf(stderr,"audio_set_rate : %s\n",alGetErrorString(oserror()));
return 1;
}
params[0].param = AL_OUTPUT_RATE;
params[0].value.ll = alDoubleToFixed(ai->rate);
if (alSetParams(dev, params,1) < 0)
fprintf(stderr,"audio_set_rate : %s\n",alGetErrorString(oserror()));
return 0;
}
int audio_set_channels(struct audio_info_struct *ai)
{
int ret;
if(ai->channels == 2)
ret = alSetChannels(ai->config, AL_STEREO);
else
ret = alSetChannels(ai->config, AL_MONO);
if (ret < 0)
fprintf(stderr,"audio_set_channels : %s\n",alGetErrorString(oserror()));
return 0;
}
int audio_set_format(struct audio_info_struct *ai)
{
if (alSetSampFmt(ai->config,AL_SAMPFMT_TWOSCOMP) < 0)
fprintf(stderr,"audio_set_format : %s\n",alGetErrorString(oserror()));
if (alSetWidth(ai->config,AL_SAMPLE_16) < 0)
fprintf(stderr,"audio_set_format : %s\n",alGetErrorString(oserror()));
return 0;
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
@@ -152,22 +146,30 @@ int audio_get_formats(struct audio_info_struct *ai)
int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len) int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len)
{ {
ALport port = (ALport)ai->handle;
if(ai->format == AUDIO_FORMAT_SIGNED_8) if(ai->format == AUDIO_FORMAT_SIGNED_8)
alWriteFrames(ai->port, buf, len>>1); alWriteFrames(port, buf, len>>1);
else else
alWriteFrames(ai->port, buf, len>>2); alWriteFrames(port, buf, len>>2);
return len; return len;
} }
int audio_close(struct audio_info_struct *ai) int audio_close(struct audio_info_struct *ai)
{ {
if (ai->port) { ALport port = (ALport)ai->handle;
while(alGetFilled(ai->port) > 0)
if (port) {
while(alGetFilled(port) > 0)
sginap(1); sginap(1);
alClosePort(ai->port); alClosePort(port);
alFreeConfig(ai->config); ai->handle=NULL;
} }
return 0; return 0;
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -29,8 +29,114 @@
#include <sys/ioctl.h> #include <sys/ioctl.h>
#endif #endif
static void audio_set_format_helper(struct audio_info_struct *ai,audio_info_t *ainfo);
static int audio_reset_parameters(struct audio_info_struct *ai)
{
audio_info_t ainfo;
AUDIO_INITINFO(&ainfo);
if(ai->rate != -1)
ainfo.play.sample_rate = ai->rate;
if(ai->channels >= 0)
ainfo.play.channels = ai->channels;
audio_set_format_helper(ai,&ainfo);
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) == -1)
return -1;
return 0;
}
static int audio_rate_best_match(struct audio_info_struct *ai)
{
audio_info_t ainfo;
AUDIO_INITINFO(&ainfo);
ainfo.play.sample_rate = ai->rate;
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) < 0) {
ai->rate = 0;
return 0;
}
if(ioctl(ai->fn, AUDIO_GETINFO, &ainfo) < 0) {
return -1;
}
ai->rate = ainfo.play.sample_rate;
return 0;
}
static int audio_set_rate(struct audio_info_struct *ai)
{
audio_info_t ainfo;
if(ai->rate != -1) {
AUDIO_INITINFO(&ainfo);
ainfo.play.sample_rate = ai->rate;
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) == -1)
return -1;
return 0;
}
return -1;
}
static int audio_set_channels(struct audio_info_struct *ai)
{
audio_info_t ainfo;
AUDIO_INITINFO(&ainfo);
ainfo.play.channels = ai->channels;
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) == -1)
return -1;
return 0;
}
static void audio_set_format_helper(struct audio_info_struct *ai,audio_info_t *ainfo)
{
switch(ai->format) {
case -1:
case AUDIO_FORMAT_SIGNED_16:
default:
ainfo->play.encoding = AUDIO_ENCODING_LINEAR;
ainfo->play.precision = 16;
break;
case AUDIO_FORMAT_UNSIGNED_8:
#if defined(SOLARIS) || defined(SPARCLINUX)
ainfo->play.encoding = AUDIO_ENCODING_LINEAR8;
ainfo->play.precision = 8;
break;
#endif
#ifdef NETBSD
ainfo->play.encoding = AUDIO_ENCODING_LINEAR;
ainfo->play.precision = 8;
break;
#endif
case AUDIO_FORMAT_SIGNED_8:
fprintf(stderr,"Linear signed 8 bit not supported!\n");
return;
case AUDIO_FORMAT_ULAW_8:
ainfo->play.encoding = AUDIO_ENCODING_ULAW;
ainfo->play.precision = 8;
break;
case AUDIO_FORMAT_ALAW_8:
ainfo->play.encoding = AUDIO_ENCODING_ALAW;
ainfo->play.precision = 8;
break;
}
}
static int audio_set_format(struct audio_info_struct *ai)
{
audio_info_t ainfo;
AUDIO_INITINFO(&ainfo);
audio_set_format_helper(ai,&ainfo);
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) == -1)
return -1;
return 0;
}
int audio_open(struct audio_info_struct *ai) int audio_open(struct audio_info_struct *ai)
{ {
@@ -100,112 +206,8 @@ int audio_open(struct audio_info_struct *ai)
return ai->fn; return ai->fn;
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
audio_info_t ainfo;
AUDIO_INITINFO(&ainfo);
if(ai->rate != -1)
ainfo.play.sample_rate = ai->rate;
if(ai->channels >= 0)
ainfo.play.channels = ai->channels;
audio_set_format_helper(ai,&ainfo);
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) == -1)
return -1;
return 0;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
audio_info_t ainfo;
AUDIO_INITINFO(&ainfo);
ainfo.play.sample_rate = ai->rate;
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) < 0) {
ai->rate = 0;
return 0;
}
if(ioctl(ai->fn, AUDIO_GETINFO, &ainfo) < 0) {
return -1;
}
ai->rate = ainfo.play.sample_rate;
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
audio_info_t ainfo;
if(ai->rate != -1) {
AUDIO_INITINFO(&ainfo);
ainfo.play.sample_rate = ai->rate;
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) == -1)
return -1;
return 0;
}
return -1;
}
int audio_set_channels(struct audio_info_struct *ai)
{
audio_info_t ainfo;
AUDIO_INITINFO(&ainfo);
ainfo.play.channels = ai->channels;
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) == -1)
return -1;
return 0;
}
static void audio_set_format_helper(struct audio_info_struct *ai,audio_info_t *ainfo)
{
switch(ai->format) {
case -1:
case AUDIO_FORMAT_SIGNED_16:
default:
ainfo->play.encoding = AUDIO_ENCODING_LINEAR;
ainfo->play.precision = 16;
break;
case AUDIO_FORMAT_UNSIGNED_8:
#if defined(SOLARIS) || defined(SPARCLINUX)
ainfo->play.encoding = AUDIO_ENCODING_LINEAR8;
ainfo->play.precision = 8;
break;
#endif
#ifdef NETBSD
ainfo->play.encoding = AUDIO_ENCODING_LINEAR;
ainfo->play.precision = 8;
break;
#endif
case AUDIO_FORMAT_SIGNED_8:
fprintf(stderr,"Linear signed 8 bit not supported!\n");
return;
case AUDIO_FORMAT_ULAW_8:
ainfo->play.encoding = AUDIO_ENCODING_ULAW;
ainfo->play.precision = 8;
break;
case AUDIO_FORMAT_ALAW_8:
ainfo->play.encoding = AUDIO_ENCODING_ALAW;
ainfo->play.precision = 8;
break;
}
}
int audio_set_format(struct audio_info_struct *ai)
{
audio_info_t ainfo;
AUDIO_INITINFO(&ainfo);
audio_set_format_helper(ai,&ainfo);
if(ioctl(ai->fn, AUDIO_SETINFO, &ainfo) == -1)
return -1;
return 0;
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {

View File

@@ -108,31 +108,6 @@ int audio_open(struct audio_info_struct *ai)
return 0; return 0;
} }
int audio_reset_parameters(struct audio_info_struct *ai)
{
return 0;
}
int audio_rate_best_match(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_rate(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_channels(struct audio_info_struct *ai)
{
return 0;
}
int audio_set_format(struct audio_info_struct *ai)
{
return 0;
}
int audio_get_formats(struct audio_info_struct *ai) int audio_get_formats(struct audio_info_struct *ai)
{ {
return AUDIO_FORMAT_SIGNED_16; return AUDIO_FORMAT_SIGNED_16;
@@ -224,3 +199,8 @@ int audio_close(struct audio_info_struct *ai)
nBlocks = 0; nBlocks = 0;
return(0); return(0);
} }
void audio_queueflush(struct audio_info_struct *ai)
{
}

View File

@@ -4,9 +4,8 @@
* *
* -funroll-loops (for gcc) will remove the loops for better performance * -funroll-loops (for gcc) will remove the loops for better performance
* using loops in the source-code enhances readabillity * using loops in the source-code enhances readabillity
*/ *
*
/*
* TODO: write an optimized version for the down-sampling modes * TODO: write an optimized version for the down-sampling modes
* (in these modes the bands 16-31 (2:1) or 8-31 (4:1) are zero * (in these modes the bands 16-31 (2:1) or 8-31 (4:1) are zero
*/ */

View File

@@ -41,6 +41,7 @@ for .... no flag) */
* else * else
* loptarg = &arg * loptarg = &arg
* return ((value != 0) ? value : sname) * return ((value != 0) ? value : sname)
*
* bit 1 = 1 - var is a pointer to a char (or string), * bit 1 = 1 - var is a pointer to a char (or string),
* and value is interpreted as char * and value is interpreted as char
* bit 2 = 1 - var is a pointer to int * bit 2 = 1 - var is a pointer to int

View File

@@ -21,10 +21,7 @@
#include <errno.h> #include <errno.h>
#include <ctype.h> #include <ctype.h>
#ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif
#include "mpg123.h" #include "mpg123.h"
#ifndef INADDR_NONE #ifndef INADDR_NONE

View File

@@ -7,9 +7,7 @@
*/ */
#ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif
#include <stdlib.h> #include <stdlib.h>
#include <sys/types.h> #include <sys/types.h>
@@ -1221,10 +1219,11 @@ tc_hack:
static void print_title(void) static void print_title(void)
{ {
fprintf(stderr,"High Performance MPEG 1.0/2.0 Audio Player for Layer 1, 2 and 3.\n"); fprintf(stderr,"High Performance MPEG 1.0/2.0 Audio Player for Layers 1, 2 and 3.\n");
fprintf(stderr,"Version %s. Initially written and copyright by Michael Hipp.\n", PACKAGE_VERSION); fprintf(stderr,"Version %s. Initially written and copyright by Michael Hipp.\n", PACKAGE_VERSION);
fprintf(stderr,"Uses code from various people. See 'README' for more!\n"); fprintf(stderr,"Uses code from various people, see 'AUTHORS' for full list.\n");
fprintf(stderr,"THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!\n"); fprintf(stderr,"This software comes with ABSOLUTELY NO WARRANTY. For details, see \n");
fprintf(stderr,"the enclosed file COPYING for license information (GPL).\n");
} }
static void usage(char *dummy) /* print syntax & exit */ static void usage(char *dummy) /* print syntax & exit */

View File

@@ -100,7 +100,6 @@ static int system_raw_read_head(int f,unsigned long *head)
static int system_raw_read_word(int f,int *word) static int system_raw_read_word(int f,int *word)
{ {
unsigned char buf[2]; unsigned char buf[2];
int ret;
if(my_read(f,buf,2) != 2) { if(my_read(f,buf,2) != 2) {
perror("read_word"); perror("read_word");
@@ -488,5 +487,6 @@ void main(void)
filept = 0; filept = 0;
ret = system_init(&rd1); ret = system_init(&rd1);
fprintf(stderr,"ret: %d\n",ret); fprintf(stderr,"ret: %d\n",ret);
return ret;
} }

View File

@@ -1,7 +1,5 @@
#ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif
#ifdef HAVE_TERMIOS #ifdef HAVE_TERMIOS

View File

@@ -1,11 +1,8 @@
#ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif
#ifdef HAVE_TERMIOS #ifdef HAVE_TERMIOS
#define LOOP_CYCLES 0.500000 /* Loop time in sec */ #define LOOP_CYCLES 0.500000 /* Loop time in sec */
/* /*

View File

@@ -7,6 +7,10 @@
* See xfermem.h for documentation/description. * See xfermem.h for documentation/description.
*/ */
#ifdef HAVE_CONFIG
#include "config.h"
#endif
#ifndef NOXFERMEM #ifndef NOXFERMEM
#include <stdio.h> #include <stdio.h>
@@ -27,12 +31,12 @@
#include "mpg123.h" #include "mpg123.h"
#ifndef USE_MMAP #ifndef HAVE_MMAP
#include <sys/ipc.h> #include <sys/ipc.h>
#include <sys/shm.h> #include <sys/shm.h>
#endif #endif
#if defined (USE_MMAP) && defined(MAP_ANONYMOUS) && !defined(MAP_ANON) #if defined (HAVE_MMAP) && defined(MAP_ANONYMOUS) && !defined(MAP_ANON)
#define MAP_ANON MAP_ANONYMOUS #define MAP_ANON MAP_ANONYMOUS
#endif #endif
@@ -40,7 +44,7 @@ void xfermem_init (txfermem **xf, int bufsize, int msize, int skipbuf)
{ {
int regsize = bufsize + msize + skipbuf + sizeof(txfermem); int regsize = bufsize + msize + skipbuf + sizeof(txfermem);
#ifdef USE_MMAP #ifdef HAVE_MMAP
# ifdef MAP_ANON # ifdef MAP_ANON
if ((*xf = (txfermem *) mmap(0, regsize, PROT_READ | PROT_WRITE, if ((*xf = (txfermem *) mmap(0, regsize, PROT_READ | PROT_WRITE,
MAP_ANON | MAP_SHARED, -1, 0)) == (txfermem *) -1) { MAP_ANON | MAP_SHARED, -1, 0)) == (txfermem *) -1) {
@@ -95,7 +99,7 @@ void xfermem_done (txfermem *xf)
{ {
if(!xf) if(!xf)
return; return;
#ifdef USE_MMAP #ifdef HAVE_MMAP
munmap ((caddr_t) xf, xf->size + xf->metasize + sizeof(txfermem)); munmap ((caddr_t) xf, xf->size + xf->metasize + sizeof(txfermem));
#else #else
if (shmdt((void *) xf) == -1) { if (shmdt((void *) xf) == -1) {