Creates a new instance of the ReceiverAudioController.
Gets the current audio subscription as it is sent to the bridge (the include set is the union of the base include and every service's synthetic subscription).
The current audio subscription.
Returns the source names currently subscribed for a service.
The service whose sources to return, e.g. a {@code SyntheticAudioService} value.
Whether any service currently subscribes to synthetic sources, i.e. the subscription sent to the bridge carries includes beyond the default baseline.
Mutes or unmutes all remote audio by toggling the baseline. The explicit include/exclude overlays (e.g. opted-in translated sources) are preserved so they are restored on unmute rather than lost across the cycle.
Indicates whether the remote audio should be muted.
Re-sends the current audio subscription to the bridge. Used when the bridge channel (re)opens so the bridge always learns the receiver's subscription (the default { all: true } until includes are added).
Sets the full audio subscription (all / include / exclude). No-op when nothing changed. Also accepts the legacy { mode, list } message for backwards compatibility, normalising it to the current shape.
The subscription to apply.
Replaces the set of synthetic sources subscribed for a service and re-sends the effective subscription. Each service replaces only its own set; the bridge always receives the union across services.
The service whose sources to replace, e.g. a {@code SyntheticAudioService} value.
The service's full desired set of source names.
Controller for the local endpoint's remote-audio subscription. The subscription sent to the bridge combines three dimensions:
all(the baseline — forward every regular source),include(extra opt-in sources on top) andexclude(sources to drop). The default isall: true.The include set has two layers: the base include from setAudioSubscriptionMode, and per-service synthetic subscriptions (audio translation, voice agents — see setServiceIncludes). The message sent to the bridge carries their union, so each layer can change without clobbering the others.