Skip to main content
SDK Introduction

Windows SDK

AOQ Windows SDK C++ API reference

This topic describes the C++ APIs, callbacks, and data types of AOQ Client SDK for Windows. The SDK holds the engine instance as a global singleton, provides APIs through the AoqClientEngine class, and reports asynchronous events through the AoqEngineEventListener abstract class. All type definitions reside in the AoqClientSdk namespace, and the header file is AoqClientEngine.h.
The caller is responsible for the lifecycle of all const char* strings. They must remain valid at least until the corresponding call returns. The engine copies them internally as needed.

API index

Engine lifecycle

APIDescription
createEngineCreate the engine instance (singleton)
destroyDestroy the engine instance
getVersionGet the SDK version
connectConnect to the relay server
disconnectDisconnect from the server

Audio device management

APIDescription
startAudioCaptureOpen the audio capture device (microphone)
stopAudioCaptureClose the audio capture device
muteAudioCaptureMute or unmute audio capture
startAudioPlayerStart audio rendering to play remote audio
stopAudioPlayerStop audio rendering
pauseAudioPlayerPause audio rendering (fade-out supported)
resumeAudioPlayerResume audio rendering (fade-in supported)
interruptAudioPlayerInterrupt the current audio session
enableLocalAudioVolumeIndicationEnable or disable local capture volume indication

Audio encoding configuration

APIDescription
setAudioEncoderConfigSet audio encoding parameters
setAudioDecoderConfigSet audio decoding parameters

Video device management

APIDescription
startVideoCaptureOpen the video capture device (camera)
stopVideoCaptureClose the video capture device
setLocalViewSet or remove the local video rendering window
setRemoteViewSet or remove the remote video rendering window

Video encoding and external input

APIDescription
setVideoEncoderConfigSet video encoding parameters
setVideoDecoderConfigSet video decoding parameters
pushExternalVideoCapturedFramePush an externally captured video frame
pushExternalVideoEncodedFramePush an externally encoded video frame

Media stream control

APIDescription
enableSendMediaStreamEnable or disable sending of a local media stream

Audio file playback

APIDescription
startAudioFileStart playing a local audio file to the publishing stream
stopAudioFileStop audio file playback
pauseAudioFilePause audio file playback
resumeAudioFileResume audio file playback
getAudioFileDurationQuery the total duration of the audio file
getAudioFileCurrentPositionQuery the current playback position of the audio file
setAudioFilePositionMillisSet the playback position of the audio file (seek)
setAudioFileVolumeSet the volume of the audio file
getAudioFileVolumeQuery the current volume of the audio file

External audio streams

APIDescription
addAudioExternalStreamAdd an external audio stream
pushAudioExternalStreamDataFeed external audio PCM data
setAudioExternalStreamVolumeSet the volume of an external audio stream
getAudioExternalStreamVolumeQuery the volume of an external audio stream
clearAudioExternalStreamBufferClear the buffer of an external audio stream
removeAudioExternalStreamRemove an external audio stream

Real-time messaging

APIDescription
sendDataMsgSend a real-time data message

Audio frame callbacks

APIDescription
setAudioFrameObserverSet the audio frame data callback listener
enableAudioFrameObserverEnable or disable the audio frame callback at a specified position

Video frame callbacks

APIDescription
setVideoFrameObserverSet the video frame data callback listener
enableVideoFrameObserverEnable or disable the video frame callback at a specified position

AoqEngineEventListener callbacks

CallbackDescription
onErrorEngine error callback
onWarningEngine warning callback
onConnectionStatusChangeConnection status change callback
onStatsEngine statistics callback
onAudioDeviceStateChangedAudio device operation status change callback
onAudioDeviceRouteChangedAudio output route change callback
onAudioFileStateAudio file playback status callback
onLocalAudioVolumeIndicationLocal capture volume indication callback
onVideoDeviceStateChangedVideo device operation status change callback
onDataMsgCallback for a received real-time data message

API details

Engine lifecycle

createEngine

Creates the engine instance. The SDK holds the engine as a global singleton, so calling this method again returns the existing instance.
static AoqClientEngine* createEngine(const AoqCreateConfig& config,
                                     AoqEngineEventListener* listener);
Parameters
ParametersTypeDescription
configconst AoqCreateConfig&Engine creation configuration. For more information, see AoqCreateConfig.
listenerAoqEngineEventListener*Event callback listener. For more information, see AoqEngineEventListener.
Returns: A pointer to the engine instance. nullptr is returned on failure.

destroy

Destroys the engine instance. After the engine is destroyed, you must call createEngine again before you can continue to use it.
static int destroy();
Returns: 0 on success; non-zero on failure.

getVersion

Gets the SDK version.
static const char* getVersion();
Returns: The version string.

connect

Connects to the relay server. The application server obtains temporary AOQ connection parameters based on the protocol in use and sends them to the client. For more information, seeToken authentication.
virtual int connect(const AoqConnectConfig& config);
Parameters
ParametersTypeDescription
configconst AoqConnectConfig&Connection authentication configuration. For more information, see AoqConnectConfig.
Returns: 0 indicates that the call is dispatched and runs asynchronously; non-zero indicates that parameter validation failed.

disconnect

Disconnects from the server.
virtual int disconnect();
Returns: 0 indicates that the call is dispatched and runs asynchronously; non-zero indicates a failure.

Audio device management

startAudioCapture

Opens the audio capture device (microphone).
virtual int startAudioCapture(const AoqAudioCaptureConfig& config);
Parameters
ParametersTypeDescription
configconst AoqAudioCaptureConfig&Audio capture configuration. For more information, see AoqAudioCaptureConfig.
Returns: 0 on success; non-zero on failure.

stopAudioCapture

Closes the audio capture device.
virtual int stopAudioCapture();
Returns: 0 on success; non-zero on failure.

muteAudioCapture

Mutes or unmutes audio capture.
virtual int muteAudioCapture(bool mute);
Parameters
ParametersTypeDescription
mutebooltrue mutes;false unmutes
Returns: 0 on success; non-zero on failure.

startAudioPlayer

Starts audio rendering to play remote audio.
virtual int startAudioPlayer(const AoqAudioPlaybackConfig& config);
Parameters
ParametersTypeDescription
configconst AoqAudioPlaybackConfig&Audio playback configuration. For more information, see AoqAudioPlaybackConfig.
Returns: 0 on success; non-zero on failure.

