9 #pragma once // NOLINT(build/header_guard)
16 #include "IAgoraParameter.h"
17 #include "AgoraMediaBase.h"
18 #include "AgoraRefPtr.h"
20 #define MAX_PATH_260 (260)
24 #ifndef WIN32_LEAN_AND_MEAN
25 #define WIN32_LEAN_AND_MEAN
26 #endif // !WIN32_LEAN_AND_MEAN
30 #if defined(AGORARTC_EXPORT)
31 #define AGORA_API extern "C" __declspec(dllexport)
33 #define AGORA_API extern "C" __declspec(dllimport)
34 #endif // AGORARTC_EXPORT
36 #define AGORA_CALL __cdecl
38 #elif defined(__APPLE__)
40 #include <TargetConditionals.h>
42 #define AGORA_API extern "C" __attribute__((visibility("default")))
45 #elif defined(__ANDROID__) || defined(__linux__)
47 #define AGORA_API extern "C" __attribute__((visibility("default")))
50 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
52 #define AGORA_API extern "C"
64 typedef commons::cjson::JsonWrapper any_document_t;
71 virtual int setParameters(
const char* parameters) = 0;
72 virtual int getParameters(
const char* key, any_document_t& result) = 0;
83 typedef T* pointer_type;
86 explicit AutoPtr(pointer_type p = NULL) : ptr_(p) {}
95 operator bool()
const {
return (ptr_ != NULL); }
97 value_type& operator*()
const {
return *get(); }
99 pointer_type operator->()
const {
return get(); }
101 pointer_type get()
const {
return ptr_; }
103 pointer_type release() {
104 pointer_type ret = ptr_;
109 void reset(pointer_type ptr = NULL) {
110 if (ptr != ptr_ && ptr_) {
117 template <
class C1,
class C2>
118 bool queryInterface(C1* c, C2 iid) {
119 pointer_type p = NULL;
120 if (c && !c->queryInterface(iid,
reinterpret_cast<void**
>(&p))) {
137 typedef typename AutoPtr<T>::pointer_type pointer_type;
143 if (
this != &rhs) this->reset(rhs.clone());
146 pointer_type clone()
const {
147 if (!this->get())
return NULL;
148 return this->get()->clone();
154 virtual bool empty()
const = 0;
155 virtual const char* c_str() = 0;
156 virtual const char* data() = 0;
157 virtual size_t length() = 0;
159 virtual void release() = 0;
166 virtual void* current() = 0;
167 virtual const void* const_current()
const = 0;
168 virtual bool next() = 0;
169 virtual void release() = 0;
176 virtual size_t size()
const = 0;
177 virtual void release() = 0;
186 typedef T value_type;
187 typedef value_type& reference;
188 typedef const value_type& const_reference;
189 typedef value_type* pointer;
190 typedef const value_type* const_pointer;
202 return p->current() == rhs.p->current();
204 return valid() == rhs.valid();
206 bool operator!=(
const AOutputIterator& rhs)
const {
return !this->operator==(rhs); }
207 reference operator*() {
return *
reinterpret_cast<pointer
>(p->current()); }
208 const_reference operator*()
const {
return *
reinterpret_cast<const_pointer
>(p->const_current()); }
209 bool valid()
const {
return p && p->current() != NULL; }
218 typedef T value_type;
219 typedef value_type& reference;
220 typedef const value_type& const_reference;
221 typedef value_type* pointer;
222 typedef const value_type* const_pointer;
223 typedef size_t size_type;
228 AList() : container(NULL), owner(
false) {}
229 AList(
IContainer* c,
bool take_ownership) : container(c), owner(take_ownership) {}
230 ~
AList() { reset(); }
231 void reset(
IContainer* c = NULL,
bool take_ownership =
false) {
232 if (owner && container) container->release();
234 owner = take_ownership;
238 size_type size()
const {
return container ? container->size() : 0; }
239 bool empty()
const {
return size() == 0; }
247 enum CHANNEL_PROFILE_TYPE {
253 CHANNEL_PROFILE_COMMUNICATION = 0,
259 CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
264 CHANNEL_PROFILE_GAME = 2,
271 CHANNEL_PROFILE_CLOUD_GAMING = 3,
278 CHANNEL_PROFILE_COMMUNICATION_1v1 = 4,
285 CHANNEL_PROFILE_LIVE_BROADCASTING_2 = 5,
291 enum WARN_CODE_TYPE {
296 WARN_INVALID_VIEW = 8,
301 WARN_INIT_VIDEO = 16,
311 WARN_NO_AVAILABLE_CHANNEL = 103,
317 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
322 WARN_LOOKUP_CHANNEL_REJECTED = 105,
328 WARN_OPEN_CHANNEL_TIMEOUT = 106,
333 WARN_OPEN_CHANNEL_REJECTED = 107,
339 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
343 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
347 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
351 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
355 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
359 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
363 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
366 WARN_CHANNEL_SOCKET_ERROR = 134,
370 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
374 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
378 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
382 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
386 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
390 WARN_ADM_RECORD_MALFUNCTION = 1021,
397 WARN_ADM_IOS_CATEGORY_NOT_PLAYANDRECORD = 1029,
401 WARN_ADM_IOS_SAMPLERATE_CHANGE = 1030,
405 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
409 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
417 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
421 WARN_APM_HOWLING = 1051,
425 WARN_ADM_GLITCH_STATE = 1052,
429 WARN_ADM_IMPROPER_SETTINGS = 1053,
433 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
438 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
446 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
452 enum ERROR_CODE_TYPE {
466 ERR_INVALID_ARGUMENT = 2,
477 ERR_NOT_SUPPORTED = 4,
485 ERR_BUFFER_TOO_SMALL = 6,
489 ERR_NOT_INITIALIZED = 7,
493 ERR_INVALID_STATE = 8,
498 ERR_NO_PERMISSION = 9,
521 ERR_BIND_SOCKET = 13,
538 ERR_JOIN_CHANNEL_REJECTED = 17,
545 ERR_LEAVE_CHANNEL_REJECTED = 18,
549 ERR_ALREADY_IN_USE = 19,
559 ERR_INIT_NET_ENGINE = 21,
564 ERR_RESOURCE_LIMITED = 22,
570 ERR_INVALID_APP_ID = 101,
575 ERR_INVALID_CHANNEL_NAME = 102,
588 ERR_TOKEN_EXPIRED = 109,
605 ERR_INVALID_TOKEN = 110,
610 ERR_CONNECTION_INTERRUPTED = 111,
615 ERR_CONNECTION_LOST = 112,
620 ERR_NOT_IN_CHANNEL = 113,
625 ERR_SIZE_TOO_LARGE = 114,
630 ERR_BITRATE_LIMIT = 115,
635 ERR_TOO_MANY_DATA_STREAMS = 116,
639 ERR_STREAM_MESSAGE_TIMEOUT = 117,
643 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
648 ERR_DECRYPTION_FAILED = 120,
652 ERR_INVALID_USER_ID = 121,
656 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
660 ERR_WATERMARK_PARAM = 124,
664 ERR_WATERMARK_PATH = 125,
668 ERR_WATERMARK_PNG = 126,
672 ERR_WATERMARKR_INFO = 127,
676 ERR_WATERMARK_ARGB = 128,
680 ERR_WATERMARK_READ = 129,
686 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
691 ERR_LICENSE_CREDENTIAL_INVALID = 131,
695 ERR_CERT_JSON_PART = 158,
696 ERR_CERT_JSON_INVAL = 159,
697 ERR_CERT_JSON_NOMEM = 160,
698 ERR_CERT_CUSTOM = 161,
699 ERR_CERT_CREDENTIAL = 162,
704 ERR_CERT_DUEDATE = 167,
705 ERR_CERT_REQUEST = 168,
708 ERR_PCMSEND_FORMAT =200,
709 ERR_PCMSEND_BUFFEROVERFLOW = 201,
713 ERR_LOGOUT_OTHER = 400,
714 ERR_LOGOUT_USER = 401,
715 ERR_LOGOUT_NET = 402,
716 ERR_LOGOUT_KICKED = 403,
717 ERR_LOGOUT_PACKET = 404,
718 ERR_LOGOUT_TOKEN_EXPIRED = 405,
719 ERR_LOGOUT_OLDVERSION = 406,
720 ERR_LOGOUT_TOKEN_WRONG = 407,
721 ERR_LOGOUT_ALREADY_LOGOUT = 408,
722 ERR_LOGIN_OTHER = 420,
724 ERR_LOGIN_FAILED = 422,
725 ERR_LOGIN_CANCELED = 423,
726 ERR_LOGIN_TOKEN_EXPIRED = 424,
727 ERR_LOGIN_OLD_VERSION = 425,
728 ERR_LOGIN_TOKEN_WRONG = 426,
729 ERR_LOGIN_TOKEN_KICKED = 427,
730 ERR_LOGIN_ALREADY_LOGIN = 428,
731 ERR_JOIN_CHANNEL_OTHER = 440,
732 ERR_SEND_MESSAGE_OTHER = 440,
733 ERR_SEND_MESSAGE_TIMEOUT = 441,
734 ERR_QUERY_USERNUM_OTHER = 450,
735 ERR_QUERY_USERNUM_TIMEOUT = 451,
736 ERR_QUERY_USERNUM_BYUSER = 452,
737 ERR_LEAVE_CHANNEL_OTHER = 460,
738 ERR_LEAVE_CHANNEL_KICKED = 461,
739 ERR_LEAVE_CHANNEL_BYUSER = 462,
740 ERR_LEAVE_CHANNEL_LOGOUT = 463,
741 ERR_LEAVE_CHANNEL_DISCONNECTED = 464,
742 ERR_INVITE_OTHER = 470,
743 ERR_INVITE_REINVITE = 471,
744 ERR_INVITE_NET = 472,
745 ERR_INVITE_PEER_OFFLINE = 473,
746 ERR_INVITE_TIMEOUT = 474,
747 ERR_INVITE_CANT_RECV = 475,
753 ERR_LOAD_MEDIA_ENGINE = 1001,
757 ERR_START_CALL = 1002,
761 ERR_START_CAMERA = 1003,
765 ERR_START_VIDEO_RENDER = 1004,
771 ERR_ADM_GENERAL_ERROR = 1005,
775 ERR_ADM_JAVA_RESOURCE = 1006,
779 ERR_ADM_SAMPLE_RATE = 1007,
784 ERR_ADM_INIT_PLAYOUT = 1008,
788 ERR_ADM_START_PLAYOUT = 1009,
792 ERR_ADM_STOP_PLAYOUT = 1010,
797 ERR_ADM_INIT_RECORDING = 1011,
801 ERR_ADM_START_RECORDING = 1012,
805 ERR_ADM_STOP_RECORDING = 1013,
810 ERR_ADM_RUNTIME_PLAYOUT_ERROR = 1015,
814 ERR_ADM_RUNTIME_RECORDING_ERROR = 1017,
818 ERR_ADM_RECORD_AUDIO_FAILED = 1018,
823 ERR_ADM_INIT_LOOPBACK = 1022,
828 ERR_ADM_START_LOOPBACK = 1023,
833 ERR_ADM_NO_PERMISSION = 1027,
837 ERR_ADM_RECORD_AUDIO_IS_ACTIVE = 1033,
841 ERR_ADM_ANDROID_JNI_JAVA_RESOURCE = 1101,
847 ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY = 1108,
853 ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY = 1109,
861 ERR_ADM_ANDROID_JNI_JAVA_START_RECORD = 1111,
869 ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK = 1112,
874 ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR = 1115,
876 ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE = 1151,
878 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER = 1153,
880 ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD = 1156,
882 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER = 1157,
884 ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD = 1160,
891 ERR_ADM_IOS_INPUT_NOT_AVAILABLE = 1201,
895 ERR_ADM_IOS_ACTIVATE_SESSION_FAIL = 1206,
900 ERR_ADM_IOS_VPIO_INIT_FAIL = 1210,
905 ERR_ADM_IOS_VPIO_REINIT_FAIL = 1213,
910 ERR_ADM_IOS_VPIO_RESTART_FAIL = 1214,
911 ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219,
913 ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO = 1221,
921 ERR_ADM_WIN_CORE_INIT = 1301,
928 ERR_ADM_WIN_CORE_INIT_RECORDING = 1303,
935 ERR_ADM_WIN_CORE_INIT_PLAYOUT = 1306,
941 ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL = 1307,
948 ERR_ADM_WIN_CORE_START_RECORDING = 1309,
955 ERR_ADM_WIN_CORE_CREATE_REC_THREAD = 1311,
964 ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP = 1314,
971 ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD = 1319,
980 ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP = 1320,
986 ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
992 ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
1002 ERR_ADM_WIN_WAVE_INIT = 1351,
1011 ERR_ADM_WIN_WAVE_INIT_RECORDING = 1353,
1020 ERR_ADM_WIN_WAVE_INIT_MICROPHONE = 1354,
1029 ERR_ADM_WIN_WAVE_INIT_PLAYOUT = 1355,
1038 ERR_ADM_WIN_WAVE_INIT_SPEAKER = 1356,
1047 ERR_ADM_WIN_WAVE_START_RECORDING = 1357,
1056 ERR_ADM_WIN_WAVE_START_PLAYOUT = 1358,
1060 ERR_ADM_NO_RECORDING_DEVICE = 1359,
1064 ERR_ADM_NO_PLAYOUT_DEVICE = 1360,
1070 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
1076 ERR_VDM_WIN_DEVICE_IN_USE = 1502,
1082 ERR_VCM_UNKNOWN_ERROR = 1600,
1087 ERR_VCM_ENCODER_INIT_ERROR = 1601,
1091 ERR_VCM_ENCODER_ENCODE_ERROR = 1602,
1095 ERR_VCM_ENCODER_SET_ERROR = 1603,
1098 typedef const char* user_id_t;
1099 typedef void* view_t;
1125 typedef util::AList<UserInfo> UserList;
1133 enum USER_OFFLINE_REASON_TYPE {
1137 USER_OFFLINE_QUIT = 0,
1143 USER_OFFLINE_DROPPED = 1,
1147 USER_OFFLINE_BECOME_AUDIENCE = 2,
1150 enum INTERFACE_ID_TYPE {
1151 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
1152 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
1153 AGORA_IID_PARAMETER_ENGINE = 3,
1154 AGORA_IID_MEDIA_ENGINE = 4,
1155 AGORA_IID_AUDIO_ENGINE = 5,
1156 AGORA_IID_VIDEO_ENGINE = 6,
1157 AGORA_IID_RTC_CONNECTION = 7,
1158 AGORA_IID_SIGNALING_ENGINE = 8,
1159 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
1170 QUALITY_UNKNOWN = 0,
1174 QUALITY_EXCELLENT = 1,
1199 QUALITY_UNSUPPORTED = 7,
1209 enum FIT_MODE_TYPE {
1227 enum VIDEO_ORIENTATION {
1231 VIDEO_ORIENTATION_0 = 0,
1235 VIDEO_ORIENTATION_90 = 90,
1239 VIDEO_ORIENTATION_180 = 180,
1243 VIDEO_ORIENTATION_270 = 270
1253 FRAME_RATE_FPS_1 = 1,
1257 FRAME_RATE_FPS_7 = 7,
1261 FRAME_RATE_FPS_10 = 10,
1265 FRAME_RATE_FPS_15 = 15,
1269 FRAME_RATE_FPS_24 = 24,
1273 FRAME_RATE_FPS_30 = 30,
1277 FRAME_RATE_FPS_60 = 60,
1281 FRAME_WIDTH_640 = 640,
1285 FRAME_HEIGHT_360 = 360,
1292 enum VIDEO_FRAME_TYPE {
1294 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1296 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1298 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1300 VIDEO_FRAME_TYPE_B_FRAME = 5,
1302 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1304 VIDEO_FRAME_TYPE_UNKNOW
1310 enum ORIENTATION_MODE {
1318 ORIENTATION_MODE_ADAPTIVE = 0,
1326 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1334 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1340 enum DEGRADATION_PREFERENCE {
1344 MAINTAIN_QUALITY = 0,
1348 MAINTAIN_FRAMERATE = 1,
1352 MAINTAIN_BALANCED = 2,
1356 MAINTAIN_RESOLUTION = 3,
1384 const int STANDARD_BITRATE = 0;
1393 const int COMPATIBLE_BITRATE = -1;
1398 const int DEFAULT_MIN_BITRATE = -1;
1403 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1408 enum VIDEO_CODEC_TYPE {
1412 VIDEO_CODEC_VP8 = 1,
1416 VIDEO_CODEC_H264 = 2,
1420 VIDEO_CODEC_H265 = 3,
1424 VIDEO_CODEC_VP9 = 5,
1428 VIDEO_CODEC_GENERIC = 6,
1432 VIDEO_CODEC_GENERIC_H264 = 7,
1436 VIDEO_CODEC_GENERIC_JPEG = 20,
1442 enum AUDIO_CODEC_TYPE {
1446 AUDIO_CODEC_OPUS = 1,
1451 AUDIO_CODEC_PCMA = 3,
1455 AUDIO_CODEC_PCMU = 4,
1459 AUDIO_CODEC_G722 = 5,
1466 AUDIO_CODEC_AACLC = 8,
1470 AUDIO_CODEC_HEAAC = 9,
1474 AUDIO_CODEC_JC1 = 10,
1475 AUDIO_CODEC_HEAAC2 = 11,
1481 enum WATERMARK_FIT_MODE {
1486 FIT_MODE_COVER_POSITION,
1491 FIT_MODE_USE_IMAGE_RATIO
1500 codec(AUDIO_CODEC_AACLC),
1578 enum H264PacketizeMode {
1592 enum VIDEO_STREAM_TYPE {
1596 VIDEO_STREAM_HIGH = 0,
1600 VIDEO_STREAM_LOW = 1,
1612 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1685 enum VIDEO_MIRROR_MODE_TYPE {
1689 VIDEO_MIRROR_MODE_AUTO = 0,
1693 VIDEO_MIRROR_MODE_ENABLED = 1,
1697 VIDEO_MIRROR_MODE_DISABLED = 2,
1812 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1821 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
1830 VideoEncoderConfiguration()
1832 dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360),
1945 ,
mode(FIT_MODE_COVER_POSITION)
2131 enum VIDEO_SOURCE_TYPE {
2134 VIDEO_SOURCE_CAMERA_PRIMARY,
2135 VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
2138 VIDEO_SOURCE_CAMERA_SECONDARY,
2141 VIDEO_SOURCE_SCREEN_PRIMARY,
2142 VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
2145 VIDEO_SOURCE_SCREEN_SECONDARY,
2148 VIDEO_SOURCE_CUSTOM,
2151 VIDEO_SOURCE_MEDIA_PLAYER,
2154 VIDEO_SOURCE_RTC_IMAGE_PNG,
2157 VIDEO_SOURCE_RTC_IMAGE_JPEG,
2160 VIDEO_SOURCE_RTC_IMAGE_GIF,
2163 VIDEO_SOURCE_REMOTE,
2166 VIDEO_SOURCE_TRANSCODED,
2168 VIDEO_SOURCE_UNKNOWN = 100
2174 enum CLIENT_ROLE_TYPE {
2178 CLIENT_ROLE_BROADCASTER = 1,
2182 CLIENT_ROLE_AUDIENCE = 2,
2252 enum AUDIO_PROFILE_TYPE {
2260 AUDIO_PROFILE_DEFAULT = 0,
2264 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2268 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2273 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2277 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2281 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2285 AUDIO_PROFILE_IOT = 6,
2286 AUDIO_PROFILE_NUM = 7
2292 enum AUDIO_SCENARIO_TYPE {
2296 AUDIO_SCENARIO_DEFAULT = 0,
2300 AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT = 1,
2304 AUDIO_SCENARIO_EDUCATION = 2,
2310 AUDIO_SCENARIO_GAME_STREAMING = 3,
2315 AUDIO_SCENARIO_SHOWROOM = 4,
2319 AUDIO_SCENARIO_CHATROOM_GAMING = 5,
2323 AUDIO_SCENARIO_HIGH_DEFINITION = 6,
2327 AUDIO_SCENARIO_NUM = 7,
2362 enum VIDEO_CONTENT_HINT {
2373 CONTENT_HINT_MOTION,
2379 CONTENT_HINT_DETAILS
2385 enum LOCAL_AUDIO_STREAM_STATE {
2389 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2393 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2397 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2401 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2407 enum LOCAL_AUDIO_STREAM_ERROR {
2411 LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2415 LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2419 LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2423 LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2428 LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2432 LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
2437 enum LOCAL_VIDEO_STREAM_STATE {
2441 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2445 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2449 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2453 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2459 enum LOCAL_VIDEO_STREAM_ERROR {
2461 LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2463 LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2465 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2467 LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2469 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2471 LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5
2477 enum REMOTE_AUDIO_STATE
2485 REMOTE_AUDIO_STATE_STOPPED = 0,
2489 REMOTE_AUDIO_STATE_STARTING = 1,
2496 REMOTE_AUDIO_STATE_DECODING = 2,
2501 REMOTE_AUDIO_STATE_FROZEN = 3,
2506 REMOTE_AUDIO_STATE_FAILED = 4,
2512 enum REMOTE_AUDIO_STATE_REASON
2517 REMOTE_AUDIO_REASON_INTERNAL = 0,
2521 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2525 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2530 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2535 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2540 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2545 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2549 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2553 enum REMOTE_VIDEO_STATE {
2559 REMOTE_VIDEO_STATE_STOPPED = 0,
2562 REMOTE_VIDEO_STATE_STARTING = 1,
2569 REMOTE_VIDEO_STATE_DECODING = 2,
2574 REMOTE_VIDEO_STATE_FROZEN = 3,
2578 REMOTE_VIDEO_STATE_FAILED = 4,
2581 enum REMOTE_VIDEO_STATE_REASON {
2585 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2590 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2595 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2600 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2605 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2610 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2615 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2620 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2625 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2630 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9
2684 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
2688 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
2692 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
2696 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
2700 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
2704 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
2820 enum AUDIO_SAMPLE_RATE_TYPE {
2824 AUDIO_SAMPLE_RATE_32000 = 32000,
2828 AUDIO_SAMPLE_RATE_44100 = 44100,
2832 AUDIO_SAMPLE_RATE_48000 = 48000,
2837 enum VIDEO_CODEC_PROFILE_TYPE {
2841 VIDEO_CODEC_PROFILE_BASELINE = 66,
2845 VIDEO_CODEC_PROFILE_MAIN = 77,
2849 VIDEO_CODEC_PROFILE_HIGH = 100,
2855 enum AUDIO_CODEC_PROFILE_TYPE {
2859 AUDIO_CODEC_PROFILE_LC_AAC = 0,
2863 AUDIO_CODEC_PROFILE_HE_AAC = 1,
2894 enum RTMP_STREAM_PUBLISH_STATE {
2901 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
2907 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
2912 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
2922 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
2927 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
2933 enum RTMP_STREAM_PUBLISH_ERROR {
2937 RTMP_STREAM_PUBLISH_ERROR_FAILED = -1,
2941 RTMP_STREAM_PUBLISH_ERROR_OK = 0,
2947 RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
2951 RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
2956 RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
2961 RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
2965 RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
2969 RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
2973 RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
2977 RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
2981 RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
2985 RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
2990 RTMP_STREAM_PUBLISH_ERROR_CDN_ERROR = 11,
2994 RTMP_STREAM_PUBLISH_ERROR_ALREADY_IN_USE = 12,
3033 enum CONNECTION_STATE_TYPE
3038 CONNECTION_STATE_DISCONNECTED = 1,
3042 CONNECTION_STATE_CONNECTING = 2,
3047 CONNECTION_STATE_CONNECTED = 3,
3052 CONNECTION_STATE_RECONNECTING = 4,
3056 CONNECTION_STATE_FAILED = 5,
3380 enum LASTMILE_PROBE_RESULT_STATE {
3384 LASTMILE_PROBE_RESULT_COMPLETE = 1,
3389 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3394 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3449 enum CONNECTION_CHANGED_REASON_TYPE
3454 CONNECTION_CHANGED_CONNECTING = 0,
3458 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3462 CONNECTION_CHANGED_INTERRUPTED = 2,
3466 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3470 CONNECTION_CHANGED_JOIN_FAILED = 4,
3474 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3478 CONNECTION_CHANGED_INVALID_APP_ID = 6,
3482 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3486 CONNECTION_CHANGED_INVALID_TOKEN = 8,
3490 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3494 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3498 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3502 CONNECTION_CHANGED_RENEW_TOKEN = 12,
3507 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3511 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3515 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3519 CONNECTION_CHANGED_LOST = 16,
3523 CONNECTION_CHANGED_ECHO_TEST = 17,
3527 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
3537 NETWORK_TYPE_UNKNOWN = -1,
3541 NETWORK_TYPE_DISCONNECTED = 0,
3545 NETWORK_TYPE_LAN = 1,
3549 NETWORK_TYPE_WIFI = 2,
3553 NETWORK_TYPE_MOBILE_2G = 3,
3557 NETWORK_TYPE_MOBILE_3G = 4,
3561 NETWORK_TYPE_MOBILE_4G = 5,
3590 VIDEO_SOURCE_TYPE sourceType;
3593 uid(0), isScreenView(false), priv(NULL), priv_size(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3594 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
3596 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3597 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
3599 sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {}
3619 enum AUDIO_REVERB_PRESET {
3623 AUDIO_REVERB_OFF = 0,
3627 AUDIO_REVERB_FX_KTV = 0x02010100,
3631 AUDIO_REVERB_FX_VOCAL_CONCERT = 0x02010200,
3635 AUDIO_REVERB_FX_UNCLE = 0x02020100,
3639 AUDIO_REVERB_FX_SISTER = 0x02020400,
3643 AUDIO_REVERB_FX_STUDIO = 0x02010300,
3647 AUDIO_REVERB_FX_POPULAR = 0x02030200,
3651 AUDIO_REVERB_FX_RNB = 0x02030100,
3655 AUDIO_REVERB_FX_PHONOGRAPH = 0x02010400
3692 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
3694 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
3702 enum AUDIO_RECORDING_QUALITY_TYPE {
3706 AUDIO_RECORDING_QUALITY_LOW = 0,
3710 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
3714 AUDIO_RECORDING_QUALITY_HIGH = 2,
3720 enum AUDIO_FILE_RECORDING_TYPE {
3724 AUDIO_FILE_RECORDING_MIC = 1,
3728 AUDIO_FILE_RECORDING_PLAYBACK = 2,
3732 AUDIO_FILE_RECORDING_MIXED = 3,
3769 quality(AUDIO_RECORDING_QUALITY_LOW) {}
3778 AudioFileRecordingConfig(
const char* file_path,
bool enc,
int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type)
3785 AudioFileRecordingConfig(
const AudioFileRecordingConfig &rhs)
3796 enum VOICE_CHANGER_PRESET {
3800 VOICE_CHANGER_OFF = 0,
3804 VOICE_CHANGER_OLDMAN = 0x02020200,
3808 VOICE_CHANGER_BABYBOY = 0x02020300,
3812 VOICE_CHANGER_BABYGIRL = 0x02020500,
3817 VOICE_CHANGER_ZHUBAJIE = 0x02020600,
3821 VOICE_CHANGER_ETHEREAL = 0x02010700,
3825 VOICE_CHANGER_HULK = 0x02020700,
3829 VOICE_BEAUTY_VIGOROUS = 0x01030100,
3833 VOICE_BEAUTY_DEEP = 0x01030200,
3837 VOICE_BEAUTY_MELLOW = 0x01030300,
3841 VOICE_BEAUTY_FALSETTO = 0x01030400,
3845 VOICE_BEAUTY_FULL = 0x01030500,
3849 VOICE_BEAUTY_CLEAR = 0x01030600,
3853 VOICE_BEAUTY_RESOUNDING = 0x01030700,
3857 VOICE_BEAUTY_RINGING = 0x01030800,
3861 VOICE_BEAUTY_SPACIAL = 0x02010600,
3866 GENERAL_BEAUTY_VOICE_MALE = 0x01010100,
3871 GENERAL_BEAUTY_VOICE_FEMALE_FRESH = 0x01010200,
3876 GENERAL_BEAUTY_VOICE_FEMALE_VITALITY = 0x01010300
3884 AREA_CODE_CN = 0x00000001,
3888 AREA_CODE_NA = 0x00000002,
3892 AREA_CODE_EU = 0x00000004,
3896 AREA_CODE_AS = 0x00000008,
3900 AREA_CODE_JP = 0x00000010,
3904 AREA_CODE_IN = 0x00000020,
3908 AREA_CODE_GLOB = (0xFFFFFFFF)
3915 AREA_CODE_OC = 0x00000040,
3919 AREA_CODE_SA = 0x00000080,
3923 AREA_CODE_AF = 0x00000100,
3927 AREA_CODE_OVS = 0xFFFFFFFE
3930 enum CHANNEL_MEDIA_RELAY_ERROR {
3936 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
3941 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
3945 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
3948 RELAY_ERROR_FAILED_JOIN_SRC = 4,
3951 RELAY_ERROR_FAILED_JOIN_DEST = 5,
3954 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
3957 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
3962 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
3965 RELAY_ERROR_INTERNAL_ERROR = 9,
3968 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
3971 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
3975 enum CHANNEL_MEDIA_RELAY_EVENT {
3979 RELAY_EVENT_NETWORK_DISCONNECTED = 0,
3982 RELAY_EVENT_NETWORK_CONNECTED = 1,
3985 RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
3988 RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
3991 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
3994 RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
3997 RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4000 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4003 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4007 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4010 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4013 RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4016 enum CHANNEL_MEDIA_RELAY_STATE {
4019 RELAY_STATE_IDLE = 0,
4022 RELAY_STATE_CONNECTING = 1,
4026 RELAY_STATE_RUNNING = 2,
4029 RELAY_STATE_FAILURE = 3,
4118 enum ENCRYPTION_MODE {
4153 const char* getEncryptionString()
const {
4156 return "aes-128-xts";
4158 return "aes-128-ecb";
4160 return "aes-256-xts";
4162 return "sm4-128-ecb";
4164 return "aes-128-xts";
4166 return "aes-128-xts";
4173 enum ENCRYPTION_ERROR_TYPE {
4174 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
4175 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
4176 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
4181 enum PERMISSION_TYPE {
4188 enum MAX_USER_ACCOUNT_LENGTH_TYPE
4192 MAX_USER_ACCOUNT_LENGTH = 256
4198 enum STREAM_SUBSCRIBE_STATE {
4200 SUB_STATE_NO_SUBSCRIBED = 1,
4201 SUB_STATE_SUBSCRIBING = 2,
4202 SUB_STATE_SUBSCRIBED = 3
4208 enum STREAM_PUBLISH_STATE {
4210 PUB_STATE_NO_PUBLISHED = 1,
4211 PUB_STATE_PUBLISHING = 2,
4212 PUB_STATE_PUBLISHED = 3
4236 enum EAR_MONITORING_FILTER_TYPE {
4240 EAR_MONITORING_FILTER_NONE = (1<<0),
4244 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
4248 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
4257 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
4270 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
4278 virtual void onCertificateRequired() = 0;
4279 virtual void onLicenseRequest() = 0;
4280 virtual void onLicenseValidated() = 0;
4281 virtual void onLicenseError(
int result) = 0;
4293 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
4300 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
4302 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
4326 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char *credential_buf,
int credential_len,
4327 const char *certificate_buf,
int certificate_len);