Skip to main content
FreeRDP provides self-contained codec context APIs for encoding and decoding RDP graphics payloads. All codecs live under include/freerdp/codec/ and are aggregated by the rdpCodecs struct.

rdpCodecs Aggregate

Header: <freerdp/codecs.h>

Lifecycle

flags is a bitmask of FreeRDP_CodecFlags:

RemoteFX (rfx)

Header: <freerdp/codec/rfx.h> RemoteFX is a wavelet-based codec optimised for desktop and application content. It operates on 64×64 pixel tiles.

Lifecycle

Configuration

Decoding (client)

Encoding (server)

rfx_encode_messages() splits a large surface update into multiple messages respecting maxDataSize. Useful for fitting inside a single MCS PDU.

NSCodec (nsc)

Header: <freerdp/codec/nsc.h> NSCodec (Network Screen Codec) is a simple colour-space-based codec defined in [MS-RDPNSC]. It is lightweight and well-suited for solid-colour or low-complexity content.

Lifecycle

Configuration

Decoding

Encoding


H.264 (h264)

Header: <freerdp/codec/h264.h> The H.264 codec context supports both AVC 4:2:0 and AVC 4:4:4 encode/decode. Multiple backend subsystems are available: OpenH264, FFmpeg (with optional hardware acceleration).

Lifecycle

Configuration

AVC 4:2:0 operations

AVC 4:4:4 operations

Low-level YUV buffer access (since 3.6.0)


Bitmap Compression

Header: <freerdp/codec/bitmap.h> Legacy RDP run-length-encoded bitmap compression used in the classic Bitmap Update PDU path.

Build Flags

Use freerdp_codec_id_to_str(id) (since 3.18.0) to convert a numeric codec ID from a GFX surface command to a human-readable name for logging.