Server Gateway SDK v3.8.202.20 for Linux C++
Classes | Typedefs | Enumerations | Variables
agora::rtc Namespace Reference

Classes

struct  AudioEncoderConfiguration
 
struct  AudioParameters
 
struct  AudioSinkWants
 
struct  AudioSubscriptionOptions
 
struct  AudioVolumeInformation
 
struct  DownlinkNetworkInfo
 
struct  EncodedAudioFrameAdvancedSettings
 
struct  EncodedAudioFrameInfo
 
struct  EncodedVideoFrameInfo
 
struct  EncryptionConfig
 
class  IAudioEncodedFrameSender
 
class  IAudioPcmDataSender
 
class  IAudioSinkBase
 
class  IAudioTrack
 
class  ILocalAudioTrack
 
class  ILocalUser
 
class  ILocalUserObserver
 
class  ILocalVideoTrack
 
class  IMediaNodeFactory
 
class  INetworkObserver
 
class  IRemoteAudioTrack
 
class  IRemoteVideoTrack
 
class  IRtcConnection
 
class  IRtcConnectionObserver
 
class  IVideoEncodedImageReceiver
 
class  IVideoEncodedImageSender
 
class  IVideoFrameObserver2
 
class  IVideoFrameSender
 
class  IVideoMixerSource
 
class  IVideoSinkBase
 
class  IVideoTrack
 
struct  LastmileProbeConfig
 
struct  LastmileProbeOneWayResult
 
struct  LastmileProbeResult
 
struct  LocalAudioStats
 
struct  LocalVideoTrackStats
 
struct  MixerLayoutConfig
 
struct  RemoteAudioTrackStats
 
struct  RemoteVideoTrackStats
 
struct  RtcConnectionConfiguration
 
struct  RtcStats
 
struct  SimulcastStreamConfig
 
struct  TConnectionInfo
 
struct  UplinkNetworkInfo
 
struct  UserInfo
 
struct  VideoDimensions
 
struct  VideoEncoderConfiguration
 
struct  VideoSubscriptionOptions
 
struct  VideoTrackInfo
 

Typedefs

typedef unsigned int uid_t
 
typedef unsigned int track_id_t
 
typedef unsigned int conn_id_t
 

Enumerations

enum  USER_OFFLINE_REASON_TYPE { USER_OFFLINE_QUIT = 0 , USER_OFFLINE_DROPPED = 1 , USER_OFFLINE_BECOME_AUDIENCE = 2 }
 
enum  QUALITY_TYPE {
  QUALITY_UNKNOWN = 0 , QUALITY_EXCELLENT = 1 , QUALITY_GOOD = 2 , QUALITY_POOR = 3 ,
  QUALITY_BAD = 4 , QUALITY_VBAD = 5 , QUALITY_DOWN = 6
}
 
enum  VIDEO_ORIENTATION { VIDEO_ORIENTATION_0 = 0 , VIDEO_ORIENTATION_90 = 90 , VIDEO_ORIENTATION_180 = 180 , VIDEO_ORIENTATION_270 = 270 }
 
enum  FRAME_RATE {
  FRAME_RATE_FPS_1 = 1 , FRAME_RATE_FPS_7 = 7 , FRAME_RATE_FPS_10 = 10 , FRAME_RATE_FPS_15 = 15 ,
  FRAME_RATE_FPS_24 = 24 , FRAME_RATE_FPS_30 = 30 , FRAME_RATE_FPS_60 = 60
}
 
enum  FRAME_WIDTH { FRAME_WIDTH_640 = 640 }
 
enum  FRAME_HEIGHT { FRAME_HEIGHT_360 = 360 }
 
enum  VIDEO_FRAME_TYPE {
  VIDEO_FRAME_TYPE_BLANK_FRAME = 0 , VIDEO_FRAME_TYPE_KEY_FRAME = 3 , VIDEO_FRAME_TYPE_DELTA_FRAME = 4 , VIDEO_FRAME_TYPE_B_FRAME = 5 ,
  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6 , VIDEO_FRAME_TYPE_UNKNOW
}
 
enum  ORIENTATION_MODE { ORIENTATION_MODE_ADAPTIVE = 0 , ORIENTATION_MODE_FIXED_LANDSCAPE = 1 , ORIENTATION_MODE_FIXED_PORTRAIT = 2 }
 
enum  DEGRADATION_PREFERENCE { MAINTAIN_QUALITY = 0 , MAINTAIN_FRAMERATE = 1 , MAINTAIN_BALANCED = 2 , MAINTAIN_RESOLUTION = 3 }
 
enum  VIDEO_CODEC_TYPE {
  VIDEO_CODEC_NONE = 0 , VIDEO_CODEC_VP8 = 1 , VIDEO_CODEC_H264 = 2 , VIDEO_CODEC_H265 = 3 ,
  VIDEO_CODEC_VP9 = 5 , VIDEO_CODEC_GENERIC = 6 , VIDEO_CODEC_GENERIC_H264 = 7 , VIDEO_CODEC_AV1 = 12 ,
  VIDEO_CODEC_GENERIC_JPEG = 20
}
 