stopAudioPlayer

Stops audio rendering.
virtual int stopAudioPlayer();
Returns: 0 on success; non-zero on failure.

pauseAudioPlayer

Pauses audio rendering, with fade-out supported.
virtual int pauseAudioPlayer(int fadeMs);
Parameters
ParametersTypeDescription
fadeMsintFade-out duration, in milliseconds. 0 indicates immediate pause.
Returns: 0 on success; non-zero on failure.

resumeAudioPlayer

Resumes audio rendering, with fade-in supported.
virtual int resumeAudioPlayer(int fadeMs);
Parameters
ParametersTypeDescription
fadeMsintFade-in duration, in milliseconds. 0 indicates immediate resumption.
Returns: 0 on success; non-zero on failure.

interruptAudioPlayer

Interrupts the current audio session and stops the audio that is currently playing.
virtual int interruptAudioPlayer(AoqTrackType trackType, int fadeMs);
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeTrack type. For more information, see AoqTrackType.
fadeMsintFade-out duration, in milliseconds. 0 indicates immediate interruption.
Returns: 0 on success; non-zero on failure.

enableLocalAudioVolumeIndication

Enables or disables local capture volume indication. After it is enabled, the onLocalAudioVolumeIndication callback is triggered at the interval specified by config.interval. If config.interval<= 0, the callback is disabled. You must call this method after startAudioCapture to obtain volume data.
virtual int enableLocalAudioVolumeIndication(const AoqAudioVolumeIndicationConfig& config);
Parameters
ParametersTypeDescription
configconst AoqAudioVolumeIndicationConfig&Volume indication configuration. For more information, see AoqAudioVolumeIndicationConfig.
Returns: 0 on success; non-zero on failure.

Audio encoding configuration

setAudioEncoderConfig

Sets audio encoding parameters.
virtual int setAudioEncoderConfig(const AoqAudioCodecConfig& config);
Parameters
ParametersTypeDescription
configconst AoqAudioCodecConfig&Audio codec configuration. For more information, see AoqAudioCodecConfig.
Returns: 0 on success; non-zero on failure.

setAudioDecoderConfig

Sets audio decoding parameters.
virtual int setAudioDecoderConfig(const AoqAudioCodecConfig& config);
Parameters
ParametersTypeDescription
configconst AoqAudioCodecConfig&Audio codec configuration. For more information, see AoqAudioCodecConfig.
Returns: 0 on success; non-zero on failure.

Video device management

startVideoCapture

Opens the video capture device (camera). When isExternal=true is configured, the camera is not opened, and frames are fed by pushExternalVideoCapturedFrame.
virtual int startVideoCapture(const AoqVideoCaptureConfig& config);
Parameters
ParametersTypeDescription
configconst AoqVideoCaptureConfig&Video capture configuration. For more information, see AoqVideoCaptureConfig.
Returns: 0 on success; non-zero on failure.

stopVideoCapture

Closes the video capture device.
virtual int stopVideoCapture();
Returns: 0 on success; non-zero on failure.

setLocalView

Sets or removes the local video rendering window. If canvas.view == nullptr, the binding is removed.
virtual int setLocalView(AoqTrackType trackType, const AoqVideoCanvas& canvas);
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeVideo track. Pass AoqTrackTypeVideo.
canvasconst AoqVideoCanvas&Rendering canvas. For more information, see AoqVideoCanvas. If view is nullptr, the binding is removed.
Returns: 0 on success; non-zero on failure.

setRemoteView

Sets or removes the remote video rendering window. If canvas.view == nullptr, the binding is removed.
virtual int setRemoteView(AoqTrackType trackType, const AoqVideoCanvas& canvas);
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeVideo track. Pass AoqTrackTypeVideo.
canvasconst AoqVideoCanvas&Rendering canvas. For more information, see AoqVideoCanvas. If view is nullptr, the binding is removed.
Returns: 0 on success; non-zero on failure.

Video encoding and external input

setVideoEncoderConfig

Sets video encoding parameters and routes them based on config.trackType.
virtual int setVideoEncoderConfig(const AoqVideoCodecConfig& config);
Parameters
ParametersTypeDescription
configconst AoqVideoCodecConfig&Video codec configuration. For more information, see AoqVideoCodecConfig.
Returns: 0 on success; non-zero on failure.

setVideoDecoderConfig

Sets video decoding parameters (a codec proposal on the subscribing side, which must be called before connect). The call is routed based on config.trackType.
virtual int setVideoDecoderConfig(const AoqVideoCodecConfig& config);
Parameters
ParametersTypeDescription
configconst AoqVideoCodecConfig&Video codec configuration. For more information, see AoqVideoCodecConfig.
Returns: 0 on success; non-zero on failure.

pushExternalVideoCapturedFrame

Pushes an external video frame. You must first call startVideoCapture and configure isExternal=true. If external video capture is not started,AoqECVideoExternalCaptureNotEnabled (211) is returned. If the frame format is not supported,AoqECParamInvalid is returned.
virtual int pushExternalVideoCapturedFrame(AoqTrackType trackType, const AoqVideoFrame& frame);
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeRouting target. Pass AoqTrackTypeVideo.
frameconst AoqVideoFrame&External video frame data. For more information, see AoqVideoFrame.
Returns: 0 on success;AoqECVideoExternalBufferFull (210) indicates that the buffer is full;AoqECVideoExternalCaptureNotEnabled (211) indicates that external video capture is not enabled;AoqECParamInvalid indicates an unsupported frame format; other non-zero values indicate other errors.

pushExternalVideoEncodedFrame

Pushes an externally encoded video frame directly, bypassing the encoder. You must first call setVideoEncoderConfig and configure isExternal=true. Only JPEG is currently supported.
virtual int pushExternalVideoEncodedFrame(AoqTrackType trackType, const AoqVideoEncodedFrame& frame);
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeRouting target. Pass AoqTrackTypeVideo.
frameconst AoqVideoEncodedFrame&Externally encoded frame data. For more information, see AoqVideoEncodedFrame.
Returns: 0 on success; non-zero on failure.

Media stream control

enableSendMediaStream

