Agora C++ API Reference for All Platforms
agora Namespace Reference

Namespaces

namespace  base
 
namespace  internal
 
namespace  media
 
namespace  rtc
 
namespace  rtm
 
namespace  util
 

Classes

struct  in_place_t
 
struct  nullopt_t
 
class  Optional
 

Enumerations

enum  INTERFACE_ID_TYPE {
  AGORA_IID_AUDIO_DEVICE_MANAGER = 1 , AGORA_IID_VIDEO_DEVICE_MANAGER = 2 , AGORA_IID_RTC_ENGINE_PARAMETER = 3 , AGORA_IID_MEDIA_ENGINE = 4 ,
  AGORA_IID_SIGNALING_ENGINE = 8 , AGORA_IID_LOCAL_SPATIAL_AUDIO = 11
}
 
enum  WARN_CODE_TYPE {
  WARN_INVALID_VIEW = 8 , WARN_INIT_VIDEO = 16 , WARN_PENDING = 20 , WARN_NO_AVAILABLE_CHANNEL = 103 ,
  WARN_LOOKUP_CHANNEL_TIMEOUT = 104 , WARN_LOOKUP_CHANNEL_REJECTED = 105 , WARN_OPEN_CHANNEL_TIMEOUT = 106 , WARN_OPEN_CHANNEL_REJECTED = 107 ,
  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111 , WARN_SET_CLIENT_ROLE_TIMEOUT = 118 , WARN_OPEN_CHANNEL_INVALID_TICKET = 121 , WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122 ,
  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131 , WARN_CHANNEL_CONNECTION_IP_CHANGED = 132 , WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133 , WARN_CHANNEL_SOCKET_ERROR = 134 ,
  WARN_AUDIO_MIXING_OPEN_ERROR = 701 , WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014 , WARN_ADM_RUNTIME_RECORDING_WARNING = 1016 , WARN_ADM_RECORD_AUDIO_SILENCE = 1019 ,
  WARN_ADM_PLAYOUT_MALFUNCTION = 1020 , WARN_ADM_RECORD_MALFUNCTION = 1021 , WARN_ADM_CALL_INTERRUPTION = 1025 , WARN_ADM_IOS_CATEGORY_NOT_PLAYANDRECORD = 1029 ,
  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031 , WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032 , WARN_ADM_RECORD_AUDIO_IS_ACTIVE = 1033 , WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040 ,
  WARN_ADM_INCONSISTENT_AUDIO_DEVICE = 1042 , WARN_APM_HOWLING = 1051 , WARN_ADM_GLITCH_STATE = 1052 , WARN_APM_RESIDUAL_ECHO = 1053 ,
  WARN_APM_AINS_CLOSED = 1054 , WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323 , WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324 , WARN_SUPER_RESOLUTION_STREAM_OVER_LIMITATION = 1610 ,
  WARN_SUPER_RESOLUTION_USER_COUNT_OVER_LIMITATION = 1611 , WARN_SUPER_RESOLUTION_DEVICE_NOT_SUPPORTED = 1612
}
 
