diff --git a/docs/screenshare-audio-exclusion-plan.md b/docs/screenshare-audio-exclusion-plan.md index ab3b156..ef85475 100644 --- a/docs/screenshare-audio-exclusion-plan.md +++ b/docs/screenshare-audio-exclusion-plan.md @@ -334,11 +334,19 @@ path, with no EasyEffects involved. Consequences: 4. §10 item 2 (`@DEFAULT_SINK@` resolved once) is worse than described: the default sink here is a *transient app-owned null sink* that appears and disappears with Sunshine. -⚠️ **Separate, UNVERIFIED question this raises for peerspeak itself** (not this feature): -`echo_cancel::enable` passes `sink_master` only when the user has picked a device, else it -binds to system defaults (`echo_cancel.rs:83-94`). With the default sink being Sunshine's -null sink, what does the AEC bind to, and does call audio still reach the user's speakers? -**This is a question, not a finding — do not repeat it as a bug until it is tested.** +**Separate item this raised for peerspeak itself — RESOLVED for this machine, kept as a +low-priority general defect** (not part of this feature): `echo_cancel::enable` appends +`sink_master=` / `source_master=` only when the configured device is `Some` and non-empty +(`echo_cancel.rs:89-94`); otherwise `module-echo-cancel` binds to whatever PipeWire calls +the default. On a box where an application owns the default sink — as Sunshine does here — +that means the AEC would bind to a null sink. + +✅ **Not live for this user:** `~/.config/peerspeak/config.json` pins +`output_device = alsa_output.usb-SteelSeries_…Arctis_1_Wireless-00.analog-stereo` and +`input_device = …mono-fallback`, so `sink_master` is always passed explicitly and the AEC +binds to the Arctis regardless of the default. The exposure exists only for a user on +"system default". Possible hardening (own task, not this feature): resolve and validate +the default sink before load, and refuse or warn when it is a null/virtual sink. The canonical *installed* instance: **EasyEffects.** When it is running, applications play into `ee_sink` and EasyEffects emits a single combined output stream to the hardware. That