diff --git a/source/snd_alsa_0_5.c b/source/snd_alsa_0_5.c index c93905d..ed34ceb 100644 --- a/source/snd_alsa_0_5.c +++ b/source/snd_alsa_0_5.c @@ -114,7 +114,7 @@ qboolean SNDDMA_Init(void) { int rc=0,i; char *err_msg=""; - int rate,format,bps,stereo,frag_size; + int rate=-1,format=-1,bps,stereo=-1,frag_size; unsigned int mask; mask = snd_cards_mask(); @@ -128,6 +128,27 @@ qboolean SNDDMA_Init(void) if ((i=COM_CheckParm("-snddev"))!=0) { dev=atoi(com_argv[i+1]); } + if ((i=COM_CheckParm("-sndbits")) != 0) { + i = atoi(com_argv[i+1]); + if (i==16) { + format = SND_PCM_SFMT_S16_LE; + } else if (i==8) { + format = SND_PCM_SFMT_U8; + } else { + Con_Printf("Error: invalid sample bits: %d\n", i); + return 0; + } + } + if ((i=COM_CheckParm("-sndspeed")) != 0) { + rate = atoi(com_argv[i+1]); + if (rate!=44100 && rate!=22050 && rate!=11025) { + Con_Printf("Error: invalid sample rate: %d\n", rate); + return 0; + } + } + if ((i=COM_CheckParm("-sndmono")) != 0) { + stereo=0; + } if (card==-1) { for (card=0; card=2) { + if (stereo && cinfo.max_voices>=2) { stereo=1; } else { stereo=0;