[vlc-commits] PulseAudio: use same period size as ALSA (fixes #7827)
Rémi Denis-Courmont
git at videolan.org
Sun Dec 9 12:59:15 CET 2012
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Dec 9 13:58:39 2012 +0200| [283d246c09e4915b7eff1a5c68575fa121a05919] | committer: Rémi Denis-Courmont
PulseAudio: use same period size as ALSA (fixes #7827)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=283d246c09e4915b7eff1a5c68575fa121a05919
---
modules/audio_output/pulse.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c
index b4465cd..5176151 100644
--- a/modules/audio_output/pulse.c
+++ b/modules/audio_output/pulse.c
@@ -783,15 +783,12 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
struct pa_buffer_attr attr;
attr.maxlength = -1;
- /* PulseAudio assumes that tlength bytes are available in the buffer. Thus
- * we need to be conservative and set the minimum value that the VLC
- * audio decoder thread warrants. Otherwise, PulseAudio buffers will
- * underrun on hardware with large buffers. VLC keeps at least
- * AOUT_MIN_PREPARE and at most AOUT_MAX_PREPARE worth of audio buffers.
- * TODO? tlength could be adaptively increased to reduce wakeups. */
- attr.tlength = pa_usec_to_bytes(AOUT_MIN_PREPARE_TIME, &ss);
+ /* PulseAudio goes berserk if the target length (tlength) is not
+ * significantly longer than 2 periods (minreq), or when the period length
+ * is unspecified and the target length is short. */
+ attr.tlength = pa_usec_to_bytes(3 * AOUT_MIN_PREPARE_TIME, &ss);
attr.prebuf = 0; /* trigger manually */
- attr.minreq = attr.tlength / 3;
+ attr.minreq = pa_usec_to_bytes(AOUT_MIN_PREPARE_TIME, &ss);
attr.fragsize = 0; /* not used for output */
sys->stream = NULL;
More information about the vlc-commits
mailing list