rdpsnd (RDPSND_CHANNEL_NAME)DVC channel names:
AUDIO_PLAYBACK_DVC, AUDIO_PLAYBACK_LOSSY_DVC
Server header: <freerdp/server/rdpsnd.h>Client header:
<freerdp/client/rdpsnd.h>Common types:
<freerdp/channels/rdpsnd.h> (re-exports <freerdp/codec/audio.h>)
Server API
RdpsndServerContext lifecycle
vcm is the virtual channel manager handle. reset reinitialises the context without freeing, for reuse after a session reconnect.
Helper functions
rdpsnd_server_get_event_handle() in a wait-loop and call rdpsnd_server_handle_messages() when signalled to process incoming client PDUs.
RdpsndServerContext fields
void*
Server-defined private pointer.
BOOL
Set to
TRUE before Initialize to open via DVC (AUDIO_PLAYBACK_DVC) instead of the legacy SVC.AUDIO_FORMAT*
Array of
AUDIO_FORMAT structs the server supports. Set before calling Initialize.size_t
Length of
server_formats.AUDIO_FORMAT*
The PCM format of the audio source (sample rate, channels, bits-per-sample). Set before
SendSamples.UINT32
Requested audio buffer / latency in milliseconds.
AUDIO_FORMAT*
Populated by the channel after format negotiation with the client. Read-only for the server.
UINT16
Number of entries in
client_formats.UINT16
Index into
client_formats of the currently active format. Set by SelectFormat.Server API calls
psRdpsndServerInitialize
ownThread = TRUE the implementation spawns a worker thread; otherwise the caller must drive messages via rdpsnd_server_handle_messages().psRdpsndServerSelectFormat
client_format_index (index into client_formats). Must be called before SendSamples.psRdpsndServerSendFormats
Initialize; call manually to restart the protocol after Close.psRdpsndServerSendSamples
src_format. nframes is the number of audio frames (not bytes). The channel converts to the negotiated client format internally if a DSP is configured.psRdpsndServerSendSamples2
formatNo is an index into client_formats. Bypasses any internal DSP conversion.psRdpsndServerSetVolume
0x0000 (mute) to 0xFFFF (full).psRdpsndServerTraining
Server callbacks
psRdpsndServerActivated
psRdpsndServerTrainingConfirm
psRdpsndServerConfirmBlock
Client Device Plugin
The client side uses anrdpsndDevicePlugin (audio output backend — e.g. PulseAudio, ALSA, Windows CoreAudio).
freerdp_rdpsnd_client_subsystem_entry (RDPSND_DEVICE_EXPORT_FUNC_NAME) returning a populated rdpsndDevicePlugin.
Audio Codec Support
- GSM 6.10
- MP3 / PCM
- OPUS
Always available — built-in codec in WinPR. No extra dependencies.
