[vlc-devel] [PATCH] Restart buffering instead of flushing.

Rafaël Carré funman at videolan.org
Wed Jan 30 17:15:29 CET 2013

Le 30/01/2013 14:27, Jean-Paul Saman a écrit :
> On Wed, Jan 30, 2013 at 10:45 AM, Rafaël Carré <funman at videolan.org> wrote:
>> Hello,
>> Le 29/01/2013 12:25, Jean-Paul Saman a écrit :
>>> Now with patch attached.
>>> On Tue, Jan 29, 2013 at 11:33 AM, Jean-Paul Saman <jpsaman at videolan.org
>>> wrote:
>>>> A long time irritation in vlc since the 1.0.x days is that when the
>> buffer
>>>> delay is adjusted vlc trashes all data currently in its buffers. Thereby
>>>> introducing visual artefacts in the playback
>> What happens when playing from a slow network ?
> The current dynamic buffering adjusts the PTS delay and empties the current
> decoder buffers. This
> introduces the visual artefacts, since stream data is thrown away. This is
> regardless of network speed
> or disk speed.
> What should happen IMHO is that the buffer PTS delay value should be
> adjusted
> without emptying the decoder buffers. The user would see a pause,
> additional buffering happen and continue
> of playback at the exact point where it paused. In this case no visual
> artefacts should be seen (caused by buffering).
>>>> The attached patch is a first attempt on solving this. It is not perfect
>>>> yet, since when updating the clock jitter lipsync can be lost. And not
>>>> updating clock jitter but pausing for buffering restarts and unpausing
>>>> afterwards seems to keep lipsync.
> Pausing before restarting buffering is a workaround for loosing lipsync and
> not updating the PTS jitter delay is
> actually wrong here. When calling es_out_SetJitter() lipsync is lost.

Can you inline pause / unpause code and see exactly which code gives the
desired behaviour?

More information about the vlc-devel mailing list