Agora Java API Reference for Android
AgoraBase.h
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 #define MAX_PATH_260 (260)
23 
24 #if defined(_WIN32)
25 
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>
31 #endif
32 #include <Windows.h>
33 
34 #if defined(AGORARTC_EXPORT)
35 #define AGORA_API extern "C" __declspec(dllexport)
36 #else
37 #define AGORA_API extern "C" __declspec(dllimport)
38 #endif // AGORARTC_EXPORT
39 
40 #define AGORA_CALL __cdecl
41 
42 #define __deprecated
43 
44 #elif defined(__APPLE__)
45 
46 #include <TargetConditionals.h>
47 
48 #define AGORA_API extern "C" __attribute__((visibility("default")))
49 #define AGORA_CALL
50 
51 #elif defined(__ANDROID__) || defined(__linux__)
52 
53 #define AGORA_API extern "C" __attribute__((visibility("default")))
54 #define AGORA_CALL
55 
56 #define __deprecated
57 
58 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
59 
60 #define AGORA_API extern "C"
61 #define AGORA_CALL
62 
63 #define __deprecated
64 
65 #endif // _WIN32
66 
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
70 #else
71 #define OPTIONAL_ENUM_SIZE_T enum
72 #endif
73 #endif
74 
75 #ifndef OPTIONAL_NULLPTR
76 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
77 #define OPTIONAL_NULLPTR nullptr
78 #else
79 #define OPTIONAL_NULLPTR NULL
80 #endif
81 #endif
82 
83 namespace agora {
84 namespace commons {
85 namespace cjson {
86 class JsonWrapper;
87 } // namespace cjson
88 } // namespace commons
89 
90 typedef commons::cjson::JsonWrapper any_document_t;
91 
92 namespace base {
93 class IEngineBase;
94 
96  public:
97  virtual int setParameters(const char* parameters) = 0;
98  virtual int getParameters(const char* key, any_document_t& result) = 0;
99  virtual ~IParameterEngine() {}
100 };
101 } // namespace base
102 
103 namespace util {
104 
105 template <class T>
106 class AutoPtr {
107  protected:
108  typedef T value_type;
109  typedef T* pointer_type;
110 
111  public:
112  explicit AutoPtr(pointer_type p = NULL) : ptr_(p) {}
113 
114  ~AutoPtr() {
115  if (ptr_) {
116  ptr_->release();
117  ptr_ = NULL;
118  }
119  }
120 
121  operator bool() const { return (ptr_ != NULL); }
122 
123  value_type& operator*() const { return *get(); }
124 
125  pointer_type operator->() const { return get(); }
126 
127  pointer_type get() const { return ptr_; }
128 
129  pointer_type release() {
130  pointer_type ret = ptr_;
131  ptr_ = 0;
132  return ret;
133  }
134 
135  void reset(pointer_type ptr = NULL) {
136  if (ptr != ptr_ && ptr_) {
137  ptr_->release();
138  }
139 
140  ptr_ = ptr;
141  }
142 
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))) {
147  reset(p);
148  }
149 
150  return (p != NULL);
151  }
152 
153  private:
154  AutoPtr(const AutoPtr&);
155  AutoPtr& operator=(const AutoPtr&);
156 
157  private:
158  pointer_type ptr_;
159 };
160 
161 template <class T>
162 class CopyableAutoPtr : public AutoPtr<T> {
163  typedef typename AutoPtr<T>::pointer_type pointer_type;
164 
165  public:
166  explicit CopyableAutoPtr(pointer_type p = 0) : AutoPtr<T>(p) {}
167  explicit CopyableAutoPtr(const CopyableAutoPtr& rhs) { this->reset(rhs.clone()); }
168  CopyableAutoPtr& operator=(const CopyableAutoPtr& rhs) {
169  if (this != &rhs) this->reset(rhs.clone());
170  return *this;
171  }
172  pointer_type clone() const {
173  if (!this->get()) return NULL;
174  return this->get()->clone();
175  }
176 };
177 
178 class IString {
179  public:
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;
184  virtual IString* clone() = 0;
185  virtual void release() = 0;
186  virtual ~IString() {}
187 };
189 
190 class IIterator {
191  public:
192  virtual void* current() = 0;
193  virtual const void* const_current() const = 0;
194  virtual bool next() = 0;
195  virtual void release() = 0;
196  virtual ~IIterator() {}
197 };
198 
199 class IContainer {
200  public:
201  virtual IIterator* begin() = 0;
202  virtual size_t size() const = 0;
203  virtual void release() = 0;
204  virtual ~IContainer() {}
205 };
206 
207 template <class T>
209  IIterator* p;
210 
211  public:
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;
217  explicit AOutputIterator(IIterator* it = NULL) : p(it) {}
218  ~AOutputIterator() {
219  if (p) p->release();
220  }
221  AOutputIterator(const AOutputIterator& rhs) : p(rhs.p) {}
222  AOutputIterator& operator++() {
223  p->next();
224  return *this;
225  }
226  bool operator==(const AOutputIterator& rhs) const {
227  if (p && rhs.p)
228  return p->current() == rhs.p->current();
229  else
230  return valid() == rhs.valid();
231  }
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; }
236 };
237 
238 template <class T>
239 class AList {
240  IContainer* container;
241  bool owner;
242 
243  public:
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;
252 
253  public:
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();
259  container = c;
260  owner = take_ownership;
261  }
262  iterator begin() { return container ? iterator(container->begin()) : iterator(NULL); }
263  iterator end() { return iterator(NULL); }
264  size_type size() const { return container ? container->size() : 0; }
265  bool empty() const { return size() == 0; }
266 };
267 
268 } // namespace util
269 
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,
298 
303  CHANNEL_PROFILE_COMMUNICATION_1v1 = 4,
304 
310  CHANNEL_PROFILE_LIVE_BROADCASTING_2 = 5,
311 };
312 
316 enum WARN_CODE_TYPE {
321  WARN_INVALID_VIEW = 8,
326  WARN_INIT_VIDEO = 16,
331  WARN_PENDING = 20,
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,
359 
360  // sdk: 100~1000
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,
472 };
473 
477 enum ERROR_CODE_TYPE {
481  ERR_OK = 0,
482  // 1~1000
486  ERR_FAILED = 1,
491  ERR_INVALID_ARGUMENT = 2,
498  ERR_NOT_READY = 3,
502  ERR_NOT_SUPPORTED = 4,
506  ERR_REFUSED = 5,
510  ERR_BUFFER_TOO_SMALL = 6,
514  ERR_NOT_INITIALIZED = 7,
518  ERR_INVALID_STATE = 8,
523  ERR_NO_PERMISSION = 9,
529  ERR_TIMEDOUT = 10,
534  ERR_CANCELED = 11,
540  ERR_TOO_OFTEN = 12,
546  ERR_BIND_SOCKET = 13,
551  ERR_NET_DOWN = 14,
557  ERR_NET_NOBUFS = 15,
563  ERR_JOIN_CHANNEL_REJECTED = 17,
570  ERR_LEAVE_CHANNEL_REJECTED = 18,
574  ERR_ALREADY_IN_USE = 19,
579  ERR_ABORTED = 20,
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, // only used in web sdk
646  ERR_CONNECTION_LOST = 112, // only used in web sdk
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,
718 
722  ERR_LICENSE_CREDENTIAL_INVALID = 131,
723 
727  ERR_INVALID_USER_ACCOUNT = 134,
728 
729  // Licensing, keep the license error code same as the main version
730  ERR_CERT_RAW = 157,
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,
736  ERR_CERT_SIGN = 163,
737  ERR_CERT_FAIL = 164,
738  ERR_CERT_BUF = 165,
739  ERR_CERT_NULL = 166,
740  ERR_CERT_DUEDATE = 167,
741  ERR_CERT_REQUEST = 168,
742 
743  // PcmSend Error num
744  ERR_PCMSEND_FORMAT =200, // unsupport pcm format
745  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
746 
748  // signaling: 400~600
749  ERR_LOGOUT_OTHER = 400, //
750  ERR_LOGOUT_USER = 401, // logout by user
751  ERR_LOGOUT_NET = 402, // network failure
752  ERR_LOGOUT_KICKED = 403, // login in other device
753  ERR_LOGOUT_PACKET = 404, //
754  ERR_LOGOUT_TOKEN_EXPIRED = 405, // token expired
755  ERR_LOGOUT_OLDVERSION = 406, //
756  ERR_LOGOUT_TOKEN_WRONG = 407,
757  ERR_LOGOUT_ALREADY_LOGOUT = 408,
758  ERR_LOGIN_OTHER = 420,
759  ERR_LOGIN_NET = 421,
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,
785  // 1001~2000
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,
1101 
1102  // VDM error code starts from 1500
1106  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
1107 
1108  // VDM error code starts from 1500
1112  ERR_VDM_WIN_DEVICE_IN_USE = 1502,
1113 
1114  // VCM error code starts from 1600
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,
1132 };
1133 
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,
1160 };
1161 
1162 typedef const char* user_id_t;
1163 typedef void* view_t;
1164 
1168 struct UserInfo {
1178  bool hasAudio;
1184  bool hasVideo;
1185 
1186  UserInfo() : hasAudio(false), hasVideo(false) {}
1187 };
1188 
1189 typedef util::AList<UserInfo> UserList;
1190 
1191 // Shared between Agora Service and Rtc Engine
1192 namespace rtc {
1193 
1197 enum USER_OFFLINE_REASON_TYPE {
1201  USER_OFFLINE_QUIT = 0,
1207  USER_OFFLINE_DROPPED = 1,
1211  USER_OFFLINE_BECOME_AUDIENCE = 2,
1212 };
1213 
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,
1226 };
1227 
1231 enum QUALITY_TYPE {
1236  QUALITY_UNKNOWN __deprecated = 0,
1240  QUALITY_EXCELLENT = 1,
1245  QUALITY_GOOD = 2,
1249  QUALITY_POOR = 3,
1253  QUALITY_BAD = 4,
1257  QUALITY_VBAD = 5,
1261  QUALITY_DOWN = 6,
1265  QUALITY_UNSUPPORTED = 7,
1269  QUALITY_DETECTING
1270 };
1271 
1275 enum FIT_MODE_TYPE {
1280  MODE_COVER = 1,
1281 
1287  MODE_CONTAIN = 2,
1288 };
1289 
1293 enum VIDEO_ORIENTATION {
1297  VIDEO_ORIENTATION_0 = 0,
1301  VIDEO_ORIENTATION_90 = 90,
1305  VIDEO_ORIENTATION_180 = 180,
1309  VIDEO_ORIENTATION_270 = 270
1310 };
1311 
1315 enum FRAME_RATE {
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,
1344 };
1345 
1346 enum FRAME_WIDTH {
1347  FRAME_WIDTH_640 = 640,
1348 };
1349 
1350 enum FRAME_HEIGHT {
1351  FRAME_HEIGHT_360 = 360,
1352 };
1353 
1354 
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
1371 };
1372 
1376 enum ORIENTATION_MODE {
1384  ORIENTATION_MODE_ADAPTIVE = 0,
1392  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1400  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1401 };
1402 
1406 enum DEGRADATION_PREFERENCE {
1410  MAINTAIN_QUALITY = 0,
1414  MAINTAIN_FRAMERATE = 1,
1418  MAINTAIN_BALANCED = 2,
1422  MAINTAIN_RESOLUTION = 3,
1426  DISABLED = 100,
1427 };
1428 
1436  int width;
1440  int height;
1441  VideoDimensions() : width(640), height(480) {}
1442  VideoDimensions(int w, int h) : width(w), height(h) {}
1443  bool operator==(const VideoDimensions& rhs) const {
1444  return width == rhs.width && height == rhs.height;
1445  }
1446 };
1447 
1457 const int STANDARD_BITRATE = 0;
1458 
1466 const int COMPATIBLE_BITRATE = -1;
1467 
1471 const int DEFAULT_MIN_BITRATE = -1;
1472 
1476 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1477 
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,
1515 };
1516 
1520 enum AUDIO_CODEC_TYPE {
1524  AUDIO_CODEC_OPUS = 1,
1525  // kIsac = 2,
1529  AUDIO_CODEC_PCMA = 3,
1533  AUDIO_CODEC_PCMU = 4,
1537  AUDIO_CODEC_G722 = 5,
1538  // kIlbc = 6,
1540  // AUDIO_CODEC_AAC = 7,
1544  AUDIO_CODEC_AACLC = 8,
1548  AUDIO_CODEC_HEAAC = 9,
1552  AUDIO_CODEC_JC1 = 10,
1553  AUDIO_CODEC_HEAAC2 = 11,
1557  AUDIO_CODEC_LPCNET = 12,
1558 };
1559 
1563 enum AUDIO_ENCODING_TYPE {
1567  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1571  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1575  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1579  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1583  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1587  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1591  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1592 
1596  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1600  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1604  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1608  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1609 };
1610 
1614 enum WATERMARK_FIT_MODE {
1619  FIT_MODE_COVER_POSITION,
1624  FIT_MODE_USE_IMAGE_RATIO
1625 };
1626 
1632  : speech(true),
1633  sendEvenIfEmpty(true) {}
1634 
1640  bool speech;
1647 
1648 };
1649 
1655  : codec(AUDIO_CODEC_AACLC),
1656  sampleRateHz(0),
1657  samplesPerChannel(0),
1658  numberOfChannels(0) {}
1659 
1661  : codec(rhs.codec),
1669  AUDIO_CODEC_TYPE codec;
1688 };
1693  AudioPcmDataInfo() : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1694 
1697  channelNum(rhs.channelNum),
1698  samplesOut(rhs.samplesOut),
1700  ntpTimeMs(rhs.ntpTimeMs) {}
1701 
1706 
1707  int16_t channelNum;
1708 
1709  // Output
1713  size_t samplesOut;
1717  int64_t elapsedTimeMs;
1721  int64_t ntpTimeMs;
1722 };
1726 enum H264PacketizeMode {
1730  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1734  SingleNalUnit, // Mode 0 - only single NALU allowed
1735 };
1736 
1740 enum VIDEO_STREAM_TYPE {
1744  VIDEO_STREAM_HIGH = 0,
1748  VIDEO_STREAM_LOW = 1,
1749 };
1750 
1756  : codecType(VIDEO_CODEC_H264),
1757  width(0),
1758  height(0),
1759  framesPerSecond(0),
1760  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1761  rotation(VIDEO_ORIENTATION_0),
1762  trackId(0),
1763  renderTimeMs(0),
1764  internalSendTs(0),
1765  uid(0),
1766  streamType(VIDEO_STREAM_HIGH) {}
1767 
1769  : codecType(rhs.codecType),
1770  width(rhs.width),
1771  height(rhs.height),
1773  frameType(rhs.frameType),
1774  rotation(rhs.rotation),
1775  trackId(rhs.trackId),
1778  uid(rhs.uid),
1779  streamType(rhs.streamType) {}
1780 
1781  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1782  if (this == &rhs) return *this;
1783  codecType = rhs.codecType;
1784  width = rhs.width;
1785  height = rhs.height;
1787  frameType = rhs.frameType;
1788  rotation = rhs.rotation;
1789  trackId = rhs.trackId;
1790  renderTimeMs = rhs.renderTimeMs;
1792  uid = rhs.uid;
1793  streamType = rhs.streamType;
1794  return *this;
1795  }
1799  VIDEO_CODEC_TYPE codecType;
1803  int width;
1807  int height;
1818  VIDEO_FRAME_TYPE frameType;
1822  VIDEO_ORIENTATION rotation;
1826  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1827  // and additional payload for later implementation.
1831  int64_t renderTimeMs;
1835  uint64_t internalSendTs;
1839  uid_t uid;
1843  VIDEO_STREAM_TYPE streamType;
1844 };
1845 
1849 enum VIDEO_MIRROR_MODE_TYPE {
1853  VIDEO_MIRROR_MODE_AUTO = 0,
1857  VIDEO_MIRROR_MODE_ENABLED = 1,
1861  VIDEO_MIRROR_MODE_DISABLED = 2,
1862 };
1863 
1871  VIDEO_CODEC_TYPE codecType;
1934  int bitrate;
1935 
1955  ORIENTATION_MODE orientationMode;
1960  DEGRADATION_PREFERENCE degradationPreference;
1961 
1965  VIDEO_MIRROR_MODE_TYPE mirrorMode;
1966 
1967  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1968  : codecType(VIDEO_CODEC_H264),
1969  dimensions(d),
1970  frameRate(f),
1971  bitrate(b),
1972  minBitrate(DEFAULT_MIN_BITRATE),
1973  orientationMode(m),
1974  degradationPreference(MAINTAIN_QUALITY),
1975  mirrorMode(mirror) {}
1976  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1977  : codecType(VIDEO_CODEC_H264),
1978  dimensions(width, height),
1979  frameRate(f),
1980  bitrate(b),
1981  minBitrate(DEFAULT_MIN_BITRATE),
1982  orientationMode(m),
1983  degradationPreference(MAINTAIN_QUALITY),
1984  mirrorMode(mirror) {}
1985  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
1986  : codecType(config.codecType),
1987  dimensions(config.dimensions),
1988  frameRate(config.frameRate),
1989  bitrate(config.bitrate),
1990  minBitrate(config.minBitrate),
1993  mirrorMode(config.mirrorMode) {}
1994  VideoEncoderConfiguration()
1995  : codecType(VIDEO_CODEC_H264),
1996  dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360),
1997  frameRate(FRAME_RATE_FPS_15),
1998  bitrate(STANDARD_BITRATE),
1999  minBitrate(DEFAULT_MIN_BITRATE),
2000  orientationMode(ORIENTATION_MODE_ADAPTIVE),
2001  degradationPreference(MAINTAIN_QUALITY),
2002  mirrorMode(VIDEO_MIRROR_MODE_DISABLED) {}
2003 
2004  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
2005  if (this == &rhs) return *this;
2006  codecType = rhs.codecType;
2007  dimensions = rhs.dimensions;
2008  frameRate = rhs.frameRate;
2009  bitrate = rhs.bitrate;
2010  minBitrate = rhs.minBitrate;
2011  orientationMode = rhs.orientationMode;
2012  degradationPreference = rhs.degradationPreference;
2013  mirrorMode = rhs.mirrorMode;
2014  return *this;
2015  }
2016 };
2017 
2026  bool ordered;
2027 };
2028 
2040  int bitrate;
2045  SimulcastStreamConfig() : dimensions(160, 120), bitrate(65), framerate(5) {}
2046  bool operator==(const SimulcastStreamConfig& rhs) const {
2047  return dimensions == rhs.dimensions && bitrate == rhs.bitrate && framerate == rhs.framerate;
2048  }
2049 };
2050 
2054 struct Rectangle {
2058  int x;
2062  int y;
2066  int width;
2070  int height;
2071 
2072  Rectangle() : x(0), y(0), width(0), height(0) {}
2073  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2074 };
2075 
2081  float xRatio;
2085  float yRatio;
2089  float widthRatio;
2090 
2091  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2092  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2093 };
2094 
2119  WATERMARK_FIT_MODE mode;
2120 
2122  : visibleInPreview(false),
2123  positionInLandscapeMode(0, 0, 0, 0),
2124  positionInPortraitMode(0, 0, 0, 0),
2125  mode(FIT_MODE_COVER_POSITION) {}
2126 };
2127 
2131 struct RtcStats {
2135  unsigned int duration;
2139  unsigned int txBytes;
2143  unsigned int rxBytes;
2147  unsigned int txAudioBytes;
2151  unsigned int txVideoBytes;
2155  unsigned int rxAudioBytes;
2159  unsigned int rxVideoBytes;
2163  unsigned short txKBitRate;
2167  unsigned short rxKBitRate;
2171  unsigned short rxAudioKBitRate;
2175  unsigned short txAudioKBitRate;
2179  unsigned short rxVideoKBitRate;
2183  unsigned short txVideoKBitRate;
2187  unsigned short lastmileDelay;
2191  unsigned int userCount;
2195  double cpuAppUsage;
2274  RtcStats()
2275  : duration(0),
2276  txBytes(0),
2277  rxBytes(0),
2278  txAudioBytes(0),
2279  txVideoBytes(0),
2280  rxAudioBytes(0),
2281  rxVideoBytes(0),
2282  txKBitRate(0),
2283  rxKBitRate(0),
2284  rxAudioKBitRate(0),
2285  txAudioKBitRate(0),
2286  rxVideoKBitRate(0),
2287  txVideoKBitRate(0),
2288  lastmileDelay(0),
2289  userCount(0),
2290  cpuAppUsage(0.0),
2291  cpuTotalUsage(0.0),
2292  gatewayRtt(0),
2293  memoryAppUsageRatio(0.0),
2294  memoryTotalUsageRatio(0.0),
2296  connectTimeMs(0),
2306  txPacketLossRate(0),
2307  rxPacketLossRate(0) {}
2308 };
2309 
2313 enum VIDEO_SOURCE_TYPE {
2316  VIDEO_SOURCE_CAMERA_PRIMARY,
2317  VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
2320  VIDEO_SOURCE_CAMERA_SECONDARY,
2323  VIDEO_SOURCE_SCREEN_PRIMARY,
2324  VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
2327  VIDEO_SOURCE_SCREEN_SECONDARY,
2330  VIDEO_SOURCE_CUSTOM,
2333  VIDEO_SOURCE_MEDIA_PLAYER,
2336  VIDEO_SOURCE_RTC_IMAGE_PNG,
2339  VIDEO_SOURCE_RTC_IMAGE_JPEG,
2342  VIDEO_SOURCE_RTC_IMAGE_GIF,
2345  VIDEO_SOURCE_REMOTE,
2348  VIDEO_SOURCE_TRANSCODED,
2349 
2350  VIDEO_SOURCE_UNKNOWN = 100
2351 };
2352 
2356 enum CLIENT_ROLE_TYPE {
2360  CLIENT_ROLE_BROADCASTER = 1,
2364  CLIENT_ROLE_AUDIENCE = 2,
2365 };
2366 
2369 enum QUALITY_ADAPT_INDICATION {
2371  ADAPT_NONE = 0,
2373  ADAPT_UP_BANDWIDTH = 1,
2375  ADAPT_DOWN_BANDWIDTH = 2,
2376 };
2377 
2379 enum AUDIENCE_LATENCY_LEVEL_TYPE
2380 {
2382  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2384  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2388  AUDIENCE_LATENCY_LEVEL_HIGH_LATENCY = 3,
2389 };
2390 
2394 {
2398  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2400  : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2401 };
2402 
2406 enum EXPERIENCE_QUALITY_TYPE {
2408  EXPERIENCE_QUALITY_GOOD = 0,
2410  EXPERIENCE_QUALITY_BAD = 1,
2411 };
2412 
2418 {
2422  uid_t uid;
2426  int quality;
2494 
2495  RemoteAudioStats() :
2496  uid(0),
2497  quality(0),
2499  jitterBufferDelay(0),
2500  audioLossRate(0),
2501  numChannels(0),
2502  receivedSampleRate(0),
2503  receivedBitrate(0),
2504  totalFrozenTime(0),
2505  frozenRate(0),
2506  mosValue(0),
2507  totalActiveTime(0),
2508  publishDuration(0),
2509  qoeQuality(0) {}
2510 };
2511 
2515 enum AUDIO_PROFILE_TYPE {
2523  AUDIO_PROFILE_DEFAULT = 0,
2527  AUDIO_PROFILE_SPEECH_STANDARD = 1,
2531  AUDIO_PROFILE_MUSIC_STANDARD = 2,
2536  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2540  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2544  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2548  AUDIO_PROFILE_IOT = 6,
2549  AUDIO_PROFILE_NUM = 7
2550 };
2551 
2555 enum AUDIO_SCENARIO_TYPE {
2559  AUDIO_SCENARIO_DEFAULT = 0,
2565  AUDIO_SCENARIO_GAME_STREAMING = 3,
2571  AUDIO_SCENARIO_CHATROOM = 5,
2575  AUDIO_SCENARIO_HIGH_DEFINITION = 6,
2579  AUDIO_SCENARIO_CHORUS = 7,
2583  AUDIO_SCENARIO_NUM = 8,
2584 };
2585 
2589 struct VideoFormat {
2590  OPTIONAL_ENUM_SIZE_T {
2592  kMaxWidthInPixels = 3840,
2594  kMaxHeightInPixels = 2160,
2596  kMaxFps = 60,
2597  };
2598 
2602  int width; // Number of pixels.
2606  int height; // Number of pixels.
2610  int fps;
2611  VideoFormat() : width(FRAME_WIDTH_640), height(FRAME_HEIGHT_360), fps(FRAME_RATE_FPS_15) {}
2612  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
2613 };
2614 
2618 enum VIDEO_CONTENT_HINT {
2622  CONTENT_HINT_NONE,
2629  CONTENT_HINT_MOTION,
2635  CONTENT_HINT_DETAILS
2636 };
2637 
2641 enum LOCAL_AUDIO_STREAM_STATE {
2645  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2649  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2653  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2657  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2658 };
2659 
2663 enum LOCAL_AUDIO_STREAM_ERROR {
2667  LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2671  LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2675  LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2679  LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2684  LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2688  LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
2689 };
2690 
2693 enum LOCAL_VIDEO_STREAM_STATE {
2697  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2701  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2705  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2709  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2710 };
2711 
2715 enum LOCAL_VIDEO_STREAM_ERROR {
2717  LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2719  LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2721  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2723  LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2725  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2727  LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2729  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6,
2731  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2733  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND = 8,
2735  LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED = 9,
2737  LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID = 10,
2739  LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE = 101,
2741  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2743  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
2745  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
2747  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
2748 };
2749 
2753 enum REMOTE_AUDIO_STATE
2754 {
2761  REMOTE_AUDIO_STATE_STOPPED = 0, // Default state, audio is started or remote user disabled/muted audio stream
2765  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
2772  REMOTE_AUDIO_STATE_DECODING = 2, // The first remote audio frame has been decoded or fronzen state ends
2777  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
2782  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
2783 };
2784 
2788 enum REMOTE_AUDIO_STATE_REASON
2789 {
2793  REMOTE_AUDIO_REASON_INTERNAL = 0,
2797  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2801  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2806  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2811  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2816  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2821  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2825  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2826 };
2827 
2829 enum REMOTE_VIDEO_STATE {
2835  REMOTE_VIDEO_STATE_STOPPED = 0,
2838  REMOTE_VIDEO_STATE_STARTING = 1,
2845  REMOTE_VIDEO_STATE_DECODING = 2,
2850  REMOTE_VIDEO_STATE_FROZEN = 3,
2854  REMOTE_VIDEO_STATE_FAILED = 4,
2855 };
2857 enum REMOTE_VIDEO_STATE_REASON {
2861  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2862 
2866  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2867 
2871  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2872 
2876  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2877 
2881  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2882 
2886  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2887 
2891  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2892 
2896  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2897 
2901  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2902 
2906  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
2907 
2911  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
2915  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
2916 
2917 };
2918 
2922 enum REMOTE_USER_STATE {
2926  USER_STATE_MUTE_AUDIO = (1 << 0),
2930  USER_STATE_MUTE_VIDEO = (1 << 1),
2934  USER_STATE_ENABLE_VIDEO = (1 << 4),
2938  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
2939 
2940 };
2941 
2947  VideoTrackInfo()
2948  : isLocal(false), ownerUid(0), trackId(0), channelId(OPTIONAL_NULLPTR)
2949  , streamType(VIDEO_STREAM_HIGH), codecType(VIDEO_CODEC_H264)
2950  , encodedFrameOnly(false), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY)
2951  , observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
2957  bool isLocal;
2961  uid_t ownerUid;
2962 
2966  track_id_t trackId;
2970  const char* channelId;
2974  VIDEO_STREAM_TYPE streamType;
2978  VIDEO_CODEC_TYPE codecType;
2988  VIDEO_SOURCE_TYPE sourceType;
2993 };
2994 
2998 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3002  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3006  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3010  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3014  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3018  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3019 };
3020 
3028  uid_t uid;
3029 
3033  unsigned int volume; // [0,255]
3034 
3035  /*
3036  * The activity status of remote users
3037  */
3038  unsigned int vad;
3039 
3043  double voicePitch;
3044 
3045  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3046 };
3047 
3051 struct DeviceInfo {
3052  /*
3053  * Whether the device support low latency audio. Not support by default
3054  */
3055  bool isLowLatencyAudioSupported;
3056 
3057  DeviceInfo() : isLowLatencyAudioSupported(false) {}
3058 };
3059 
3064  public:
3065  virtual ~IPacketObserver() {}
3069  struct Packet {
3073  const unsigned char* buffer;
3077  unsigned int size;
3078 
3079  Packet() : buffer(NULL), size(0) {}
3080  };
3088  virtual bool onSendAudioPacket(Packet& packet) = 0;
3096  virtual bool onSendVideoPacket(Packet& packet) = 0;
3104  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3112  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3113 };
3118  public:
3128  virtual bool OnEncodedVideoImageReceived(const uint8_t* imageBuffer, size_t length,
3129  const EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
3130 
3131  virtual ~IVideoEncodedImageReceiver() {}
3132 };
3133 
3137 enum AUDIO_SAMPLE_RATE_TYPE {
3141  AUDIO_SAMPLE_RATE_32000 = 32000,
3145  AUDIO_SAMPLE_RATE_44100 = 44100,
3149  AUDIO_SAMPLE_RATE_48000 = 48000,
3150 };
3151 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3155  VIDEO_CODEC_H264_FOR_STREAM = 1,
3159  VIDEO_CODEC_H265_FOR_STREAM = 2,
3160 };
3161 
3165 enum VIDEO_CODEC_PROFILE_TYPE {
3169  VIDEO_CODEC_PROFILE_BASELINE = 66,
3173  VIDEO_CODEC_PROFILE_MAIN = 77,
3177  VIDEO_CODEC_PROFILE_HIGH = 100,
3178 };
3179 
3180 
3184 enum AUDIO_CODEC_PROFILE_TYPE {
3188  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3192  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3196  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3197 };
3198 
3204 {
3224  unsigned short txPacketLossRate;
3225 };
3226 
3227 
3231 enum RTMP_STREAM_PUBLISH_STATE {
3234  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3237  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3240  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3246  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3249  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3252  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3253 };
3254 
3258 enum RTMP_STREAM_PUBLISH_ERROR_TYPE {
3260  RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3262  RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3264  RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3266  RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3268  RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3270  RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3272  RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3274  RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3276  RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3278  RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3280  RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3282  RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER = 11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
3284  RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM = 13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
3286  RTMP_STREAM_PUBLISH_ERROR_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
3288  RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID = 15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
3296  RTMP_STREAM_UNPUBLISH_ERROR_OK = 100,
3297 };
3298 
3300 enum RTMP_STREAMING_EVENT {
3303  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3308  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3311  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3314  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3315 };
3316 
3319 typedef struct RtcImage {
3323  const char* url;
3328  int x;
3333  int y;
3337  int width;
3341  int height;
3345  int zOrder;
3351  double alpha;
3352 
3353  RtcImage() : url(NULL), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
3354 } RtcImage;
3355 
3357  LiveStreamAdvancedFeature() : featureName(NULL), opened(false) {}
3358  LiveStreamAdvancedFeature(const char* feat_name, bool open) : featureName(feat_name), opened(open) {}
3360  // static const char* LBHQ = "lbhq";
3362  // static const char* VEO = "veo";
3363 
3368  const char* featureName;
3369 
3374  bool opened;
3375 } ;
3376 
3380 enum CONNECTION_STATE_TYPE
3381 {
3385  CONNECTION_STATE_DISCONNECTED = 1,
3389  CONNECTION_STATE_CONNECTING = 2,
3394  CONNECTION_STATE_CONNECTED = 3,
3399  CONNECTION_STATE_RECONNECTING = 4,
3403  CONNECTION_STATE_FAILED = 5,
3404 };
3405 
3413  uid_t uid;
3417  int x;
3421  int y;
3425  int width;
3429  int height;
3435  int zOrder;
3439  double alpha;
3456  TranscodingUser()
3457  : uid(0),
3458  x(0),
3459  y(0),
3460  width(0),
3461  height(0),
3462  zOrder(0),
3463  alpha(1.0),
3464  audioChannel(0) {}
3465 };
3466 
3477  int width;
3484  int height;
3495 
3502 
3510  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
3513  unsigned int backgroundColor;
3514 
3516  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
3517 
3521  unsigned int userCount;
3530 
3533  const char* metadata;
3539 
3547  unsigned int watermarkCount;
3548 
3561  unsigned int backgroundImageCount;
3562 
3565  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
3581  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
3583 
3587  LiveStreamAdvancedFeature* advancedFeatures;
3588 
3590  unsigned int advancedFeatureCount;
3592  LiveTranscoding() : width(360), height(640), videoBitrate(400), videoFramerate(15), lowLatency(false), videoGop(30), videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH), backgroundColor(0x000000), videoCodecType(VIDEO_CODEC_H264_FOR_STREAM), userCount(0), transcodingUsers(NULL), transcodingExtraInfo(NULL), metadata(NULL), watermark(NULL), watermarkCount(0), backgroundImage(NULL), backgroundImageCount(0), audioSampleRate(AUDIO_SAMPLE_RATE_48000), audioBitrate(48), audioChannels(1), audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC), advancedFeatures(NULL), advancedFeatureCount(0) {}
3593 };
3594 
3602  agora::media::MEDIA_SOURCE_TYPE sourceType;
3610  const char* imageUrl;
3614  int x;
3618  int y;
3622  int width;
3626  int height;
3632  int zOrder;
3636  double alpha;
3640  bool mirror;
3641 
3643  : sourceType(agora::media::PRIMARY_CAMERA_SOURCE),
3644  remoteUserUid(0),
3645  imageUrl(NULL),
3646  x(0),
3647  y(0),
3648  width(0),
3649  height(0),
3650  zOrder(0),
3651  alpha(1.0),
3652  mirror(false) {}
3653 };
3654 
3655 
3663  unsigned int streamCount;
3672 
3674  : streamCount(0),
3675  VideoInputStreams(NULL),
3677 };
3678 
3707 };
3708 
3712 enum LASTMILE_PROBE_RESULT_STATE {
3716  LASTMILE_PROBE_RESULT_COMPLETE = 1,
3721  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3726  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3727 };
3728 
3737  unsigned int packetLossRate;
3741  unsigned int jitter;
3745  unsigned int availableBandwidth;
3746 
3748  jitter(0),
3749  availableBandwidth(0) {}
3750 };
3751 
3760  LASTMILE_PROBE_RESULT_STATE state;
3772  unsigned int rtt;
3773 
3775  : state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
3776  rtt(0) {}
3777 };
3778 
3782 enum CONNECTION_CHANGED_REASON_TYPE
3783 {
3787  CONNECTION_CHANGED_CONNECTING = 0,
3791  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3795  CONNECTION_CHANGED_INTERRUPTED = 2,
3799  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3803  CONNECTION_CHANGED_JOIN_FAILED = 4,
3807  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3811  CONNECTION_CHANGED_INVALID_APP_ID = 6,
3815  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3819  CONNECTION_CHANGED_INVALID_TOKEN = 8,
3823  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3827  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3831  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3835  CONNECTION_CHANGED_RENEW_TOKEN = 12,
3840  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3844  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3848  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3852  CONNECTION_CHANGED_LOST = 16,
3856  CONNECTION_CHANGED_ECHO_TEST = 17,
3860  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
3864  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
3868  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
3869 };
3870 
3874 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
3878  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
3882  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
3886  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3,
3890  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4,
3891 };
3892 
3896 enum NETWORK_TYPE {
3900  NETWORK_TYPE_UNKNOWN = -1,
3904  NETWORK_TYPE_DISCONNECTED = 0,
3908  NETWORK_TYPE_LAN = 1,
3912  NETWORK_TYPE_WIFI = 2,
3916  NETWORK_TYPE_MOBILE_2G = 3,
3920  NETWORK_TYPE_MOBILE_3G = 4,
3924  NETWORK_TYPE_MOBILE_4G = 5,
3925 };
3926 
3930 enum VIDEO_VIEW_SETUP_MODE {
3934  VIDEO_VIEW_SETUP_REPLACE = 0,
3938  VIDEO_VIEW_SETUP_ADD = 1,
3942  VIDEO_VIEW_SETUP_REMOVE = 2,
3943 };
3944 
3948 struct VideoCanvas {
3952  view_t view;
3956  media::base::RENDER_MODE_TYPE renderMode;
3960  VIDEO_MIRROR_MODE_TYPE mirrorMode;
3964  uid_t uid;
3965  bool isScreenView;
3966 
3967  void* priv; // private data (underlying video engine denotes it)
3968 
3969  size_t priv_size;
3970 
3971  VIDEO_SOURCE_TYPE sourceType;
3972 
3973  Rectangle cropArea;
3974 
3975  VIDEO_VIEW_SETUP_MODE setupMode;
3976 
3977  VideoCanvas() : view(NULL), renderMode(media::base::RENDER_MODE_HIDDEN), mirrorMode(VIDEO_MIRROR_MODE_AUTO),
3978  uid(0), isScreenView(false), priv(NULL), priv_size(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
3979  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
3980  : view(v), renderMode(m), mirrorMode(mt), uid(u), isScreenView(false), priv(NULL), priv_size(0),
3981  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
3982  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
3983  : view(v), renderMode(m), mirrorMode(mt), uid(0), isScreenView(false), priv(NULL), priv_size(0),
3984  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
3985 };
3986 
3999  };
4000 
4004 
4007 
4011 
4015 
4019 
4020  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness, float sharpness) : lighteningContrastLevel(contrastLevel), lighteningLevel(lightening), smoothnessLevel(smoothness), rednessLevel(redness), sharpnessLevel(sharpness) {}
4021 
4023 };
4024 
4025 
4040  };
4041 
4051  };
4052 
4056 
4065  unsigned int color;
4066 
4073  const char* source;
4074 
4077 
4079 };
4080 
4082  float _x_center;
4083  float _y_center;
4084  float _scale_factor;
4085  float _focal_length;
4086  float _pol_focal_length;
4087  float _split_height;
4088  float _ss[5];
4089  FishCorrectionParams():_x_center(0.49),
4090  _y_center(0.48),
4091  _scale_factor(4.5),
4092  _focal_length(31),
4093  _pol_focal_length(31),
4094  _split_height(1.0) {
4095  _ss[0] = 0.9375;
4096  _ss[1] = 0.0;
4097  _ss[2] = -2.9440;
4098  _ss[3] = 5.7344;
4099  _ss[4] = -4.4564;
4100  }
4101  FishCorrectionParams(float x_center, float y_center, float scale_factor, float focal_length, float pol_focal_length, float split_height, float ss[])
4102  : _x_center(x_center),
4103  _y_center(y_center),
4104  _scale_factor(scale_factor),
4105  _focal_length(focal_length),
4106  _pol_focal_length(pol_focal_length),
4107  _split_height(split_height) {
4108  if (ss != OPTIONAL_NULLPTR) {
4109  for (int i = 0; i < 5; i++) {
4110  _ss[i] = ss[i];
4111  }
4112  }
4113  }
4114 };
4115 
4136 enum VOICE_BEAUTIFIER_PRESET {
4139  VOICE_BEAUTIFIER_OFF = 0x00000000,
4145  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4151  CHAT_BEAUTIFIER_FRESH = 0x01010200,
4157  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4171  SINGING_BEAUTIFIER = 0x01020100,
4174  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4177  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4180  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4183  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4186  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4189  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4192  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4195  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4196 
4197  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4198 };
4199 
4202 enum AUDIO_EFFECT_PRESET {
4205  AUDIO_EFFECT_OFF = 0x00000000,
4213  ROOM_ACOUSTICS_KTV = 0x02010100,
4221  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4229  ROOM_ACOUSTICS_STUDIO = 0x02010300,
4237  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
4244  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
4252  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
4260  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
4272  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
4283  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
4294  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
4305  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
4316  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
4327  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
4336  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
4344  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
4352  STYLE_TRANSFORMATION_RNB = 0x02030100,
4360  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
4370  PITCH_CORRECTION = 0x02040100
4371 
4375 };
4376 
4379 enum VOICE_CONVERSION_PRESET {
4382  VOICE_CONVERSION_OFF = 0x00000000,
4385  VOICE_CHANGER_NEUTRAL = 0x03010100,
4388  VOICE_CHANGER_SWEET = 0x03010200,
4391  VOICE_CHANGER_SOLID = 0x03010300,
4394  VOICE_CHANGER_BASS = 0x03010400
4395 };
4396 
4415  int bitrate;
4435 
4437  : dimensions(1920, 1080), frameRate(5), bitrate(STANDARD_BITRATE), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0) {}
4438  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
4439  : dimensions(d), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0) {}
4440  ScreenCaptureParameters(int width, int height, int f, int b)
4441  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0) {}
4442  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
4443  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0) {}
4444  ScreenCaptureParameters(int width, int height, int f, int b, view_t *ex, int cnt)
4445  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(ex), excludeWindowCount(cnt) {}
4446  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t *ex, int cnt)
4447  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(ex), excludeWindowCount(cnt) {}
4448 };
4449 
4453 enum AUDIO_RECORDING_QUALITY_TYPE {
4457  AUDIO_RECORDING_QUALITY_LOW = 0,
4461  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4465  AUDIO_RECORDING_QUALITY_HIGH = 2,
4466 };
4467 
4471 enum AUDIO_FILE_RECORDING_TYPE {
4475  AUDIO_FILE_RECORDING_MIC = 1,
4479  AUDIO_FILE_RECORDING_PLAYBACK = 2,
4483  AUDIO_FILE_RECORDING_MIXED = 3,
4484 };
4485 
4489 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4493  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4497  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4501  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4502 };
4503 
4512  const char* filePath;
4518  bool encode;
4527  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
4531  AUDIO_RECORDING_QUALITY_TYPE quality;
4532 
4534  : filePath(NULL),
4535  encode(false),
4536  sampleRate(32000),
4537  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4538  quality(AUDIO_RECORDING_QUALITY_LOW) {}
4539 
4540  AudioRecordingConfiguration(const char* file_path, int sample_rate, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4541  : filePath(file_path),
4542  encode(false),
4543  sampleRate(sample_rate),
4544  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4545  quality(quality_type) {}
4546 
4547  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type)
4548  : filePath(file_path),
4549  encode(enc),
4550  sampleRate(sample_rate),
4551  fileRecordingType(type),
4552  quality(quality_type) {}
4553 
4554  AudioRecordingConfiguration(const AudioRecordingConfiguration &rhs)
4555  : filePath(rhs.filePath),
4556  encode(rhs.encode),
4557  sampleRate(rhs.sampleRate),
4559  quality(rhs.quality) {}
4560 };
4561 
4570  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
4574  AUDIO_ENCODING_TYPE encodingType;
4575 
4577  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4578  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM){}
4579 
4580 };
4581 
4583 public:
4591 virtual void OnRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
4592 
4600 virtual void OnPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
4601 
4609 virtual void OnMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
4610 
4611 virtual ~IAudioEncodedFrameObserver () {}
4612 };
4613 
4616 enum AREA_CODE {
4620  AREA_CODE_CN = 0x00000001,
4624  AREA_CODE_NA = 0x00000002,
4628  AREA_CODE_EU = 0x00000004,
4632  AREA_CODE_AS = 0x00000008,
4636  AREA_CODE_JP = 0x00000010,
4640  AREA_CODE_IN = 0x00000020,
4644  AREA_CODE_GLOB = (0xFFFFFFFF)
4645 };
4646 
4647 enum AREA_CODE_EX {
4651  AREA_CODE_OC = 0x00000040,
4655  AREA_CODE_SA = 0x00000080,
4659  AREA_CODE_AF = 0x00000100,
4663  AREA_CODE_KR = 0x00000200,
4667  AREA_CODE_OVS = 0xFFFFFFFE
4668 };
4669 
4670 enum CHANNEL_MEDIA_RELAY_ERROR {
4673  RELAY_OK = 0,
4676  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
4681  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
4685  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
4688  RELAY_ERROR_FAILED_JOIN_SRC = 4,
4691  RELAY_ERROR_FAILED_JOIN_DEST = 5,
4694  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
4697  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
4702  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
4705  RELAY_ERROR_INTERNAL_ERROR = 9,
4708  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
4711  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
4712 };
4713 
4714 //callback event
4715 enum CHANNEL_MEDIA_RELAY_EVENT {
4719  RELAY_EVENT_NETWORK_DISCONNECTED = 0,
4722  RELAY_EVENT_NETWORK_CONNECTED = 1,
4725  RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
4728  RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
4731  RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
4734  RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
4737  RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4740  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4743  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4747  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4750  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4753  RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4756  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12,
4759  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13,
4762  RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14,
4765  RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15,
4766 };
4767 
4768 enum CHANNEL_MEDIA_RELAY_STATE {
4771  RELAY_STATE_IDLE = 0,
4774  RELAY_STATE_CONNECTING = 1,
4778  RELAY_STATE_RUNNING = 2,
4781  RELAY_STATE_FAILURE = 3,
4782 };
4783 
4790  const char* channelName;
4794  const char* token;
4797  uid_t uid;
4798 };
4799 
4828 
4830  : srcInfo(NULL),
4831  destInfos(NULL),
4832  destCount(0)
4833  {}
4834 };
4835 
4844 
4846 
4847  bool operator==(const UplinkNetworkInfo& rhs) const {
4849  }
4850 };
4851 
4860  const char* uid;
4864  VIDEO_STREAM_TYPE stream_type;
4868  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
4873 
4875  : uid(OPTIONAL_NULLPTR),
4876  stream_type(VIDEO_STREAM_HIGH),
4877  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
4878  expected_bitrate_bps(-1) {}
4879 
4880  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
4881  if (this == &rhs) return *this;
4882  uid = OPTIONAL_NULLPTR;
4883  stream_type = rhs.stream_type;
4886  if (rhs.uid != OPTIONAL_NULLPTR) {
4887  char* temp = new char[strlen(rhs.uid) + 1];
4888  strcpy(temp, rhs.uid);
4889  uid = temp;
4890  }
4891  return *this;
4892  }
4893 
4894  ~PeerDownlinkInfo() {
4895  if (uid) { delete [] uid; }
4896  }
4897  };
4898 
4919 
4924  peer_downlink_info(OPTIONAL_NULLPTR),
4926 
4931  peer_downlink_info(OPTIONAL_NULLPTR),
4933  if (total_received_video_count <= 0) return;
4934  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
4935  for (int i = 0; i < total_received_video_count; ++i)
4937  }
4938 
4939  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
4940  if (this == &rhs) return *this;
4941  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
4942  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
4943  total_downscale_level_count = rhs.total_downscale_level_count;
4944  peer_downlink_info = OPTIONAL_NULLPTR;
4945  total_received_video_count = rhs.total_received_video_count;
4946  if (total_received_video_count > 0) {
4947  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
4948  for (int i = 0; i < total_received_video_count; ++i)
4949  peer_downlink_info[i] = rhs.peer_downlink_info[i];
4950  }
4951  return *this;
4952  }
4953 
4954  ~DownlinkNetworkInfo() {
4955  if (peer_downlink_info) delete [] peer_downlink_info;
4956  }
4957 };
4958 
4961 enum ENCRYPTION_MODE {
4964  AES_128_XTS = 1,
4967  AES_128_ECB = 2,
4970  AES_256_XTS = 3,
4973  SM4_128_ECB = 4,
4976  AES_128_GCM = 5,
4979  AES_256_GCM = 6,
4982  AES_128_GCM2 = 7,
4985  AES_256_GCM2 = 8,
4988  MODE_END,
4989 };
4990 
4996  ENCRYPTION_MODE encryptionMode;
5002  const char* encryptionKey;
5003  uint8_t encryptionKdfSalt[32];
5004 
5006  : encryptionMode(AES_128_GCM2),
5007  encryptionKey(NULL)
5008  {
5009  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
5010  }
5011 
5013  const char* getEncryptionString() const {
5014  switch(encryptionMode) {
5015  case AES_128_XTS:
5016  return "aes-128-xts";
5017  case AES_128_ECB:
5018  return "aes-128-ecb";
5019  case AES_256_XTS:
5020  return "aes-256-xts";
5021  case SM4_128_ECB:
5022  return "sm4-128-ecb";
5023  case AES_128_GCM:
5024  return "aes-128-gcm";
5025  case AES_256_GCM:
5026  return "aes-256-gcm";
5027  case AES_128_GCM2:
5028  return "aes-128-gcm-2";
5029  case AES_256_GCM2:
5030  return "aes-256-gcm-2";
5031  default:
5032  return "aes-128-gcm-2";
5033  }
5034  return "aes-128-gcm-2";
5035  }
5037 };
5038 
5041 enum ENCRYPTION_ERROR_TYPE {
5042  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5043  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5044  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5045 };
5046 
5047 enum UPLOAD_ERROR_REASON
5048 {
5049  UPLOAD_SUCCESS = 0,
5050  UPLOAD_NET_ERROR = 1,
5051  UPLOAD_SERVER_ERROR = 2,
5052 };
5053 
5056 enum PERMISSION_TYPE {
5057  RECORD_AUDIO = 0,
5058  CAMERA = 1,
5059 };
5060 
5063 enum MAX_USER_ACCOUNT_LENGTH_TYPE
5064 {
5067  MAX_USER_ACCOUNT_LENGTH = 256
5068 };
5069 
5073 enum STREAM_SUBSCRIBE_STATE {
5074  SUB_STATE_IDLE = 0,
5075  SUB_STATE_NO_SUBSCRIBED = 1,
5076  SUB_STATE_SUBSCRIBING = 2,
5077  SUB_STATE_SUBSCRIBED = 3
5078 };
5079 
5083 enum STREAM_PUBLISH_STATE {
5084  PUB_STATE_IDLE = 0,
5085  PUB_STATE_NO_PUBLISHED = 1,
5086  PUB_STATE_PUBLISHING = 2,
5087  PUB_STATE_PUBLISHED = 3
5088 };
5089 
5093 struct UserInfo {
5097  uid_t uid;
5101  char userAccount[MAX_USER_ACCOUNT_LENGTH];
5102  UserInfo()
5103  : uid(0) {
5104  userAccount[0] = '\0';
5105  }
5106 };
5107 
5111 enum EAR_MONITORING_FILTER_TYPE {
5115  EAR_MONITORING_FILTER_NONE = (1<<0),
5119  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
5123  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
5124 };
5125 
5129 enum THREAD_PRIORITY_TYPE {
5133  LOWEST = 0,
5137  LOW = 1,
5141  NORMAL = 2,
5145  HIGH = 3,
5149  HIGHEST = 4,
5153  CRITICAL = 5,
5154 };
5155 
5156 } // namespace rtc
5157 
5158 namespace base {
5159 
5161  public:
5162  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
5163  virtual ~IEngineBase() {}
5164 };
5165 
5166 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
5167  public:
5168  AParameter(IEngineBase& engine) { initialize(&engine); }
5169  AParameter(IEngineBase* engine) { initialize(engine); }
5171 
5172  private:
5173  bool initialize(IEngineBase* engine) {
5174  IAgoraParameter* p = NULL;
5175  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
5176  return p != NULL;
5177  }
5178 };
5179 
5181  public:
5182  virtual ~LicenseCallback() {}
5183  virtual void onCertificateRequired() = 0;
5184  virtual void onLicenseRequest() = 0;
5185  virtual void onLicenseValidated() = 0;
5186  virtual void onLicenseError(int result) = 0;
5187 };
5188 
5189 } // namespace base
5190 
5219 };
5220 
5221 } // namespace agora
5222 
5228 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
5229 
5235 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
5236 
5237 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
5238 
5246 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString &credential);
5247 
5261 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char *credential_buf, int credential_len,
5262  const char *certificate_buf, int certificate_len);
5263 
5271 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback *callback);
5272 
5280 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:3524
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:3337
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:3632
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2225
agora::rtc::UserInfo
Definition: AgoraBase.h:5093
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:3636
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:1960
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:3756
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:4566
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:4400
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:2077
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:3024
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:4044
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:3764
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1822
agora::rtc::BeautyOptions
Definition: AgoraBase.h:3989
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:4415
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:4006
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2151
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:4039
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:3513
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:225
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:3043
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:3682
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:3421
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2167
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2211
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3224
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:2610
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:5202
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:1951
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:3455
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2245
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:2602
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:4426
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:4574
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1669
agora::rtc::RemoteAudioStats::totalActiveTime
int totalActiveTime
Definition: AgoraBase.h:2485
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:3505
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:4827
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:3741
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:4010
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:3960
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2135
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2044
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1440
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:3689
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:3516
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:3470
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2139
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:2606
agora::rtc::Rectangle
Definition: AgoraBase.h:2054
agora::rtc::TranscodingVideoStream::sourceType
agora::media::MEDIA_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3602
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:3964
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2230
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:4512
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1754
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:5206
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:4014
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2159
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:3606
agora::rtc::RemoteAudioStats::networkTransportDelay
int networkTransportDelay
Definition: AgoraBase.h:2430
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1875
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1839
agora::rtc::IAudioEncodedFrameObserver::OnPlaybackAudioEncodedFrame
virtual void OnPlaybackAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1653
agora::util::AutoPtr
Definition: AgoraBase.h:106
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:3737
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:1178
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:4434
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:3069
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:3581
agora::rtc::RemoteAudioStats::receivedBitrate
int receivedBitrate
Definition: AgoraBase.h:2451
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1867
agora::rtc::IVideoEncodedImageReceiver::OnEncodedVideoImageReceived
virtual bool OnEncodedVideoImageReceived(const uint8_t *imageBuffer, size_t length, const EncodedVideoFrameInfo &videoEncodedFrameInfo)=0
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2066
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:1934
agora::util::AList
Definition: AgoraBase.h:239
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2260
agora::rtc::TranscodingUser
Definition: AgoraBase.h:3409
agora::rtc::RtcImage
Definition: AgoraBase.h:3319
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:3417
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:4794
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:4518
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:4003
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2085
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:5214
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:2032
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:3568
agora::rtc::IAudioEncodedFrameObserver::OnMixedAudioEncodedFrame
virtual void OnMixedAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:4821
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:3328
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:4055
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:3345
agora::rtc::FishCorrectionParams
Definition: AgoraBase.h:4081
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2398
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3033
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:3413
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:3368
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2062
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3216
agora::rtc::RemoteAudioStats::totalFrozenTime
int totalFrozenTime
Definition: AgoraBase.h:2458
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:3323
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:3073
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2265
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:4523
agora::rtc::RemoteAudioStats::publishDuration
int publishDuration
Definition: AgoraBase.h:2489
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:1172
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2110
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:3768
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:3547
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2058
agora::util::IString
Definition: AgoraBase.h:178
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:5218
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1687
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:3659
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:3992
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2081
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3212
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:3706
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2199
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:3077
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:3561
agora::rtc::IPacketObserver
Definition: AgoraBase.h:3063
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:3553
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2195
agora::rtc::VideoFormat
Definition: AgoraBase.h:2589
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:3439
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2115
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:2020
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2147
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2220
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:3760
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:4790
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:3484
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1640
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1799
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2183
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2155
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1646
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2175
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3028
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:3994
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:3489
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:2966
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:2984
agora::rtc::RemoteAudioStats::mosValue
int mosValue
Definition: AgoraBase.h:2480
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:3425
agora::base::AParameter
Definition: AgoraBase.h:5166
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:4018
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:4996
agora::util::AOutputIterator
Definition: AgoraBase.h:208
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2106
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:4582
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1803
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:2961
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:3745
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1814
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:3529
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:2978
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:3533
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:3565
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:4802
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:4076
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:5097
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2026
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:3356
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:4065
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:3733
agora::rtc::EncodedVideoFrameInfo::renderTimeMs
int64_t renderTimeMs
Definition: AgoraBase.h:1831
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2089
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1713
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1879
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2070
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1717
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2119
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1673
agora::rtc::RemoteAudioStats::audioLossRate
int audioLossRate
Definition: AgoraBase.h:2438
agora::UserInfo
Definition: AgoraBase.h:1168
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2269
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:4026
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:3952
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:3610
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:4570
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:4037
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:3538
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:4786
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:1184
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:3956
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:5210
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:2988
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2163
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1683
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1843
agora::rtc::RemoteAudioStats::quality
int quality
Definition: AgoraBase.h:2426
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:2992
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:4410
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2255
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:3577
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:3341
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2036
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1818
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:3695
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2191
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:3663
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:3998
agora::base::LicenseCallback
Definition: AgoraBase.h:5180
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:4992
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:3510
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:4029
agora::rtc::IVideoEncodedImageReceiver
Definition: AgoraBase.h:3117
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:4405
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1436
agora::rtc::RemoteAudioStats
Definition: AgoraBase.h:2418
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:3614
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:3501
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:3598
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:4073
agora::rtc::RtcStats
Definition: AgoraBase.h:2131
agora::base::IParameterEngine
Definition: AgoraBase.h:95
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2101
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:3435
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:3477
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1692
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2143
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2179
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2171
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3208
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:2096
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:1965
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3204
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:4420
agora::rtc::LocalTranscoderConfiguration::VideoInputStreams
TranscodingVideoStream * VideoInputStreams
Definition: AgoraBase.h:3667
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:3333
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1630
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2207
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2203
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:3701
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:2957
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:2970
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2235
agora::rtc::VideoTrackInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:2974
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:4507
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:5198
agora::util::IContainer
Definition: AgoraBase.h:199
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:4050
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1432
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:4046
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:3626
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2023
agora::rtc::RemoteAudioStats::frozenRate
int frozenRate
Definition: AgoraBase.h:2463
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:3521
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:162
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:3622
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:3640
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:3351
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:5002
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1826
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:4048
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:4430
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1705
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:2946
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:3671
agora::rtc::SimulcastStreamConfig::bitrate
int bitrate
Definition: AgoraBase.h:2040
agora::rtc::RemoteAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:2442
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:4033
agora::rtc::RemoteAudioStats::jitterBufferDelay
int jitterBufferDelay
Definition: AgoraBase.h:2434
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1721
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2250
agora::rtc::IAudioEncodedFrameObserver::OnRecordAudioEncodedFrame
virtual void OnRecordAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:3494
agora::rtc::RemoteAudioStats::uid
uid_t uid
Definition: AgoraBase.h:2422
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2273
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2187
agora::SpatialAudioParams
Definition: AgoraBase.h:5194
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1871
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:3772
agora::rtc::RemoteAudioStats::qoeQuality
int qoeQuality
Definition: AgoraBase.h:2493
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:3618
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2240
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:3996
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:4814
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:1955
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:3374
agora::rtc::DeviceInfo
Definition: AgoraBase.h:3051
agora::base::IEngineBase
Definition: AgoraBase.h:5160
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:4531
agora::util::IIterator
Definition: AgoraBase.h:190
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:5101
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1679
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1807
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2215
agora::Optional< double >
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2394
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:3429
agora::rtc::RemoteAudioStats::receivedSampleRate
int receivedSampleRate
Definition: AgoraBase.h:2446
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:3948
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3220
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:4527
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:4797
agora::rtc::EncodedVideoFrameInfo::internalSendTs
uint64_t internalSendTs
Definition: AgoraBase.h:1835