Skip to main content

Engine Configuration

Quick Reference

The RTC engine provides the following configurable parameters:

PlatformConfiguration ItemDefault Value
AllAuto-reconnectEnabled
AllStats report callback interval1000ms
AllAudio initialization - Codec typeOpus
AndroidAudio initialization - Audio sourceVoice communication
AndroidAudio initialization - Sample rate16000
AndroidAudio initialization - StereoEnabled
AndroidAudio initialization - Microphone captureEnabled
AllVideo initialization - SimulcastEnabled
AndroidVideo initialization - Hardware encodingEnabled
AndroidVideo initialization - Hardware decodingEnabled
AndroidVideo initialization - High compression encodingDisabled
AndroidVideo initialization - Hardware encoder frame rate30 Fps
AndroidVideo initialization - Texture-based capture/decodingEnabled

Auto-reconnect

Auto-reconnect is enabled by default. Disable it during engine initialization:

RCRTCEngineSetup setup = RCRTCEngineSetup.create(reconnectable: false);
engine = RCRTCEngine.create(setup);

Stats Report Callback Interval

The default callback interval is 1000ms (minimum 100ms). Note that shorter intervals may impact performance.

Modify during initialization:

/// Set callback interval to 2 seconds
RCRTCEngineSetup setup = RCRTCEngineSetup.create(statsReportInterval: 2000);
engine = RCRTCEngine.create(setup);

Audio Initialization

Modify Audio Codec Type

Supports PCMU and OPUS (default: OPUS). Configure during initialization:

/// Set audio codec to PCMU
RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(codec: RCRTCAudioCodecType.pcmu);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);

Modify Audio Source

Default source: Voice communication. Android-only configuration:

/// Set audio source to microphone
RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(audioSource: RCRTCAudioSource.mic);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);

RCRTCAudioSource maps to Android's MediaRecorder.AudioSource.

Modify Sample Rate

Supported rates: 8000, 16000, 32000, 44100, 48000 (default: 16000). Android-only:

/// Set sample rate to 32000
RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(audioSampleRate: 32000);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);

Enable/Disable Stereo

Enabled by default. Disable during initialization (Android-only):

RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(enableStereo: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);

Enable/Disable Microphone Capture

Enabled by default. Disable during initialization (Android-only):

RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(enableMicrophone: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);
tip

Once disabled, microphone capture cannot be re-enabled during the engine's lifecycle.

Video Initialization

Enable/Disable Simulcast

Enabled by default. Disable during initialization:

RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableTinyStream: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);

Enable/Disable Hardware Encoding

Enabled by default. Disable during initialization (Android-only):

RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableHardwareEncoder: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);

Enable/Disable Hardware Decoding

Enabled by default. Disable during initialization (Android-only):

RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableHardwareDecoder: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);

Enable/Disable High Compression Encoding

Disabled by default. Enable during initialization (Android-only):

RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableHardwareEncoderHighProfile: true);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);
tip

High compression encoding may cause compatibility issues. Use with caution.

Configure Hardware Encoder Frame Rate

Range: 0-30 FPS (default: 30). Android-only configuration:

/// Set hardware encoder frame rate to 25 FPS
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(hardwareEncoderFrameRate: 25);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);

Enable/Disable Texture-based Capture/Decoding

Enabled by default. Disable during initialization (Android-only):

RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableTexture: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);
tip

When disabled, capture/decoding will use YUV data format. Recommended for Android 5.0+ devices for better compatibility.