- err = snd_pcm_hw_params_set_period_size_near (pcm, hw, &frag_size, 0);
- if (0 > err) {
- Sys_Printf ("ALSA: unable to set period size near %i. %s\n",
- (int) frag_size, snd_strerror (err));
- goto error;
- }
- err = snd_pcm_hw_params (pcm, hw);
- if (0 > err) {
- Sys_Printf ("ALSA: unable to install hw params: %s\n",
- snd_strerror (err));
- goto error;
- }
- err = snd_pcm_sw_params_current (pcm, sw);
- if (0 > err) {
- Sys_Printf ("ALSA: unable to determine current sw params. %s\n",
- snd_strerror (err));
- goto error;
- }
- err = snd_pcm_sw_params_set_start_threshold (pcm, sw, ~0U);
- if (0 > err) {
- Sys_Printf ("ALSA: unable to set playback threshold. %s\n",
- snd_strerror (err));
- goto error;
- }
- err = snd_pcm_sw_params_set_stop_threshold (pcm, sw, ~0U);
- if (0 > err) {
- Sys_Printf ("ALSA: unable to set playback stop threshold. %s\n",
- snd_strerror (err));
- goto error;
- }
- err = snd_pcm_sw_params (pcm, sw);
- if (0 > err) {
- Sys_Printf ("ALSA: unable to install sw params. %s\n",
- snd_strerror (err));
- goto error;
- }
+ frag_size = 64 * width * rate / 11025;
+ err = snd_pcm_hw_params_set_period_size_near (pcm, hw, &frag_size, 0);
+ if (0 > err)
+ {
+ Con_Printf ("ALSA: unable to set period size near %i. %s\n", (int) frag_size, snd_strerror (err));
+ snd_pcm_close (pcm);
+ continue;
+ }
+ err = snd_pcm_hw_params (pcm, hw);
+ if (0 > err)
+ {
+ Con_Printf ("ALSA: unable to install hw params: %s\n", snd_strerror (err));
+ snd_pcm_close (pcm);
+ continue;
+ }
+ err = snd_pcm_sw_params_current (pcm, sw);
+ if (0 > err)
+ {
+ Con_Printf ("ALSA: unable to determine current sw params. %s\n", snd_strerror (err));
+ snd_pcm_close (pcm);
+ continue;
+ }
+ err = snd_pcm_sw_params_set_start_threshold (pcm, sw, ~0U);
+ if (0 > err)
+ {
+ Con_Printf ("ALSA: unable to set playback threshold. %s\n", snd_strerror (err));
+ snd_pcm_close (pcm);
+ continue;
+ }
+ err = snd_pcm_sw_params_set_stop_threshold (pcm, sw, ~0U);
+ if (0 > err)
+ {
+ Con_Printf ("ALSA: unable to set playback stop threshold. %s\n", snd_strerror (err));
+ snd_pcm_close (pcm);
+ continue;
+ }
+ err = snd_pcm_sw_params (pcm, sw);
+ if (0 > err)
+ {
+ Con_Printf ("ALSA: unable to install sw params. %s\n", snd_strerror (err));
+ snd_pcm_close (pcm);
+ continue;
+ }