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

Thomas Guillem thomas at gllm.fr
Fri Nov 20 21:14:07 CET 2020


OK with the direction this patch set is going.

Will do another review on Monday.

On Fri, Nov 20, 2020, at 21:03, Thomas Guillem wrote:
> 
> 
> 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
> _______________________________________________
> 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