enum  AUDIO_CODEC_TYPE {
  AUDIO_CODEC_OPUS = 1 , AUDIO_CODEC_PCMA = 3 , AUDIO_CODEC_PCMU = 4 , AUDIO_CODEC_G722 = 5 ,
  AUDIO_CODEC_AACLC = 8 , AUDIO_CODEC_HEAAC = 9 , AUDIO_CODEC_HEAAC2 = 11
}
 
enum  VIDEO_STREAM_TYPE { VIDEO_STREAM_HIGH = 0 , VIDEO_STREAM_LOW = 1 }
 
enum  VIDEO_MIRROR_MODE_TYPE { VIDEO_MIRROR_MODE_AUTO = 0 , VIDEO_MIRROR_MODE_ENABLED = 1 , VIDEO_MIRROR_MODE_DISABLED = 2 }
 
enum  VIDEO_SOURCE_TYPE {
  VIDEO_SOURCE_CAMERA_PRIMARY , VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY , VIDEO_SOURCE_CAMERA_SECONDARY , VIDEO_SOURCE_SCREEN_PRIMARY ,
  VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY , VIDEO_SOURCE_SCREEN_SECONDARY , VIDEO_SOURCE_CUSTOM , VIDEO_SOURCE_MEDIA_PLAYER ,
  VIDEO_SOURCE_RTC_IMAGE_PNG , VIDEO_SOURCE_RTC_IMAGE_JPEG , VIDEO_SOURCE_RTC_IMAGE_GIF , VIDEO_SOURCE_REMOTE ,
  VIDEO_SOURCE_TRANSCODED , VIDEO_SOURCE_UNKNOWN = 100
}
 
enum  CLIENT_ROLE_TYPE { CLIENT_ROLE_BROADCASTER = 1 , CLIENT_ROLE_AUDIENCE = 2 }
 
enum  QUALITY_ADAPT_INDICATION { ADAPT_NONE = 0 , ADAPT_UP_BANDWIDTH = 1 , ADAPT_DOWN_BANDWIDTH = 2 }
 
enum  AUDIO_PROFILE_TYPE {
  AUDIO_PROFILE_DEFAULT = 0 , AUDIO_PROFILE_SPEECH_STANDARD = 1 , AUDIO_PROFILE_MUSIC_STANDARD = 2 , AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3 ,
  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4 , AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5 , AUDIO_PROFILE_IOT = 6
}
 
enum  AUDIO_SCENARIO_TYPE {
  AUDIO_SCENARIO_DEFAULT = 0 , AUDIO_SCENARIO_GAME_STREAMING = 3 , AUDIO_SCENARIO_CHATROOM = 5 , AUDIO_SCENARIO_HIGH_DEFINITION = 6 ,
  AUDIO_SCENARIO_CHORUS = 7 , AUDIO_SCENARIO_NUM = 8
}
 
enum  LOCAL_AUDIO_STREAM_STATE { LOCAL_AUDIO_STREAM_STATE_STOPPED = 0 , LOCAL_AUDIO_STREAM_STATE_RECORDING = 1 , LOCAL_AUDIO_STREAM_STATE_ENCODING = 2 , LOCAL_AUDIO_STREAM_STATE_FAILED = 3 }
 
enum  LOCAL_AUDIO_STREAM_ERROR {
  LOCAL_AUDIO_STREAM_ERROR_OK = 0 , LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1 , LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2 , LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3 ,
  LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4 , LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
}
 
enum  LOCAL_VIDEO_STREAM_STATE { LOCAL_VIDEO_STREAM_STATE_STOPPED = 0 , LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1 , LOCAL_VIDEO_STREAM_STATE_ENCODING = 2 , LOCAL_VIDEO_STREAM_STATE_FAILED = 3 }
 
enum  LOCAL_VIDEO_STREAM_ERROR {
  LOCAL_VIDEO_STREAM_ERROR_OK = 0 , LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1 , LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2 , LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3 ,
  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4 , LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5
}
 
enum  REMOTE_AUDIO_STATE {
  REMOTE_AUDIO_STATE_STOPPED = 0 , REMOTE_AUDIO_STATE_STARTING = 1 , REMOTE_AUDIO_STATE_DECODING = 2 , REMOTE_AUDIO_STATE_FROZEN = 3 ,
  REMOTE_AUDIO_STATE_FAILED = 4
}
 
enum  REMOTE_AUDIO_STATE_REASON {
  REMOTE_AUDIO_REASON_INTERNAL = 0 , REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1 , REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2 , REMOTE_AUDIO_REASON_LOCAL_MUTED = 3 ,
  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4 , REMOTE_AUDIO_REASON_REMOTE_MUTED = 5 , REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6 , REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7
}
 
enum  REMOTE_VIDEO_STATE {
  REMOTE_VIDEO_STATE_STOPPED = 0 , REMOTE_VIDEO_STATE_STARTING = 1 , REMOTE_VIDEO_STATE_DECODING = 2 , REMOTE_VIDEO_STATE_FROZEN = 3 ,
  REMOTE_VIDEO_STATE_FAILED = 4
}
 
