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,
607 ERR_TOKEN_EXPIRED = 109,
624 ERR_INVALID_TOKEN = 110,
629 ERR_CONNECTION_INTERRUPTED = 111,
634 ERR_CONNECTION_LOST = 112,
639 ERR_NOT_IN_CHANNEL = 113,
644 ERR_SIZE_TOO_LARGE = 114,
649 ERR_BITRATE_LIMIT = 115,
654 ERR_TOO_MANY_DATA_STREAMS = 116,
658 ERR_STREAM_MESSAGE_TIMEOUT = 117,
662 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
667 ERR_DECRYPTION_FAILED = 120,
671 ERR_INVALID_USER_ID = 121,
675 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
679 ERR_WATERMARK_PARAM = 124,
683 ERR_WATERMARK_PATH = 125,
687 ERR_WATERMARK_PNG = 126,
691 ERR_WATERMARKR_INFO = 127,
695 ERR_WATERMARK_ARGB = 128,
699 ERR_WATERMARK_READ = 129,
705 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
710 ERR_LICENSE_CREDENTIAL_INVALID = 131,
714 ERR_CERT_JSON_PART = 158,
715 ERR_CERT_JSON_INVAL = 159,
716 ERR_CERT_JSON_NOMEM = 160,
717 ERR_CERT_CUSTOM = 161,
718 ERR_CERT_CREDENTIAL = 162,
723 ERR_CERT_DUEDATE = 167,
724 ERR_CERT_REQUEST = 168,
727 ERR_PCMSEND_FORMAT =200,
728 ERR_PCMSEND_BUFFEROVERFLOW = 201,
732 ERR_LOGOUT_OTHER = 400,
733 ERR_LOGOUT_USER = 401,
734 ERR_LOGOUT_NET = 402,
735 ERR_LOGOUT_KICKED = 403,
736 ERR_LOGOUT_PACKET = 404,
737 ERR_LOGOUT_TOKEN_EXPIRED = 405,
738 ERR_LOGOUT_OLDVERSION = 406,
739 ERR_LOGOUT_TOKEN_WRONG = 407,
740 ERR_LOGOUT_ALREADY_LOGOUT = 408,
741 ERR_LOGIN_OTHER = 420,
743 ERR_LOGIN_FAILED = 422,
744 ERR_LOGIN_CANCELED = 423,
745 ERR_LOGIN_TOKEN_EXPIRED = 424,
746 ERR_LOGIN_OLD_VERSION = 425,
747 ERR_LOGIN_TOKEN_WRONG = 426,
748 ERR_LOGIN_TOKEN_KICKED = 427,
749 ERR_LOGIN_ALREADY_LOGIN = 428,
750 ERR_JOIN_CHANNEL_OTHER = 440,
751 ERR_SEND_MESSAGE_OTHER = 440,
752 ERR_SEND_MESSAGE_TIMEOUT = 441,
753 ERR_QUERY_USERNUM_OTHER = 450,
754 ERR_QUERY_USERNUM_TIMEOUT = 451,
755 ERR_QUERY_USERNUM_BYUSER = 452,
756 ERR_LEAVE_CHANNEL_OTHER = 460,
757 ERR_LEAVE_CHANNEL_KICKED = 461,
758 ERR_LEAVE_CHANNEL_BYUSER = 462,
759 ERR_LEAVE_CHANNEL_LOGOUT = 463,
760 ERR_LEAVE_CHANNEL_DISCONNECTED = 464,
761 ERR_INVITE_OTHER = 470,
762 ERR_INVITE_REINVITE = 471,
763 ERR_INVITE_NET = 472,
764 ERR_INVITE_PEER_OFFLINE = 473,
765 ERR_INVITE_TIMEOUT = 474,
766 ERR_INVITE_CANT_RECV = 475,
772 ERR_LOAD_MEDIA_ENGINE = 1001,
776 ERR_START_CALL = 1002,
780 ERR_START_CAMERA = 1003,
784 ERR_START_VIDEO_RENDER = 1004,
790 ERR_ADM_GENERAL_ERROR = 1005,
794 ERR_ADM_JAVA_RESOURCE = 1006,
798 ERR_ADM_SAMPLE_RATE = 1007,
803 ERR_ADM_INIT_PLAYOUT = 1008,
807 ERR_ADM_START_PLAYOUT = 1009,
811 ERR_ADM_STOP_PLAYOUT = 1010,
816 ERR_ADM_INIT_RECORDING = 1011,
820 ERR_ADM_START_RECORDING = 1012,
824 ERR_ADM_STOP_RECORDING = 1013,
829 ERR_ADM_RUNTIME_PLAYOUT_ERROR = 1015,
833 ERR_ADM_RUNTIME_RECORDING_ERROR = 1017,
837 ERR_ADM_RECORD_AUDIO_FAILED = 1018,
842 ERR_ADM_INIT_LOOPBACK = 1022,
847 ERR_ADM_START_LOOPBACK = 1023,
852 ERR_ADM_NO_PERMISSION = 1027,
856 ERR_ADM_RECORD_AUDIO_IS_ACTIVE = 1033,
860 ERR_ADM_ANDROID_JNI_JAVA_RESOURCE = 1101,
866 ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY = 1108,
872 ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY = 1109,
880 ERR_ADM_ANDROID_JNI_JAVA_START_RECORD = 1111,
888 ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK = 1112,
893 ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR = 1115,
895 ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE = 1151,
897 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER = 1153,
899 ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD = 1156,
901 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER = 1157,
903 ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD = 1160,
910 ERR_ADM_IOS_INPUT_NOT_AVAILABLE = 1201,
914 ERR_ADM_IOS_ACTIVATE_SESSION_FAIL = 1206,
919 ERR_ADM_IOS_VPIO_INIT_FAIL = 1210,
924 ERR_ADM_IOS_VPIO_REINIT_FAIL = 1213,
929 ERR_ADM_IOS_VPIO_RESTART_FAIL = 1214,
930 ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219,
932 ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO = 1221,
940 ERR_ADM_WIN_CORE_INIT = 1301,
947 ERR_ADM_WIN_CORE_INIT_RECORDING = 1303,
954 ERR_ADM_WIN_CORE_INIT_PLAYOUT = 1306,
960 ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL = 1307,
967 ERR_ADM_WIN_CORE_START_RECORDING = 1309,
974 ERR_ADM_WIN_CORE_CREATE_REC_THREAD = 1311,
983 ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP = 1314,
990 ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD = 1319,
999 ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP = 1320,
1005 ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
1011 ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
1021 ERR_ADM_WIN_WAVE_INIT = 1351,
1030 ERR_ADM_WIN_WAVE_INIT_RECORDING = 1353,
1039 ERR_ADM_WIN_WAVE_INIT_MICROPHONE = 1354,
1048 ERR_ADM_WIN_WAVE_INIT_PLAYOUT = 1355,
1057 ERR_ADM_WIN_WAVE_INIT_SPEAKER = 1356,
1066 ERR_ADM_WIN_WAVE_START_RECORDING = 1357,
1075 ERR_ADM_WIN_WAVE_START_PLAYOUT = 1358,
1079 ERR_ADM_NO_RECORDING_DEVICE = 1359,
1083 ERR_ADM_NO_PLAYOUT_DEVICE = 1360,
1089 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
1095 ERR_VDM_WIN_DEVICE_IN_USE = 1502,
1101 ERR_VCM_UNKNOWN_ERROR = 1600,
1106 ERR_VCM_ENCODER_INIT_ERROR = 1601,
1110 ERR_VCM_ENCODER_ENCODE_ERROR = 1602,
1114 ERR_VCM_ENCODER_SET_ERROR = 1603,
1117 typedef const char* user_id_t;
1118 typedef void* view_t;
1144 typedef util::AList<UserInfo> UserList;
1152 enum USER_OFFLINE_REASON_TYPE {
1156 USER_OFFLINE_QUIT = 0,
1162 USER_OFFLINE_DROPPED = 1,
1166 USER_OFFLINE_BECOME_AUDIENCE = 2,
1169 enum INTERFACE_ID_TYPE {
1170 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
1171 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
1172 AGORA_IID_PARAMETER_ENGINE = 3,
1173 AGORA_IID_MEDIA_ENGINE = 4,
1174 AGORA_IID_AUDIO_ENGINE = 5,
1175 AGORA_IID_VIDEO_ENGINE = 6,
1176 AGORA_IID_RTC_CONNECTION = 7,
1177 AGORA_IID_SIGNALING_ENGINE = 8,
1178 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
1189 QUALITY_UNKNOWN = 0,
1193 QUALITY_EXCELLENT = 1,
1218 QUALITY_UNSUPPORTED = 7,
1228 enum FIT_MODE_TYPE {
1246 enum VIDEO_ORIENTATION {
1250 VIDEO_ORIENTATION_0 = 0,
1254 VIDEO_ORIENTATION_90 = 90,
1258 VIDEO_ORIENTATION_180 = 180,
1262 VIDEO_ORIENTATION_270 = 270
1272 FRAME_RATE_FPS_1 = 1,
1276 FRAME_RATE_FPS_7 = 7,
1280 FRAME_RATE_FPS_10 = 10,
1284 FRAME_RATE_FPS_15 = 15,
1288 FRAME_RATE_FPS_24 = 24,
1292 FRAME_RATE_FPS_30 = 30,
1296 FRAME_RATE_FPS_60 = 60,
1300 FRAME_WIDTH_640 = 640,
1304 FRAME_HEIGHT_360 = 360,
1311 enum VIDEO_FRAME_TYPE {
1313 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1315 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1317 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1319 VIDEO_FRAME_TYPE_B_FRAME = 5,
1321 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1323 VIDEO_FRAME_TYPE_UNKNOW
1329 enum ORIENTATION_MODE {
1337 ORIENTATION_MODE_ADAPTIVE = 0,
1345 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1353 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1359 enum DEGRADATION_PREFERENCE {
1363 MAINTAIN_QUALITY = 0,
1367 MAINTAIN_FRAMERATE = 1,
1371 MAINTAIN_BALANCED = 2,
1375 MAINTAIN_RESOLUTION = 3,
1392 bool operator==(
const VideoDimensions& rhs)
const {
1393 return width == rhs.width &&
height == rhs.height;
1406 const int STANDARD_BITRATE = 0;
1415 const int COMPATIBLE_BITRATE = -1;
1420 const int DEFAULT_MIN_BITRATE = -1;
1425 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1430 enum VIDEO_CODEC_TYPE {
1434 VIDEO_CODEC_VP8 = 1,
1438 VIDEO_CODEC_H264 = 2,
1442 VIDEO_CODEC_H265 = 3,
1446 VIDEO_CODEC_VP9 = 5,
1450 VIDEO_CODEC_GENERIC = 6,
1454 VIDEO_CODEC_GENERIC_H264 = 7,
1458 VIDEO_CODEC_GENERIC_JPEG = 20,
1464 enum AUDIO_CODEC_TYPE {
1468 AUDIO_CODEC_OPUS = 1,
1473 AUDIO_CODEC_PCMA = 3,
1477 AUDIO_CODEC_PCMU = 4,
1481 AUDIO_CODEC_G722 = 5,
1488 AUDIO_CODEC_AACLC = 8,
1492 AUDIO_CODEC_HEAAC = 9,
1496 AUDIO_CODEC_JC1 = 10,
1497 AUDIO_CODEC_HEAAC2 = 11,
1503 enum AUDIO_ENCODING_TYPE {
1507 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1511 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1515 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1519 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1523 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1527 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1531 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1536 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1540 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1544 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1548 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1554 enum WATERMARK_FIT_MODE {
1559 FIT_MODE_COVER_POSITION,
1564 FIT_MODE_USE_IMAGE_RATIO
1595 :
codec(AUDIO_CODEC_AACLC),
1663 enum H264PacketizeMode {
1677 enum VIDEO_STREAM_TYPE {
1681 VIDEO_STREAM_HIGH = 0,
1685 VIDEO_STREAM_LOW = 1,
1697 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1770 enum VIDEO_MIRROR_MODE_TYPE {
1774 VIDEO_MIRROR_MODE_AUTO = 0,
1778 VIDEO_MIRROR_MODE_ENABLED = 1,
1782 VIDEO_MIRROR_MODE_DISABLED = 2,
1897 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1906 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
1915 VideoEncoderConfiguration()
1917 dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360),
2033 ,
mode(FIT_MODE_COVER_POSITION)
2222 enum VIDEO_SOURCE_TYPE {
2225 VIDEO_SOURCE_CAMERA_PRIMARY,
2226 VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
2229 VIDEO_SOURCE_CAMERA_SECONDARY,
2232 VIDEO_SOURCE_SCREEN_PRIMARY,
2233 VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
2236 VIDEO_SOURCE_SCREEN_SECONDARY,
2239 VIDEO_SOURCE_CUSTOM,
2242 VIDEO_SOURCE_MEDIA_PLAYER,
2245 VIDEO_SOURCE_RTC_IMAGE_PNG,
2248 VIDEO_SOURCE_RTC_IMAGE_JPEG,
2251 VIDEO_SOURCE_RTC_IMAGE_GIF,
2254 VIDEO_SOURCE_REMOTE,
2257 VIDEO_SOURCE_TRANSCODED,
2259 VIDEO_SOURCE_UNKNOWN = 100
2265 enum CLIENT_ROLE_TYPE {
2269 CLIENT_ROLE_BROADCASTER = 1,
2273 CLIENT_ROLE_AUDIENCE = 2,
2361 enum AUDIO_PROFILE_TYPE {
2369 AUDIO_PROFILE_DEFAULT = 0,
2373 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2377 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2382 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2386 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2390 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2394 AUDIO_PROFILE_IOT = 6,
2395 AUDIO_PROFILE_NUM = 7
2401 enum AUDIO_SCENARIO_TYPE {
2405 AUDIO_SCENARIO_DEFAULT = 0,
2411 AUDIO_SCENARIO_GAME_STREAMING = 3,
2417 AUDIO_SCENARIO_CHATROOM = 5,
2421 AUDIO_SCENARIO_HIGH_DEFINITION = 6,
2425 AUDIO_SCENARIO_CHORUS = 7,
2429 AUDIO_SCENARIO_NUM = 8,
2436 OPTIONAL_ENUM_SIZE_T {
2438 kMaxWidthInPixels = 3840,
2440 kMaxHeightInPixels = 2160,
2464 enum VIDEO_CONTENT_HINT {
2475 CONTENT_HINT_MOTION,
2481 CONTENT_HINT_DETAILS
2487 enum LOCAL_AUDIO_STREAM_STATE {
2491 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2495 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2499 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2503 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2509 enum LOCAL_AUDIO_STREAM_ERROR {
2513 LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2517 LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2521 LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2525 LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2530 LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2534 LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
2539 enum LOCAL_VIDEO_STREAM_STATE {
2543 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2547 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2551 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2555 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2561 enum LOCAL_VIDEO_STREAM_ERROR {
2563 LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2565 LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2567 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2569 LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2571 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2573 LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2575 LOCAL_VIDEO_STREAM_ERROR_BACKGROUD = 6,
2577 LOCAL_VIDEO_STREAM_ERROR_MULTIPLE_FOREGROUND_APPS = 7,
2579 LOCAL_VIDEO_STREAM_ERROR_SYSTEM_PRESSURE = 8
2585 enum REMOTE_AUDIO_STATE
2593 REMOTE_AUDIO_STATE_STOPPED = 0,
2597 REMOTE_AUDIO_STATE_STARTING = 1,
2604 REMOTE_AUDIO_STATE_DECODING = 2,
2609 REMOTE_AUDIO_STATE_FROZEN = 3,
2614 REMOTE_AUDIO_STATE_FAILED = 4,
2620 enum REMOTE_AUDIO_STATE_REASON
2625 REMOTE_AUDIO_REASON_INTERNAL = 0,
2629 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2633 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2638 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2643 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2648 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2653 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2657 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2661 enum REMOTE_VIDEO_STATE {
2667 REMOTE_VIDEO_STATE_STOPPED = 0,
2670 REMOTE_VIDEO_STATE_STARTING = 1,
2677 REMOTE_VIDEO_STATE_DECODING = 2,
2682 REMOTE_VIDEO_STATE_FROZEN = 3,
2686 REMOTE_VIDEO_STATE_FAILED = 4,
2689 enum REMOTE_VIDEO_STATE_REASON {
2693 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2698 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2703 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2708 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2713 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2718 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2723 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2728 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2733 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2738 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9
2792 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
2796 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
2800 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
2804 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
2808 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
2812 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
2909 enum AUDIO_SAMPLE_RATE_TYPE {
2913 AUDIO_SAMPLE_RATE_32000 = 32000,
2917 AUDIO_SAMPLE_RATE_44100 = 44100,
2921 AUDIO_SAMPLE_RATE_48000 = 48000,
2926 enum VIDEO_CODEC_PROFILE_TYPE {
2930 VIDEO_CODEC_PROFILE_BASELINE = 66,
2934 VIDEO_CODEC_PROFILE_MAIN = 77,
2938 VIDEO_CODEC_PROFILE_HIGH = 100,
2944 enum AUDIO_CODEC_PROFILE_TYPE {
2948 AUDIO_CODEC_PROFILE_LC_AAC = 0,
2952 AUDIO_CODEC_PROFILE_HE_AAC = 1,
2983 enum RTMP_STREAM_PUBLISH_STATE {
2990 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
2996 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3001 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3011 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3016 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3022 enum RTMP_STREAM_PUBLISH_ERROR {
3026 RTMP_STREAM_PUBLISH_ERROR_FAILED = -1,
3030 RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3036 RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3040 RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3045 RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3050 RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3054 RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3058 RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3062 RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3066 RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3070 RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3074 RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3079 RTMP_STREAM_PUBLISH_ERROR_CDN_ERROR = 11,
3083 RTMP_STREAM_PUBLISH_ERROR_ALREADY_IN_USE = 12,
3122 enum CONNECTION_STATE_TYPE
3127 CONNECTION_STATE_DISCONNECTED = 1,
3131 CONNECTION_STATE_CONNECTING = 2,
3136 CONNECTION_STATE_CONNECTED = 3,
3141 CONNECTION_STATE_RECONNECTING = 4,
3145 CONNECTION_STATE_FAILED = 5,
3469 enum LASTMILE_PROBE_RESULT_STATE {
3473 LASTMILE_PROBE_RESULT_COMPLETE = 1,
3478 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3483 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3538 enum CONNECTION_CHANGED_REASON_TYPE
3543 CONNECTION_CHANGED_CONNECTING = 0,
3547 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3551 CONNECTION_CHANGED_INTERRUPTED = 2,
3555 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3559 CONNECTION_CHANGED_JOIN_FAILED = 4,
3563 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3567 CONNECTION_CHANGED_INVALID_APP_ID = 6,
3571 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3575 CONNECTION_CHANGED_INVALID_TOKEN = 8,
3579 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3583 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3587 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3591 CONNECTION_CHANGED_RENEW_TOKEN = 12,
3596 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3600 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3604 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3608 CONNECTION_CHANGED_LOST = 16,
3612 CONNECTION_CHANGED_ECHO_TEST = 17,
3616 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
3626 NETWORK_TYPE_UNKNOWN = -1,
3630 NETWORK_TYPE_DISCONNECTED = 0,
3634 NETWORK_TYPE_LAN = 1,
3638 NETWORK_TYPE_WIFI = 2,
3642 NETWORK_TYPE_MOBILE_2G = 3,
3646 NETWORK_TYPE_MOBILE_3G = 4,
3650 NETWORK_TYPE_MOBILE_4G = 5,
3679 VIDEO_SOURCE_TYPE sourceType;
3682 uid(0), isScreenView(false), priv(NULL), priv_size(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3683 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
3685 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3686 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
3688 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3710 enum VOICE_BEAUTIFIER_PRESET {
3713 VOICE_BEAUTIFIER_OFF = 0x00000000,
3719 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
3725 CHAT_BEAUTIFIER_FRESH = 0x01010200,
3731 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
3745 SINGING_BEAUTIFIER = 0x01020100,
3748 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
3751 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
3754 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
3757 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
3760 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
3763 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
3766 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
3769 TIMBRE_TRANSFORMATION_RINGING = 0x01030800
3774 enum AUDIO_EFFECT_PRESET {
3777 AUDIO_EFFECT_OFF = 0x00000000,
3785 ROOM_ACOUSTICS_KTV = 0x02010100,
3793 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
3801 ROOM_ACOUSTICS_STUDIO = 0x02010300,
3809 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
3816 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
3824 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
3832 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
3844 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
3855 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
3866 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
3877 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
3888 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
3899 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
3908 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
3916 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
3924 STYLE_TRANSFORMATION_RNB = 0x02030100,
3932 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
3942 PITCH_CORRECTION = 0x02040100
3951 enum VOICE_CONVERSION_PRESET {
3954 VOICE_CONVERSION_OFF = 0x00000000,
3957 VOICE_CHANGER_NEUTRAL = 0x03010100,
3960 VOICE_CHANGER_SWEET = 0x03010200,
3963 VOICE_CHANGER_SOLID = 0x03010300,
3966 VOICE_CHANGER_BASS = 0x03010400
3970 enum AUDIO_REVERB_PRESET {
3974 AUDIO_REVERB_OFF = 0,
3978 AUDIO_REVERB_FX_KTV = 0x02010100,
3982 AUDIO_REVERB_FX_VOCAL_CONCERT = 0x02010200,
3986 AUDIO_REVERB_FX_UNCLE = 0x02020100,
3990 AUDIO_REVERB_FX_SISTER = 0x02020400,
3994 AUDIO_REVERB_FX_STUDIO = 0x02010300,
3998 AUDIO_REVERB_FX_POPULAR = 0x02030200,
4002 AUDIO_REVERB_FX_RNB = 0x02030100,
4006 AUDIO_REVERB_FX_PHONOGRAPH = 0x02010400
4052 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
4054 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
4056 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t *ex,
int cnt)
4058 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t *ex,
int cnt)
4065 enum AUDIO_RECORDING_QUALITY_TYPE {
4069 AUDIO_RECORDING_QUALITY_LOW = 0,
4073 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4077 AUDIO_RECORDING_QUALITY_HIGH = 2,
4083 enum AUDIO_FILE_RECORDING_TYPE {
4087 AUDIO_FILE_RECORDING_MIC = 1,
4091 AUDIO_FILE_RECORDING_PLAYBACK = 2,
4095 AUDIO_FILE_RECORDING_MIXED = 3,
4101 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4105 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4109 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4113 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4150 quality(AUDIO_RECORDING_QUALITY_LOW) {}
4159 AudioFileRecordingConfig(
const char* file_path,
bool enc,
int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4166 AudioFileRecordingConfig(
const AudioFileRecordingConfig &rhs)
4189 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4229 enum VOICE_CHANGER_PRESET {
4233 VOICE_CHANGER_OFF = 0,
4237 VOICE_CHANGER_OLDMAN = 0x02020200,
4241 VOICE_CHANGER_BABYBOY = 0x02020300,
4245 VOICE_CHANGER_BABYGIRL = 0x02020500,
4250 VOICE_CHANGER_ZHUBAJIE = 0x02020600,
4254 VOICE_CHANGER_ETHEREAL = 0x02010700,
4258 VOICE_CHANGER_HULK = 0x02020700,
4262 VOICE_BEAUTY_VIGOROUS = 0x01030100,
4266 VOICE_BEAUTY_DEEP = 0x01030200,
4270 VOICE_BEAUTY_MELLOW = 0x01030300,
4274 VOICE_BEAUTY_FALSETTO = 0x01030400,
4278 VOICE_BEAUTY_FULL = 0x01030500,
4282 VOICE_BEAUTY_CLEAR = 0x01030600,
4286 VOICE_BEAUTY_RESOUNDING = 0x01030700,
4290 VOICE_BEAUTY_RINGING = 0x01030800,
4294 VOICE_BEAUTY_SPACIAL = 0x02010600,
4299 GENERAL_BEAUTY_VOICE_MALE = 0x01010100,
4304 GENERAL_BEAUTY_VOICE_FEMALE_FRESH = 0x01010200,
4309 GENERAL_BEAUTY_VOICE_FEMALE_VITALITY = 0x01010300
4317 AREA_CODE_CN = 0x00000001,
4321 AREA_CODE_NA = 0x00000002,
4325 AREA_CODE_EU = 0x00000004,
4329 AREA_CODE_AS = 0x00000008,
4333 AREA_CODE_JP = 0x00000010,
4337 AREA_CODE_IN = 0x00000020,
4341 AREA_CODE_GLOB = (0xFFFFFFFF)
4348 AREA_CODE_OC = 0x00000040,
4352 AREA_CODE_SA = 0x00000080,
4356 AREA_CODE_AF = 0x00000100,
4360 AREA_CODE_OVS = 0xFFFFFFFE
4363 enum CHANNEL_MEDIA_RELAY_ERROR {
4369 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
4374 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
4378 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
4381 RELAY_ERROR_FAILED_JOIN_SRC = 4,
4384 RELAY_ERROR_FAILED_JOIN_DEST = 5,
4387 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
4390 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
4395 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
4398 RELAY_ERROR_INTERNAL_ERROR = 9,
4401 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
4404 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
4408 enum CHANNEL_MEDIA_RELAY_EVENT {
4412 RELAY_EVENT_NETWORK_DISCONNECTED = 0,
4415 RELAY_EVENT_NETWORK_CONNECTED = 1,
4418 RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
4421 RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
4424 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
4427 RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
4430 RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4433 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4436 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4440 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4443 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4446 RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4449 enum CHANNEL_MEDIA_RELAY_STATE {
4452 RELAY_STATE_IDLE = 0,
4455 RELAY_STATE_CONNECTING = 1,
4459 RELAY_STATE_RUNNING = 2,
4462 RELAY_STATE_FAILURE = 3,
4556 :
uid(OPTIONAL_NULLPTR),
4562 if (
this == &rhs)
return *
this;
4563 uid = OPTIONAL_NULLPTR;
4567 if (rhs.
uid != OPTIONAL_NULLPTR) {
4568 char* temp =
new char[strlen(rhs.
uid) + 1];
4569 strcpy(temp, rhs.
uid);
4575 ~PeerDownlinkInfo() {
4620 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
4621 if (
this == &rhs)
return *
this;
4635 ~DownlinkNetworkInfo() {
4642 enum ENCRYPTION_MODE {
4669 uint8_t encryptionKdfSalt[32];
4675 memset(encryptionKdfSalt, 0,
sizeof(encryptionKdfSalt));
4679 const char* getEncryptionString()
const {
4682 return "sm4-128-ecb";
4684 return "aes-128-gcm";
4686 return "aes-256-gcm";
4688 return "aes-128-gcm";
4690 return "aes-128-gcm";
4697 enum ENCRYPTION_ERROR_TYPE {
4698 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
4699 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
4700 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
4705 enum PERMISSION_TYPE {
4712 enum MAX_USER_ACCOUNT_LENGTH_TYPE
4716 MAX_USER_ACCOUNT_LENGTH = 256
4722 enum STREAM_SUBSCRIBE_STATE {
4724 SUB_STATE_NO_SUBSCRIBED = 1,
4725 SUB_STATE_SUBSCRIBING = 2,
4726 SUB_STATE_SUBSCRIBED = 3
4732 enum STREAM_PUBLISH_STATE {
4734 PUB_STATE_NO_PUBLISHED = 1,
4735 PUB_STATE_PUBLISHING = 2,
4736 PUB_STATE_PUBLISHED = 3
4760 enum EAR_MONITORING_FILTER_TYPE {
4764 EAR_MONITORING_FILTER_NONE = (1<<0),
4768 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
4772 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
4781 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
4794 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
4802 virtual void onCertificateRequired() = 0;
4803 virtual void onLicenseRequest() = 0;
4804 virtual void onLicenseValidated() = 0;
4805 virtual void onLicenseError(
int result) = 0;
4817 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
4824 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
4826 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
4850 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char *credential_buf,
int credential_len,
4851 const char *certificate_buf,
int certificate_len);