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.