enum  REMOTE_VIDEO_STATE_REASON {
  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0 , REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1 , REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2 , REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3 ,
  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4 , REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5 , REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6 , REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7 ,
  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8 , REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9
}
 
enum  REMOTE_VIDEO_DOWNSCALE_LEVEL {
  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE , REMOTE_VIDEO_DOWNSCALE_LEVEL_1 , REMOTE_VIDEO_DOWNSCALE_LEVEL_2 , REMOTE_VIDEO_DOWNSCALE_LEVEL_3 ,
  REMOTE_VIDEO_DOWNSCALE_LEVEL_4
}
 
enum  CONNECTION_STATE_TYPE {
  CONNECTION_STATE_DISCONNECTED = 1 , CONNECTION_STATE_CONNECTING = 2 , CONNECTION_STATE_CONNECTED = 3 , CONNECTION_STATE_RECONNECTING = 4 ,
  CONNECTION_STATE_FAILED = 5
}
 
enum  LASTMILE_PROBE_RESULT_STATE { LASTMILE_PROBE_RESULT_COMPLETE = 1 , LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2 , LASTMILE_PROBE_RESULT_UNAVAILABLE = 3 }
 
enum  CONNECTION_CHANGED_REASON_TYPE {
  CONNECTION_CHANGED_CONNECTING = 0 , CONNECTION_CHANGED_JOIN_SUCCESS = 1 , CONNECTION_CHANGED_INTERRUPTED = 2 , CONNECTION_CHANGED_BANNED_BY_SERVER = 3 ,
  CONNECTION_CHANGED_JOIN_FAILED = 4 , CONNECTION_CHANGED_LEAVE_CHANNEL = 5 , CONNECTION_CHANGED_INVALID_APP_ID = 6 , CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7 ,
  CONNECTION_CHANGED_INVALID_TOKEN = 8 , CONNECTION_CHANGED_TOKEN_EXPIRED = 9 , CONNECTION_CHANGED_REJECTED_BY_SERVER = 10 , CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11 ,
  CONNECTION_CHANGED_RENEW_TOKEN = 12 , CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13 , CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14 , CONNECTION_CHANGED_REJOIN_SUCCESS = 15 ,
  CONNECTION_CHANGED_LOST = 16 , CONNECTION_CHANGED_ECHO_TEST = 17 , CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18
}
 
enum  NETWORK_TYPE {
  NETWORK_TYPE_UNKNOWN = -1 , NETWORK_TYPE_DISCONNECTED = 0 , NETWORK_TYPE_LAN = 1 , NETWORK_TYPE_WIFI = 2 ,
  NETWORK_TYPE_MOBILE_2G = 3 , NETWORK_TYPE_MOBILE_3G = 4 , NETWORK_TYPE_MOBILE_4G = 5
}
 
enum  AREA_CODE {
  AREA_CODE_CN = 0x00000001 , AREA_CODE_NA = 0x00000002 , AREA_CODE_EU = 0x00000004 , AREA_CODE_AS = 0x00000008 ,
  AREA_CODE_JP = 0x00000010 , AREA_CODE_IN = 0x00000020 , AREA_CODE_GLOB = (0xFFFFFFFF)
}
 
enum  ENCRYPTION_MODE { SM4_128_ECB = 4 }
 
enum  ENCRYPTION_ERROR_TYPE { ENCRYPTION_ERROR_INTERNAL_FAILURE = 0 , ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1 , ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2 }
 
enum  MAX_USER_ACCOUNT_LENGTH_TYPE { MAX_USER_ACCOUNT_LENGTH = 256 }
 
enum  STREAM_SUBSCRIBE_STATE { SUB_STATE_IDLE = 0 , SUB_STATE_NO_SUBSCRIBED = 1 , SUB_STATE_SUBSCRIBING = 2 , SUB_STATE_SUBSCRIBED = 3 }
 
enum  STREAM_PUBLISH_STATE { PUB_STATE_IDLE = 0 , PUB_STATE_NO_PUBLISHED = 1 , PUB_STATE_PUBLISHING = 2 , PUB_STATE_PUBLISHED = 3 }
 
enum  TCcMode { CC_ENABLED , CC_DISABLED }
 
enum  BYTES_PER_SAMPLE { TWO_BYTES_PER_SAMPLE = 2 }
 
enum  RAW_AUDIO_FRAME_OP_MODE_TYPE { RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0 , RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2 }
 
enum  ImageType { kPng , kJpeg , kGif }
 
enum  VideoTrackType { LOCAL_VIDEO_TRACK , REMOTE_VIDEO_TRACK }
 

Variables

const int STANDARD_BITRATE = 0
 
const int COMPATIBLE_BITRATE = -1
 
static const unsigned int DEFAULT_CONNECTION_ID = 0
 
static const unsigned int DUMMY_CONNECTION_ID = (std::numeric_limits<unsigned int>::max)()
 

Typedef Documentation

◆ conn_id_t

typedef unsigned int agora::rtc::conn_id_t

◆ track_id_t

typedef unsigned int agora::rtc::track_id_t

