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 #define AGORA_CPP_API __declspec(dllexport)
37 #else
38 #define AGORA_API extern "C" __declspec(dllimport)
39 #define AGORA_CPP_API __declspec(dllimport)
40 #endif // AGORARTC_EXPORT
41 
42 #define AGORA_CALL __cdecl
43 
44 #define __deprecated
45 
46 #define AGORA_CPP_INTERNAL_API extern
47 
48 #elif defined(__APPLE__)
49 
50 #include <TargetConditionals.h>
51 
52 #define AGORA_API extern "C" __attribute__((visibility("default")))
53 #define AGORA_CPP_API __attribute__((visibility("default")))
54 #define AGORA_CALL
55 
56 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
57 
58 #elif defined(__ANDROID__) || defined(__linux__)
59 
60 #define AGORA_API extern "C" __attribute__((visibility("default")))
61 #define AGORA_CPP_API __attribute__((visibility("default")))
62 #define AGORA_CALL
63 
64 #define __deprecated
65 
66 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
67 
68 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
69 
70 #define AGORA_API extern "C"
71 #define AGORA_CPP_API
72 #define AGORA_CALL
73 
74 #define __deprecated
75 
76 #endif // _WIN32
77 
78 #ifndef OPTIONAL_ENUM_SIZE_T
79 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
80 #define OPTIONAL_ENUM_SIZE_T enum : size_t
81 #else
82 #define OPTIONAL_ENUM_SIZE_T enum
83 #endif
84 #endif
85 
86 #ifndef OPTIONAL_NULLPTR
87 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
88 #define OPTIONAL_NULLPTR nullptr
89 #else
90 #define OPTIONAL_NULLPTR NULL
91 #endif
92 #endif
93 
94 #define INVALID_DISPLAY_ID (-2)
95 
96 namespace agora {
97 namespace util {
98 
99 template <class T>
100 class AutoPtr {
101  protected:
102  typedef T value_type;
103  typedef T* pointer_type;
104 
105  public:
106  explicit AutoPtr(pointer_type p = OPTIONAL_NULLPTR) : ptr_(p) {}
107 
108  ~AutoPtr() {
109  if (ptr_) {
110  ptr_->release();
111  ptr_ = OPTIONAL_NULLPTR;
112  }
113  }
114 
115  operator bool() const { return (ptr_ != OPTIONAL_NULLPTR); }
116 
117  value_type& operator*() const { return *get(); }
118 
119  pointer_type operator->() const { return get(); }
120 
121  pointer_type get() const { return ptr_; }
122 
123  pointer_type release() {
124  pointer_type ret = ptr_;
125  ptr_ = 0;
126  return ret;
127  }
128 
129  void reset(pointer_type ptr = OPTIONAL_NULLPTR) {
130  if (ptr != ptr_ && ptr_) {
131  ptr_->release();
132  }
133 
134  ptr_ = ptr;
135  }
136 
137  template <class C1, class C2>
138  bool queryInterface(C1* c, C2 iid) {
139  pointer_type p = OPTIONAL_NULLPTR;
140  if (c && !c->queryInterface(iid, reinterpret_cast<void**>(&p))) {
141  reset(p);
142  }
143 
144  return (p != OPTIONAL_NULLPTR);
145  }
146 
147  private:
148  AutoPtr(const AutoPtr&);
149  AutoPtr& operator=(const AutoPtr&);
150 
151  private:
152  pointer_type ptr_;
153 };
154 
155 template <class T>
156 class CopyableAutoPtr : public AutoPtr<T> {
157  typedef typename AutoPtr<T>::pointer_type pointer_type;
158 
159  public:
160  explicit CopyableAutoPtr(pointer_type p = 0) : AutoPtr<T>(p) {}
161  CopyableAutoPtr(const CopyableAutoPtr& rhs) { this->reset(rhs.clone()); }
162  CopyableAutoPtr& operator=(const CopyableAutoPtr& rhs) {
163  if (this != &rhs) this->reset(rhs.clone());
164  return *this;
165  }
166  pointer_type clone() const {
167  if (!this->get()) return OPTIONAL_NULLPTR;
168  return this->get()->clone();
169  }
170 };
171 
172 class IString {
173  public:
174  virtual bool empty() const = 0;
175  virtual const char* c_str() = 0;
176  virtual const char* data() = 0;
177  virtual size_t length() = 0;
178  virtual IString* clone() = 0;
179  virtual void release() = 0;
180  virtual ~IString() {}
181 };
183 
184 class IIterator {
185  public:
186  virtual void* current() = 0;
187  virtual const void* const_current() const = 0;
188  virtual bool next() = 0;
189  virtual void release() = 0;
190  virtual ~IIterator() {}
191 };
192 
193 class IContainer {
194  public:
195  virtual IIterator* begin() = 0;
196  virtual size_t size() const = 0;
197  virtual void release() = 0;
198  virtual ~IContainer() {}
199 };
200 
201 template <class T>
203  IIterator* p;
204 
205  public:
206  typedef T value_type;
207  typedef value_type& reference;
208  typedef const value_type& const_reference;
209  typedef value_type* pointer;
210  typedef const value_type* const_pointer;
211  explicit AOutputIterator(IIterator* it = OPTIONAL_NULLPTR) : p(it) {}
212  ~AOutputIterator() {
213  if (p) p->release();
214  }
215  AOutputIterator(const AOutputIterator& rhs) : p(rhs.p) {}
216  AOutputIterator& operator++() {
217  p->next();
218  return *this;
219  }
220  bool operator==(const AOutputIterator& rhs) const {
221  if (p && rhs.p)
222  return p->current() == rhs.p->current();
223  else
224  return valid() == rhs.valid();
225  }
226  bool operator!=(const AOutputIterator& rhs) const { return !this->operator==(rhs); }
227  reference operator*() { return *reinterpret_cast<pointer>(p->current()); }
228  const_reference operator*() const { return *reinterpret_cast<const_pointer>(p->const_current()); }
229  bool valid() const { return p && p->current() != OPTIONAL_NULLPTR; }
230 };
231 
232 template <class T>
233 class AList {
234  IContainer* container;
235  bool owner;
236 
237  public:
238  typedef T value_type;
239  typedef value_type& reference;
240  typedef const value_type& const_reference;
241  typedef value_type* pointer;
242  typedef const value_type* const_pointer;
243  typedef size_t size_type;
246 
247  public:
248  AList() : container(OPTIONAL_NULLPTR), owner(false) {}
249  AList(IContainer* c, bool take_ownership) : container(c), owner(take_ownership) {}
250  ~AList() { reset(); }
251  void reset(IContainer* c = OPTIONAL_NULLPTR, bool take_ownership = false) {
252  if (owner && container) container->release();
253  container = c;
254  owner = take_ownership;
255  }
256  iterator begin() { return container ? iterator(container->begin()) : iterator(OPTIONAL_NULLPTR); }
257  iterator end() { return iterator(OPTIONAL_NULLPTR); }
258  size_type size() const { return container ? container->size() : 0; }
259  bool empty() const { return size() == 0; }
260 };
261 
262 } // namespace util
263 
267 enum CHANNEL_PROFILE_TYPE {
271  CHANNEL_PROFILE_COMMUNICATION = 0,
275  CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
280  CHANNEL_PROFILE_GAME __deprecated = 2,
286  CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
287 
292  CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
293 };
294 
299 enum CHANNEL_TYPE {
303  CHANNEL_TYPE_STANDARD = 0,
307  CHANNEL_TYPE_LARGE_SCALE = 1,
308 };
309 
313 enum WARN_CODE_TYPE {
318  WARN_INVALID_VIEW = 8,
323  WARN_INIT_VIDEO = 16,
328  WARN_PENDING = 20,
333  WARN_NO_AVAILABLE_CHANNEL = 103,
339  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
344  WARN_LOOKUP_CHANNEL_REJECTED = 105,
350  WARN_OPEN_CHANNEL_TIMEOUT = 106,
355  WARN_OPEN_CHANNEL_REJECTED = 107,
356 
357  // sdk: 100~1000
361  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
365  WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
369  WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
373  WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
377  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
381  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
385  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
388  WARN_CHANNEL_SOCKET_ERROR = 134,
392  WARN_AUDIO_MIXING_OPEN_ERROR = 701,
396  WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
400  WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
404  WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
408  WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
412  WARN_ADM_RECORD_MALFUNCTION = 1021,
416  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
420  WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
424  WARN_ADM_RECORD_IS_OCCUPIED = 1033,
432  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
436  WARN_APM_HOWLING = 1051,
440  WARN_ADM_GLITCH_STATE = 1052,
444  WARN_ADM_IMPROPER_SETTINGS = 1053,
448  WARN_ADM_POP_STATE = 1055,
452  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
457  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
465  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
466 };
467 
477 enum ERROR_CODE_TYPE {
481  ERR_OK = 0,
482  // 1~1000
486  ERR_FAILED = 1,
491  ERR_INVALID_ARGUMENT = 2,
501  ERR_NOT_READY = 3,
507  ERR_NOT_SUPPORTED = 4,
516  ERR_REFUSED = 5,
520  ERR_BUFFER_TOO_SMALL = 6,
525  ERR_NOT_INITIALIZED = 7,
529  ERR_INVALID_STATE = 8,
534  ERR_NO_PERMISSION = 9,
539  ERR_TIMEDOUT = 10,
544  ERR_CANCELED = 11,
550  ERR_TOO_OFTEN = 12,
556  ERR_BIND_SOCKET = 13,
561  ERR_NET_DOWN = 14,
571  ERR_JOIN_CHANNEL_REJECTED = 17,
581  ERR_LEAVE_CHANNEL_REJECTED = 18,
585  ERR_ALREADY_IN_USE = 19,
590  ERR_ABORTED = 20,
595  ERR_INIT_NET_ENGINE = 21,
600  ERR_RESOURCE_LIMITED = 22,
605  ERR_FUNC_IS_PROHIBITED = 23,
609  ERR_INVALID_APP_ID = 101,
614  ERR_INVALID_CHANNEL_NAME = 102,
619  ERR_NO_SERVER_RESOURCES = 103,
623  ERR_TOKEN_EXPIRED = 109,
630  ERR_INVALID_TOKEN = 110,
635  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
640  ERR_CONNECTION_LOST = 112, // only used in web sdk
644  ERR_NOT_IN_CHANNEL = 113,
648  ERR_SIZE_TOO_LARGE = 114,
653  ERR_BITRATE_LIMIT = 115,
658  ERR_TOO_MANY_DATA_STREAMS = 116,
662  ERR_STREAM_MESSAGE_TIMEOUT = 117,
666  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
671  ERR_DECRYPTION_FAILED = 120,
675  ERR_INVALID_USER_ID = 121,
680  ERR_DATASTREAM_DECRYPTION_FAILED = 122,
684  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
688  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
689 
693  ERR_LICENSE_CREDENTIAL_INVALID = 131,
694 
698  ERR_INVALID_USER_ACCOUNT = 134,
699 
706  ERR_MODULE_NOT_FOUND = 157,
707 
708  // Licensing, keep the license error code same as the main version
709  ERR_CERT_RAW = 157,
710  ERR_CERT_JSON_PART = 158,
711  ERR_CERT_JSON_INVAL = 159,
712  ERR_CERT_JSON_NOMEM = 160,
713  ERR_CERT_CUSTOM = 161,
714  ERR_CERT_CREDENTIAL = 162,
715  ERR_CERT_SIGN = 163,
716  ERR_CERT_FAIL = 164,
717  ERR_CERT_BUF = 165,
718  ERR_CERT_NULL = 166,
719  ERR_CERT_DUEDATE = 167,
720  ERR_CERT_REQUEST = 168,
721 
722  // PcmSend Error num
726  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
730  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
731 
733  // RDT error code: 250~270
738  ERR_RDT_USER_NOT_EXIST = 250,
743  ERR_RDT_USER_NOT_READY = 251,
748  ERR_RDT_DATA_BLOCKED = 252,
753  ERR_RDT_CMD_EXCEED_LIMIT = 253,
758  ERR_RDT_DATA_EXCEED_LIMIT = 254,
763  ERR_RDT_ENCRYPTION = 255,
765 
767  // signaling: 400~600
768  ERR_LOGIN_ALREADY_LOGIN = 428,
769 
771  // 1001~2000
775  ERR_LOAD_MEDIA_ENGINE = 1001,
780  ERR_ADM_GENERAL_ERROR = 1005,
785  ERR_ADM_INIT_PLAYOUT = 1008,
789  ERR_ADM_START_PLAYOUT = 1009,
793  ERR_ADM_STOP_PLAYOUT = 1010,
798  ERR_ADM_INIT_RECORDING = 1011,
802  ERR_ADM_START_RECORDING = 1012,
806  ERR_ADM_STOP_RECORDING = 1013,
811  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
812 
813  // Video Effect (Beauty) errors: 1700~1799
818  ERR_VIDEOEFFECT_ASSET_INVALID = 1700,
823  ERR_VIDEOEFFECT_SAVE_FAILED = 1701,
828  ERR_VIDEOEFFECT_ENGINE_INVALID = 1702,
833  ERR_VIDEOEFFECT_NODE_NOT_ACTIVE = 1704,
838  ERR_VIDEOEFFECT_INVALID_PARAM = 1705,
842  ERR_VIDEOEFFECT_NOT_SUPPORTED = 1706,
847  ERR_VIDEOEFFECT_INVALID_BUNDLE_PATH = 1707,
851  ERR_ADM_APPLICATION_LOOPBACK = 2007,
855  ERR_ADM_APPLICATION_LOOPBACK_STOPPED = 2008,
860  ERR_ADM_SYSTEM_LOOPBACK = 2009,
864  ERR_ADM_SYSTEM_LOOPBACK_STOPPED = 2010,
868  ERR_ADM_LOOPBACK_NO_PERMISSION = 2011,
872  ERR_ADM_LOOPBACK_SILENT_DETECTED = 2012,
876  ERR_ADM_LOOPBACK_SILENT_RECOVERED = 2013,
877 };
878 
879 enum LICENSE_ERROR_TYPE {
883  LICENSE_ERR_INVALID = 1,
887  LICENSE_ERR_EXPIRE = 2,
891  LICENSE_ERR_MINUTES_EXCEED = 3,
895  LICENSE_ERR_LIMITED_PERIOD = 4,
899  LICENSE_ERR_DIFF_DEVICES = 5,
903  LICENSE_ERR_INTERNAL = 99,
904 };
905 
909 enum AUDIO_SESSION_OPERATION_RESTRICTION {
913  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
917  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
921  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
926  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
931  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
932 };
933 
934 typedef const char* user_id_t;
935 typedef void* view_t;
936 
940 struct UserInfo {
950  bool hasAudio;
956  bool hasVideo;
957 
958  UserInfo() : hasAudio(false), hasVideo(false) {}
959 };
960 
961 typedef util::AList<UserInfo> UserList;
962 
963 // Shared between Agora Service and Rtc Engine
964 namespace rtc {
965 
969 enum USER_OFFLINE_REASON_TYPE {
973  USER_OFFLINE_QUIT = 0,
980  USER_OFFLINE_DROPPED = 1,
984  USER_OFFLINE_BECOME_AUDIENCE = 2,
985 };
986 
990 enum INTERFACE_ID_TYPE {
994  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
998  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
1002  AGORA_IID_PARAMETER_ENGINE = 3,
1006  AGORA_IID_MEDIA_ENGINE = 4,
1007  AGORA_IID_AUDIO_ENGINE = 5,
1008  AGORA_IID_VIDEO_ENGINE = 6,
1009  AGORA_IID_RTC_CONNECTION = 7,
1013  AGORA_IID_SIGNALING_ENGINE = 8,
1014  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
1015  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
1016  AGORA_IID_STATE_SYNC = 13,
1017  AGORA_IID_META_SERVICE = 14,
1018  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
1019  AGORA_IID_H265_TRANSCODER = 16,
1020 };
1021 
1025 enum QUALITY_TYPE {
1030  QUALITY_UNKNOWN __deprecated = 0,
1034  QUALITY_EXCELLENT = 1,
1038  QUALITY_GOOD = 2,
1042  QUALITY_POOR = 3,
1046  QUALITY_BAD = 4,
1050  QUALITY_VBAD = 5,
1054  QUALITY_DOWN = 6,
1058  QUALITY_UNSUPPORTED = 7,
1062  QUALITY_DETECTING = 8,
1063 };
1064 
1068 enum FIT_MODE_TYPE {
1073  MODE_COVER = 1,
1074 
1080  MODE_CONTAIN = 2,
1081 };
1082 
1086 enum VIDEO_ORIENTATION {
1090  VIDEO_ORIENTATION_0 = 0,
1094  VIDEO_ORIENTATION_90 = 90,
1098  VIDEO_ORIENTATION_180 = 180,
1102  VIDEO_ORIENTATION_270 = 270
1103 };
1104 
1108 enum FRAME_RATE {
1112  FRAME_RATE_FPS_1 = 1,
1116  FRAME_RATE_FPS_7 = 7,
1120  FRAME_RATE_FPS_10 = 10,
1124  FRAME_RATE_FPS_15 = 15,
1128  FRAME_RATE_FPS_24 = 24,
1132  FRAME_RATE_FPS_30 = 30,
1137  FRAME_RATE_FPS_60 = 60,
1138 };
1139 
1140 enum FRAME_WIDTH {
1141  FRAME_WIDTH_960 = 960,
1142 };
1143 
1144 enum FRAME_HEIGHT {
1145  FRAME_HEIGHT_540 = 540,
1146 };
1147 
1151 enum VIDEO_FRAME_TYPE {
1155  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1159  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1163  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1167  VIDEO_FRAME_TYPE_B_FRAME = 5,
1171  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1175  VIDEO_FRAME_TYPE_UNKNOW
1176 };
1177 
1181 enum ORIENTATION_MODE {
1189  ORIENTATION_MODE_ADAPTIVE = 0,
1196  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1202  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1203 };
1204 
1208 enum DEGRADATION_PREFERENCE {
1214  MAINTAIN_AUTO = -1,
1221  MAINTAIN_QUALITY = 0,
1227  MAINTAIN_FRAMERATE = 1,
1236  MAINTAIN_BALANCED = 2,
1242  MAINTAIN_RESOLUTION = 3,
1246  DISABLED = 100,
1247 };
1248 
1256  int width;
1260  int height;
1261  VideoDimensions() : width(640), height(480) {}
1262  VideoDimensions(int w, int h) : width(w), height(h) {}
1263  bool operator==(const VideoDimensions& rhs) const {
1264  return width == rhs.width && height == rhs.height;
1265  }
1266 };
1267 
1273 const int STANDARD_BITRATE = 0;
1274 
1282 const int COMPATIBLE_BITRATE = -1;
1283 
1287 const int DEFAULT_MIN_BITRATE = -1;
1288 
1292 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1293 
1297 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1301  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1305  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1309  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1310 };
1311 
1315 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1320  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1324  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1328  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1332  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1336  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1337 };
1338 
1342 enum VIDEO_CODEC_TYPE {
1347  VIDEO_CODEC_NONE = 0,
1351  VIDEO_CODEC_VP8 = 1,
1355  VIDEO_CODEC_H264 = 2,
1359  VIDEO_CODEC_H265 = 3,
1365  VIDEO_CODEC_GENERIC = 6,
1370  VIDEO_CODEC_GENERIC_H264 = 7,
1375  VIDEO_CODEC_AV1 = 12,
1379  VIDEO_CODEC_VP9 = 13,
1383  VIDEO_CODEC_GENERIC_JPEG = 20,
1384 };
1385 
1392 enum CAMERA_FOCAL_LENGTH_TYPE {
1396  CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1400  CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1404  CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1408  CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1409 };
1410 
1414 enum TCcMode {
1418  CC_ENABLED,
1422  CC_DISABLED,
1423 };
1424 
1432  TCcMode ccMode;
1437  VIDEO_CODEC_TYPE codecType;
1438 
1499 
1500  SenderOptions() : ccMode(CC_ENABLED), codecType(VIDEO_CODEC_H265), targetBitrate(6500) {}
1501 };
1502 
1506 enum AUDIO_CODEC_TYPE {
1510  AUDIO_CODEC_OPUS = 1,
1511  // kIsac = 2,
1515  AUDIO_CODEC_PCMA = 3,
1519  AUDIO_CODEC_PCMU = 4,
1523  AUDIO_CODEC_G722 = 5,
1524  // kIlbc = 6,
1526  // AUDIO_CODEC_AAC = 7,
1530  AUDIO_CODEC_AACLC = 8,
1534  AUDIO_CODEC_HEAAC = 9,
1538  AUDIO_CODEC_JC1 = 10,
1542  AUDIO_CODEC_HEAAC2 = 11,
1546  AUDIO_CODEC_LPCNET = 12,
1550  AUDIO_CODEC_OPUSMC = 13,
1551 };
1552 
1556 enum AUDIO_ENCODING_TYPE {
1561  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1566  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1571  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1576  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1581  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1586  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1591  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1596  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1601  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1606  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1611  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1612 };
1613 
1617 enum WATERMARK_FIT_MODE {
1622  FIT_MODE_COVER_POSITION = 0,
1627  FIT_MODE_USE_IMAGE_RATIO = 1,
1628 };
1629 
1635 
1641  bool speech;
1648 };
1649 
1655  : codec(AUDIO_CODEC_AACLC),
1656  sampleRateHz(0),
1657  samplesPerChannel(0),
1658  numberOfChannels(0),
1659  captureTimeMs(0) {}
1660 
1662  : codec(rhs.codec),
1671  AUDIO_CODEC_TYPE codec;
1688 
1692  int64_t captureTimeMs;
1693 };
1699  : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1700 
1703  channelNum(rhs.channelNum),
1704  samplesOut(rhs.samplesOut),
1706  ntpTimeMs(rhs.ntpTimeMs) {}
1707 
1712 
1713  int16_t channelNum;
1714 
1715  // Output
1719  size_t samplesOut;
1723  int64_t elapsedTimeMs;
1727  int64_t ntpTimeMs;
1728 };
1732 enum H264PacketizeMode {
1736  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1740  SingleNalUnit, // Mode 0 - only single NALU allowed
1741 };
1742 
1746 enum VIDEO_STREAM_TYPE {
1750  VIDEO_STREAM_HIGH = 0,
1754  VIDEO_STREAM_LOW = 1,
1759  VIDEO_STREAM_LAYER_1 = 4,
1764  VIDEO_STREAM_LAYER_2 = 5,
1769  VIDEO_STREAM_LAYER_3 = 6,
1774  VIDEO_STREAM_LAYER_4 = 7,
1779  VIDEO_STREAM_LAYER_5 = 8,
1784  VIDEO_STREAM_LAYER_6 = 9,
1785 
1786 };
1787 
1804 
1806 };
1807 
1811 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1815  MAX_USER_ACCOUNT_LENGTH = 256
1816 };
1817 
1823  : codecType(VIDEO_CODEC_H264),
1824  width(0),
1825  height(0),
1826  framesPerSecond(0),
1827  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1828  rotation(VIDEO_ORIENTATION_0),
1829  trackId(0),
1830  captureTimeMs(0),
1831  decodeTimeMs(0),
1832  streamType(VIDEO_STREAM_HIGH),
1833  presentationMs(-1) {}
1834 
1836  : codecType(rhs.codecType),
1837  width(rhs.width),
1838  height(rhs.height),
1840  frameType(rhs.frameType),
1841  rotation(rhs.rotation),
1842  trackId(rhs.trackId),
1845  streamType(rhs.streamType),
1846  presentationMs(rhs.presentationMs) {}
1847 
1848  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1849  if (this == &rhs) return *this;
1850  codecType = rhs.codecType;
1851  width = rhs.width;
1852  height = rhs.height;
1854  frameType = rhs.frameType;
1855  rotation = rhs.rotation;
1856  trackId = rhs.trackId;
1858  decodeTimeMs = rhs.decodeTimeMs;
1859  streamType = rhs.streamType;
1860  presentationMs = rhs.presentationMs;
1861  return *this;
1862  }
1863 
1868  VIDEO_CODEC_TYPE codecType;
1872  int width;
1876  int height;
1886  VIDEO_FRAME_TYPE frameType;
1890  VIDEO_ORIENTATION rotation;
1894  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1895  // and additional payload for later implementation.
1899  int64_t captureTimeMs;
1903  int64_t decodeTimeMs;
1907  VIDEO_STREAM_TYPE streamType;
1908 
1909  // @technical preview
1910  int64_t presentationMs;
1911 };
1912 
1916 enum COMPRESSION_PREFERENCE {
1921  PREFER_COMPRESSION_AUTO = -1,
1926  PREFER_LOW_LATENCY = 0,
1931  PREFER_QUALITY = 1,
1932 };
1933 
1937 enum ENCODING_PREFERENCE {
1942  PREFER_AUTO = -1,
1946  PREFER_SOFTWARE = 0,
1953  PREFER_HARDWARE = 1,
1954 };
1955 
1963  ENCODING_PREFERENCE encodingPreference;
1964 
1968  COMPRESSION_PREFERENCE compressionPreference;
1969 
1976 
1977  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1978  compressionPreference(PREFER_COMPRESSION_AUTO),
1979  encodeAlpha(false) {}
1980 
1981  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1982  COMPRESSION_PREFERENCE compression_preference,
1983  bool encode_alpha) :
1984  encodingPreference(encoding_preference),
1985  compressionPreference(compression_preference),
1986  encodeAlpha(encode_alpha) {}
1987 
1988  bool operator==(const AdvanceOptions& rhs) const {
1989  return encodingPreference == rhs.encodingPreference &&
1990  compressionPreference == rhs.compressionPreference &&
1991  encodeAlpha == rhs.encodeAlpha;
1992  }
1993 };
1994 
1998 enum VIDEO_MIRROR_MODE_TYPE {
2005  VIDEO_MIRROR_MODE_AUTO = 0,
2009  VIDEO_MIRROR_MODE_ENABLED = 1,
2013  VIDEO_MIRROR_MODE_DISABLED = 2,
2014 };
2015 
2016 #if defined(__APPLE__) && TARGET_OS_IOS
2017 
2020 enum CAMERA_FORMAT_TYPE {
2022  CAMERA_FORMAT_NV12,
2024  CAMERA_FORMAT_BGRA,
2025 };
2026 #endif
2027 
2028 enum VIDEO_MODULE_TYPE {
2030  VIDEO_MODULE_CAPTURER = 0,
2032  VIDEO_MODULE_SOFTWARE_ENCODER = 1,
2034  VIDEO_MODULE_HARDWARE_ENCODER = 2,
2036  VIDEO_MODULE_SOFTWARE_DECODER = 3,
2038  VIDEO_MODULE_HARDWARE_DECODER = 4,
2040  VIDEO_MODULE_RENDERER = 5,
2041 };
2042 
2043 enum HDR_CAPABILITY {
2045  HDR_CAPABILITY_UNKNOWN = -1,
2047  HDR_CAPABILITY_UNSUPPORTED = 0,
2049  HDR_CAPABILITY_SUPPORTED = 1,
2050 };
2051 
2055 enum CODEC_CAP_MASK {
2059  CODEC_CAP_MASK_NONE = 0,
2060 
2064  CODEC_CAP_MASK_HW_DEC = 1 << 0,
2065 
2069  CODEC_CAP_MASK_HW_ENC = 1 << 1,
2070 
2074  CODEC_CAP_MASK_SW_DEC = 1 << 2,
2075 
2079  CODEC_CAP_MASK_SW_ENC = 1 << 3,
2080 };
2081 
2090  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
2095  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
2096 
2097  CodecCapLevels()
2098  : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
2099  swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
2100 };
2101 
2109  VIDEO_CODEC_TYPE codecType;
2118 
2119  CodecCapInfo() : codecType(VIDEO_CODEC_NONE), codecCapMask(0) {}
2120 };
2121 
2137  CAMERA_FOCAL_LENGTH_TYPE focalLengthType;
2138 };
2139 
2147  VIDEO_CODEC_TYPE codecType;
2167  int bitrate;
2168 
2181  ORIENTATION_MODE orientationMode;
2188  DEGRADATION_PREFERENCE degradationPreference;
2189 
2195  VIDEO_MIRROR_MODE_TYPE mirrorMode;
2196 
2201 
2202  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2203  : codecType(VIDEO_CODEC_NONE),
2204  dimensions(d),
2205  frameRate(f),
2206  bitrate(b),
2207  minBitrate(DEFAULT_MIN_BITRATE),
2208  orientationMode(m),
2209  degradationPreference(MAINTAIN_AUTO),
2210  mirrorMode(mirror),
2211  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2212  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2213  : codecType(VIDEO_CODEC_NONE),
2214  dimensions(width, height),
2215  frameRate(f),
2216  bitrate(b),
2217  minBitrate(DEFAULT_MIN_BITRATE),
2218  orientationMode(m),
2219  degradationPreference(MAINTAIN_AUTO),
2220  mirrorMode(mirror),
2221  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2222  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
2223  : codecType(config.codecType),
2224  dimensions(config.dimensions),
2225  frameRate(config.frameRate),
2226  bitrate(config.bitrate),
2227  minBitrate(config.minBitrate),
2230  mirrorMode(config.mirrorMode),
2231  advanceOptions(config.advanceOptions) {}
2232  VideoEncoderConfiguration()
2233  : codecType(VIDEO_CODEC_NONE),
2234  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2235  frameRate(FRAME_RATE_FPS_15),
2236  bitrate(STANDARD_BITRATE),
2237  minBitrate(DEFAULT_MIN_BITRATE),
2238  orientationMode(ORIENTATION_MODE_ADAPTIVE),
2239  degradationPreference(MAINTAIN_AUTO),
2240  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
2241  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2242 
2243  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
2244  if (this == &rhs) return *this;
2245  codecType = rhs.codecType;
2246  dimensions = rhs.dimensions;
2247  frameRate = rhs.frameRate;
2248  bitrate = rhs.bitrate;
2249  minBitrate = rhs.minBitrate;
2250  orientationMode = rhs.orientationMode;
2251  degradationPreference = rhs.degradationPreference;
2252  mirrorMode = rhs.mirrorMode;
2253  advanceOptions = rhs.advanceOptions;
2254  return *this;
2255  }
2256 };
2257 
2290  bool ordered;
2291 };
2292 
2296 enum SIMULCAST_STREAM_MODE {
2302  AUTO_SIMULCAST_STREAM = -1,
2306  DISABLE_SIMULCAST_STREAM = 0,
2310  ENABLE_SIMULCAST_STREAM = 1,
2311 };
2312 
2332  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
2334  bool operator==(const SimulcastStreamConfig& rhs) const {
2335  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
2336  }
2337 };
2338 
2382  };
2405  bool enable;
2406  StreamLayerConfig() : dimensions(0, 0), framerate(0), enable(false) {}
2407  };
2408 
2422 
2424 };
2429 struct Rectangle {
2433  int x;
2437  int y;
2441  int width;
2445  int height;
2446 
2447  Rectangle() : x(0), y(0), width(0), height(0) {}
2448  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2449 };
2450 
2469  float xRatio;
2475  float yRatio;
2482  float widthRatio;
2483 
2484  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2485  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2486 };
2487 
2520  WATERMARK_FIT_MODE mode;
2524  int zOrder;
2525 
2527  : visibleInPreview(true),
2528  positionInLandscapeMode(0, 0, 0, 0),
2529  positionInPortraitMode(0, 0, 0, 0),
2530  mode(FIT_MODE_COVER_POSITION),
2531  zOrder(0) {}
2532 };
2533 
2539 enum WATERMARK_SOURCE_TYPE {
2543  IMAGE = 0,
2547  BUFFER = 1,
2553  LITERAL = 2,
2559  TIMESTAMPS = 3,
2560 };
2561 
2579  const char* fontFilePath;
2591  const char* format;
2592 
2593  WatermarkTimestamp() : fontSize(10), fontFilePath(NULL), strokeWidth(1), format(NULL) {}
2594 };
2595 
2603 
2617  const char* wmLiteral;
2624  const char* fontFilePath;
2625 
2626  WatermarkLiteral() : wmLiteral(NULL), fontFilePath(NULL), fontSize(10), strokeWidth(1) {}
2627 };
2628 
2640 
2644  int width;
2648  int height;
2652  int length;
2658  media::base::VIDEO_PIXEL_FORMAT format;
2659 
2663  const uint8_t* buffer;
2664 
2665  WatermarkBuffer() : buffer(NULL), width(0), height(0), length(0), format(media::base::VIDEO_PIXEL_I420) {}
2666 };
2667 
2677  const char* id;
2681  WATERMARK_SOURCE_TYPE type;
2682  union {
2702  const char* imageUrl;
2703  };
2704 
2709 
2710  WatermarkConfig() : id(NULL), type(IMAGE), imageUrl(NULL) {}
2711 };
2712 
2718 enum MultipathMode {
2722  Duplicate= 0,
2727  Dynamic
2728 };
2729 
2735 enum MultipathType {
2739  LAN = 0,
2743  WIFI,
2747  Mobile,
2751  Unknown = 99
2752 };
2753 
2759 struct PathStats {
2763  MultipathType type;
2772  PathStats() : type(Unknown), txKBitRate(0), rxKBitRate(0) {}
2773  PathStats(MultipathType t, int tx, int rx) : type(t), txKBitRate(tx), rxKBitRate(rx) {}
2774 };
2775 
2785  uint32_t lanTxBytes;
2789  uint32_t lanRxBytes;
2793  uint32_t wifiTxBytes;
2797  uint32_t wifiRxBytes;
2801  uint32_t mobileTxBytes;
2805  uint32_t mobileRxBytes;
2814  MultipathStats()
2815  : lanTxBytes(0),
2816  lanRxBytes(0),
2817  wifiTxBytes(0),
2818  wifiRxBytes(0),
2819  mobileTxBytes(0),
2820  mobileRxBytes(0),
2821  activePathNum(0),
2822  pathStats(nullptr) {}
2823 };
2824 
2828 struct RtcStats {
2832  unsigned int duration;
2836  unsigned int txBytes;
2840  unsigned int rxBytes;
2844  unsigned int txAudioBytes;
2848  unsigned int txVideoBytes;
2852  unsigned int rxAudioBytes;
2856  unsigned int rxVideoBytes;
2860  unsigned short txKBitRate;
2864  unsigned short rxKBitRate;
2868  unsigned short rxAudioKBitRate;
2872  unsigned short txAudioKBitRate;
2876  unsigned short rxVideoKBitRate;
2880  unsigned short txVideoKBitRate;
2884  unsigned short lastmileDelay;
2888  unsigned int userCount;
2895  double cpuAppUsage;
2996 
2997  RtcStats()
2998  : duration(0),
2999  txBytes(0),
3000  rxBytes(0),
3001  txAudioBytes(0),
3002  txVideoBytes(0),
3003  rxAudioBytes(0),
3004  rxVideoBytes(0),
3005  txKBitRate(0),
3006  rxKBitRate(0),
3007  rxAudioKBitRate(0),
3008  txAudioKBitRate(0),
3009  rxVideoKBitRate(0),
3010  txVideoKBitRate(0),
3011  lastmileDelay(0),
3012  userCount(0),
3013  cpuAppUsage(0.0),
3014  cpuTotalUsage(0.0),
3015  gatewayRtt(0),
3016  memoryAppUsageRatio(0.0),
3017  memoryTotalUsageRatio(0.0),
3019  connectTimeMs(0),
3029  txPacketLossRate(0),
3030  rxPacketLossRate(0),
3031  lanAccelerateState(0) {}
3032 };
3033 
3037 enum CLIENT_ROLE_TYPE {
3041  CLIENT_ROLE_BROADCASTER = 1,
3045  CLIENT_ROLE_AUDIENCE = 2,
3046 };
3047 
3052 enum QUALITY_ADAPT_INDICATION {
3056  ADAPT_NONE = 0,
3060  ADAPT_UP_BANDWIDTH = 1,
3064  ADAPT_DOWN_BANDWIDTH = 2,
3065 };
3066 
3071 enum AUDIENCE_LATENCY_LEVEL_TYPE {
3075  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
3079  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
3080 };
3081 
3090  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
3091 
3092  ClientRoleOptions() : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
3093 };
3094 
3098 enum EXPERIENCE_QUALITY_TYPE {
3102  EXPERIENCE_QUALITY_GOOD = 0,
3106  EXPERIENCE_QUALITY_BAD = 1,
3107 };
3108 
3112 enum EXPERIENCE_POOR_REASON {
3116  EXPERIENCE_REASON_NONE = 0,
3120  REMOTE_NETWORK_QUALITY_POOR = 1,
3124  LOCAL_NETWORK_QUALITY_POOR = 2,
3128  WIRELESS_SIGNAL_POOR = 4,
3133  WIFI_BLUETOOTH_COEXIST = 8,
3134 };
3135 
3139 enum AUDIO_AINS_MODE {
3144  AINS_MODE_BALANCED = 0,
3150  AINS_MODE_AGGRESSIVE = 1,
3156  AINS_MODE_ULTRALOWLATENCY = 2
3157 };
3158 
3162 enum AUDIO_PROFILE_TYPE {
3172  AUDIO_PROFILE_DEFAULT = 0,
3176  AUDIO_PROFILE_SPEECH_STANDARD = 1,
3180  AUDIO_PROFILE_MUSIC_STANDARD = 2,
3186  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3190  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3196  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3200  AUDIO_PROFILE_IOT = 6,
3204  AUDIO_PROFILE_NUM = 7
3205 };
3206 
3210 enum AUDIO_SCENARIO_TYPE {
3215  AUDIO_SCENARIO_DEFAULT = 0,
3219  AUDIO_SCENARIO_GAME_STREAMING = 3,
3224  AUDIO_SCENARIO_CHATROOM = 5,
3229  AUDIO_SCENARIO_CHORUS = 7,
3233  AUDIO_SCENARIO_MEETING = 8,
3238  AUDIO_SCENARIO_AI_SERVER = 9,
3243  AUDIO_SCENARIO_AI_CLIENT = 10,
3247  AUDIO_SCENARIO_NUM = 11,
3248 };
3249 
3253 struct VideoFormat {
3254  OPTIONAL_ENUM_SIZE_T{
3256  kMaxWidthInPixels = 3840,
3258  kMaxHeightInPixels = 2160,
3260  kMaxFps = 60,
3261  };
3262 
3266  int width; // Number of pixels.
3270  int height; // Number of pixels.
3274  int fps;
3275  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
3276  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
3277 
3278  bool operator<(const VideoFormat& fmt) const {
3279  if (height != fmt.height) {
3280  return height < fmt.height;
3281  } else if (width != fmt.width) {
3282  return width < fmt.width;
3283  } else {
3284  return fps < fmt.fps;
3285  }
3286  }
3287  bool operator==(const VideoFormat& fmt) const {
3288  return width == fmt.width && height == fmt.height && fps == fmt.fps;
3289  }
3290  bool operator!=(const VideoFormat& fmt) const { return !operator==(fmt); }
3291 };
3292 
3296 enum VIDEO_CONTENT_HINT {
3300  CONTENT_HINT_NONE,
3305  CONTENT_HINT_MOTION,
3310  CONTENT_HINT_DETAILS
3311 };
3315 enum SCREEN_SCENARIO_TYPE {
3321  SCREEN_SCENARIO_DOCUMENT = 1,
3326  SCREEN_SCENARIO_GAMING = 2,
3331  SCREEN_SCENARIO_VIDEO = 3,
3337  SCREEN_SCENARIO_RDC = 4,
3338 };
3339 
3343 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3347  APPLICATION_SCENARIO_GENERAL = 0,
3383  APPLICATION_SCENARIO_MEETING = 1,
3392  APPLICATION_SCENARIO_1V1 = 2,
3403  APPLICATION_SCENARIO_LIVESHOW = 3,
3404 };
3405 
3409 enum VIDEO_QOE_PREFERENCE_TYPE {
3413  VIDEO_QOE_PREFERENCE_BALANCE = 1,
3417  VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3421  VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3425  VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3426 
3427 };
3428 
3432 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3437  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3441  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3445  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3449  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3450 };
3451 
3460 enum CAMERA_STABILIZATION_MODE {
3464  CAMERA_STABILIZATION_MODE_OFF = -1,
3470  CAMERA_STABILIZATION_MODE_AUTO = 0,
3474  CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3478  CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3482  CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3485  CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3486 };
3487 
3491 enum LOCAL_AUDIO_STREAM_STATE {
3495  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3499  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3503  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3507  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3508 };
3509 
3513 enum LOCAL_AUDIO_STREAM_REASON {
3517  LOCAL_AUDIO_STREAM_REASON_OK = 0,
3522  LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3526  LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3533  LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3537  LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3541  LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3547  LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3553  LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3559  LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3564  LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3569  LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3570 };
3571 
3575 enum LOCAL_VIDEO_STREAM_STATE {
3579  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3584  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3588  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3592  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3593 };
3594 
3599 enum LOCAL_VIDEO_EVENT_TYPE {
3603  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_HIDDEN = 1,
3607  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 2,
3611  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_STOPPED_BY_USER = 3,
3615  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_SYSTEM_INTERNAL_ERROR = 4,
3619  LOCAL_VIDEO_EVENT_TYPE_CAMERA_FOCAL_LENGTH_APPLIED = 5,
3624  LOCAL_VIDEO_EVENT_TYPE_CAMERA_FOCAL_LENGTH_FALLBACK_TO_DEFAULT = 6,
3625 };
3626 
3630 enum LOCAL_VIDEO_STREAM_REASON {
3634  LOCAL_VIDEO_STREAM_REASON_OK = 0,
3638  LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3643  LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3648  LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3653  LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3657  LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3662  LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3669  LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3675  LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3680  LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3685  LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3694  LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3700  LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3704  LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3710  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3724  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3729  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3731  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3735  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3739  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3749  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3754  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3758  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3763  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3769  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3773  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3778  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3779  /* 30: (HMOS only) ScreenCapture stopped by user */
3780  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3781  /* 31: (HMOS only) ScreenCapture interrupted by other screen capture */
3782  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3783  /* 32: (HMOS only) ScreenCapture stopped by SIM call */
3784  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3786  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_EXCLUDE_WINDOW_FAILED = 34,
3787 };
3788 
3792 enum REMOTE_AUDIO_STATE {
3798  REMOTE_AUDIO_STATE_STOPPED =
3799  0, // Default state, audio is started or remote user disabled/muted audio stream
3803  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
3809  REMOTE_AUDIO_STATE_DECODING =
3810  2, // The first remote audio frame has been decoded or fronzen state ends
3815  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
3820  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
3821 };
3822 
3826 enum REMOTE_AUDIO_STATE_REASON {
3830  REMOTE_AUDIO_REASON_INTERNAL = 0,
3834  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3838  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3842  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3846  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3850  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3854  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3858  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3862  REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3866  REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3867 };
3868 
3872 enum REMOTE_VIDEO_STATE {
3878  REMOTE_VIDEO_STATE_STOPPED = 0,
3882  REMOTE_VIDEO_STATE_STARTING = 1,
3889  REMOTE_VIDEO_STATE_DECODING = 2,
3894  REMOTE_VIDEO_STATE_FROZEN = 3,
3899  REMOTE_VIDEO_STATE_FAILED = 4,
3900 };
3904 enum REMOTE_VIDEO_STATE_REASON {
3908  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3912  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3916  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3920  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3924  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3928  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3932  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3936  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3941  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3946  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3949  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3952  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3956  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3957 
3961  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3962 
3963 };
3964 
3968 enum REMOTE_USER_STATE {
3972  USER_STATE_MUTE_AUDIO = (1 << 0),
3976  USER_STATE_MUTE_VIDEO = (1 << 1),
3980  USER_STATE_ENABLE_VIDEO = (1 << 4),
3984  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3985 };
3986 
3992  VideoTrackInfo()
3993  : isLocal(false),
3994  ownerUid(0),
3995  trackId(0),
3996  channelId(OPTIONAL_NULLPTR),
3997  codecType(VIDEO_CODEC_H265),
3998  encodedFrameOnly(false),
3999  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4000  observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
4006  bool isLocal;
4010  uid_t ownerUid;
4014  track_id_t trackId;
4018  const char* channelId;
4022  VIDEO_CODEC_TYPE codecType;
4032  VIDEO_SOURCE_TYPE sourceType;
4037 };
4038 
4043 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
4047  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
4051  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
4055  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
4059  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
4063  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
4064 };
4065 
4076  uid_t uid;
4085  unsigned int volume; // [0,255]
4096  unsigned int vad;
4102  double voicePitch;
4103 
4104  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
4105 };
4106 
4113 struct DeviceInfo {
4120 
4122 };
4123 
4128  public:
4129  virtual ~IPacketObserver() {}
4133  struct Packet {
4139  const unsigned char* buffer;
4143  unsigned int size;
4144 
4145  Packet() : buffer(OPTIONAL_NULLPTR), size(0) {}
4146  };
4156  virtual bool onSendAudioPacket(Packet& packet) = 0;
4166  virtual bool onSendVideoPacket(Packet& packet) = 0;
4176  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
4186  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
4187 };
4188 
4192 enum AUDIO_SAMPLE_RATE_TYPE {
4196  AUDIO_SAMPLE_RATE_32000 = 32000,
4200  AUDIO_SAMPLE_RATE_44100 = 44100,
4204  AUDIO_SAMPLE_RATE_48000 = 48000,
4205 };
4209 enum VIDEO_CODEC_TYPE_FOR_STREAM {
4213  VIDEO_CODEC_H264_FOR_STREAM = 1,
4217  VIDEO_CODEC_H265_FOR_STREAM = 2,
4218 };
4219 
4223 enum VIDEO_CODEC_PROFILE_TYPE {
4227  VIDEO_CODEC_PROFILE_BASELINE = 66,
4232  VIDEO_CODEC_PROFILE_MAIN = 77,
4237  VIDEO_CODEC_PROFILE_HIGH = 100,
4238 };
4239 
4243 enum AUDIO_CODEC_PROFILE_TYPE {
4247  AUDIO_CODEC_PROFILE_LC_AAC = 0,
4251  AUDIO_CODEC_PROFILE_HE_AAC = 1,
4255  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
4256 };
4257 
4282  unsigned short txPacketLossRate;
4300 };
4301 
4305 enum RTMP_STREAM_PUBLISH_STATE {
4309  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4313  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4318  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4327  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4332  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4338  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4339 };
4340 
4344 enum RTMP_STREAM_PUBLISH_REASON {
4348  RTMP_STREAM_PUBLISH_REASON_OK = 0,
4352  RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4356  RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4360  RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4364  RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4368  RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4372  RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4376  RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4381  RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4385  RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4390  RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4395  RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4396  11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
4401  RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4402  13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
4406  RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
4410  RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4411  15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
4415  RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4420  RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4421 };
4422 
4426 enum RTMP_STREAMING_EVENT {
4430  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4435  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4439  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4443  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4444 };
4445 
4453 typedef struct RtcImage {
4458  const char* url;
4463  int x;
4468  int y;
4472  int width;
4476  int height;
4484  int zOrder;
4490  double alpha;
4491 
4492  RtcImage() : url(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
4493 } RtcImage;
4503  LiveStreamAdvancedFeature() : featureName(OPTIONAL_NULLPTR), opened(false) {}
4504  LiveStreamAdvancedFeature(const char* feat_name, bool open)
4505  : featureName(feat_name), opened(open) {}
4507  // static const char* LBHQ = "lbhq";
4509  // static const char* VEO = "veo";
4510 
4515  const char* featureName;
4516 
4522  bool opened;
4523 };
4524 
4528 enum CONNECTION_STATE_TYPE {
4536  CONNECTION_STATE_DISCONNECTED = 1,
4546  CONNECTION_STATE_CONNECTING = 2,
4554  CONNECTION_STATE_CONNECTED = 3,
4564  CONNECTION_STATE_RECONNECTING = 4,
4577  CONNECTION_STATE_FAILED = 5,
4578 };
4579 
4587  uid_t uid;
4593  int x;
4599  int y;
4603  int width;
4607  int height;
4616  int zOrder;
4622  double alpha;
4643 
4644  TranscodingUser()
4645  : uid(0), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0), audioChannel(0) {}
4646 };
4647 
4659  int width;
4667  int height;
4681 
4690 
4700  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
4705  unsigned int backgroundColor;
4709  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
4713  unsigned int userCount;
4725 
4731  const char* metadata;
4742  unsigned int watermarkCount;
4743 
4755  unsigned int backgroundImageCount;
4756 
4760  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
4779  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
4784 
4788  unsigned int advancedFeatureCount;
4789 
4790  LiveTranscoding()
4791  : width(360),
4792  height(640),
4793  videoBitrate(400),
4794  videoFramerate(15),
4795  lowLatency(false),
4796  videoGop(30),
4797  videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
4798  backgroundColor(0x000000),
4799  videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
4800  userCount(0),
4801  transcodingUsers(OPTIONAL_NULLPTR),
4802  transcodingExtraInfo(OPTIONAL_NULLPTR),
4803  metadata(OPTIONAL_NULLPTR),
4804  watermark(OPTIONAL_NULLPTR),
4805  watermarkCount(0),
4806  backgroundImage(OPTIONAL_NULLPTR),
4808  audioSampleRate(AUDIO_SAMPLE_RATE_48000),
4809  audioBitrate(48),
4810  audioChannels(1),
4811  audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
4812  advancedFeatures(OPTIONAL_NULLPTR),
4813  advancedFeatureCount(0) {}
4814 };
4815 
4823  VIDEO_SOURCE_TYPE sourceType;
4836  const char* imageUrl;
4846  int x;
4851  int y;
4855  int width;
4859  int height;
4866  int zOrder;
4871  double alpha;
4878  bool mirror;
4879 
4881  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4882  remoteUserUid(0),
4883  imageUrl(OPTIONAL_NULLPTR),
4884  x(0),
4885  y(0),
4886  width(0),
4887  height(0),
4888  zOrder(0),
4889  alpha(1.0),
4890  mirror(false) {}
4891 };
4892 
4900  unsigned int streamCount;
4919 
4921  : streamCount(0),
4922  videoInputStreams(OPTIONAL_NULLPTR),
4924  syncWithPrimaryCamera(true) {}
4925 };
4926 
4930 enum VIDEO_TRANSCODER_ERROR {
4935  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4939  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4943  VT_ERR_INVALID_IMAGE_PATH = 3,
4947  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4951  VT_ERR_INVALID_LAYOUT = 5,
4955  VT_ERR_INTERNAL = 20
4956 };
4957 
4958 
4966  AUDIO_SOURCE_TYPE sourceType;
4986  const char* channelId;
4993  track_id_t trackId;
4994 
4995  MixedAudioStream(AUDIO_SOURCE_TYPE source)
4996  : sourceType(source),
4997  remoteUserUid(0),
4998  channelId(NULL),
4999  trackId(-1) {}
5000 
5001  MixedAudioStream(AUDIO_SOURCE_TYPE source, track_id_t track)
5002  : sourceType(source),
5003  trackId(track) {}
5004 
5005  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel)
5006  : sourceType(source),
5007  remoteUserUid(uid),
5008  channelId(channel) {}
5009 
5010  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel, track_id_t track)
5011  : sourceType(source),
5012  remoteUserUid(uid),
5013  channelId(channel),
5014  trackId(track) {}
5015 
5016 };
5017 
5025  unsigned int streamCount;
5030 
5039 
5041 };
5042 
5070 };
5071 
5075 enum LASTMILE_PROBE_RESULT_STATE {
5079  LASTMILE_PROBE_RESULT_COMPLETE = 1,
5085  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
5089  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
5090 };
5091 
5099  unsigned int packetLossRate;
5103  unsigned int jitter;
5107  unsigned int availableBandwidth;
5108 
5110 };
5111 
5119  LASTMILE_PROBE_RESULT_STATE state;
5131  unsigned int rtt;
5132 
5133  LastmileProbeResult() : state(LASTMILE_PROBE_RESULT_UNAVAILABLE), rtt(0) {}
5134 };
5135 
5139 enum CONNECTION_CHANGED_REASON_TYPE {
5143  CONNECTION_CHANGED_CONNECTING = 0,
5147  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
5151  CONNECTION_CHANGED_INTERRUPTED = 2,
5156  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
5162  CONNECTION_CHANGED_JOIN_FAILED = 4,
5166  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
5171  CONNECTION_CHANGED_INVALID_APP_ID = 6,
5181  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
5196  CONNECTION_CHANGED_INVALID_TOKEN = 8,
5201  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
5210  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
5214  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
5218  CONNECTION_CHANGED_RENEW_TOKEN = 12,
5223  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
5228  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
5232  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
5236  CONNECTION_CHANGED_LOST = 16,
5240  CONNECTION_CHANGED_ECHO_TEST = 17,
5244  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
5250  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
5254  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
5255 
5259  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
5260  /*
5261  * 22: The connection is failed due to certification verify failure.
5262  */
5263  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
5267  CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
5271  CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
5272 };
5273 
5277 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
5284  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
5289  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
5295  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
5301  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
5302 };
5303 
5307 enum NETWORK_TYPE {
5311  NETWORK_TYPE_UNKNOWN = -1,
5315  NETWORK_TYPE_DISCONNECTED = 0,
5319  NETWORK_TYPE_LAN = 1,
5323  NETWORK_TYPE_WIFI = 2,
5327  NETWORK_TYPE_MOBILE_2G = 3,
5331  NETWORK_TYPE_MOBILE_3G = 4,
5335  NETWORK_TYPE_MOBILE_4G = 5,
5339  NETWORK_TYPE_MOBILE_5G = 6,
5340 };
5341 
5345 enum VIDEO_VIEW_SETUP_MODE {
5349  VIDEO_VIEW_SETUP_REPLACE = 0,
5353  VIDEO_VIEW_SETUP_ADD = 1,
5360  VIDEO_VIEW_SETUP_REMOVE = 2,
5361 };
5362 
5366 struct VideoCanvas {
5370  uid_t uid;
5371 
5375  uid_t subviewUid;
5381  view_t view;
5390  media::base::RENDER_MODE_TYPE renderMode;
5398  VIDEO_MIRROR_MODE_TYPE mirrorMode;
5402  VIDEO_VIEW_SETUP_MODE setupMode;
5406  VIDEO_SOURCE_TYPE sourceType;
5433  media::base::VIDEO_MODULE_POSITION position;
5434 
5438  VIDEO_ORIENTATION rotation;
5439 
5440  VideoCanvas()
5441  : uid(0),
5442  subviewUid(0),
5443  view(NULL),
5444  backgroundColor(0x00000000),
5445  renderMode(media::base::RENDER_MODE_HIDDEN),
5446  mirrorMode(VIDEO_MIRROR_MODE_AUTO),
5447  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5448  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5449  mediaPlayerId(-ERR_NOT_READY),
5450  cropArea(0, 0, 0, 0),
5451  enableAlphaMask(false),
5452  position(media::base::POSITION_POST_CAPTURER),
5453  rotation(VIDEO_ORIENTATION_0) {}
5454 
5455  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5456  : uid(0),
5457  subviewUid(0),
5458  view(v),
5459  backgroundColor(0x00000000),
5460  renderMode(m),
5461  mirrorMode(mt),
5462  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5463  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5464  mediaPlayerId(-ERR_NOT_READY),
5465  cropArea(0, 0, 0, 0),
5466  enableAlphaMask(false),
5467  position(media::base::POSITION_POST_CAPTURER),
5468  rotation(VIDEO_ORIENTATION_0) {}
5469 
5470  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5471  : uid(u),
5472  subviewUid(0),
5473  view(v),
5474  backgroundColor(0x00000000),
5475  renderMode(m),
5476  mirrorMode(mt),
5477  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5478  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5479  mediaPlayerId(-ERR_NOT_READY),
5480  cropArea(0, 0, 0, 0),
5481  enableAlphaMask(false),
5482  position(media::base::POSITION_POST_CAPTURER),
5483  rotation(VIDEO_ORIENTATION_0) {}
5484 
5485  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5486  uid_t subu)
5487  : uid(u),
5488  subviewUid(subu),
5489  view(v),
5490  backgroundColor(0x00000000),
5491  renderMode(m),
5492  mirrorMode(mt),
5493  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5494  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5495  mediaPlayerId(-ERR_NOT_READY),
5496  cropArea(0, 0, 0, 0),
5497  enableAlphaMask(false),
5498  position(media::base::POSITION_POST_CAPTURER),
5499  rotation(VIDEO_ORIENTATION_0) {}
5500 };
5501 
5522  };
5523 
5529 
5535 
5541 
5547 
5553 
5554  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness,
5555  float redness, float sharpness)
5556  : lighteningContrastLevel(contrastLevel),
5557  lighteningLevel(lightening),
5558  smoothnessLevel(smoothness),
5559  rednessLevel(redness),
5560  sharpnessLevel(sharpness) {}
5561 
5562  BeautyOptions()
5564  lighteningLevel(0),
5565  smoothnessLevel(0),
5566  rednessLevel(0),
5567  sharpnessLevel(0) {}
5568 };
5569 
5773  };
5774 
5779 
5785 
5786  FaceShapeAreaOptions(FACE_SHAPE_AREA shapeArea, int areaIntensity) : shapeArea(shapeArea), shapeIntensity(areaIntensity) {}
5787 
5789 };
5790 
5816  };
5817 
5822 
5829 
5831 
5833 };
5834 
5858  const char * path;
5859 
5864  float strength;
5865 
5866  FilterEffectOptions(const char * lut3dPath, float filterStrength) : path(lut3dPath), strength(filterStrength) {}
5867 
5868  FilterEffectOptions() : path(OPTIONAL_NULLPTR), strength(0.5) {}
5869 };
5870 
5889  };
5905  };
5906 
5911 
5916 
5918  : mode(lowlightMode), level(lowlightLevel) {}
5919 
5922 };
5942  };
5961  };
5966 
5971 
5973  : mode(denoiserMode), level(denoiserLevel) {}
5974 
5976 };
5977 
5990 
6003 
6004  ColorEnhanceOptions(float stength, float skinProtect)
6005  : strengthLevel(stength), skinProtectLevel(skinProtect) {}
6006 
6008 };
6009 
6040  };
6041 
6061  };
6062 
6067 
6080  unsigned int color;
6081 
6089  const char* source;
6090 
6097 
6100  color(0xffffff),
6101  source(OPTIONAL_NULLPTR),
6103 };
6104 
6120  SEG_MODEL_GREEN = 2
6121  };
6122 
6138  SCREEN_COLOR_BLUE = 2
6139  };
6140 
6145 
6155 
6160 
6162 };
6163 
6167 enum AUDIO_TRACK_TYPE {
6171  AUDIO_TRACK_INVALID = -1,
6177  AUDIO_TRACK_MIXABLE = 0,
6187  AUDIO_TRACK_DIRECT = 1,
6188 };
6189 
6208 
6210 };
6211 
6233 enum VOICE_BEAUTIFIER_PRESET {
6237  VOICE_BEAUTIFIER_OFF = 0x00000000,
6243  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
6249  CHAT_BEAUTIFIER_FRESH = 0x01010200,
6255  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
6265  SINGING_BEAUTIFIER = 0x01020100,
6269  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
6273  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
6277  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
6281  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
6285  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
6289  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
6293  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
6297  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
6308  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
6309 };
6310 
6322 enum AUDIO_EFFECT_PRESET {
6326  AUDIO_EFFECT_OFF = 0x00000000,
6330  ROOM_ACOUSTICS_KTV = 0x02010100,
6334  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
6338  ROOM_ACOUSTICS_STUDIO = 0x02010300,
6342  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
6346  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
6350  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
6354  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
6362  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
6369  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
6374  ROOM_ACOUSTICS_CHORUS = 0x02010D00,
6380  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
6386  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
6392  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
6398  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
6404  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
6408  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
6412  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
6416  STYLE_TRANSFORMATION_RNB = 0x02030100,
6420  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
6426  PITCH_CORRECTION = 0x02040100,
6427 
6431 };
6432 
6436 enum VOICE_CONVERSION_PRESET {
6440  VOICE_CONVERSION_OFF = 0x00000000,
6445  VOICE_CHANGER_NEUTRAL = 0x03010100,
6450  VOICE_CHANGER_SWEET = 0x03010200,
6455  VOICE_CHANGER_SOLID = 0x03010300,
6460  VOICE_CHANGER_BASS = 0x03010400,
6463  VOICE_CHANGER_CARTOON = 0x03010500,
6466  VOICE_CHANGER_CHILDLIKE = 0x03010600,
6469  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6472  VOICE_CHANGER_MONSTER = 0x03010800,
6475  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6478  VOICE_CHANGER_GROOT = 0x03010A00,
6481  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6484  VOICE_CHANGER_IRON_LADY = 0x03010C00,
6487  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6490  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6493  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6494 
6495 };
6496 
6500 enum HEADPHONE_EQUALIZER_PRESET {
6504  HEADPHONE_EQUALIZER_OFF = 0x00000000,
6508  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6512  HEADPHONE_EQUALIZER_INEAR = 0x04000002
6513 };
6514 
6518 enum VOICE_AI_TUNER_TYPE {
6522  VOICE_AI_TUNER_MATURE_MALE,
6526  VOICE_AI_TUNER_FRESH_MALE,
6530  VOICE_AI_TUNER_ELEGANT_FEMALE,
6534  VOICE_AI_TUNER_SWEET_FEMALE,
6538  VOICE_AI_TUNER_WARM_MALE_SINGING,
6542  VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6546  VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6550  VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6554  VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6558  VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6559 };
6560 
6581 
6582 #if defined(__APPLE__) && !TARGET_OS_IOS
6583 
6586  bool excludeCurrentProcessAudio = true;
6588 #else
6590 #endif
6591 };
6592 
6597 
6616 
6652  int bitrate;
6683 
6695  unsigned int highLightColor;
6704 
6706  : captureAudio(false),
6707  dimensions(1920, 1080),
6708  frameRate(5),
6709  bitrate(STANDARD_BITRATE),
6710  captureMouseCursor(true),
6711  windowFocus(false),
6712  excludeWindowList(OPTIONAL_NULLPTR),
6713  excludeWindowCount(0),
6714  highLightWidth(0),
6715  highLightColor(0),
6716  enableHighLight(false) {}
6717  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
6718  : captureAudio(false),dimensions(d),
6719  frameRate(f),
6720  bitrate(b),
6721  captureMouseCursor(true),
6722  windowFocus(false),
6723  excludeWindowList(OPTIONAL_NULLPTR),
6724  excludeWindowCount(0),
6725  highLightWidth(0),
6726  highLightColor(0),
6727  enableHighLight(false) {}
6728  ScreenCaptureParameters(int width, int height, int f, int b)
6729  : captureAudio(false),
6730  dimensions(width, height),
6731  frameRate(f),
6732  bitrate(b),
6733  captureMouseCursor(true),
6734  windowFocus(false),
6735  excludeWindowList(OPTIONAL_NULLPTR),
6736  excludeWindowCount(0),
6737  highLightWidth(0),
6738  highLightColor(0),
6739  enableHighLight(false) {}
6740  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
6741  : captureAudio(false),
6742  dimensions(width, height),
6743  frameRate(f),
6744  bitrate(b),
6745  captureMouseCursor(cur),
6746  windowFocus(fcs),
6747  excludeWindowList(OPTIONAL_NULLPTR),
6748  excludeWindowCount(0),
6749  highLightWidth(0),
6750  highLightColor(0),
6751  enableHighLight(false) {}
6752  ScreenCaptureParameters(int width, int height, int f, int b, view_t* ex, int cnt)
6753  : captureAudio(false),
6754  dimensions(width, height),
6755  frameRate(f),
6756  bitrate(b),
6757  captureMouseCursor(true),
6758  windowFocus(false),
6759  excludeWindowList(ex),
6760  excludeWindowCount(cnt),
6761  highLightWidth(0),
6762  highLightColor(0),
6763  enableHighLight(false) {}
6764  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t* ex,
6765  int cnt)
6766  : captureAudio(false),
6767  dimensions(width, height),
6768  frameRate(f),
6769  bitrate(b),
6770  captureMouseCursor(cur),
6771  windowFocus(fcs),
6772  excludeWindowList(ex),
6773  excludeWindowCount(cnt),
6774  highLightWidth(0),
6775  highLightColor(0),
6776  enableHighLight(false) {}
6777 };
6778 
6782 enum AUDIO_RECORDING_QUALITY_TYPE {
6787  AUDIO_RECORDING_QUALITY_LOW = 0,
6792  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6797  AUDIO_RECORDING_QUALITY_HIGH = 2,
6802  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6803 };
6804 
6808 enum AUDIO_FILE_RECORDING_TYPE {
6812  AUDIO_FILE_RECORDING_MIC = 1,
6816  AUDIO_FILE_RECORDING_PLAYBACK = 2,
6820  AUDIO_FILE_RECORDING_MIXED = 3,
6821 };
6822 
6826 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6830  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6834  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6838  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6839 };
6840 
6850  const char* filePath;
6856  bool encode;
6871  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
6876  AUDIO_RECORDING_QUALITY_TYPE quality;
6877 
6892 
6894  : filePath(OPTIONAL_NULLPTR),
6895  encode(false),
6896  sampleRate(32000),
6897  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6898  quality(AUDIO_RECORDING_QUALITY_LOW),
6899  recordingChannel(1) {}
6900 
6901  AudioRecordingConfiguration(const char* file_path, int sample_rate,
6902  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6903  : filePath(file_path),
6904  encode(false),
6905  sampleRate(sample_rate),
6906  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6907  quality(quality_type),
6908  recordingChannel(channel) {}
6909 
6910  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate,
6911  AUDIO_FILE_RECORDING_TYPE type,
6912  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6913  : filePath(file_path),
6914  encode(enc),
6915  sampleRate(sample_rate),
6916  fileRecordingType(type),
6917  quality(quality_type),
6918  recordingChannel(channel) {}
6919 
6920  AudioRecordingConfiguration(const AudioRecordingConfiguration& rhs)
6921  : filePath(rhs.filePath),
6922  encode(rhs.encode),
6923  sampleRate(rhs.sampleRate),
6925  quality(rhs.quality),
6927 };
6928 
6936  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
6940  AUDIO_ENCODING_TYPE encodingType;
6941 
6943  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6944  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM) {}
6945 };
6950  public:
6964  virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6965  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6966 
6980  virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6981  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6982 
6996  virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6997  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6998 
6999  virtual ~IAudioEncodedFrameObserver() {}
7000 };
7001 
7006 enum AREA_CODE {
7010  AREA_CODE_CN = 0x00000001,
7014  AREA_CODE_NA = 0x00000002,
7018  AREA_CODE_EU = 0x00000004,
7022  AREA_CODE_AS = 0x00000008,
7026  AREA_CODE_JP = 0x00000010,
7030  AREA_CODE_IN = 0x00000020,
7034  AREA_CODE_GLOB = (0xFFFFFFFF)
7035 };
7036 
7041 enum AREA_CODE_EX {
7045  AREA_CODE_OC = 0x00000040,
7049  AREA_CODE_SA = 0x00000080,
7053  AREA_CODE_AF = 0x00000100,
7057  AREA_CODE_KR = 0x00000200,
7061  AREA_CODE_HKMC = 0x00000400,
7065  AREA_CODE_US = 0x00000800,
7069  AREA_CODE_RU = 0x00001000,
7073  AREA_CODE_OVS = 0xFFFFFFFE
7074 };
7075 
7079 enum CHANNEL_MEDIA_RELAY_ERROR {
7083  RELAY_OK = 0,
7087  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
7096  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
7100  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
7104  RELAY_ERROR_FAILED_JOIN_SRC = 4,
7108  RELAY_ERROR_FAILED_JOIN_DEST = 5,
7112  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
7116  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
7121  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
7125  RELAY_ERROR_INTERNAL_ERROR = 9,
7129  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
7133  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
7134 };
7135 
7139 enum CHANNEL_MEDIA_RELAY_STATE {
7144  RELAY_STATE_IDLE = 0,
7148  RELAY_STATE_CONNECTING = 1,
7152  RELAY_STATE_RUNNING = 2,
7156  RELAY_STATE_FAILURE = 3,
7157 };
7158 
7166  uid_t uid;
7170  const char* channelName;
7174  const char* token;
7175 
7176  ChannelMediaInfo() : uid(0), channelName(NULL), token(NULL) {}
7177  ChannelMediaInfo(const char* c, const char* t, uid_t u) : uid(u), channelName(c), token(t) {}
7178 };
7179 
7221 
7223  : srcInfo(OPTIONAL_NULLPTR), destInfos(OPTIONAL_NULLPTR), destCount(0) {}
7224 };
7225 
7234 
7236 
7237  bool operator==(const UplinkNetworkInfo& rhs) const {
7239  }
7240 };
7241 
7247  const char* userId;
7251  VIDEO_STREAM_TYPE stream_type;
7255  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
7260 
7262  : userId(OPTIONAL_NULLPTR),
7263  stream_type(VIDEO_STREAM_HIGH),
7264  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
7265  expected_bitrate_bps(-1) {}
7266 
7268  : stream_type(rhs.stream_type),
7271  if (rhs.userId != OPTIONAL_NULLPTR) {
7272  const size_t len = std::strlen(rhs.userId);
7273  char* buf = new char[len + 1];
7274  std::memcpy(buf, rhs.userId, len);
7275  buf[len] = '\0';
7276  userId = buf;
7277  }
7278  }
7279 
7280  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
7281  if (this == &rhs) return *this;
7282  userId = OPTIONAL_NULLPTR;
7283  stream_type = rhs.stream_type;
7284  current_downscale_level = rhs.current_downscale_level;
7285  expected_bitrate_bps = rhs.expected_bitrate_bps;
7286  if (rhs.userId != OPTIONAL_NULLPTR) {
7287  const size_t len = std::strlen(rhs.userId);
7288  char* buf = new char[len + 1];
7289  std::memcpy(buf, rhs.userId, len);
7290  buf[len] = '\0';
7291  userId = buf;
7292  }
7293  return *this;
7294  }
7295 
7296  ~PeerDownlinkInfo() { delete[] userId; }
7297  };
7298 
7319 
7324  peer_downlink_info(OPTIONAL_NULLPTR),
7326 
7331  peer_downlink_info(OPTIONAL_NULLPTR),
7333  if (total_received_video_count <= 0) return;
7334  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
7335  for (int i = 0; i < total_received_video_count; ++i)
7337  }
7338 
7339  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
7340  if (this == &rhs) return *this;
7341  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
7342  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
7343  total_downscale_level_count = rhs.total_downscale_level_count;
7344  peer_downlink_info = OPTIONAL_NULLPTR;
7345  total_received_video_count = rhs.total_received_video_count;
7346  if (total_received_video_count > 0) {
7347  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
7348  for (int i = 0; i < total_received_video_count; ++i)
7349  peer_downlink_info[i] = rhs.peer_downlink_info[i];
7350  }
7351  return *this;
7352  }
7353 
7354  ~DownlinkNetworkInfo() { delete[] peer_downlink_info; }
7355 };
7356 
7365 enum ENCRYPTION_MODE {
7369  AES_128_XTS = 1,
7373  AES_128_ECB = 2,
7377  AES_256_XTS = 3,
7381  SM4_128_ECB = 4,
7385  AES_128_GCM = 5,
7389  AES_256_GCM = 6,
7394  AES_128_GCM2 = 7,
7399  AES_256_GCM2 = 8,
7403  MODE_END,
7404 };
7405 
7414  ENCRYPTION_MODE encryptionMode;
7420  const char* encryptionKey;
7427  uint8_t encryptionKdfSalt[32];
7428 
7435 
7437  : encryptionMode(AES_128_GCM2),
7438  encryptionKey(OPTIONAL_NULLPTR),
7440  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
7441  }
7442 
7444  const char* getEncryptionString() const {
7445  switch (encryptionMode) {
7446  case AES_128_XTS:
7447  return "aes-128-xts";
7448  case AES_128_ECB:
7449  return "aes-128-ecb";
7450  case AES_256_XTS:
7451  return "aes-256-xts";
7452  case SM4_128_ECB:
7453  return "sm4-128-ecb";
7454  case AES_128_GCM:
7455  return "aes-128-gcm";
7456  case AES_256_GCM:
7457  return "aes-256-gcm";
7458  case AES_128_GCM2:
7459  return "aes-128-gcm-2";
7460  case AES_256_GCM2:
7461  return "aes-256-gcm-2";
7462  default:
7463  return "aes-128-gcm-2";
7464  }
7465  return "aes-128-gcm-2";
7466  }
7468 };
7469 
7473 enum ENCRYPTION_ERROR_TYPE {
7477  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
7482  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
7486  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
7491  ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
7495  ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
7496 };
7497 
7498 enum UPLOAD_ERROR_REASON {
7499  UPLOAD_SUCCESS = 0,
7500  UPLOAD_NET_ERROR = 1,
7501  UPLOAD_SERVER_ERROR = 2,
7502 };
7503 
7509 enum RENEW_TOKEN_ERROR_CODE {
7513  RENEW_TOKEN_SUCCESS = 0,
7518  RENEW_TOKEN_FAILURE = 1,
7523  RENEW_TOKEN_TOKEN_EXPIRED = 2,
7532  RENEW_TOKEN_INVALID_TOKEN = 3,
7538  RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
7543  RENEW_TOKEN_INCONSISTENT_APPID = 5,
7547  RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
7548 };
7549 
7553 enum PERMISSION_TYPE {
7557  RECORD_AUDIO = 0,
7561  CAMERA = 1,
7562 
7566  SCREEN_CAPTURE = 2,
7567 };
7568 
7572 enum STREAM_SUBSCRIBE_STATE {
7576  SUB_STATE_IDLE = 0,
7592  SUB_STATE_NO_SUBSCRIBED = 1,
7596  SUB_STATE_SUBSCRIBING = 2,
7600  SUB_STATE_SUBSCRIBED = 3
7601 };
7602 
7606 enum STREAM_PUBLISH_STATE {
7610  PUB_STATE_IDLE = 0,
7621  PUB_STATE_NO_PUBLISHED = 1,
7625  PUB_STATE_PUBLISHING = 2,
7629  PUB_STATE_PUBLISHED = 3
7630 };
7631 
7640  view_t view;
7662  const char* token;
7668  const char* channelId;
7677 
7678  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
7679  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
7680 
7682  : view(OPTIONAL_NULLPTR),
7683  enableAudio(true),
7684  enableVideo(true),
7685  token(OPTIONAL_NULLPTR),
7686  channelId(OPTIONAL_NULLPTR),
7687  intervalInSeconds(2) {}
7688 };
7689 
7693 struct UserInfo {
7697  uid_t uid;
7701  char userAccount[MAX_USER_ACCOUNT_LENGTH];
7702 
7703  UserInfo() : uid(0) { userAccount[0] = '\0'; }
7704 };
7705 
7709 enum EAR_MONITORING_FILTER_TYPE {
7713  EAR_MONITORING_FILTER_NONE = (1 << 0),
7718  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7722  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7728  EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7729 };
7730 
7734 enum THREAD_PRIORITY_TYPE {
7738  LOWEST = 0,
7742  LOW = 1,
7746  NORMAL = 2,
7750  HIGH = 3,
7754  HIGHEST = 4,
7758  CRITICAL = 5,
7759 };
7760 
7761 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7762 
7766 struct ScreenVideoParameters {
7770  VideoDimensions dimensions;
7774  int frameRate = 15;
7778  int bitrate;
7782  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7783 
7784  ScreenVideoParameters() : dimensions(1280, 720) {}
7785 };
7786 
7790 struct ScreenCaptureParameters2 {
7802  bool captureAudio = false;
7807  ScreenAudioParameters audioParams;
7815  bool captureVideo = true;
7820  ScreenVideoParameters videoParams;
7821 };
7822 #endif
7823 
7827 enum MEDIA_TRACE_EVENT {
7831  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7835  MEDIA_TRACE_EVENT_VIDEO_DECODED,
7836 };
7837 
7924 };
7925 
7926 enum CONFIG_FETCH_TYPE {
7930  CONFIG_FETCH_TYPE_INITIALIZE = 1,
7934  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7935 };
7936 
7940 enum LOCAL_PROXY_MODE {
7945  ConnectivityFirst = 0,
7949  LocalOnly = 1,
7950 };
7951 
7959  const char* serverDomain;
7963  const char* serverPath;
7974 
7975  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
7976 
7977  LogUploadServerInfo(const char* domain, const char* path, int port, bool https)
7978  : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
7979 };
7980 
7990 };
7991 
8000  const char** ipList;
8013  const char** domainList;
8023  const char* verifyDomainName;
8027  LOCAL_PROXY_MODE mode;
8039  : ipList(NULL),
8040  ipListSize(0),
8041  domainList(NULL),
8042  domainListSize(0),
8043  verifyDomainName(NULL),
8044  mode(ConnectivityFirst),
8045  disableAut(true) {}
8046 };
8047 
8051 enum RecorderStreamType {
8055  RTC,
8059  PREVIEW,
8060 };
8061 
8069  const char* channelId;
8073  uid_t uid;
8077  RecorderStreamType type;
8078  RecorderStreamInfo() : channelId(NULL), uid(0), type(RTC) {}
8079  RecorderStreamInfo(const char* channelId, uid_t uid)
8080  : channelId(channelId), uid(uid), type(RTC) {}
8081  RecorderStreamInfo(const char* channelId, uid_t uid, RecorderStreamType type)
8082  : channelId(channelId), uid(uid), type(type) {}
8083 };
8084 
8090 enum RdtStreamType {
8096  RDT_STREAM_CMD,
8102  RDT_STREAM_DATA,
8106  RDT_STREAM_COUNT,
8107 };
8108 
8114 enum RdtState {
8118  RDT_STATE_CLOSED,
8122  RDT_STATE_OPENED,
8127  RDT_STATE_BLOCKED,
8132  RDT_STATE_PENDING,
8139  RDT_STATE_BROKEN,
8140 };
8141 } // namespace rtc
8142 
8143 namespace base {
8144 
8146  public:
8147  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
8148  virtual ~IEngineBase() {}
8149 };
8150 
8151 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
8152  public:
8153  AParameter(IEngineBase& engine) { initialize(&engine); }
8154  AParameter(IEngineBase* engine) { initialize(engine); }
8156 
8157  private:
8158  bool initialize(IEngineBase* engine) {
8159  IAgoraParameter* p = OPTIONAL_NULLPTR;
8160  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
8161  return p != OPTIONAL_NULLPTR;
8162  }
8163 };
8164 
8166  public:
8167  virtual ~LicenseCallback() {}
8168  virtual void onCertificateRequired() = 0;
8169  virtual void onLicenseRequest() = 0;
8170  virtual void onLicenseValidated() = 0;
8171  virtual void onLicenseError(int result) = 0;
8172 };
8173 
8174 } // namespace base
8175 
8256 };
8260 struct VideoLayout {
8264  const char* channelId;
8268  rtc::uid_t uid;
8272  user_id_t strUid;
8278  uint32_t x;
8284  uint32_t y;
8288  uint32_t width;
8292  uint32_t height;
8300  uint32_t videoState;
8301 
8302  VideoLayout()
8303  : channelId(OPTIONAL_NULLPTR),
8304  uid(0),
8305  strUid(OPTIONAL_NULLPTR),
8306  x(0),
8307  y(0),
8308  width(0),
8309  height(0),
8310  videoState(0) {}
8311 };
8312 } // namespace agora
8313 
8319 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
8320 
8326 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
8327 
8328 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
8329 
8337 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString& credential);
8338 
8352 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char* credential_buf,
8353  int credential_len,
8354  const char* certificate_buf,
8355  int certificate_len);
8356 
8364 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback* callback);
8365 
8373 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
8374 
8375 /*
8376  * Get monotonic time in ms which can be used by capture time,
8377  * typical scenario is as follows:
8378  *
8379  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8380  * | // custom audio/video base capture time, e.g. the first audio/video capture time. | | int64_t
8381  * custom_capture_time_base; | | | |
8382  * int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
8383  * | | | // offset is fixed once calculated in the begining. | | const int64_t offset =
8384  * agora_monotonic_time - custom_capture_time_base; | | | | //
8385  * realtime_custom_audio/video_capture_time is the origin capture time that customer provided.| | //
8386  * actual_audio/video_capture_time is the actual capture time transfered to sdk. | |
8387  * int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
8388  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
8389  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8390  *
8391  * @return
8392  * - >= 0: Success.
8393  * - < 0: Failure.
8394  */
8395 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:4718
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:7959
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
Occurs when the local user receives a video packet.
agora::rtc::VideoCanvas::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:5410
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:4472
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:4866
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2939
agora::rtc::ScreenAudioParameters::captureSignalVolume
int captureSignalVolume
Definition: AgoraBase.h:6580
agora::VideoLayout
Layout information of a specific sub-video stream within the mixed stream.
Definition: AgoraBase.h:8260
agora::rtc::FilterEffectOptions::strength
float strength
Definition: AgoraBase.h:5864
agora::rtc::SimulcastConfig::STREAM_LAYER_1
@ STREAM_LAYER_1
Definition: AgoraBase.h:2353
agora::VideoLayout::channelId
const char * channelId
Definition: AgoraBase.h:8264
agora::rtc::UserInfo
The information of the user.
Definition: AgoraBase.h:7693
agora::rtc::FilterEffectOptions
Filter effect options.
Definition: AgoraBase.h:5840
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:4871
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1692
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:2188
agora::rtc::LastmileProbeResult
Results of the uplink and downlink last-mile network tests.
Definition: AgoraBase.h:5115
agora::rtc::RtcStats::lanAccelerateState
int lanAccelerateState
Definition: AgoraBase.h:2995
agora::rtc::AudioEncodedFrameObserverConfig
Observer settings for the encoded audio.
Definition: AgoraBase.h:6932
agora::rtc::ScreenCaptureParameters
Screen sharing configurations.
Definition: AgoraBase.h:6596
agora::VideoLayout::x
uint32_t x
Definition: AgoraBase.h:8278
agora::rtc::WatermarkRatio
The position and size of the watermark on the screen.
Definition: AgoraBase.h:2463
agora::rtc::AudioVolumeInfo
The volume information of users.
Definition: AgoraBase.h:4069
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
The degree of blurring applied to the custom background image.
Definition: AgoraBase.h:6045
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:5123
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1890
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:7989
agora::rtc::BeautyOptions
Image enhancement options.
Definition: AgoraBase.h:5505
agora::rtc::SenderOptions
Definition: AgoraBase.h:1428
agora::rtc::WatermarkBuffer::height
int height
Definition: AgoraBase.h:2648
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:6652
agora::rtc::EchoTestConfiguration::channelId
const char * channelId
Definition: AgoraBase.h:7668
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:5534
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2848
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:6035
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:4705
agora::base::IAgoraParameter
The interface class of Agora RTC SDK, which provides JSON configuration information of the SDK.
Definition: IAgoraParameter.h:151
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:4102
agora::rtc::LastmileProbeConfig
Configurations of the last-mile network test.
Definition: AgoraBase.h:5046
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:4599
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:6689
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2864
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2924
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:4282
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:3274
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:8197
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:2177
agora::rtc::WatermarkConfig::buffer
WatermarkBuffer buffer
Definition: AgoraBase.h:2686
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:6703
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:5937
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:5402
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5899
agora::rtc::WatermarkConfig::literal
WatermarkLiteral literal
Definition: AgoraBase.h:2698
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:4642
agora::rtc::SimulcastConfig::StreamLayerIndex
StreamLayerIndex
Index of video streams of different quality levels. @technical preview.
Definition: AgoraBase.h:2349
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2959
agora::rtc::SimulcastConfig::STREAM_LAYER_2
@ STREAM_LAYER_2
Definition: AgoraBase.h:2357
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:3266
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:6669
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:6940
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1437
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1671
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:4694
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:7220
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:4286
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:5103
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:5540
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:5970
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:5398
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2832
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2331
agora::rtc::SegmentationProperty::SEG_MODEL_GREEN
@ SEG_MODEL_GREEN
Definition: AgoraBase.h:6120
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1260
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:8027
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:5053
agora::rtc::RecorderStreamInfo::channelId
const char * channelId
Definition: AgoraBase.h:8069
agora::rtc::LocalAccessPointConfiguration
Configuration for the Local Access Point.
Definition: AgoraBase.h:7995
agora::rtc::FilterEffectOptions::path
const char * path
Definition: AgoraBase.h:5858
agora::rtc::SegmentationProperty::SCREEN_COLOR_TYPE
SCREEN_COLOR_TYPE
Screen color type.
Definition: AgoraBase.h:6126
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:4709
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Video noise reduction mode.
Definition: AgoraBase.h:5932
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWIDTH
@ FACE_SHAPE_AREA_NOSEWIDTH
Definition: AgoraBase.h:5702
agora::rtc::LiveTranscoding
Transcoding configurations for Media Push.
Definition: AgoraBase.h:4651
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2836
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:3270
agora::rtc::Rectangle
The location of the target area relative to the screen or window. If you do not set this parameter,...
Definition: AgoraBase.h:2429
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:8000
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEANGLE
@ FACE_SHAPE_AREA_EYEANGLE
Definition: AgoraBase.h:5691
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:5370
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2944
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:6850
agora::rtc::EncodedVideoFrameInfo
Information about externally encoded video frames.
Definition: AgoraBase.h:1821
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:5989
agora::rtc::MultipathStats::activePathNum
int activePathNum
Definition: AgoraBase.h:2809
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:8202
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:6023
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSMILE
@ FACE_SHAPE_AREA_MOUTHSMILE
Definition: AgoraBase.h:5752
agora::rtc::FaceShapeBeautyOptions::shapeStyle
FACE_SHAPE_BEAUTY_STYLE shapeStyle
Definition: AgoraBase.h:5821
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:5546
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2856
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4829
agora::rtc::WatermarkOptions::zOrder
int zOrder
Definition: AgoraBase.h:2524
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2153
agora::rtc::EncodedAudioFrameInfo
Audio information after encoding.
Definition: AgoraBase.h:1653
agora::util::AutoPtr
Definition: AgoraBase.h:100
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:5099
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:950
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:6682
agora::rtc::IPacketObserver::Packet
Configurations for the Packet instance.
Definition: AgoraBase.h:4133
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:6199
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSELENGTH
@ FACE_SHAPE_AREA_NOSELENGTH
Definition: AgoraBase.h:5696
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:4779
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:8073
agora::rtc::VideoEncoderConfiguration
Video encoder configurations.
Definition: AgoraBase.h:2143
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2441
agora::rtc::SimulcastConfig::StreamLayerConfig::framerate
int framerate
Definition: AgoraBase.h:2399
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:2167
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:7908
agora::util::AList
Definition: AgoraBase.h:233
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2974
agora::rtc::VideoSubscriptionOptions
Video subscription options.
Definition: AgoraBase.h:1791
agora::rtc::TranscodingUser
Transcoding configurations of each host.
Definition: AgoraBase.h:4583
agora::rtc::WatermarkConfig::id
const char * id
Definition: AgoraBase.h:2677
agora::rtc::PathStats
Statistical information about a specific network path.
Definition: AgoraBase.h:2759
agora::rtc::EchoTestConfiguration
The configuration of the audio and video call loop test.
Definition: AgoraBase.h:7635
agora::rtc::RtcImage
Image properties.
Definition: AgoraBase.h:4453
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:4593
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACECONTOUR
@ FACE_SHAPE_AREA_FACECONTOUR
Definition: AgoraBase.h:5600
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:7174
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:7923
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:6856
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:5528
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2475
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:8215
agora::rtc::SimulcastStreamConfig
The configuration of the low-quality video stream.
Definition: AgoraBase.h:2316
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:4765
agora::rtc::WatermarkBuffer::buffer
const uint8_t * buffer
Definition: AgoraBase.h:2663
agora::rtc::FaceShapeAreaOptions::shapeArea
FACE_SHAPE_AREA shapeArea
Definition: AgoraBase.h:5778
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:7214
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:4463
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:6066
agora::rtc::FaceShapeBeautyOptions
The facial enhancement style options.
Definition: AgoraBase.h:5796
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4823
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:4918
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:4484
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACELENGTH
@ FACE_SHAPE_AREA_FACELENGTH
Definition: AgoraBase.h:5606
agora::rtc::WatermarkTimestamp::format
const char * format
Definition: AgoraBase.h:2591
agora::rtc::MixedAudioStream
The source of the audio streams that are mixed locally.
Definition: AgoraBase.h:4962
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:3090
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:4085
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:4587
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:5429
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:7847
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:4515
agora::rtc::AdvancedConfigInfo
Advanced options for the Local Access Point.
Definition: AgoraBase.h:7984
agora::rtc::ScreenAudioParameters::channels
int channels
Definition: AgoraBase.h:6576
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2437
agora::rtc::SimulcastConfig::publish_fallback_enable
bool publish_fallback_enable
Definition: AgoraBase.h:2421
agora::rtc::MultipathStats::wifiRxBytes
uint32_t wifiRxBytes
Definition: AgoraBase.h:2797
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:4273
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:4458
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:4139
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1903
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2979
agora::rtc::SimulcastConfig::configs
StreamLayerConfig configs[STREAM_LAYER_COUNT_MAX]
Definition: AgoraBase.h:2412
agora::rtc::WatermarkConfig::imageUrl
const char * imageUrl
Definition: AgoraBase.h:2702
agora::rtc::ColorEnhanceOptions
The color enhancement options.
Definition: AgoraBase.h:5983
agora::rtc::MultipathStats::wifiTxBytes
uint32_t wifiTxBytes
Definition: AgoraBase.h:2793
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:6867
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:944
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2511
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:8031
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:5127
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:4742
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2433
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:4904
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEDISTANCE
@ FACE_SHAPE_AREA_EYEDISTANCE
Definition: AgoraBase.h:5652
agora::rtc::WatermarkConfig::timestamp
WatermarkTimestamp timestamp
Definition: AgoraBase.h:2692
agora::util::IString
Definition: AgoraBase.h:172
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:8023
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:8224
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
The low-light enhancement level.
Definition: AgoraBase.h:5893
agora::rtc::SegmentationProperty::SEG_MODEL_TYPE
SEG_MODEL_TYPE
The type of algorithms to user for background processing.
Definition: AgoraBase.h:6112
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1687
agora::rtc::LocalTranscoderConfiguration
The configuration of the video mixing on the local client.
Definition: AgoraBase.h:4896
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
The contrast level.
Definition: AgoraBase.h:5509
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2469
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:4269
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1796
agora::rtc::RecorderStreamInfo::type
RecorderStreamType type
Definition: AgoraBase.h:8077
agora::rtc::LocalAudioMixerConfiguration::audioInputStreams
MixedAudioStream * audioInputStreams
Definition: AgoraBase.h:5029
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHPOSITION
@ FACE_SHAPE_AREA_MOUTHPOSITION
Definition: AgoraBase.h:5746
agora::rtc::WatermarkConfig::options
WatermarkOptions options
Definition: AgoraBase.h:2708
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:5069
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2904
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:4143
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:4783
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWING
@ FACE_SHAPE_AREA_NOSEWING
Definition: AgoraBase.h:5708
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:4755
agora::rtc::IPacketObserver
Definition: AgoraBase.h:4127
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:4750
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHIN
@ FACE_SHAPE_AREA_CHIN
Definition: AgoraBase.h:5634
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWTHICKNESS
@ FACE_SHAPE_AREA_EYEBROWTHICKNESS
Definition: AgoraBase.h:5772
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2895
agora::VideoLayout::width
uint32_t width
Definition: AgoraBase.h:8288
agora::rtc::VideoFormat
The format of the video frame.
Definition: AgoraBase.h:3253
agora::rtc::AdvanceOptions
Advanced options for video encoding.
Definition: AgoraBase.h:1959
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:4622
agora::rtc::MixedAudioStream::trackId
track_id_t trackId
Definition: AgoraBase.h:4993
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2516
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEKBONE
@ FACE_SHAPE_AREA_CHEEKBONE
Definition: AgoraBase.h:5617
agora::rtc::DataStreamConfig
The configurations for the data stream.
Definition: AgoraBase.h:2271
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1968
agora::rtc::LocalAudioMixerConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:5025
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2844
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2934
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:5119
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:2200
agora::rtc::VideoCanvas::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraBase.h:5433
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:7170
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:4667
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1641
agora::rtc::LocalAudioMixerConfiguration
The configurations for mixing the lcoal audio.
Definition: AgoraBase.h:5021
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1868
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2880
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2852
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1647
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:8255
agora::rtc::CodecCapLevels::hwDecodingLevel
VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel
Definition: AgoraBase.h:2090
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2872
agora::VideoLayout::height
uint32_t height
Definition: AgoraBase.h:8292
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:4076
agora::rtc::WatermarkLiteral
The definition of the WatermarkLiteral struct.
Definition: AgoraBase.h:2602
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:5513
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:4674
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_FEMALE
@ FACE_SHAPE_BEAUTY_STYLE_FEMALE
Definition: AgoraBase.h:5806
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:4014
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:4028
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE
FACE_SHAPE_BEAUTY_STYLE
The facial enhancement style options.
Definition: AgoraBase.h:5802
agora::rtc::SegmentationProperty::SCREEN_COLOR_BLUE
@ SCREEN_COLOR_BLUE
Definition: AgoraBase.h:6138
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEK
@ FACE_SHAPE_AREA_CHEEK
Definition: AgoraBase.h:5622
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSCALE
@ FACE_SHAPE_AREA_MOUTHSCALE
Definition: AgoraBase.h:5740
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:4603
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_MALE
@ FACE_SHAPE_BEAUTY_STYLE_MALE
Definition: AgoraBase.h:5810
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:6695
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACEWIDTH
@ FACE_SHAPE_AREA_FACEWIDTH
Definition: AgoraBase.h:5611
agora::base::AParameter
Definition: AgoraBase.h:8151
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:5552
agora::rtc::MultipathStats::lanTxBytes
uint32_t lanTxBytes
Definition: AgoraBase.h:2785
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:7414
agora::util::AOutputIterator
Definition: AgoraBase.h:202
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2506
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:6949
agora::rtc::WatermarkBuffer::length
int length
Definition: AgoraBase.h:2652
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1872
agora::rtc::WatermarkTimestamp::fontSize
int fontSize
Definition: AgoraBase.h:2572
agora::rtc::ScreenAudioParameters
The audio configuration for the shared screen stream.
Definition: AgoraBase.h:6568
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:4010
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:7863
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:5107
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1899
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1882
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:4724
agora::rtc::SimulcastConfig::StreamLayerConfig
Configures the parameters of a specific layer in multi-quality video streams. @technical preview.
Definition: AgoraBase.h:2391
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:4022
agora::rtc::DeviceInfo::isLowLatencyAudioSupported
bool isLowLatencyAudioSupported
Definition: AgoraBase.h:4119
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:4731
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:4760
agora::rtc::ChannelMediaRelayConfiguration
Configuration of cross channel media relay.
Definition: AgoraBase.h:7183
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:6096
agora::rtc::MultipathStats::pathStats
const PathStats * pathStats
Definition: AgoraBase.h:2813
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:7697
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2290
agora::rtc::LiveStreamAdvancedFeature
The configuration for advanced features of the RTMP or RTMPS streaming with transcoding.
Definition: AgoraBase.h:4502
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:6080
agora::rtc::LastmileProbeOneWayResult
Results of the uplink or downlink last-mile network test.
Definition: AgoraBase.h:5095
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEGENERAL
@ FACE_SHAPE_AREA_NOSEGENERAL
Definition: AgoraBase.h:5733
agora::rtc::VideoDenoiserOptions
Video noise reduction options.
Definition: AgoraBase.h:5928
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2482
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5952
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:5416
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1719
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:2157
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2445
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1723
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2520
agora::rtc::MixedAudioStream::channelId
const char * channelId
Definition: AgoraBase.h:4986
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1675
agora::UserInfo
The information of the user.
Definition: AgoraBase.h:940
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2984
agora::rtc::VirtualBackgroundSource
The custom background.
Definition: AgoraBase.h:6013
agora::rtc::VideoCanvas::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:5438
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPUPILS
@ FACE_SHAPE_AREA_EYEPUPILS
Definition: AgoraBase.h:5671
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:5915
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:5381
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:4836
agora::rtc::ScreenCaptureParameters::audioParams
ScreenAudioParameters audioParams
Definition: AgoraBase.h:6615
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:6936
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
Occurs when the local user sends an audio packet.
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:7427
agora::rtc::ScreenCaptureParameters::captureAudio
bool captureAudio
Definition: AgoraBase.h:6608
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:6031
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:4737
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:4096
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSETIP
@ FACE_SHAPE_AREA_NOSETIP
Definition: AgoraBase.h:5726
agora::rtc::ChannelMediaInfo
Channel media information.
Definition: AgoraBase.h:7162
agora::rtc::WatermarkLiteral::wmLiteral
const char * wmLiteral
Definition: AgoraBase.h:2617
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:956
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:5888
agora::VideoLayout::y
uint32_t y
Definition: AgoraBase.h:8284
agora::rtc::WatermarkLiteral::fontSize
int fontSize
Definition: AgoraBase.h:2607
agora::rtc::LocalAudioStats::aecEstimatedDelay
int aecEstimatedDelay
Definition: AgoraBase.h:4299
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:5390
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:8209
agora::rtc::LocalAudioStats::earMonitorDelay
int earMonitorDelay
Definition: AgoraBase.h:4294
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA
FACE_SHAPE_AREA
Chooses the specific facial areas that need to be adjusted.
Definition: AgoraBase.h:5581
agora::rtc::MultipathStats::lanRxBytes
uint32_t lanRxBytes
Definition: AgoraBase.h:2789
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4032
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2860
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1683
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1907
agora::rtc::SimulcastConfig::STREAM_LAYER_6
@ STREAM_LAYER_6
Definition: AgoraBase.h:2373
agora::rtc::MultipathStats::mobileRxBytes
uint32_t mobileRxBytes
Definition: AgoraBase.h:2805
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEINNERCORNER
@ FACE_SHAPE_AREA_EYEINNERCORNER
Definition: AgoraBase.h:5678
agora::rtc::LocalAudioStats::audioPlayoutDelay
int audioPlayoutDelay
Definition: AgoraBase.h:4290
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:8238
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:4036
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_LOWEREYELID
@ FACE_SHAPE_AREA_LOWEREYELID
Definition: AgoraBase.h:5665
agora::rtc::AdvanceOptions::encodeAlpha
bool encodeAlpha
Definition: AgoraBase.h:1975
agora::VideoLayout::strUid
user_id_t strUid
Definition: AgoraBase.h:8272
agora::rtc::LogUploadServerInfo
Configuration information for the log server.
Definition: AgoraBase.h:7955
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Video noise reduction level.
Definition: AgoraBase.h:5946
agora::rtc::AudioTrackConfig::enableAudioProcessing
bool enableAudioProcessing
Definition: AgoraBase.h:6207
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:5406
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACESMALL
@ FACE_SHAPE_AREA_FACESMALL
Definition: AgoraBase.h:5640
agora::rtc::CodecCapInfo
The codec capability of the SDK.
Definition: AgoraBase.h:2105
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:6646
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:6891
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2969
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:4775
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:4476
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2321
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1886
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:5059
agora::rtc::SegmentationProperty::modelType
SEG_MODEL_TYPE modelType
Definition: AgoraBase.h:6144
agora::rtc::MultipathStats
Aggregates statistics of each network path in multipath transmission.
Definition: AgoraBase.h:2781
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2888
agora::rtc::EchoTestConfiguration::intervalInSeconds
int intervalInSeconds
Definition: AgoraBase.h:7676
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4900
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:5521
agora::base::LicenseCallback
Definition: AgoraBase.h:8165
agora::rtc::EncryptionConfig
Built-in encryption configurations.
Definition: AgoraBase.h:7409
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:4700
agora::rtc::SimulcastConfig::STREAM_LOW
@ STREAM_LOW
Definition: AgoraBase.h:2377
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
The custom background.
Definition: AgoraBase.h:6017
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:7856
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:5386
agora::rtc::LocalAccessPointConfiguration::disableAut
bool disableAut
Definition: AgoraBase.h:8037
agora::rtc::ScreenAudioParameters::sampleRate
int sampleRate
Definition: AgoraBase.h:6572
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:6640
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1256
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:4846
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:4689
agora::rtc::TranscodingVideoStream
The video streams for local video mixing.
Definition: AgoraBase.h:4819
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:6089
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:7963
agora::rtc::EncryptionConfig::datastreamEncryptionEnabled
bool datastreamEncryptionEnabled
Definition: AgoraBase.h:7434
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYESCALE
@ FACE_SHAPE_AREA_EYESCALE
Definition: AgoraBase.h:5645
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHLIP
@ FACE_SHAPE_AREA_MOUTHLIP
Definition: AgoraBase.h:5759
agora::rtc::SimulcastConfig::STREAM_LAYER_5
@ STREAM_LAYER_5
Definition: AgoraBase.h:2369
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEBRIDGE
@ FACE_SHAPE_AREA_NOSEBRIDGE
Definition: AgoraBase.h:5720
agora::rtc::SegmentationProperty::SCREEN_COLOR_AUTO
@ SCREEN_COLOR_AUTO
Definition: AgoraBase.h:6130
agora::VideoLayout::videoState
uint32_t videoState
Definition: AgoraBase.h:8300
agora::rtc::MixedAudioStream::sourceType
AUDIO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4966
agora::rtc::WatermarkConfig
Used to configure watermark-related information.
Definition: AgoraBase.h:2673
agora::rtc::EchoTestConfiguration::view
view_t view
Definition: AgoraBase.h:7640
agora::rtc::RtcStats
Statistics of a call session.
Definition: AgoraBase.h:2828
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1803
agora::rtc::IAudioEncodedFrameObserver::onRecordAudioEncodedFrame
virtual void onRecordAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
Gets the encoded audio data of the local user.
agora::rtc::VirtualBackgroundSource::BACKGROUND_VIDEO
@ BACKGROUND_VIDEO
Definition: AgoraBase.h:6039
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2501
agora::rtc::LowlightEnhanceOptions
The low-light enhancement options.
Definition: AgoraBase.h:5874
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:4616
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:4659
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1697
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2840
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2876
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:5965
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2868
agora::rtc::SegmentationProperty::greenCapacity
float greenCapacity
Definition: AgoraBase.h:6154
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:4265
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:7893
agora::rtc::SimulcastConfig::STREAM_LAYER_COUNT_MAX
@ STREAM_LAYER_COUNT_MAX
Definition: AgoraBase.h:2381
agora::rtc::WatermarkOptions
Watermark image configurations.
Definition: AgoraBase.h:2495
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:2195
agora::rtc::LocalAudioStats
Local audio statistics.
Definition: AgoraBase.h:4261
agora::rtc::RecorderStreamInfo
The information about the media streams to be recorded.
Definition: AgoraBase.h:8065
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:7967
agora::rtc::SimulcastConfig
Configure video streams of different quality levels.
Definition: AgoraBase.h:2344
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:6660
agora::rtc::MixedAudioStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4972
agora::rtc::WatermarkBuffer::width
int width
Definition: AgoraBase.h:2644
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:4468
agora::rtc::FocalLengthInfo::focalLengthType
CAMERA_FOCAL_LENGTH_TYPE focalLengthType
Definition: AgoraBase.h:2137
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1633
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2919
agora::rtc::EchoTestConfiguration::enableVideo
bool enableVideo
Definition: AgoraBase.h:7654
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2914
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:5064
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:4006
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPOSITION
@ FACE_SHAPE_AREA_EYEPOSITION
Definition: AgoraBase.h:5659
agora::rtc::IAudioEncodedFrameObserver::onPlaybackAudioEncodedFrame
virtual void onPlaybackAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
Gets the encoded audio data of all remote users.
agora::rtc::AdvanceOptions::encodingPreference
ENCODING_PREFERENCE encodingPreference
Definition: AgoraBase.h:1963
agora::rtc::SegmentationProperty::screenColorType
SCREEN_COLOR_TYPE screenColorType
Definition: AgoraBase.h:6159
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:4018
agora::rtc::IAudioEncodedFrameObserver::onMixedAudioEncodedFrame
virtual void onMixedAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
Gets the mixed and encoded audio data of the local and all remote users.
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_FAST
@ LOW_LIGHT_ENHANCE_LEVEL_FAST
Definition: AgoraBase.h:5904
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2949
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:2117
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:4788
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:2113
agora::rtc::AudioRecordingConfiguration
Recording configurations.
Definition: AgoraBase.h:6844
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:8189
agora::rtc::WatermarkTimestamp::strokeWidth
int strokeWidth
Definition: AgoraBase.h:2583
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
The low-light enhancement mode.
Definition: AgoraBase.h:5878
agora::util::IContainer
Definition: AgoraBase.h:193
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:6060
agora::rtc::LocalAudioMixerConfiguration::syncWithLocalMic
bool syncWithLocalMic
Definition: AgoraBase.h:5038
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MANDIBLE
@ FACE_SHAPE_AREA_MANDIBLE
Definition: AgoraBase.h:5628
agora::rtc::VideoDimensions
The video dimension.
Definition: AgoraBase.h:1252
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:6050
agora::rtc::SegmentationProperty::SEG_MODEL_AI
@ SEG_MODEL_AI
Definition: AgoraBase.h:6116
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_NATURAL
@ FACE_SHAPE_BEAUTY_STYLE_NATURAL
Definition: AgoraBase.h:5815
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:7878
agora::rtc::FaceShapeAreaOptions::shapeIntensity
int shapeIntensity
Definition: AgoraBase.h:5784
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:4859
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2282
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:5910
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:4713
agora::rtc::WatermarkBuffer
Configures the format, size, and pixel buffer of the watermark image.
Definition: AgoraBase.h:2639
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FOREHEAD
@ FACE_SHAPE_AREA_FOREHEAD
Definition: AgoraBase.h:5595
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::WatermarkTimestamp
The definition of the WatermarkTimestamp struct.
Definition: AgoraBase.h:2568
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:2109
agora::rtc::AudioTrackConfig
The configuration of custom audio tracks.
Definition: AgoraBase.h:6193
agora::rtc::FocalLengthInfo::cameraDirection
int cameraDirection
Definition: AgoraBase.h:2133
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:8005
agora::rtc::SimulcastConfig::STREAM_LAYER_4
@ STREAM_LAYER_4
Definition: AgoraBase.h:2365
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:4855
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:4878
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:2327
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:4490
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEOUTERCORNER
@ FACE_SHAPE_AREA_EYEOUTERCORNER
Definition: AgoraBase.h:5685
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4841
agora::rtc::VideoCanvas::subviewUid
uid_t subviewUid
Definition: AgoraBase.h:5375
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:7420
agora::rtc::MultipathStats::mobileTxBytes
uint32_t mobileTxBytes
Definition: AgoraBase.h:2801
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1894
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:6055
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:6676
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:8013
agora::rtc::SimulcastConfig::STREAM_LAYER_3
@ STREAM_LAYER_3
Definition: AgoraBase.h:2361
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
Occurs when the local user sends a video packet.
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1711
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3991
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:4909
agora::rtc::EchoTestConfiguration::enableAudio
bool enableAudio
Definition: AgoraBase.h:7647
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_HEADSCALE
@ FACE_SHAPE_AREA_HEADSCALE
Definition: AgoraBase.h:5590
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1432
agora::rtc::SimulcastConfig::StreamLayerConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2395
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:6027
agora::rtc::CodecCapLevels::swDecodingLevel
VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel
Definition: AgoraBase.h:2095
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1727
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:5884
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2964
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NONE
@ FACE_SHAPE_AREA_NONE
Definition: AgoraBase.h:5585
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:4680
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2989
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2884
agora::rtc::FaceShapeAreaOptions
Filter effect options.
Definition: AgoraBase.h:5575
agora::rtc::CodecCapLevels
The level of the codec capability.
Definition: AgoraBase.h:2085
agora::SpatialAudioParams
The spatial audio parameters.
Definition: AgoraBase.h:8179
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:6002
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:5960
agora::rtc::SegmentationProperty::SCREEN_COLOR_GREEN
@ SCREEN_COLOR_GREEN
Definition: AgoraBase.h:6134
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:2147
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:5131
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:4851
agora::rtc::PathStats::rxKBitRate
int rxKBitRate
Definition: AgoraBase.h:2771
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEROOT
@ FACE_SHAPE_AREA_NOSEROOT
Definition: AgoraBase.h:5714
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2954
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:5517
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:7197
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:2181
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWPOSITION
@ FACE_SHAPE_AREA_EYEBROWPOSITION
Definition: AgoraBase.h:5766
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:4522
agora::rtc::WatermarkBuffer::format
media::base::VIDEO_PIXEL_FORMAT format
Definition: AgoraBase.h:2658
agora::rtc::FocalLengthInfo
Focal length information supported by the camera, including the camera direction and focal length typ...
Definition: AgoraBase.h:2129
agora::rtc::EchoTestConfiguration::token
const char * token
Definition: AgoraBase.h:7662
agora::rtc::DeviceInfo
The audio device information.
Definition: AgoraBase.h:4113
agora::base::IEngineBase
Definition: AgoraBase.h:8145
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1498
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:6876
agora::util::IIterator
Definition: AgoraBase.h:184
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:7701
agora::rtc::VideoRenderingTracingInfo
Indicators during video frame rendering progress.
Definition: AgoraBase.h:7841
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:7973
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:5941
agora::rtc::WatermarkTimestamp::fontFilePath
const char * fontFilePath
Definition: AgoraBase.h:2579
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1679
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1876
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2929
agora::rtc::FaceShapeBeautyOptions::styleIntensity
int styleIntensity
Definition: AgoraBase.h:5828
agora::rtc::WatermarkLiteral::fontFilePath
const char * fontFilePath
Definition: AgoraBase.h:2624
agora::VideoLayout::uid
rtc::uid_t uid
Definition: AgoraBase.h:8268
agora::rtc::WatermarkConfig::type
WATERMARK_SOURCE_TYPE type
Definition: AgoraBase.h:2681
agora::rtc::PathStats::txKBitRate
int txKBitRate
Definition: AgoraBase.h:2767
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:8018
agora::rtc::PathStats::type
MultipathType type
Definition: AgoraBase.h:2763
agora::rtc::ClientRoleOptions
Setting of user role properties.
Definition: AgoraBase.h:3085
agora::rtc::WatermarkLiteral::strokeWidth
int strokeWidth
Definition: AgoraBase.h:2611
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:4607
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
Occurs when the local user receives an audio packet.
agora::rtc::VideoCanvas
Attributes of the video canvas object.
Definition: AgoraBase.h:5366
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:4277
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:6871
agora::rtc::SegmentationProperty
Processing properties for background images.
Definition: AgoraBase.h:6108
agora::rtc::SimulcastConfig::StreamLayerConfig::enable
bool enable
Definition: AgoraBase.h:2405
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:7166