Skip to content

fix(playback): recover audio streams with updated InnerTubeX - #4522

Closed
brandonp2412 wants to merge 1 commit into
MetrolistGroup:mainfrom
brandonp2412:fix/innertubex-playback-resolution
Closed

brandonp2412 wants to merge 1 commit into
MetrolistGroup:mainfrom
brandonp2412:fix/innertubex-playback-resolution

Conversation

@brandonp2412

Copy link
Copy Markdown
Contributor

Summary

  • Update InnerTubeX from v0.11.0 to v0.11.2 to avoid the failing QuickJS signature-resolution path and enable direct playable streams.
  • When a previously failed stream client has been excluded and alternative clients cannot resolve audio, retry all clients at low quality.
  • Cover fallback success, no-playable-stream errors, network-error propagation, and normal resolution with unit tests.

Reproduction

Samsung Galaxy S25 (Android 17), MetroList 13.7.0 (153), u4HQevc9JE0 (Cannons, Fire for You): two observed fetch attempts repeatedly failed with EjsChallengeSolver: QuickJsException, solved=0, and usableAudio=0, ultimately reporting StreamResolveException: No playable stream found for this track.

Verification

  • :app:testFossDebugUnitTest — 204 tests passed, 0 failures.
  • :app:assembleFossDebug — successful.
  • Physical S25: installed the patched debug variant beside the release build, opened the exact video, and observed a playable VISIONOS stream and Media3 PLAYING state; repeated launch logged playback success. Uninstalled only the temporary debug package afterward.
  • Waydroid: exact video reached playback.

Remaining limitation

The actual authenticated WEB_REMIX signature-deciphering path was not forced in an end-to-end test; the patched build succeeded using a VISIONOS direct stream. Keep as draft until that path or a release-profile install is verified.

@coderabbitai

coderabbitai Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

nyxiereal added a commit that referenced this pull request Nov 2, 2026
Retain the bounded low-quality client recovery from #4522 when excluded clients leave no playable alternative. Preserve cancellation, network and restriction errors, and normal playback quality.

Cover recovery boundaries and hosted cipher compatibility, including IAS player selection and Math.pow deciphering. The cipher regression fails with v0.11.0 and passes with v0.11.2.

Supersedes #4522.

Co-authored-by: Brandon Dick <brandon@presley.nz>
@nyxiereal

Copy link
Copy Markdown
Member

Superseded by e6fea3b on main. Thanks @brandonp2412; your bounded low-quality client recovery and tests were retained, with Co-authored-by credit in the commit.

Reviewed the InnerTubeX v0.11.1/v0.11.2 changelogs and source changes. Added coverage for cancellation, restriction errors, exhausted fallback, and hosted cipher compatibility (IAS selection, signature/n deciphering with Math.pow). The cipher regression fails with v0.11.0 and passes with v0.11.2.

Verification: FOSS debug APK built; 207 app tests and 37 InnerTube tests passed; GMS and Izzy Kotlin compilation passed. Hosted dependencies resolve InnerTubeX v0.11.2 and QuackJS 0.1.2. A separate main commit fixes pre-existing duplicate localized Discord resources that blocked the build, preserving the canonical translations.

No device or live authenticated WEB_REMIX playback testing was performed in this follow-up; those end-to-end checks remain unverified.

@nyxiereal nyxiereal closed this Nov 2, 2026
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.

2 participants