Measure native frame stages and Qt presentation progress - #965
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
|
Resolved the actual integration conflict with a normal merge of Independent bundled-FFmpeg workspace verification passed 726 tests with 15 ignored, strict locked Clippy covering that feature set, and formatting. The worker also rebuilt Qt and passed the full 338-test suite plus the focused 16-test timing/runtime subset. Fresh cross-platform PR CI is running; no history rewrite or direct push to |
Changes
Record bounded frame-stage measurements from transport assembly through decoder admission and the local RTC control queue. Publish assembly stamps before delivery to the media consumer, and account for backpressured frames separately.
Measure Linux decoder calls and submission-to-output residence without treating timing samples as liveness. Keep cumulative progress counters, bounded timestamp correlation, explicit decoder epochs, and outstanding work visible even when the first submission never produces output.
Measure Qt submission-to-swap timing on the existing presentation owner. Suppress samples while presentation is gated, retire stale pending work on lifecycle transitions, and show unavailable measurements honestly in stream statistics. This PR supplies instrumentation; watchdog recovery policy remains a separate dependent change.
ACK measurements end at the observed control-queue boundary. They do not claim SCTP or UDP wire egress, server acknowledgement, or end-to-end latency.
Verification
Independent checks passed:
cargo fmt --manifest-path native/opennow-streamer/Cargo.toml --all -- --checknpm run locales:checkRegressions cover admission before the producer returns, backpressure accounting, first-submission stalls, epoch resets, unmatched or out-of-order outputs, bounded sample windows, and presentation gating.
UI evidence
Limits
No live GeForce NOW session was available. The captures use explicit acceptance fixtures. Tests establish local measurement boundaries and lifecycle behavior, not physical display latency or live streaming performance.