[vlc-devel] [PATCH 0/6] WIP libvlc surface rendering size update

Steve Lhomme robux4 at ycbcr.xyz
Mon Jan 28 12:00:36 CET 2019


On 25/01/2019 17:26, Rémi Denis-Courmont wrote:
> This is either incorrect or misleading. VLC always renders both SPU 
> and video in window resolution, whether that's with software or 
> hardware scaling.

Correct.

> LibVLC apps should be able to select their surface size (as they are 
> able to select their embedded window size). But there are no reasons 
> why that would be SPU-specific.

It's not specific to SPU. But the video scaling doesn't change the 
quality a lot. The decoding is still done at source resolution, whereas 
SPU is rendered at "window" resolution.

So a host app would want to be able to change that based on its target 
rendering, which currently is not handle for OpenGL rendering. It's easy 
to set it on startup (write the "width"/"height" variables). But it gets 
tricky to change it during playback from libvlc.

On way I did it was to hack the vout_ControlChangeDisplaySize() (now 
known as vout_ChangeDisplaySize()) because it's common in libvlc to set 
things on vout thread. It might be cleaner to do it via a "window" 
module (like wdummy) but then that means getting the window module from 
the vout thread structure. That's an extra layer of hack just to get 
this information back to the vout thread anyway.

Alternatively the "width"/"height" variables could be coupled to a 
callback so that the vout thread gets notified when it changes. But it 
should be one variable with both values.

Another option would be to have the values in a structure stored in a 
special variable ("window-config") that a window module would listen to 
and that libvlc would trigger when it changes. A bit like the viewpoint 
is stored as a pointer and notified. I'll probably go with that.

>
> Le 25 janvier 2019 17:46:59 GMT+02:00, Steve Lhomme <robux4 at ycbcr.xyz> 
> a écrit :
>
>     When rendering in VLC the window size affects the rendering as SPU may need to
>     be rendered bigger than the video. A host app should get the same quality. If
>     it's playing a small video the SPU should still have a correct size when displayed
>     large.
>
>     So we need an API to tell libvlc the rendering area size. These patches add this
>     feature by setting the value in the vout (or in a variable if it's not created
>     yet).
>
>     It may be possible to add callbacks to "wdummy" to do the same in a more regular
>     way.
>
>     There's also a Qt sample app that renders into OpenGL.
>
>     Steve Lhomme (6):
>        libvlc: rename libvlc_video_set_output_callbacks
>        doc: add a Qt app to showcase the OpenGL surface callbacks
>        libvlc: add structures to describe the display configuration
>        WIP video_output: make vout_ControlChangeDisplaySize() public
>        libvlc: add an API to set the display configuration
>        WIP qtqlvlc: update the rendering size when changing the window size
>
>       doc/libvlc/QtGL/main.cpp          |  40 ++++
>       doc/libvlc/QtGL/qtvlcwidget.cpp   | 332 ++++++++++++++++++++++++++++++
>       doc/libvlc/QtGL/qtvlcwidget.h     |  47 +++++
>       doc/libvlc/sdl_opengl_player.cpp  |   4 +-
>       include/vlc/libvlc_media_player.h |  89 +++++++-
>       include/vlc_vout.h                |   4 +
>       lib/libvlc.sym                    |   3 +-
>       lib/media_player.c                |   5 +-
>       lib/video.c                       |  17 ++
>       src/libvlccore.sym                |   1 +
>       src/video_output/vout_internal.h  |   2 -
>       11 files changed, 530 insertions(+), 14 deletions(-)
>       create mode 100644 doc/libvlc/QtGL/main.cpp
>       create mode 100644 doc/libvlc/QtGL/qtvlcwidget.cpp
>       create mode 100644 doc/libvlc/QtGL/qtvlcwidget.h
>
>
> -- 
> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez 
> excuser ma brièveté.
>
> _______________________________________________
> 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