Bound video call rendering and recover dropped streams - #138
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Team Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (43)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThis change adds directional video-keyframe recovery, per-stream decoder retirement, dedicated frame readiness delivery, cached GUI rendering, texture lifetime management, serialized WebCodecs readback, browser tests, and related CI and documentation updates. ChangesVideo recovery and frame delivery
GUI and WebCodecs
Estimated code review effort: 4 (Complex) | ~60 minutes Merge Risk: ⚪ Minimal · up to No actionable merge-blocking risk is established for the current changes. Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 62.99% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 154 functions across 35 files. (8 skipped: 8 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a07ab2f2f7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Summary
Fix sustained video-call resource growth and redundant GUI work on native and web, and consume the merged RTP orientation correction from oxidezap/whatsapp-rust#1463.
Evidence
The supplied production trace attributes 42.5% of the main-thread sampled timeline to copyTo. Main-thread task occupation rises from 75.9% to 91.3% between equal five-second windows. Sampling has substantial overhead; these are not direct per-function CPU measurements.
The atlas reproduction retained eight obsolete entries before the fix. Regression coverage now keeps only the current entry across 120 replacements. Sixty steady-state call notifications cause zero body rebuilds. Browser mutation checks detect broken pending replacement, buffer reuse, and stale-output rejection.
Removing one Rust pixel allocation and reusing one JS destination each avoids 70.31 MiB/s of allocation demand for a stable 720p20 stream. This is arithmetic, not a measured FPS or CPU improvement. No post-fix live call was recorded.
See docs/call-performance.md for measurements, limitations, and follow-up candidates. No private trace, capture artifact, or personal log data is included.
Dependencies And Protocol
Verification
Remaining Gaps
Live browser-to-Android orientation, sustained call FPS/CPU, shared-memory browser runtime, and native GPU-memory behavior still need a production-like retest. The browser fixture tests readback and conversion, not hardware decoding or GPUI painting. AudioWorklet migration, capture timestamp preservation across drops, and slow transport/prefetch isolation are not part of this patch.
Summary by cubic
Bounds video call rendering so sustained calls stop accumulating memory and redundant GUI work, and recovers dropped streams by re-requesting keyframes instead of leaving the picture blank.
Bug Fixes
oxidezap-pluginworkspace dependency are removed.Migration
gpui-componenttracks thefix/input-scroll-notify-0.5branch pending an upstream input-invalidation fix.whatsapp-rustis pinned to the merged RTP rotation fix.Written for commit 2bfb971. Summary will update on new commits.
Summary by CodeRabbit
New Features
Bug Fixes
Tests
Documentation