docs: close the AEC default-sink question raised by §6.1.0
Checked ~/.config/peerspeak/config.json: output_device and input_device are both pinned to the Arctis, so echo_cancel::enable always passes sink_master explicitly and the AEC binds to real hardware regardless of Sunshine owning the default sink. Not live for this user. Kept as a low-priority general defect: on "system default", the master args are omitted (echo_cancel.rs:89-94) and module-echo-cancel binds to whatever the default is, which on a box like this one is a null sink. Hardening would be to resolve and validate the default before load. Own task, not this feature. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
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.
|
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):
|
**Separate item this raised for peerspeak itself — RESOLVED for this machine, kept as a
|
||||||
`echo_cancel::enable` passes `sink_master` only when the user has picked a device, else it
|
low-priority general defect** (not part of this feature): `echo_cancel::enable` appends
|
||||||
binds to system defaults (`echo_cancel.rs:83-94`). With the default sink being Sunshine's
|
`sink_master=` / `source_master=` only when the configured device is `Some` and non-empty
|
||||||
null sink, what does the AEC bind to, and does call audio still reach the user's speakers?
|
(`echo_cancel.rs:89-94`); otherwise `module-echo-cancel` binds to whatever PipeWire calls
|
||||||
**This is a question, not a finding — do not repeat it as a bug until it is tested.**
|
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
|
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
|
`ee_sink` and EasyEffects emits a single combined output stream to the hardware. That
|
||||||
|
|||||||
Reference in New Issue
Block a user