[vlc-devel] [PATCH 0/6] Add 3D (stereoscopic) playback to the Direct3D11 vout

Steve Lhomme robux4 at ycbcr.xyz
Mon Aug 13 16:44:40 CEST 2018


This is code based on the 2017 GSoC with some cleanup and adapting to all the
D3D11 changes that happened since then.

This has been tested with sources:
- frame-sequential
- side-by-side
- top-bottom

The possible output modes are:
- 2D / left-eye
- right eye
- stereo mode
- side-by-side

When the source is not stereoscopic the right eye displays exactly the same
thing as the left eye.

It's possible to force the output mode from the UI or libvlc.

This is tested with NVIDIA 3D Stereo glasses and a compatible screen. In the
past IDXGIFactory2_IsWindowedStereoEnabled() was working and we could tell if
the hardware was capable of displaying 3D or not but it's not possible anymore
so we just try and if it fails we fallback to 2D/left-eye mode.

The Side-By-Side may be used to send 3D video to 3D TVs even if we don't detect
they can do 3D, the users just have to trigger the SBS mode on their TV.


Mohammed (Shaan) Huzaifa Danish (6):
  decoder: add code to send 3d metadata to the output modules to be
    handled
  video_output: add video-stereo-mode option to select the stereoscopic
    video output mode
  video_output: handle the dynamic change of video-stereo-mode
  libvlc: add get/set functions for libVLC stereo mode
  qt: add menu options for 3d output
  direct3d11: add 3d playback

 include/vlc/libvlc_media_player.h          |  29 +++
 include/vlc_vout.h                         |  12 +
 include/vlc_vout_display.h                 |   7 +
 include/vlc_vout_wrapper.h                 |   1 +
 lib/libvlc.sym                             |   2 +
 lib/media_player.c                         |   1 +
 lib/video.c                                |  28 +++
 modules/gui/qt/menus.cpp                   |   4 +
 modules/video_output/win32/d3d11_quad.c    | 216 ++++++++++++-----
 modules/video_output/win32/d3d11_quad.h    |  12 +-
 modules/video_output/win32/d3d11_shaders.c |  84 ++++---
 modules/video_output/win32/d3d11_shaders.h |  16 +-
 modules/video_output/win32/direct3d11.c    | 265 +++++++++++++++++++--
 src/input/decoder.c                        |   7 +-
 src/libvlc-module.c                        |  17 ++
 src/video_output/control.h                 |   1 +
 src/video_output/display.c                 |  28 +++
 src/video_output/video_output.c            |  14 ++
 src/video_output/vout_internal.h           |   1 +
 src/video_output/vout_intf.c               |  35 +++
 20 files changed, 656 insertions(+), 124 deletions(-)

-- 
2.17.0



More information about the vlc-devel mailing list