open
Opens the device.
A sink that owns its device callback in C does not implement this. On such a sink this throws, because the alternative is worse: a device whose C callback ignores the lambda it was handed would play correctly while the caller believed its callback was being called. Those sinks say so by implementing NativeRingAudioSink, which exists only in the native source set and hands back a C ring instead of taking a callback, and the engine calls that entry point instead. CoreAudioSink is one of them. Every other sink, including every test fake and every push-model sink, is opened here and works exactly as before.
Return
what the device actually accepted, which may differ in rate, format or layout. The engine rebuilds its resampler to match.
Parameters
what the engine would like.
the callback the device will call. See AudioRenderCallback for its contract.