Enables or disables sending of a local media stream. We recommend that you disable sending after initialization and enable it only after the onConnectionStatusChange callback reports AoqConnectionStatusConnected.
virtual int enableSendMediaStream(AoqTrackType trackType, bool enable);
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeRouting target. AoqTrackTypeAudio and AoqTrackTypeVideo are supported.
enablebooltrue enables sending;false disables sending
Returns: 0 indicates that the call is dispatched and runs asynchronously; non-zero indicates a failure.

Audio file playback

startAudioFile

Starts playing a local audio file to the publishing stream.
virtual int startAudioFile(const char* fileId, const AoqAudioFileMixConfig& config);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID. The business layer must ensure that it is unique.
configconst AoqAudioFileMixConfig&Audio file mixing configuration. For more information, see AoqAudioFileMixConfig.
Returns: 0 on success; non-zero on failure.

stopAudioFile

Stops audio file playback.
virtual int stopAudioFile(const char* fileId);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID
Returns: 0 on success; non-zero on failure.

pauseAudioFile

Pauses audio file playback.
virtual int pauseAudioFile(const char* fileId);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID
Returns: 0 on success; non-zero on failure.

resumeAudioFile

Resumes audio file playback.
virtual int resumeAudioFile(const char* fileId);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID
Returns: 0 on success; non-zero on failure.

getAudioFileDuration

Gets the total duration of the audio file.
virtual int64_t getAudioFileDuration(const char* fileId);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID
Returns: A value greater than or equal to 0 indicates the duration of the audio file, in milliseconds; a value less than 0 indicates a failure (-AoqErrorCode).

getAudioFileCurrentPosition

Gets the current playback position of the audio file.
virtual int64_t getAudioFileCurrentPosition(const char* fileId);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID
Returns: A value greater than or equal to 0 indicates the current playback position, in milliseconds; a value less than 0 indicates a failure (-AoqErrorCode).

setAudioFilePositionMillis

Sets the playback position of the audio file (seek).
virtual int setAudioFilePositionMillis(const char* fileId, int64_t positionMillis);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID
positionMillisint64_tPlayback position, in milliseconds
Returns: 0 on success; non-zero on failure.

setAudioFileVolume

Sets the volume of the audio file.
virtual int setAudioFileVolume(const char* fileId, AoqAudioStreamDirection type, int volume);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID
typeAoqAudioStreamDirectionAudio stream direction. For more information, see AoqAudioStreamDirection.
volumeintVolume value. Valid values: 0 to 100.
Returns: 0 on success; non-zero on failure.

getAudioFileVolume

Gets the current volume of the audio file.
virtual int getAudioFileVolume(const char* fileId, AoqAudioStreamDirection type);
Parameters
ParametersTypeDescription
fileIdconst char*Audio file ID
typeAoqAudioStreamDirectionAudio stream direction. For more information, see AoqAudioStreamDirection.
Returns: A value from 0 to 100 indicates the volume; a value less than 0 indicates a failure (-AoqErrorCode).

External audio streams

addAudioExternalStream

Adds an external audio stream.
virtual int addAudioExternalStream(const char* streamId, const AoqAudioExternalStreamConfig& config);
Parameters
ParametersTypeDescription
streamIdconst char*External audio stream ID. The business layer must ensure that it is unique.
configconst AoqAudioExternalStreamConfig&External audio stream configuration. For more information, see AoqAudioExternalStreamConfig.
Returns: 0 on success; non-zero on failure.

pushAudioExternalStreamData

Feeds external audio PCM data. If AoqECAudioExternalBufferFull (110) is returned, the SDK buffer is full, and we recommend that you wait about 20 ms and then send the current data frame again.
virtual int pushAudioExternalStreamData(const char* streamId, AoqAudioFrameData& data);
Parameters
ParametersTypeDescription
streamIdconst char*External audio stream ID
dataAoqAudioFrameData&Raw external audio data. For more information, see AoqAudioFrameData.
Returns: 0 on success; non-zero on failure.
Best practice: In real-time capture scenarios, push 10 ms of data at a time and push whenever data is available. When the data comes from a file, push 40 ms of data at a time at 30 ms intervals, and handle the AoqECAudioExternalBufferFull return value.

setAudioExternalStreamVolume

Sets the volume of an external audio stream.
virtual int setAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type, int vol);
Parameters
ParametersTypeDescription
streamIdconst char*External audio stream ID
typeAoqAudioStreamDirectionExternal audio stream type. For more information, see AoqAudioStreamDirection.
volintVolume value. Valid values: 0 to 100.
Returns: 0 on success; non-zero on failure.

getAudioExternalStreamVolume

Gets the volume of an external audio stream.
virtual int getAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type);
Parameters
ParametersTypeDescription
streamIdconst char*External audio stream ID
typeAoqAudioStreamDirectionExternal audio stream type. For more information, see AoqAudioStreamDirection.
Returns: A value from 0 to 100 indicates the volume; a value less than 0 indicates a failure (-AoqErrorCode).

clearAudioExternalStreamBuffer

Clears the buffer of an external audio stream.
virtual void clearAudioExternalStreamBuffer(const char* streamId, int fadeoutMs);
Parameters
ParametersTypeDescription
streamIdconst char*External audio stream ID
fadeoutMsintFade-out duration. -1 uses the SDK's default fade-out, 0 clears everything without a fade-out, and a value greater than 0 keeps a fade-out of the specified number of milliseconds.
Returns: None.

removeAudioExternalStream

Removes an external audio stream.
virtual int removeAudioExternalStream(const char* streamId);
Parameters
ParametersTypeDescription
streamIdconst char*External audio stream ID
Returns: 0 on success; non-zero on failure.

Real-time messaging

sendDataMsg

Sends a real-time data message.
virtual int sendDataMsg(const AoqDataMsg& msg);
Parameters
ParametersTypeDescription
msgconst AoqDataMsg&Message content. For more information, see AoqDataMsg.
Returns: 0 on success; non-zero on failure.

Audio frame callbacks

setAudioFrameObserver

