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
Application private pointer.
Codec suite used by this channel for decoding surface commands.
Capability Negotiation
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.capsConfirm->capsSet->version identifies the negotiated version.*do_caps_advertise = TRUE to let the channel automatically send caps. Set *do_frame_acks = TRUE to enable frame acknowledgement.Frame Lifecycle
resetGraphics->width/height give the new desktop dimensions. All surfaces from previous sessions are invalidated.startFrame->frameId and startFrame->timestamp can be used for latency measurement.SurfaceCommands between StartFrame and EndFrame, call FrameAcknowledge to signal completion.cmd->codecId determines the encoding:codecId | Encoding |
|---|---|
RDPGFX_CODECID_UNCOMPRESSED | Raw pixel data |
RDPGFX_CODECID_PLANAR | Planar bitmap |
RDPGFX_CODECID_CLEARCODEC | ClearCodec |
RDPGFX_CODECID_AVC420 | H.264 AVC 4:2:0 |
RDPGFX_CODECID_AVC444 / AVC444v2 | H.264 AVC 4:4:4 |
RDPGFX_CODECID_CAPROGRESSIVE | Progressive codec |
frameAcknowledge->queueDepth reports the client-side decode queue depth to assist server-side rate control.Surface Management
createSurface->surfaceId, width, height, and pixelFormat define it. Surfaces persist across frames until DeleteSurface.deleteSurface->surfaceId.(outputOriginX, outputOriginY) in screen coordinates.GetSurfaceData.Cache Operations
Copies a rectangle from a surface into the persistent bitmap cache at
cacheSlot with cacheKey.Blits a cached bitmap to a set of destination points on a surface.
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.Capability Versions
| Constant | Value | Notes |
|---|---|---|
RDPGFX_CAPVERSION_8 | 0x00080004 | Initial GFX version |
RDPGFX_CAPVERSION_81 | 0x00080105 | AVC 4:2:0 support |
RDPGFX_CAPVERSION_10 | 0x000A0002 | AVC disabled flag |
RDPGFX_CAPVERSION_107 | 0x000A0701 | Latest — scaled map support |
