fix(static): raw stereo loopback capture — no voice-call DSP (tin-can fix)#906
Conversation
|
Important Review skippedNo new commits to review since the last review. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughDesktop renderer loopback capture now requests raw stereo audio at 48 kHz with audio processing disabled, while ASIO diagnostics log the resulting track settings as structured JSON. ChangesRenderer audio capture
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
18cf361 to
f5d448a
Compare
Chromium treats a getDisplayMedia audio track as a voice call by default: echo cancellation, noise suppression, auto gain control and mono downmix. Music through that pipeline is the tester-reported "tin can" sound on ASIO/exclusive outputs. Request the raw path explicitly (EC/NS/AGC off, stereo, 48 kHz) — all constraints are best-effort so unsupported ones degrade silently instead of failing the capture. The [asio-diag] loopback line now dumps track.getSettings() so logs prove which processing actually applied. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
@CodeRabbit review |
✅ Action performedReview finished.
|
Problem
After the loopback-permission fix (feedBack-desktop #100), song-preview audio reached ASIO and the streamer WASAPI output — but sounded like a tin can. Chromium applies voice-call processing (echo cancellation, noise suppression, AGC, mono downmix) to
getDisplayMediaaudio tracks by default.Fix
_engageLoopbacknow requestsechoCancellation:false, noiseSuppression:false, autoGainControl:false, channelCount:2, sampleRate:48000. All best-effort (ideal-valued): unsupported constraints degrade silently rather than failing the capture. The[asio-diag] loopback:line now dumps the track's effectivegetSettings()so tester logs prove which processing applied.Verification
Packaged portable build (fix16), ASIO4ALL:
Tester confirms clean preview audio on ASIO + streamer output.
Companion desktop PR: got-feedBack/feedBack-desktop#100.
🤖 Generated with Claude Code
Summary by CodeRabbit