VoxaRTC
Documentation menu
Guides

API compatibility

The complete public surface of agora_rtc_engine 6.6.3 is present so your code compiles. This page is about what actually does something behind each call.

Platforms

PlatformStatus
AndroidDevice-tested, running in production
macOSTested
iOSExpected to work (same media engine); not CI-verified
WebNot supported yet

Channel & lifecycle

createAgoraRtcEngine / initialize / release

Full state machine, including double-initialize semantics.

Implemented
joinChannel / leaveChannel

uid 0 auto-assign, double-join and leave-before-join quirks replicated.

Implemented
renewToken

Re-exchanges at the gateway; connection is preserved.

Implemented
onConnectionStateChanged

Agora's state/reason pairs.

Implemented
Auto-reconnect / onRejoinChannelSuccess

Driven by the SFU's own reconnection.

Implemented
onTokenPrivilegeWillExpire / onRequestToken

Scheduled from the Agora token's expiry, not the media credential's.

Implemented

Audio & video

enableAudio / enableVideo / disableAudio / disableVideoImplemented
muteLocalAudioStream / muteLocalVideoStream

Honoured before join and replayed on join.

Implemented
muteRemoteAudioStream / muteRemoteVideoStreamImplemented
muteAllRemoteAudioStreams / muteAllRemoteVideoStreams

Applies to current and future participants.

Implemented
setClientRole

Fires onClientRoleChanged.

Implemented
updateChannelMediaOptions

Role change fires the callback; publish-flag-only updates are silent, as in Agora.

Implemented
switchCamera

Works on a pre-join preview too; the view rebinds on flip.

Implemented
setEnableSpeakerphone / setDefaultAudioRouteToSpeakerphoneImplemented
startPreview / stopPreview

Pre-join preview with a real camera track.

Implemented
setVideoEncoderConfiguration

Dimensions, framerate and bitrate map onto the media engine's capture options.

Implemented
enableDualStreamMode / setRemoteVideoStreamType

Simulcast.

Implemented
startScreenCapture / stopScreenCapture

Published as a separate track; never targeted by switchCamera.

Implemented
enableAudioVolumeIndication

Volumes mapped through dB onto Agora's 0–255 scale.

Implemented

Rendering

AgoraVideoView / VideoViewController

Including the cached-controller pattern Agora's docs recommend.

Implemented
VideoViewController.remoteImplemented
setupLocalVideo / setupRemoteVideoImplemented

Statistics

onRtcStats / onNetworkQuality

Fields are populated from the media engine's stats; values are not numerically identical to Agora's.

Partial
onRemoteVideoStats / onRemoteAudioStats

Subset of fields available from the SFU.

Partial

Not implemented

These throw AgoraRtcException(-4, errNotSupported) rather than failing silently, so an app that depends on them fails at the call site instead of at runtime in front of a user.

Media player (createMediaPlayer, …)Throws −4
Spatial audioThrows −4
Channel media relayThrows −4
Raw frame observers (registerVideoFrameObserver, …)Throws −4
RTM / signaling

Out of scope: RTM is a separate Agora product.

Throws −4

How parity is verified

Documentation is not a specification of behaviour — the ordering quirks that break migrations are not written down anywhere. So the behaviour is recorded: a scenario app drives both SDKs through the same flow, the Agora run against the live Agora service is saved as a golden transcript, and the VoxaRTC run is diffed against it.

text
scenario: role_switch
  ✓ onJoinChannelSuccess(channel=parity, uid=1001, elapsed≈)
  ✓ onClientRoleChanged(old=broadcaster, new=audience)
  ✓ onUserJoined(remoteUid=1002)
  ✓ onUserPublished(remoteUid=1002, media=video)
PARITY OK — 8/8 scenarios

Media-burst events are compared as multisets (their interleaving is genuinely nondeterministic); everything else is compared in order. Several real bugs were found this way that no unit test would have caught.