Constructs a player over the given sink.
The audio sink (real MediaSourceAudioSink in the app, a fake in tests).
The current queue depth — exposed for tests / diagnostics.
Tears the player down: clears the queue and closes the sink. Idempotent.
Enqueues one pushed audio chunk for playback. Drops chunks whose codec isn't playable, opens the sink lazily on the first playable chunk, detects sequence gaps (logged; the webm stream self-recovers on the next keyframe), and bounds the queue by dropping the oldest on overflow. Never throws.
The pushed chunk to play.
Mutes / unmutes playback (the speaker toggle). Safe to call before the sink opens — the state is applied once it does.
true to mute, false to unmute.
Sequential, overflow-bounded player for a continuous webm-opus chunk stream. Construct it with an IAudioSink; call Enqueue for each pushed chunk and SetMuted for the speaker toggle; call Dispose on teardown.