From 0c915cac8f63ee4bba554e73f32a6bafa6ac4654 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Wed, 3 Aug 2016 10:31:02 +0200 Subject: [PATCH] Use a max buffer size in order to avoid problems --- src/alsa/mod.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/alsa/mod.rs b/src/alsa/mod.rs index f6b8cb9..350e64e 100644 --- a/src/alsa/mod.rs +++ b/src/alsa/mod.rs @@ -380,9 +380,6 @@ impl Stream for SamplesStream { return Poll::NotReady; } - // Add an upper bound to the available space. - let available = if available > 8192 { 8192 } else { available }; - // We now sure that we're ready to write data. match self.inner.sample_format { SampleFormat::I16 => { @@ -496,6 +493,8 @@ impl Voice { check_errors(alsa::snd_pcm_hw_params_set_format(playback_handle, hw_params.0, data_type)).expect("format could not be set"); check_errors(alsa::snd_pcm_hw_params_set_rate(playback_handle, hw_params.0, format.samples_rate.0 as libc::c_uint, 0)).expect("sample rate could not be set"); check_errors(alsa::snd_pcm_hw_params_set_channels(playback_handle, hw_params.0, format.channels.len() as libc::c_uint)).expect("channel count could not be set"); + let mut max_buffer_size = format.samples_rate.0 as alsa::snd_pcm_uframes_t / format.channels.len() as alsa::snd_pcm_uframes_t / 5; // 200ms of buffer + check_errors(alsa::snd_pcm_hw_params_set_buffer_size_max(playback_handle, hw_params.0, &mut max_buffer_size)).unwrap(); check_errors(alsa::snd_pcm_hw_params(playback_handle, hw_params.0)).expect("hardware params could not be set"); let mut sw_params = mem::uninitialized(); // TODO: RAII