https://bugs.kde.org/show_bug.cgi?id=526931
Bug ID: 526931
Summary: Black screen with OpenH264-based clients when
KPipeWire falls back to libx264 (NVIDIA, no VA-API
encode)
Classification: Plasma
Product: KRdp
Version First 6.7.5
Reported In:
Platform: Other
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: general
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Target Milestone: ---
When KRDP cannot use VA-API hardware encoding (NVIDIA GPU), KPipeWire falls
back to libx264. Clients that decode H.264 with OpenH264 (e.g. KRDC/FreeRDP on
Fedora) cannot decode the resulting stream and show only a black screen.
libx264 also warns that the stream exceeds the H.264 level limits.
Forcing KPIPEWIRE_FORCE_ENCODER=libopenh264 for the KRDP server fixes it.
STEPS TO REPRODUCE
1. Server: Fedora 44 KDE (Wayland), NVIDIA GPU with proprietary driver, full
ffmpeg from RPM Fusion (libx264 available). Enable Remote Desktop in System
Settings.
2. Client: Fedora KDE, KRDC (FreeRDP, decoding via OpenH264).
3. Connect from the client to the server.
OBSERVED RESULT
Connection succeeds and authenticates, but the remote desktop is entirely
black.
EXPECTED RESULT
The remote desktop is displayed.
SERVER LOG (krdpserver)
libva info: va_openDriver() returns -1
VAAPI: Failed to initialize display
VAAPI: current session render node "/dev/dri/renderD128" does not support H264
encoding
Hardware encoding is not supported on this device.
[libx264 @ ...] MB rate (36960000) > level limit (16711680)
[libx264 @ ...] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3
BMI2 AVX2
Note: the reported MB rate is far higher than my 3x 1080p @ 60 Hz desktop
should produce, suggesting the framerate/level passed to libx264 may be
misconfigured. The black screen also occurred with only a single 1080p monitor
enabled.
CLIENT LOG (KRDC, repeats for every frame)
[WARN][com.freerdp.codec] - [openh264_decompress]: DecodeFrame2 iBufferStatus:
0
[WARN][com.freerdp.codec] - [areRectsValid]: Rectangle 0 {0x0-3840x1080}
outside of bounding frame 0x0
[WARN][com.freerdp.gdi] - [gdi_SurfaceCommand_AVC420]: avc420_decompress
failure: -1015, ignoring update.
WORKAROUND
Set KPIPEWIRE_FORCE_ENCODER=libopenh264 (e.g. in /etc/environment.d/krdp.conf)
and restart app-org.kde.krdpserver.service. The client then displays the
desktop correctly.
SOFTWARE/OS VERSIONS
Operating System: Fedora Linux 44 (KDE Plasma)
KDE Plasma Version: 6.7.5
krdp: krdp-6.7.5-1.fc44.x86_64
kpipewire: kpipewire-6.7.5-1.fc44.x86_64
client: KRDC Version 26.08.1
openh264: 2.6.0-3.fc44
Graphics: NVIDIA 3070ti, proprietary driver 615.71.09
Session: Wayland
ADDITIONAL INFORMATION
Possible fix: when hardware encoding is unavailable, prefer an encoder/profile
that OpenH264-based clients can decode (constrained baseline), or constrain
libx264 to a compatible profile and a valid level.
--
You are receiving this mail because:
You are watching all bug changes.