◆ uid_t

typedef unsigned int agora::rtc::uid_t

Enumeration Type Documentation

◆ AREA_CODE

IP areas.

Enumerator
AREA_CODE_CN 

0x00000001: Mainland China.

AREA_CODE_NA 

0x00000002: North America.

AREA_CODE_EU 

0x00000004: Europe.

AREA_CODE_AS 

0x00000008: Asia, excluding Mainland China.

AREA_CODE_JP 

0x00000010: Japan.

AREA_CODE_IN 

0x00000020: India.

AREA_CODE_GLOB 

0xFFFFFFFF: (Default) Global.

◆ AUDIO_CODEC_TYPE

Audio codec types.

Enumerator
AUDIO_CODEC_OPUS 

1: OPUS.

AUDIO_CODEC_PCMA 

3: PCMA.

AUDIO_CODEC_PCMU 

4: PCMU.

AUDIO_CODEC_G722 

5: G722.

AUDIO_CODEC_AACLC 

7: AAC. 8: AAC LC.

AUDIO_CODEC_HEAAC 

9: HE AAC.

AUDIO_CODEC_HEAAC2 

11: HEAAC2.

◆ AUDIO_PROFILE_TYPE

Audio profile types.

Enumerator
AUDIO_PROFILE_DEFAULT 

0: The default audio profile.

  • In the Communication profile, it represents a sample rate of 16 kHz, music encoding, mono, and a bitrate of up to 16 Kbps.
  • In the Live-broadcast profile, it represents a sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 64 Kbps.
AUDIO_PROFILE_SPEECH_STANDARD 

1: A sample rate of 16 kHz, audio encoding, mono, and a bitrate up to 18 Kbps.

AUDIO_PROFILE_MUSIC_STANDARD 

2: A sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 64 Kbps.

AUDIO_PROFILE_MUSIC_STANDARD_STEREO 

3: A sample rate of 48 kHz, music encoding, stereo, and a bitrate of up to 80 Kbps.

AUDIO_PROFILE_MUSIC_HIGH_QUALITY 

4: A sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 96 Kbps.

AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO 

5: A sample rate of 48 kHz, music encoding, stereo, and a bitrate of up to 128 Kbps.

AUDIO_PROFILE_IOT 

6: A sample rate of 16 kHz, audio encoding, mono, and a bitrate of up to 64 Kbps.

◆ AUDIO_SCENARIO_TYPE

Audio application scenarios.

Enumerator
AUDIO_SCENARIO_DEFAULT 

0: (Recommended) The default audio scenario.

AUDIO_SCENARIO_GAME_STREAMING 

3: (Recommended) The live gaming scenario, which needs to enable gaming audio effects in the speaker. Choose this scenario to achieve high-fidelity music playback.

AUDIO_SCENARIO_CHATROOM 

5: The chatroom scenario, which needs to keep recording when setClientRole to audience. Normally, app developer can also use mute api to achieve the same result, and we implement this 'non-orthogonal' behavior only to make API backward compatible.

AUDIO_SCENARIO_HIGH_DEFINITION 

6: (Recommended) The scenario requiring high-quality audio.

AUDIO_SCENARIO_CHORUS 

7: Chorus

AUDIO_SCENARIO_NUM 

8: Reserved.

◆ BYTES_PER_SAMPLE

Number of bytes per sample.

Enumerator
TWO_BYTES_PER_SAMPLE 

2: Two bytes per sample.

◆ CLIENT_ROLE_TYPE

User role types.

Enumerator
CLIENT_ROLE_BROADCASTER 

1: Broadcaster. A broadcaster can both send and receive streams.

CLIENT_ROLE_AUDIENCE 

2: Audience. An audience can only receive streams.

◆ CONNECTION_CHANGED_REASON_TYPE

Reasons for a connection state change.

Enumerator
CONNECTION_CHANGED_CONNECTING 

0: The SDK is connecting to the server.

CONNECTION_CHANGED_JOIN_SUCCESS 

1: The SDK has joined the channel successfully.

CONNECTION_CHANGED_INTERRUPTED 

2: The connection between the SDK and the server is interrupted.

CONNECTION_CHANGED_BANNED_BY_SERVER 

3: The connection between the SDK and the server is banned by the server.

CONNECTION_CHANGED_JOIN_FAILED 

4: The SDK fails to join the channel for more than 20 minutes and stops reconnecting to the channel.

CONNECTION_CHANGED_LEAVE_CHANNEL 

5: The SDK has left the channel.

CONNECTION_CHANGED_INVALID_APP_ID 

6: The connection fails because the App ID is not valid.

CONNECTION_CHANGED_INVALID_CHANNEL_NAME 

7: The connection fails because the channel name is not valid.

CONNECTION_CHANGED_INVALID_TOKEN 

8: The connection fails because the token is not valid.

CONNECTION_CHANGED_TOKEN_EXPIRED 

9: The connection fails because the token has expired.

CONNECTION_CHANGED_REJECTED_BY_SERVER 

10: The connection is rejected by the server.

CONNECTION_CHANGED_SETTING_PROXY_SERVER 

