Agora Server Gateway SDK C++ API Reference
Loading...
Searching...
No Matches
AgoraBase.h
Go to the documentation of this file.
1//
2// Agora Engine SDK
3//
4// Created by Sting Feng in 2017-11.
5// Copyright (c) 2017 Agora.io. All rights reserved.
6//
7
8// This header file is included by both high level and low level APIs,
9#pragma once // NOLINT(build/header_guard)
10
11#include <stdarg.h>
12#include <stddef.h>
13#include <stdio.h>
14#include <string.h>
15#include <cassert>
16
17#include "IAgoraParameter.h"
18#include "AgoraMediaBase.h"
19#include "AgoraRefPtr.h"
20#include "AgoraOptional.h"
21
22#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
23#define AGORA_DEPRECATED __attribute__((deprecated))
24#elif defined(_MSC_VER)
25#define AGORA_DEPRECATED __declspec(deprecated)
26#else
27#define AGORA_DEPRECATED
28#endif
29
30#define MAX_PATH_260 (260)
31
32#if defined(_WIN32)
33
34#ifndef WIN32_LEAN_AND_MEAN
35#define WIN32_LEAN_AND_MEAN
36#endif // !WIN32_LEAN_AND_MEAN
37#if defined(__aarch64__)
38#include <arm64intr.h>
39#endif
40#include <Windows.h>
41
42#if defined(AGORARTC_EXPORT)
43#define AGORA_API extern "C" __declspec(dllexport)
44#else
45#define AGORA_API extern "C" __declspec(dllimport)
46#endif // AGORARTC_EXPORT
47
48#define AGORA_CALL __cdecl
49
50#elif defined(__APPLE__)
51
52#include <TargetConditionals.h>
53
54#define AGORA_API extern "C" __attribute__((visibility("default")))
55#define AGORA_CALL
56
57#elif defined(__ANDROID__) || defined(__linux__)
58
59#define AGORA_API extern "C" __attribute__((visibility("default")))
60#define AGORA_CALL
61
62#else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
63
64#define AGORA_API extern "C"
65#define AGORA_CALL
66
67#endif // _WIN32
68
69#ifndef OPTIONAL_ENUM_SIZE_T
70#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
71#define OPTIONAL_ENUM_SIZE_T enum : size_t
72#else
73#define OPTIONAL_ENUM_SIZE_T enum
74#endif
75#endif
76
77#ifndef OPTIONAL_NULLPTR
78#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
79#define OPTIONAL_NULLPTR nullptr
80#else
81#define OPTIONAL_NULLPTR NULL
82#endif
83#endif
84
85namespace agora
86{
87 namespace commons
88 {
89 namespace cjson
90 {
91 class JsonWrapper;
92 } // namespace cjson
93 } // namespace commons
94
95 typedef commons::cjson::JsonWrapper any_document_t;
96
97 namespace base
98 {
99 class IEngineBase;
100
102 {
103 public:
104 virtual int setParameters(const char *parameters) = 0;
105 virtual int getParameters(const char *key, any_document_t &result) = 0;
106 virtual ~IParameterEngine() {}
107 };
108 } // namespace base
109
110 namespace util
111 {
112
113 template <class T>
115 {
116 protected:
117 typedef T value_type;
118 typedef T *pointer_type;
119
120 public:
121 explicit AutoPtr(pointer_type p = NULL) : ptr_(p) {}
122
124 {
125 if (ptr_)
126 {
127 ptr_->release();
128 ptr_ = NULL;
129 }
130 }
131
132 operator bool() const { return (ptr_ != NULL); }
133
134 value_type &operator*() const { return *get(); }
135
136 pointer_type operator->() const { return get(); }
137
138 pointer_type get() const { return ptr_; }
139
141 {
142 pointer_type ret = ptr_;
143 ptr_ = 0;
144 return ret;
145 }
146
147 void reset(pointer_type ptr = NULL)
148 {
149 if (ptr != ptr_ && ptr_)
150 {
151 ptr_->release();
152 }
153
154 ptr_ = ptr;
155 }
156
157 template <class C1, class C2>
158 bool queryInterface(C1 *c, C2 iid)
159 {
160 pointer_type p = NULL;
161 if (c && !c->queryInterface(iid, reinterpret_cast<void **>(&p)))
162 {
163 reset(p);
164 }
165
166 return (p != NULL);
167 }
168
169 private:
170 AutoPtr(const AutoPtr &);
171 AutoPtr &operator=(const AutoPtr &);
172
173 private:
174 pointer_type ptr_;
175 };
176
177 template <class T>
178 class CopyableAutoPtr : public AutoPtr<T>
179 {
180 typedef typename AutoPtr<T>::pointer_type pointer_type;
181
182 public:
183 explicit CopyableAutoPtr(pointer_type p = 0) : AutoPtr<T>(p) {}
184 explicit CopyableAutoPtr(const CopyableAutoPtr &rhs) { this->reset(rhs.clone()); }
186 {
187 if (this != &rhs)
188 this->reset(rhs.clone());
189 return *this;
190 }
191 pointer_type clone() const
192 {
193 if (!this->get())
194 return NULL;
195 return this->get()->clone();
196 }
197 };
198
200 {
201 public:
202 virtual bool empty() const = 0;
203 virtual const char *c_str() = 0;
204 virtual const char *data() = 0;
205 virtual size_t length() = 0;
206 virtual IString *clone() = 0;
207 virtual void release() = 0;
208 virtual ~IString() {}
209 };
211
213 {
214 public:
215 virtual void *current() = 0;
216 virtual const void *const_current() const = 0;
217 virtual bool next() = 0;
218 virtual void release() = 0;
219 virtual ~IIterator() {}
220 };
221
223 {
224 public:
225 virtual IIterator *begin() = 0;
226 virtual size_t size() const = 0;
227 virtual void release() = 0;
228 virtual ~IContainer() {}
229 };
230
231 template <class T>
233 {
234 IIterator *p;
235
236 public:
237 typedef T value_type;
241 typedef const value_type *const_pointer;
242 explicit AOutputIterator(IIterator *it = NULL) : p(it) {}
244 {
245 if (p)
246 p->release();
247 }
248 AOutputIterator(const AOutputIterator &rhs) : p(rhs.p) {}
250 {
251 p->next();
252 return *this;
253 }
254 bool operator==(const AOutputIterator &rhs) const
255 {
256 if (p && rhs.p)
257 return p->current() == rhs.p->current();
258 else
259 return valid() == rhs.valid();
260 }
261 bool operator!=(const AOutputIterator &rhs) const { return !this->operator==(rhs); }
262 reference operator*() { return *reinterpret_cast<pointer>(p->current()); }
263 const_reference operator*() const { return *reinterpret_cast<const_pointer>(p->const_current()); }
264 bool valid() const { return p && p->current() != NULL; }
265 };
266
267 template <class T>
268 class AList
269 {
270 IContainer *container;
271 bool owner;
272
273 public:
274 typedef T value_type;
278 typedef const value_type *const_pointer;
279 typedef size_t size_type;
282
283 public:
284 AList() : container(NULL), owner(false) {}
285 AList(IContainer *c, bool take_ownership) : container(c), owner(take_ownership) {}
286 ~AList() { reset(); }
287 void reset(IContainer *c = NULL, bool take_ownership = false)
288 {
289 if (owner && container)
290 container->release();
291 container = c;
292 owner = take_ownership;
293 }
294 iterator begin() { return container ? iterator(container->begin()) : iterator(NULL); }
295 iterator end() { return iterator(NULL); }
296 size_type size() const { return container ? container->size() : 0; }
297 bool empty() const { return size() == 0; }
298 };
299
300 } // namespace util
301
306 {
331 CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
332
334
339 CHANNEL_PROFILE_COMMUNICATION_1v1 = 4,
340
346 CHANNEL_PROFILE_LIVE_BROADCASTING_2 = 5,
348 };
349
351
355 enum WARN_CODE_TYPE
356 {
361 WARN_INVALID_VIEW = 8,
366 WARN_INIT_VIDEO = 16,
371 WARN_PENDING = 20,
376 WARN_NO_AVAILABLE_CHANNEL = 103,
382 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
387 WARN_LOOKUP_CHANNEL_REJECTED = 105,
393 WARN_OPEN_CHANNEL_TIMEOUT = 106,
398 WARN_OPEN_CHANNEL_REJECTED = 107,
399
400 // sdk: 100~1000
404 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
408 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
412 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
416 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
420 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
424 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
428 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
431 WARN_CHANNEL_SOCKET_ERROR = 134,
435 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
439 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
443 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
447 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
451 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
455 WARN_ADM_RECORD_MALFUNCTION = 1021,
462 WARN_ADM_IOS_CATEGORY_NOT_PLAYANDRECORD = 1029,
466 WARN_ADM_IOS_SAMPLERATE_CHANGE = 1030,
470 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
474 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
482 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
486 WARN_APM_HOWLING = 1051,
490 WARN_ADM_GLITCH_STATE = 1052,
494 WARN_ADM_IMPROPER_SETTINGS = 1053,
498 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
503 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
511 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
512 };
513
517 enum ERROR_CODE_TYPE
518 {
522 ERR_OK = 0,
523 // 1~1000
527 ERR_FAILED = 1,
532 ERR_INVALID_ARGUMENT = 2,
539 ERR_NOT_READY = 3,
543 ERR_NOT_SUPPORTED = 4,
547 ERR_REFUSED = 5,
551 ERR_BUFFER_TOO_SMALL = 6,
555 ERR_NOT_INITIALIZED = 7,
559 ERR_INVALID_STATE = 8,
564 ERR_NO_PERMISSION = 9,
570 ERR_TIMEDOUT = 10,
575 ERR_CANCELED = 11,
581 ERR_TOO_OFTEN = 12,
587 ERR_BIND_SOCKET = 13,
592 ERR_NET_DOWN = 14,
598 ERR_NET_NOBUFS = 15,
604 ERR_JOIN_CHANNEL_REJECTED = 17,
611 ERR_LEAVE_CHANNEL_REJECTED = 18,
615 ERR_ALREADY_IN_USE = 19,
620 ERR_ABORTED = 20,
625 ERR_INIT_NET_ENGINE = 21,
630 ERR_RESOURCE_LIMITED = 22,
636 ERR_INVALID_APP_ID = 101,
641 ERR_INVALID_CHANNEL_NAME = 102,
647 ERR_NO_SERVER_RESOURCES = 103,
660 ERR_TOKEN_EXPIRED = 109,
677 ERR_INVALID_TOKEN = 110,
682 ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
687 ERR_CONNECTION_LOST = 112, // only used in web sdk
692 ERR_NOT_IN_CHANNEL = 113,
697 ERR_SIZE_TOO_LARGE = 114,
702 ERR_BITRATE_LIMIT = 115,
707 ERR_TOO_MANY_DATA_STREAMS = 116,
711 ERR_STREAM_MESSAGE_TIMEOUT = 117,
715 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
720 ERR_DECRYPTION_FAILED = 120,
724 ERR_INVALID_USER_ID = 121,
728 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
732 ERR_WATERMARK_PARAM = 124,
736 ERR_WATERMARK_PATH = 125,
740 ERR_WATERMARK_PNG = 126,
744 ERR_WATERMARKR_INFO = 127,
748 ERR_WATERMARK_ARGB = 128,
752 ERR_WATERMARK_READ = 129,
758 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
759
763 ERR_LICENSE_CREDENTIAL_INVALID = 131,
764
765 // Licensing, keep the license error code same as the main version
766 ERR_CERT_RAW = 157,
767 ERR_CERT_JSON_PART = 158,
768 ERR_CERT_JSON_INVAL = 159,
769 ERR_CERT_JSON_NOMEM = 160,
770 ERR_CERT_CUSTOM = 161,
771 ERR_CERT_CREDENTIAL = 162,
772 ERR_CERT_SIGN = 163,
773 ERR_CERT_FAIL = 164,
774 ERR_CERT_BUF = 165,
775 ERR_CERT_NULL = 166,
776 ERR_CERT_DUEDATE = 167,
777 ERR_CERT_REQUEST = 168,
778
779 // PcmSend Error num
780 ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
781 ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
782
783 // signaling: 400~600
784 ERR_LOGOUT_OTHER = 400, //
785 ERR_LOGOUT_USER = 401, // logout by user
786 ERR_LOGOUT_NET = 402, // network failure
787 ERR_LOGOUT_KICKED = 403, // login in other device
788 ERR_LOGOUT_PACKET = 404, //
789 ERR_LOGOUT_TOKEN_EXPIRED = 405, // token expired
790 ERR_LOGOUT_OLDVERSION = 406, //
791 ERR_LOGOUT_TOKEN_WRONG = 407,
792 ERR_LOGOUT_ALREADY_LOGOUT = 408,
793 ERR_LOGIN_OTHER = 420,
794 ERR_LOGIN_NET = 421,
795 ERR_LOGIN_FAILED = 422,
796 ERR_LOGIN_CANCELED = 423,
797 ERR_LOGIN_TOKEN_EXPIRED = 424,
798 ERR_LOGIN_OLD_VERSION = 425,
799 ERR_LOGIN_TOKEN_WRONG = 426,
800 ERR_LOGIN_TOKEN_KICKED = 427,
801 ERR_LOGIN_ALREADY_LOGIN = 428,
802 ERR_JOIN_CHANNEL_OTHER = 440,
803 ERR_SEND_MESSAGE_OTHER = 440,
804 ERR_SEND_MESSAGE_TIMEOUT = 441,
805 ERR_QUERY_USERNUM_OTHER = 450,
806 ERR_QUERY_USERNUM_TIMEOUT = 451,
807 ERR_QUERY_USERNUM_BYUSER = 452,
808 ERR_LEAVE_CHANNEL_OTHER = 460,
809 ERR_LEAVE_CHANNEL_KICKED = 461,
810 ERR_LEAVE_CHANNEL_BYUSER = 462,
811 ERR_LEAVE_CHANNEL_LOGOUT = 463,
812 ERR_LEAVE_CHANNEL_DISCONNECTED = 464,
813 ERR_INVITE_OTHER = 470,
814 ERR_INVITE_REINVITE = 471,
815 ERR_INVITE_NET = 472,
816 ERR_INVITE_PEER_OFFLINE = 473,
817 ERR_INVITE_TIMEOUT = 474,
818 ERR_INVITE_CANT_RECV = 475,
819
820 // 1001~2000
824 ERR_LOAD_MEDIA_ENGINE = 1001,
828 ERR_START_CALL = 1002,
832 ERR_START_CAMERA = 1003,
836 ERR_START_VIDEO_RENDER = 1004,
842 ERR_ADM_GENERAL_ERROR = 1005,
846 ERR_ADM_JAVA_RESOURCE = 1006,
850 ERR_ADM_SAMPLE_RATE = 1007,
855 ERR_ADM_INIT_PLAYOUT = 1008,
859 ERR_ADM_START_PLAYOUT = 1009,
863 ERR_ADM_STOP_PLAYOUT = 1010,
868 ERR_ADM_INIT_RECORDING = 1011,
872 ERR_ADM_START_RECORDING = 1012,
876 ERR_ADM_STOP_RECORDING = 1013,
881 ERR_ADM_RUNTIME_PLAYOUT_ERROR = 1015,
885 ERR_ADM_RUNTIME_RECORDING_ERROR = 1017,
889 ERR_ADM_RECORD_AUDIO_FAILED = 1018,
894 ERR_ADM_INIT_LOOPBACK = 1022,
899 ERR_ADM_START_LOOPBACK = 1023,
904 ERR_ADM_NO_PERMISSION = 1027,
908 ERR_ADM_RECORD_AUDIO_IS_ACTIVE = 1033,
912 ERR_ADM_ANDROID_JNI_JAVA_RESOURCE = 1101,
918 ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY = 1108,
924 ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY = 1109,
932 ERR_ADM_ANDROID_JNI_JAVA_START_RECORD = 1111,
940 ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK = 1112,
945 ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR = 1115,
947 ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE = 1151,
949 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER = 1153,
951 ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD = 1156,
953 ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER = 1157,
955 ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD = 1160,
962 ERR_ADM_IOS_INPUT_NOT_AVAILABLE = 1201,
966 ERR_ADM_IOS_ACTIVATE_SESSION_FAIL = 1206,
971 ERR_ADM_IOS_VPIO_INIT_FAIL = 1210,
976 ERR_ADM_IOS_VPIO_REINIT_FAIL = 1213,
981 ERR_ADM_IOS_VPIO_RESTART_FAIL = 1214,
982 ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219,
984 ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO = 1221,
992 ERR_ADM_WIN_CORE_INIT = 1301,
999 ERR_ADM_WIN_CORE_INIT_RECORDING = 1303,
1006 ERR_ADM_WIN_CORE_INIT_PLAYOUT = 1306,
1012 ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL = 1307,
1019 ERR_ADM_WIN_CORE_START_RECORDING = 1309,
1026 ERR_ADM_WIN_CORE_CREATE_REC_THREAD = 1311,
1035 ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP = 1314,
1042 ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD = 1319,
1051 ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP = 1320,
1057 ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
1063 ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
1073 ERR_ADM_WIN_WAVE_INIT = 1351,
1082 ERR_ADM_WIN_WAVE_INIT_RECORDING = 1353,
1091 ERR_ADM_WIN_WAVE_INIT_MICROPHONE = 1354,
1100 ERR_ADM_WIN_WAVE_INIT_PLAYOUT = 1355,
1109 ERR_ADM_WIN_WAVE_INIT_SPEAKER = 1356,
1118 ERR_ADM_WIN_WAVE_START_RECORDING = 1357,
1127 ERR_ADM_WIN_WAVE_START_PLAYOUT = 1358,
1131 ERR_ADM_NO_RECORDING_DEVICE = 1359,
1135 ERR_ADM_NO_PLAYOUT_DEVICE = 1360,
1136
1137 // VDM error code starts from 1500
1141 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
1142
1143 // VDM error code starts from 1500
1147 ERR_VDM_WIN_DEVICE_IN_USE = 1502,
1148
1149 // VCM error code starts from 1600
1153 ERR_VCM_UNKNOWN_ERROR = 1600,
1158 ERR_VCM_ENCODER_INIT_ERROR = 1601,
1162 ERR_VCM_ENCODER_ENCODE_ERROR = 1602,
1166 ERR_VCM_ENCODER_SET_ERROR = 1603,
1167 };
1168
1172 enum AUDIO_SESSION_OPERATION_RESTRICTION
1173 {
1177 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
1181 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
1185 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
1190 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
1195 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
1196 };
1198 typedef const char *user_id_t;
1199 typedef void *view_t;
1200
1205 {
1222
1223 UserInfo() : hasAudio(false), hasVideo(false) {}
1224 };
1225
1227
1228 // Shared between Agora Service and Rtc Engine
1229 namespace rtc
1230 {
1231
1252
1254 enum INTERFACE_ID_TYPE
1255 {
1256 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
1257 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
1258 AGORA_IID_PARAMETER_ENGINE = 3,
1259 AGORA_IID_MEDIA_ENGINE = 4,
1260 AGORA_IID_AUDIO_ENGINE = 5,
1261 AGORA_IID_VIDEO_ENGINE = 6,
1262 AGORA_IID_RTC_CONNECTION = 7,
1263 AGORA_IID_SIGNALING_ENGINE = 8,
1264 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
1265 AGORA_IID_CLOUD_SPATIAL_AUDIO = 10,
1266 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
1267 };
1269
1274 {
1306
1310 QUALITY_UNSUPPORTED = 7,
1314 QUALITY_DETECTING
1316 };
1317
1319
1322 enum FIT_MODE_TYPE
1323 {
1328 MODE_COVER = 1,
1329
1335 MODE_CONTAIN = 2,
1336 };
1338
1361
1400 {
1405 };
1410 {
1415 };
1416
1435
1466
1495
1500 {
1509 VideoDimensions() : width(640), height(480) {}
1510 VideoDimensions(int w, int h) : width(w), height(h) {}
1511 bool operator==(const VideoDimensions &rhs) const
1512 {
1513 return width == rhs.width && height == rhs.height;
1514 }
1515 };
1516
1526 const int STANDARD_BITRATE = 0;
1527
1535 const int COMPATIBLE_BITRATE = -1;
1537
1540 const int DEFAULT_MIN_BITRATE = -1;
1541
1545 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1547
1590
1595 {
1600 // kIsac = 2,
1613 // kIlbc = 6,
1615 // AUDIO_CODEC_AAC = 7,
1625
1628 AUDIO_CODEC_JC1 = 10,
1630
1635
1638 AUDIO_CODEC_LPCNET = 12,
1640 };
1641
1643
1646 enum AUDIO_ENCODING_TYPE
1647 {
1651 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1655 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1659 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1663 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1667 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1671 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1675 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1676
1680 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1684 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1688 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1692 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1693 };
1694
1698 enum WATERMARK_FIT_MODE
1699 {
1704 FIT_MODE_COVER_POSITION,
1709 FIT_MODE_USE_IMAGE_RATIO
1710 };
1712
1735
1783
1786 struct AudioPcmDataInfo
1787 {
1788 AudioPcmDataInfo() : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1789
1790 AudioPcmDataInfo(const AudioPcmDataInfo &rhs)
1791 : samplesPerChannel(rhs.samplesPerChannel),
1792 channelNum(rhs.channelNum),
1793 samplesOut(rhs.samplesOut),
1794 elapsedTimeMs(rhs.elapsedTimeMs),
1795 ntpTimeMs(rhs.ntpTimeMs) {}
1796
1800 size_t samplesPerChannel;
1801
1802 int16_t channelNum;
1803
1804 // Output
1808 size_t samplesOut;
1812 int64_t elapsedTimeMs;
1816 int64_t ntpTimeMs;
1817 };
1821 enum H264PacketizeMode
1822 {
1826 NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1830 SingleNalUnit, // Mode 0 - only single NALU allowed
1831 };
1833
1851 {
1865
1868
1869 explicit VideoSubscriptionOptions(VIDEO_STREAM_TYPE streamtype) : type(streamtype),
1870 encodedFrameOnly(false) {}
1871
1872 VideoSubscriptionOptions(VIDEO_STREAM_TYPE streamtype, bool encoded_only) : type(streamtype),
1873 encodedFrameOnly(encoded_only) {}
1874 };
1875
1880 {
1893
1895 : codecType(rhs.codecType),
1896 width(rhs.width),
1897 height(rhs.height),
1899 frameType(rhs.frameType),
1900 rotation(rhs.rotation),
1901 trackId(rhs.trackId),
1904 uid(rhs.uid),
1905 streamType(rhs.streamType) {}
1906
1908 {
1909 if (this == &rhs)
1910 return *this;
1911 codecType = rhs.codecType;
1912 width = rhs.width;
1913 height = rhs.height;
1915 frameType = rhs.frameType;
1916 rotation = rhs.rotation;
1917 trackId = rhs.trackId;
1920 uid = rhs.uid;
1921 streamType = rhs.streamType;
1922 return *this;
1923 }
1954 int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1955 // and additional payload for later implementation.
1956
1973 };
1974
1993
1998 {
2028
2054
2059
2071 dimensions(width, height),
2072 frameRate(f),
2073 bitrate(b),
2074 minBitrate(DEFAULT_MIN_BITRATE),
2075 orientationMode(m),
2077 mirrorMode(mirror) {}
2096
2098 {
2099 if (this == &rhs)
2100 return *this;
2101 codecType = rhs.codecType;
2102 dimensions = rhs.dimensions;
2103 frameRate = rhs.frameRate;
2104 bitrate = rhs.bitrate;
2105 minBitrate = rhs.minBitrate;
2108 mirrorMode = rhs.mirrorMode;
2109 return *this;
2110 }
2111 };
2113
2115 struct DataStreamConfig
2116 {
2119 bool syncWithAudio;
2122 bool ordered;
2123 };
2125
2144
2149 {
2163 bool operator==(const SimulcastStreamConfig &rhs) const
2164 {
2165 return dimensions == rhs.dimensions && bitrate == rhs.bitrate && framerate == rhs.framerate;
2166 }
2167 };
2168
2173 {
2177 unsigned int duration;
2181 unsigned int txBytes;
2185 unsigned int rxBytes;
2189 unsigned int txAudioBytes;
2193 unsigned int txVideoBytes;
2197 unsigned int rxAudioBytes;
2201 unsigned int rxVideoBytes;
2205 unsigned short txKBitRate;
2209 unsigned short rxKBitRate;
2213 unsigned short rxAudioKBitRate;
2217 unsigned short txAudioKBitRate;
2221 unsigned short rxVideoKBitRate;
2225 unsigned short txVideoKBitRate;
2229 unsigned short lastmileDelay;
2233 unsigned int userCount;
2350 };
2351
2352
2367
2379
2394
2417
2419
2420 enum AUDIENCE_LATENCY_LEVEL_TYPE
2421 {
2423 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2425 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2429 AUDIENCE_LATENCY_LEVEL_HIGH_LATENCY = 3,
2430 };
2431
2434 struct ClientRoleOptions
2435 {
2439 AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2440 ClientRoleOptions()
2441 : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2442 };
2443
2448 struct RemoteAudioStats
2449 {
2453 uid_t uid;
2457 int quality;
2461 int networkTransportDelay;
2465 int jitterBufferDelay;
2469 int audioLossRate;
2473 int numChannels;
2477 int receivedSampleRate;
2482 int receivedBitrate;
2489 int totalFrozenTime;
2494 int frozenRate;
2511 int mosValue;
2516 int totalActiveTime;
2520 int publishDuration;
2521
2522 RemoteAudioStats() : uid(0),
2523 quality(0),
2524 networkTransportDelay(0),
2525 jitterBufferDelay(0),
2526 audioLossRate(0),
2527 numChannels(0),
2528 receivedSampleRate(0),
2529 receivedBitrate(0),
2530 totalFrozenTime(0),
2531 frozenRate(0),
2532 mosValue(0),
2533 totalActiveTime(0),
2534 publishDuration(0) {}
2535 };
2537
2576
2611
2613
2616 struct VideoFormat
2617 {
2620 kMaxWidthInPixels = 3840,
2622 kMaxHeightInPixels = 2160,
2624 kMaxFps = 60,
2625 };
2626
2630 int width; // Number of pixels.
2634 int height; // Number of pixels.
2638 int fps;
2639
2641 uint32_t pixelFormat;
2642
2643 VideoFormat() : width(FRAME_WIDTH_640), height(FRAME_HEIGHT_360), fps(FRAME_RATE_FPS_15), pixelFormat(0) {}
2644 VideoFormat(int w, int h, int f, uint32_t fmt = 0) : width(w), height(h), fps(f), pixelFormat(fmt) {}
2645 };
2647
2649
2652 enum VIDEO_CONTENT_HINT
2653 {
2657 CONTENT_HINT_NONE,
2664 CONTENT_HINT_MOTION,
2670 CONTENT_HINT_DETAILS
2671 };
2673
2696
2728
2750
2755 {
2769
2770 LOCAL_VIDEO_STREAM_ERROR_BACKGROUD = 6,
2772 LOCAL_VIDEO_STREAM_ERROR_MULTIPLE_FOREGROUND_APPS = 7,
2774 LOCAL_VIDEO_STREAM_ERROR_SYSTEM_PRESSURE = 8,
2776 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2778 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12
2780 };
2781
2786 {
2793 REMOTE_AUDIO_STATE_STOPPED = 0, // Default state, audio is started or remote user disabled/muted audio stream
2797 REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
2804 REMOTE_AUDIO_STATE_DECODING = 2, // The first remote audio frame has been decoded or frozen state ends
2809 REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
2814 REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
2815 };
2816
2859
2952
3005
3033
3036 struct AudioVolumeInfo
3037 {
3041 uid_t uid;
3042
3046 unsigned int volume; // [0,255]
3047
3048 /*
3049 * The activity status of remote users
3050 */
3051 unsigned int vad;
3052
3056 double voicePitch;
3057
3058 AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3059 };
3060
3064 class IPacketObserver
3065 {
3066 public:
3067 virtual ~IPacketObserver() {}
3071 struct Packet
3072 {
3076 const unsigned char *buffer;
3080 unsigned int size;
3081
3082 Packet() : buffer(NULL), size(0) {}
3083 };
3091 virtual bool onSendAudioPacket(Packet &packet) = 0;
3099 virtual bool onSendVideoPacket(Packet &packet) = 0;
3107 virtual bool onReceiveAudioPacket(Packet &packet) = 0;
3115 virtual bool onReceiveVideoPacket(Packet &packet) = 0;
3116 };
3118
3122 {
3123 public:
3133 virtual bool OnEncodedVideoImageReceived(const uint8_t *imageBuffer, size_t length,
3134 const EncodedVideoFrameInfo &videoEncodedFrameInfo) = 0;
3135
3137 };
3139
3142 enum AUDIO_SAMPLE_RATE_TYPE
3143 {
3147 AUDIO_SAMPLE_RATE_32000 = 32000,
3151 AUDIO_SAMPLE_RATE_44100 = 44100,
3155 AUDIO_SAMPLE_RATE_48000 = 48000,
3156 };
3160 enum VIDEO_CODEC_PROFILE_TYPE
3161 {
3165 VIDEO_CODEC_PROFILE_BASELINE = 66,
3169 VIDEO_CODEC_PROFILE_MAIN = 77,
3173 VIDEO_CODEC_PROFILE_HIGH = 100,
3174 };
3175
3179 enum AUDIO_CODEC_PROFILE_TYPE
3180 {
3184 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3188 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3189 };
3191
3197 {
3211
3214 int internalCodec;
3216 };
3217
3219
3222 enum RTMP_STREAM_PUBLISH_STATE
3223 {
3230 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3236 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3241 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3251 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3256 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3257 };
3258
3262 enum RTMP_STREAM_PUBLISH_ERROR
3263 {
3267 RTMP_STREAM_PUBLISH_ERROR_FAILED = -1,
3271 RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3277 RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3281 RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3286 RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3291 RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3295 RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3299 RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3303 RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3307 RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3311 RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3315 RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3320 RTMP_STREAM_PUBLISH_ERROR_CDN_ERROR = 11,
3324 RTMP_STREAM_PUBLISH_ERROR_ALREADY_IN_USE = 12,
3330 RTMP_STREAM_UNPUBLISH_ERROR_OK = 100,
3331 };
3333
3362
3393
3414
3420 {
3424 unsigned int packetLossRate;
3428 unsigned int jitter;
3433
3437 };
3438
3466
3550
3586
3588 struct BeautyOptions
3589 {
3592 enum LIGHTENING_CONTRAST_LEVEL
3593 {
3595 LIGHTENING_CONTRAST_LOW = 0,
3597 LIGHTENING_CONTRAST_NORMAL,
3599 LIGHTENING_CONTRAST_HIGH
3600 };
3601
3604 LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel;
3605
3608 float lighteningLevel;
3609
3612 float smoothnessLevel;
3613
3616 float rednessLevel;
3617
3620 float sharpnessLevel;
3621
3622 BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness, float sharpness) : lighteningContrastLevel(contrastLevel), lighteningLevel(lightening), smoothnessLevel(smoothness), rednessLevel(redness), sharpnessLevel(sharpness) {}
3623
3624 BeautyOptions() : lighteningContrastLevel(LIGHTENING_CONTRAST_NORMAL), lighteningLevel(0), smoothnessLevel(0), rednessLevel(0), sharpnessLevel(0) {}
3625 };
3626
3627 struct VirtualBackgroundSource
3628 {
3631 enum BACKGROUND_SOURCE_TYPE
3632 {
3636 BACKGROUND_COLOR = 1,
3640 BACKGROUND_IMG,
3642 BACKGROUND_BLUR,
3643 };
3644
3647 enum BACKGROUND_BLUR_DEGREE
3648 {
3650 BLUR_DEGREE_LOW = 1,
3652 BLUR_DEGREE_MEDIUM,
3654 BLUR_DEGREE_HIGH,
3655 };
3656
3659 BACKGROUND_SOURCE_TYPE background_source_type;
3660
3669 unsigned int color;
3670
3677 const char *source;
3678
3680 BACKGROUND_BLUR_DEGREE blur_degree;
3681
3682 VirtualBackgroundSource() : background_source_type(BACKGROUND_COLOR), color(0xffffff), source(NULL), blur_degree(BLUR_DEGREE_HIGH) {}
3683 };
3684
3685 struct SegmentationProperty
3686 {
3687
3688 enum SEG_MODEL_TYPE
3689 {
3690
3691 SEG_MODEL_AGORA_AI_ONE = 0,
3692 SEG_MODEL_AGORA_GREEN = 2
3693 };
3694
3695 SEG_MODEL_TYPE modelType;
3696
3697 int preferVelocity;
3698
3699 float greenCapacity;
3700
3701 SegmentationProperty() : modelType(SEG_MODEL_AGORA_AI_ONE), preferVelocity(1), greenCapacity(0.5) {}
3702 };
3705
3725 enum VOICE_BEAUTIFIER_PRESET
3726 {
3729 VOICE_BEAUTIFIER_OFF = 0x00000000,
3735 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
3741 CHAT_BEAUTIFIER_FRESH = 0x01010200,
3747 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
3761 SINGING_BEAUTIFIER = 0x01020100,
3764 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
3767 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
3770 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
3773 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
3776 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
3779 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
3782 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
3785 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
3786
3787 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
3788 };
3789
3792 enum AUDIO_EFFECT_PRESET
3793 {
3796 AUDIO_EFFECT_OFF = 0x00000000,
3804 ROOM_ACOUSTICS_KTV = 0x02010100,
3812 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
3820 ROOM_ACOUSTICS_STUDIO = 0x02010300,
3828 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
3835 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
3843 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
3851 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
3863 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
3874 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
3885 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
3896 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
3907 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
3918 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
3927 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
3935 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
3943 STYLE_TRANSFORMATION_RNB = 0x02030100,
3951 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
3961 PITCH_CORRECTION = 0x02040100
3962
3966 };
3967
3970 enum VOICE_CONVERSION_PRESET
3971 {
3974 VOICE_CONVERSION_OFF = 0x00000000,
3977 VOICE_CHANGER_NEUTRAL = 0x03010100,
3980 VOICE_CHANGER_SWEET = 0x03010200,
3983 VOICE_CHANGER_SOLID = 0x03010300,
3986 VOICE_CHANGER_BASS = 0x03010400
3987 };
3988
3989 // TODO(ZYH), it will be deleted after the new interfaces have been implemented to replace it.
3990 enum AUDIO_REVERB_PRESET
3991 {
3995 AUDIO_REVERB_OFF = 0, // Turn off audio reverb
3999 AUDIO_REVERB_FX_KTV = 0x02010100,
4003 AUDIO_REVERB_FX_VOCAL_CONCERT = 0x02010200,
4007 AUDIO_REVERB_FX_UNCLE = 0x02020100,
4011 AUDIO_REVERB_FX_SISTER = 0x02020400,
4015 AUDIO_REVERB_FX_STUDIO = 0x02010300,
4019 AUDIO_REVERB_FX_POPULAR = 0x02030200,
4023 AUDIO_REVERB_FX_RNB = 0x02030100,
4027 AUDIO_REVERB_FX_PHONOGRAPH = 0x02010400
4028 };
4029
4033 enum AUDIO_RECORDING_QUALITY_TYPE
4034 {
4038 AUDIO_RECORDING_QUALITY_LOW = 0,
4042 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4046 AUDIO_RECORDING_QUALITY_HIGH = 2,
4047 };
4048
4052 enum AUDIO_FILE_RECORDING_TYPE
4053 {
4057 AUDIO_FILE_RECORDING_MIC = 1,
4061 AUDIO_FILE_RECORDING_PLAYBACK = 2,
4065 AUDIO_FILE_RECORDING_MIXED = 3,
4066 };
4067
4071 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION
4072 {
4076 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4080 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4084 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4085 };
4086
4090 struct AudioRecordingConfiguration
4091 {
4096 const char *filePath;
4102 bool encode;
4107 int sampleRate;
4111 AUDIO_FILE_RECORDING_TYPE fileRecordingType;
4115 AUDIO_RECORDING_QUALITY_TYPE quality;
4116
4117 AudioRecordingConfiguration()
4118 : filePath(NULL),
4119 encode(false),
4120 sampleRate(32000),
4121 fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4122 quality(AUDIO_RECORDING_QUALITY_LOW) {}
4123
4124 AudioRecordingConfiguration(const char *file_path, int sample_rate, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4125 : filePath(file_path),
4126 encode(false),
4127 sampleRate(sample_rate),
4128 fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4129 quality(quality_type) {}
4130
4131 AudioRecordingConfiguration(const char *file_path, bool enc, int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4132 : filePath(file_path),
4133 encode(enc),
4134 sampleRate(sample_rate),
4135 fileRecordingType(type),
4136 quality(quality_type) {}
4137
4138 AudioRecordingConfiguration(const AudioRecordingConfiguration &rhs)
4139 : filePath(rhs.filePath),
4140 encode(rhs.encode),
4141 sampleRate(rhs.sampleRate),
4142 fileRecordingType(rhs.fileRecordingType),
4143 quality(rhs.quality) {}
4144 };
4145
4150 struct AudioEncodedFrameObserverConfig
4151 {
4155 AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
4159 AUDIO_ENCODING_TYPE encodingType;
4160
4161 AudioEncodedFrameObserverConfig()
4162 : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4163 encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM) {}
4164 };
4165
4166 class IAudioEncodedFrameObserver
4167 {
4168 public:
4176 virtual void OnRecordAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo) = 0;
4177
4185 virtual void OnPlaybackAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo) = 0;
4186
4194 virtual void OnMixedAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo) = 0;
4195
4196 virtual ~IAudioEncodedFrameObserver() {}
4197 };
4200
4203 enum VOICE_CHANGER_PRESET
4204 {
4208 VOICE_CHANGER_OFF = 0, // Turn off the voice changer
4212 VOICE_CHANGER_OLDMAN = 0x02020200,
4216 VOICE_CHANGER_BABYBOY = 0x02020300,
4220 VOICE_CHANGER_BABYGIRL = 0x02020500,
4225 VOICE_CHANGER_ZHUBAJIE = 0x02020600,
4229 VOICE_CHANGER_ETHEREAL = 0x02010700,
4233 VOICE_CHANGER_HULK = 0x02020700,
4237 VOICE_BEAUTY_VIGOROUS = 0x01030100,
4241 VOICE_BEAUTY_DEEP = 0x01030200,
4245 VOICE_BEAUTY_MELLOW = 0x01030300,
4249 VOICE_BEAUTY_FALSETTO = 0x01030400,
4253 VOICE_BEAUTY_FULL = 0x01030500,
4257 VOICE_BEAUTY_CLEAR = 0x01030600,
4261 VOICE_BEAUTY_RESOUNDING = 0x01030700,
4265 VOICE_BEAUTY_RINGING = 0x01030800,
4269 VOICE_BEAUTY_SPACIAL = 0x02010600,
4274 GENERAL_BEAUTY_VOICE_MALE = 0x01010100,
4279 GENERAL_BEAUTY_VOICE_FEMALE_FRESH = 0x01010200,
4284 GENERAL_BEAUTY_VOICE_FEMALE_VITALITY = 0x01010300
4285 };
4287
4291 {
4295 AREA_CODE_CN = 0x00000001,
4299 AREA_CODE_NA = 0x00000002,
4303 AREA_CODE_EU = 0x00000004,
4307 AREA_CODE_AS = 0x00000008,
4311 AREA_CODE_JP = 0x00000010,
4315 AREA_CODE_IN = 0x00000020,
4319 AREA_CODE_GLOB = (0xFFFFFFFF)
4321
4323
4326 enum AREA_CODE_EX
4327 {
4331 AREA_CODE_OC = 0x00000040,
4335 AREA_CODE_SA = 0x00000080,
4339 AREA_CODE_AF = 0x00000100,
4343 AREA_CODE_KR = 0x00000200,
4347 AREA_CODE_OVS = 0xFFFFFFFE
4348 };
4349
4350 enum CHANNEL_MEDIA_RELAY_ERROR
4351 {
4354 RELAY_OK = 0,
4357 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
4362 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
4366 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
4369 RELAY_ERROR_FAILED_JOIN_SRC = 4,
4372 RELAY_ERROR_FAILED_JOIN_DEST = 5,
4375 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
4378 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
4383 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
4386 RELAY_ERROR_INTERNAL_ERROR = 9,
4389 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
4392 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
4393 };
4394
4395 // callback event
4396 enum CHANNEL_MEDIA_RELAY_EVENT
4397 {
4401 RELAY_EVENT_NETWORK_DISCONNECTED = 0,
4404 RELAY_EVENT_NETWORK_CONNECTED = 1,
4407 RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
4410 RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
4413 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
4416 RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
4419 RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4422 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4425 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4429 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4432 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4435 RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4438 RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12,
4441 RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13,
4444 RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14,
4447 RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15,
4448 };
4449
4450 enum CHANNEL_MEDIA_RELAY_STATE
4451 {
4454 RELAY_STATE_IDLE = 0,
4457 RELAY_STATE_CONNECTING = 1,
4461 RELAY_STATE_RUNNING = 2,
4464 RELAY_STATE_FAILURE = 3,
4465 };
4466
4469 struct ChannelMediaInfo
4470 {
4474 const char *channelName;
4478 const char *token;
4481 uid_t uid;
4482 };
4483
4486 struct ChannelMediaRelayConfiguration
4487 {
4499 ChannelMediaInfo *srcInfo;
4506 ChannelMediaInfo *destInfos;
4512 int destCount;
4513
4514 ChannelMediaRelayConfiguration()
4515 : srcInfo(NULL),
4516 destInfos(NULL),
4517 destCount(0)
4518 {
4519 }
4520 };
4522
4539
4544 {
4546 {
4550 const char *uid;
4563
4569
4571 {
4572 if (this == &rhs)
4573 return *this;
4578 if (rhs.uid != OPTIONAL_NULLPTR)
4579 {
4580 char *temp = new char[strlen(rhs.uid) + 1];
4581 strcpy(temp, rhs.uid);
4582 uid = temp;
4583 }
4584 return *this;
4585 }
4586
4588 {
4589 if (uid)
4590 {
4591 delete[] uid;
4592 }
4593 }
4594 };
4595
4616
4623
4637
4655
4657 {
4659 delete[] peer_downlink_info;
4660 }
4661 };
4662
4666 {
4668
4670 AES_128_XTS = 1,
4673 AES_128_ECB = 2,
4676 AES_256_XTS = 3,
4678
4684 AES_128_GCM = 5,
4687 AES_256_GCM = 6,
4690 AES_128_GCM2 = 7,
4693 AES_256_GCM2 = 8,
4696 MODE_END,
4698 };
4699
4702 {
4712 const char *encryptionKey;
4714
4716 : encryptionMode(AES_128_GCM2),
4717 encryptionKey(NULL)
4718 {
4719 memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
4720 }
4721
4723 const char *getEncryptionString() const
4724 {
4725 switch (encryptionMode)
4726 {
4727 case AES_128_XTS:
4728 return "aes-128-xts";
4729 case AES_128_ECB:
4730 return "aes-128-ecb";
4731 case AES_256_XTS:
4732 return "aes-256-xts";
4733 case SM4_128_ECB:
4734 return "sm4-128-ecb";
4735 case AES_128_GCM:
4736 return "aes-128-gcm";
4737 case AES_256_GCM:
4738 return "aes-256-gcm";
4739 case AES_128_GCM2:
4740 return "aes-128-gcm-2";
4741 case AES_256_GCM2:
4742 return "aes-256-gcm-2";
4743 default:
4744 return "aes-128-gcm-2";
4745 }
4746 return "aes-128-gcm-2";
4747 }
4749 };
4750
4768
4770
4773 enum UPLOAD_ERROR_REASON
4774 {
4775 UPLOAD_SUCCESS = 0,
4776 UPLOAD_NET_ERROR = 1,
4777 UPLOAD_SERVER_ERROR = 2,
4778 };
4779
4782 enum PERMISSION_TYPE
4783 {
4784 RECORD_AUDIO = 0,
4785 CAMERA = 1,
4786 };
4788
4797
4798
4821
4844
4849 {
4859 : uid(0)
4860 {
4861 userAccount[0] = '\0';
4862 }
4863 };
4864
4866
4869 enum EAR_MONITORING_FILTER_TYPE
4870 {
4874 EAR_MONITORING_FILTER_NONE = (1 << 0),
4878 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
4882 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2)
4883 };
4885
4887
4890 enum THREAD_PRIORITY_TYPE
4891 {
4895 LOWEST = 0,
4899 LOW = 1,
4903 NORMAL = 2,
4907 HIGH = 3,
4911 HIGHEST = 4,
4915 CRITICAL = 5,
4916 };
4918
4932 } // namespace rtc
4933
4934 namespace base
4935 {
4936
4938 class IEngineBase
4939 {
4940 public:
4941 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void **inter) = 0;
4942 virtual ~IEngineBase() {}
4943 };
4944
4945 class AParameter : public agora::util::AutoPtr<IAgoraParameter>
4946 {
4947 public:
4948 AParameter(IEngineBase &engine) { initialize(&engine); }
4949 AParameter(IEngineBase *engine) { initialize(engine); }
4950 AParameter(IAgoraParameter *p) : agora::util::AutoPtr<IAgoraParameter>(p) {}
4951
4952 private:
4953 bool initialize(IEngineBase *engine)
4954 {
4955 IAgoraParameter *p = NULL;
4956 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void **)&p))
4957 reset(p);
4958 return p != NULL;
4959 }
4960 };
4961
4962 class LicenseCallback
4963 {
4964 public:
4965 virtual ~LicenseCallback() {}
4966 virtual void onCertificateRequired() = 0;
4967 virtual void onLicenseRequest() = 0;
4968 virtual void onLicenseValidated() = 0;
4969 virtual void onLicenseError(int result) = 0;
4970 };
4972
4973 } // namespace base
4974
4976
4979 struct SpatialAudioParams
4980 {
4984 Optional<double> speaker_azimuth;
4988 Optional<double> speaker_elevation;
4992 Optional<double> speaker_distance;
4996 Optional<int> speaker_orientation;
5000 Optional<bool> enable_blur;
5004 Optional<bool> enable_air_absorb;
5005 };
5007} // namespace agora
5008
5015
5022AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void *(*func)(const char *symname));
5023
5032
5046AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char *credential_buf, int credential_len,
5047 const char *certificate_buf, int certificate_len);
5048
5057AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback *callback);
5058
5067AGORA_API agora::base::LicenseCallback *getAgoraLicenseCallback();
#define AGORA_CALL
Definition AgoraBase.h:65
AGORA_API const char *AGORA_CALL getAgoraSdkVersion(int *build)
AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString &credential)
#define AGORA_API
Definition AgoraBase.h:64
AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char *credential_buf, int credential_len, const char *certificate_buf, int certificate_len)
AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback *callback)
Implement the agora::base::LicenseCallback, create a LicenseCallback object to receive callbacks of l...
AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void *(*func)(const char *symname))
AGORA_API agora::base::LicenseCallback * getAgoraLicenseCallback()
Get the LicenseCallback pointer if already setup, otherwise, return null.
AGORA_API const char *AGORA_CALL getAgoraSdkErrorDescription(int err)
#define OPTIONAL_NULLPTR
Definition AgoraBase.h:81
#define OPTIONAL_ENUM_SIZE_T
Definition AgoraMediaBase.h:18
Definition AgoraBase.h:102
virtual int setParameters(const char *parameters)=0
virtual int getParameters(const char *key, any_document_t &result)=0
virtual ~IParameterEngine()
Definition AgoraBase.h:106
Definition AgoraBase.h:3122
virtual bool OnEncodedVideoImageReceived(const uint8_t *imageBuffer, size_t length, const EncodedVideoFrameInfo &videoEncodedFrameInfo)=0
virtual ~IVideoEncodedImageReceiver()
Definition AgoraBase.h:3136
Definition AgoraBase.h:269
iterator begin()
Definition AgoraBase.h:294
value_type & reference
Definition AgoraBase.h:275
AList(IContainer *c, bool take_ownership)
Definition AgoraBase.h:285
~AList()
Definition AgoraBase.h:286
const value_type & const_reference
Definition AgoraBase.h:276
value_type * pointer
Definition AgoraBase.h:277
void reset(IContainer *c=NULL, bool take_ownership=false)
Definition AgoraBase.h:287
iterator end()
Definition AgoraBase.h:295
size_t size_type
Definition AgoraBase.h:279
T value_type
Definition AgoraBase.h:274
const AOutputIterator< value_type > const_iterator
Definition AgoraBase.h:281
const value_type * const_pointer
Definition AgoraBase.h:278
AList()
Definition AgoraBase.h:284
bool empty() const
Definition AgoraBase.h:297
AOutputIterator< value_type > iterator
Definition AgoraBase.h:280
size_type size() const
Definition AgoraBase.h:296
Definition AgoraBase.h:233
AOutputIterator & operator++()
Definition AgoraBase.h:249
T value_type
Definition AgoraBase.h:237
bool operator!=(const AOutputIterator &rhs) const
Definition AgoraBase.h:261
reference operator*()
Definition AgoraBase.h:262
AOutputIterator(const AOutputIterator &rhs)
Definition AgoraBase.h:248
~AOutputIterator()
Definition AgoraBase.h:243
bool operator==(const AOutputIterator &rhs) const
Definition AgoraBase.h:254
const_reference operator*() const
Definition AgoraBase.h:263
value_type & reference
Definition AgoraBase.h:238
AOutputIterator(IIterator *it=NULL)
Definition AgoraBase.h:242
const value_type & const_reference
Definition AgoraBase.h:239
const value_type * const_pointer
Definition AgoraBase.h:241
value_type * pointer
Definition AgoraBase.h:240
bool valid() const
Definition AgoraBase.h:264
Definition AgoraBase.h:115
void reset(pointer_type ptr=NULL)
Definition AgoraBase.h:147
value_type & operator*() const
Definition AgoraBase.h:134
T value_type
Definition AgoraBase.h:117
bool queryInterface(C1 *c, C2 iid)
Definition AgoraBase.h:158
pointer_type get() const
Definition AgoraBase.h:138
~AutoPtr()
Definition AgoraBase.h:123
pointer_type release()
Definition AgoraBase.h:140
pointer_type operator->() const
Definition AgoraBase.h:136
AutoPtr(pointer_type p=NULL)
Definition AgoraBase.h:121
T * pointer_type
Definition AgoraBase.h:118
Definition IAgoraParameter.h:218
CopyableAutoPtr(const CopyableAutoPtr &rhs)
Definition AgoraBase.h:184
pointer_type clone() const
Definition AgoraBase.h:191
CopyableAutoPtr & operator=(const CopyableAutoPtr &rhs)
Definition AgoraBase.h:185
CopyableAutoPtr(pointer_type p=0)
Definition AgoraBase.h:183
Definition AgoraBase.h:223
virtual size_t size() const =0
virtual ~IContainer()
Definition AgoraBase.h:228
virtual void release()=0
virtual IIterator * begin()=0
Definition AgoraBase.h:213
virtual void release()=0
virtual const void * const_current() const =0
virtual void * current()=0
virtual bool next()=0
virtual ~IIterator()
Definition AgoraBase.h:219
Definition AgoraBase.h:200
virtual const char * c_str()=0
virtual bool empty() const =0
virtual IString * clone()=0
virtual size_t length()=0
virtual const char * data()=0
virtual void release()=0
virtual ~IString()
Definition AgoraBase.h:208
SIMULCAST_STREAM_MODE
Definition AgoraBase.h:2130
@ ENABLE_SIMULCAST_STREAM
Definition AgoraBase.h:2142
@ DISABLE_SIMULCAST_STREAM
Definition AgoraBase.h:2138
@ AUTO_SIMULCAST_STREAM
Definition AgoraBase.h:2134
LOCAL_AUDIO_STREAM_STATE
Definition AgoraBase.h:2678
@ LOCAL_AUDIO_STREAM_STATE_FAILED
Definition AgoraBase.h:2694
@ LOCAL_AUDIO_STREAM_STATE_RECORDING
Definition AgoraBase.h:2686
@ LOCAL_AUDIO_STREAM_STATE_STOPPED
Definition AgoraBase.h:2682
@ LOCAL_AUDIO_STREAM_STATE_ENCODING
Definition AgoraBase.h:2690
FRAME_HEIGHT
Definition AgoraBase.h:1410
@ FRAME_HEIGHT_360
Definition AgoraBase.h:1414
AUDIO_SCENARIO_TYPE
Definition AgoraBase.h:2581
@ AUDIO_SCENARIO_NUM
Definition AgoraBase.h:2609
@ AUDIO_SCENARIO_GAME_STREAMING
Definition AgoraBase.h:2591
@ AUDIO_SCENARIO_CHORUS
Definition AgoraBase.h:2605
@ AUDIO_SCENARIO_HIGH_DEFINITION
Definition AgoraBase.h:2601
@ AUDIO_SCENARIO_CHATROOM
Definition AgoraBase.h:2597
@ AUDIO_SCENARIO_DEFAULT
Definition AgoraBase.h:2585
FRAME_WIDTH
Definition AgoraBase.h:1400
@ FRAME_WIDTH_640
Definition AgoraBase.h:1404
CONNECTION_CHANGED_REASON_TYPE
Definition AgoraBase.h:3471
@ CONNECTION_CHANGED_INVALID_TOKEN
Definition AgoraBase.h:3507
@ CONNECTION_CHANGED_BANNED_BY_SERVER
Definition AgoraBase.h:3487
@ CONNECTION_CHANGED_REJOIN_SUCCESS
Definition AgoraBase.h:3536
@ CONNECTION_CHANGED_ECHO_TEST
Definition AgoraBase.h:3544
@ CONNECTION_CHANGED_INVALID_CHANNEL_NAME
Definition AgoraBase.h:3503
@ CONNECTION_CHANGED_JOIN_SUCCESS
Definition AgoraBase.h:3479
@ CONNECTION_CHANGED_INTERRUPTED
Definition AgoraBase.h:3483
@ CONNECTION_CHANGED_LEAVE_CHANNEL
Definition AgoraBase.h:3495
@ CONNECTION_CHANGED_CONNECTING
Definition AgoraBase.h:3475
@ CONNECTION_CHANGED_SETTING_PROXY_SERVER
Definition AgoraBase.h:3519
@ CONNECTION_CHANGED_LOST
Definition AgoraBase.h:3540
@ CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED
Definition AgoraBase.h:3528
@ CONNECTION_CHANGED_JOIN_FAILED
Definition AgoraBase.h:3491
@ CONNECTION_CHANGED_RENEW_TOKEN
Definition AgoraBase.h:3523
@ CONNECTION_CHANGED_TOKEN_EXPIRED
Definition AgoraBase.h:3511
@ CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT
Definition AgoraBase.h:3532
@ CONNECTION_CHANGED_REJECTED_BY_SERVER
Definition AgoraBase.h:3515
@ CONNECTION_CHANGED_INVALID_APP_ID
Definition AgoraBase.h:3499
@ CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER
Definition AgoraBase.h:3548
ENCRYPTION_ERROR_TYPE
Definition AgoraBase.h:4754
@ ENCRYPTION_ERROR_ENCRYPTION_FAILURE
Definition AgoraBase.h:4766
@ ENCRYPTION_ERROR_DECRYPTION_FAILURE
Definition AgoraBase.h:4762
@ ENCRYPTION_ERROR_INTERNAL_FAILURE
Definition AgoraBase.h:4758
FRAME_RATE
Definition AgoraBase.h:1366
@ FRAME_RATE_FPS_24
Definition AgoraBase.h:1386
@ FRAME_RATE_FPS_15
Definition AgoraBase.h:1382
@ FRAME_RATE_FPS_1
Definition AgoraBase.h:1370
@ FRAME_RATE_FPS_10
Definition AgoraBase.h:1378
@ FRAME_RATE_FPS_30
Definition AgoraBase.h:1390
@ FRAME_RATE_FPS_7
Definition AgoraBase.h:1374
@ FRAME_RATE_FPS_60
Definition AgoraBase.h:1394
LOCAL_AUDIO_STREAM_ERROR
Definition AgoraBase.h:2701
@ LOCAL_AUDIO_STREAM_ERROR_FAILURE
Definition AgoraBase.h:2709
@ LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY
Definition AgoraBase.h:2717
@ LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE
Definition AgoraBase.h:2726
@ LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE
Definition AgoraBase.h:2722
@ LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION
Definition AgoraBase.h:2713
@ LOCAL_AUDIO_STREAM_ERROR_OK
Definition AgoraBase.h:2705
CLIENT_ROLE_TYPE
Definition AgoraBase.h:2357
@ CLIENT_ROLE_AUDIENCE
Definition AgoraBase.h:2365
@ CLIENT_ROLE_BROADCASTER
Definition AgoraBase.h:2361
CONNECTION_STATE_TYPE
Definition AgoraBase.h:3338
@ CONNECTION_STATE_DISCONNECTED
Definition AgoraBase.h:3342
@ CONNECTION_STATE_RECONNECTING
Definition AgoraBase.h:3356
@ CONNECTION_STATE_CONNECTING
Definition AgoraBase.h:3346
@ CONNECTION_STATE_FAILED
Definition AgoraBase.h:3360
@ CONNECTION_STATE_CONNECTED
Definition AgoraBase.h:3351
const int COMPATIBLE_BITRATE
Definition AgoraBase.h:1535
REMOTE_AUDIO_STATE_REASON
Definition AgoraBase.h:2821
@ REMOTE_AUDIO_REASON_REMOTE_UNMUTED
Definition AgoraBase.h:2853
@ REMOTE_AUDIO_REASON_REMOTE_MUTED
Definition AgoraBase.h:2848
@ REMOTE_AUDIO_REASON_LOCAL_MUTED
Definition AgoraBase.h:2838
@ REMOTE_AUDIO_REASON_REMOTE_OFFLINE
Definition AgoraBase.h:2857
@ REMOTE_AUDIO_REASON_NETWORK_CONGESTION
Definition AgoraBase.h:2829
@ REMOTE_AUDIO_REASON_NETWORK_RECOVERY
Definition AgoraBase.h:2833
@ REMOTE_AUDIO_REASON_LOCAL_UNMUTED
Definition AgoraBase.h:2843
@ REMOTE_AUDIO_REASON_INTERNAL
Definition AgoraBase.h:2825
TCcMode
Definition AgoraBase.h:4922
@ CC_DISABLED
Definition AgoraBase.h:4930
@ CC_ENABLED
Definition AgoraBase.h:4926
USER_OFFLINE_REASON_TYPE
Definition AgoraBase.h:1236
@ USER_OFFLINE_BECOME_AUDIENCE
Definition AgoraBase.h:1250
@ USER_OFFLINE_QUIT
Definition AgoraBase.h:1240
@ USER_OFFLINE_DROPPED
Definition AgoraBase.h:1246
STREAM_PUBLISH_STATE
Definition AgoraBase.h:4826
@ PUB_STATE_IDLE
Definition AgoraBase.h:4830
@ PUB_STATE_PUBLISHED
Definition AgoraBase.h:4842
@ PUB_STATE_PUBLISHING
Definition AgoraBase.h:4838
@ PUB_STATE_NO_PUBLISHED
Definition AgoraBase.h:4834
VIDEO_STREAM_TYPE
Definition AgoraBase.h:1837
@ VIDEO_STREAM_HIGH
Definition AgoraBase.h:1841
@ VIDEO_STREAM_LOW
Definition AgoraBase.h:1845
unsigned int track_id_t
Definition AgoraMediaBase.h:26
AUDIO_PROFILE_TYPE
Definition AgoraBase.h:2541
@ AUDIO_PROFILE_MUSIC_STANDARD_STEREO
Definition AgoraBase.h:2559
@ AUDIO_PROFILE_IOT
Definition AgoraBase.h:2571
@ AUDIO_PROFILE_MUSIC_HIGH_QUALITY
Definition AgoraBase.h:2563
@ AUDIO_PROFILE_NUM
Definition AgoraBase.h:2574
@ AUDIO_PROFILE_DEFAULT
Definition AgoraBase.h:2547
@ AUDIO_PROFILE_MUSIC_STANDARD
Definition AgoraBase.h:2555
@ AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO
Definition AgoraBase.h:2567
@ AUDIO_PROFILE_SPEECH_STANDARD
Definition AgoraBase.h:2551
VIDEO_CODEC_TYPE
Definition AgoraBase.h:1552
@ VIDEO_CODEC_GENERIC_H264
Definition AgoraBase.h:1580
@ VIDEO_CODEC_H265
Definition AgoraBase.h:1568
@ VIDEO_CODEC_GENERIC_JPEG
Definition AgoraBase.h:1588
@ VIDEO_CODEC_VP9
Definition AgoraBase.h:1572
@ VIDEO_CODEC_AV1
Definition AgoraBase.h:1584
@ VIDEO_CODEC_H264
Definition AgoraBase.h:1564
@ VIDEO_CODEC_GENERIC
Definition AgoraBase.h:1576
@ VIDEO_CODEC_NONE
Definition AgoraBase.h:1556
@ VIDEO_CODEC_VP8
Definition AgoraBase.h:1560
LOCAL_VIDEO_STREAM_STATE
Definition AgoraBase.h:2732
@ LOCAL_VIDEO_STREAM_STATE_ENCODING
Definition AgoraBase.h:2744
@ LOCAL_VIDEO_STREAM_STATE_FAILED
Definition AgoraBase.h:2748
@ LOCAL_VIDEO_STREAM_STATE_STOPPED
Definition AgoraBase.h:2736
@ LOCAL_VIDEO_STREAM_STATE_CAPTURING
Definition AgoraBase.h:2740
REMOTE_VIDEO_STATE
Definition AgoraBase.h:2862
@ REMOTE_VIDEO_STATE_FAILED
Definition AgoraBase.h:2887
@ REMOTE_VIDEO_STATE_DECODING
Definition AgoraBase.h:2878
@ REMOTE_VIDEO_STATE_FROZEN
Definition AgoraBase.h:2883
@ REMOTE_VIDEO_STATE_STARTING
Definition AgoraBase.h:2871
@ REMOTE_VIDEO_STATE_STOPPED
Definition AgoraBase.h:2868
EXPERIENCE_POOR_REASON
Definition AgoraBase.h:2399
@ LOCAL_NETWORK_QUALITY_POOR
Definition AgoraBase.h:2408
@ EXPERIENCE_REASON_NONE
Definition AgoraBase.h:2402
@ WIRELESS_SIGNAL_POOR
Definition AgoraBase.h:2411
@ WIFI_BLUETOOTH_COEXIST
Definition AgoraBase.h:2415
@ REMOTE_NETWORK_QUALITY_POOR
Definition AgoraBase.h:2405
AREA_CODE
Definition AgoraBase.h:4291
@ AREA_CODE_NA
Definition AgoraBase.h:4299
@ AREA_CODE_AS
Definition AgoraBase.h:4307
@ AREA_CODE_EU
Definition AgoraBase.h:4303
@ AREA_CODE_JP
Definition AgoraBase.h:4311
@ AREA_CODE_GLOB
Definition AgoraBase.h:4319
@ AREA_CODE_IN
Definition AgoraBase.h:4315
@ AREA_CODE_CN
Definition AgoraBase.h:4295
MAX_USER_ACCOUNT_LENGTH_TYPE
Definition AgoraBase.h:4792
@ MAX_USER_ACCOUNT_LENGTH
Definition AgoraBase.h:4795
EXPERIENCE_QUALITY_TYPE
Definition AgoraBase.h:2384
@ EXPERIENCE_QUALITY_GOOD
Definition AgoraBase.h:2388
@ EXPERIENCE_QUALITY_BAD
Definition AgoraBase.h:2392
VIDEO_MIRROR_MODE_TYPE
Definition AgoraBase.h:1979
@ VIDEO_MIRROR_MODE_AUTO
Definition AgoraBase.h:1983
@ VIDEO_MIRROR_MODE_ENABLED
Definition AgoraBase.h:1987
@ VIDEO_MIRROR_MODE_DISABLED
Definition AgoraBase.h:1991
ENCRYPTION_MODE
Definition AgoraBase.h:4666
@ SM4_128_ECB
Definition AgoraBase.h:4680
REMOTE_VIDEO_DOWNSCALE_LEVEL
Definition AgoraBase.h:3010
@ REMOTE_VIDEO_DOWNSCALE_LEVEL_1
Definition AgoraBase.h:3018
@ REMOTE_VIDEO_DOWNSCALE_LEVEL_3
Definition AgoraBase.h:3026
@ REMOTE_VIDEO_DOWNSCALE_LEVEL_4
Definition AgoraBase.h:3030
@ REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE
Definition AgoraBase.h:3014
@ REMOTE_VIDEO_DOWNSCALE_LEVEL_2
Definition AgoraBase.h:3022
const int STANDARD_BITRATE
Definition AgoraBase.h:1526
LASTMILE_PROBE_RESULT_STATE
Definition AgoraBase.h:3398
@ LASTMILE_PROBE_RESULT_COMPLETE
Definition AgoraBase.h:3402
@ LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE
Definition AgoraBase.h:3407
@ LASTMILE_PROBE_RESULT_UNAVAILABLE
Definition AgoraBase.h:3412
REMOTE_AUDIO_STATE
Definition AgoraBase.h:2786
@ REMOTE_AUDIO_STATE_FAILED
Definition AgoraBase.h:2814
@ REMOTE_AUDIO_STATE_STARTING
Definition AgoraBase.h:2797
@ REMOTE_AUDIO_STATE_STOPPED
Definition AgoraBase.h:2793
@ REMOTE_AUDIO_STATE_FROZEN
Definition AgoraBase.h:2809
@ REMOTE_AUDIO_STATE_DECODING
Definition AgoraBase.h:2804
NETWORK_TYPE
Definition AgoraBase.h:3555
@ NETWORK_TYPE_DISCONNECTED
Definition AgoraBase.h:3563
@ NETWORK_TYPE_MOBILE_3G
Definition AgoraBase.h:3579
@ NETWORK_TYPE_MOBILE_4G
Definition AgoraBase.h:3583
@ NETWORK_TYPE_UNKNOWN
Definition AgoraBase.h:3559
@ NETWORK_TYPE_LAN
Definition AgoraBase.h:3567
@ NETWORK_TYPE_WIFI
Definition AgoraBase.h:3571
@ NETWORK_TYPE_MOBILE_2G
Definition AgoraBase.h:3575
unsigned int uid_t
Definition AgoraMediaBase.h:25
QUALITY_ADAPT_INDICATION
Definition AgoraBase.h:2371
@ ADAPT_NONE
Definition AgoraBase.h:2373
@ ADAPT_UP_BANDWIDTH
Definition AgoraBase.h:2375
@ ADAPT_DOWN_BANDWIDTH
Definition AgoraBase.h:2377
AUDIO_CODEC_TYPE
Definition AgoraBase.h:1595
@ AUDIO_CODEC_G722
Definition AgoraBase.h:1612
@ AUDIO_CODEC_HEAAC
Definition AgoraBase.h:1623
@ AUDIO_CODEC_PCMU
Definition AgoraBase.h:1608
@ AUDIO_CODEC_OPUS
Definition AgoraBase.h:1599
@ AUDIO_CODEC_HEAAC2
Definition AgoraBase.h:1633
@ AUDIO_CODEC_AACLC
Definition AgoraBase.h:1619
@ AUDIO_CODEC_PCMA
Definition AgoraBase.h:1604
STREAM_SUBSCRIBE_STATE
Definition AgoraBase.h:4803
@ SUB_STATE_IDLE
Definition AgoraBase.h:4807
@ SUB_STATE_NO_SUBSCRIBED
Definition AgoraBase.h:4811
@ SUB_STATE_SUBSCRIBING
Definition AgoraBase.h:4815
@ SUB_STATE_SUBSCRIBED
Definition AgoraBase.h:4819
VIDEO_SOURCE_TYPE
Definition AgoraMediaBase.h:71
@ VIDEO_SOURCE_CAMERA_PRIMARY
Definition AgoraMediaBase.h:74
LOCAL_VIDEO_STREAM_ERROR
Definition AgoraBase.h:2755
@ LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION
Definition AgoraBase.h:2761
@ LOCAL_VIDEO_STREAM_ERROR_OK
Definition AgoraBase.h:2757
@ LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE
Definition AgoraBase.h:2765
@ LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY
Definition AgoraBase.h:2763
@ LOCAL_VIDEO_STREAM_ERROR_FAILURE
Definition AgoraBase.h:2759
@ LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE
Definition AgoraBase.h:2767
DEGRADATION_PREFERENCE
Definition AgoraBase.h:1471
@ MAINTAIN_FRAMERATE
Definition AgoraBase.h:1479
@ MAINTAIN_BALANCED
Definition AgoraBase.h:1483
@ MAINTAIN_QUALITY
Definition AgoraBase.h:1475
@ MAINTAIN_RESOLUTION
Definition AgoraBase.h:1487
REMOTE_VIDEO_STATE_REASON
Definition AgoraBase.h:2891
@ REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION
Definition AgoraBase.h:2900
@ REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED
Definition AgoraBase.h:2925
@ REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED
Definition AgoraBase.h:2920
@ REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED
Definition AgoraBase.h:2915
@ REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK
Definition AgoraBase.h:2935
@ REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY
Definition AgoraBase.h:2905
@ REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE
Definition AgoraBase.h:2930
@ REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY
Definition AgoraBase.h:2940
@ REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED
Definition AgoraBase.h:2910
@ REMOTE_VIDEO_STATE_REASON_INTERNAL
Definition AgoraBase.h:2895
QUALITY_TYPE
Definition AgoraBase.h:1274
@ QUALITY_BAD
Definition AgoraBase.h:1296
@ QUALITY_POOR
Definition AgoraBase.h:1292
@ QUALITY_GOOD
Definition AgoraBase.h:1288
@ QUALITY_UNKNOWN
Definition AgoraBase.h:1279
@ QUALITY_VBAD
Definition AgoraBase.h:1300
@ QUALITY_EXCELLENT
Definition AgoraBase.h:1283
@ QUALITY_DOWN
Definition AgoraBase.h:1304
VIDEO_FRAME_TYPE
Definition AgoraBase.h:1421
@ VIDEO_FRAME_TYPE_B_FRAME
Definition AgoraBase.h:1429
@ VIDEO_FRAME_TYPE_DROPPABLE_FRAME
Definition AgoraBase.h:1431
@ VIDEO_FRAME_TYPE_UNKNOW
Definition AgoraBase.h:1433
@ VIDEO_FRAME_TYPE_KEY_FRAME
Definition AgoraBase.h:1425
@ VIDEO_FRAME_TYPE_BLANK_FRAME
Definition AgoraBase.h:1423
@ VIDEO_FRAME_TYPE_DELTA_FRAME
Definition AgoraBase.h:1427
VIDEO_ORIENTATION
Definition AgoraBase.h:1343
@ VIDEO_ORIENTATION_270
Definition AgoraBase.h:1359
@ VIDEO_ORIENTATION_0
Definition AgoraBase.h:1347
@ VIDEO_ORIENTATION_90
Definition AgoraBase.h:1351
@ VIDEO_ORIENTATION_180
Definition AgoraBase.h:1355
ORIENTATION_MODE
Definition AgoraBase.h:1440
@ ORIENTATION_MODE_FIXED_PORTRAIT
Definition AgoraBase.h:1464
@ ORIENTATION_MODE_ADAPTIVE
Definition AgoraBase.h:1448
@ ORIENTATION_MODE_FIXED_LANDSCAPE
Definition AgoraBase.h:1456
CopyableAutoPtr< IString > AString
Definition AgoraBase.h:210
Definition AgoraBase.h:86
void * view_t
Definition AgoraBase.h:1199
util::AList< UserInfo > UserList
Definition AgoraBase.h:1226
commons::cjson::JsonWrapper any_document_t
Definition AgoraBase.h:95
const char * user_id_t
Definition AgoraBase.h:1198
@ POSITION_POST_CAPTURER
Definition AgoraMediaBase.h:758
CHANNEL_PROFILE_TYPE
Definition AgoraBase.h:306
@ __deprecated
Definition AgoraBase.h:331
@ CHANNEL_PROFILE_COMMUNICATION
Definition AgoraBase.h:312
@ CHANNEL_PROFILE_LIVE_BROADCASTING
Definition AgoraBase.h:318
@ CHANNEL_PROFILE_GAME
Definition AgoraBase.h:323
Definition AgoraBase.h:1205
UserInfo()
Definition AgoraBase.h:1223
bool hasAudio
Definition AgoraBase.h:1215
bool hasVideo
Definition AgoraBase.h:1221
util::AString userId
Definition AgoraBase.h:1209
bool sendEvenIfEmpty
Definition AgoraBase.h:1733
bool speech
Definition AgoraBase.h:1727
EncodedAudioFrameAdvancedSettings()
Definition AgoraBase.h:1718
Definition AgoraBase.h:1740
int sampleRateHz
Definition AgoraBase.h:1762
EncodedAudioFrameInfo(const EncodedAudioFrameInfo &rhs)
Definition AgoraBase.h:1748
EncodedAudioFrameAdvancedSettings advancedSettings
Definition AgoraBase.h:1776
EncodedAudioFrameInfo()
Definition AgoraBase.h:1741
int samplesPerChannel
Definition AgoraBase.h:1768
AUDIO_CODEC_TYPE codec
Definition AgoraBase.h:1758
int numberOfChannels
Definition AgoraBase.h:1772
int64_t captureTimeMs
Definition AgoraBase.h:1780
Definition AgoraBase.h:1880
VIDEO_STREAM_TYPE streamType
Definition AgoraBase.h:1972
int height
Definition AgoraBase.h:1935
int64_t captureTimeMs
Definition AgoraBase.h:1960
VIDEO_CODEC_TYPE codecType
Definition AgoraBase.h:1927
int trackId
Definition AgoraBase.h:1954
int framesPerSecond
Definition AgoraBase.h:1942
uid_t uid
Definition AgoraBase.h:1968
EncodedVideoFrameInfo & operator=(const EncodedVideoFrameInfo &rhs)
Definition AgoraBase.h:1907
int64_t decodeTimeMs
Definition AgoraBase.h:1964
EncodedVideoFrameInfo(const EncodedVideoFrameInfo &rhs)
Definition AgoraBase.h:1894
VIDEO_FRAME_TYPE frameType
Definition AgoraBase.h:1946
int width
Definition AgoraBase.h:1931
EncodedVideoFrameInfo()
Definition AgoraBase.h:1881
VIDEO_ORIENTATION rotation
Definition AgoraBase.h:1950
Definition AgoraBase.h:4702
const char * encryptionKey
Definition AgoraBase.h:4712
EncryptionConfig()
Definition AgoraBase.h:4715
uint8_t encryptionKdfSalt[32]
Definition AgoraBase.h:4713
ENCRYPTION_MODE encryptionMode
Definition AgoraBase.h:4706
Definition AgoraBase.h:3367
bool probeUplink
Definition AgoraBase.h:3374
bool probeDownlink
Definition AgoraBase.h:3380
unsigned int expectedUplinkBitrate
Definition AgoraBase.h:3386
unsigned int expectedDownlinkBitrate
Definition AgoraBase.h:3391
Definition AgoraBase.h:3420
LastmileProbeOneWayResult()
Definition AgoraBase.h:3434
unsigned int packetLossRate
Definition AgoraBase.h:3424
unsigned int availableBandwidth
Definition AgoraBase.h:3432
unsigned int jitter
Definition AgoraBase.h:3428
Definition AgoraBase.h:3444
LastmileProbeOneWayResult downlinkReport
Definition AgoraBase.h:3456
unsigned int rtt
Definition AgoraBase.h:3460
LastmileProbeOneWayResult uplinkReport
Definition AgoraBase.h:3452
LastmileProbeResult()
Definition AgoraBase.h:3462
LASTMILE_PROBE_RESULT_STATE state
Definition AgoraBase.h:3448
Definition AgoraBase.h:3197
int sentSampleRate
Definition AgoraBase.h:3205
int numChannels
Definition AgoraBase.h:3201
int sentBitrate
Definition AgoraBase.h:3209
Definition AgoraBase.h:2173
unsigned short rxVideoKBitRate
Definition AgoraBase.h:2221
int firstVideoPacketDurationAfterUnmute
Definition AgoraBase.h:2292
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition AgoraBase.h:2302
unsigned short rxAudioKBitRate
Definition AgoraBase.h:2213
int memoryAppUsageInKbytes
Definition AgoraBase.h:2257
unsigned int rxBytes
Definition AgoraBase.h:2185
unsigned short txAudioKBitRate
Definition AgoraBase.h:2217
unsigned short lastmileDelay
Definition AgoraBase.h:2229
unsigned int userCount
Definition AgoraBase.h:2233
unsigned int txVideoBytes
Definition AgoraBase.h:2193
unsigned short rxKBitRate
Definition AgoraBase.h:2209
int gatewayRtt
Definition AgoraBase.h:2245
unsigned int duration
Definition AgoraBase.h:2177
int firstVideoPacketDuration
Definition AgoraBase.h:2272
unsigned int rxAudioBytes
Definition AgoraBase.h:2197
unsigned short txKBitRate
Definition AgoraBase.h:2205
int packetsBeforeFirstKeyFramePacket
Definition AgoraBase.h:2282
int rxPacketLossRate
Definition AgoraBase.h:2315
int firstAudioPacketDuration
Definition AgoraBase.h:2267
int firstAudioPacketDurationAfterUnmute
Definition AgoraBase.h:2287
int firstVideoKeyFramePacketDurationAfterUnmute
Definition AgoraBase.h:2297
int txPacketLossRate
Definition AgoraBase.h:2311
RtcStats()
Definition AgoraBase.h:2316
double cpuTotalUsage
Definition AgoraBase.h:2241
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition AgoraBase.h:2307
double memoryAppUsageRatio
Definition AgoraBase.h:2249
int connectTimeMs
Definition AgoraBase.h:2262
double memoryTotalUsageRatio
Definition AgoraBase.h:2253
unsigned short txVideoKBitRate
Definition AgoraBase.h:2225
unsigned int txAudioBytes
Definition AgoraBase.h:2189
unsigned int txBytes
Definition AgoraBase.h:2181
unsigned int rxVideoBytes
Definition AgoraBase.h:2201
int firstVideoKeyFramePacketDuration
Definition AgoraBase.h:2277
double cpuAppUsage
Definition AgoraBase.h:2237
Definition AgoraBase.h:2149
bool operator==(const SimulcastStreamConfig &rhs) const
Definition AgoraBase.h:2163
SimulcastStreamConfig()
Definition AgoraBase.h:2162
int framerate
Definition AgoraBase.h:2161
int bitrate
Definition AgoraBase.h:2157
VideoDimensions dimensions
Definition AgoraBase.h:2153
Definition AgoraBase.h:4849
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition AgoraBase.h:4857
UserInfo()
Definition AgoraBase.h:4858
uid_t uid
Definition AgoraBase.h:4853
Definition AgoraBase.h:1500
VideoDimensions()
Definition AgoraBase.h:1509
bool operator==(const VideoDimensions &rhs) const
Definition AgoraBase.h:1511
int height
Definition AgoraBase.h:1508
int width
Definition AgoraBase.h:1504
VideoDimensions(int w, int h)
Definition AgoraBase.h:1510
Definition AgoraBase.h:1998
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition AgoraBase.h:2058
DEGRADATION_PREFERENCE degradationPreference
Definition AgoraBase.h:2053
VideoEncoderConfiguration & operator=(const VideoEncoderConfiguration &rhs)
Definition AgoraBase.h:2097
VIDEO_CODEC_TYPE codecType
Definition AgoraBase.h:2002
VideoEncoderConfiguration()
Definition AgoraBase.h:2087
int minBitrate
Definition AgoraBase.h:2044
VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror=VIDEO_MIRROR_MODE_DISABLED)
Definition AgoraBase.h:2069
VideoEncoderConfiguration(const VideoDimensions &d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror=VIDEO_MIRROR_MODE_DISABLED)
Definition AgoraBase.h:2060
ORIENTATION_MODE orientationMode
Definition AgoraBase.h:2048
int frameRate
Definition AgoraBase.h:2010
VideoEncoderConfiguration(const VideoEncoderConfiguration &config)
Definition AgoraBase.h:2078
int bitrate
Definition AgoraBase.h:2027
VideoDimensions dimensions
Definition AgoraBase.h:2006
Definition AgoraBase.h:1851
VIDEO_STREAM_TYPE type
Definition AgoraBase.h:1858
VideoSubscriptionOptions(VIDEO_STREAM_TYPE streamtype)
Definition AgoraBase.h:1869
bool encodedFrameOnly
Definition AgoraBase.h:1864
VideoSubscriptionOptions()
Definition AgoraBase.h:1866
VideoSubscriptionOptions(VIDEO_STREAM_TYPE streamtype, bool encoded_only)
Definition AgoraBase.h:1872
Definition AgoraBase.h:2958
VIDEO_CODEC_TYPE codecType
Definition AgoraBase.h:2987
uid_t ownerUid
Definition AgoraBase.h:2970
track_id_t trackId
Definition AgoraBase.h:2975
VIDEO_SOURCE_TYPE sourceType
Definition AgoraBase.h:2997
bool isLocal
Definition AgoraBase.h:2966
bool encodedFrameOnly
Definition AgoraBase.h:2993
VideoTrackInfo()
Definition AgoraBase.h:2959
const char * channelId
Definition AgoraBase.h:2979
VIDEO_STREAM_TYPE streamType
Definition AgoraBase.h:2983