git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8545
d7cf8633-e32d-0410-b094-
e92efae38249
// Open the audio device
Con_Printf ("SndSys_Init: PCM device is \"%s\"\n", pcm_name);
err = snd_pcm_open (&pcm_handle, pcm_name, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);
// Open the audio device
Con_Printf ("SndSys_Init: PCM device is \"%s\"\n", pcm_name);
err = snd_pcm_open (&pcm_handle, pcm_name, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);
{
Con_Printf ("SndSys_Init: can't open audio device \"%s\" (%s)\n",
pcm_name, snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't open audio device \"%s\" (%s)\n",
pcm_name, snd_strerror (err));
// Allocate the hardware parameters
err = snd_pcm_hw_params_malloc (&hw_params);
// Allocate the hardware parameters
err = snd_pcm_hw_params_malloc (&hw_params);
{
Con_Printf ("SndSys_Init: can't allocate hardware parameters (%s)\n",
snd_strerror (err));
goto init_error;
}
err = snd_pcm_hw_params_any (pcm_handle, hw_params);
{
Con_Printf ("SndSys_Init: can't allocate hardware parameters (%s)\n",
snd_strerror (err));
goto init_error;
}
err = snd_pcm_hw_params_any (pcm_handle, hw_params);
{
Con_Printf ("SndSys_Init: can't initialize hardware parameters (%s)\n",
snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't initialize hardware parameters (%s)\n",
snd_strerror (err));
// Set the access type
err = snd_pcm_hw_params_set_access (pcm_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
// Set the access type
err = snd_pcm_hw_params_set_access (pcm_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
{
Con_Printf ("SndSys_Init: can't set access type (%s)\n",
snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't set access type (%s)\n",
snd_strerror (err));
else
snd_pcm_format = SND_PCM_FORMAT_S16;
err = snd_pcm_hw_params_set_format (pcm_handle, hw_params, snd_pcm_format);
else
snd_pcm_format = SND_PCM_FORMAT_S16;
err = snd_pcm_hw_params_set_format (pcm_handle, hw_params, snd_pcm_format);
{
Con_Printf ("SndSys_Init: can't set sound width to %hu (%s)\n",
requested->width, snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't set sound width to %hu (%s)\n",
requested->width, snd_strerror (err));
// Set the sound channels
err = snd_pcm_hw_params_set_channels (pcm_handle, hw_params, requested->channels);
// Set the sound channels
err = snd_pcm_hw_params_set_channels (pcm_handle, hw_params, requested->channels);
{
Con_Printf ("SndSys_Init: can't set sound channels to %hu (%s)\n",
requested->channels, snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't set sound channels to %hu (%s)\n",
requested->channels, snd_strerror (err));
// Set the sound speed
err = snd_pcm_hw_params_set_rate (pcm_handle, hw_params, requested->speed, 0);
// Set the sound speed
err = snd_pcm_hw_params_set_rate (pcm_handle, hw_params, requested->speed, 0);
{
Con_Printf ("SndSys_Init: can't set sound speed to %u (%s)\n",
requested->speed, snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't set sound speed to %u (%s)\n",
requested->speed, snd_strerror (err));
buffer_size = requested->speed / 5;
err = snd_pcm_hw_params_set_buffer_size_near (pcm_handle, hw_params, &buffer_size);
buffer_size = requested->speed / 5;
err = snd_pcm_hw_params_set_buffer_size_near (pcm_handle, hw_params, &buffer_size);
{
Con_Printf ("SndSys_Init: can't set sound buffer size to %lu (%s)\n",
buffer_size, snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't set sound buffer size to %lu (%s)\n",
buffer_size, snd_strerror (err));
buffer_size /= NB_PERIODS;
err = snd_pcm_hw_params_set_period_size_near(pcm_handle, hw_params, &buffer_size, 0);
buffer_size /= NB_PERIODS;
err = snd_pcm_hw_params_set_period_size_near(pcm_handle, hw_params, &buffer_size, 0);
{
Con_Printf ("SndSys_Init: can't set sound period size to %lu (%s)\n",
buffer_size, snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't set sound period size to %lu (%s)\n",
buffer_size, snd_strerror (err));
}
err = snd_pcm_hw_params (pcm_handle, hw_params);
}
err = snd_pcm_hw_params (pcm_handle, hw_params);
{
Con_Printf ("SndSys_Init: can't set hardware parameters (%s)\n",
snd_strerror (err));
{
Con_Printf ("SndSys_Init: can't set hardware parameters (%s)\n",
snd_strerror (err));
return false;
err = snd_pcm_prepare (pcm_handle);
return false;
err = snd_pcm_prepare (pcm_handle);
{
Con_Printf ("SndSys_Recover: unable to recover (%s)\n",
snd_strerror (err));
{
Con_Printf ("SndSys_Recover: unable to recover (%s)\n",
snd_strerror (err));
return 0;
err = snd_pcm_delay (pcm_handle, &delay);
return 0;
err = snd_pcm_delay (pcm_handle, &delay);
{
if (developer.integer >= 1000 && vid_activewindow)
Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay (%s)\n",
{
if (developer.integer >= 1000 && vid_activewindow)
Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay (%s)\n",
return 0;
err = snd_pcm_delay (pcm_handle, &delay);
return 0;
err = snd_pcm_delay (pcm_handle, &delay);
{
Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay, again (%s)\n",
snd_strerror (err));
{
Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay, again (%s)\n",
snd_strerror (err));