[vlc-devel] [PATCH] video_output: wait half the extra time we have without getting the display_lock

Rémi Denis-Courmont remi at remlab.net
Sat Feb 20 09:22:27 UTC 2021


Le lauantaina 20. helmikuuta 2021, 11.03.18 EET Steve Lhomme a écrit :
> On 2/19/2021 4:06 PM, Rémi Denis-Courmont wrote:
> > Le perjantaina 19. helmikuuta 2021, 15.12.49 EET Steve Lhomme a écrit :
> >> In an ideal world we would never wait between prepare and display, they
> >> would have predictable time and we could estimate exactly when we must
> >> do the prepare to be on-time for the display.
> > 
> > That's not ideal either. prepare() should rather be called at the earliest
> > option, which is to say whence the picture has been filtered and
> > converted.
> > Estimations should only be used for display() if at all.
> 
> I disagree. First the picture is not "filtered" at this stage, only
> deinterlaced and converted.

That's plain nonsense. At the stage "whence the picture has been filtered and 
converted", the picture has, by definition, been filtered.

> The user filters are applied just before rendering.

That's a bug. It prevents evening out the resources usage (both internally and 
externally with other concurrent processes), and generally being more robust 
against scheduling glitches. It's also incompatible with modern video filters 
and outputs that support queueing.

There is no basis to assume that only deinterlacing requires ahead-of-time 
processing for optimal results. Motion blur is an obvious counter example 
here. Besides, in practice deinterlacing is the only filter (if any) in most 
cases.

And indeed, audio filters don't have that bug. They filter as far ahead as 
possible. How long that is depends on the low latency setting. Not every case 
is treated as low latency just because.

> That allows to be more responsive to user changes (or if the
> filter has some internal timing).

That is optimising for an exceptional case (user interaction) within an 
exceptional case (filters active other than deinterlace). It makes zero sense, 
especially if it hurts performance and robustness.

Besides, the plan from the clock/buffer rework was pretty much for version 5.0+ 
to stop relying on the clock for pacing/buffering and instead push buffer as far 
as possible.

-- 
Реми Дёни-Курмон
http://www.remlab.net/





More information about the vlc-devel mailing list