Sets the audio frame data callback listener. Pass nullptr to stop callbacks. After you set the listener, call enableAudioFrameObserver to enable the callback for the corresponding data source.
virtual int setAudioFrameObserver(IAudioFrameObserver* observer) = 0;
Parameters
ParametersTypeDescription
observerIAudioFrameObserver*Audio frame callback listener. For more information, see IAudioFrameObserver. Pass nullptr to stop callbacks.
Returns: 0 on success; non-zero on failure.

enableAudioFrameObserver

Enables or disables the audio frame callback at a specified position.
virtual int enableAudioFrameObserver(bool enabled, AoqAudioSource audioSource,
                                     const AoqAudioObserverConfig& config) = 0;
Parameters
ParametersTypeDescription
enabledboolSpecifies whether to allow data callbacks
audioSourceAoqAudioSourceType of the raw audio data source. For more information, see AoqAudioSource.
configconst AoqAudioObserverConfig&Callback parameter settings. For more information, see AoqAudioObserverConfig.
Returns: 0 on success; non-zero on failure.

Video frame callbacks

setVideoFrameObserver

Sets the video frame data callback listener. Pass nullptr to stop callbacks. After you set the listener, call enableVideoFrameObserver to enable the callback for the corresponding data source.
virtual int setVideoFrameObserver(IVideoFrameObserver* observer) = 0;
Parameters
ParametersTypeDescription
observerIVideoFrameObserver*Video frame callback listener. For more information, see IVideoFrameObserver. Pass nullptr to stop callbacks.
Returns: 0 on success; non-zero on failure.

enableVideoFrameObserver

Enables or disables the video frame callback at a specified position.
virtual int enableVideoFrameObserver(bool enabled, AoqVideoSource videoSource,
                                     const AoqVideoObserverConfig& config) = 0;
Parameters
ParametersTypeDescription
enabledboolSpecifies whether to enable data callbacks at a position
videoSourceAoqVideoSourceData source of the video frame callback (position in the pipeline). For more information, see AoqVideoSource.
configconst AoqVideoObserverConfig&Callback parameter settings. For more information, see AoqVideoObserverConfig.
Returns: 0 on success; non-zero on failure.

Callbacks

AoqEngineEventListener

AoqEngineEventListener is the unified entry point for all asynchronous event notifications from the SDK. It is an abstract class that you inherit and implement, and then pass in when you call createEngine. All callbacks may be triggered on internal threads, so you must handle thread safety yourself. State transitions:Disconnected → Connecting → Connected/Failed → Disconnected.

onError

Engine error callback.
virtual void onError(int code, const char* message) = 0;
Parameters
ParametersTypeDescription
codeintError code. For more information, see AoqErrorCode.
messageconst char*Error description

onWarning

Engine warning callback.
virtual void onWarning(int code, const char* message) = 0;
Parameters
ParametersTypeDescription
codeintWarning code. For more information, see AoqWarningCode.
messageconst char*Warning description

onConnectionStatusChange

Engine connection status change callback.
virtual void onConnectionStatusChange(AoqConnectionStatus status) = 0;
Parameters
ParametersTypeDescription
statusAoqConnectionStatusConnection status. For more information, see AoqConnectionStatus.

onStats

Engine statistics callback.
virtual void onStats(const AoqStats& stats) = 0;
Parameters
ParametersTypeDescription
statsconst AoqStats&Statistics data. For more information, see AoqStats.

onAudioDeviceStateChanged

Callback for audio device capture and playback operation status changes.
virtual void onAudioDeviceStateChanged(const AoqAudioDeviceState& state) = 0;
Parameters
ParametersTypeDescription
stateconst AoqAudioDeviceState&Audio device state. For more information, see AoqAudioDeviceState.

onAudioDeviceRouteChanged

Audio output route change callback.
virtual void onAudioDeviceRouteChanged(int routeType) = 0;
Parameters
ParametersTypeDescription
routeTypeintRoute type. For the valid values, see AoqAudioDeviceRouteType.

onAudioFileState

Callback for audio file playback status.
virtual void onAudioFileState(const AoqAudioFileState& state) = 0;
Parameters
ParametersTypeDescription
stateconst AoqAudioFileState&File playback state. For more information, see AoqAudioFileState.

onLocalAudioVolumeIndication

Local capture volume indication callback. To enable it, call enableLocalAudioVolumeIndication.
virtual void onLocalAudioVolumeIndication(const AoqAudioVolume& volume) = 0;
Parameters
ParametersTypeDescription
volumeconst AoqAudioVolume&Local volume information. For more information, see AoqAudioVolume.

onVideoDeviceStateChanged

Callback for video device capture operation status changes.
virtual void onVideoDeviceStateChanged(const AoqVideoDeviceState& state) = 0;
Parameters
ParametersTypeDescription
stateconst AoqVideoDeviceState&Video device state. For more information, see AoqVideoDeviceState.

onDataMsg

Callback for a received real-time data message.
virtual void onDataMsg(const AoqDataMsg& msg) = 0;
Parameters
ParametersTypeDescription
msgconst AoqDataMsg&Data message. For more information, see AoqDataMsg.

IAudioFrameObserver

Interface for audio frame data callbacks, which the caller implements by inheritance. Do not perform any time-consuming operations in the callbacks. Otherwise, audio anomalies may occur.

onCapturedAudioFrame

Callback for raw captured data. To enable it, call enableAudioFrameObserver and set audioSource = AoqAudioSourceCaptured. You can set the sample rate and the number of channels, and read-write mode is supported.
virtual void onCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
Parameters
ParametersTypeDescription
dataconst AoqAudioFrameData&Raw captured audio data. For more information, see AoqAudioFrameData.

onProcessCapturedAudioFrame

Callback for data after 3A processing. To enable it, call enableAudioFrameObserver and set audioSource = AoqAudioSourceProcessCaptured. You can set the sample rate and the number of channels, and read-write mode is supported.
virtual void onProcessCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
Parameters
ParametersTypeDescription
dataconst AoqAudioFrameData&Raw audio data after 3A processing. For more information, see AoqAudioFrameData.

onPublishAudioFrame

Callback for publishing data. To enable it, call enableAudioFrameObserver and set audioSource = AoqAudioSourcePublish. You can set the sample rate and the number of channels, and only read-only mode is supported.
virtual void onPublishAudioFrame(AoqTrackType trackType, const AoqAudioFrameData& data) = 0;
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeTrack type. For more information, see AoqTrackType.
dataconst AoqAudioFrameData&Raw audio data to be published. For more information, see AoqAudioFrameData.

