[vlc-devel] [PATCH 0/8 v1] Direct3D callbacks resizing

Steve Lhomme robux4 at ycbcr.xyz
Mon May 13 13:54:45 CEST 2019


The D3D callbacks currently don't know the size of the host texture/window.
That results in stretching as we assume it has the visible size of the video
being played. The text is also rendered for that size, which can give bad
results when stretching/zooming.

This patchset proposes a solution to solve that. When the "device" is created
(a callback of the host called by the display module) we provide a callback
that can be called by the host to init/update the size to render to. This way
the callback is always tied to the display it belongs to, even if there are
many used at once. If the display module is recreated there's a cleanup/setup
callback sequence that will update this callback.

On the core side, it works by reporting the size of the window directly from
the display module. We already report many changes that are usually assumed to
come from the window module. In this case the wdummy cannot handle the window
size by itself.

There was a bug in the core where the initial size (visible source) was used
even after the window size was reported to be different. It turns out that the
core is using the display_cfg to compute sizes when variables are triggered on
init, even after the display module has been created and the size may have
changed. I cleaned that by making sure we know when we're using the initial
display config because we don't have a "mutable" one yet.

Steve Lhomme (8):
  video output: misc cleaning
  video output: remove unused variable
  vout display: use a helper function to set the window title
  video_output: use the vout_display_cfg_t in use by the display when
    possible
  video_output: rename display_cfg to init_cfg
  libvlc: provide a callback to the host that it can call when its size
    changes
  doc: D3D11 callbacks: set the rendering size when the window size
    changes
  doc: D3D9 callbacks: set the rendering size when the window size
    changes

 doc/libvlc/d3d11_player.cpp             | 38 +++++++++++++++++++-
 doc/libvlc/d3d9_player.c                | 37 +++++++++++++++++++-
 include/vlc/libvlc_media_player.h       |  8 +++++
 include/vlc_vout_display.h              | 10 +++++-
 modules/video_output/splitter.c         |  4 +--
 modules/video_output/win32/direct3d11.c | 12 +++++--
 modules/video_output/win32/direct3d9.c  | 12 +++++--
 modules/video_output/win32/glwin32.c    |  2 +-
 modules/video_output/win32/wingdi.c     |  2 +-
 src/video_output/display.c              |  6 ++--
 src/video_output/video_output.c         | 46 ++++++++++++-------------
 src/video_output/vout_internal.h        |  3 +-
 src/video_output/vout_wrapper.c         |  6 ++--
 13 files changed, 144 insertions(+), 42 deletions(-)

-- 
2.17.1



More information about the vlc-devel mailing list