Agora Server Gateway SDK C++ API Reference
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
AgoraBase.h File Reference
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <cassert>
#include "IAgoraParameter.h"
#include "AgoraMediaBase.h"
#include "AgoraRefPtr.h"
#include "AgoraOptional.h"

Go to the source code of this file.

Classes

class  agora::base::IParameterEngine
 
class  agora::util::AutoPtr< T >
 
class  agora::util::CopyableAutoPtr< T >
 
class  agora::util::IString
 
class  agora::util::IIterator
 
class  agora::util::IContainer
 
class  agora::util::AOutputIterator< T >
 
class  agora::util::AList< T >
 
struct  agora::UserInfo
 
struct  agora::rtc::VideoDimensions
 
struct  agora::rtc::EncodedAudioFrameAdvancedSettings
 
struct  agora::rtc::EncodedAudioFrameInfo
 
struct  agora::rtc::VideoSubscriptionOptions
 
struct  agora::rtc::EncodedVideoFrameInfo
 
struct  agora::rtc::VideoEncoderConfiguration
 
struct  agora::rtc::SimulcastStreamConfig
 
struct  agora::rtc::RtcStats
 
struct  agora::rtc::VideoTrackInfo
 
class  agora::rtc::IVideoEncodedImageReceiver
 
struct  agora::rtc::LocalAudioStats
 
struct  agora::rtc::LastmileProbeConfig
 
struct  agora::rtc::LastmileProbeOneWayResult
 
struct  agora::rtc::LastmileProbeResult
 
struct  agora::rtc::UplinkNetworkInfo
 
struct  agora::rtc::DownlinkNetworkInfo
 
struct  agora::rtc::DownlinkNetworkInfo::PeerDownlinkInfo
 
struct  agora::rtc::EncryptionConfig
 
struct  agora::rtc::UserInfo
 
class  agora::base::IEngineBase
 
class  agora::base::AParameter
 
class  agora::base::LicenseCallback
 

Namespaces

namespace  agora
 
namespace  agora::commons
 
namespace  agora::commons::cjson
 
namespace  agora::base
 
namespace  agora::util
 
namespace  agora::rtc
 

Macros

#define AGORA_DEPRECATED
 
#define MAX_PATH_260   (260)
 
#define AGORA_API   extern "C"
 
#define AGORA_CALL
 
#define OPTIONAL_NULLPTR   NULL
 

Typedefs

typedef commons::cjson::JsonWrapper agora::any_document_t
 
typedef CopyableAutoPtr< IString > agora::util::AString
 
typedef const char * agora::user_id_t
 
typedef void * agora::view_t
 
typedef util::AList< UserInfo > agora::UserList
 

Enumerations

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

Functions

AGORA_API const char *AGORA_CALL getAgoraSdkVersion (int *build)
 
AGORA_API const char *AGORA_CALL getAgoraSdkErrorDescription (int err)
 
AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader (void *(*func)(const char *symname))
 
AGORA_API int AGORA_CALL createAgoraCredential (agora::util::AString &credential)
 
AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult (const char *credential_buf, int credential_len, const char *certificate_buf, int certificate_len)
 
AGORA_API void setAgoraLicenseCallback (agora::base::LicenseCallback *callback)
 Implement the agora::base::LicenseCallback, create a LicenseCallback object to receive callbacks of license. More...
 
AGORA_API agora::base::LicenseCallbackgetAgoraLicenseCallback ()
 Get the LicenseCallback pointer if already setup, otherwise, return null. More...
 

Variables

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

Macro Definition Documentation

◆ AGORA_API

#define AGORA_API   extern "C"

◆ AGORA_CALL

#define AGORA_CALL

◆ AGORA_DEPRECATED

#define AGORA_DEPRECATED

◆ MAX_PATH_260

#define MAX_PATH_260   (260)

◆ OPTIONAL_NULLPTR

#define OPTIONAL_NULLPTR   NULL

Function Documentation

◆ createAgoraCredential()

AGORA_API int AGORA_CALL createAgoraCredential ( agora::util::AString credential)

Generate credential

Parameters
[in,out]credentialThe content of the credential.
Returns
The description of the error code.
Note
For license only, everytime will generate a different credential. So, just need to call once for a device, and then save the credential

◆ getAgoraCertificateVerifyResult()

AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult ( const char *  credential_buf,
int  credential_len,
const char *  certificate_buf,
int  certificate_len 
)

Verify given certificate and return the result When you receive onCertificateRequired event, you must validate the certificate by calling this function. This is sync call, and if validation is success, it will return ERR_OK. And if failed to pass validation, you won't be able to joinChannel and ERR_CERT_FAIL will be returned.

Parameters
[in]credential_bufpointer to the credential's content.
[in]credential_lenthe length of the credential's content.
[in]certificate_bufpointer to the certificate's content.
[in]certificate_lenthe length of the certificate's content.
Returns
The description of the error code.
Note
For license only.

◆ getAgoraLicenseCallback()

AGORA_API agora::base::LicenseCallback * getAgoraLicenseCallback ( )

Get the LicenseCallback pointer if already setup, otherwise, return null.

Parameters
none
Returns
a pointer of agora::base::LicenseCallback

◆ getAgoraSdkErrorDescription()

AGORA_API const char *AGORA_CALL getAgoraSdkErrorDescription ( int  err)

Gets error description of an error code.

Parameters
[in]errThe error code.
Returns
The description of the error code.

◆ getAgoraSdkVersion()

AGORA_API const char *AGORA_CALL getAgoraSdkVersion ( int *  build)

Gets the version of the SDK.

Parameters
[out]buildThe build number of Agora SDK.
Returns
The string of the version of the SDK.

◆ setAgoraLicenseCallback()

AGORA_API void setAgoraLicenseCallback ( agora::base::LicenseCallback callback)

Implement the agora::base::LicenseCallback, create a LicenseCallback object to receive callbacks of license.

Parameters
[in]callbackThe object of agora::LiceseCallback, set the callback to null before delete it.
Returns
none

◆ setAgoraSdkExternalSymbolLoader()

AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader ( void *(*)(const char *symname)  func)