onPlaybackAudioFrame

Callback for playback data. To enable it, call enableAudioFrameObserver and set audioSource = AoqAudioSourcePlayback. You can set the sample rate and the number of channels, and read-write mode is supported.
virtual void onPlaybackAudioFrame(const AoqAudioFrameData& data) = 0;
Parameters
ParametersTypeDescription
dataconst AoqAudioFrameData&Raw audio data for playback. For more information, see AoqAudioFrameData.

IVideoFrameObserver

Interface for video frame data callbacks, which the caller implements by inheritance. Do not perform any time-consuming operations in the callbacks. Otherwise, video stuttering may occur. A return value of true indicates that the data is modified and must be written back to the SDK. Writing back takes effect only for I420. A return value of false indicates read-only. The data in frame is valid only during the callback. To use it asynchronously, copy it yourself.

onCapturedVideoFrame

Callback for local raw data after capture, before preprocessing. To enable it, call enableVideoFrameObserver and set videoSource = AoqVideoSourceCaptured.
virtual bool onCapturedVideoFrame(AoqVideoFrame& frame) = 0;
Parameters
ParametersTypeDescription
frameAoqVideoFrame&Captured video frame data. For more information, see AoqVideoFrame.
Returns:true indicates that the data is modified and must be written back to the SDK;false indicates read-only.

onPreEncodeVideoFrame

Callback for local raw data before encoding, after preprocessing. To enable it, call enableVideoFrameObserver and set videoSource = AoqVideoSourcePreEncode.
virtual bool onPreEncodeVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeVideo track type. For more information, see AoqTrackType.
frameAoqVideoFrame&Video frame data before encoding. For more information, see AoqVideoFrame.
Returns:true indicates that the data is modified and must be written back to the SDK;false indicates read-only.

onRemoteVideoFrame

Callback for remote raw data after decoding and before rendering. To enable it, call enableVideoFrameObserver and set videoSource = AoqVideoSourceRemote.
virtual bool onRemoteVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
Parameters
ParametersTypeDescription
trackTypeAoqTrackTypeVideo track type. For more information, see AoqTrackType.
frameAoqVideoFrame&Remote video frame data. For more information, see AoqVideoFrame.
Returns:true indicates that the data is modified and must be written back to the SDK;false indicates read-only.

Data types and enumerations

General types

AoqCreateConfig

Engine creation configuration.
FieldTypeDefault valueDescription
workDirconst char*nullptrSDK working directory
enableDumpAudioboolfalseSpecifies whether to save audio data (for debugging)
extrasconst char*nullptrExtended parameters (a JSON string)

AoqConnectConfig

Configuration for connecting to the relay server. relayEndpoints/publishTracks/subscribeTracks are C-style arrays with a length. The array memory is held by the caller and needs to remain valid only during the connect call.
FieldTypeDescription
tokenconst char*Connection authentication token
sidconst char*Session ID
certFingerprintconst char*Server certificate fingerprint
workspaceIdHashconst char*Workspace hash ID
relayEndpointsconst AoqRelayEndpoint*Array of relay access points
relayEndpointsCountsize_tNumber of relay access points
publishTracksconst AoqTrackParam*Array of local publishing track attributes
publishTracksCountsize_tNumber of publishing tracks
subscribeTracksconst AoqTrackParam*Array of local subscribing track attributes
subscribeTracksCountsize_tNumber of subscribing tracks

AoqRelayEndpoint

A relay access point.
FieldTypeDefault valueDescription
route_indexint-1Path index
endpointconst char*nullptrServer address (domain name or IP address)
portint0Server port

AoqTrackParam

The track attribute.
FieldTypeDefault valueDescription
trackTypeAoqTrackTypeAudioTrack type
trackModeAoqTrackModeSegmentStreaming or non-streaming mode. Effective only for the audio downlink.

AoqDataMsg

The message data structure. When it is used in a callback, it is guaranteed to be valid only during the callback. If you need to use it asynchronously, copy it yourself.
FieldTypeDescription
dataconst uint8_t*Message content. It points to memory held by the caller.
dataSizesize_tNumber of bytes

Statistics types

AoqStats

Engine statistics. Each statistics array is provided as a pointer and a count.
FieldTypeDescription
audioPublishStats/audioPublishStatsCountconst AoqAudioPublishStats*/unsigned intArray of publishing statistics for audio and the number of entries
videoPublishStats/videoPublishStatsCountconst AoqVideoPublishStats*/unsigned intArray of publishing statistics for video and the number of entries
dataMsgPublishStats/dataMsgPublishStatsCountconst AoqDataMsgPublishStats*/unsigned intArray of publishing statistics for data messages and the number of entries
audioSubscribeStats/audioSubscribeStatsCountconst AoqAudioSubscribeStats*/unsigned intArray of subscribing statistics for audio and the number of entries
videoSubscribeStats/videoSubscribeStatsCountconst AoqVideoSubscribeStats*/unsigned intArray of subscribing statistics for video and the number of entries
dataMsgSubscribeStats/dataMsgSubscribeStatsCountconst AoqDataMsgSubscribeStats*/unsigned intArray of subscribing statistics for data messages and the number of entries
networkStatsconst AoqNetworkStats*Network statistics

AoqNetworkStats

Network statistics.
FieldTypeDescription
sendBitrateunsigned intSend bitrate, in bit/s
sendBytesuint64_tCumulative bytes sent
recvBitrateunsigned intReceive bitrate, in bit/s
recvBytesuint64_tCumulative bytes received
lossunsigned intPacket loss rate, from 0 to 100
rttunsigned intRound-trip latency, in ms

AoqAudioPublishStats

Publishing statistics for audio.
FieldTypeDescription
trackTypeAoqTrackTypeTrack type
bitrateunsigned intBitrate, in bit/s
bytesuint64_tCumulative bytes
encodeVolumeunsigned intEncoding volume of the publishing stream

AoqVideoPublishStats

Publishing statistics for video.
FieldTypeDescription
trackTypeAoqTrackTypeTrack type
bitrateunsigned intBitrate, in bit/s
bytesuint64_tCumulative bytes
encodeFpsunsigned intEncoding frame rate

