Repository navigation
fix(dgw): start shadow viewers at the live picture - #2061
irvingouj@Devolutions (irvingoujAtDevolution) merged 2 commits into
Conversation
A viewer joining a live recording got every frame since the source's last key frame and started playing from there, so it began behind the live edge, by the whole session when the source sends only one key frame. Gateway now only decodes those frames and sends the current picture as the first key frame, like before the session streaming rework. Issue: DGW-457
Let maintainers know that an action is required on their side
|
There was a problem hiding this comment.
🟡 Changes recommended
The new XMF-backed tests can run concurrently without the repository’s serialization semaphore.
1 open finding
What changed in this PR
Updates live shadow viewers to begin at the current picture rather than replaying the latest GOP.
Changes:
- Decodes historical GOP frames but emits only the latest frame.
- Adds unit and integration coverage for live-edge joining.
- External-contract review was unnecessary because the wire format is unchanged.
| File | Description |
|---|---|
crates/video-streamer/src/normalizer/mod.rs |
Emits the reconstructed live picture. |
crates/video-streamer/src/normalizer/tests/replay.rs |
Updates replay behavior tests. |
crates/video-streamer/tests/live_edge_join.rs |
Adds end-to-end live-edge tests. |
🧠 Review effort: Balanced
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| init_tracing(); | ||
| if !maybe_init_xmf() { |
The joining viewer now gets the last recorded picture as a key frame, then the live frames, and every output frame decodes from a fresh decoder.
3f41378
into
master
Hotfix release: only #2061 (DGW-457). 🤖 Generated with [Claude Code](https://claude.com/claude-code)

A viewer joining a live recording got every frame since the source's last key frame and started playing from there, so it began behind the live edge, by the whole session when the source sends only one key frame. Gateway now only decodes those frames and sends the current picture as the first key frame, like before the session streaming rework.
Issue: DGW-457