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,
1611 enum AUDIO_CODEC_TYPE {
1615 AUDIO_CODEC_OPUS = 1,
1620 AUDIO_CODEC_PCMA = 3,
1624 AUDIO_CODEC_PCMU = 4,
1628 AUDIO_CODEC_G722 = 5,
1635 AUDIO_CODEC_AACLC = 8,
1639 AUDIO_CODEC_HEAAC = 9,
1643 AUDIO_CODEC_JC1 = 10,
1644 AUDIO_CODEC_HEAAC2 = 11,
1648 AUDIO_CODEC_LPCNET = 12,
1654 enum AUDIO_ENCODING_TYPE {
1658 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1662 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1666 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1670 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1674 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1678 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1682 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1687 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1691 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1695 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1699 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1705 enum WATERMARK_FIT_MODE {
1710 FIT_MODE_COVER_POSITION,
1715 FIT_MODE_USE_IMAGE_RATIO
1746 :
codec(AUDIO_CODEC_AACLC),
1795 channelNum(rhs.channelNum),
1824 enum H264PacketizeMode {
1838 enum VIDEO_STREAM_TYPE {
1842 VIDEO_STREAM_HIGH = 0,
1846 VIDEO_STREAM_LOW = 1,
1876 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1898 if (
this == &rhs)
return *
this;
1968 enum VIDEO_MIRROR_MODE_TYPE {
1972 VIDEO_MIRROR_MODE_AUTO = 0,
1976 VIDEO_MIRROR_MODE_ENABLED = 1,
1980 VIDEO_MIRROR_MODE_DISABLED = 2,
2095 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2104 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2113 VideoEncoderConfiguration()
2115 dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360),
2123 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2124 if (
this == &rhs)
return *
this;
2244 mode(FIT_MODE_COVER_POSITION) {}
2432 enum VIDEO_SOURCE_TYPE {
2435 VIDEO_SOURCE_CAMERA_PRIMARY,
2436 VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
2439 VIDEO_SOURCE_CAMERA_SECONDARY,
2442 VIDEO_SOURCE_SCREEN_PRIMARY,
2443 VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
2446 VIDEO_SOURCE_SCREEN_SECONDARY,
2449 VIDEO_SOURCE_CUSTOM,
2452 VIDEO_SOURCE_MEDIA_PLAYER,
2455 VIDEO_SOURCE_RTC_IMAGE_PNG,
2458 VIDEO_SOURCE_RTC_IMAGE_JPEG,
2461 VIDEO_SOURCE_RTC_IMAGE_GIF,
2464 VIDEO_SOURCE_REMOTE,
2467 VIDEO_SOURCE_TRANSCODED,
2469 VIDEO_SOURCE_UNKNOWN = 100
2475 enum CLIENT_ROLE_TYPE {
2479 CLIENT_ROLE_BROADCASTER = 1,
2483 CLIENT_ROLE_AUDIENCE = 2,
2488 enum QUALITY_ADAPT_INDICATION {
2492 ADAPT_UP_BANDWIDTH = 1,
2494 ADAPT_DOWN_BANDWIDTH = 2,
2498 enum AUDIENCE_LATENCY_LEVEL_TYPE
2501 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2503 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2521 enum EXPERIENCE_QUALITY_TYPE {
2523 EXPERIENCE_QUALITY_GOOD = 0,
2525 EXPERIENCE_QUALITY_BAD = 1,
2532 enum EXPERIENCE_POOR_REASON {
2535 EXPERIENCE_REASON_NONE = 0,
2538 REMOTE_NETWORK_QUALITY_POOR = 1,
2541 LOCAL_NETWORK_QUALITY_POOR = 2,
2544 WIRELESS_SIGNAL_POOR = 4,
2548 WIFI_BLUETOOTH_COEXIST = 8,
2658 enum AUDIO_PROFILE_TYPE {
2666 AUDIO_PROFILE_DEFAULT = 0,
2670 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2674 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2679 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2683 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2687 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2691 AUDIO_PROFILE_IOT = 6,
2692 AUDIO_PROFILE_NUM = 7
2698 enum AUDIO_SCENARIO_TYPE {
2702 AUDIO_SCENARIO_DEFAULT = 0,
2708 AUDIO_SCENARIO_GAME_STREAMING = 3,
2714 AUDIO_SCENARIO_CHATROOM = 5,
2718 AUDIO_SCENARIO_HIGH_DEFINITION = 6,
2722 AUDIO_SCENARIO_CHORUS = 7,
2726 AUDIO_SCENARIO_NUM = 8,
2733 OPTIONAL_ENUM_SIZE_T {
2735 kMaxWidthInPixels = 3840,
2737 kMaxHeightInPixels = 2160,
2757 bool operator <(
const VideoFormat& fmt)
const {
2758 if (
height != fmt.height) {
2759 return height < fmt.height;
2760 }
else if (
width != fmt.width) {
2761 return width < fmt.width;
2763 return fps < fmt.fps;
2771 enum VIDEO_CONTENT_HINT {
2782 CONTENT_HINT_MOTION,
2788 CONTENT_HINT_DETAILS
2791 enum SCREEN_SCENARIO_TYPE {
2792 SCREEN_SCENARIO_DOCUMENT = 1,
2793 SCREEN_SCENARIO_GAMING = 2,
2794 SCREEN_SCENARIO_VIDEO = 3,
2795 SCREEN_SCENARIO_RDC = 4,
2801 enum LOCAL_AUDIO_STREAM_STATE {
2805 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2809 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2813 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2817 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2823 enum LOCAL_AUDIO_STREAM_ERROR {
2827 LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2831 LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2835 LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2839 LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2844 LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2848 LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
2853 enum LOCAL_VIDEO_STREAM_STATE {
2857 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2861 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2865 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2869 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2875 enum LOCAL_VIDEO_STREAM_ERROR {
2877 LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2879 LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2881 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2883 LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2885 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2887 LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2889 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6,
2891 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2893 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND = 8,
2895 LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED = 9,
2897 LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID = 10,
2899 LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE = 101,
2901 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2903 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
2905 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
2907 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
2913 enum REMOTE_AUDIO_STATE
2921 REMOTE_AUDIO_STATE_STOPPED = 0,
2925 REMOTE_AUDIO_STATE_STARTING = 1,
2932 REMOTE_AUDIO_STATE_DECODING = 2,
2937 REMOTE_AUDIO_STATE_FROZEN = 3,
2942 REMOTE_AUDIO_STATE_FAILED = 4,
2948 enum REMOTE_AUDIO_STATE_REASON
2953 REMOTE_AUDIO_REASON_INTERNAL = 0,
2957 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2961 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2966 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2971 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2976 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2981 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2985 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2989 enum REMOTE_VIDEO_STATE {
2995 REMOTE_VIDEO_STATE_STOPPED = 0,
2998 REMOTE_VIDEO_STATE_STARTING = 1,
3005 REMOTE_VIDEO_STATE_DECODING = 2,
3010 REMOTE_VIDEO_STATE_FROZEN = 3,
3014 REMOTE_VIDEO_STATE_FAILED = 4,
3017 enum REMOTE_VIDEO_STATE_REASON {
3021 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3026 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3031 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3036 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3041 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3046 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3051 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3056 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3061 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3066 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3071 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3075 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3082 enum REMOTE_USER_STATE {
3086 USER_STATE_MUTE_AUDIO = (1 << 0),
3090 USER_STATE_MUTE_VIDEO = (1 << 1),
3094 USER_STATE_ENABLE_VIDEO = (1 << 4),
3098 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3158 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3162 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3166 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3170 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3174 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3178 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3215 bool isLowLatencyAudioSupported;
3217 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3297 enum AUDIO_SAMPLE_RATE_TYPE {
3301 AUDIO_SAMPLE_RATE_32000 = 32000,
3305 AUDIO_SAMPLE_RATE_44100 = 44100,
3309 AUDIO_SAMPLE_RATE_48000 = 48000,
3311 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3315 VIDEO_CODEC_H264_FOR_STREAM = 1,
3319 VIDEO_CODEC_H265_FOR_STREAM = 2,
3325 enum VIDEO_CODEC_PROFILE_TYPE {
3329 VIDEO_CODEC_PROFILE_BASELINE = 66,
3333 VIDEO_CODEC_PROFILE_MAIN = 77,
3337 VIDEO_CODEC_PROFILE_HIGH = 100,
3344 enum AUDIO_CODEC_PROFILE_TYPE {
3348 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3352 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3356 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3395 enum RTMP_STREAM_PUBLISH_STATE {
3398 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3401 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3404 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3410 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3413 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3416 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3422 enum RTMP_STREAM_PUBLISH_ERROR_TYPE {
3424 RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3426 RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3428 RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3430 RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3432 RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3434 RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3436 RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3438 RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3440 RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3442 RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3444 RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3446 RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER = 11,
3448 RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM = 13,
3450 RTMP_STREAM_PUBLISH_ERROR_NET_DOWN = 14,
3452 RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID = 15,
3460 RTMP_STREAM_UNPUBLISH_ERROR_OK = 100,
3464 enum RTMP_STREAMING_EVENT {
3467 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3472 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3475 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3478 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3544 enum CONNECTION_STATE_TYPE
3549 CONNECTION_STATE_DISCONNECTED = 1,
3553 CONNECTION_STATE_CONNECTING = 2,
3558 CONNECTION_STATE_CONNECTED = 3,
3563 CONNECTION_STATE_RECONNECTING = 4,
3567 CONNECTION_STATE_FAILED = 5,
3754 unsigned int advancedFeatureCount;
3756 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) {}
3807 :
sourceType(agora::media::PRIMARY_CAMERA_SOURCE),
3876 enum LASTMILE_PROBE_RESULT_STATE {
3880 LASTMILE_PROBE_RESULT_COMPLETE = 1,
3885 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3890 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3939 :
state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
3946 enum CONNECTION_CHANGED_REASON_TYPE
3951 CONNECTION_CHANGED_CONNECTING = 0,
3955 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3959 CONNECTION_CHANGED_INTERRUPTED = 2,
3963 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3967 CONNECTION_CHANGED_JOIN_FAILED = 4,
3971 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3975 CONNECTION_CHANGED_INVALID_APP_ID = 6,
3979 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3983 CONNECTION_CHANGED_INVALID_TOKEN = 8,
3987 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3991 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3995 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3999 CONNECTION_CHANGED_RENEW_TOKEN = 12,
4004 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4008 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4012 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4016 CONNECTION_CHANGED_LOST = 16,
4020 CONNECTION_CHANGED_ECHO_TEST = 17,
4024 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4028 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4032 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4038 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4042 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4046 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4050 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3,
4054 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4,
4064 NETWORK_TYPE_UNKNOWN = -1,
4068 NETWORK_TYPE_DISCONNECTED = 0,
4072 NETWORK_TYPE_LAN = 1,
4076 NETWORK_TYPE_WIFI = 2,
4080 NETWORK_TYPE_MOBILE_2G = 3,
4084 NETWORK_TYPE_MOBILE_3G = 4,
4088 NETWORK_TYPE_MOBILE_4G = 5,
4094 enum VIDEO_VIEW_SETUP_MODE {
4098 VIDEO_VIEW_SETUP_REPLACE = 0,
4102 VIDEO_VIEW_SETUP_ADD = 1,
4106 VIDEO_VIEW_SETUP_REMOVE = 2,
4135 VIDEO_SOURCE_TYPE sourceType;
4139 VIDEO_VIEW_SETUP_MODE setupMode;
4142 uid(0), isScreenView(false), priv(NULL), priv_size(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
4143 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4145 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
4146 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
4148 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
4248 float _scale_factor;
4249 float _focal_length;
4250 float _pol_focal_length;
4251 float _split_height;
4257 _pol_focal_length(31),
4258 _split_height(1.0) {
4265 FishCorrectionParams(
float x_center,
float y_center,
float scale_factor,
float focal_length,
float pol_focal_length,
float split_height,
float ss[])
4266 : _x_center(x_center),
4267 _y_center(y_center),
4268 _scale_factor(scale_factor),
4269 _focal_length(focal_length),
4270 _pol_focal_length(pol_focal_length),
4271 _split_height(split_height) {
4272 if (ss != OPTIONAL_NULLPTR) {
4273 for (
int i = 0; i < 5; i++) {
4300 enum VOICE_BEAUTIFIER_PRESET {
4303 VOICE_BEAUTIFIER_OFF = 0x00000000,
4309 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4315 CHAT_BEAUTIFIER_FRESH = 0x01010200,
4321 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4335 SINGING_BEAUTIFIER = 0x01020100,
4338 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4341 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4344 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4347 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4350 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4353 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4356 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4359 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4361 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4366 enum AUDIO_EFFECT_PRESET {
4369 AUDIO_EFFECT_OFF = 0x00000000,
4377 ROOM_ACOUSTICS_KTV = 0x02010100,
4385 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4393 ROOM_ACOUSTICS_STUDIO = 0x02010300,
4401 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
4408 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
4416 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
4424 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
4436 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
4447 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
4458 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
4469 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
4480 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
4491 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
4500 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
4508 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
4516 STYLE_TRANSFORMATION_RNB = 0x02030100,
4524 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
4534 PITCH_CORRECTION = 0x02040100
4543 enum VOICE_CONVERSION_PRESET {
4546 VOICE_CONVERSION_OFF = 0x00000000,
4549 VOICE_CHANGER_NEUTRAL = 0x03010100,
4552 VOICE_CHANGER_SWEET = 0x03010200,
4555 VOICE_CHANGER_SOLID = 0x03010300,
4558 VOICE_CHANGER_BASS = 0x03010400
4604 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
4606 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
4608 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t *ex,
int cnt)
4610 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t *ex,
int cnt)
4617 enum AUDIO_RECORDING_QUALITY_TYPE {
4621 AUDIO_RECORDING_QUALITY_LOW = 0,
4625 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4629 AUDIO_RECORDING_QUALITY_HIGH = 2,
4635 enum AUDIO_FILE_RECORDING_TYPE {
4639 AUDIO_FILE_RECORDING_MIC = 1,
4643 AUDIO_FILE_RECORDING_PLAYBACK = 2,
4647 AUDIO_FILE_RECORDING_MIXED = 3,
4653 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4657 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4661 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4665 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4702 quality(AUDIO_RECORDING_QUALITY_LOW) {}
4711 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4718 AudioRecordingConfiguration(
const AudioRecordingConfiguration &rhs)
4741 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4784 AREA_CODE_CN = 0x00000001,
4788 AREA_CODE_NA = 0x00000002,
4792 AREA_CODE_EU = 0x00000004,
4796 AREA_CODE_AS = 0x00000008,
4800 AREA_CODE_JP = 0x00000010,
4804 AREA_CODE_IN = 0x00000020,
4808 AREA_CODE_GLOB = (0xFFFFFFFF)
4815 AREA_CODE_OC = 0x00000040,
4819 AREA_CODE_SA = 0x00000080,
4823 AREA_CODE_AF = 0x00000100,
4827 AREA_CODE_KR = 0x00000200,
4831 AREA_CODE_OVS = 0xFFFFFFFE
4834 enum CHANNEL_MEDIA_RELAY_ERROR {
4840 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
4845 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
4849 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
4852 RELAY_ERROR_FAILED_JOIN_SRC = 4,
4855 RELAY_ERROR_FAILED_JOIN_DEST = 5,
4858 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
4861 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
4866 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
4869 RELAY_ERROR_INTERNAL_ERROR = 9,
4872 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
4875 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
4879 enum CHANNEL_MEDIA_RELAY_EVENT {
4883 RELAY_EVENT_NETWORK_DISCONNECTED = 0,
4886 RELAY_EVENT_NETWORK_CONNECTED = 1,
4889 RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
4892 RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
4895 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
4898 RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
4901 RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4904 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4907 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4911 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4914 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4917 RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4920 RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12,
4923 RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13,
4926 RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14,
4929 RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15,
4932 enum CHANNEL_MEDIA_RELAY_STATE {
4935 RELAY_STATE_IDLE = 0,
4938 RELAY_STATE_CONNECTING = 1,
4942 RELAY_STATE_RUNNING = 2,
4945 RELAY_STATE_FAILURE = 3,
5039 :
uid(OPTIONAL_NULLPTR),
5045 if (
this == &rhs)
return *
this;
5046 uid = OPTIONAL_NULLPTR;
5050 if (rhs.
uid != OPTIONAL_NULLPTR) {
5051 char* temp =
new char[strlen(rhs.
uid) + 1];
5052 strcpy(temp, rhs.
uid);
5058 ~PeerDownlinkInfo() {
5059 if (
uid) {
delete []
uid; }
5103 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
5104 if (
this == &rhs)
return *
this;
5118 ~DownlinkNetworkInfo() {
5125 enum ENCRYPTION_MODE {
5167 uint8_t encryptionKdfSalt[32];
5173 memset(encryptionKdfSalt, 0,
sizeof(encryptionKdfSalt));
5177 const char* getEncryptionString()
const {
5180 return "aes-128-xts";
5182 return "aes-128-ecb";
5184 return "aes-256-xts";
5186 return "sm4-128-ecb";
5188 return "aes-128-gcm";
5190 return "aes-256-gcm";
5192 return "aes-128-gcm-2";
5194 return "aes-256-gcm-2";
5196 return "aes-128-gcm-2";
5198 return "aes-128-gcm-2";
5205 enum ENCRYPTION_ERROR_TYPE {
5206 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5207 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5208 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5211 enum UPLOAD_ERROR_REASON
5214 UPLOAD_NET_ERROR = 1,
5215 UPLOAD_SERVER_ERROR = 2,
5220 enum PERMISSION_TYPE {
5227 enum MAX_USER_ACCOUNT_LENGTH_TYPE
5231 MAX_USER_ACCOUNT_LENGTH = 256
5237 enum STREAM_SUBSCRIBE_STATE {
5239 SUB_STATE_NO_SUBSCRIBED = 1,
5240 SUB_STATE_SUBSCRIBING = 2,
5241 SUB_STATE_SUBSCRIBED = 3
5247 enum STREAM_PUBLISH_STATE {
5249 PUB_STATE_NO_PUBLISHED = 1,
5250 PUB_STATE_PUBLISHING = 2,
5251 PUB_STATE_PUBLISHED = 3
5275 enum EAR_MONITORING_FILTER_TYPE {
5279 EAR_MONITORING_FILTER_NONE = (1<<0),
5283 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
5287 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
5293 enum THREAD_PRIORITY_TYPE {
5326 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
5339 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
5347 virtual void onCertificateRequired() = 0;
5348 virtual void onLicenseRequest() = 0;
5349 virtual void onLicenseValidated() = 0;
5350 virtual void onLicenseError(
int result) = 0;
5392 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
5399 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
5401 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
5425 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char *credential_buf,
int credential_len,
5426 const char *certificate_buf,
int certificate_len);
5469 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();