AoqDataMsgPublishStats

Publishing statistics for data messages.
FieldTypeDescription
trackTypeAoqTrackTypeTrack type
bitrateunsigned intBitrate, in bit/s
bytesuint64_tCumulative bytes

AoqAudioSubscribeStats

Subscribing statistics for audio.
FieldTypeDescription
trackTypeAoqTrackTypeTrack type
bitrateunsigned intBitrate, in bit/s
bytesuint64_tCumulative bytes
playVolumeunsigned intPlayback volume

AoqVideoSubscribeStats

Subscribing statistics for video.
FieldTypeDescription
trackTypeAoqTrackTypeTrack type
bitrateunsigned intBitrate, in bit/s
bytesuint64_tCumulative bytes
decodeFpsunsigned intDecoding frame rate
renderFpsunsigned intRendering frame rate

AoqDataMsgSubscribeStats

Subscribing statistics for data messages.
FieldTypeDescription
trackTypeAoqTrackTypeTrack type
bitrateunsigned intBitrate, in bit/s
bytesuint64_tCumulative bytes

Enumerations

AoqErrorCode

Error code enumeration.
Enum valueValueDescription
AoqECOK0Success
AoqECParamInvalid1Invalid parameter
AoqECStateInvalid2Invalid state
AoqECUnSupport3The API is called but is not implemented on the current platform or in the current mode
AoqECAudio100Generic audio error
AoqECAudioExternalBufferFull110External audio buffer is full
AoqECAudioDevice120Generic audio device error
AoqECAudioDeviceRecordingAuthFailed121Recording permission not granted
AoqECAudioDeviceRecordingOccupied122Recording device is in use
AoqECAudioDeviceRecordingBackgroundStart123Start recording in the background
AoqECAudioDeviceRecordingStartFail124Failed to start recording
AoqECAudioDevicePlayoutOccupied125Playback device is in use
AoqECAudioDevicePlayoutBackgroundStart126Start playback in the background
AoqECAudioDevicePlayoutStartFail127Failed to start playback
AoqECAudioDeviceEarpieceRequiresVoipMode128Receiver mode requires VoIP to be enabled
AoqECVideo200Generic video error
AoqECVideoExternalBufferFull210External video buffer is full
AoqECVideoExternalCaptureNotEnabled211External video capture is not enabled
AoqECVideoExternalEncoderNotEnabled212External video encoding is not enabled
AoqECVideoDevice220Generic video device error
AoqECVideoDeviceCameraOpenFail221Failed to open the camera
AoqECVideoDeviceCameraAuthFailed222Camera permission not granted
AoqECVideoDeviceCameraOccupied223Camera is in use
AoqECVideoDeviceCameraRunningError224Camera runtime error
AoqECVideoCodec230Generic video codec error
AoqECVideoCodecEncoderInitFail231Failed to initialize the encoder
AoqECVideoRender240Generic video rendering error
AoqECVideoRenderCreateFail241Failed to create the rendering view
AoqECVideoRenderDrawError242Rendering drawing error

AoqWarningCode

Warning code enumeration.
Enum valueValueDescription
AoqWCOK0No warning
AoqWCAudio100Generic audio warning
AoqWCAudioHowling101Audio howling detected
AoqWCAudioDevice120Generic audio device warning
AoqWCAudioDeviceMicEnumerateError121Microphone enumeration error
AoqWCAudioDeviceMicStartTimeout122Microphone startup timed out
AoqWCAudioDeviceRecordingError123Recording error
AoqWCAudioDeviceSpeakerEnumerateError124Speaker enumeration error
AoqWCAudioDeviceSpeakerStartTimeout125Speaker startup timed out
AoqWCAudioDevicePlayoutError126Playback error
AoqWCVideo200Generic video warning
AoqWCVideoCameraEnumerateError201Camera enumeration error
AoqWCVideoEncoderSwitched202Video encoder switched
AoqWCVideoRenderDowngrade203Video rendering downgraded

AoqTrackType

Track type.
Enum valueValueDescription
AoqTrackTypeAudio0Audio track
AoqTrackTypeVideo1Video track
AoqTrackTypeData2Data message track

AoqEncoderType

Encoder type.
Enum valueValueDescription
AoqEncoderTypeUnknown0Unknown format
AoqEncoderTypeAudioPCM1Audio PCM
AoqEncoderTypeAudioOpus2Audio Opus (plug-in based; contact the SDK team to have it built in or dynamically downloaded to the app)
AoqEncoderTypeVideoH2643Video H.264
AoqEncoderTypeVideoJpeg4Video JPEG
AoqEncoderTypeDataText5Message text

AoqTrackMode

Streaming or non-streaming mode. Effective only for the audio downlink.
Enum valueValueDescription
AoqTrackModeSegment0Segmented: data is packaged and delivered in semantic segments, such as a sentence.
AoqTrackModeStream1Streaming: data is delivered continuously.

AoqConnectionStatus

Engine connection status.
Enum valueValueDescription
AoqConnectionStatusDisconnected0Disconnected
AoqConnectionStatusConnecting1Connecting
AoqConnectionStatusConnected2Connected
AoqConnectionStatusFailed3Connection failed

Audio types

AoqAudioCaptureConfig

Audio capture configuration.
FieldTypeDefault valueDescription
isExternalboolfalseSpecifies whether to use external capture
channelint1Number of audio capture channels. 1 and 2 are supported.

AoqAudioPlaybackConfig

Audio playback configuration.
FieldTypeDefault valueDescription
isExternalboolfalseSpecifies whether to use external playback
channelint1Number of audio playback channels. 1 and 2 are supported.

AoqAudioCodecConfig

Audio codec configuration.
FieldTypeDefault valueDescription
trackTypeAoqTrackTypeAudioTrack type
codecTypeAoqEncoderTypeAudioPCMCodec format
sampleRateint48000Sample rate, in Hz. For encoding, Opus 8/16/48K and PCM 8/16/32/48K are supported. For decoding, 24K is additionally supported, but 24K is limited to Segment mode. Stream mode does not support 24K, and an invalid combination triggers the onError callback with AoqECParamInvalid during connect.
channelint1Number of channels. 1 and 2 are supported.
bitrateint32000Bitrate, in bit/s

