Skip to content

feat(egfx): add send_clearcodec_frame for server-side ClearCodec transmission#1195

Closed
Greg Lamberson (glamberson) wants to merge 2 commits into
Devolutions:masterfrom
lamco-admin:feat/clearcodec-server-send
Closed

feat(egfx): add send_clearcodec_frame for server-side ClearCodec transmission#1195
Greg Lamberson (glamberson) wants to merge 2 commits into
Devolutions:masterfrom
lamco-admin:feat/clearcodec-server-send

Conversation

@glamberson

Copy link
Copy Markdown
Contributor

Depends on #1174.

Summary

Add GraphicsPipelineServer::send_clearcodec_frame() to queue pre-encoded ClearCodec bitmap streams for transmission via WireToSurface1. Follows the same pattern as send_avc420_frame and send_uncompressed_frame with QoE backpressure tracking.

Changes

1 file, 46 lines in ironrdp-egfx/src/server.rs.

Test plan

  • All 5 xtask gates pass
  • Pattern matches existing send_avc420_frame / send_uncompressed_frame

Add ClearCodec (MS-RDPEGFX 2.2.4.1) codec support across two crates:

ironrdp-pdu: Wire-format decode/encode for all ClearCodec layers
(residual BGR RLE, bands with V-bar caching, subcodec dispatch
including RLEX palette-indexed RLE). Full round-trip test coverage.

ironrdp-graphics: ClearCodecDecoder with persistent V-bar and glyph
caches. ClearCodecEncoder with residual-only encoding and glyph
deduplication for server-side bitmap compression.
…smission

Add GraphicsPipelineServer::send_clearcodec_frame() to queue pre-encoded
ClearCodec bitmap streams for transmission via WireToSurface1. Follows
the same pattern as send_avc420_frame and send_uncompressed_frame with
QoE backpressure tracking.
@glamberson

Copy link
Copy Markdown
Contributor Author

Closing as superseded by #1175. The 46-line `GraphicsPipelineServer::send_clearcodec_frame()` helper that this PR was opened to add is already present byte-for-byte in #1175 at `crates/ironrdp-egfx/src/server.rs`, alongside the client-side ClearCodec decode dispatch the same #1175 introduces. Both PRs were authored on 2026-04-01 and the helper landed in both copies; this one never got closed after the consolidation.

#1175 currently sits on the amended #1174 head (`6e142c37`) with the dimension-cap / overflow / alpha-contract hardening fixes applied from earlier today, plus the RLEX stop_index validation and the glyph-dimension check added during its own review cycle. Nothing in this PR is missing from #1175.

No code change to land; just a closure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants