| Summary: | KRdp serves a grayish video stream (looks like a limited range video displayed as full range) | ||
|---|---|---|---|
| Product: | [Plasma] KRdp | Reporter: | Rongrong <i> |
| Component: | general | Assignee: | Unassigned bugs <unassigned-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | minor | CC: | ahiemstra, kde, kdedev, nate |
| Priority: | NOR | ||
| Version First Reported In: | 6.3.5 | ||
| Target Milestone: | --- | ||
| Platform: | Debian stable | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/krdp/-/commit/a60e7b15b681d8a49106ca634654f5ce213eac59 | Version Fixed/Implemented In: | 6.6.0 |
| Sentry Crash Report: | |||
| Attachments: |
KRdp_KRDC
KRdp_Remmina OBS_Studio_Screen_Capture_PipeWire Sunshine_Moonlight_H264_422 |
||
Created attachment 183214 [details]
KRdp_Remmina
Created attachment 183215 [details]
OBS_Studio_Screen_Capture_PipeWire
Created attachment 183216 [details]
Sunshine_Moonlight_H264_422
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kpipewire/-/merge_requests/221 A possibly relevant merge request was started @ https://invent.kde.org/plasma/krdp/-/merge_requests/126 Git commit cb00651ab5de86d42652958a15adfbc0a8d08f91 by Arjen Hiemstra. Committed on 24/10/2025 at 09:04. Pushed by ahiemstra into branch 'master'. Add support for encoding in full color range Without extra metadata, decoders don't know what color range the frames of a video use. Most video players will assume correctly that they are using limited range, except for FFmpeg. This presents a problem for KRdp as all clients that we support use FFmpeg indirectly for decoding, which leads to incorrect colors on decode. To avoid that, add an option to set what color range we should use when encoding, and use that for the h264 encoders. This allows KRdp to request full range encoding. The default is still limited range, as this is also what the upstream default is. M +5 -0 src/encoder.cpp M +3 -0 src/encoder_p.h M +8 -1 src/h264vaapiencoder.cpp M +4 -0 src/libopenh264encoder.cpp M +3 -1 src/libx264encoder.cpp M +10 -0 src/pipewirebaseencodedstream.cpp M +7 -0 src/pipewirebaseencodedstream.h M +9 -0 src/pipewireproduce.cpp M +3 -0 src/pipewireproduce_p.h https://invent.kde.org/plasma/kpipewire/-/commit/cb00651ab5de86d42652958a15adfbc0a8d08f91 Git commit a60e7b15b681d8a49106ca634654f5ce213eac59 by Nate Graham, on behalf of Arjen Hiemstra. Committed on 24/10/2025 at 21:57. Pushed by ngraham into branch 'master'. Encode frames in full color range FFmpeg assumes full color range when decoding by default, even though the encoding default is limited range. This leads to color issues in clients. To work around that, request encoding to be performed in full color range. M +1 -0 src/PlasmaScreencastV1Session.cpp M +2 -0 src/PortalSession.cpp https://invent.kde.org/plasma/krdp/-/commit/a60e7b15b681d8a49106ca634654f5ce213eac59 |
Created attachment 183213 [details] KRdp_KRDC SUMMARY KRdp serves a grayish video stream. It looks like something you get when plugging a legacy HDMI monitor into a modern computer, i.e., a video stream with a limited (16-235) quantization range displayed as full (0-255) quantization range. STEPS TO REPRODUCE 1. Set up krdpserver 2. Connect to it with KRDC or Remmina 3. See a grayish video stream OBSERVED RESULT The video stream is grayish. Meanwhile, Screen Capture (PipeWire) in OBS Studio and Sunshine+Moonlight (H264 YUV422) all show correct colors. See attachments for details. EXPECTED RESULT The video stream shouldn't be greyish and should show correct colors. SOFTWARE/OS VERSIONS Operating System: Debian GNU/Linux 13 KDE Plasma Version: 6.3.5 KDE Frameworks Version: 6.13.0 Qt Version: 6.8.2 ADDITIONAL INFORMATION I've tried building KPipeWire+KRdp 6.4.2, and this issue is still reproducible.