AoqAudioDeviceState

Audio device state.
FieldTypeDescription
stateAoqAudioDeviceStateCodeStatus code
reasonintError code (AoqErrorCode)

AoqAudioDeviceStateCode

Audio device state code.
Enum valueValueDescription
AoqAudioDeviceNone0No state
AoqAudioDeviceRecordStarting1Capture starting
AoqAudioDeviceRecordStarted2Capture started
AoqAudioDeviceRecordStopping3Capture stopping
AoqAudioDeviceRecordStopped4Capture stopped
AoqAudioDeviceRecordFail5Capture failed
AoqAudioDevicePlayStarting6Playback starting
AoqAudioDevicePlayStarted7Playback started
AoqAudioDevicePlayStopping8Playback stopping
AoqAudioDevicePlayStopped9Playback stopped
AoqAudioDevicePlayFail10Playback failed

AoqAudioDeviceRouteType

Audio device route type.
Enum valueValueDescription
AoqAudioDeviceRouteDefault0Default
AoqAudioDeviceRouteHeadset1Headphones
AoqAudioDeviceRouteEarpiece2Receiver
AoqAudioDeviceRouteHeadsetNoMic3Headphones without a microphone
AoqAudioDeviceRouteSpeakerPhone4Built-in speaker
AoqAudioDeviceRouteUsb5USB
AoqAudioDeviceRouteBluetooth6Bluetooth
AoqAudioDeviceRouteBluetoothA2dp7Bluetooth A2DP

AoqAudioFileMixConfig

Configuration for playing an audio file to the publishing stream.
FieldTypeDefault valueDescription
fileNameconst char*nullptrFile name (including the path). Required.
cyclesint-1Number of loops. -1 indicates unlimited looping.
startPosMslong0Start playback position, in ms
publishVolumeint100Publishing volume. Valid values: 0 to 100.
playoutVolumeint100Playback volume. Valid values: 0 to 100.

AoqAudioFileState

Audio file state.
FieldTypeDescription
fileIdconst char*File ID
stateCodeAoqAudioFileStateCodeStatus code
errorCodeAoqAudioFileErrorCodeError code

AoqAudioFileStateCode

Audio file state code.
Enum valueValueDescription
AoqAudioFileNone0No state
AoqAudioFileStarted1Started
AoqAudioFileStopped2Stopped
AoqAudioFilePaused3Paused
AoqAudioFileResumed4Resumed
AoqAudioFileEnded5Playback completed
AoqAudioFileBuffering6Buffering
AoqAudioFileBufferingEnd7Buffering ended
AoqAudioFileFailed8Playback failed

AoqAudioFileErrorCode

Audio file playback error code.
Enum valueValueDescription
AoqAudioFileNoError0No error
AoqAudioFileOpenFailed1Failed to open the file
AoqAudioFileDecodeFailed2Failed to decode the file

AoqAudioExternalStreamConfig

External audio stream configuration.
FieldTypeDefault valueDescription
trackTypeAoqTrackTypeAudioAudio track type
codecTypeAoqEncoderTypeAudioPCMAudio stream format. PCM is supported.
channelsint1Number of channels. It is limited by the audio codec of the publishing stream, which supports 1 and 2. Additional channels are ignored.
sampleRateint48000Sample rate, in Hz. 8, 12, 16, 24, 32, 44.1, 48, 64, 88.2, 96, 176.4, and 192K are supported.
playoutVolumeint100Playback volume. Valid values: 0 to 100.
publishVolumeint100Publishing volume. Valid values: 0 to 100.
maxBufferDurationint600000Maximum buffer duration, in ms. Valid values: 100 and above. If the buffered duration in the SDK exceeds this value, Push fails.
enable3AboolfalseSpecifies whether to apply 3A processing to the input PCM

AoqAudioFrameData

Audio data.
FieldTypeDescription
dataPtrvoid*Pointer to the audio data
numOfSamplesintNumber of samples (per channel)
bytesPerSampleintBytes per sample
numOfChannelsintNumber of channels
samplesPerSecintNumber of samples per second
pushSequenceintPCM input round (used for the consumption completion notification of pushAudioExternalStreamData)
timeStampint64_tTimestamp
dataSizeintData length
autoGenMuteboolValid in data callbacks. true indicates silent data generated by the SDK.

AoqAudioStreamDirection

Audio stream direction.
Enum valueValueDescription
AoqAudioStreamPublish0Publishing audio
AoqAudioStreamPlayout1Playback audio

AoqAudioExternalStreamToggle

External audio stream control.
Enum valueValueDescription
AoqAudioExternalStreamToggleNormal0Recovered
AoqAudioExternalStreamTogglePause1Paused

AoqAudioSource

Type of the audio data source.
Enum valueValueDescription
AoqAudioSourceCaptured0Captured audio data
AoqAudioSourceProcessCaptured1Audio data after 3A processing
AoqAudioSourcePublish2Audio data to be published (requires a successful Connect)
AoqAudioSourcePlayback3Audio data to be played

AoqAudioObserverMode

Audio frame callback mode.
Enum valueValueDescription
AoqAudioObserverModeReadOnly0Read-only
AoqAudioObserverModeReadWrite1Read-write

AoqAudioObserverConfig

Parameter settings for audio data callbacks.
FieldTypeDefault valueDescription
sampleRateint48000Sample rate of the callback audio. It is limited by the source. Resampling is performed if the rates do not match. 8, 12, 16, 24, 32, 44.1, 48, 64, 88.2, 96, 176.4, and 192K are supported.
channelsint1Number of audio channels in the callback. 1 and 2 are supported. This parameter is limited by the codec parameters of the subscribing stream.
modeAoqAudioObserverModeReadOnlyCallback mode

AoqAudioVolumeIndicationConfig

Local volume indication configuration.
FieldTypeDefault valueDescription
intervalint0Callback interval, in ms. A value less than or equal to 0 disables the callback. A value greater than 0 and less than 10 is treated as 10.
smoothint3Volume smoothing coefficient. Valid values: 0 to 10. A larger value results in smoother output.

AoqAudioVolume

Local volume information.
FieldTypeDescription
volumeintSmoothed instantaneous volume. Valid values: 0 to 255.

Video types

AoqVideoCaptureConfig

