Microsoft::Windows::RDS::Graphics (RDPGFX_DVC_CHANNEL_NAME)
Client header: <freerdp/client/rdpgfx.h>Protocol types:
<freerdp/channels/rdpgfx.h>
Context Lifecycle
RdpgfxClientContext
typedef struct s_rdpgfx_client_context RdpgfxClientContext
void*
Application private pointer.
rdpCodecs*
Codec suite used by this channel for decoding surface commands.
Capability Negotiation
pcRdpgfxCapsAdvertise
CAPS_ADVERTISE PDU listing supported capability versions. The capsSets array contains one entry per version (e.g. RDPGFX_CAPVERSION_107). Modify or inspect before the channel sends it.pcRdpgfxCapsConfirm
capsConfirm->capsSet->version identifies the negotiated version.pcRdpgfxOnOpen
*do_caps_advertise = TRUE to let the channel automatically send caps. Set *do_frame_acks = TRUE to enable frame acknowledgement.pcRdpgfxOnClose
Frame Lifecycle
pcRdpgfxResetGraphics
resetGraphics->width/height give the new desktop dimensions. All surfaces from previous sessions are invalidated.pcRdpgfxStartFrame
startFrame->frameId and startFrame->timestamp can be used for latency measurement.pcRdpgfxEndFrame
SurfaceCommands between StartFrame and EndFrame, call FrameAcknowledge to signal completion.pcRdpgfxSurfaceCommand
cmd->codecId determines the encoding:pcRdpgfxFrameAcknowledge
frameAcknowledge->queueDepth reports the client-side decode queue depth to assist server-side rate control.Surface Management
pcRdpgfxCreateSurface
createSurface->surfaceId, width, height, and pixelFormat define it. Surfaces persist across frames until DeleteSurface.pcRdpgfxDeleteSurface
deleteSurface->surfaceId.pcRdpgfxMapSurfaceToOutput
(outputOriginX, outputOriginY) in screen coordinates.pcRdpgfxSetSurfaceData
GetSurfaceData.Cache Operations
pcRdpgfxSurfaceToCache
Copies a rectangle from a surface into the persistent bitmap cache at
cacheSlot with cacheKey.pcRdpgfxCacheToSurface
Blits a cached bitmap to a set of destination points on a surface.
pcRdpgfxCacheImportOffer
Called when the server offers to pre-populate the cache from a persistent store. Respond with
CacheImportReply.H.264 / AVC Support
H.264 decoding in RDPGFX is handled transparently when the codec is available. Surface commands withcodecId = RDPGFX_CODECID_AVC420 or RDPGFX_CODECID_AVC444 carry AVC bitstreams described by RDPGFX_AVC420_BITMAP_STREAM / RDPGFX_AVC444_BITMAP_STREAM.
- OpenH264
- FFmpeg
Build with
-DWITH_OPENH264=ON and provide the Cisco OpenH264 library to enable H.264 decode via libopenh264.AVC capability flags in
RDPGFX_CAPS_FLAG_AVC420_ENABLED and RDPGFX_CAPS_FLAG_AVC_DISABLED control whether AVC is advertised during caps negotiation. They are set automatically based on build-time codec availability.