enum  ERROR_CODE_TYPE {
  ERR_OK = 0 , ERR_FAILED = 1 , ERR_INVALID_ARGUMENT = 2 , ERR_NOT_READY = 3 ,
  ERR_NOT_SUPPORTED = 4 , ERR_REFUSED = 5 , ERR_BUFFER_TOO_SMALL = 6 , ERR_NOT_INITIALIZED = 7 ,
  ERR_NO_PERMISSION = 9 , ERR_TIMEDOUT = 10 , ERR_CANCELED = 11 , ERR_TOO_OFTEN = 12 ,
  ERR_BIND_SOCKET = 13 , ERR_NET_DOWN = 14 , ERR_NET_NOBUFS = 15 , ERR_JOIN_CHANNEL_REJECTED = 17 ,
  ERR_LEAVE_CHANNEL_REJECTED = 18 , ERR_ALREADY_IN_USE = 19 , ERR_ABORTED = 20 , ERR_INIT_NET_ENGINE = 21 ,
  ERR_RESOURCE_LIMITED = 22 , ERR_INVALID_APP_ID = 101 , ERR_INVALID_CHANNEL_NAME = 102 , ERR_NO_SERVER_RESOURCES = 103 ,
  ERR_TOKEN_EXPIRED = 109 , ERR_INVALID_TOKEN = 110 , ERR_CONNECTION_INTERRUPTED = 111 , ERR_CONNECTION_LOST = 112 ,
  ERR_NOT_IN_CHANNEL = 113 , ERR_SIZE_TOO_LARGE = 114 , ERR_BITRATE_LIMIT = 115 , ERR_TOO_MANY_DATA_STREAMS = 116 ,
  ERR_STREAM_MESSAGE_TIMEOUT = 117 , ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119 , ERR_DECRYPTION_FAILED = 120 , ERR_CLIENT_IS_BANNED_BY_SERVER = 123 ,
  ERR_WATERMARK_PARAM = 124 , ERR_WATERMARK_PATH = 125 , ERR_WATERMARK_PNG = 126 , ERR_WATERMARKR_INFO = 127 ,
  ERR_WATERMARK_ARGB = 128 , ERR_WATERMARK_READ = 129 , ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130 , ERR_INVALID_USER_ACCOUNT = 134 ,
  ERR_PUBLISH_STREAM_CDN_ERROR = 151 , ERR_PUBLISH_STREAM_NUM_REACH_LIMIT = 152 , ERR_PUBLISH_STREAM_NOT_AUTHORIZED = 153 , ERR_PUBLISH_STREAM_INTERNAL_SERVER_ERROR = 154 ,
  ERR_PUBLISH_STREAM_NOT_FOUND = 155 , ERR_PUBLISH_STREAM_FORMAT_NOT_SUPPORTED = 156 , ERR_MODULE_NOT_FOUND = 157 , ERR_ALREADY_IN_RECORDING = 160 ,
  ERR_LOGOUT_OTHER = 400 , ERR_LOGOUT_USER = 401 , ERR_LOGOUT_NET = 402 , ERR_LOGOUT_KICKED = 403 ,
  ERR_LOGOUT_PACKET = 404 , ERR_LOGOUT_TOKEN_EXPIRED = 405 , ERR_LOGOUT_OLDVERSION = 406 , ERR_LOGOUT_TOKEN_WRONG = 407 ,
  ERR_LOGOUT_ALREADY_LOGOUT = 408 , ERR_LOGIN_OTHER = 420 , ERR_LOGIN_NET = 421 , ERR_LOGIN_FAILED = 422 ,
  ERR_LOGIN_CANCELED = 423 , ERR_LOGIN_TOKEN_EXPIRED = 424 , ERR_LOGIN_OLD_VERSION = 425 , ERR_LOGIN_TOKEN_WRONG = 426 ,
  ERR_LOGIN_TOKEN_KICKED = 427 , ERR_LOGIN_ALREADY_LOGIN = 428 , ERR_JOIN_CHANNEL_OTHER = 440 , ERR_SEND_MESSAGE_OTHER = 440 ,
  ERR_SEND_MESSAGE_TIMEOUT = 441 , ERR_QUERY_USERNUM_OTHER = 450 , ERR_QUERY_USERNUM_TIMEOUT = 451 , ERR_QUERY_USERNUM_BYUSER = 452 ,
  ERR_LEAVE_CHANNEL_OTHER = 460 , ERR_LEAVE_CHANNEL_KICKED = 461 , ERR_LEAVE_CHANNEL_BYUSER = 462 , ERR_LEAVE_CHANNEL_LOGOUT = 463 ,
  ERR_LEAVE_CHANNEL_DISCONNECTED = 464 , ERR_INVITE_OTHER = 470 , ERR_INVITE_REINVITE = 471 , ERR_INVITE_NET = 472 ,
  ERR_INVITE_PEER_OFFLINE = 473 , ERR_INVITE_TIMEOUT = 474 , ERR_INVITE_CANT_RECV = 475 , ERR_LOAD_MEDIA_ENGINE = 1001 ,
  ERR_START_CALL = 1002 , ERR_START_CAMERA = 1003 , ERR_START_VIDEO_RENDER = 1004 , ERR_ADM_GENERAL_ERROR = 1005 ,
  ERR_ADM_JAVA_RESOURCE = 1006 , ERR_ADM_SAMPLE_RATE = 1007 , ERR_ADM_INIT_PLAYOUT = 1008 , ERR_ADM_START_PLAYOUT = 1009 ,
  ERR_ADM_STOP_PLAYOUT = 1010 , ERR_ADM_INIT_RECORDING = 1011 , ERR_ADM_START_RECORDING = 1012 , ERR_ADM_STOP_RECORDING = 1013 ,
  ERR_ADM_RUNTIME_PLAYOUT_ERROR = 1015 , ERR_ADM_RUNTIME_RECORDING_ERROR = 1017 , ERR_ADM_RECORD_AUDIO_FAILED = 1018 , ERR_ADM_INIT_LOOPBACK = 1022 ,
  ERR_ADM_START_LOOPBACK = 1023 , ERR_ADM_NO_PERMISSION = 1027 , ERR_ADM_RECORD_AUDIO_IS_ACTIVE = 1033 , ERR_ADM_ANDROID_JNI_JAVA_RESOURCE = 1101 ,
  ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY = 1108 , ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY = 1109 , ERR_ADM_ANDROID_JNI_JAVA_START_RECORD = 1111 , ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK = 1112 ,
  ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR = 1115 , ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE = 1151 , ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER = 1153 , ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD = 1156 ,
  ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER = 1157 , ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD = 1160 , ERR_ADM_IOS_INPUT_NOT_AVAILABLE = 1201 , ERR_ADM_IOS_ACTIVATE_SESSION_FAIL = 1206 ,
  ERR_ADM_IOS_VPIO_INIT_FAIL = 1210 , ERR_ADM_IOS_VPIO_REINIT_FAIL = 1213 , ERR_ADM_IOS_VPIO_RESTART_FAIL = 1214 , ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219 ,
  ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO = 1221 , ERR_ADM_WIN_CORE_INIT = 1301 , ERR_ADM_WIN_CORE_INIT_RECORDING = 1303 , ERR_ADM_WIN_CORE_INIT_PLAYOUT = 1306 ,
  ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL = 1307 , ERR_ADM_WIN_CORE_START_RECORDING = 1309 , ERR_ADM_WIN_CORE_CREATE_REC_THREAD = 1311 , ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP = 1314 ,
  ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD = 1319 , ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP = 1320 , ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322 , ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323 ,
  ERR_ADM_WIN_WAVE_INIT = 1351 , ERR_ADM_WIN_WAVE_INIT_RECORDING = 1353 , ERR_ADM_WIN_WAVE_INIT_MICROPHONE = 1354 , ERR_ADM_WIN_WAVE_INIT_PLAYOUT = 1355 ,
  ERR_ADM_WIN_WAVE_INIT_SPEAKER = 1356 , ERR_ADM_WIN_WAVE_START_RECORDING = 1357 , ERR_ADM_WIN_WAVE_START_PLAYOUT = 1358 , ERR_ADM_NO_RECORDING_DEVICE = 1359 ,
  ERR_ADM_NO_PLAYOUT_DEVICE = 1360 , ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501 , ERR_VDM_WIN_DEVICE_IN_USE = 1502 , ERR_VCM_UNKNOWN_ERROR = 1600 ,
  ERR_VCM_ENCODER_INIT_ERROR = 1601 , ERR_VCM_ENCODER_ENCODE_ERROR = 1602 , ERR_VCM_ENCODER_SET_ERROR = 1603 , ERR_ADM_WIN_CORE_SERVRE_SHUT_DOWN = 1735 ,
  ERR_NOT_SUPPORTED_MUTI_GPU_EXCLUDE_WINDOW = 1736
}
 
