aic.hpp and link the matching wrapper/native libraries. Start with the C++ integration guide.
All names below are in namespace aic. Check Result and error handling before extracting a factory result. Ordinary C++ allocation or string operations can still throw; SDK status failures use the declared return values.
aic::Processor
Owns one native handle. Its destructor releases that handle; do not destroy or move the object while another thread uses it. Construction/destruction can allocate or block, so keep them outside the audio callback. The default constructor and raw-handle constructor are private: use the documented factory.
aic::Processor::create
Processor using an enhancement or bypass model and the null-terminated representation of license_key (SDK key or supported bearer token). The object retains model data; no ownership of the Model wrapper is transferred. otel_config is optional and is copied during creation. Returns a checked result; errors include ModelTypeUnsupported, license errors and InternalError. Construction does not initialize audio configuration. Keep it outside the audio callback.
aic::Processor::initialize
sample_rate is the host rate in Hz (8,000–192,000); block_size is a positive mono sample count. With variable_block_size=false, input must match exactly; with true, it is the maximum per call. All three arguments are required: there is no config-object overload. Returns Success or AudioConfigUnsupported (or NullPointer for an invalid underlying handle). Failure leaves the object uninitialized. Initialization resets state and allocates; serialize it with processing.
aic::Processor::process
audio_len mono float32 samples in audio in place. The writable buffer remains caller-owned and must stay valid until the call returns. Use normalized samples, nominally -1.0 to 1.0. Returns Success, NullPointer, NotInitialized, AudioConfigMismatch or ProcessingNotAllowed (and internal errors). On processing denial, buffering or delayed output may already have changed; error output is not enhanced audio. Keep one instance per stream and serialize its processing calls.
aic::Processor::terminate_session
Success (or NullPointer for an invalid underlying handle). Processing may continue until the request is handled. It is a no-op for a credential with no telemetry session. The call neither destroys the object nor proves backend acknowledgment. Stop application processing explicitly, then allow normal destruction. On native targets, terminating the final active session may wait for the shared telemetry tasks to finish. Call it outside the audio callback.
aic::Processor::create_context
NullPointer. Context creation allocates.
aic::ProcessorContext
Owns one native handle. Its destructor releases that handle; do not destroy or move the object while another thread uses it. Construction/destruction can allocate or block, so keep them outside the audio callback. The default constructor and raw-handle constructor are private: use the documented factory.
Context control reads, parameter updates and reset requests use shared state and can run alongside processing. Keep handles alive through all concurrent calls. Credential updates are control-thread operations; destruction is never concurrent-safe.
aic::ProcessorContext::reset
Success or NullPointer. Coordinate the stream boundary if you require a precise reset position.
aic::ProcessorContext::set_parameter
ProcessorParameter to value. Returns Success, NullPointer or ParameterOutOfRange; NaN is out of range. The parameter table below defines units, defaults and accepted ranges.
aic::ProcessorContext::get_parameter
Result. A C failure leaves the initialized fallback at zero if assertions are disabled. Do not use invalid enum values or a moved-from context.
aic::ProcessorContext::get_audio_delay
aic::ProcessorContext::update_bearer_token
token.c_str(). Both the original and replacement credentials must use supported JWT form. Returns Success, LicenseFormatInvalid, other license errors or TokenUpdateUnsupported (and NullPointer for an invalid handle). Success does not prove backend acceptance. Run on a control thread. See authentication.
aic::ProcessorParameter
Use only these enum class members, whose underlying type is int.