[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