enum  LOG_FILTER_TYPE {
  LOG_FILTER_OFF = 0 , LOG_FILTER_DEBUG = 0x080f , LOG_FILTER_INFO = 0x000f , LOG_FILTER_WARN = 0x000e ,
  LOG_FILTER_ERROR = 0x000c , LOG_FILTER_CRITICAL = 0x0008
}
 
enum class  LOG_LEVEL {
  LOG_LEVEL_NONE = 0x0000 , LOG_LEVEL_INFO = 0x0001 , LOG_LEVEL_WARN = 0x0002 , LOG_LEVEL_ERROR = 0x0004 ,
  LOG_LEVEL_FATAL = 0x0008
}
 

Functions

const nullopt_t nullopt (0)
 
template<class T , class U >
bool operator== (const Optional< T > &lhs, const Optional< U > &rhs)
 
template<class T , class U >
bool operator!= (const Optional< T > &lhs, const Optional< U > &rhs)
 
template<class T , class U >
bool operator< (const Optional< T > &lhs, const Optional< U > &rhs)
 
template<class T , class U >
bool operator<= (const Optional< T > &lhs, const Optional< U > &rhs)
 
template<class T , class U >
bool operator> (const Optional< T > &lhs, const Optional< U > &rhs)
 
template<class T , class U >
bool operator>= (const Optional< T > &lhs, const Optional< U > &rhs)
 
template<class T >
CONSTEXPR bool operator== (const Optional< T > &opt, nullopt_t)
 
template<class T >
CONSTEXPR bool operator== (nullopt_t, const Optional< T > &opt)
 
template<class T >
CONSTEXPR bool operator!= (const Optional< T > &opt, nullopt_t)
 
template<class T >
CONSTEXPR bool operator!= (nullopt_t, const Optional< T > &opt)
 
template<class T >
CONSTEXPR bool operator< (const Optional< T > &opt, nullopt_t)
 
template<class T >
CONSTEXPR bool operator< (nullopt_t, const Optional< T > &opt)
 
template<class T >
CONSTEXPR bool operator<= (const Optional< T > &opt, nullopt_t)
 
template<class T >
CONSTEXPR bool operator<= (nullopt_t, const Optional< T > &opt)
 
template<class T >
CONSTEXPR bool operator> (const Optional< T > &opt, nullopt_t)
 
template<class T >
CONSTEXPR bool operator> (nullopt_t, const Optional< T > &opt)
 
template<class T >
CONSTEXPR bool operator>= (const Optional< T > &opt, nullopt_t)
 
template<class T >
CONSTEXPR bool operator>= (nullopt_t, const Optional< T > &opt)
 
template<class T , class U >
CONSTEXPR bool operator== (const Optional< T > &opt, const U &value)
 
template<class T , class U >
CONSTEXPR bool operator== (const U &value, const Optional< T > &opt)
 
template<class T , class U >
CONSTEXPR bool operator!= (const Optional< T > &opt, const U &value)
 
template<class T , class U >
CONSTEXPR bool operator!= (const U &value, const Optional< T > &opt)
 
template<class T , class U >
CONSTEXPR bool operator< (const Optional< T > &opt, const U &value)
 
template<class T , class U >
CONSTEXPR bool operator< (const U &value, const Optional< T > &opt)
 
template<class T , class U >
CONSTEXPR bool operator<= (const Optional< T > &opt, const U &value)
 
template<class T , class U >
CONSTEXPR bool operator<= (const U &value, const Optional< T > &opt)
 
template<class T , class U >
CONSTEXPR bool operator> (const Optional< T > &opt, const U &value)
 
template<class T , class U >
CONSTEXPR bool operator> (const U &value, const Optional< T > &opt)
 
template<class T , class U >
CONSTEXPR bool operator>= (const Optional< T > &opt, const U &value)
 
template<class T , class U >
CONSTEXPR bool operator>= (const U &value, const Optional< T > &opt)
 
template<class T , class... Args>
CONSTEXPR Optional< T > make_optional (Args &&... args)
 
template<class T , class U , class... Args>
CONSTEXPR Optional< T > make_optional (std::initializer_list< U > il, Args &&... args)
 
template<class T >
void swap (Optional< T > &lhs, Optional< T > &rhs)
 

Variables

const in_place_t in_place = {}
 

Enumeration Type Documentation

◆ INTERFACE_ID_TYPE

Enumerator
AGORA_IID_AUDIO_DEVICE_MANAGER 
AGORA_IID_VIDEO_DEVICE_MANAGER 
AGORA_IID_RTC_ENGINE_PARAMETER 
AGORA_IID_MEDIA_ENGINE 
AGORA_IID_SIGNALING_ENGINE 
AGORA_IID_LOCAL_SPATIAL_AUDIO 

◆ WARN_CODE_TYPE

Warning code.

Enumerator
WARN_INVALID_VIEW 

8: The specified view is invalid. Specify a view when using the video call function.

WARN_INIT_VIDEO 

16: Failed to initialize the video function, possibly caused by a lack of resources. The users cannot see the video while the voice communication is not affected.

WARN_PENDING 

20: The request is pending, usually due to some module not being ready, and the SDK postponed processing the request.

WARN_NO_AVAILABLE_CHANNEL 

103: No channel resources are available. Maybe because the server cannot allocate any channel resource.

