[vlc-commits] PulseAudio: correct tlength value w.r.t. to VLC behavior
Rémi Denis-Courmont
git at videolan.org
Tue Jul 19 17:11:30 CEST 2011
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Jul 19 18:11:11 2011 +0300| [981005b0e1d9c015166280e7509305c5951c1518] | committer: Rémi Denis-Courmont
PulseAudio: correct tlength value w.r.t. to VLC behavior
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=981005b0e1d9c015166280e7509305c5951c1518
---
modules/audio_output/pulse.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c
index 13494cb..1381559 100644
--- a/modules/audio_output/pulse.c
+++ b/modules/audio_output/pulse.c
@@ -489,7 +489,13 @@ static int Open(vlc_object_t *obj)
const uint32_t byterate = pa_bytes_per_second(&ss);
struct pa_buffer_attr attr;
attr.maxlength = -1;
- attr.tlength = byterate * AOUT_MAX_PREPARE_TIME / CLOCK_FREQ;
+ /* 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 = byterate * AOUT_MIN_PREPARE_TIME / CLOCK_FREQ;
attr.prebuf = 0; /* trigger manually */
attr.minreq = -1;
attr.fragsize = 0; /* not used for output */
More information about the vlc-commits
mailing list