Isolate Linux audio decode and output failures from video - #960
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 |
|
Updated the topic with a normal merge of Independent verification on this source passed 707 bundled-FFmpeg native tests with 15 ignored, strict locked Clippy covering the bundled feature set, and formatting. The complete expected non-Sony integration tree also includes this correction and passed its covering suite. Required cross-platform PR CI is now running on the updated head. No force push or direct push to |
Stack
Depends on #959. This PR contains only audio failure isolation on top of the PLC change.
Changes
Keep malformed Opus and unrecoverable audio-output failures inside the audio worker rather than failing the shared video session. Attribute decode failures to Opus and output failures to the actual sink.
Eight consecutive decode rejections trigger a decoder rebuild, with at most two rebuilds per session. A continuously rejected stream disables audio after 24 rejected packets. An unrecoverable sink failure also disables audio without switching a fixed output route or stopping video.
Publish terminal audio state before queue closure and classify concurrent submissions as audio-disabled rather than fatal queue errors. Advance the concealment timeline after a rejected packet so the next packet cannot replay an already-concealed interval.
Verification
This republishes unchanged commit
c339fac004a689e8e7f9f3dd8b4e6bb0a470ff42from the malformed #957 after the user-authorized branch repair. The exact work is now preserved on a dedicated source branch;devwas restored to the original baseline.The orchestrator independently reviewed and tested this combined implementation before repair:
/dev/fullfailure fixtures: 15 passed.CI will run again on this replacement PR.
Limits
No live GFN session, GPU-backed embedded monitor, or physical PipeWire device-change test was available. Worker and core-feedback tests establish local isolation; live Qt session behavior remains unverified. Audio is unavailable for the rest of the session after the bounded recovery policy is exhausted.