vlc | branch: master | Rémi Denis-Courmont <[email protected]> | 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; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