11: The connection changes to reconnecting because the SDK has set a proxy server.

CONNECTION_CHANGED_RENEW_TOKEN 

12: When the connection state changes because the app has renewed the token.

CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED 

13: The IP Address of the app has changed. A change in the network type or IP/Port changes the IP address of the app.

CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT 

14: A timeout occurs for the keep-alive of the connection between the SDK and the server.

CONNECTION_CHANGED_REJOIN_SUCCESS 

15: The SDK has rejoined the channel successfully.

CONNECTION_CHANGED_LOST 

16: The connection between the SDK and the server is lost.

CONNECTION_CHANGED_ECHO_TEST 

17: The change of connection state is caused by echo test.

CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER 

18: The local IP Address is changed.

◆ CONNECTION_STATE_TYPE

Connection state types.

Enumerator
CONNECTION_STATE_DISCONNECTED 

1: The SDK is disconnected from the server.

CONNECTION_STATE_CONNECTING 

2: The SDK is connecting to the server.

CONNECTION_STATE_CONNECTED 

3: The SDK is connected to the server and has joined a channel. You can now publish or subscribe to a track in the channel.

CONNECTION_STATE_RECONNECTING 

4: The SDK keeps rejoining the channel after being disconnected from the channel, probably because of network issues.

CONNECTION_STATE_FAILED 

5: The SDK fails to connect to the server or join the channel.

◆ DEGRADATION_PREFERENCE

Video degradation preferences under limited bandwidth.

Enumerator
MAINTAIN_QUALITY 

0: (Default) Degrade the frame rate and keep resolution to guarantee the video quality.

MAINTAIN_FRAMERATE 

1: Degrade resolution in order to maintain framerate.

MAINTAIN_BALANCED 

2: Maintain resolution in video quality control process. Under limited bandwidth, degrade video quality first and then degrade frame rate.

MAINTAIN_RESOLUTION 

3: Degrade framerate in order to maintain resolution.

◆ ENCRYPTION_ERROR_TYPE

Encryption error type.

Enumerator
ENCRYPTION_ERROR_INTERNAL_FAILURE 

0: Internal reasons.

ENCRYPTION_ERROR_DECRYPTION_FAILURE 

1: Decryption error. Make sure the sender and the receiver use the same encryption mode and key.

ENCRYPTION_ERROR_ENCRYPTION_FAILURE 

2: Encryption error.

◆ ENCRYPTION_MODE

Encryption mode.

Enumerator
SM4_128_ECB 

4: 128-bit SM4 encryption, ECB mode.

◆ FRAME_HEIGHT

Video frame height.

Enumerator
FRAME_HEIGHT_360 

360: 360 pixels.

◆ FRAME_RATE

The video frame rate.

Enumerator
FRAME_RATE_FPS_1 

1: 1 fps.

FRAME_RATE_FPS_7 

7: 7 fps.

FRAME_RATE_FPS_10 

10: 10 fps.

FRAME_RATE_FPS_15 

15: 15 fps.

FRAME_RATE_FPS_24 

24: 24 fps.

FRAME_RATE_FPS_30 

30: 30 fps.

FRAME_RATE_FPS_60 

60: 60 fps. Applies to Windows and macOS only.

◆ FRAME_WIDTH

Video frame width.

Enumerator
FRAME_WIDTH_640 

640: 640 pixels.

◆ ImageType

Image type.

Enumerator
kPng 

PNG.

kJpeg 

JPEG.

kGif 

Gif.

◆ LASTMILE_PROBE_RESULT_STATE

States of the last mile network probe result.

Enumerator
LASTMILE_PROBE_RESULT_COMPLETE 

1: The probe result is complete.

LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE 

2: The probe result is incomplete and bandwidth estimation is not available, probably due to temporary limited test resources.

LASTMILE_PROBE_RESULT_UNAVAILABLE 

3: The probe result is not available, probably due to poor network conditions.

◆ LOCAL_AUDIO_STREAM_ERROR

Reasons for the local audio failure.

Enumerator
LOCAL_AUDIO_STREAM_ERROR_OK 

0: The local audio is normal.

LOCAL_AUDIO_STREAM_ERROR_FAILURE 

1: No specified reason for the local audio failure.

LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION 

2: No permission to use the local audio device.

LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY 

3: The microphone is in use.

LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE 

4: The local audio recording fails. Check whether the recording device is working properly.

LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE 

5: The local audio encoding fails.

◆ LOCAL_AUDIO_STREAM_STATE

States of the local audio.

Enumerator
LOCAL_AUDIO_STREAM_STATE_STOPPED 

0: The local audio is in the initial state.

LOCAL_AUDIO_STREAM_STATE_RECORDING 

1: The audio recording device starts successfully.

LOCAL_AUDIO_STREAM_STATE_ENCODING 

2: The first audio frame is encoded successfully.

LOCAL_AUDIO_STREAM_STATE_FAILED 

3: The local audio fails to start.

◆ LOCAL_VIDEO_STREAM_ERROR

Local video state error codes.

Enumerator
LOCAL_VIDEO_STREAM_ERROR_OK 

