Agora C++ API Reference for All Platforms
agora::rtc::VideoEncoderConfiguration Struct Reference

#include <IAgoraRtcEngine.h>

Public Member Functions

 VideoEncoderConfiguration (const VideoDimensions &d, FRAME_RATE f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mr=VIDEO_MIRROR_MODE_AUTO)
 
 VideoEncoderConfiguration (int width, int height, FRAME_RATE f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mr=VIDEO_MIRROR_MODE_AUTO)
 
 VideoEncoderConfiguration ()
 

Public Attributes

VideoDimensions dimensions
 
FRAME_RATE frameRate
 
int minFrameRate
 
int bitrate
 
int minBitrate
 
ORIENTATION_MODE orientationMode
 
DEGRADATION_PREFERENCE degradationPreference
 
VIDEO_MIRROR_MODE_TYPE mirrorMode
 

Detailed Description

Video encoder configurations.

Constructor & Destructor Documentation

◆ VideoEncoderConfiguration() [1/3]

agora::rtc::VideoEncoderConfiguration::VideoEncoderConfiguration ( const VideoDimensions d,
FRAME_RATE  f,
int  b,
ORIENTATION_MODE  m,
VIDEO_MIRROR_MODE_TYPE  mr = VIDEO_MIRROR_MODE_AUTO 
)
inline

◆ VideoEncoderConfiguration() [2/3]

agora::rtc::VideoEncoderConfiguration::VideoEncoderConfiguration ( int  width,
int  height,
FRAME_RATE  f,
int  b,
ORIENTATION_MODE  m,
VIDEO_MIRROR_MODE_TYPE  mr = VIDEO_MIRROR_MODE_AUTO 
)
inline

◆ VideoEncoderConfiguration() [3/3]

agora::rtc::VideoEncoderConfiguration::VideoEncoderConfiguration ( )
inline

Member Data Documentation

◆ dimensions

VideoDimensions agora::rtc::VideoEncoderConfiguration::dimensions

The video frame dimensions (px) used to specify the video quality and measured by the total number of pixels along a frame's width and height: VideoDimensions. The default value is 640 x 360.

◆ frameRate

FRAME_RATE agora::rtc::VideoEncoderConfiguration::frameRate

The frame rate of the video: FRAME_RATE. The default value is 15.

Note that we do not recommend setting this to a value greater than 30.

◆ minFrameRate

int agora::rtc::VideoEncoderConfiguration::minFrameRate

The minimum frame rate of the video. The default value is -1.

◆ bitrate

int agora::rtc::VideoEncoderConfiguration::bitrate

The video encoding bitrate (Kbps).

Choose one of the following options:

  • STANDARD_BITRATE: (Recommended) The standard bitrate.
    • the COMMUNICATION profile: the encoding bitrate equals the base bitrate.
    • the LIVE_BROADCASTING profile: the encoding bitrate is twice the base bitrate.
  • COMPATIBLE_BITRATE: The compatible bitrate: the bitrate stays the same regardless of the profile.

the COMMUNICATION profile prioritizes smoothness, while the LIVE_BROADCASTING profile prioritizes video quality (requiring a higher bitrate). We recommend setting the bitrate mode as STANDARD_BITRATE to address this difference.

The following table lists the recommended video encoder configurations, where the base bitrate applies to the COMMUNICATION profile. Set your bitrate based on this table. If you set a bitrate beyond the proper range, the SDK automatically sets it to within the range.

Note
In the following table, Base Bitrate applies to the COMMUNICATION profile, and Live Bitrate applies to the LIVE_BROADCASTING profile.
Resolution Frame Rate (fps) Base Bitrate (Kbps) Live Bitrate (Kbps)
160 * 120 15 65 130
120 * 120 15 50 100
320 * 180 15 140 280
180 * 180 15 100 200
240 * 180 15 120 240
320 * 240 15 200 400
240 * 240 15 140 280
424 * 240 15 220 440
640 * 360 15 400 800
360 * 360 15 260 520
640 * 360 30 600 1200
360 * 360 30 400 800
480 * 360 15 320 640
480 * 360 30 490 980
640 * 480 15 500 1000
480 * 480 15 400 800
640 * 480 30 750 1500
480 * 480 30 600 1200
848 * 480 15 610 1220
848 * 480 30 930 1860
640 * 480 10 400 800
1280 * 720 15 1130 2260
1280 * 720 30 1710 3420
960 * 720 15 910 1820
960 * 720 30 1380 2760
1920 * 1080 15 2080 4160
1920 * 1080 30 3150 6300
1920 * 1080 60 4780 6500

◆ minBitrate

int agora::rtc::VideoEncoderConfiguration::minBitrate

The minimum encoding bitrate (Kbps).

The SDK automatically adjusts the encoding bitrate to adapt to the network conditions. Using a value greater than the default value forces the video encoder to output high-quality images but may cause more packet loss and hence sacrifice the smoothness of the video transmission. That said, unless you have special requirements for image quality, Agora does not recommend changing this value.

Note
This parameter applies only to the LIVE_BROADCASTING profile.

◆ orientationMode

ORIENTATION_MODE agora::rtc::VideoEncoderConfiguration::orientationMode

The video orientation mode of the video: ORIENTATION_MODE.

◆ degradationPreference

DEGRADATION_PREFERENCE agora::rtc::VideoEncoderConfiguration::degradationPreference

The video encoding degradation preference under limited bandwidth: DEGRADATION_PREFERENCE.

◆ mirrorMode

VIDEO_MIRROR_MODE_TYPE agora::rtc::VideoEncoderConfiguration::mirrorMode

Sets the mirror mode of the published local video stream. It only affects the video that the remote user sees. See VIDEO_MIRROR_MODE_TYPE

Note
The SDK disables the mirror mode by default.