Video Rendering#
Screenbox renders video through LibVLC's Direct3D11 output module, integrated into the UWP environment via a XAML SwapChain panel. The rendering pipeline is initialized on a background thread by PlayerElementViewModel, which assembles LibVLC command-line arguments (including upscale mode) and hands them to PlayerService.Initialize(). LibVLC is created with the --aout=winstore audio backend and any SwapChain options required by the UWP host.
Video Upscaling (d3d11-upscale-mode)#
Screenbox exposes three upscaling modes via the VideoUpscaleOption enum :
| Setting | LibVLC Argument |
|---|---|
Linear (default) | (omitted β LibVLC default) |
Point | --d3d11-upscale-mode=point |
Super (RTX VSR) | --d3d11-upscale-mode=super |
The --d3d11-upscale-mode argument is appended only when the setting is not Linear . The setting is persisted under Advanced/VideoUpscale and requires an app relaunch to take effect, because LibVLC is configured at initialization time .
Known Issue: Black Screen with RTX Video Super Resolution (HEVC 10-bit)#
Symptoms#
When the upscale mode is set to Super (RTX VSR), HEVC (x265) content β particularly 10-bit or high-resolution files β plays with audio only; the main video window is black. The mini-player/playlist preview is unaffected . H.264 content is generally not affected .
Confirmed affected configurations:
- RTX 4070 and RTX 5070, NVIDIA driver β₯ 572.16
- Windows 11 25H2
Root Cause#
This is an upstream LibVLC bug in the Direct3D11 module. The Screenbox maintainer identified the root cause in Direct3D11Open: when an external Direct3D device is used (as in UWP), D3D11_GetDriverVersion is never called, so the device is never populated with driver version info. Without that, D3D11_UpscalerCreate cannot create the RTX scaler and the render falls back to black . The same black-screen symptom affects VLC 3.0.21 itself; MPC-HC is unaffected because it uses a different rendering pipeline .
There is no detection or graceful fallback in Screenbox today β when scaler creation fails silently, the main render window simply shows black .
Workarounds#
- Disable RTX Video Super Resolution in NVIDIA Control Panel or switch the Screenbox upscale setting back to Linear .
- Disable Variable Refresh Rate (VRR) β may resolve the issue in some configurations .
- Override hardware decoding via Advanced Mode β Global Arguments:
--avcodec-hw=none(software decode) or--avcodec-hw=d3d11va(D3D11 hardware decode) .
Status#
No fix is available at the Screenbox level. The bug must be resolved in LibVLC's Direct3D11 module. Tracked in issue #729 and issue #549. A UX mitigation (detect scaler failure β notify user or auto-fall back to linear scaling) has been proposed but not yet implemented .
Key Source Files#
| File | Purpose |
|---|---|
PlayerElementViewModel.cs | Builds LibVLC args, manages player lifecycle |
PlayerService.cs | Calls InitializeLibVlc, owns the LibVLC instance |
SettingsService.cs | Persists VideoUpscale setting |
SettingsOptions.cs (VideoUpscaleOption enum) | Enum for upscale modes |