9 #pragma once // NOLINT(build/header_guard)
17 #include "IAgoraParameter.h"
18 #include "AgoraMediaBase.h"
19 #include "AgoraRefPtr.h"
21 #define MAX_PATH_260 (260)
25 #ifndef WIN32_LEAN_AND_MEAN
26 #define WIN32_LEAN_AND_MEAN
27 #endif // !WIN32_LEAN_AND_MEAN
28 #if defined(__aarch64__)
29 #include <arm64intr.h>
33 #if defined(AGORARTC_EXPORT)
34 #define AGORA_API extern "C" __declspec(dllexport)
36 #define AGORA_API extern "C" __declspec(dllimport)
37 #endif // AGORARTC_EXPORT
39 #define AGORA_CALL __cdecl
41 #elif defined(__APPLE__)
43 #include <TargetConditionals.h>
45 #define AGORA_API extern "C" __attribute__((visibility("default")))
48 #elif defined(__ANDROID__) || defined(__linux__)
50 #define AGORA_API extern "C" __attribute__((visibility("default")))
53 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
55 #define AGORA_API extern "C"
60 #ifndef OPTIONAL_ENUM_SIZE_T
61 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
62 #define OPTIONAL_ENUM_SIZE_T enum : size_t
64 #define OPTIONAL_ENUM_SIZE_T enum
68 #ifndef OPTIONAL_NULLPTR
69 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
70 #define OPTIONAL_NULLPTR nullptr
72 #define OPTIONAL_NULLPTR NULL
83 typedef commons::cjson::JsonWrapper any_document_t;
90 virtual int setParameters(
const char* parameters) = 0;
91 virtual int getParameters(
const char* key, any_document_t& result) = 0;
101 typedef T value_type;
102 typedef T* pointer_type;
105 explicit AutoPtr(pointer_type p = NULL) : ptr_(p) {}
114 operator bool()
const {
return (ptr_ != NULL); }
116 value_type& operator*()
const {
return *get(); }
118 pointer_type operator->()
const {
return get(); }
120 pointer_type get()
const {
return ptr_; }
122 pointer_type release() {
123 pointer_type ret = ptr_;
128 void reset(pointer_type ptr = NULL) {
129 if (ptr != ptr_ && ptr_) {
136 template <
class C1,
class C2>
137 bool queryInterface(C1* c, C2 iid) {
138 pointer_type p = NULL;
139 if (c && !c->queryInterface(iid,
reinterpret_cast<void**
>(&p))) {
156 typedef typename AutoPtr<T>::pointer_type pointer_type;
162 if (
this != &rhs) this->reset(rhs.clone());
165 pointer_type clone()
const {
166 if (!this->get())
return NULL;
167 return this->get()->clone();
173 virtual bool empty()
const = 0;
174 virtual const char* c_str() = 0;
175 virtual const char* data() = 0;
176 virtual size_t length() = 0;
178 virtual void release() = 0;
185 virtual void* current() = 0;
186 virtual const void* const_current()
const = 0;
187 virtual bool next() = 0;
188 virtual void release() = 0;
195 virtual size_t size()
const = 0;
196 virtual void release() = 0;
205 typedef T value_type;
206 typedef value_type& reference;
207 typedef const value_type& const_reference;
208 typedef value_type* pointer;
209 typedef const value_type* const_pointer;
221 return p->current() == rhs.p->current();
223 return valid() == rhs.valid();
225 bool operator!=(
const AOutputIterator& rhs)
const {
return !this->operator==(rhs); }
226 reference operator*() {
return *
reinterpret_cast<pointer
>(p->current()); }
227 const_reference operator*()
const {
return *
reinterpret_cast<const_pointer
>(p->const_current()); }
228 bool valid()
const {
return p && p->current() != NULL; }
237 typedef T value_type;
238 typedef value_type& reference;
239 typedef const value_type& const_reference;
240 typedef value_type* pointer;
241 typedef const value_type* const_pointer;
242 typedef size_t size_type;
247 AList() : container(NULL), owner(
false) {}
248 AList(
IContainer* c,
bool take_ownership) : container(c), owner(take_ownership) {}
249 ~
AList() { reset(); }
250 void reset(
IContainer* c = NULL,
bool take_ownership =
false) {
251 if (owner && container) container->release();
253 owner = take_ownership;
257 size_type size()
const {
return container ? container->size() : 0; }
258 bool empty()
const {
return size() == 0; }
266 enum CHANNEL_PROFILE_TYPE {
272 CHANNEL_PROFILE_COMMUNICATION = 0,
278 CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
283 CHANNEL_PROFILE_GAME = 2,
290 CHANNEL_PROFILE_CLOUD_GAMING = 3,
297 CHANNEL_PROFILE_COMMUNICATION_1v1 = 4,
304 CHANNEL_PROFILE_LIVE_BROADCASTING_2 = 5,
310 enum WARN_CODE_TYPE {
315 WARN_INVALID_VIEW = 8,
320 WARN_INIT_VIDEO = 16,
330 WARN_NO_AVAILABLE_CHANNEL = 103,
336 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
341 WARN_LOOKUP_CHANNEL_REJECTED = 105,
347 WARN_OPEN_CHANNEL_TIMEOUT = 106,
352 WARN_OPEN_CHANNEL_REJECTED = 107,
358 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
362 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
366 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
370 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
374 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
378 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
382 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
385 WARN_CHANNEL_SOCKET_ERROR = 134,
389 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
393 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
397 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
401 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
405 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
409 WARN_ADM_RECORD_MALFUNCTION = 1021,
416 WARN_ADM_IOS_CATEGORY_NOT_PLAYANDRECORD = 1029,
420 WARN_ADM_IOS_SAMPLERATE_CHANGE = 1030,
424 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
428 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
436 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
440 WARN_APM_HOWLING = 1051,
444 WARN_ADM_GLITCH_STATE = 1052,
448 WARN_ADM_IMPROPER_SETTINGS = 1053,
452 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
457 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
465 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
471 enum ERROR_CODE_TYPE {
485 ERR_INVALID_ARGUMENT = 2,
496 ERR_NOT_SUPPORTED = 4,
504 ERR_BUFFER_TOO_SMALL = 6,
508 ERR_NOT_INITIALIZED = 7,
512 ERR_INVALID_STATE = 8,
517 ERR_NO_PERMISSION = 9,
540 ERR_BIND_SOCKET = 13,
557 ERR_JOIN_CHANNEL_REJECTED = 17,
564 ERR_LEAVE_CHANNEL_REJECTED = 18,
568 ERR_ALREADY_IN_USE = 19,
578 ERR_INIT_NET_ENGINE = 21,
583 ERR_RESOURCE_LIMITED = 22,
589 ERR_INVALID_APP_ID = 101,
594 ERR_INVALID_CHANNEL_NAME = 102,
600 ERR_NO_SERVER_RESOURCES = 103,
613 ERR_TOKEN_EXPIRED = 109,
630 ERR_INVALID_TOKEN = 110,
635 ERR_CONNECTION_INTERRUPTED = 111,
640 ERR_CONNECTION_LOST = 112,
645 ERR_NOT_IN_CHANNEL = 113,
650 ERR_SIZE_TOO_LARGE = 114,
655 ERR_BITRATE_LIMIT = 115,
660 ERR_TOO_MANY_DATA_STREAMS = 116,
664 ERR_STREAM_MESSAGE_TIMEOUT = 117,
668 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
673 ERR_DECRYPTION_FAILED = 120,
677 ERR_INVALID_USER_ID = 121,
681 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
685 ERR_WATERMARK_PARAM = 124,
689 ERR_WATERMARK_PATH = 125,
693 ERR_WATERMARK_PNG = 126,
697 ERR_WATERMARKR_INFO = 127,
701 ERR_WATERMARK_ARGB = 128,
705 ERR_WATERMARK_READ = 129,
711 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
716 ERR_LICENSE_CREDENTIAL_INVALID = 131,
720 ERR_CERT_JSON_PART = 158,
721 ERR_CERT_JSON_INVAL = 159,
722 ERR_CERT_JSON_NOMEM = 160,
723 ERR_CERT_CUSTOM = 161,
724 ERR_CERT_CREDENTIAL = 162,
729 ERR_CERT_DUEDATE = 167,
730 ERR_CERT_REQUEST = 168,
733 ERR_PCMSEND_FORMAT =200,
734 ERR_PCMSEND_BUFFEROVERFLOW = 201,
738 ERR_LOGOUT_OTHER = 400,
739 ERR_LOGOUT_USER = 401,
740 ERR_LOGOUT_NET = 402,
741 ERR_LOGOUT_KICKED = 403,
742 ERR_LOGOUT_PACKET = 404,
743 ERR_LOGOUT_TOKEN_EXPIRED = 405,
744 ERR_LOGOUT_OLDVERSION = 406,
745 ERR_LOGOUT_TOKEN_WRONG = 407,
746 ERR_LOGOUT_ALREADY_LOGOUT = 408,
747 ERR_LOGIN_OTHER = 420,
749 ERR_LOGIN_FAILED = 422,
750 ERR_LOGIN_CANCELED = 423,
751 ERR_LOGIN_TOKEN_EXPIRED = 424,
752 ERR_LOGIN_OLD_VERSION = 425,
753 ERR_LOGIN_TOKEN_WRONG = 426,
754 ERR_LOGIN_TOKEN_KICKED = 427,
755 ERR_LOGIN_ALREADY_LOGIN = 428,
756 ERR_JOIN_CHANNEL_OTHER = 440,
757 ERR_SEND_MESSAGE_OTHER = 440,
758 ERR_SEND_MESSAGE_TIMEOUT = 441,
759 ERR_QUERY_USERNUM_OTHER = 450,
760 ERR_QUERY_USERNUM_TIMEOUT = 451,
761 ERR_QUERY_USERNUM_BYUSER = 452,
762 ERR_LEAVE_CHANNEL_OTHER = 460,
763 ERR_LEAVE_CHANNEL_KICKED = 461,
764 ERR_LEAVE_CHANNEL_BYUSER = 462,
765 ERR_LEAVE_CHANNEL_LOGOUT = 463,
766 ERR_LEAVE_CHANNEL_DISCONNECTED = 464,
767 ERR_INVITE_OTHER = 470,
768 ERR_INVITE_REINVITE = 471,
769 ERR_INVITE_NET = 472,
770 ERR_INVITE_PEER_OFFLINE = 473,
771 ERR_INVITE_TIMEOUT = 474,
772 ERR_INVITE_CANT_RECV = 475,
778 ERR_LOAD_MEDIA_ENGINE = 1001,
782 ERR_START_CALL = 1002,
786 ERR_START_CAMERA = 1003,
790 ERR_START_VIDEO_RENDER = 1004,
796 ERR_ADM_GENERAL_ERROR = 1005,
800 ERR_ADM_JAVA_RESOURCE = 1006,
804 ERR_ADM_SAMPLE_RATE = 1007,
809 ERR_ADM_INIT_PLAYOUT = 1008,
813 ERR_ADM_START_PLAYOUT = 1009,
817 ERR_ADM_STOP_PLAYOUT = 1010,
822 ERR_ADM_INIT_RECORDING = 1011,
826 ERR_ADM_START_RECORDING = 1012,
830 ERR_ADM_STOP_RECORDING = 1013,
835 ERR_ADM_RUNTIME_PLAYOUT_ERROR = 1015,
839 ERR_ADM_RUNTIME_RECORDING_ERROR = 1017,
843 ERR_ADM_RECORD_AUDIO_FAILED = 1018,
848 ERR_ADM_INIT_LOOPBACK = 1022,
853 ERR_ADM_START_LOOPBACK = 1023,
858 ERR_ADM_NO_PERMISSION = 1027,
862 ERR_ADM_RECORD_AUDIO_IS_ACTIVE = 1033,
866 ERR_ADM_ANDROID_JNI_JAVA_RESOURCE = 1101,
872 ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY = 1108,
878 ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY = 1109,
886 ERR_ADM_ANDROID_JNI_JAVA_START_RECORD = 1111,
894 ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK = 1112,
899 ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR = 1115,
901 ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE = 1151,
903 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER = 1153,
905 ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD = 1156,
907 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER = 1157,
909 ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD = 1160,
916 ERR_ADM_IOS_INPUT_NOT_AVAILABLE = 1201,
920 ERR_ADM_IOS_ACTIVATE_SESSION_FAIL = 1206,
925 ERR_ADM_IOS_VPIO_INIT_FAIL = 1210,
930 ERR_ADM_IOS_VPIO_REINIT_FAIL = 1213,
935 ERR_ADM_IOS_VPIO_RESTART_FAIL = 1214,
936 ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219,
938 ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO = 1221,
946 ERR_ADM_WIN_CORE_INIT = 1301,
953 ERR_ADM_WIN_CORE_INIT_RECORDING = 1303,
960 ERR_ADM_WIN_CORE_INIT_PLAYOUT = 1306,
966 ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL = 1307,
973 ERR_ADM_WIN_CORE_START_RECORDING = 1309,
980 ERR_ADM_WIN_CORE_CREATE_REC_THREAD = 1311,
989 ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP = 1314,
996 ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD = 1319,
1005 ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP = 1320,
1011 ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
1017 ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
1027 ERR_ADM_WIN_WAVE_INIT = 1351,
1036 ERR_ADM_WIN_WAVE_INIT_RECORDING = 1353,
1045 ERR_ADM_WIN_WAVE_INIT_MICROPHONE = 1354,
1054 ERR_ADM_WIN_WAVE_INIT_PLAYOUT = 1355,
1063 ERR_ADM_WIN_WAVE_INIT_SPEAKER = 1356,
1072 ERR_ADM_WIN_WAVE_START_RECORDING = 1357,
1081 ERR_ADM_WIN_WAVE_START_PLAYOUT = 1358,
1085 ERR_ADM_NO_RECORDING_DEVICE = 1359,
1089 ERR_ADM_NO_PLAYOUT_DEVICE = 1360,
1095 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
1101 ERR_VDM_WIN_DEVICE_IN_USE = 1502,
1107 ERR_VCM_UNKNOWN_ERROR = 1600,
1112 ERR_VCM_ENCODER_INIT_ERROR = 1601,
1116 ERR_VCM_ENCODER_ENCODE_ERROR = 1602,
1120 ERR_VCM_ENCODER_SET_ERROR = 1603,
1123 typedef const char* user_id_t;
1124 typedef void* view_t;
1150 typedef util::AList<UserInfo> UserList;
1158 enum USER_OFFLINE_REASON_TYPE {
1162 USER_OFFLINE_QUIT = 0,
1168 USER_OFFLINE_DROPPED = 1,
1172 USER_OFFLINE_BECOME_AUDIENCE = 2,
1175 enum INTERFACE_ID_TYPE {
1176 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
1177 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
1178 AGORA_IID_PARAMETER_ENGINE = 3,
1179 AGORA_IID_MEDIA_ENGINE = 4,
1180 AGORA_IID_AUDIO_ENGINE = 5,
1181 AGORA_IID_VIDEO_ENGINE = 6,
1182 AGORA_IID_RTC_CONNECTION = 7,
1183 AGORA_IID_SIGNALING_ENGINE = 8,
1184 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
1195 QUALITY_UNKNOWN = 0,
1199 QUALITY_EXCELLENT = 1,
1224 QUALITY_UNSUPPORTED = 7,
1234 enum FIT_MODE_TYPE {
1252 enum VIDEO_ORIENTATION {
1256 VIDEO_ORIENTATION_0 = 0,
1260 VIDEO_ORIENTATION_90 = 90,
1264 VIDEO_ORIENTATION_180 = 180,
1268 VIDEO_ORIENTATION_270 = 270
1278 FRAME_RATE_FPS_1 = 1,
1282 FRAME_RATE_FPS_7 = 7,
1286 FRAME_RATE_FPS_10 = 10,
1290 FRAME_RATE_FPS_15 = 15,
1294 FRAME_RATE_FPS_24 = 24,
1298 FRAME_RATE_FPS_30 = 30,
1302 FRAME_RATE_FPS_60 = 60,
1306 FRAME_WIDTH_640 = 640,
1310 FRAME_HEIGHT_360 = 360,
1317 enum VIDEO_FRAME_TYPE {
1319 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1321 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1323 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1325 VIDEO_FRAME_TYPE_B_FRAME = 5,
1327 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1329 VIDEO_FRAME_TYPE_UNKNOW
1335 enum ORIENTATION_MODE {
1343 ORIENTATION_MODE_ADAPTIVE = 0,
1351 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1359 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1365 enum DEGRADATION_PREFERENCE {
1369 MAINTAIN_QUALITY = 0,
1373 MAINTAIN_FRAMERATE = 1,
1377 MAINTAIN_BALANCED = 2,
1381 MAINTAIN_RESOLUTION = 3,
1402 bool operator==(
const VideoDimensions& rhs)
const {
1403 return width == rhs.width &&
height == rhs.height;
1416 const int STANDARD_BITRATE = 0;
1425 const int COMPATIBLE_BITRATE = -1;
1430 const int DEFAULT_MIN_BITRATE = -1;
1435 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1440 enum VIDEO_CODEC_TYPE {
1444 VIDEO_CODEC_VP8 = 1,
1448 VIDEO_CODEC_H264 = 2,
1452 VIDEO_CODEC_H265 = 3,
1456 VIDEO_CODEC_VP9 = 5,
1460 VIDEO_CODEC_GENERIC = 6,
1464 VIDEO_CODEC_GENERIC_H264 = 7,
1468 VIDEO_CODEC_GENERIC_JPEG = 20,
1474 enum AUDIO_CODEC_TYPE {
1478 AUDIO_CODEC_OPUS = 1,
1483 AUDIO_CODEC_PCMA = 3,
1487 AUDIO_CODEC_PCMU = 4,
1491 AUDIO_CODEC_G722 = 5,
1498 AUDIO_CODEC_AACLC = 8,
1502 AUDIO_CODEC_HEAAC = 9,
1506 AUDIO_CODEC_JC1 = 10,
1507 AUDIO_CODEC_HEAAC2 = 11,
1513 enum AUDIO_ENCODING_TYPE {
1517 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1521 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1525 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1529 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1533 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1537 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1541 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1546 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1550 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1554 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1558 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1564 enum WATERMARK_FIT_MODE {
1569 FIT_MODE_COVER_POSITION,
1574 FIT_MODE_USE_IMAGE_RATIO
1605 :
codec(AUDIO_CODEC_AACLC),
1673 enum H264PacketizeMode {
1687 enum VIDEO_STREAM_TYPE {
1691 VIDEO_STREAM_HIGH = 0,
1695 VIDEO_STREAM_LOW = 1,
1707 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1729 if (
this == &rhs)
return *
this;
1796 enum VIDEO_MIRROR_MODE_TYPE {
1800 VIDEO_MIRROR_MODE_AUTO = 0,
1804 VIDEO_MIRROR_MODE_ENABLED = 1,
1808 VIDEO_MIRROR_MODE_DISABLED = 2,
1923 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1932 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
1941 VideoEncoderConfiguration()
1943 dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360),
1951 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
1952 if (
this == &rhs)
return *
this;
2072 ,
mode(FIT_MODE_COVER_POSITION)
2256 enum VIDEO_SOURCE_TYPE {
2259 VIDEO_SOURCE_CAMERA_PRIMARY,
2260 VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
2263 VIDEO_SOURCE_CAMERA_SECONDARY,
2266 VIDEO_SOURCE_SCREEN_PRIMARY,
2267 VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
2270 VIDEO_SOURCE_SCREEN_SECONDARY,
2273 VIDEO_SOURCE_CUSTOM,
2276 VIDEO_SOURCE_MEDIA_PLAYER,
2279 VIDEO_SOURCE_RTC_IMAGE_PNG,
2282 VIDEO_SOURCE_RTC_IMAGE_JPEG,
2285 VIDEO_SOURCE_RTC_IMAGE_GIF,
2288 VIDEO_SOURCE_REMOTE,
2291 VIDEO_SOURCE_TRANSCODED,
2293 VIDEO_SOURCE_UNKNOWN = 100
2299 enum CLIENT_ROLE_TYPE {
2303 CLIENT_ROLE_BROADCASTER = 1,
2307 CLIENT_ROLE_AUDIENCE = 2,
2311 enum AUDIENCE_LATENCY_LEVEL_TYPE
2314 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2316 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2416 enum AUDIO_PROFILE_TYPE {
2424 AUDIO_PROFILE_DEFAULT = 0,
2428 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2432 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2437 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2441 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2445 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2449 AUDIO_PROFILE_IOT = 6,
2450 AUDIO_PROFILE_NUM = 7
2456 enum AUDIO_SCENARIO_TYPE {
2460 AUDIO_SCENARIO_DEFAULT = 0,
2466 AUDIO_SCENARIO_GAME_STREAMING = 3,
2472 AUDIO_SCENARIO_CHATROOM = 5,
2476 AUDIO_SCENARIO_HIGH_DEFINITION = 6,
2480 AUDIO_SCENARIO_CHORUS = 7,
2484 AUDIO_SCENARIO_NUM = 8,
2491 OPTIONAL_ENUM_SIZE_T {
2493 kMaxWidthInPixels = 3840,
2495 kMaxHeightInPixels = 2160,
2519 enum VIDEO_CONTENT_HINT {
2530 CONTENT_HINT_MOTION,
2536 CONTENT_HINT_DETAILS
2542 enum LOCAL_AUDIO_STREAM_STATE {
2546 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2550 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2554 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2558 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2564 enum LOCAL_AUDIO_STREAM_ERROR {
2568 LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2572 LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2576 LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2580 LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2585 LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2589 LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
2594 enum LOCAL_VIDEO_STREAM_STATE {
2598 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2602 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2606 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2610 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2616 enum LOCAL_VIDEO_STREAM_ERROR {
2618 LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2620 LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2622 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2624 LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2626 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2628 LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2630 LOCAL_VIDEO_STREAM_ERROR_BACKGROUD = 6,
2632 LOCAL_VIDEO_STREAM_ERROR_MULTIPLE_FOREGROUND_APPS = 7,
2634 LOCAL_VIDEO_STREAM_ERROR_SYSTEM_PRESSURE = 8
2640 enum REMOTE_AUDIO_STATE
2648 REMOTE_AUDIO_STATE_STOPPED = 0,
2652 REMOTE_AUDIO_STATE_STARTING = 1,
2659 REMOTE_AUDIO_STATE_DECODING = 2,
2664 REMOTE_AUDIO_STATE_FROZEN = 3,
2669 REMOTE_AUDIO_STATE_FAILED = 4,
2675 enum REMOTE_AUDIO_STATE_REASON
2680 REMOTE_AUDIO_REASON_INTERNAL = 0,
2684 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2688 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2693 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2698 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2703 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2708 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2712 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2716 enum REMOTE_VIDEO_STATE {
2722 REMOTE_VIDEO_STATE_STOPPED = 0,
2725 REMOTE_VIDEO_STATE_STARTING = 1,
2732 REMOTE_VIDEO_STATE_DECODING = 2,
2737 REMOTE_VIDEO_STATE_FROZEN = 3,
2741 REMOTE_VIDEO_STATE_FAILED = 4,
2744 enum REMOTE_VIDEO_STATE_REASON {
2748 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2753 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2758 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2763 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2768 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2773 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2778 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2783 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2788 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2793 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
2798 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
2802 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
2857 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
2861 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
2865 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
2869 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
2873 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
2877 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
2974 enum AUDIO_SAMPLE_RATE_TYPE {
2978 AUDIO_SAMPLE_RATE_32000 = 32000,
2982 AUDIO_SAMPLE_RATE_44100 = 44100,
2986 AUDIO_SAMPLE_RATE_48000 = 48000,
2991 enum VIDEO_CODEC_PROFILE_TYPE {
2995 VIDEO_CODEC_PROFILE_BASELINE = 66,
2999 VIDEO_CODEC_PROFILE_MAIN = 77,
3003 VIDEO_CODEC_PROFILE_HIGH = 100,
3009 enum AUDIO_CODEC_PROFILE_TYPE {
3013 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3017 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3052 enum RTMP_STREAM_PUBLISH_STATE {
3059 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3065 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3070 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3080 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3085 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3091 enum RTMP_STREAM_PUBLISH_ERROR {
3095 RTMP_STREAM_PUBLISH_ERROR_FAILED = -1,
3099 RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3105 RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3109 RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3114 RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3119 RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3123 RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3127 RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3131 RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3135 RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3139 RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3143 RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3148 RTMP_STREAM_PUBLISH_ERROR_CDN_ERROR = 11,
3152 RTMP_STREAM_PUBLISH_ERROR_ALREADY_IN_USE = 12,
3191 enum CONNECTION_STATE_TYPE
3196 CONNECTION_STATE_DISCONNECTED = 1,
3200 CONNECTION_STATE_CONNECTING = 2,
3205 CONNECTION_STATE_CONNECTED = 3,
3210 CONNECTION_STATE_RECONNECTING = 4,
3214 CONNECTION_STATE_FAILED = 5,
3463 :
sourceType(agora::media::PRIMARY_CAMERA_SOURCE),
3532 enum LASTMILE_PROBE_RESULT_STATE {
3536 LASTMILE_PROBE_RESULT_COMPLETE = 1,
3541 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3546 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3601 enum CONNECTION_CHANGED_REASON_TYPE
3606 CONNECTION_CHANGED_CONNECTING = 0,
3610 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3614 CONNECTION_CHANGED_INTERRUPTED = 2,
3618 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3622 CONNECTION_CHANGED_JOIN_FAILED = 4,
3626 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3630 CONNECTION_CHANGED_INVALID_APP_ID = 6,
3634 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3638 CONNECTION_CHANGED_INVALID_TOKEN = 8,
3642 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3646 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3650 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3654 CONNECTION_CHANGED_RENEW_TOKEN = 12,
3659 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3663 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3667 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3671 CONNECTION_CHANGED_LOST = 16,
3675 CONNECTION_CHANGED_ECHO_TEST = 17,
3679 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
3689 NETWORK_TYPE_UNKNOWN = -1,
3693 NETWORK_TYPE_DISCONNECTED = 0,
3697 NETWORK_TYPE_LAN = 1,
3701 NETWORK_TYPE_WIFI = 2,
3705 NETWORK_TYPE_MOBILE_2G = 3,
3709 NETWORK_TYPE_MOBILE_3G = 4,
3713 NETWORK_TYPE_MOBILE_4G = 5,
3742 VIDEO_SOURCE_TYPE sourceType;
3745 uid(0), isScreenView(false), priv(NULL), priv_size(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3746 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
3748 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3749 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
3751 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3812 enum VOICE_BEAUTIFIER_PRESET {
3815 VOICE_BEAUTIFIER_OFF = 0x00000000,
3821 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
3827 CHAT_BEAUTIFIER_FRESH = 0x01010200,
3833 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
3847 SINGING_BEAUTIFIER = 0x01020100,
3850 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
3853 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
3856 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
3859 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
3862 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
3865 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
3868 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
3871 TIMBRE_TRANSFORMATION_RINGING = 0x01030800
3876 enum AUDIO_EFFECT_PRESET {
3879 AUDIO_EFFECT_OFF = 0x00000000,
3887 ROOM_ACOUSTICS_KTV = 0x02010100,
3895 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
3903 ROOM_ACOUSTICS_STUDIO = 0x02010300,
3911 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
3918 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
3926 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
3934 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
3946 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
3957 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
3968 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
3979 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
3990 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
4001 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
4010 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
4018 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
4026 STYLE_TRANSFORMATION_RNB = 0x02030100,
4034 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
4044 PITCH_CORRECTION = 0x02040100
4053 enum VOICE_CONVERSION_PRESET {
4056 VOICE_CONVERSION_OFF = 0x00000000,
4059 VOICE_CHANGER_NEUTRAL = 0x03010100,
4062 VOICE_CHANGER_SWEET = 0x03010200,
4065 VOICE_CHANGER_SOLID = 0x03010300,
4068 VOICE_CHANGER_BASS = 0x03010400
4072 enum AUDIO_REVERB_PRESET {
4076 AUDIO_REVERB_OFF = 0,
4080 AUDIO_REVERB_FX_KTV = 0x02010100,
4084 AUDIO_REVERB_FX_VOCAL_CONCERT = 0x02010200,
4088 AUDIO_REVERB_FX_UNCLE = 0x02020100,
4092 AUDIO_REVERB_FX_SISTER = 0x02020400,
4096 AUDIO_REVERB_FX_STUDIO = 0x02010300,
4100 AUDIO_REVERB_FX_POPULAR = 0x02030200,
4104 AUDIO_REVERB_FX_RNB = 0x02030100,
4108 AUDIO_REVERB_FX_PHONOGRAPH = 0x02010400
4154 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
4156 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
4158 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t *ex,
int cnt)
4160 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t *ex,
int cnt)
4167 enum AUDIO_RECORDING_QUALITY_TYPE {
4171 AUDIO_RECORDING_QUALITY_LOW = 0,
4175 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4179 AUDIO_RECORDING_QUALITY_HIGH = 2,
4185 enum AUDIO_FILE_RECORDING_TYPE {
4189 AUDIO_FILE_RECORDING_MIC = 1,
4193 AUDIO_FILE_RECORDING_PLAYBACK = 2,
4197 AUDIO_FILE_RECORDING_MIXED = 3,
4203 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4207 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4211 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4215 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4252 quality(AUDIO_RECORDING_QUALITY_LOW) {}
4261 AudioFileRecordingConfig(
const char* file_path,
bool enc,
int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4268 AudioFileRecordingConfig(
const AudioFileRecordingConfig &rhs)
4291 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4331 enum VOICE_CHANGER_PRESET {
4335 VOICE_CHANGER_OFF = 0,
4339 VOICE_CHANGER_OLDMAN = 0x02020200,
4343 VOICE_CHANGER_BABYBOY = 0x02020300,
4347 VOICE_CHANGER_BABYGIRL = 0x02020500,
4352 VOICE_CHANGER_ZHUBAJIE = 0x02020600,
4356 VOICE_CHANGER_ETHEREAL = 0x02010700,
4360 VOICE_CHANGER_HULK = 0x02020700,
4364 VOICE_BEAUTY_VIGOROUS = 0x01030100,
4368 VOICE_BEAUTY_DEEP = 0x01030200,
4372 VOICE_BEAUTY_MELLOW = 0x01030300,
4376 VOICE_BEAUTY_FALSETTO = 0x01030400,
4380 VOICE_BEAUTY_FULL = 0x01030500,
4384 VOICE_BEAUTY_CLEAR = 0x01030600,
4388 VOICE_BEAUTY_RESOUNDING = 0x01030700,
4392 VOICE_BEAUTY_RINGING = 0x01030800,
4396 VOICE_BEAUTY_SPACIAL = 0x02010600,
4401 GENERAL_BEAUTY_VOICE_MALE = 0x01010100,
4406 GENERAL_BEAUTY_VOICE_FEMALE_FRESH = 0x01010200,
4411 GENERAL_BEAUTY_VOICE_FEMALE_VITALITY = 0x01010300
4419 AREA_CODE_CN = 0x00000001,
4423 AREA_CODE_NA = 0x00000002,
4427 AREA_CODE_EU = 0x00000004,
4431 AREA_CODE_AS = 0x00000008,
4435 AREA_CODE_JP = 0x00000010,
4439 AREA_CODE_IN = 0x00000020,
4443 AREA_CODE_GLOB = (0xFFFFFFFF)
4450 AREA_CODE_OC = 0x00000040,
4454 AREA_CODE_SA = 0x00000080,
4458 AREA_CODE_AF = 0x00000100,
4462 AREA_CODE_OVS = 0xFFFFFFFE
4465 enum CHANNEL_MEDIA_RELAY_ERROR {
4471 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
4476 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
4480 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
4483 RELAY_ERROR_FAILED_JOIN_SRC = 4,
4486 RELAY_ERROR_FAILED_JOIN_DEST = 5,
4489 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
4492 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
4497 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
4500 RELAY_ERROR_INTERNAL_ERROR = 9,
4503 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
4506 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
4510 enum CHANNEL_MEDIA_RELAY_EVENT {
4514 RELAY_EVENT_NETWORK_DISCONNECTED = 0,
4517 RELAY_EVENT_NETWORK_CONNECTED = 1,
4520 RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
4523 RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
4526 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
4529 RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
4532 RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4535 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4538 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4542 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4545 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4548 RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4551 enum CHANNEL_MEDIA_RELAY_STATE {
4554 RELAY_STATE_IDLE = 0,
4557 RELAY_STATE_CONNECTING = 1,
4561 RELAY_STATE_RUNNING = 2,
4564 RELAY_STATE_FAILURE = 3,
4658 :
uid(OPTIONAL_NULLPTR),
4664 if (
this == &rhs)
return *
this;
4665 uid = OPTIONAL_NULLPTR;
4669 if (rhs.
uid != OPTIONAL_NULLPTR) {
4670 char* temp =
new char[strlen(rhs.
uid) + 1];
4671 strcpy(temp, rhs.
uid);
4677 ~PeerDownlinkInfo() {
4722 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
4723 if (
this == &rhs)
return *
this;
4737 ~DownlinkNetworkInfo() {
4744 enum ENCRYPTION_MODE {
4771 uint8_t encryptionKdfSalt[32];
4777 memset(encryptionKdfSalt, 0,
sizeof(encryptionKdfSalt));
4781 const char* getEncryptionString()
const {
4784 return "sm4-128-ecb";
4786 return "aes-128-gcm";
4788 return "aes-256-gcm";
4790 return "aes-128-gcm";
4792 return "aes-128-gcm";
4799 enum ENCRYPTION_ERROR_TYPE {
4800 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
4801 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
4802 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
4807 enum PERMISSION_TYPE {
4814 enum MAX_USER_ACCOUNT_LENGTH_TYPE
4818 MAX_USER_ACCOUNT_LENGTH = 256
4824 enum STREAM_SUBSCRIBE_STATE {
4826 SUB_STATE_NO_SUBSCRIBED = 1,
4827 SUB_STATE_SUBSCRIBING = 2,
4828 SUB_STATE_SUBSCRIBED = 3
4834 enum STREAM_PUBLISH_STATE {
4836 PUB_STATE_NO_PUBLISHED = 1,
4837 PUB_STATE_PUBLISHING = 2,
4838 PUB_STATE_PUBLISHED = 3
4862 enum EAR_MONITORING_FILTER_TYPE {
4866 EAR_MONITORING_FILTER_NONE = (1<<0),
4870 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
4874 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
4883 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
4896 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
4904 virtual void onCertificateRequired() = 0;
4905 virtual void onLicenseRequest() = 0;
4906 virtual void onLicenseValidated() = 0;
4907 virtual void onLicenseError(
int result) = 0;
4919 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
4926 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
4928 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
4952 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char *credential_buf,
int credential_len,
4953 const char *certificate_buf,
int certificate_len);