[vlc-devel] [PATCH 00/17] Restart the display module on format changes

Thomas Guillem thomas at gllm.fr
Fri Nov 20 21:03:02 CET 2020



On Fri, Nov 20, 2020, at 15:44, Steve Lhomme wrote:
> As previously discussed, in push it's possible added filters will change the
> output of the filter chain(s). The display may be able to cope with the change
> but in case it doesn't we need to restart the display.
> 
> This patchset adds support for this (worst case) scenario. If the last filter
> chain output is different than the previous one, the display is restarted, no
> matter what.
> 
> The restart is done transparently for the decoder and the filters. When a 
> change is detected the pre-renderer code returns with a display_restart flag
> set and no wait. The vout thread loop checks that and restarts the display 
> module. The last decoded picture is still kept for the next display.
> 
> There can be some time between the time the old display is removed and the new 
> one is added and displays the new picture. So there is a display glitch. It's
> different than the window glitch the push was supposed to get rid of but still
> a glitch.

How to avoid this glitch? Add a RESTART control?  Does it happen with OpenGL?

> 
> This patchset and some previously set patches can be found here
> https://code.videolan.org/robUx4/vlc/-/tree/hevc_interlace/33
> 
> I tested with an HEVC interlaced source where adding the deinterlacing filter
> double the height of the picture.
> 
> Steve Lhomme (17):
>   video_output: avoid potential double release of displayed.current
>   video_output: rework the decision to use the next picture to display
>   video_output: reindent
>   video_output: keep the displayed.current in frame by frame if next is
>     not ready
>   video_output: remove always NULL displayed.next
>   video_output: move the first picture reading in frame by frame/regular
>     code
>   video_output: remove decoded timestamp variable
>   video_output: add description of the "source" sub-structure
>   video_output: set filter.changed when an aspect-ratio/crop change is
>     detected
>   video_output: update displayed.current directly in
>     ThreadDisplayPreparePicture()
>   video_output: handle the filter change in ThreadDisplayPrerenderNext()
>   vout_wrapper: constify the input video_format
>   video_output: group the code to setup and load the display module in a
>     function
>   video_output: group the code to release/unload the display module in a
>     function
>   video_output: do the VoutFixFormat in vout_ChangeSource()
>   video_output: initialize the filter chains with their default format
>   video_output: restart display after filter change
> 
>  src/video_output/video_output.c | 349 ++++++++++++++++++++------------
>  src/video_output/vout_private.h |   2 +-
>  src/video_output/vout_wrapper.c |   2 +-
>  3 files changed, 224 insertions(+), 129 deletions(-)
> 
> -- 
> 2.26.2
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list