[vlc-devel] [PATCH 1/3] vout: fail if the display module can't handle the projection_mode

Rémi Denis-Courmont remi at remlab.net
Wed Nov 16 21:56:37 CET 2016


Le keskiviikkona 16. marraskuuta 2016, 21.39.17 EET Steve Lhomme a écrit :
> On Wed, Nov 16, 2016 at 7:06 PM, Rémi Denis-Courmont <remi at remlab.net> 
wrote:
> > Le keskiviikkona 16. marraskuuta 2016, 17.59.33 EET Thomas Guillem a écrit 
:
> >> ---
> >> 
> >>  include/vlc_vout_display.h                    | 19 +++++++++++++++++++
> >>  modules/codec/omxil/vout.c                    |  3 +++
> >>  modules/hw/mmal/vout.c                        |  2 +-
> >>  modules/hw/vdpau/display.c                    |  4 ++++
> >>  modules/video_output/aa.c                     |  3 +++
> >>  modules/video_output/android/android_window.c |  2 +-
> >>  modules/video_output/caca.c                   |  2 +-
> >>  modules/video_output/caopengllayer.m          |  3 +++
> >>  modules/video_output/decklink.cpp             |  3 +++
> >>  modules/video_output/directfb.c               |  2 +-
> >>  modules/video_output/evas.c                   |  2 +-
> >>  modules/video_output/fb.c                     |  2 +-
> >>  modules/video_output/flaschen.c               |  3 +++
> >>  modules/video_output/kva.c                    |  3 +++
> >>  modules/video_output/sdl.c                    |  2 +-
> >>  modules/video_output/win32/direct2d.c         |  3 +++
> >>  modules/video_output/win32/direct3d11.c       |  3 +++
> >>  modules/video_output/win32/direct3d9.c        |  3 +++
> >>  modules/video_output/win32/directdraw.c       |  3 +++
> >>  modules/video_output/win32/wingdi.c           |  3 +++
> >>  modules/video_output/xcb/x11.c                |  4 ++++
> >>  modules/video_output/xcb/xvideo.c             |  3 +++
> >>  22 files changed, 70 insertions(+), 7 deletions(-)
> >> 
> >> diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h
> >> index 04a265a..9092261 100644
> >> --- a/include/vlc_vout_display.h
> >> +++ b/include/vlc_vout_display.h
> >> @@ -424,6 +424,25 @@ static inline bool
> >> vout_display_IsWindowed(vout_display_t *vd) }
> >> 
> >>  /**
> >> 
> >> + * Helper function that can be used by vout display modules that doesn't
> >> handle
> >> + * a non flat vd->fmt.projection_mode.
> > 
> > Sigh. Way too long summary for Doxygen function lists. Also grammar.
> > 
> >> + *
> >> + * If the current module is forced, this function will return true and
> >> the
> >> + * projection will be forced to PROJECTION_MODE_RECTANGULAR.
> > 
> > The only case where a failure is unavoidable is if *all* the conditions
> > are
> > met:
> > (1) the decoding is in hardware,
> > (2) the video surfaces are passed through,
> > (3) the video output cannot perform projection.
> > In that case, there should already be a failure as is, since the core
> > would be unable to build a full conversion pipeline.
> > 
> > Otherwise, either projection is working fine, or a software projection
> > filter is required. That filter will be needed anyway, for transcode,
> > snapshot, etc.
> > 
> > Furthermore, iterating through video outputs is rather slow in particular
> > due to slow slow OS/driver APIs and due to recursion in the "chain" video
> > filter.
> The module loading will be the slow part.

No, that´s only part of the problem.

> The test is the first thing
> done by each module on Open(), before calling any specific code.
>
> > It will become even slower when yet another parameter and level of
> > recursion is added for the conversion pipeline.
> 
> Maybe something smarter would be needed for 4.0. Maybe request "video
> display that can do sphere projection", ie requesting a set of
> capabilities and falling back with filters when that capability is not
> found.

This adds complexity and I don´t see the point.

Not to even mention that J-B wants to remove most old video outputs in 4.0.

-- 
Rémi Denis-Courmont
https://www.remlab.net/



More information about the vlc-devel mailing list