feat(lotus-denoise): AGC off for ML tier + init/build leak hardening
AEC/AGC audit fix + two hardening items from the engine review. - Add an `autoGainControl` capture param (UrlParams -> CallViewModel -> ConnectionFactory audioCaptureDefaults), mirroring echoCancellation/ noiseSuppression. Defaults true (unchanged); the host sets it false only for the ML tier so the browser's auto gain control doesn't fight the in-source ML denoiser (pumping). Echo cancellation stays on. Tests cover the URL parse and the audioCaptureDefaults wiring. - L1: init() now closes the owned AudioContext on a build failure (was orphaned; browsers cap live contexts, so repeated failures could exhaust them). - L2: buildGraph() disposes its partially-built nodes on failure (disposeGraph previously only cleaned the prior graph). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
6ab52d9926
commit
940d71da92
@@ -391,6 +391,21 @@ describe("UrlParams", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("autoGainControl", () => {
|
||||
it("defaults to true", () => {
|
||||
expect(computeUrlParams().autoGainControl).toBe(true);
|
||||
});
|
||||
|
||||
it("is parsed", () => {
|
||||
expect(computeUrlParams("?autoGainControl=true").autoGainControl).toBe(
|
||||
true,
|
||||
);
|
||||
expect(computeUrlParams("?autoGainControl=false").autoGainControl).toBe(
|
||||
false,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("header", () => {
|
||||
it("uses header if provided", () => {
|
||||
expect(computeUrlParams("?header=app_bar&hideHeader=true").header).toBe(
|
||||
|
||||
Reference in New Issue
Block a user