Video capture configuration.
FieldTypeDefault valueDescription
widthint1280Capture width, in pixels. This parameter is ineffective when isExternal=true.
heightint720Capture height, in pixels. This parameter is ineffective when isExternal=true.
fpsint15Capture frame rate. This parameter is ineffective when isExternal=true (the pace is determined by frame delivery).
isExternalboolfalseSpecifies whether to use external capture. If it is true, the camera is not opened, and frames are fed by pushExternalVideoCapturedFrame.

AoqVideoCanvas

Data structure for video rendering. view is an opaque pointer to the platform-native view handle. On Windows, pass the window handle HWND. The caller must ensure that the lifecycle of view outlasts the period during which it is set by setLocalView/setRemoteView.
FieldTypeDefault valueDescription
viewvoid*nullptrHandle of the display view (HWND). Pass nullptr to remove the rendering binding.
renderModeAoqRenderModeAutoRendering mode

AoqRenderMode

Rendering display mode.
Enum valueValueDescription
AoqRenderModeAuto0Auto mode
AoqRenderModeStretch1Stretch-to-fill mode. When the aspect ratios do not match, the image is stretched to the target ratio and becomes distorted.
AoqRenderModeFill2Letterbox mode. When the aspect ratios do not match, black bars are added to the top and bottom or the left and right.
AoqRenderModeCrop3Crop mode. When the aspect ratios do not match, the width or height is cropped and part of the image is lost.

AoqVideoPixelFormat

Video pixel format.
Enum valueValueDescription
AoqVideoPixelFormatUnknown0Unknown format
AoqVideoPixelFormatI4201I420
AoqVideoPixelFormatNV122NV12
AoqVideoPixelFormatNV213NV21
AoqVideoPixelFormatBGRA4BGRA
AoqVideoPixelFormatRGBA5RGBA

AoqVideoFrame

External video data.
FieldTypeDescription
formatAoqVideoPixelFormatPixel format
widthintWidth, in pixels
heightintHeight, in pixels
dataPtrvoid*Pointer to packed-format data (NV12/NV21/BGRA/RGBA)
dataSizeintNumber of bytes of packed data
dataY/dataU/dataVvoid*Pointers to the data of the three I420 planes
strideY/strideU/strideVintStride of the three I420 planes
timeStampint64_tTimestamp, in ms. If it is 0, the SDK fills it in with the local clock.

AoqVideoEncodedFrame

An externally encoded video frame. The caller performs the encoding, and the SDK packages and sends the frame directly without re-encoding.
FieldTypeDescription
codecAoqVideoCodecTypeCodec format
datavoid*Pointer to the encoded data
dataSizeintNumber of bytes of the encoded data
widthintWidth, in pixels
heightintHeight, in pixels
timeStampint64_tTimestamp, in ms. If it is 0, the SDK fills it in with the local clock.

AoqVideoCodecType

The codec type of the externally encoded frame.
Enum valueValueDescription
AoqVideoCodecTypeJPEG0JPEG

AoqVideoDeviceState

Video device state.
FieldTypeDescription
stateAoqVideoDeviceStateCodeStatus code
reasonintError code (AoqErrorCode)

AoqVideoDeviceStateCode

Video device state code.
Enum valueValueDescription
AoqVideoDeviceNone0No state
AoqVideoDeviceCaptureStarting1Camera starting
AoqVideoDeviceCaptureStarted2Camera started
AoqVideoDeviceCaptureStopping3Camera stopping
AoqVideoDeviceCaptureStopped4Camera stopped
AoqVideoDeviceCaptureFail5Failed to start the camera (for example, permission denied or the device is unavailable)

AoqMirrorMode

Mirror mode.
Enum valueValueDescription
AoqMirrorModeDisabled0Disable mirroring
AoqMirrorModeEnabled1Enable mirroring

AoqOrientationMode

Orientation mode.
Enum valueValueDescription
AoqOrientationModeAuto0Auto
AoqOrientationModePortrait1Portrait
AoqOrientationModeLandscape2Landscape

AoqVideoCodecConfig

Video codec parameters, which are shared by encoding and decoding. For decoding, only trackType/codecType/width/height/fps/bitrate take effect and participate in negotiation as a subscription proposal, whereas minBitrate/keyframeInterval/mirrorMode/orientationMode/isExternal are used only for encoding.
FieldTypeDefault valueDescription
isExternalboolfalseExternal encoding mode. When it is true, you push encoded frames, and the SDK does not perform capture or encoding.
trackTypeAoqTrackTypeVideoTrack type
codecTypeAoqEncoderTypeVideoH264Codec format
widthint540Resolution width
heightint960Resolution height
fpsint5Frame rate
bitrateint500000Initial bitrate, in bit/s
minBitrateint128000Minimum bitrate, in bit/s
keyframeIntervalint2Keyframe interval, in seconds
mirrorModeAoqMirrorModeDisabledMirror mode
orientationModeAoqOrientationModeAutoOrientation mode

AoqVideoSource

Data source of the video frame callback (position in the pipeline).
Enum valueValueDescription
AoqVideoSourceCaptured0Captured video data before preprocessing
AoqVideoSourcePreEncode1Video data before encoding, after preprocessing
AoqVideoSourceRemote2Remote video data after decoding and before rendering

AoqVideoObserverMode

Video frame callback mode.
Enum valueValueDescription
AoqVideoObserverModeReadOnly0Read-only
AoqVideoObserverModeReadWrite1Read-write

AoqVideoObserverAlignment

Width alignment method for video output.
Enum valueValueDescription
AoqVideoObserverAlignmentDefault0Default
AoqVideoObserverAlignmentEven1Even-number alignment
AoqVideoObserverAlignment424-byte alignment
AoqVideoObserverAlignment838-byte alignment
AoqVideoObserverAlignment16416-byte alignment

AoqVideoObserverConfig

Parameter settings for video data callbacks.
FieldTypeDefault valueDescription
formatAoqVideoPixelFormatI420Expected pixel format of the callback data
alignmentAoqVideoObserverAlignmentDefaultWidth alignment policy
modeAoqVideoObserverModeReadOnlyCallback mode. ReadWrite is supported only for I420.
mirrorAppliedboolfalseSpecifies whether to mirror the callback data