[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