9 #pragma once // NOLINT(build/header_guard)
17 #include "IAgoraParameter.h"
18 #include "AgoraMediaBase.h"
19 #include "AgoraRefPtr.h"
20 #include "AgoraOptional.h"
22 #define MAX_PATH_260 (260)
26 #ifndef WIN32_LEAN_AND_MEAN
27 #define WIN32_LEAN_AND_MEAN
28 #endif // !WIN32_LEAN_AND_MEAN
29 #if defined(__aarch64__)
30 #include <arm64intr.h>
34 #if defined(AGORARTC_EXPORT)
35 #define AGORA_API extern "C" __declspec(dllexport)
37 #define AGORA_API extern "C" __declspec(dllimport)
38 #endif // AGORARTC_EXPORT
40 #define AGORA_CALL __cdecl
44 #elif defined(__APPLE__)
46 #include <TargetConditionals.h>
48 #define AGORA_API extern "C" __attribute__((visibility("default")))
51 #elif defined(__ANDROID__) || defined(__linux__)
53 #define AGORA_API extern "C" __attribute__((visibility("default")))
58 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
60 #define AGORA_API extern "C"
67 #ifndef OPTIONAL_ENUM_SIZE_T
68 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
69 #define OPTIONAL_ENUM_SIZE_T enum : size_t
71 #define OPTIONAL_ENUM_SIZE_T enum
75 #ifndef OPTIONAL_NULLPTR
76 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
77 #define OPTIONAL_NULLPTR nullptr
79 #define OPTIONAL_NULLPTR NULL
90 typedef commons::cjson::JsonWrapper any_document_t;
97 virtual int setParameters(
const char* parameters) = 0;
98 virtual int getParameters(
const char* key, any_document_t& result) = 0;
108 typedef T value_type;
109 typedef T* pointer_type;
112 explicit AutoPtr(pointer_type p = NULL) : ptr_(p) {}
121 operator bool()
const {
return (ptr_ != NULL); }
123 value_type& operator*()
const {
return *get(); }
125 pointer_type operator->()
const {
return get(); }
127 pointer_type get()
const {
return ptr_; }
129 pointer_type release() {
130 pointer_type ret = ptr_;
135 void reset(pointer_type ptr = NULL) {
136 if (ptr != ptr_ && ptr_) {
143 template <
class C1,
class C2>
144 bool queryInterface(C1* c, C2 iid) {
145 pointer_type p = NULL;
146 if (c && !c->queryInterface(iid,
reinterpret_cast<void**
>(&p))) {
163 typedef typename AutoPtr<T>::pointer_type pointer_type;
169 if (
this != &rhs) this->reset(rhs.clone());
172 pointer_type clone()
const {
173 if (!this->get())
return NULL;
174 return this->get()->clone();
180 virtual bool empty()
const = 0;
181 virtual const char* c_str() = 0;
182 virtual const char* data() = 0;
183 virtual size_t length() = 0;
185 virtual void release() = 0;
192 virtual void* current() = 0;
193 virtual const void* const_current()
const = 0;
194 virtual bool next() = 0;
195 virtual void release() = 0;
202 virtual size_t size()
const = 0;
203 virtual void release() = 0;
212 typedef T value_type;
213 typedef value_type& reference;
214 typedef const value_type& const_reference;
215 typedef value_type* pointer;
216 typedef const value_type* const_pointer;
228 return p->current() == rhs.p->current();
230 return valid() == rhs.valid();
232 bool operator!=(
const AOutputIterator& rhs)
const {
return !this->operator==(rhs); }
233 reference operator*() {
return *
reinterpret_cast<pointer
>(p->current()); }
234 const_reference operator*()
const {
return *
reinterpret_cast<const_pointer
>(p->const_current()); }
235 bool valid()
const {
return p && p->current() != NULL; }
244 typedef T value_type;
245 typedef value_type& reference;
246 typedef const value_type& const_reference;
247 typedef value_type* pointer;
248 typedef const value_type* const_pointer;
249 typedef size_t size_type;
254 AList() : container(NULL), owner(
false) {}
255 AList(
IContainer* c,
bool take_ownership) : container(c), owner(take_ownership) {}
256 ~
AList() { reset(); }
257 void reset(
IContainer* c = NULL,
bool take_ownership =
false) {
258 if (owner && container) container->release();
260 owner = take_ownership;
264 size_type size()
const {
return container ? container->size() : 0; }
265 bool empty()
const {
return size() == 0; }
273 enum CHANNEL_PROFILE_TYPE {
279 CHANNEL_PROFILE_COMMUNICATION = 0,
285 CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
290 CHANNEL_PROFILE_GAME __deprecated = 2,
297 CHANNEL_PROFILE_CLOUD_GAMING = 3,
303 CHANNEL_PROFILE_COMMUNICATION_1v1 = 4,
310 CHANNEL_PROFILE_LIVE_BROADCASTING_2 = 5,
316 enum WARN_CODE_TYPE {
321 WARN_INVALID_VIEW = 8,
326 WARN_INIT_VIDEO = 16,
336 WARN_NO_AVAILABLE_CHANNEL = 103,
342 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
347 WARN_LOOKUP_CHANNEL_REJECTED = 105,
353 WARN_OPEN_CHANNEL_TIMEOUT = 106,
358 WARN_OPEN_CHANNEL_REJECTED = 107,
364 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
368 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
372 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
376 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
380 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
384 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
388 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
391 WARN_CHANNEL_SOCKET_ERROR = 134,
395 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
399 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
403 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
407 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
411 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
415 WARN_ADM_RECORD_MALFUNCTION = 1021,
422 WARN_ADM_IOS_CATEGORY_NOT_PLAYANDRECORD = 1029,
426 WARN_ADM_IOS_SAMPLERATE_CHANGE = 1030,
430 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
434 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
442 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
446 WARN_APM_HOWLING = 1051,
450 WARN_ADM_GLITCH_STATE = 1052,
454 WARN_ADM_IMPROPER_SETTINGS = 1053,
458 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
463 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
471 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
477 enum ERROR_CODE_TYPE {
491 ERR_INVALID_ARGUMENT = 2,
502 ERR_NOT_SUPPORTED = 4,
510 ERR_BUFFER_TOO_SMALL = 6,
514 ERR_NOT_INITIALIZED = 7,
518 ERR_INVALID_STATE = 8,
523 ERR_NO_PERMISSION = 9,
546 ERR_BIND_SOCKET = 13,
563 ERR_JOIN_CHANNEL_REJECTED = 17,
570 ERR_LEAVE_CHANNEL_REJECTED = 18,
574 ERR_ALREADY_IN_USE = 19,
584 ERR_INIT_NET_ENGINE = 21,
589 ERR_RESOURCE_LIMITED = 22,
595 ERR_INVALID_APP_ID = 101,
600 ERR_INVALID_CHANNEL_NAME = 102,
606 ERR_NO_SERVER_RESOURCES = 103,
619 ERR_TOKEN_EXPIRED = 109,
636 ERR_INVALID_TOKEN = 110,
641 ERR_CONNECTION_INTERRUPTED = 111,
646 ERR_CONNECTION_LOST = 112,
651 ERR_NOT_IN_CHANNEL = 113,
656 ERR_SIZE_TOO_LARGE = 114,
661 ERR_BITRATE_LIMIT = 115,
666 ERR_TOO_MANY_DATA_STREAMS = 116,
670 ERR_STREAM_MESSAGE_TIMEOUT = 117,
674 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
679 ERR_DECRYPTION_FAILED = 120,
683 ERR_INVALID_USER_ID = 121,
687 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
691 ERR_WATERMARK_PARAM = 124,
695 ERR_WATERMARK_PATH = 125,
699 ERR_WATERMARK_PNG = 126,
703 ERR_WATERMARKR_INFO = 127,
707 ERR_WATERMARK_ARGB = 128,
711 ERR_WATERMARK_READ = 129,
717 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
722 ERR_LICENSE_CREDENTIAL_INVALID = 131,
727 ERR_INVALID_USER_ACCOUNT = 134,
731 ERR_CERT_JSON_PART = 158,
732 ERR_CERT_JSON_INVAL = 159,
733 ERR_CERT_JSON_NOMEM = 160,
734 ERR_CERT_CUSTOM = 161,
735 ERR_CERT_CREDENTIAL = 162,
740 ERR_CERT_DUEDATE = 167,
741 ERR_CERT_REQUEST = 168,
744 ERR_PCMSEND_FORMAT =200,
745 ERR_PCMSEND_BUFFEROVERFLOW = 201,
749 ERR_LOGOUT_OTHER = 400,
750 ERR_LOGOUT_USER = 401,
751 ERR_LOGOUT_NET = 402,
752 ERR_LOGOUT_KICKED = 403,
753 ERR_LOGOUT_PACKET = 404,
754 ERR_LOGOUT_TOKEN_EXPIRED = 405,
755 ERR_LOGOUT_OLDVERSION = 406,
756 ERR_LOGOUT_TOKEN_WRONG = 407,
757 ERR_LOGOUT_ALREADY_LOGOUT = 408,
758 ERR_LOGIN_OTHER = 420,
760 ERR_LOGIN_FAILED = 422,
761 ERR_LOGIN_CANCELED = 423,
762 ERR_LOGIN_TOKEN_EXPIRED = 424,
763 ERR_LOGIN_OLD_VERSION = 425,
764 ERR_LOGIN_TOKEN_WRONG = 426,
765 ERR_LOGIN_TOKEN_KICKED = 427,
766 ERR_LOGIN_ALREADY_LOGIN = 428,
767 ERR_JOIN_CHANNEL_OTHER = 440,
768 ERR_SEND_MESSAGE_OTHER = 440,
769 ERR_SEND_MESSAGE_TIMEOUT = 441,
770 ERR_QUERY_USERNUM_OTHER = 450,
771 ERR_QUERY_USERNUM_TIMEOUT = 451,
772 ERR_QUERY_USERNUM_BYUSER = 452,
773 ERR_LEAVE_CHANNEL_OTHER = 460,
774 ERR_LEAVE_CHANNEL_KICKED = 461,
775 ERR_LEAVE_CHANNEL_BYUSER = 462,
776 ERR_LEAVE_CHANNEL_LOGOUT = 463,
777 ERR_LEAVE_CHANNEL_DISCONNECTED = 464,
778 ERR_INVITE_OTHER = 470,
779 ERR_INVITE_REINVITE = 471,
780 ERR_INVITE_NET = 472,
781 ERR_INVITE_PEER_OFFLINE = 473,
782 ERR_INVITE_TIMEOUT = 474,
783 ERR_INVITE_CANT_RECV = 475,
789 ERR_LOAD_MEDIA_ENGINE = 1001,
793 ERR_START_CALL = 1002,
797 ERR_START_CAMERA = 1003,
801 ERR_START_VIDEO_RENDER = 1004,
807 ERR_ADM_GENERAL_ERROR = 1005,
811 ERR_ADM_JAVA_RESOURCE = 1006,
815 ERR_ADM_SAMPLE_RATE = 1007,
820 ERR_ADM_INIT_PLAYOUT = 1008,
824 ERR_ADM_START_PLAYOUT = 1009,
828 ERR_ADM_STOP_PLAYOUT = 1010,
833 ERR_ADM_INIT_RECORDING = 1011,
837 ERR_ADM_START_RECORDING = 1012,
841 ERR_ADM_STOP_RECORDING = 1013,
846 ERR_ADM_RUNTIME_PLAYOUT_ERROR = 1015,
850 ERR_ADM_RUNTIME_RECORDING_ERROR = 1017,
854 ERR_ADM_RECORD_AUDIO_FAILED = 1018,
859 ERR_ADM_INIT_LOOPBACK = 1022,
864 ERR_ADM_START_LOOPBACK = 1023,
869 ERR_ADM_NO_PERMISSION = 1027,
873 ERR_ADM_RECORD_AUDIO_IS_ACTIVE = 1033,
877 ERR_ADM_ANDROID_JNI_JAVA_RESOURCE = 1101,
883 ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY = 1108,
889 ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY = 1109,
897 ERR_ADM_ANDROID_JNI_JAVA_START_RECORD = 1111,
905 ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK = 1112,
910 ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR = 1115,
912 ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE __deprecated = 1151,
914 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER __deprecated = 1153,
916 ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD __deprecated = 1156,
918 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER __deprecated = 1157,
920 ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD __deprecated = 1160,
927 ERR_ADM_IOS_INPUT_NOT_AVAILABLE = 1201,
931 ERR_ADM_IOS_ACTIVATE_SESSION_FAIL = 1206,
936 ERR_ADM_IOS_VPIO_INIT_FAIL = 1210,
941 ERR_ADM_IOS_VPIO_REINIT_FAIL = 1213,
946 ERR_ADM_IOS_VPIO_RESTART_FAIL = 1214,
947 ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219,
949 ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO __deprecated = 1221,
957 ERR_ADM_WIN_CORE_INIT = 1301,
964 ERR_ADM_WIN_CORE_INIT_RECORDING = 1303,
971 ERR_ADM_WIN_CORE_INIT_PLAYOUT = 1306,
977 ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL = 1307,
984 ERR_ADM_WIN_CORE_START_RECORDING = 1309,
991 ERR_ADM_WIN_CORE_CREATE_REC_THREAD = 1311,
1000 ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP = 1314,
1007 ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD = 1319,
1016 ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP = 1320,
1022 ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
1028 ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
1038 ERR_ADM_WIN_WAVE_INIT = 1351,
1047 ERR_ADM_WIN_WAVE_INIT_RECORDING = 1353,
1056 ERR_ADM_WIN_WAVE_INIT_MICROPHONE = 1354,
1065 ERR_ADM_WIN_WAVE_INIT_PLAYOUT = 1355,
1074 ERR_ADM_WIN_WAVE_INIT_SPEAKER = 1356,
1083 ERR_ADM_WIN_WAVE_START_RECORDING = 1357,
1092 ERR_ADM_WIN_WAVE_START_PLAYOUT = 1358,
1096 ERR_ADM_NO_RECORDING_DEVICE = 1359,
1100 ERR_ADM_NO_PLAYOUT_DEVICE = 1360,
1106 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
1112 ERR_VDM_WIN_DEVICE_IN_USE = 1502,
1118 ERR_VCM_UNKNOWN_ERROR = 1600,
1123 ERR_VCM_ENCODER_INIT_ERROR = 1601,
1127 ERR_VCM_ENCODER_ENCODE_ERROR = 1602,
1131 ERR_VCM_ENCODER_SET_ERROR = 1603,
1137 enum AUDIO_SESSION_OPERATION_RESTRICTION {
1141 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
1145 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
1149 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
1154 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
1159 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
1162 typedef const char* user_id_t;
1163 typedef void* view_t;
1189 typedef util::AList<UserInfo> UserList;
1197 enum USER_OFFLINE_REASON_TYPE {
1201 USER_OFFLINE_QUIT = 0,
1207 USER_OFFLINE_DROPPED = 1,
1211 USER_OFFLINE_BECOME_AUDIENCE = 2,
1214 enum INTERFACE_ID_TYPE {
1215 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
1216 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
1217 AGORA_IID_PARAMETER_ENGINE = 3,
1218 AGORA_IID_MEDIA_ENGINE = 4,
1219 AGORA_IID_AUDIO_ENGINE = 5,
1220 AGORA_IID_VIDEO_ENGINE = 6,
1221 AGORA_IID_RTC_CONNECTION = 7,
1222 AGORA_IID_SIGNALING_ENGINE = 8,
1223 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
1224 AGORA_IID_CLOUD_SPATIAL_AUDIO = 10,
1225 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
1236 QUALITY_UNKNOWN __deprecated = 0,
1240 QUALITY_EXCELLENT = 1,
1265 QUALITY_UNSUPPORTED = 7,
1275 enum FIT_MODE_TYPE {
1293 enum VIDEO_ORIENTATION {
1297 VIDEO_ORIENTATION_0 = 0,
1301 VIDEO_ORIENTATION_90 = 90,
1305 VIDEO_ORIENTATION_180 = 180,
1309 VIDEO_ORIENTATION_270 = 270
1319 FRAME_RATE_FPS_1 = 1,
1323 FRAME_RATE_FPS_7 = 7,
1327 FRAME_RATE_FPS_10 = 10,
1331 FRAME_RATE_FPS_15 = 15,
1335 FRAME_RATE_FPS_24 = 24,
1339 FRAME_RATE_FPS_30 = 30,
1343 FRAME_RATE_FPS_60 = 60,
1347 FRAME_WIDTH_640 = 640,
1351 FRAME_HEIGHT_360 = 360,
1358 enum VIDEO_FRAME_TYPE {
1360 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1362 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1364 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1366 VIDEO_FRAME_TYPE_B_FRAME = 5,
1368 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1370 VIDEO_FRAME_TYPE_UNKNOW
1376 enum ORIENTATION_MODE {
1384 ORIENTATION_MODE_ADAPTIVE = 0,
1392 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1400 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1406 enum DEGRADATION_PREFERENCE {
1410 MAINTAIN_QUALITY = 0,
1414 MAINTAIN_FRAMERATE = 1,
1418 MAINTAIN_BALANCED = 2,
1422 MAINTAIN_RESOLUTION = 3,
1443 bool operator==(
const VideoDimensions& rhs)
const {
1444 return width == rhs.width &&
height == rhs.height;
1457 const int STANDARD_BITRATE = 0;
1466 const int COMPATIBLE_BITRATE = -1;
1471 const int DEFAULT_MIN_BITRATE = -1;
1476 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1481 enum VIDEO_CODEC_TYPE {
1482 VIDEO_CODEC_NONE = 0,
1486 VIDEO_CODEC_VP8 = 1,
1490 VIDEO_CODEC_H264 = 2,
1494 VIDEO_CODEC_H265 = 3,
1498 VIDEO_CODEC_VP9 = 5,
1502 VIDEO_CODEC_GENERIC = 6,
1506 VIDEO_CODEC_GENERIC_H264 = 7,
1510 VIDEO_CODEC_AV1 = 12,
1514 VIDEO_CODEC_GENERIC_JPEG = 20,
1520 enum AUDIO_CODEC_TYPE {
1524 AUDIO_CODEC_OPUS = 1,
1529 AUDIO_CODEC_PCMA = 3,
1533 AUDIO_CODEC_PCMU = 4,
1537 AUDIO_CODEC_G722 = 5,
1544 AUDIO_CODEC_AACLC = 8,
1548 AUDIO_CODEC_HEAAC = 9,
1552 AUDIO_CODEC_JC1 = 10,
1553 AUDIO_CODEC_HEAAC2 = 11,
1557 AUDIO_CODEC_LPCNET = 12,
1563 enum AUDIO_ENCODING_TYPE {
1567 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1571 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1575 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1579 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1583 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1587 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1591 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1596 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1600 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1604 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1608 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1614 enum WATERMARK_FIT_MODE {
1619 FIT_MODE_COVER_POSITION,
1624 FIT_MODE_USE_IMAGE_RATIO
1655 :
codec(AUDIO_CODEC_AACLC),
1697 channelNum(rhs.channelNum),
1726 enum H264PacketizeMode {
1740 enum VIDEO_STREAM_TYPE {
1744 VIDEO_STREAM_HIGH = 0,
1748 VIDEO_STREAM_LOW = 1,
1760 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1782 if (
this == &rhs)
return *
this;
1849 enum VIDEO_MIRROR_MODE_TYPE {
1853 VIDEO_MIRROR_MODE_AUTO = 0,
1857 VIDEO_MIRROR_MODE_ENABLED = 1,
1861 VIDEO_MIRROR_MODE_DISABLED = 2,
1976 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1985 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
1994 VideoEncoderConfiguration()
1996 dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360),
2004 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2005 if (
this == &rhs)
return *
this;
2125 mode(FIT_MODE_COVER_POSITION) {}
2313 enum VIDEO_SOURCE_TYPE {
2316 VIDEO_SOURCE_CAMERA_PRIMARY,
2317 VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
2320 VIDEO_SOURCE_CAMERA_SECONDARY,
2323 VIDEO_SOURCE_SCREEN_PRIMARY,
2324 VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
2327 VIDEO_SOURCE_SCREEN_SECONDARY,
2330 VIDEO_SOURCE_CUSTOM,
2333 VIDEO_SOURCE_MEDIA_PLAYER,
2336 VIDEO_SOURCE_RTC_IMAGE_PNG,
2339 VIDEO_SOURCE_RTC_IMAGE_JPEG,
2342 VIDEO_SOURCE_RTC_IMAGE_GIF,
2345 VIDEO_SOURCE_REMOTE,
2348 VIDEO_SOURCE_TRANSCODED,
2350 VIDEO_SOURCE_UNKNOWN = 100
2356 enum CLIENT_ROLE_TYPE {
2360 CLIENT_ROLE_BROADCASTER = 1,
2364 CLIENT_ROLE_AUDIENCE = 2,
2369 enum QUALITY_ADAPT_INDICATION {
2373 ADAPT_UP_BANDWIDTH = 1,
2375 ADAPT_DOWN_BANDWIDTH = 2,
2379 enum AUDIENCE_LATENCY_LEVEL_TYPE
2382 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2384 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2388 AUDIENCE_LATENCY_LEVEL_HIGH_LATENCY = 3,
2406 enum EXPERIENCE_QUALITY_TYPE {
2408 EXPERIENCE_QUALITY_GOOD = 0,
2410 EXPERIENCE_QUALITY_BAD = 1,
2515 enum AUDIO_PROFILE_TYPE {
2523 AUDIO_PROFILE_DEFAULT = 0,
2527 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2531 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2536 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2540 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2544 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2548 AUDIO_PROFILE_IOT = 6,
2549 AUDIO_PROFILE_NUM = 7
2555 enum AUDIO_SCENARIO_TYPE {
2559 AUDIO_SCENARIO_DEFAULT = 0,
2565 AUDIO_SCENARIO_GAME_STREAMING = 3,
2571 AUDIO_SCENARIO_CHATROOM = 5,
2575 AUDIO_SCENARIO_HIGH_DEFINITION = 6,
2579 AUDIO_SCENARIO_CHORUS = 7,
2583 AUDIO_SCENARIO_NUM = 8,
2590 OPTIONAL_ENUM_SIZE_T {
2592 kMaxWidthInPixels = 3840,
2594 kMaxHeightInPixels = 2160,
2618 enum VIDEO_CONTENT_HINT {
2629 CONTENT_HINT_MOTION,
2635 CONTENT_HINT_DETAILS
2641 enum LOCAL_AUDIO_STREAM_STATE {
2645 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2649 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2653 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2657 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2663 enum LOCAL_AUDIO_STREAM_ERROR {
2667 LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2671 LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2675 LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2679 LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2684 LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2688 LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
2693 enum LOCAL_VIDEO_STREAM_STATE {
2697 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2701 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2705 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2709 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2715 enum LOCAL_VIDEO_STREAM_ERROR {
2717 LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2719 LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2721 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2723 LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2725 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2727 LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2729 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6,
2731 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2733 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND = 8,
2735 LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED = 9,
2737 LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID = 10,
2739 LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE = 101,
2741 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2743 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
2745 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
2747 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
2753 enum REMOTE_AUDIO_STATE
2761 REMOTE_AUDIO_STATE_STOPPED = 0,
2765 REMOTE_AUDIO_STATE_STARTING = 1,
2772 REMOTE_AUDIO_STATE_DECODING = 2,
2777 REMOTE_AUDIO_STATE_FROZEN = 3,
2782 REMOTE_AUDIO_STATE_FAILED = 4,
2788 enum REMOTE_AUDIO_STATE_REASON
2793 REMOTE_AUDIO_REASON_INTERNAL = 0,
2797 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2801 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2806 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2811 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2816 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2821 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2825 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2829 enum REMOTE_VIDEO_STATE {
2835 REMOTE_VIDEO_STATE_STOPPED = 0,
2838 REMOTE_VIDEO_STATE_STARTING = 1,
2845 REMOTE_VIDEO_STATE_DECODING = 2,
2850 REMOTE_VIDEO_STATE_FROZEN = 3,
2854 REMOTE_VIDEO_STATE_FAILED = 4,
2857 enum REMOTE_VIDEO_STATE_REASON {
2861 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2866 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2871 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2876 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2881 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2886 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2891 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2896 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2901 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2906 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
2911 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
2915 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
2922 enum REMOTE_USER_STATE {
2926 USER_STATE_MUTE_AUDIO = (1 << 0),
2930 USER_STATE_MUTE_VIDEO = (1 << 1),
2934 USER_STATE_ENABLE_VIDEO = (1 << 4),
2938 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
2998 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3002 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3006 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3010 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3014 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3018 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3055 bool isLowLatencyAudioSupported;
3057 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3137 enum AUDIO_SAMPLE_RATE_TYPE {
3141 AUDIO_SAMPLE_RATE_32000 = 32000,
3145 AUDIO_SAMPLE_RATE_44100 = 44100,
3149 AUDIO_SAMPLE_RATE_48000 = 48000,
3151 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3155 VIDEO_CODEC_H264_FOR_STREAM = 1,
3159 VIDEO_CODEC_H265_FOR_STREAM = 2,
3165 enum VIDEO_CODEC_PROFILE_TYPE {
3169 VIDEO_CODEC_PROFILE_BASELINE = 66,
3173 VIDEO_CODEC_PROFILE_MAIN = 77,
3177 VIDEO_CODEC_PROFILE_HIGH = 100,
3184 enum AUDIO_CODEC_PROFILE_TYPE {
3188 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3192 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3196 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3231 enum RTMP_STREAM_PUBLISH_STATE {
3234 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3237 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3240 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3246 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3249 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3252 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3258 enum RTMP_STREAM_PUBLISH_ERROR_TYPE {
3260 RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3262 RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3264 RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3266 RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3268 RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3270 RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3272 RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3274 RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3276 RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3278 RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3280 RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3282 RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER = 11,
3284 RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM = 13,
3286 RTMP_STREAM_PUBLISH_ERROR_NET_DOWN = 14,
3288 RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID = 15,
3296 RTMP_STREAM_UNPUBLISH_ERROR_OK = 100,
3300 enum RTMP_STREAMING_EVENT {
3303 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3308 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3311 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3314 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3380 enum CONNECTION_STATE_TYPE
3385 CONNECTION_STATE_DISCONNECTED = 1,
3389 CONNECTION_STATE_CONNECTING = 2,
3394 CONNECTION_STATE_CONNECTED = 3,
3399 CONNECTION_STATE_RECONNECTING = 4,
3403 CONNECTION_STATE_FAILED = 5,
3590 unsigned int advancedFeatureCount;
3592 LiveTranscoding() :
width(360),
height(640),
videoBitrate(400),
videoFramerate(15),
lowLatency(false),
videoGop(30),
videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
backgroundColor(0x000000),
videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
userCount(0),
transcodingUsers(NULL),
transcodingExtraInfo(NULL),
metadata(NULL),
watermark(NULL),
watermarkCount(0),
backgroundImage(NULL),
backgroundImageCount(0),
audioSampleRate(AUDIO_SAMPLE_RATE_48000),
audioBitrate(48),
audioChannels(1),
audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC), advancedFeatures(NULL), advancedFeatureCount(0) {}
3643 :
sourceType(agora::media::PRIMARY_CAMERA_SOURCE),
3712 enum LASTMILE_PROBE_RESULT_STATE {
3716 LASTMILE_PROBE_RESULT_COMPLETE = 1,
3721 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3726 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3775 :
state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
3782 enum CONNECTION_CHANGED_REASON_TYPE
3787 CONNECTION_CHANGED_CONNECTING = 0,
3791 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3795 CONNECTION_CHANGED_INTERRUPTED = 2,
3799 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3803 CONNECTION_CHANGED_JOIN_FAILED = 4,
3807 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3811 CONNECTION_CHANGED_INVALID_APP_ID = 6,
3815 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3819 CONNECTION_CHANGED_INVALID_TOKEN = 8,
3823 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3827 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3831 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3835 CONNECTION_CHANGED_RENEW_TOKEN = 12,
3840 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3844 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3848 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3852 CONNECTION_CHANGED_LOST = 16,
3856 CONNECTION_CHANGED_ECHO_TEST = 17,
3860 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
3864 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
3868 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
3874 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
3878 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
3882 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
3886 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3,
3890 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4,
3900 NETWORK_TYPE_UNKNOWN = -1,
3904 NETWORK_TYPE_DISCONNECTED = 0,
3908 NETWORK_TYPE_LAN = 1,
3912 NETWORK_TYPE_WIFI = 2,
3916 NETWORK_TYPE_MOBILE_2G = 3,
3920 NETWORK_TYPE_MOBILE_3G = 4,
3924 NETWORK_TYPE_MOBILE_4G = 5,
3930 enum VIDEO_VIEW_SETUP_MODE {
3934 VIDEO_VIEW_SETUP_REPLACE = 0,
3938 VIDEO_VIEW_SETUP_ADD = 1,
3942 VIDEO_VIEW_SETUP_REMOVE = 2,
3971 VIDEO_SOURCE_TYPE sourceType;
3975 VIDEO_VIEW_SETUP_MODE setupMode;
3978 uid(0), isScreenView(false), priv(NULL), priv_size(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
3979 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
3981 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
3982 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
3984 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
4084 float _scale_factor;
4085 float _focal_length;
4086 float _pol_focal_length;
4087 float _split_height;
4093 _pol_focal_length(31),
4094 _split_height(1.0) {
4101 FishCorrectionParams(
float x_center,
float y_center,
float scale_factor,
float focal_length,
float pol_focal_length,
float split_height,
float ss[])
4102 : _x_center(x_center),
4103 _y_center(y_center),
4104 _scale_factor(scale_factor),
4105 _focal_length(focal_length),
4106 _pol_focal_length(pol_focal_length),
4107 _split_height(split_height) {
4108 if (ss != OPTIONAL_NULLPTR) {
4109 for (
int i = 0; i < 5; i++) {
4136 enum VOICE_BEAUTIFIER_PRESET {
4139 VOICE_BEAUTIFIER_OFF = 0x00000000,
4145 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4151 CHAT_BEAUTIFIER_FRESH = 0x01010200,
4157 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4171 SINGING_BEAUTIFIER = 0x01020100,
4174 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4177 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4180 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4183 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4186 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4189 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4192 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4195 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4197 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4202 enum AUDIO_EFFECT_PRESET {
4205 AUDIO_EFFECT_OFF = 0x00000000,
4213 ROOM_ACOUSTICS_KTV = 0x02010100,
4221 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4229 ROOM_ACOUSTICS_STUDIO = 0x02010300,
4237 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
4244 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
4252 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
4260 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
4272 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
4283 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
4294 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
4305 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
4316 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
4327 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
4336 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
4344 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
4352 STYLE_TRANSFORMATION_RNB = 0x02030100,
4360 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
4370 PITCH_CORRECTION = 0x02040100
4379 enum VOICE_CONVERSION_PRESET {
4382 VOICE_CONVERSION_OFF = 0x00000000,
4385 VOICE_CHANGER_NEUTRAL = 0x03010100,
4388 VOICE_CHANGER_SWEET = 0x03010200,
4391 VOICE_CHANGER_SOLID = 0x03010300,
4394 VOICE_CHANGER_BASS = 0x03010400
4440 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
4442 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
4444 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t *ex,
int cnt)
4446 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t *ex,
int cnt)
4453 enum AUDIO_RECORDING_QUALITY_TYPE {
4457 AUDIO_RECORDING_QUALITY_LOW = 0,
4461 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4465 AUDIO_RECORDING_QUALITY_HIGH = 2,
4471 enum AUDIO_FILE_RECORDING_TYPE {
4475 AUDIO_FILE_RECORDING_MIC = 1,
4479 AUDIO_FILE_RECORDING_PLAYBACK = 2,
4483 AUDIO_FILE_RECORDING_MIXED = 3,
4489 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4493 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4497 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4501 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4538 quality(AUDIO_RECORDING_QUALITY_LOW) {}
4547 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4554 AudioRecordingConfiguration(
const AudioRecordingConfiguration &rhs)
4577 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4620 AREA_CODE_CN = 0x00000001,
4624 AREA_CODE_NA = 0x00000002,
4628 AREA_CODE_EU = 0x00000004,
4632 AREA_CODE_AS = 0x00000008,
4636 AREA_CODE_JP = 0x00000010,
4640 AREA_CODE_IN = 0x00000020,
4644 AREA_CODE_GLOB = (0xFFFFFFFF)
4651 AREA_CODE_OC = 0x00000040,
4655 AREA_CODE_SA = 0x00000080,
4659 AREA_CODE_AF = 0x00000100,
4663 AREA_CODE_KR = 0x00000200,
4667 AREA_CODE_OVS = 0xFFFFFFFE
4670 enum CHANNEL_MEDIA_RELAY_ERROR {
4676 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
4681 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
4685 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
4688 RELAY_ERROR_FAILED_JOIN_SRC = 4,
4691 RELAY_ERROR_FAILED_JOIN_DEST = 5,
4694 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
4697 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
4702 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
4705 RELAY_ERROR_INTERNAL_ERROR = 9,
4708 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
4711 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
4715 enum CHANNEL_MEDIA_RELAY_EVENT {
4719 RELAY_EVENT_NETWORK_DISCONNECTED = 0,
4722 RELAY_EVENT_NETWORK_CONNECTED = 1,
4725 RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
4728 RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
4731 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
4734 RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
4737 RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4740 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4743 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4747 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4750 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4753 RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4756 RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12,
4759 RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13,
4762 RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14,
4765 RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15,
4768 enum CHANNEL_MEDIA_RELAY_STATE {
4771 RELAY_STATE_IDLE = 0,
4774 RELAY_STATE_CONNECTING = 1,
4778 RELAY_STATE_RUNNING = 2,
4781 RELAY_STATE_FAILURE = 3,
4875 :
uid(OPTIONAL_NULLPTR),
4881 if (
this == &rhs)
return *
this;
4882 uid = OPTIONAL_NULLPTR;
4886 if (rhs.
uid != OPTIONAL_NULLPTR) {
4887 char* temp =
new char[strlen(rhs.
uid) + 1];
4888 strcpy(temp, rhs.
uid);
4894 ~PeerDownlinkInfo() {
4895 if (
uid) {
delete []
uid; }
4939 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
4940 if (
this == &rhs)
return *
this;
4954 ~DownlinkNetworkInfo() {
4961 enum ENCRYPTION_MODE {
5003 uint8_t encryptionKdfSalt[32];
5009 memset(encryptionKdfSalt, 0,
sizeof(encryptionKdfSalt));
5013 const char* getEncryptionString()
const {
5016 return "aes-128-xts";
5018 return "aes-128-ecb";
5020 return "aes-256-xts";
5022 return "sm4-128-ecb";
5024 return "aes-128-gcm";
5026 return "aes-256-gcm";
5028 return "aes-128-gcm-2";
5030 return "aes-256-gcm-2";
5032 return "aes-128-gcm-2";
5034 return "aes-128-gcm-2";
5041 enum ENCRYPTION_ERROR_TYPE {
5042 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5043 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5044 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5047 enum UPLOAD_ERROR_REASON
5050 UPLOAD_NET_ERROR = 1,
5051 UPLOAD_SERVER_ERROR = 2,
5056 enum PERMISSION_TYPE {
5063 enum MAX_USER_ACCOUNT_LENGTH_TYPE
5067 MAX_USER_ACCOUNT_LENGTH = 256
5073 enum STREAM_SUBSCRIBE_STATE {
5075 SUB_STATE_NO_SUBSCRIBED = 1,
5076 SUB_STATE_SUBSCRIBING = 2,
5077 SUB_STATE_SUBSCRIBED = 3
5083 enum STREAM_PUBLISH_STATE {
5085 PUB_STATE_NO_PUBLISHED = 1,
5086 PUB_STATE_PUBLISHING = 2,
5087 PUB_STATE_PUBLISHED = 3
5111 enum EAR_MONITORING_FILTER_TYPE {
5115 EAR_MONITORING_FILTER_NONE = (1<<0),
5119 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
5123 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
5129 enum THREAD_PRIORITY_TYPE {
5162 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
5175 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
5183 virtual void onCertificateRequired() = 0;
5184 virtual void onLicenseRequest() = 0;
5185 virtual void onLicenseValidated() = 0;
5186 virtual void onLicenseError(
int result) = 0;
5228 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
5235 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
5237 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
5261 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char *credential_buf,
int credential_len,
5262 const char *certificate_buf,
int certificate_len);