WARN_LOOKUP_CHANNEL_TIMEOUT 

104: A timeout occurs when looking up the channel. When joining a channel, the SDK looks up the specified channel. This warning usually occurs when the network condition is too poor for the SDK to connect to the server.

WARN_LOOKUP_CHANNEL_REJECTED 

105: The server rejects the request to look up the channel. The server cannot process this request or the request is illegal.

Deprecated** Deprecated as of v2.4.1. Use CONNECTION_CHANGED_REJECTED_BY_SERVER(10) in the onConnectionStateChanged callback instead.

WARN_OPEN_CHANNEL_TIMEOUT 

106: A timeout occurs when opening the channel. Once the specific channel is found, the SDK opens the channel. This warning usually occurs when the network condition is too poor for the SDK to connect to the server.

WARN_OPEN_CHANNEL_REJECTED 

107: The server rejects the request to open the channel. The server cannot process this request or the request is illegal.

WARN_SWITCH_LIVE_VIDEO_TIMEOUT 

111: A timeout occurs when switching to the live video.

WARN_SET_CLIENT_ROLE_TIMEOUT 

118: A timeout occurs when setting the client role in the interactive live streaming profile.

WARN_OPEN_CHANNEL_INVALID_TICKET 

121: The SDK fails to join a channel.

WARN_OPEN_CHANNEL_TRY_NEXT_VOS 

122: Try connecting to another server.

WARN_CHANNEL_CONNECTION_UNRECOVERABLE 

131: The channel connection cannot be recovered.

WARN_CHANNEL_CONNECTION_IP_CHANGED 

132: The IP address has changed.

WARN_CHANNEL_CONNECTION_PORT_CHANGED 

133: The port has changed.

WARN_CHANNEL_SOCKET_ERROR 

134: The socket error occurs, try to rejoin channel.

WARN_AUDIO_MIXING_OPEN_ERROR 

701: An error occurs in opening the audio mixing file.

WARN_ADM_RUNTIME_PLAYOUT_WARNING 

1014: Audio Device Module: A warning occurs in the playback device.

WARN_ADM_RUNTIME_RECORDING_WARNING 

1016: Audio Device Module: A warning occurs in the audio capturing device.

WARN_ADM_RECORD_AUDIO_SILENCE 

1019: Audio Device Module: No valid audio data is captured.

WARN_ADM_PLAYOUT_MALFUNCTION 

1020: Audio device module: The audio playback frequency is abnormal, which may cause audio freezes. This abnormality is caused by high CPU usage. Agora recommends stopping other apps.

WARN_ADM_RECORD_MALFUNCTION 

1021: Audio device module: the audio capturing frequency is abnormal, which may cause audio freezes. This abnormality is caused by high CPU usage. Agora recommends stopping other apps.

WARN_ADM_CALL_INTERRUPTION 

1025: The local audio capture is interrupted by a system call, Siri, or alarm clock. Remind your user to end the phone call, Siri, or alarm clock if the local audio capture is required.

WARN_ADM_IOS_CATEGORY_NOT_PLAYANDRECORD 

1029: During a call, the audio session category should be set to AVAudioSessionCategoryPlayAndRecord, and RtcEngine monitors this value. If the audio session category is set to other values, this warning code is triggered and RtcEngine will forcefully set it back to AVAudioSessionCategoryPlayAndRecord.

WARN_ADM_RECORD_AUDIO_LOWLEVEL 

1031: Audio Device Module: The captured audio voice is too low.

WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL 

1032: Audio Device Module: The playback audio voice is too low.

WARN_ADM_RECORD_AUDIO_IS_ACTIVE 

1033: The local audio capture device is occupied by another application. Remind your user to leave the channel, stop the audio capture in another application, and rejoin the channel in sequence.

WARN_ADM_WINDOWS_NO_DATA_READY_EVENT 

1040: Audio device module: An exception occurs with the audio drive. Solutions:

  • Disable or re-enable the audio device.
  • Re-enable your device.
  • Update the sound card drive.
WARN_ADM_INCONSISTENT_AUDIO_DEVICE 

1042: Audio device module: The audio capturing device is different from the audio playback device, which may cause echoes problem. Agora recommends using the same audio device to capture and playback audio.

WARN_APM_HOWLING 

1051: (Communication profile only) Audio processing module: A howling sound is detected when capturing the audio data.

WARN_ADM_GLITCH_STATE 

1052: Audio Device Module: The device is in the glitch state.

WARN_APM_RESIDUAL_ECHO 

1053: Audio Processing Module: A residual echo is detected, which may be caused by the belated scheduling of system threads or the signal overflow.

WARN_APM_AINS_CLOSED 

1054: Audio Processing Module: AI NS is closed, this can be triggered by manual settings or by performance detection modules.

WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE 

1323: Audio device module: No available playback device. Solution: Plug in the audio device.

WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE 

Audio device module: The capture device is released improperly. Solutions:

  • Disable or re-enable the audio device.
  • Re-enable your device.
  • Update the sound card drive.
WARN_SUPER_RESOLUTION_STREAM_OVER_LIMITATION 

1610: The original resolution of the remote user's video is beyond the range where super resolution can be applied.

WARN_SUPER_RESOLUTION_USER_COUNT_OVER_LIMITATION 

1611: Super resolution is already being used to boost another remote user's video.

WARN_SUPER_RESOLUTION_DEVICE_NOT_SUPPORTED 

1612: The device does not support using super resolution.

◆ ERROR_CODE_TYPE

Error code.

Enumerator
ERR_OK 

0: No error occurs.

ERR_FAILED 

1: A general error occurs (no specified reason).

ERR_INVALID_ARGUMENT 

2: An invalid parameter is used. For example, the specific channel name includes illegal characters.