0: The local video is normal.

LOCAL_VIDEO_STREAM_ERROR_FAILURE 

1: No specified reason for the local video failure.

LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION 

2: No permission to use the local video capturing device.

LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY 

3: The local video capturing device is in use.

LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE 

4: The local video capture fails. Check whether the capturing device is working properly.

LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE 

5: The local video encoding fails.

◆ LOCAL_VIDEO_STREAM_STATE

Local video state types.

Enumerator
LOCAL_VIDEO_STREAM_STATE_STOPPED 

0: The local video is in the initial state.

LOCAL_VIDEO_STREAM_STATE_CAPTURING 

1: The capturer starts successfully.

LOCAL_VIDEO_STREAM_STATE_ENCODING 

2: The first video frame is successfully encoded.

LOCAL_VIDEO_STREAM_STATE_FAILED 

3: The local video fails to start.

◆ MAX_USER_ACCOUNT_LENGTH_TYPE

Maximum length of user account.

Enumerator
MAX_USER_ACCOUNT_LENGTH 

256: The maximum length (byte) of user account.

◆ NETWORK_TYPE

The network type.

Enumerator
NETWORK_TYPE_UNKNOWN 

-1: The network type is unknown.

NETWORK_TYPE_DISCONNECTED 

0: The network type is disconnected.

NETWORK_TYPE_LAN 

1: The network type is LAN.

NETWORK_TYPE_WIFI 

2: The network type is Wi-Fi.

NETWORK_TYPE_MOBILE_2G 

3: The network type is mobile 2G.

NETWORK_TYPE_MOBILE_3G 

4: The network type is mobile 3G.

NETWORK_TYPE_MOBILE_4G 

5: The network type is mobile 4G.

◆ ORIENTATION_MODE

Video output orientation modes.

Enumerator
ORIENTATION_MODE_ADAPTIVE 

0: (Default) Adaptive mode.

In this mode, the output video always follows the orientation of the captured video.

  • If the captured video is in landscape mode, the output video is in landscape mode.
  • If the captured video is in portrait mode, the output video is in portrait mode.
ORIENTATION_MODE_FIXED_LANDSCAPE 

1: Landscape mode.

In this mode, the output video is always in landscape mode. If the captured video is in portrait mode, the video encoder crops it to fit the output. Applies to scenarios where the receiver cannot process the rotation information, for example, CDN live streaming.

ORIENTATION_MODE_FIXED_PORTRAIT 

2: Portrait mode.

In this mode, the output video is always in portrait mode. If the captured video is in landscape mode, the video encoder crops it to fit the output. Applies to scenarios where the receiver cannot process the rotation information, for example, CDN live streaming.

◆ QUALITY_ADAPT_INDICATION

Quality change of the local video in terms of target frame rate and target bit rate since last count.

Enumerator
ADAPT_NONE 

0: The quality of the local video stays the same.

ADAPT_UP_BANDWIDTH 

1: The quality improves because the network bandwidth increases.

ADAPT_DOWN_BANDWIDTH 

2: The quality worsens because the network bandwidth decreases.

◆ QUALITY_TYPE

The network quality types.

Enumerator
QUALITY_UNKNOWN 

0: The network quality is unknown.

Deprecated:
This member is deprecated.
QUALITY_EXCELLENT 

1: The quality is excellent.

QUALITY_GOOD 

2: The quality is quite good, but the bitrate may be slightly lower than excellent.

QUALITY_POOR 

3: Users can feel the communication slightly impaired.

QUALITY_BAD 

4: Users cannot communicate smoothly.

QUALITY_VBAD 

5: Users can barely communicate.

QUALITY_DOWN 

6: Users cannot communicate at all.

◆ RAW_AUDIO_FRAME_OP_MODE_TYPE

Enumerator
RAW_AUDIO_FRAME_OP_MODE_READ_ONLY 

0: Read-only mode: Users only read the agora::media::IAudioFrameObserver::AudioFrame data without modifying anything. For example, when users acquire data with the Agora SDK then push the RTMP streams.

RAW_AUDIO_FRAME_OP_MODE_READ_WRITE 

2: Read and write mode: Users read the data from AudioFrame, modify it, and then play it. For example, when users have their own sound-effect processing module and do some voice pre-processing such as a voice change.

◆ REMOTE_AUDIO_STATE

Remote audio states.

Enumerator
REMOTE_AUDIO_STATE_STOPPED 

0: The remote audio is in the default state, probably due to REMOTE_AUDIO_REASON_LOCAL_MUTED(3), REMOTE_AUDIO_REASON_REMOTE_MUTED(5), or REMOTE_AUDIO_REASON_REMOTE_OFFLINE(7).

REMOTE_AUDIO_STATE_STARTING 

1: The first remote audio packet is received.

REMOTE_AUDIO_STATE_DECODING 

2: The remote audio stream is decoded and plays normally, probably due to REMOTE_AUDIO_REASON_NETWORK_RECOVERY(2), REMOTE_AUDIO_REASON_LOCAL_UNMUTED(4), or REMOTE_AUDIO_REASON_REMOTE_UNMUTED(6).

