[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