ERR_NOT_READY 

3: The SDK module is not ready. Possible solutions:

  • Check the audio device.
  • Check the completeness of the application.
  • Re-initialize the RTC engine.
ERR_NOT_SUPPORTED 

4: The SDK does not support this function.

ERR_REFUSED 

5: The request is rejected.

ERR_BUFFER_TOO_SMALL 

6: The buffer size is not big enough to store the returned data.

ERR_NOT_INITIALIZED 

7: The SDK is not initialized before calling this method.

ERR_NO_PERMISSION 

9: No permission exists. Check if the user has granted access to the audio or video device.

ERR_TIMEDOUT 

10: An API method timeout occurs. Some API methods require the SDK to return the execution result, and this error occurs if the request takes too long (more than 10 seconds) for the SDK to process.

ERR_CANCELED 

11: The request is canceled. This is for internal SDK use only, and it does not return to the application through any method or callback.

ERR_TOO_OFTEN 

12: The method is called too often.

ERR_BIND_SOCKET 

13: The SDK fails to bind to the network socket. This is for internal SDK use only, and it does not return to the application through any method or callback.

ERR_NET_DOWN 

14: The network is unavailable. This is for internal SDK use only, and it does not return to the application through any method or callback.

ERR_NET_NOBUFS 

15: No network buffers are available. This is for internal SDK internal use only, and it does not return to the application through any method or callback.

ERR_JOIN_CHANNEL_REJECTED 

17: The request to join the channel is rejected.

  • This error usually occurs when the user is already in the channel, and still calls the method to join the channel, for example, joinChannel.
  • This error usually occurs when the user tries to join a channel during startEchoTest. Once you call startEchoTest, you need to call stopEchoTest before joining a channel.
  • The user tries to join the channel with a token that is expired.
ERR_LEAVE_CHANNEL_REJECTED 

18: The request to leave the channel is rejected.

This error usually occurs:

  • When the user has left the channel and still calls leaveChannel to leave the channel. In this case, stop calling leaveChannel.
  • When the user has not joined the channel and still calls leaveChannel to leave the channel. In this case, no extra operation is needed.
ERR_ALREADY_IN_USE 

19: Resources are occupied and cannot be reused.

ERR_ABORTED 

20: The SDK gives up the request due to too many requests.

ERR_INIT_NET_ENGINE 

21: In Windows, specific firewall settings can cause the SDK to fail to initialize and crash.

ERR_RESOURCE_LIMITED 

22: The application uses too much of the system resources and the SDK fails to allocate the resources.

ERR_INVALID_APP_ID 

101: The specified App ID is invalid. Please try to rejoin the channel with a valid App ID.

ERR_INVALID_CHANNEL_NAME 

102: The specified channel name is invalid. Please try to rejoin the channel with a valid channel name.

ERR_NO_SERVER_RESOURCES 

103: Fails to get server resources in the specified region. Please try to specify another region when calling initialize.

ERR_TOKEN_EXPIRED 

109: The token expired due to one of the following reasons:

  • Authorized Timestamp expired: The timestamp is represented by the number of seconds elapsed since 1/1/1970. The user can use the Token to access the Agora service within 24 hours after the Token is generated. If the user does not access the Agora service after 24 hours, this Token is no longer valid.
  • Call Expiration Timestamp expired: The timestamp is the exact time when a user can no longer use the Agora service (for example, when a user is forced to leave an ongoing call). When a value is set for the Call Expiration Timestamp, it does not mean that the token will expire, but that the user will be banned from the channel.

    Deprecated** Deprecated as of v2.4.1. Use CONNECTION_CHANGED_TOKEN_EXPIRED(9) in the onConnectionStateChanged callback instead.

ERR_INVALID_TOKEN 

Deprecated Deprecated as of v2.4.1. Use CONNECTION_CHANGED_INVALID_TOKEN(8) in the onConnectionStateChanged callback instead.

110: The token is invalid due to one of the following reasons:

  • The App Certificate for the project is enabled in Console, but the user is still using the App ID. Once the App Certificate is enabled, the user must use a token.
  • The uid is mandatory, and users must set the same uid as the one set in the joinChannel method.
ERR_CONNECTION_INTERRUPTED 

111: The internet connection is interrupted. This applies to the Agora Web SDK only.

ERR_CONNECTION_LOST 

112: The internet connection is lost. This applies to the Agora Web SDK only.

ERR_NOT_IN_CHANNEL 

113: The user is not in the channel when calling the method.

ERR_SIZE_TOO_LARGE 

114: The size of the sent data is over 1024 bytes when the user calls the sendStreamMessage method.

ERR_BITRATE_LIMIT 

115: The bitrate of the sent data exceeds the limit of 6 Kbps when the user calls the sendStreamMessage method.

ERR_TOO_MANY_DATA_STREAMS 

116: Too many data streams (over 5 streams) are created when the user calls the createDataStream method.

ERR_STREAM_MESSAGE_TIMEOUT 

117: The data stream transmission timed out.

ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED 

119: Deprecated as of v3.7.0. Use CLIENT_ROLE_CHANGE_FAILED_REASON reported in onClientRoleChangeFailed instead.

ERR_DECRYPTION_FAILED 

120: Decryption fails. The user may have used a different encryption password to join the channel. Check your settings or try rejoining the channel.

ERR_CLIENT_IS_BANNED_BY_SERVER 

123: The user is banned by the server. This error occurs when the user is kicked out the channel from the server.

ERR_WATERMARK_PARAM 

124: Incorrect watermark file parameter.

ERR_WATERMARK_PATH 

125: Incorrect watermark file path.

ERR_WATERMARK_PNG 

126: Incorrect watermark file format.

ERR_WATERMARKR_INFO 