REMOTE_AUDIO_STATE_FROZEN 

3: The remote audio is frozen, probably due to REMOTE_AUDIO_REASON_NETWORK_CONGESTION(1).

REMOTE_AUDIO_STATE_FAILED 

4: The remote audio fails to start, probably due to REMOTE_AUDIO_REASON_INTERNAL(0).

◆ REMOTE_AUDIO_STATE_REASON

Reasons for a remote audio state change.

Enumerator
REMOTE_AUDIO_REASON_INTERNAL 

0: Internal reasons.

REMOTE_AUDIO_REASON_NETWORK_CONGESTION 

1: Network congestion.

REMOTE_AUDIO_REASON_NETWORK_RECOVERY 

2: Network recovery.

REMOTE_AUDIO_REASON_LOCAL_MUTED 

3: The local user stops receiving the remote audio stream or disables the audio module.

REMOTE_AUDIO_REASON_LOCAL_UNMUTED 

4: The local user resumes receiving the remote audio stream or enables the audio module.

REMOTE_AUDIO_REASON_REMOTE_MUTED 

5: The remote user stops sending the audio stream or disables the audio module.

REMOTE_AUDIO_REASON_REMOTE_UNMUTED 

6: The remote user resumes sending the audio stream or enables the audio module.

REMOTE_AUDIO_REASON_REMOTE_OFFLINE 

7: The remote user leaves the channel.

◆ REMOTE_VIDEO_DOWNSCALE_LEVEL

The downscale level of the remote video stream . The higher the downscale level, the more the video downscales.

Enumerator
REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE 

0: No downscale.

REMOTE_VIDEO_DOWNSCALE_LEVEL_1 

1: Downscale level 1.

REMOTE_VIDEO_DOWNSCALE_LEVEL_2 

2: Downscale level 2.

REMOTE_VIDEO_DOWNSCALE_LEVEL_3 

3: Downscale level 3.

REMOTE_VIDEO_DOWNSCALE_LEVEL_4 

4: Downscale level 4.

◆ REMOTE_VIDEO_STATE

The state of the remote video.

Enumerator
REMOTE_VIDEO_STATE_STOPPED 

0: The remote video is in the default state, probably due to REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED (3), REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED (5), or REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE (7).

REMOTE_VIDEO_STATE_STARTING 

1: The first remote video packet is received.

REMOTE_VIDEO_STATE_DECODING 

2: The remote video stream is decoded and plays normally, probably due to REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY (2), REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED (4), REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED (6), or REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY (9).

REMOTE_VIDEO_STATE_FROZEN 

3: The remote video is frozen, probably due to REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION (1) or REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK (8).

REMOTE_VIDEO_STATE_FAILED 

4: The remote video fails to start, probably due to REMOTE_VIDEO_STATE_REASON_INTERNAL (0).

◆ REMOTE_VIDEO_STATE_REASON

The reason for the remote video state change.

Enumerator
REMOTE_VIDEO_STATE_REASON_INTERNAL 

0: Internal reasons.

REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION 

1: Network congestion.

REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY 

2: Network recovery.

REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED 

3: The local user stops receiving the remote video stream or disables the video module.

REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED 

4: The local user resumes receiving the remote video stream or enables the video module.

REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED 

5: The remote user stops sending the video stream or disables the video module.

REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED 

6: The remote user resumes sending the video stream or enables the video module.

REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE 

7: The remote user leaves the channel.

REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK 

8: The remote audio-and-video stream falls back to the audio-only stream due to poor network conditions.

REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY 

9: The remote audio-only stream switches back to the audio-and-video stream after the network conditions improve.

◆ STREAM_PUBLISH_STATE

The publishing state.

Enumerator
PUB_STATE_IDLE 

0: The initial publishing state after joining the channel.

PUB_STATE_NO_PUBLISHED 

1: Fails to publish the local stream.

PUB_STATE_PUBLISHING 

2: Publishing.

PUB_STATE_PUBLISHED 

3: Publishes successfully.

◆ STREAM_SUBSCRIBE_STATE

The subscribing state.

Enumerator
SUB_STATE_IDLE 

0: The initial subscribing state after joining the channel.

SUB_STATE_NO_SUBSCRIBED 

1: Fails to subscribe to the remote stream.

SUB_STATE_SUBSCRIBING 

2: Subscribing.

SUB_STATE_SUBSCRIBED 

3: Subscribes to and receives the remote stream successfully.

◆ TCcMode

The CC (Congestion Control) mode options.

Enumerator
CC_ENABLED 

Enable CC mode.

CC_DISABLED 

Disable CC mode.

◆ USER_OFFLINE_REASON_TYPE

Reasons for a user being offline.

Enumerator
USER_OFFLINE_QUIT 

0: The user leaves the current channel.

USER_OFFLINE_DROPPED 

1: The SDK times out and the user drops offline because no data packet was received within a certain period of time. If a user quits the call and the message is not passed to the SDK (due to an unreliable channel), the SDK assumes that the user drops offline.

