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),
1780 enum VIDEO_MIRROR_MODE_TYPE {
1784 VIDEO_MIRROR_MODE_AUTO = 0,
1788 VIDEO_MIRROR_MODE_ENABLED = 1,
1792 VIDEO_MIRROR_MODE_DISABLED = 2,
1907 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1916 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
1925 VideoEncoderConfiguration()
1927 dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360),
2043 ,
mode(FIT_MODE_COVER_POSITION)
2227 enum VIDEO_SOURCE_TYPE {
2230 VIDEO_SOURCE_CAMERA_PRIMARY,
2231 VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
2234 VIDEO_SOURCE_CAMERA_SECONDARY,
2237 VIDEO_SOURCE_SCREEN_PRIMARY,
2238 VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
2241 VIDEO_SOURCE_SCREEN_SECONDARY,
2244 VIDEO_SOURCE_CUSTOM,
2247 VIDEO_SOURCE_MEDIA_PLAYER,
2250 VIDEO_SOURCE_RTC_IMAGE_PNG,
2253 VIDEO_SOURCE_RTC_IMAGE_JPEG,
2256 VIDEO_SOURCE_RTC_IMAGE_GIF,
2259 VIDEO_SOURCE_REMOTE,
2262 VIDEO_SOURCE_TRANSCODED,
2264 VIDEO_SOURCE_UNKNOWN = 100
2270 enum CLIENT_ROLE_TYPE {
2274 CLIENT_ROLE_BROADCASTER = 1,
2278 CLIENT_ROLE_AUDIENCE = 2,
2366 enum AUDIO_PROFILE_TYPE {
2374 AUDIO_PROFILE_DEFAULT = 0,
2378 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2382 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2387 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2391 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2395 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2399 AUDIO_PROFILE_IOT = 6,
2400 AUDIO_PROFILE_NUM = 7
2406 enum AUDIO_SCENARIO_TYPE {
2410 AUDIO_SCENARIO_DEFAULT = 0,
2416 AUDIO_SCENARIO_GAME_STREAMING = 3,
2422 AUDIO_SCENARIO_CHATROOM = 5,
2426 AUDIO_SCENARIO_HIGH_DEFINITION = 6,
2430 AUDIO_SCENARIO_CHORUS = 7,
2434 AUDIO_SCENARIO_NUM = 8,
2441 OPTIONAL_ENUM_SIZE_T {
2443 kMaxWidthInPixels = 3840,
2445 kMaxHeightInPixels = 2160,
2469 enum VIDEO_CONTENT_HINT {
2480 CONTENT_HINT_MOTION,
2486 CONTENT_HINT_DETAILS
2492 enum LOCAL_AUDIO_STREAM_STATE {
2496 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2500 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2504 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2508 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2514 enum LOCAL_AUDIO_STREAM_ERROR {
2518 LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2522 LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2526 LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2530 LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2535 LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2539 LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
2544 enum LOCAL_VIDEO_STREAM_STATE {
2548 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2552 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2556 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2560 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2566 enum LOCAL_VIDEO_STREAM_ERROR {
2568 LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2570 LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2572 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2574 LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2576 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2578 LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2580 LOCAL_VIDEO_STREAM_ERROR_BACKGROUD = 6,
2582 LOCAL_VIDEO_STREAM_ERROR_MULTIPLE_FOREGROUND_APPS = 7,
2584 LOCAL_VIDEO_STREAM_ERROR_SYSTEM_PRESSURE = 8
2590 enum REMOTE_AUDIO_STATE
2598 REMOTE_AUDIO_STATE_STOPPED = 0,
2602 REMOTE_AUDIO_STATE_STARTING = 1,
2609 REMOTE_AUDIO_STATE_DECODING = 2,
2614 REMOTE_AUDIO_STATE_FROZEN = 3,
2619 REMOTE_AUDIO_STATE_FAILED = 4,
2625 enum REMOTE_AUDIO_STATE_REASON
2630 REMOTE_AUDIO_REASON_INTERNAL = 0,
2634 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2638 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2643 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2648 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2653 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2658 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2662 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2666 enum REMOTE_VIDEO_STATE {
2672 REMOTE_VIDEO_STATE_STOPPED = 0,
2675 REMOTE_VIDEO_STATE_STARTING = 1,
2682 REMOTE_VIDEO_STATE_DECODING = 2,
2687 REMOTE_VIDEO_STATE_FROZEN = 3,
2691 REMOTE_VIDEO_STATE_FAILED = 4,
2694 enum REMOTE_VIDEO_STATE_REASON {
2698 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2703 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2708 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2713 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2718 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2723 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2728 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2733 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2738 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2743 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
2748 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
2752 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
2807 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
2811 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
2815 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
2819 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
2823 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
2827 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
2924 enum AUDIO_SAMPLE_RATE_TYPE {
2928 AUDIO_SAMPLE_RATE_32000 = 32000,
2932 AUDIO_SAMPLE_RATE_44100 = 44100,
2936 AUDIO_SAMPLE_RATE_48000 = 48000,
2941 enum VIDEO_CODEC_PROFILE_TYPE {
2945 VIDEO_CODEC_PROFILE_BASELINE = 66,
2949 VIDEO_CODEC_PROFILE_MAIN = 77,
2953 VIDEO_CODEC_PROFILE_HIGH = 100,
2959 enum AUDIO_CODEC_PROFILE_TYPE {
2963 AUDIO_CODEC_PROFILE_LC_AAC = 0,
2967 AUDIO_CODEC_PROFILE_HE_AAC = 1,
2998 enum RTMP_STREAM_PUBLISH_STATE {
3005 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3011 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3016 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3026 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3031 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3037 enum RTMP_STREAM_PUBLISH_ERROR {
3041 RTMP_STREAM_PUBLISH_ERROR_FAILED = -1,
3045 RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3051 RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3055 RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3060 RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3065 RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3069 RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3073 RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3077 RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3081 RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3085 RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3089 RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3094 RTMP_STREAM_PUBLISH_ERROR_CDN_ERROR = 11,
3098 RTMP_STREAM_PUBLISH_ERROR_ALREADY_IN_USE = 12,
3137 enum CONNECTION_STATE_TYPE
3142 CONNECTION_STATE_DISCONNECTED = 1,
3146 CONNECTION_STATE_CONNECTING = 2,
3151 CONNECTION_STATE_CONNECTED = 3,
3156 CONNECTION_STATE_RECONNECTING = 4,
3160 CONNECTION_STATE_FAILED = 5,
3478 enum LASTMILE_PROBE_RESULT_STATE {
3482 LASTMILE_PROBE_RESULT_COMPLETE = 1,
3487 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3492 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3547 enum CONNECTION_CHANGED_REASON_TYPE
3552 CONNECTION_CHANGED_CONNECTING = 0,
3556 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3560 CONNECTION_CHANGED_INTERRUPTED = 2,
3564 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3568 CONNECTION_CHANGED_JOIN_FAILED = 4,
3572 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3576 CONNECTION_CHANGED_INVALID_APP_ID = 6,
3580 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3584 CONNECTION_CHANGED_INVALID_TOKEN = 8,
3588 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3592 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3596 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3600 CONNECTION_CHANGED_RENEW_TOKEN = 12,
3605 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3609 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3613 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3617 CONNECTION_CHANGED_LOST = 16,
3621 CONNECTION_CHANGED_ECHO_TEST = 17,
3625 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
3635 NETWORK_TYPE_UNKNOWN = -1,
3639 NETWORK_TYPE_DISCONNECTED = 0,
3643 NETWORK_TYPE_LAN = 1,
3647 NETWORK_TYPE_WIFI = 2,
3651 NETWORK_TYPE_MOBILE_2G = 3,
3655 NETWORK_TYPE_MOBILE_3G = 4,
3659 NETWORK_TYPE_MOBILE_4G = 5,
3688 VIDEO_SOURCE_TYPE sourceType;
3691 uid(0), isScreenView(false), priv(NULL), priv_size(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3692 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
3694 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3695 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
3697 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3758 enum VOICE_BEAUTIFIER_PRESET {
3761 VOICE_BEAUTIFIER_OFF = 0x00000000,
3767 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
3773 CHAT_BEAUTIFIER_FRESH = 0x01010200,
3779 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
3793 SINGING_BEAUTIFIER = 0x01020100,
3796 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
3799 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
3802 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
3805 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
3808 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
3811 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
3814 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
3817 TIMBRE_TRANSFORMATION_RINGING = 0x01030800
3822 enum AUDIO_EFFECT_PRESET {
3825 AUDIO_EFFECT_OFF = 0x00000000,
3833 ROOM_ACOUSTICS_KTV = 0x02010100,
3841 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
3849 ROOM_ACOUSTICS_STUDIO = 0x02010300,
3857 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
3864 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
3872 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
3880 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
3892 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
3903 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
3914 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
3925 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
3936 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
3947 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
3956 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
3964 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
3972 STYLE_TRANSFORMATION_RNB = 0x02030100,
3980 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
3990 PITCH_CORRECTION = 0x02040100
3999 enum VOICE_CONVERSION_PRESET {
4002 VOICE_CONVERSION_OFF = 0x00000000,
4005 VOICE_CHANGER_NEUTRAL = 0x03010100,
4008 VOICE_CHANGER_SWEET = 0x03010200,
4011 VOICE_CHANGER_SOLID = 0x03010300,
4014 VOICE_CHANGER_BASS = 0x03010400
4018 enum AUDIO_REVERB_PRESET {
4022 AUDIO_REVERB_OFF = 0,
4026 AUDIO_REVERB_FX_KTV = 0x02010100,
4030 AUDIO_REVERB_FX_VOCAL_CONCERT = 0x02010200,
4034 AUDIO_REVERB_FX_UNCLE = 0x02020100,
4038 AUDIO_REVERB_FX_SISTER = 0x02020400,
4042 AUDIO_REVERB_FX_STUDIO = 0x02010300,
4046 AUDIO_REVERB_FX_POPULAR = 0x02030200,
4050 AUDIO_REVERB_FX_RNB = 0x02030100,
4054 AUDIO_REVERB_FX_PHONOGRAPH = 0x02010400
4100 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
4102 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
4104 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t *ex,
int cnt)
4106 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t *ex,
int cnt)
4113 enum AUDIO_RECORDING_QUALITY_TYPE {
4117 AUDIO_RECORDING_QUALITY_LOW = 0,
4121 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4125 AUDIO_RECORDING_QUALITY_HIGH = 2,
4131 enum AUDIO_FILE_RECORDING_TYPE {
4135 AUDIO_FILE_RECORDING_MIC = 1,
4139 AUDIO_FILE_RECORDING_PLAYBACK = 2,
4143 AUDIO_FILE_RECORDING_MIXED = 3,
4149 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4153 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4157 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4161 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4198 quality(AUDIO_RECORDING_QUALITY_LOW) {}
4207 AudioFileRecordingConfig(
const char* file_path,
bool enc,
int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4214 AudioFileRecordingConfig(
const AudioFileRecordingConfig &rhs)
4237 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4277 enum VOICE_CHANGER_PRESET {
4281 VOICE_CHANGER_OFF = 0,
4285 VOICE_CHANGER_OLDMAN = 0x02020200,
4289 VOICE_CHANGER_BABYBOY = 0x02020300,
4293 VOICE_CHANGER_BABYGIRL = 0x02020500,
4298 VOICE_CHANGER_ZHUBAJIE = 0x02020600,
4302 VOICE_CHANGER_ETHEREAL = 0x02010700,
4306 VOICE_CHANGER_HULK = 0x02020700,
4310 VOICE_BEAUTY_VIGOROUS = 0x01030100,
4314 VOICE_BEAUTY_DEEP = 0x01030200,
4318 VOICE_BEAUTY_MELLOW = 0x01030300,
4322 VOICE_BEAUTY_FALSETTO = 0x01030400,
4326 VOICE_BEAUTY_FULL = 0x01030500,
4330 VOICE_BEAUTY_CLEAR = 0x01030600,
4334 VOICE_BEAUTY_RESOUNDING = 0x01030700,
4338 VOICE_BEAUTY_RINGING = 0x01030800,
4342 VOICE_BEAUTY_SPACIAL = 0x02010600,
4347 GENERAL_BEAUTY_VOICE_MALE = 0x01010100,
4352 GENERAL_BEAUTY_VOICE_FEMALE_FRESH = 0x01010200,
4357 GENERAL_BEAUTY_VOICE_FEMALE_VITALITY = 0x01010300
4365 AREA_CODE_CN = 0x00000001,
4369 AREA_CODE_NA = 0x00000002,
4373 AREA_CODE_EU = 0x00000004,
4377 AREA_CODE_AS = 0x00000008,
4381 AREA_CODE_JP = 0x00000010,
4385 AREA_CODE_IN = 0x00000020,
4389 AREA_CODE_GLOB = (0xFFFFFFFF)
4396 AREA_CODE_OC = 0x00000040,
4400 AREA_CODE_SA = 0x00000080,
4404 AREA_CODE_AF = 0x00000100,
4408 AREA_CODE_OVS = 0xFFFFFFFE
4411 enum CHANNEL_MEDIA_RELAY_ERROR {
4417 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
4422 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
4426 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
4429 RELAY_ERROR_FAILED_JOIN_SRC = 4,
4432 RELAY_ERROR_FAILED_JOIN_DEST = 5,
4435 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
4438 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
4443 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
4446 RELAY_ERROR_INTERNAL_ERROR = 9,
4449 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
4452 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
4456 enum CHANNEL_MEDIA_RELAY_EVENT {
4460 RELAY_EVENT_NETWORK_DISCONNECTED = 0,
4463 RELAY_EVENT_NETWORK_CONNECTED = 1,
4466 RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
4469 RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
4472 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
4475 RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
4478 RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4481 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4484 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4488 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4491 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4494 RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4497 enum CHANNEL_MEDIA_RELAY_STATE {
4500 RELAY_STATE_IDLE = 0,
4503 RELAY_STATE_CONNECTING = 1,
4507 RELAY_STATE_RUNNING = 2,
4510 RELAY_STATE_FAILURE = 3,
4604 :
uid(OPTIONAL_NULLPTR),
4610 if (
this == &rhs)
return *
this;
4611 uid = OPTIONAL_NULLPTR;
4615 if (rhs.
uid != OPTIONAL_NULLPTR) {
4616 char* temp =
new char[strlen(rhs.
uid) + 1];
4617 strcpy(temp, rhs.
uid);
4623 ~PeerDownlinkInfo() {
4668 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
4669 if (
this == &rhs)
return *
this;
4683 ~DownlinkNetworkInfo() {
4690 enum ENCRYPTION_MODE {
4717 uint8_t encryptionKdfSalt[32];
4723 memset(encryptionKdfSalt, 0,
sizeof(encryptionKdfSalt));
4727 const char* getEncryptionString()
const {
4730 return "sm4-128-ecb";
4732 return "aes-128-gcm";
4734 return "aes-256-gcm";
4736 return "aes-128-gcm";
4738 return "aes-128-gcm";
4745 enum ENCRYPTION_ERROR_TYPE {
4746 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
4747 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
4748 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
4753 enum PERMISSION_TYPE {
4760 enum MAX_USER_ACCOUNT_LENGTH_TYPE
4764 MAX_USER_ACCOUNT_LENGTH = 256
4770 enum STREAM_SUBSCRIBE_STATE {
4772 SUB_STATE_NO_SUBSCRIBED = 1,
4773 SUB_STATE_SUBSCRIBING = 2,
4774 SUB_STATE_SUBSCRIBED = 3
4780 enum STREAM_PUBLISH_STATE {
4782 PUB_STATE_NO_PUBLISHED = 1,
4783 PUB_STATE_PUBLISHING = 2,
4784 PUB_STATE_PUBLISHED = 3
4808 enum EAR_MONITORING_FILTER_TYPE {
4812 EAR_MONITORING_FILTER_NONE = (1<<0),
4816 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
4820 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
4829 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
4842 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
4850 virtual void onCertificateRequired() = 0;
4851 virtual void onLicenseRequest() = 0;
4852 virtual void onLicenseValidated() = 0;
4853 virtual void onLicenseError(
int result) = 0;
4865 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
4872 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
4874 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
4898 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char *credential_buf,
int credential_len,
4899 const char *certificate_buf,
int certificate_len);