127: Incorrect watermark file information.

ERR_WATERMARK_ARGB 

128: Incorrect watermark file data format.

ERR_WATERMARK_READ 

129: An error occurs in reading the watermark file.

ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH 

130: Encryption is enabled when the user calls the addPublishStreamUrl method (CDN live streaming does not support encrypted streams).

ERR_INVALID_USER_ACCOUNT 

134: The user account is invalid.

ERR_PUBLISH_STREAM_CDN_ERROR 

151: CDN related errors. Remove the original URL address and add a new one by calling the removePublishStreamUrl and addPublishStreamUrl methods.

ERR_PUBLISH_STREAM_NUM_REACH_LIMIT 

152: The host publishes more than 10 URLs. Delete the unnecessary URLs before adding new ones.

ERR_PUBLISH_STREAM_NOT_AUTHORIZED 

153: The host manipulates other hosts' URLs. Check your app logic.

ERR_PUBLISH_STREAM_INTERNAL_SERVER_ERROR 

154: An error occurs in Agora's streaming server. Call the addPublishStreamUrl method to publish the streaming again.

ERR_PUBLISH_STREAM_NOT_FOUND 

155: The server fails to find the stream.

ERR_PUBLISH_STREAM_FORMAT_NOT_SUPPORTED 

156: The format of the RTMP or RTMPS stream URL is not supported. Check whether the URL format is correct.

ERR_MODULE_NOT_FOUND 

157: The necessary dynamical library is not integrated. For example, if you call the enableDeepLearningDenoise but do not integrate the dynamical library for the noise suppression into your project, the SDK reports this error code.

ERR_ALREADY_IN_RECORDING 

160: The client is already recording audio. To start a new recording, call stopAudioRecording to stop the current recording first, and then call startAudioRecording.

Since
v3.4.0
ERR_LOAD_MEDIA_ENGINE 

1001: Fails to load the media engine.

ERR_START_CALL 

1002: Fails to start the call after enabling the media engine.

ERR_START_CAMERA 

1003: Fails to start the camera.

Deprecated** Deprecated as of v2.4.1. Use LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE(4) in the onConnectionStateChanged callback instead.

ERR_START_VIDEO_RENDER 

1004: Fails to start the video rendering module.

ERR_ADM_GENERAL_ERROR 

1005: A general error occurs in the Audio Device Module (no specified reason). Check if the audio device is used by another application, or try rejoining the channel.

ERR_ADM_JAVA_RESOURCE 

1006: Audio Device Module: An error occurs in using the Java resources.

ERR_ADM_SAMPLE_RATE 

1007: Audio Device Module: An error occurs in setting the sampling frequency.

ERR_ADM_INIT_PLAYOUT 

1008: Audio Device Module: An error occurs in initializing the playback device.

ERR_ADM_START_PLAYOUT 

1009: Audio Device Module: An error occurs in starting the playback device.

ERR_ADM_STOP_PLAYOUT 

1010: Audio Device Module: An error occurs in stopping the playback device.

ERR_ADM_INIT_RECORDING 

1011: Audio Device Module: An error occurs in initializing the capturing device.

ERR_ADM_START_RECORDING 

1012: Audio Device Module: An error occurs in starting the capturing device.

ERR_ADM_STOP_RECORDING 

1013: Audio Device Module: An error occurs in stopping the capturing device.

ERR_ADM_RUNTIME_PLAYOUT_ERROR 

1015: Audio Device Module: A playback error occurs. Check your playback device and try rejoining the channel.

ERR_ADM_RUNTIME_RECORDING_ERROR 

1017: Audio Device Module: A capturing error occurs.

ERR_ADM_RECORD_AUDIO_FAILED 

1018: Audio Device Module: Fails to record.

ERR_ADM_INIT_LOOPBACK 

1022: Audio Device Module: An error occurs in initializing the loopback device.

ERR_ADM_START_LOOPBACK 

1023: Audio Device Module: An error occurs in starting the loopback device.

ERR_ADM_NO_PERMISSION 

1027: The application does not have permission to use the microphone. Remind your user to grant permission and rejoin the channel.

ERR_ADM_RECORD_AUDIO_IS_ACTIVE 

1033: The local audio capture device is occupied by another application. Remind your user to leave the channel, stop the audio capture in another application, and rejoin the channel in sequence.

ERR_ADM_ANDROID_JNI_JAVA_RESOURCE 

1101: Audio device module: A fatal exception occurs.

ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY 

1108: An exception occurred in the audio capture thread. Remind your user to rejoin the channel.

ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY 

1109: An exception occurred in the audio playback thread. Remind your user to rejoin the channel.

ERR_ADM_ANDROID_JNI_JAVA_START_RECORD 

1111: Failed to start the local audio capture. Remind your user to rejoin the channel.

ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK 

1112: Failed to start the local audio playback. Remind your user to rejoin the channel.

ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR 

1115: Audio device module: AudioRecord returns error. The SDK will automatically restart AudioRecord.

ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE 

Deprecated

ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER 

1153: Failed to create Audio Recorder. Remind your user to rejoin the channel.

ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD 

1156: Failed to start the local audio capture. Remind your user to rejoin the channel.

ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER 

1157: Failed to create Audio Player. Remind your user to rejoin the channel.

ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD 

1160: Failed to start the local audio playback. Remind your user to rejoin the channel.

ERR_ADM_IOS_INPUT_NOT_AVAILABLE 

1201: Audio device module: The current device does not support audio input, possibly because you have mistakenly configured the audio session category, or because some other app is occupying the input device. We recommend terminating all background apps and re-joining the channel.

ERR_ADM_IOS_ACTIVATE_SESSION_FAIL 

1206: Audio device module: Cannot activate the Audio Session.

