Skip to content

Isolate Linux audio decode and output failures from video - #960

Merged
capy-ai[bot] merged 2 commits into
devfrom
capy/linux-audio-isolation-review
Sep 16, 2026
Merged

capy-ai[bot] merged 2 commits into
devfrom
capy/linux-audio-isolation-review

Conversation

@zortos293

Copy link
Copy Markdown
Collaborator

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 c339fac004a689e8e7f9f3dd8b4e6bb0a470ff42 from the malformed #957 after the user-authorized branch repair. The exact work is now preserved on a dedicated source branch; dev was restored to the original baseline.

The orchestrator independently reviewed and tested this combined implementation before repair:

  • Real-libopus audio tests: 20 passed, 2 existing hardware-dependent tests ignored.
  • Linux session tests, including real ALSA null and /dev/full failure fixtures: 15 passed.
  • Core audio feedback tests passed.
  • Full combined streamer workspace passed, including 110 Linux platform and 192 transport tests.
  • Formatting and Clippy with warnings denied 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.

Open in Capy

@coderabbitai

coderabbitai Bot commented Sep 15, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: c675c6e0-d625-4eab-8bad-cbfd5415dfa9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@capy-ai capy-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capy found no issues.

View 2 other findings in Capy.

Open in Capy

@capy-ai
capy-ai Bot changed the base branch from capy/linux-opus-plc-review to dev September 16, 2026 07:18
@capy-ai

capy-ai Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Updated the topic with a normal merge of dev and the held successful-audio-output recovery correction in 551972ae. Both monitor paths retain audio loss/recovery reporting and the already-landed color-format handling. Recovery is reported only after the replacement sink accepts output; terminal failure does not report recovery.

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 dev was used.

@capy-ai
capy-ai Bot merged commit 803e32a into dev Sep 16, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant