Your application interacts with two interfaces: IRemoteSDK (created once per process) and IAudioProcessor (one per live audio stream).
IRemoteSDK
The top-level object. Create one per process with the CreateRemoteSDK() factory, initialise it once, then use it to create and destroy audio processors.
sanas::remote::GetSDKVersion() is a free function (returns const char*) available without an SDK instance.
IAudioProcessor
Represents one live audio stream. Create one per concurrent call or session; each runs independently.
Keep the
shared_ptr<IAudioProcessor> alive for as long as you use the processor, and never call
DestroyAudioProcessor or
Shutdown from inside a callback — see
Threading & Lifetime Rules.