ERR_ADM_IOS_VPIO_INIT_FAIL 

1210: Audio device module: Fails to initialize the audio device, normally because the audio device parameters are wrongly set.

ERR_ADM_IOS_VPIO_REINIT_FAIL 

1213: Audio device module: Fails to re-initialize the audio device, normally because the audio device parameters are wrongly set.

ERR_ADM_IOS_VPIO_RESTART_FAIL 

1214: Fails to re-start up the Audio Unit, possibly because the audio session category is not compatible with the settings of the Audio Unit.

ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL 
ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO 

Deprecated

ERR_ADM_WIN_CORE_INIT 

1301: Audio device module: An audio driver abnormality or a compatibility issue occurs. Solutions: Disable and restart the audio device, or reboot the system.

ERR_ADM_WIN_CORE_INIT_RECORDING 

1303: Audio device module: A recording driver abnormality or a compatibility issue occurs. Solutions: Disable and restart the audio device, or reboot the system.

ERR_ADM_WIN_CORE_INIT_PLAYOUT 

1306: Audio device module: A playout driver abnormality or a compatibility issue occurs. Solutions: Disable and restart the audio device, or reboot the system.

ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL 

1307: Audio device module: No audio device is available. Solutions: Plug in a proper audio device.

ERR_ADM_WIN_CORE_START_RECORDING 

1309: Audio device module: An audio driver abnormality or a compatibility issue occurs. Solutions: Disable and restart the audio device, or reboot the system.

ERR_ADM_WIN_CORE_CREATE_REC_THREAD 

1311: Audio device module: Insufficient system memory or poor device performance. Solutions: Reboot the system or replace the device.

ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP 

1314: Audio device module: An audio driver abnormality occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Upgrade your audio card driver.
ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD 

1319: Audio device module: Insufficient system memory or poor device performance. Solutions: Reboot the system or replace the device.

ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP 

1320: Audio device module: An audio driver abnormality occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Replace the device.
ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE 

1322: Audio device module: No audio sampling device is available. Solutions: Plug in a proper capturing device.

ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE 

1323: Audio device module: No audio playout device is available. Solutions: Plug in a proper playback device.

ERR_ADM_WIN_WAVE_INIT 

1351: Audio device module: An audio driver abnormality or a compatibility issue occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Upgrade your audio card driver.
ERR_ADM_WIN_WAVE_INIT_RECORDING 

1353: Audio device module: An audio driver abnormality occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Upgrade your audio card driver.
ERR_ADM_WIN_WAVE_INIT_MICROPHONE 

1354: Audio device module: An audio driver abnormality occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Upgrade your audio card driver.
ERR_ADM_WIN_WAVE_INIT_PLAYOUT 

1355: Audio device module: An audio driver abnormality occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Upgrade your audio card driver.
ERR_ADM_WIN_WAVE_INIT_SPEAKER 

1356: Audio device module: An audio driver abnormality occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Upgrade your audio card driver.
ERR_ADM_WIN_WAVE_START_RECORDING 

1357: Audio device module: An audio driver abnormality occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Upgrade your audio card driver.
ERR_ADM_WIN_WAVE_START_PLAYOUT 

1358: Audio device module: An audio driver abnormality occurs. Solutions:

  • Disable and then re-enable the audio device.
  • Reboot the system.
  • Upgrade your audio card driver.
ERR_ADM_NO_RECORDING_DEVICE 

1359: Audio Device Module: No capturing device exists.

ERR_ADM_NO_PLAYOUT_DEVICE 

1360: Audio Device Module: No playback device exists.

ERR_VDM_CAMERA_NOT_AUTHORIZED 

1501: Video Device Module: The camera is unauthorized.

ERR_VDM_WIN_DEVICE_IN_USE 

1502: Video Device Module: The camera in use.

Deprecated** Deprecated as of v2.4.1. Use LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY(3) in the onLocalVideoStateChanged callback instead.

ERR_VCM_UNKNOWN_ERROR 

1600: Video Device Module: An unknown error occurs.

ERR_VCM_ENCODER_INIT_ERROR 

1601: Video Device Module: An error occurs in initializing the video encoder.

ERR_VCM_ENCODER_ENCODE_ERROR 

1602: Video Device Module: An error occurs in encoding.

ERR_VCM_ENCODER_SET_ERROR 

1603: Video Device Module: An error occurs in setting the video encoder.

ERR_ADM_WIN_CORE_SERVRE_SHUT_DOWN 

1735: (Windows only) The Windows Audio service is disabled. You need to either enable the Windows Audio service or restart the device.

Since
v3.5.0
ERR_NOT_SUPPORTED_MUTI_GPU_EXCLUDE_WINDOW 

1736: (Windows only) The SDK does not support you to set excludeWindowList to block windows on a device with multiple graphics cards.

Since
v3.7.0

◆ LOG_FILTER_TYPE

Output log filter level.

Enumerator
LOG_FILTER_OFF 

0: Do not output any log information.

LOG_FILTER_DEBUG 

0x080f: Output all log information. Set your log filter as debug if you want to get the most complete log file.

LOG_FILTER_INFO 

0x000f: Output CRITICAL, ERROR, WARNING, and INFO level log information. We recommend setting your log filter as this level.

LOG_FILTER_WARN 

0x000e: Outputs CRITICAL, ERROR, and WARNING level log information.

LOG_FILTER_ERROR 

0x000c: Outputs CRITICAL and ERROR level log information.

LOG_FILTER_CRITICAL 

0x0008: Outputs CRITICAL level log information.

◆ LOG_LEVEL

enum class agora::LOG_LEVEL
strong

The output log level of the SDK.

Since
v3.3.0
Enumerator
LOG_LEVEL_NONE 

0x0000: Do not output any log.

LOG_LEVEL_INFO 