USER_OFFLINE_BECOME_AUDIENCE 

2: (Live Broadcast only.) The user role switches from broadcaster to audience.

◆ VIDEO_CODEC_TYPE

Video codec types.

Enumerator
VIDEO_CODEC_NONE 

0: None.

VIDEO_CODEC_VP8 

1: VP8.

VIDEO_CODEC_H264 

2: H.264.

VIDEO_CODEC_H265 

3: H.265.

VIDEO_CODEC_VP9 

5: VP9.

VIDEO_CODEC_GENERIC 

6: Generic.

VIDEO_CODEC_GENERIC_H264 

7: Generic H264.

VIDEO_CODEC_AV1 

12: AV1.

VIDEO_CODEC_GENERIC_JPEG 

20: JPEG.

◆ VIDEO_FRAME_TYPE

Types of the video frame.

Enumerator
VIDEO_FRAME_TYPE_BLANK_FRAME 

0: Blank frame.

VIDEO_FRAME_TYPE_KEY_FRAME 

3: Key frame. For the H.264 encoding type, Agora SDK classifies I frames with sps and pps as key frames.

VIDEO_FRAME_TYPE_DELTA_FRAME 

4: Delta frame. For the H.264 encoding type, Agora SDK classifies P frames and I frames without sps and pps as delta frames.

VIDEO_FRAME_TYPE_B_FRAME 

5: B frame.

VIDEO_FRAME_TYPE_DROPPABLE_FRAME 

6: Droppable frame.

VIDEO_FRAME_TYPE_UNKNOW 

7: Unknown frame type.

◆ VIDEO_MIRROR_MODE_TYPE

Video mirror mode types.

Enumerator
VIDEO_MIRROR_MODE_AUTO 

(Default) 0: The mirror mode determined by the SDK.

VIDEO_MIRROR_MODE_ENABLED 

1: Enable the mirror mode.

VIDEO_MIRROR_MODE_DISABLED 

2: Disable the mirror mode.

◆ VIDEO_ORIENTATION

The rotation information.

Enumerator
VIDEO_ORIENTATION_0 

0: Rotate the video by 0 degree clockwise.

VIDEO_ORIENTATION_90 

90: Rotate the video by 90 degrees clockwise.

VIDEO_ORIENTATION_180 

180: Rotate the video by 180 degrees clockwise.

VIDEO_ORIENTATION_270 

270: Rotate the video by 270 degrees clockwise.

◆ VIDEO_SOURCE_TYPE

Video source types.

Enumerator
VIDEO_SOURCE_CAMERA_PRIMARY 

(Default) 0: The primary camera.

VIDEO_SOURCE_CAMERA 

0: Camera.

VIDEO_SOURCE_CAMERA_SECONDARY 

1: The secondary camera.

VIDEO_SOURCE_SCREEN_PRIMARY 

2: The primary screen.

VIDEO_SOURCE_SCREEN 

2: The screen.

VIDEO_SOURCE_SCREEN_SECONDARY 

3: The secondary screen.

VIDEO_SOURCE_CUSTOM 

4: Custom video source.

VIDEO_SOURCE_MEDIA_PLAYER 

5: Video for media player sharing.

VIDEO_SOURCE_RTC_IMAGE_PNG 

6: PNG image.

VIDEO_SOURCE_RTC_IMAGE_JPEG 

6: JPEG image.

VIDEO_SOURCE_RTC_IMAGE_GIF 

6: GIF image.

VIDEO_SOURCE_REMOTE 

9: Remote video received from network.

VIDEO_SOURCE_TRANSCODED 

10: Transcoded video.

VIDEO_SOURCE_UNKNOWN 

10: Unknown video source.

◆ VIDEO_STREAM_TYPE

Video stream types.

Enumerator
VIDEO_STREAM_HIGH 

0: The high-quality video stream, which has a higher resolution and bitrate.

VIDEO_STREAM_LOW 

1: The low-quality video stream, which has a lower resolution and bitrate.

◆ VideoTrackType

Video track type.

Enumerator
LOCAL_VIDEO_TRACK 

Local video track.

REMOTE_VIDEO_TRACK 

Remote video track.

Variable Documentation

◆ COMPATIBLE_BITRATE

const int agora::rtc::COMPATIBLE_BITRATE = -1

-1: Compatible bitrate mode.

In this mode, the bitrate remains the same regardless of the channel profile. If you choose this mode in the live-broadcast profile, the video frame rate may be lower than the set value.

◆ DEFAULT_CONNECTION_ID

const unsigned int agora::rtc::DEFAULT_CONNECTION_ID = 0
static

◆ DUMMY_CONNECTION_ID

const unsigned int agora::rtc::DUMMY_CONNECTION_ID = (std::numeric_limits<unsigned int>::max)()
static

◆ STANDARD_BITRATE

const int agora::rtc::STANDARD_BITRATE = 0

(Recommended) 0: Standard bitrate mode.

In this mode, the bitrates differ between the live broadcast and communication profiles:

  • Communication profile: The video bitrate is the same as the base bitrate.
  • Live Broadcast profile: The video bitrate is twice the base bitrate.