Skip to content

rdp-audio-playback: Add SVC fallback, when DVC is unavailable

Quoting the main commit here:

In the early days of RDP, only static virtual channels (SVCs) existed.
As a result, there was only the RDPSND SVC for audio output
redirection.
Later, Microsoft added the DRDYNVC SVC, which tunnels dynamic virtual
channels (DVCs).
Dynamic virtual channels have some advantages: They can be opened and
closed on-the-fly during the session without problems, are not limited
by the maximum of 31 SVCs, and, if available, can use UDP as transport
method.

The audio output redirection protocol is quite unique in RDP, as it can
be used over multiple types of channels.
While in the past only the RDPSND SVC was used, today, MS Windows RDS
first tries to open the DVC for audio output redirection and then falls
back to the SVC, if the DVC is unavailable.

gnome-remote-desktop currently only supports the DVC. The main reason
was: It works with the major clients mstsc and FreeRDP-based clients.
Mobile clients, like the Microsofts iOS and Android client did cause
problems, because it appeared, that audio and remote desktop
interaction stuttered heavily, when both audio and graphics updates
were sent at the same time.
These mobile clients only support the SVC and as a result, an SVC
fallback, when the client does not support the DVC was not added.

However, Microsofts Mac client also does not support the DVC and
therefore requires the SVC in order to have audio output redirection.

So, implement the SVC fallback for [MS-RDPEA] and in the next commit,
exclude mobile clients based on their reported OS type.

Marked as draft, because we should probably ensure that https://github.com/FreeRDP/FreeRDP/pull/8585 is included in the FreeRDP build, i.e. bump the FreeRDP dep, when a new tag is set (after that FreeRDP MR merge).
This FreeRDP MR is a backport of https://github.com/FreeRDP/FreeRDP/pull/8581. See the commit message of the FreeRDP commit for details on why we should depend on it (tldr: without it, a malicious client could mess everything up, if we want the SVC fallback for [MS-RDPEA]).

Closes: #135 (closed)

Edited by Pascal Nowack

Merge request reports