0x0001: (Default) Output logs of the FATAL, ERROR, WARN and INFO level. We recommend setting your log filter as this level.

LOG_LEVEL_WARN 

0x0002: Output logs of the FATAL, ERROR and WARN level.

LOG_LEVEL_ERROR 

0x0004: Output logs of the FATAL and ERROR level.

LOG_LEVEL_FATAL 

0x0008: Output logs of the FATAL level.

Function Documentation

◆ nullopt()

const nullopt_t agora::nullopt ( )

◆ operator==() [1/5]

template<class T , class U >
bool agora::operator== ( const Optional< T > &  lhs,
const Optional< U > &  rhs 
)

◆ operator!=() [1/5]

template<class T , class U >
bool agora::operator!= ( const Optional< T > &  lhs,
const Optional< U > &  rhs 
)

◆ operator<() [1/5]

template<class T , class U >
bool agora::operator< ( const Optional< T > &  lhs,
const Optional< U > &  rhs 
)

◆ operator<=() [1/5]

template<class T , class U >
bool agora::operator<= ( const Optional< T > &  lhs,
const Optional< U > &  rhs 
)

◆ operator>() [1/5]

template<class T , class U >
bool agora::operator> ( const Optional< T > &  lhs,
const Optional< U > &  rhs 
)

◆ operator>=() [1/5]

template<class T , class U >
bool agora::operator>= ( const Optional< T > &  lhs,
const Optional< U > &  rhs 
)

◆ operator==() [2/5]

template<class T >
CONSTEXPR bool agora::operator== ( const Optional< T > &  opt,
nullopt_t   
)

◆ operator==() [3/5]

template<class T >
CONSTEXPR bool agora::operator== ( nullopt_t  ,
const Optional< T > &  opt 
)

◆ operator!=() [2/5]

template<class T >
CONSTEXPR bool agora::operator!= ( const Optional< T > &  opt,
nullopt_t   
)

◆ operator!=() [3/5]

template<class T >
CONSTEXPR bool agora::operator!= ( nullopt_t  ,
const Optional< T > &  opt 
)

◆ operator<() [2/5]

template<class T >
CONSTEXPR bool agora::operator< ( const Optional< T > &  opt,
nullopt_t   
)

◆ operator<() [3/5]

template<class T >
CONSTEXPR bool agora::operator< ( nullopt_t  ,
const Optional< T > &  opt 
)

◆ operator<=() [2/5]

template<class T >
CONSTEXPR bool agora::operator<= ( const Optional< T > &  opt,
nullopt_t   
)

◆ operator<=() [3/5]

template<class T >
CONSTEXPR bool agora::operator<= ( nullopt_t  ,
const Optional< T > &  opt 
)

◆ operator>() [2/5]

template<class T >
CONSTEXPR bool agora::operator> ( const Optional< T > &  opt,
nullopt_t   
)

◆ operator>() [3/5]

template<class T >
CONSTEXPR bool agora::operator> ( nullopt_t  ,
const Optional< T > &  opt 
)

◆ operator>=() [2/5]

template<class T >
CONSTEXPR bool agora::operator>= ( const Optional< T > &  opt,
nullopt_t   
)

◆ operator>=() [3/5]

template<class T >
CONSTEXPR bool agora::operator>= ( nullopt_t  ,
const Optional< T > &  opt 
)

◆ operator==() [4/5]

template<class T , class U >
CONSTEXPR bool agora::operator== ( const Optional< T > &  opt,
const U &  value 
)

◆ operator==() [5/5]

template<class T , class U >
CONSTEXPR bool agora::operator== ( const U &  value,
const Optional< T > &  opt 
)

◆ operator!=() [4/5]

template<class T , class U >
CONSTEXPR bool agora::operator!= ( const Optional< T > &  opt,
const U &  value 
)

◆ operator!=() [5/5]

template<class T , class U >
CONSTEXPR bool agora::operator!= ( const U &  value,
const Optional< T > &  opt 
)

◆ operator<() [4/5]

template<class T , class U >
CONSTEXPR bool agora::operator< ( const Optional< T > &  opt,
const U &  value 
)

◆ operator<() [5/5]

template<class T , class U >
CONSTEXPR bool agora::operator< ( const U &  value,
const Optional< T > &  opt 
)

◆ operator<=() [4/5]

template<class T , class U >
CONSTEXPR bool agora::operator<= ( const Optional< T > &  opt,
const U &  value 
)

◆ operator<=() [5/5]

template<class T , class U >
CONSTEXPR bool agora::operator<= ( const U &  value,
const Optional< T > &  opt 
)

◆ operator>() [4/5]

template<class T , class U >
CONSTEXPR bool agora::operator> ( const Optional< T > &  opt,
const U &  value 
)

◆ operator>() [5/5]

template<class T , class U >
CONSTEXPR bool agora::operator> ( const U &  value,
const Optional< T > &  opt 
)

◆ operator>=() [4/5]

template<class T , class U >
CONSTEXPR bool agora::operator>= ( const Optional< T > &  opt,
const U &  value 
)

◆ operator>=() [5/5]

template<class T , class U >
CONSTEXPR bool agora::operator>= ( const U &  value,
const Optional< T > &  opt 
)

◆ make_optional() [1/2]

template<class T , class... Args>
CONSTEXPR Optional< T > agora::make_optional ( Args &&...  args)

◆ make_optional() [2/2]

template<class T , class U , class... Args>
CONSTEXPR Optional< T > agora::make_optional ( std::initializer_list< U >  il,
Args &&...  args 
)

◆ swap()

template<class T >
void agora::swap ( Optional< T > &  lhs,
Optional< T > &  rhs 
)

Variable Documentation

◆ in_place

const in_place_t agora::in_place = {}