mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-26 14:30:48 +00:00
- Nutze 1024 Samples bei 44 kHz. Dies macht Q2 mit dem
Pulseaudio-Schrott kompatibel. - Mache s_khz im Frontend und Backend kompatibel
This commit is contained in:
parent
c7dc7eb62f
commit
f9fbe8d380
1 changed files with 40 additions and 15 deletions
|
@ -97,7 +97,8 @@ SNDDMA_Init(void)
|
||||||
{
|
{
|
||||||
char drivername[128];
|
char drivername[128];
|
||||||
SDL_AudioSpec desired;
|
SDL_AudioSpec desired;
|
||||||
SDL_AudioSpec optained;
|
SDL_AudioSpec obtained;
|
||||||
|
int tmp, val;
|
||||||
|
|
||||||
/* This should never happen,
|
/* This should never happen,
|
||||||
but this is Quake 2 ... */
|
but this is Quake 2 ... */
|
||||||
|
@ -107,9 +108,11 @@ SNDDMA_Init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
int sndbits = (Cvar_Get("sndbits", "16", CVAR_ARCHIVE))->value;
|
int sndbits = (Cvar_Get("sndbits", "16", CVAR_ARCHIVE))->value;
|
||||||
int sndfreq = (Cvar_Get("s_khz", "0", CVAR_ARCHIVE))->value;
|
int sndfreq = (Cvar_Get("s_khz", "44", CVAR_ARCHIVE))->value;
|
||||||
int sndchans = (Cvar_Get("sndchannels", "2", CVAR_ARCHIVE))->value;
|
int sndchans = (Cvar_Get("sndchannels", "2", CVAR_ARCHIVE))->value;
|
||||||
|
|
||||||
|
Com_Printf("Starting SDL audio callback.\n");
|
||||||
|
|
||||||
if (!SDL_WasInit(SDL_INIT_AUDIO))
|
if (!SDL_WasInit(SDL_INIT_AUDIO))
|
||||||
{
|
{
|
||||||
if (SDL_Init(SDL_INIT_AUDIO) == -1)
|
if (SDL_Init(SDL_INIT_AUDIO) == -1)
|
||||||
|
@ -127,7 +130,7 @@ SNDDMA_Init(void)
|
||||||
Com_Printf("SDL audio driver is \"%s\".\n", drivername);
|
Com_Printf("SDL audio driver is \"%s\".\n", drivername);
|
||||||
|
|
||||||
memset(&desired, '\0', sizeof(desired));
|
memset(&desired, '\0', sizeof(desired));
|
||||||
memset(&optained, '\0', sizeof(optained));
|
memset(&obtained, '\0', sizeof(obtained));
|
||||||
|
|
||||||
/* Users are stupid */
|
/* Users are stupid */
|
||||||
if ((sndbits != 16) && (sndbits != 8))
|
if ((sndbits != 16) && (sndbits != 8))
|
||||||
|
@ -135,7 +138,15 @@ SNDDMA_Init(void)
|
||||||
sndbits = 16;
|
sndbits = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sndfreq == 22)
|
if (sndfreq == 48)
|
||||||
|
{
|
||||||
|
desired.freq = 48000;
|
||||||
|
}
|
||||||
|
else if (sndfreq == 44)
|
||||||
|
{
|
||||||
|
desired.freq = 44100;
|
||||||
|
}
|
||||||
|
else if (sndfreq == 22)
|
||||||
{
|
{
|
||||||
desired.freq = 22050;
|
desired.freq = 22050;
|
||||||
}
|
}
|
||||||
|
@ -154,6 +165,10 @@ SNDDMA_Init(void)
|
||||||
{
|
{
|
||||||
desired.samples = 512;
|
desired.samples = 512;
|
||||||
}
|
}
|
||||||
|
else if (desired.freq <= 44100)
|
||||||
|
{
|
||||||
|
desired.samples = 1024;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
desired.samples = 2048;
|
desired.samples = 2048;
|
||||||
|
@ -163,7 +178,7 @@ SNDDMA_Init(void)
|
||||||
desired.callback = sdl_audio_callback;
|
desired.callback = sdl_audio_callback;
|
||||||
|
|
||||||
/* Okay, let's try our luck */
|
/* Okay, let's try our luck */
|
||||||
if (SDL_OpenAudio(&desired, &optained) == -1)
|
if (SDL_OpenAudio(&desired, &obtained) == -1)
|
||||||
{
|
{
|
||||||
Com_Printf("SDL_OpenAudio() failed: %s\n", SDL_GetError());
|
Com_Printf("SDL_OpenAudio() failed: %s\n", SDL_GetError());
|
||||||
SDL_QuitSubSystem(SDL_INIT_AUDIO);
|
SDL_QuitSubSystem(SDL_INIT_AUDIO);
|
||||||
|
@ -174,20 +189,30 @@ SNDDMA_Init(void)
|
||||||
dmabackend = &dma;
|
dmabackend = &dma;
|
||||||
|
|
||||||
dmapos = 0;
|
dmapos = 0;
|
||||||
dmabackend->samplebits = optained.format & 0xFF;
|
dmabackend->samplebits = obtained.format & 0xFF;
|
||||||
dmabackend->channels = optained.channels;
|
dmabackend->channels = obtained.channels;
|
||||||
dmabackend->samples = 32768;
|
|
||||||
|
tmp = (obtained.samples * obtained.channels) * 10;
|
||||||
|
if (tmp & (tmp - 1))
|
||||||
|
{ /* make it a power of two */
|
||||||
|
val = 1;
|
||||||
|
while (val < tmp)
|
||||||
|
val <<= 1;
|
||||||
|
|
||||||
|
tmp = val;
|
||||||
|
}
|
||||||
|
dmabackend->samples = tmp;
|
||||||
|
|
||||||
dmabackend->submission_chunk = 1;
|
dmabackend->submission_chunk = 1;
|
||||||
dmabackend->speed = optained.freq;
|
dmabackend->speed = obtained.freq;
|
||||||
dmasize = (dmabackend->samples * (dmabackend->samplebits / 8));
|
dmasize = (dmabackend->samples * (dmabackend->samplebits / 8));
|
||||||
dmabackend->buffer = calloc(1, dmasize);
|
dmabackend->buffer = calloc(1, dmasize);
|
||||||
|
|
||||||
Com_Printf("Starting SDL audio callback.\n");
|
SDL_PauseAudio(0);
|
||||||
SDL_PauseAudio(0);
|
|
||||||
|
|
||||||
Com_Printf("SDL audio initialized.\n");
|
Com_Printf("SDL audio initialized.\n");
|
||||||
snd_inited = 1;
|
snd_inited = 1;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Reference in a new issue