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 
298 enum WARN_CODE_TYPE {
303  WARN_INVALID_VIEW = 8,
308  WARN_INIT_VIDEO = 16,
313  WARN_PENDING = 20,
318  WARN_NO_AVAILABLE_CHANNEL = 103,
324  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
329  WARN_LOOKUP_CHANNEL_REJECTED = 105,
335  WARN_OPEN_CHANNEL_TIMEOUT = 106,
340  WARN_OPEN_CHANNEL_REJECTED = 107,
341 
342  // sdk: 100~1000
346  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
350  WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
354  WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
358  WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
362  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
366  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
370  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
373  WARN_CHANNEL_SOCKET_ERROR = 134,
377  WARN_AUDIO_MIXING_OPEN_ERROR = 701,
381  WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
385  WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
389  WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
393  WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
397  WARN_ADM_RECORD_MALFUNCTION = 1021,
401  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
405  WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
413  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
417  WARN_APM_HOWLING = 1051,
421  WARN_ADM_GLITCH_STATE = 1052,
425  WARN_ADM_IMPROPER_SETTINGS = 1053,
429  WARN_ADM_POP_STATE = 1055,
433  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
438  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
446  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
447 };
448 
458 enum ERROR_CODE_TYPE {
462  ERR_OK = 0,
463  // 1~1000
467  ERR_FAILED = 1,
472  ERR_INVALID_ARGUMENT = 2,
482  ERR_NOT_READY = 3,
488  ERR_NOT_SUPPORTED = 4,
497  ERR_REFUSED = 5,
501  ERR_BUFFER_TOO_SMALL = 6,
506  ERR_NOT_INITIALIZED = 7,
510  ERR_INVALID_STATE = 8,
515  ERR_NO_PERMISSION = 9,
520  ERR_TIMEDOUT = 10,
525  ERR_CANCELED = 11,
531  ERR_TOO_OFTEN = 12,
537  ERR_BIND_SOCKET = 13,
542  ERR_NET_DOWN = 14,
552  ERR_JOIN_CHANNEL_REJECTED = 17,
562  ERR_LEAVE_CHANNEL_REJECTED = 18,
566  ERR_ALREADY_IN_USE = 19,
571  ERR_ABORTED = 20,
576  ERR_INIT_NET_ENGINE = 21,
581  ERR_RESOURCE_LIMITED = 22,
586  ERR_FUNC_IS_PROHIBITED = 23,
590  ERR_INVALID_APP_ID = 101,
595  ERR_INVALID_CHANNEL_NAME = 102,
600  ERR_NO_SERVER_RESOURCES = 103,
604  ERR_TOKEN_EXPIRED = 109,
611  ERR_INVALID_TOKEN = 110,
616  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
621  ERR_CONNECTION_LOST = 112, // only used in web sdk
625  ERR_NOT_IN_CHANNEL = 113,
629  ERR_SIZE_TOO_LARGE = 114,
633  ERR_BITRATE_LIMIT = 115,
638  ERR_TOO_MANY_DATA_STREAMS = 116,
642  ERR_STREAM_MESSAGE_TIMEOUT = 117,
646  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
651  ERR_DECRYPTION_FAILED = 120,
655  ERR_INVALID_USER_ID = 121,
660  ERR_DATASTREAM_DECRYPTION_FAILED = 122,
664  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
668  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
669 
673  ERR_LICENSE_CREDENTIAL_INVALID = 131,
674 
678  ERR_INVALID_USER_ACCOUNT = 134,
679 
686  ERR_MODULE_NOT_FOUND = 157,
687 
688  // Licensing, keep the license error code same as the main version
689  ERR_CERT_RAW = 157,
690  ERR_CERT_JSON_PART = 158,
691  ERR_CERT_JSON_INVAL = 159,
692  ERR_CERT_JSON_NOMEM = 160,
693  ERR_CERT_CUSTOM = 161,
694  ERR_CERT_CREDENTIAL = 162,
695  ERR_CERT_SIGN = 163,
696  ERR_CERT_FAIL = 164,
697  ERR_CERT_BUF = 165,
698  ERR_CERT_NULL = 166,
699  ERR_CERT_DUEDATE = 167,
700  ERR_CERT_REQUEST = 168,
701 
702  // PcmSend Error num
706  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
710  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
711 
713  // RDT error code: 250~270
718  ERR_RDT_USER_NOT_EXIST = 250,
723  ERR_RDT_USER_NOT_READY = 251,
728  ERR_RDT_DATA_BLOCKED = 252,
733  ERR_RDT_CMD_EXCEED_LIMIT = 253,
738  ERR_RDT_DATA_EXCEED_LIMIT = 254,
743  ERR_RDT_ENCRYPTION = 255,
745 
747  // signaling: 400~600
748  ERR_LOGIN_ALREADY_LOGIN = 428,
749 
751  // 1001~2000
755  ERR_LOAD_MEDIA_ENGINE = 1001,
760  ERR_ADM_GENERAL_ERROR = 1005,
765  ERR_ADM_INIT_PLAYOUT = 1008,
769  ERR_ADM_START_PLAYOUT = 1009,
773  ERR_ADM_STOP_PLAYOUT = 1010,
778  ERR_ADM_INIT_RECORDING = 1011,
782  ERR_ADM_START_RECORDING = 1012,
786  ERR_ADM_STOP_RECORDING = 1013,
791  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
792 };
793 
794 enum LICENSE_ERROR_TYPE {
798  LICENSE_ERR_INVALID = 1,
802  LICENSE_ERR_EXPIRE = 2,
806  LICENSE_ERR_MINUTES_EXCEED = 3,
810  LICENSE_ERR_LIMITED_PERIOD = 4,
814  LICENSE_ERR_DIFF_DEVICES = 5,
818  LICENSE_ERR_INTERNAL = 99,
819 };
820 
824 enum AUDIO_SESSION_OPERATION_RESTRICTION {
828  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
832  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
836  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
841  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
846  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
847 };
848 
849 typedef const char* user_id_t;
850 typedef void* view_t;
851 
855 struct UserInfo {
865  bool hasAudio;
871  bool hasVideo;
872 
873  UserInfo() : hasAudio(false), hasVideo(false) {}
874 };
875 
876 typedef util::AList<UserInfo> UserList;
877 
878 // Shared between Agora Service and Rtc Engine
879 namespace rtc {
880 
884 enum USER_OFFLINE_REASON_TYPE {
888  USER_OFFLINE_QUIT = 0,
895  USER_OFFLINE_DROPPED = 1,
899  USER_OFFLINE_BECOME_AUDIENCE = 2,
900 };
901 
905 enum INTERFACE_ID_TYPE {
909  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
913  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
917  AGORA_IID_PARAMETER_ENGINE = 3,
921  AGORA_IID_MEDIA_ENGINE = 4,
922  AGORA_IID_AUDIO_ENGINE = 5,
923  AGORA_IID_VIDEO_ENGINE = 6,
924  AGORA_IID_RTC_CONNECTION = 7,
928  AGORA_IID_SIGNALING_ENGINE = 8,
929  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
930  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
931  AGORA_IID_STATE_SYNC = 13,
932  AGORA_IID_META_SERVICE = 14,
933  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
934  AGORA_IID_H265_TRANSCODER = 16,
935 };
936 
940 enum QUALITY_TYPE {
945  QUALITY_UNKNOWN __deprecated = 0,
949  QUALITY_EXCELLENT = 1,
953  QUALITY_GOOD = 2,
957  QUALITY_POOR = 3,
961  QUALITY_BAD = 4,
965  QUALITY_VBAD = 5,
969  QUALITY_DOWN = 6,
973  QUALITY_UNSUPPORTED = 7,
977  QUALITY_DETECTING = 8,
978 };
979 
983 enum FIT_MODE_TYPE {
988  MODE_COVER = 1,
989 
995  MODE_CONTAIN = 2,
996 };
997 
1001 enum VIDEO_ORIENTATION {
1005  VIDEO_ORIENTATION_0 = 0,
1009  VIDEO_ORIENTATION_90 = 90,
1013  VIDEO_ORIENTATION_180 = 180,
1017  VIDEO_ORIENTATION_270 = 270
1018 };
1019 
1023 enum FRAME_RATE {
1027  FRAME_RATE_FPS_1 = 1,
1031  FRAME_RATE_FPS_7 = 7,
1035  FRAME_RATE_FPS_10 = 10,
1039  FRAME_RATE_FPS_15 = 15,
1043  FRAME_RATE_FPS_24 = 24,
1047  FRAME_RATE_FPS_30 = 30,
1052  FRAME_RATE_FPS_60 = 60,
1053 };
1054 
1055 enum FRAME_WIDTH {
1056  FRAME_WIDTH_960 = 960,
1057 };
1058 
1059 enum FRAME_HEIGHT {
1060  FRAME_HEIGHT_540 = 540,
1061 };
1062 
1066 enum VIDEO_FRAME_TYPE {
1070  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1074  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1078  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1082  VIDEO_FRAME_TYPE_B_FRAME = 5,
1086  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1090  VIDEO_FRAME_TYPE_UNKNOW
1091 };
1092 
1096 enum ORIENTATION_MODE {
1104  ORIENTATION_MODE_ADAPTIVE = 0,
1111  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1117  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1118 };
1119 
1123 enum DEGRADATION_PREFERENCE {
1129  MAINTAIN_AUTO = -1,
1135  MAINTAIN_QUALITY = 0,
1141  MAINTAIN_FRAMERATE = 1,
1150  MAINTAIN_BALANCED = 2,
1156  MAINTAIN_RESOLUTION = 3,
1160  DISABLED = 100,
1161 };
1162 
1170  int width;
1174  int height;
1175  VideoDimensions() : width(640), height(480) {}
1176  VideoDimensions(int w, int h) : width(w), height(h) {}
1177  bool operator==(const VideoDimensions& rhs) const {
1178  return width == rhs.width && height == rhs.height;
1179  }
1180 };
1181 
1187 const int STANDARD_BITRATE = 0;
1188 
1196 const int COMPATIBLE_BITRATE = -1;
1197 
1201 const int DEFAULT_MIN_BITRATE = -1;
1202 
1206 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1207 
1211 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1215  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1219  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1223  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1224 };
1225 
1229 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1234  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1238  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1242  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1246  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1250  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1251 };
1252 
1256 enum VIDEO_CODEC_TYPE {
1261  VIDEO_CODEC_NONE = 0,
1265  VIDEO_CODEC_VP8 = 1,
1269  VIDEO_CODEC_H264 = 2,
1273  VIDEO_CODEC_H265 = 3,
1279  VIDEO_CODEC_GENERIC = 6,
1284  VIDEO_CODEC_GENERIC_H264 = 7,
1289  VIDEO_CODEC_AV1 = 12,
1293  VIDEO_CODEC_VP9 = 13,
1297  VIDEO_CODEC_GENERIC_JPEG = 20,
1298 };
1299 
1306 enum CAMERA_FOCAL_LENGTH_TYPE {
1310  CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1314  CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1318  CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1322  CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1323 };
1324 
1328 enum TCcMode {
1332  CC_ENABLED,
1336  CC_DISABLED,
1337 };
1338 
1346  TCcMode ccMode;
1351  VIDEO_CODEC_TYPE codecType;
1352 
1413 
1414  SenderOptions() : ccMode(CC_ENABLED), codecType(VIDEO_CODEC_H265), targetBitrate(6500) {}
1415 };
1416 
1420 enum AUDIO_CODEC_TYPE {
1424  AUDIO_CODEC_OPUS = 1,
1425  // kIsac = 2,
1429  AUDIO_CODEC_PCMA = 3,
1433  AUDIO_CODEC_PCMU = 4,
1437  AUDIO_CODEC_G722 = 5,
1438  // kIlbc = 6,
1440  // AUDIO_CODEC_AAC = 7,
1444  AUDIO_CODEC_AACLC = 8,
1448  AUDIO_CODEC_HEAAC = 9,
1452  AUDIO_CODEC_JC1 = 10,
1456  AUDIO_CODEC_HEAAC2 = 11,
1460  AUDIO_CODEC_LPCNET = 12,
1464  AUDIO_CODEC_OPUSMC = 13,
1465 };
1466 
1470 enum AUDIO_ENCODING_TYPE {
1475  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1480  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1485  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1490  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1495  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1500  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1505  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1510  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1515  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1520  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1525  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1526 };
1527 
1531 enum WATERMARK_FIT_MODE {
1536  FIT_MODE_COVER_POSITION = 0,
1541  FIT_MODE_USE_IMAGE_RATIO = 1,
1542 };
1543 
1549 
1555  bool speech;
1562 };
1563 
1569  : codec(AUDIO_CODEC_AACLC),
1570  sampleRateHz(0),
1571  samplesPerChannel(0),
1572  numberOfChannels(0),
1573  captureTimeMs(0) {}
1574 
1576  : codec(rhs.codec),
1585  AUDIO_CODEC_TYPE codec;
1602 
1606  int64_t captureTimeMs;
1607 };
1613  : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1614 
1617  channelNum(rhs.channelNum),
1618  samplesOut(rhs.samplesOut),
1620  ntpTimeMs(rhs.ntpTimeMs) {}
1621 
1626 
1627  int16_t channelNum;
1628 
1629  // Output
1633  size_t samplesOut;
1637  int64_t elapsedTimeMs;
1641  int64_t ntpTimeMs;
1642 };
1646 enum H264PacketizeMode {
1650  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1654  SingleNalUnit, // Mode 0 - only single NALU allowed
1655 };
1656 
1660 enum VIDEO_STREAM_TYPE {
1664  VIDEO_STREAM_HIGH = 0,
1668  VIDEO_STREAM_LOW = 1,
1673  VIDEO_STREAM_LAYER_1 = 4,
1678  VIDEO_STREAM_LAYER_2 = 5,
1683  VIDEO_STREAM_LAYER_3 = 6,
1688  VIDEO_STREAM_LAYER_4 = 7,
1693  VIDEO_STREAM_LAYER_5 = 8,
1698  VIDEO_STREAM_LAYER_6 = 9,
1699 
1700 };
1701 
1718 
1720 };
1721 
1725 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1729  MAX_USER_ACCOUNT_LENGTH = 256
1730 };
1731 
1737  : codecType(VIDEO_CODEC_H264),
1738  width(0),
1739  height(0),
1740  framesPerSecond(0),
1741  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1742  rotation(VIDEO_ORIENTATION_0),
1743  trackId(0),
1744  captureTimeMs(0),
1745  decodeTimeMs(0),
1746  streamType(VIDEO_STREAM_HIGH),
1747  presentationMs(-1) {}
1748 
1750  : codecType(rhs.codecType),
1751  width(rhs.width),
1752  height(rhs.height),
1754  frameType(rhs.frameType),
1755  rotation(rhs.rotation),
1756  trackId(rhs.trackId),
1759  streamType(rhs.streamType),
1760  presentationMs(rhs.presentationMs) {}
1761 
1762  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1763  if (this == &rhs) return *this;
1764  codecType = rhs.codecType;
1765  width = rhs.width;
1766  height = rhs.height;
1768  frameType = rhs.frameType;
1769  rotation = rhs.rotation;
1770  trackId = rhs.trackId;
1772  decodeTimeMs = rhs.decodeTimeMs;
1773  streamType = rhs.streamType;
1774  presentationMs = rhs.presentationMs;
1775  return *this;
1776  }
1777 
1782  VIDEO_CODEC_TYPE codecType;
1786  int width;
1790  int height;
1800  VIDEO_FRAME_TYPE frameType;
1804  VIDEO_ORIENTATION rotation;
1808  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1809  // and additional payload for later implementation.
1813  int64_t captureTimeMs;
1817  int64_t decodeTimeMs;
1821  VIDEO_STREAM_TYPE streamType;
1822 
1823  // @technical preview
1824  int64_t presentationMs;
1825 };
1826 
1830 enum COMPRESSION_PREFERENCE {
1835  PREFER_COMPRESSION_AUTO = -1,
1840  PREFER_LOW_LATENCY = 0,
1845  PREFER_QUALITY = 1,
1846 };
1847 
1851 enum ENCODING_PREFERENCE {
1856  PREFER_AUTO = -1,
1860  PREFER_SOFTWARE = 0,
1867  PREFER_HARDWARE = 1,
1868 };
1869 
1877  ENCODING_PREFERENCE encodingPreference;
1878 
1882  COMPRESSION_PREFERENCE compressionPreference;
1883 
1890 
1891  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1892  compressionPreference(PREFER_COMPRESSION_AUTO),
1893  encodeAlpha(false) {}
1894 
1895  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1896  COMPRESSION_PREFERENCE compression_preference,
1897  bool encode_alpha) :
1898  encodingPreference(encoding_preference),
1899  compressionPreference(compression_preference),
1900  encodeAlpha(encode_alpha) {}
1901 
1902  bool operator==(const AdvanceOptions& rhs) const {
1903  return encodingPreference == rhs.encodingPreference &&
1904  compressionPreference == rhs.compressionPreference &&
1905  encodeAlpha == rhs.encodeAlpha;
1906  }
1907 };
1908 
1912 enum VIDEO_MIRROR_MODE_TYPE {
1919  VIDEO_MIRROR_MODE_AUTO = 0,
1923  VIDEO_MIRROR_MODE_ENABLED = 1,
1927  VIDEO_MIRROR_MODE_DISABLED = 2,
1928 };
1929 
1930 #if defined(__APPLE__) && TARGET_OS_IOS
1931 
1934 enum CAMERA_FORMAT_TYPE {
1936  CAMERA_FORMAT_NV12,
1938  CAMERA_FORMAT_BGRA,
1939 };
1940 #endif
1941 
1942 enum VIDEO_MODULE_TYPE {
1944  VIDEO_MODULE_CAPTURER = 0,
1946  VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1948  VIDEO_MODULE_HARDWARE_ENCODER = 2,
1950  VIDEO_MODULE_SOFTWARE_DECODER = 3,
1952  VIDEO_MODULE_HARDWARE_DECODER = 4,
1954  VIDEO_MODULE_RENDERER = 5,
1955 };
1956 
1957 enum HDR_CAPABILITY {
1959  HDR_CAPABILITY_UNKNOWN = -1,
1961  HDR_CAPABILITY_UNSUPPORTED = 0,
1963  HDR_CAPABILITY_SUPPORTED = 1,
1964 };
1965 
1969 enum CODEC_CAP_MASK {
1973  CODEC_CAP_MASK_NONE = 0,
1974 
1978  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1979 
1983  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1984 
1988  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1989 
1993  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1994 };
1995 
2004  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
2009  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
2010 
2011  CodecCapLevels()
2012  : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
2013  swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
2014 };
2015 
2023  VIDEO_CODEC_TYPE codecType;
2032 
2033  CodecCapInfo() : codecType(VIDEO_CODEC_NONE), codecCapMask(0) {}
2034 };
2035 
2051  CAMERA_FOCAL_LENGTH_TYPE focalLengthType;
2052 };
2053 
2061  VIDEO_CODEC_TYPE codecType;
2081  int bitrate;
2082 
2095  ORIENTATION_MODE orientationMode;
2102  DEGRADATION_PREFERENCE degradationPreference;
2103 
2109  VIDEO_MIRROR_MODE_TYPE mirrorMode;
2110 
2115 
2116  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2117  : codecType(VIDEO_CODEC_NONE),
2118  dimensions(d),
2119  frameRate(f),
2120  bitrate(b),
2121  minBitrate(DEFAULT_MIN_BITRATE),
2122  orientationMode(m),
2123  degradationPreference(MAINTAIN_AUTO),
2124  mirrorMode(mirror),
2125  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2126  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2127  : codecType(VIDEO_CODEC_NONE),
2128  dimensions(width, height),
2129  frameRate(f),
2130  bitrate(b),
2131  minBitrate(DEFAULT_MIN_BITRATE),
2132  orientationMode(m),
2133  degradationPreference(MAINTAIN_AUTO),
2134  mirrorMode(mirror),
2135  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2136  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
2137  : codecType(config.codecType),
2138  dimensions(config.dimensions),
2139  frameRate(config.frameRate),
2140  bitrate(config.bitrate),
2141  minBitrate(config.minBitrate),
2144  mirrorMode(config.mirrorMode),
2145  advanceOptions(config.advanceOptions) {}
2146  VideoEncoderConfiguration()
2147  : codecType(VIDEO_CODEC_NONE),
2148  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2149  frameRate(FRAME_RATE_FPS_15),
2150  bitrate(STANDARD_BITRATE),
2151  minBitrate(DEFAULT_MIN_BITRATE),
2152  orientationMode(ORIENTATION_MODE_ADAPTIVE),
2153  degradationPreference(MAINTAIN_AUTO),
2154  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
2155  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2156 
2157  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
2158  if (this == &rhs) return *this;
2159  codecType = rhs.codecType;
2160  dimensions = rhs.dimensions;
2161  frameRate = rhs.frameRate;
2162  bitrate = rhs.bitrate;
2163  minBitrate = rhs.minBitrate;
2164  orientationMode = rhs.orientationMode;
2165  degradationPreference = rhs.degradationPreference;
2166  mirrorMode = rhs.mirrorMode;
2167  advanceOptions = rhs.advanceOptions;
2168  return *this;
2169  }
2170 };
2171 
2204  bool ordered;
2205 };
2206 
2210 enum SIMULCAST_STREAM_MODE {
2216  AUTO_SIMULCAST_STREAM = -1,
2220  DISABLE_SIMULCAST_STREAM = 0,
2224  ENABLE_SIMULCAST_STREAM = 1,
2225 };
2226 
2246  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
2248  bool operator==(const SimulcastStreamConfig& rhs) const {
2249  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
2250  }
2251 };
2252 
2295  };
2318  bool enable;
2319  StreamLayerConfig() : dimensions(0, 0), framerate(0), enable(false) {}
2320  };
2321 
2335 
2337 };
2342 struct Rectangle {
2346  int x;
2350  int y;
2354  int width;
2358  int height;
2359 
2360  Rectangle() : x(0), y(0), width(0), height(0) {}
2361  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2362 };
2363 
2382  float xRatio;
2388  float yRatio;
2395  float widthRatio;
2396 
2397  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2398  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2399 };
2400 
2433  WATERMARK_FIT_MODE mode;
2437  int zOrder;
2438 
2440  : visibleInPreview(true),
2441  positionInLandscapeMode(0, 0, 0, 0),
2442  positionInPortraitMode(0, 0, 0, 0),
2443  mode(FIT_MODE_COVER_POSITION),
2444  zOrder(0) {}
2445 };
2446 
2452 enum WATERMARK_SOURCE_TYPE {
2456  IMAGE = 0,
2460  BUFFER = 1,
2466  LITERAL = 2,
2472  TIMESTAMPS = 3,
2473 };
2474 
2492  const char* fontFilePath;
2504  const char* format;
2505 
2506  WatermarkTimestamp() : fontSize(10), fontFilePath(NULL), strokeWidth(1), format(NULL) {}
2507 };
2508 
2516 
2530  const char* wmLiteral;
2537  const char* fontFilePath;
2538 
2539  WatermarkLiteral() : wmLiteral(NULL), fontFilePath(NULL), fontSize(10), strokeWidth(1) {}
2540 };
2541 
2553 
2557  int width;
2561  int height;
2565  int length;
2571  media::base::VIDEO_PIXEL_FORMAT format;
2572 
2576  const uint8_t* buffer;
2577 
2578  WatermarkBuffer() : buffer(NULL), width(0), height(0), length(0), format(media::base::VIDEO_PIXEL_I420) {}
2579 };
2580 
2590  const char* id;
2594  WATERMARK_SOURCE_TYPE type;
2595  union {
2615  const char* imageUrl;
2616  };
2617 
2622 
2623  WatermarkConfig() : id(NULL), type(IMAGE), imageUrl(NULL) {}
2624 };
2625 
2631 enum MultipathMode {
2635  Duplicate= 0,
2640  Dynamic
2641 };
2642 
2648 enum MultipathType {
2652  LAN = 0,
2656  WIFI,
2660  Mobile,
2664  Unknown = 99
2665 };
2666 
2672 struct PathStats {
2676  MultipathType type;
2685  PathStats() : type(Unknown), txKBitRate(0), rxKBitRate(0) {}
2686  PathStats(MultipathType t, int tx, int rx) : type(t), txKBitRate(tx), rxKBitRate(rx) {}
2687 };
2688 
2698  uint32_t lanTxBytes;
2702  uint32_t lanRxBytes;
2706  uint32_t wifiTxBytes;
2710  uint32_t wifiRxBytes;
2714  uint32_t mobileTxBytes;
2718  uint32_t mobileRxBytes;
2727  MultipathStats()
2728  : lanTxBytes(0),
2729  lanRxBytes(0),
2730  wifiTxBytes(0),
2731  wifiRxBytes(0),
2732  mobileTxBytes(0),
2733  mobileRxBytes(0),
2734  activePathNum(0),
2735  pathStats(nullptr) {}
2736 };
2737 
2741 struct RtcStats {
2745  unsigned int duration;
2749  unsigned int txBytes;
2753  unsigned int rxBytes;
2757  unsigned int txAudioBytes;
2761  unsigned int txVideoBytes;
2765  unsigned int rxAudioBytes;
2769  unsigned int rxVideoBytes;
2773  unsigned short txKBitRate;
2777  unsigned short rxKBitRate;
2781  unsigned short rxAudioKBitRate;
2785  unsigned short txAudioKBitRate;
2789  unsigned short rxVideoKBitRate;
2793  unsigned short txVideoKBitRate;
2797  unsigned short lastmileDelay;
2801  unsigned int userCount;
2808  double cpuAppUsage;
2909 
2910  RtcStats()
2911  : duration(0),
2912  txBytes(0),
2913  rxBytes(0),
2914  txAudioBytes(0),
2915  txVideoBytes(0),
2916  rxAudioBytes(0),
2917  rxVideoBytes(0),
2918  txKBitRate(0),
2919  rxKBitRate(0),
2920  rxAudioKBitRate(0),
2921  txAudioKBitRate(0),
2922  rxVideoKBitRate(0),
2923  txVideoKBitRate(0),
2924  lastmileDelay(0),
2925  userCount(0),
2926  cpuAppUsage(0.0),
2927  cpuTotalUsage(0.0),
2928  gatewayRtt(0),
2929  memoryAppUsageRatio(0.0),
2930  memoryTotalUsageRatio(0.0),
2932  connectTimeMs(0),
2942  txPacketLossRate(0),
2943  rxPacketLossRate(0),
2944  lanAccelerateState(0) {}
2945 };
2946 
2950 enum CLIENT_ROLE_TYPE {
2954  CLIENT_ROLE_BROADCASTER = 1,
2958  CLIENT_ROLE_AUDIENCE = 2,
2959 };
2960 
2965 enum QUALITY_ADAPT_INDICATION {
2969  ADAPT_NONE = 0,
2973  ADAPT_UP_BANDWIDTH = 1,
2977  ADAPT_DOWN_BANDWIDTH = 2,
2978 };
2979 
2984 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2988  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2992  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2993 };
2994 
3003  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
3004 
3005  ClientRoleOptions() : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
3006 };
3007 
3011 enum EXPERIENCE_QUALITY_TYPE {
3015  EXPERIENCE_QUALITY_GOOD = 0,
3019  EXPERIENCE_QUALITY_BAD = 1,
3020 };
3021 
3025 enum EXPERIENCE_POOR_REASON {
3029  EXPERIENCE_REASON_NONE = 0,
3033  REMOTE_NETWORK_QUALITY_POOR = 1,
3037  LOCAL_NETWORK_QUALITY_POOR = 2,
3041  WIRELESS_SIGNAL_POOR = 4,
3046  WIFI_BLUETOOTH_COEXIST = 8,
3047 };
3048 
3052 enum AUDIO_AINS_MODE {
3057  AINS_MODE_BALANCED = 0,
3063  AINS_MODE_AGGRESSIVE = 1,
3069  AINS_MODE_ULTRALOWLATENCY = 2
3070 };
3071 
3075 enum AUDIO_PROFILE_TYPE {
3085  AUDIO_PROFILE_DEFAULT = 0,
3089  AUDIO_PROFILE_SPEECH_STANDARD = 1,
3093  AUDIO_PROFILE_MUSIC_STANDARD = 2,
3099  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3103  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3109  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3113  AUDIO_PROFILE_IOT = 6,
3117  AUDIO_PROFILE_NUM = 7
3118 };
3119 
3123 enum AUDIO_SCENARIO_TYPE {
3128  AUDIO_SCENARIO_DEFAULT = 0,
3132  AUDIO_SCENARIO_GAME_STREAMING = 3,
3137  AUDIO_SCENARIO_CHATROOM = 5,
3142  AUDIO_SCENARIO_CHORUS = 7,
3146  AUDIO_SCENARIO_MEETING = 8,
3151  AUDIO_SCENARIO_AI_SERVER = 9,
3156  AUDIO_SCENARIO_AI_CLIENT = 10,
3160  AUDIO_SCENARIO_NUM = 11,
3161 };
3162 
3166 struct VideoFormat {
3167  OPTIONAL_ENUM_SIZE_T{
3169  kMaxWidthInPixels = 3840,
3171  kMaxHeightInPixels = 2160,
3173  kMaxFps = 60,
3174  };
3175 
3179  int width; // Number of pixels.
3183  int height; // Number of pixels.
3187  int fps;
3188  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
3189  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
3190 
3191  bool operator<(const VideoFormat& fmt) const {
3192  if (height != fmt.height) {
3193  return height < fmt.height;
3194  } else if (width != fmt.width) {
3195  return width < fmt.width;
3196  } else {
3197  return fps < fmt.fps;
3198  }
3199  }
3200  bool operator==(const VideoFormat& fmt) const {
3201  return width == fmt.width && height == fmt.height && fps == fmt.fps;
3202  }
3203  bool operator!=(const VideoFormat& fmt) const { return !operator==(fmt); }
3204 };
3205 
3209 enum VIDEO_CONTENT_HINT {
3213  CONTENT_HINT_NONE,
3218  CONTENT_HINT_MOTION,
3223  CONTENT_HINT_DETAILS
3224 };
3228 enum SCREEN_SCENARIO_TYPE {
3234  SCREEN_SCENARIO_DOCUMENT = 1,
3239  SCREEN_SCENARIO_GAMING = 2,
3244  SCREEN_SCENARIO_VIDEO = 3,
3250  SCREEN_SCENARIO_RDC = 4,
3251 };
3252 
3256 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3260  APPLICATION_SCENARIO_GENERAL = 0,
3296  APPLICATION_SCENARIO_MEETING = 1,
3305  APPLICATION_SCENARIO_1V1 = 2,
3316  APPLICATION_SCENARIO_LIVESHOW = 3,
3317 };
3318 
3322 enum VIDEO_QOE_PREFERENCE_TYPE {
3326  VIDEO_QOE_PREFERENCE_BALANCE = 1,
3330  VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3334  VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3338  VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3339 
3340 };
3341 
3345 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3350  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3354  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3358  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3362  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3363 };
3364 
3373 enum CAMERA_STABILIZATION_MODE {
3377  CAMERA_STABILIZATION_MODE_OFF = -1,
3383  CAMERA_STABILIZATION_MODE_AUTO = 0,
3387  CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3391  CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3395  CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3398  CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3399 };
3400 
3404 enum LOCAL_AUDIO_STREAM_STATE {
3408  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3412  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3416  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3420  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3421 };
3422 
3426 enum LOCAL_AUDIO_STREAM_REASON {
3430  LOCAL_AUDIO_STREAM_REASON_OK = 0,
3435  LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3439  LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3446  LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3450  LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3454  LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3460  LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3466  LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3472  LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3477  LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3482  LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3483 };
3484 
3488 enum LOCAL_VIDEO_STREAM_STATE {
3492  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3497  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3501  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3505  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3506 };
3507 
3512 enum LOCAL_VIDEO_EVENT_TYPE {
3516  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_HIDDEN = 1,
3520  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 2,
3524  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_STOPPED_BY_USER = 3,
3528  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_SYSTEM_INTERNAL_ERROR = 4,
3529 };
3530 
3534 enum LOCAL_VIDEO_STREAM_REASON {
3538  LOCAL_VIDEO_STREAM_REASON_OK = 0,
3542  LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3547  LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3552  LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3557  LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3561  LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3566  LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3573  LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3579  LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3584  LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3589  LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3598  LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3604  LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3608  LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3614  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3628  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3633  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3635  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3639  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3643  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3653  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3658  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3662  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3667  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3673  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3677  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3682  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3683  /* 30: (HMOS only) ScreenCapture stopped by user */
3684  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3685  /* 31: (HMOS only) ScreenCapture interrupted by other screen capture */
3686  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3687  /* 32: (HMOS only) ScreenCapture stopped by SIM call */
3688  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3690  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_EXCLUDE_WINDOW_FAILED = 34,
3691 };
3692 
3696 enum REMOTE_AUDIO_STATE {
3702  REMOTE_AUDIO_STATE_STOPPED =
3703  0, // Default state, audio is started or remote user disabled/muted audio stream
3707  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
3713  REMOTE_AUDIO_STATE_DECODING =
3714  2, // The first remote audio frame has been decoded or fronzen state ends
3719  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
3724  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
3725 };
3726 
3730 enum REMOTE_AUDIO_STATE_REASON {
3734  REMOTE_AUDIO_REASON_INTERNAL = 0,
3738  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3742  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3746  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3750  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3754  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3758  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3762  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3766  REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3770  REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3771 };
3772 
3776 enum REMOTE_VIDEO_STATE {
3782  REMOTE_VIDEO_STATE_STOPPED = 0,
3786  REMOTE_VIDEO_STATE_STARTING = 1,
3793  REMOTE_VIDEO_STATE_DECODING = 2,
3798  REMOTE_VIDEO_STATE_FROZEN = 3,
3803  REMOTE_VIDEO_STATE_FAILED = 4,
3804 };
3808 enum REMOTE_VIDEO_STATE_REASON {
3812  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3816  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3820  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3824  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3828  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3832  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3836  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3840  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3845  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3850  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3853  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3856  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3860  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3861 
3865  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3866 
3867 };
3868 
3872 enum REMOTE_USER_STATE {
3876  USER_STATE_MUTE_AUDIO = (1 << 0),
3880  USER_STATE_MUTE_VIDEO = (1 << 1),
3884  USER_STATE_ENABLE_VIDEO = (1 << 4),
3888  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3889 };
3890 
3896  VideoTrackInfo()
3897  : isLocal(false),
3898  ownerUid(0),
3899  trackId(0),
3900  channelId(OPTIONAL_NULLPTR),
3901  codecType(VIDEO_CODEC_H265),
3902  encodedFrameOnly(false),
3903  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
3904  observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
3910  bool isLocal;
3914  uid_t ownerUid;
3918  track_id_t trackId;
3922  const char* channelId;
3926  VIDEO_CODEC_TYPE codecType;
3936  VIDEO_SOURCE_TYPE sourceType;
3941 };
3942 
3947 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3951  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3955  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3959  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3963  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3967  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3968 };
3969 
3980  uid_t uid;
3989  unsigned int volume; // [0,255]
4000  unsigned int vad;
4006  double voicePitch;
4007 
4008  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
4009 };
4010 
4017 struct DeviceInfo {
4024 
4026 };
4027 
4032  public:
4033  virtual ~IPacketObserver() {}
4037  struct Packet {
4043  const unsigned char* buffer;
4047  unsigned int size;
4048 
4049  Packet() : buffer(OPTIONAL_NULLPTR), size(0) {}
4050  };
4060  virtual bool onSendAudioPacket(Packet& packet) = 0;
4070  virtual bool onSendVideoPacket(Packet& packet) = 0;
4080  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
4090  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
4091 };
4092 
4096 enum AUDIO_SAMPLE_RATE_TYPE {
4100  AUDIO_SAMPLE_RATE_32000 = 32000,
4104  AUDIO_SAMPLE_RATE_44100 = 44100,
4108  AUDIO_SAMPLE_RATE_48000 = 48000,
4109 };
4113 enum VIDEO_CODEC_TYPE_FOR_STREAM {
4117  VIDEO_CODEC_H264_FOR_STREAM = 1,
4121  VIDEO_CODEC_H265_FOR_STREAM = 2,
4122 };
4123 
4127 enum VIDEO_CODEC_PROFILE_TYPE {
4131  VIDEO_CODEC_PROFILE_BASELINE = 66,
4136  VIDEO_CODEC_PROFILE_MAIN = 77,
4141  VIDEO_CODEC_PROFILE_HIGH = 100,
4142 };
4143 
4147 enum AUDIO_CODEC_PROFILE_TYPE {
4151  AUDIO_CODEC_PROFILE_LC_AAC = 0,
4155  AUDIO_CODEC_PROFILE_HE_AAC = 1,
4159  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
4160 };
4161 
4186  unsigned short txPacketLossRate;
4204 };
4205 
4209 enum RTMP_STREAM_PUBLISH_STATE {
4213  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4217  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4222  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4231  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4236  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4242  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4243 };
4244 
4248 enum RTMP_STREAM_PUBLISH_REASON {
4252  RTMP_STREAM_PUBLISH_REASON_OK = 0,
4256  RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4260  RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4264  RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4268  RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4272  RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4276  RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4280  RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4285  RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4289  RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4294  RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4299  RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4300  11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
4305  RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4306  13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
4310  RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
4314  RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4315  15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
4319  RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4324  RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4325 };
4326 
4330 enum RTMP_STREAMING_EVENT {
4334  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4339  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4343  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4347  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4348 };
4349 
4357 typedef struct RtcImage {
4362  const char* url;
4367  int x;
4372  int y;
4376  int width;
4380  int height;
4388  int zOrder;
4394  double alpha;
4395 
4396  RtcImage() : url(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
4397 } RtcImage;
4407  LiveStreamAdvancedFeature() : featureName(OPTIONAL_NULLPTR), opened(false) {}
4408  LiveStreamAdvancedFeature(const char* feat_name, bool open)
4409  : featureName(feat_name), opened(open) {}
4411  // static const char* LBHQ = "lbhq";
4413  // static const char* VEO = "veo";
4414 
4419  const char* featureName;
4420 
4426  bool opened;
4427 };
4428 
4432 enum CONNECTION_STATE_TYPE {
4440  CONNECTION_STATE_DISCONNECTED = 1,
4450  CONNECTION_STATE_CONNECTING = 2,
4458  CONNECTION_STATE_CONNECTED = 3,
4468  CONNECTION_STATE_RECONNECTING = 4,
4478  CONNECTION_STATE_FAILED = 5,
4479 };
4480 
4488  uid_t uid;
4494  int x;
4500  int y;
4504  int width;
4508  int height;
4517  int zOrder;
4523  double alpha;
4544 
4545  TranscodingUser()
4546  : uid(0), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0), audioChannel(0) {}
4547 };
4548 
4560  int width;
4568  int height;
4582 
4591 
4601  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
4606  unsigned int backgroundColor;
4610  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
4614  unsigned int userCount;
4626 
4632  const char* metadata;
4643  unsigned int watermarkCount;
4644 
4656  unsigned int backgroundImageCount;
4657 
4661  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
4680  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
4685 
4689  unsigned int advancedFeatureCount;
4690 
4691  LiveTranscoding()
4692  : width(360),
4693  height(640),
4694  videoBitrate(400),
4695  videoFramerate(15),
4696  lowLatency(false),
4697  videoGop(30),
4698  videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
4699  backgroundColor(0x000000),
4700  videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
4701  userCount(0),
4702  transcodingUsers(OPTIONAL_NULLPTR),
4703  transcodingExtraInfo(OPTIONAL_NULLPTR),
4704  metadata(OPTIONAL_NULLPTR),
4705  watermark(OPTIONAL_NULLPTR),
4706  watermarkCount(0),
4707  backgroundImage(OPTIONAL_NULLPTR),
4709  audioSampleRate(AUDIO_SAMPLE_RATE_48000),
4710  audioBitrate(48),
4711  audioChannels(1),
4712  audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
4713  advancedFeatures(OPTIONAL_NULLPTR),
4714  advancedFeatureCount(0) {}
4715 };
4716 
4724  VIDEO_SOURCE_TYPE sourceType;
4737  const char* imageUrl;
4747  int x;
4752  int y;
4756  int width;
4760  int height;
4767  int zOrder;
4772  double alpha;
4779  bool mirror;
4780 
4782  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4783  remoteUserUid(0),
4784  imageUrl(OPTIONAL_NULLPTR),
4785  x(0),
4786  y(0),
4787  width(0),
4788  height(0),
4789  zOrder(0),
4790  alpha(1.0),
4791  mirror(false) {}
4792 };
4793 
4801  unsigned int streamCount;
4820 
4822  : streamCount(0),
4823  videoInputStreams(OPTIONAL_NULLPTR),
4825  syncWithPrimaryCamera(true) {}
4826 };
4827 
4831 enum VIDEO_TRANSCODER_ERROR {
4836  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4840  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4844  VT_ERR_INVALID_IMAGE_PATH = 3,
4848  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4852  VT_ERR_INVALID_LAYOUT = 5,
4856  VT_ERR_INTERNAL = 20
4857 };
4858 
4859 
4867  AUDIO_SOURCE_TYPE sourceType;
4887  const char* channelId;
4894  track_id_t trackId;
4895 
4896  MixedAudioStream(AUDIO_SOURCE_TYPE source)
4897  : sourceType(source),
4898  remoteUserUid(0),
4899  channelId(NULL),
4900  trackId(-1) {}
4901 
4902  MixedAudioStream(AUDIO_SOURCE_TYPE source, track_id_t track)
4903  : sourceType(source),
4904  trackId(track) {}
4905 
4906  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel)
4907  : sourceType(source),
4908  remoteUserUid(uid),
4909  channelId(channel) {}
4910 
4911  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel, track_id_t track)
4912  : sourceType(source),
4913  remoteUserUid(uid),
4914  channelId(channel),
4915  trackId(track) {}
4916 
4917 };
4918 
4926  unsigned int streamCount;
4931 
4940 
4942 };
4943 
4971 };
4972 
4976 enum LASTMILE_PROBE_RESULT_STATE {
4980  LASTMILE_PROBE_RESULT_COMPLETE = 1,
4986  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4990  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4991 };
4992 
5000  unsigned int packetLossRate;
5004  unsigned int jitter;
5008  unsigned int availableBandwidth;
5009 
5011 };
5012 
5020  LASTMILE_PROBE_RESULT_STATE state;
5032  unsigned int rtt;
5033 
5034  LastmileProbeResult() : state(LASTMILE_PROBE_RESULT_UNAVAILABLE), rtt(0) {}
5035 };
5036 
5040 enum CONNECTION_CHANGED_REASON_TYPE {
5044  CONNECTION_CHANGED_CONNECTING = 0,
5048  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
5052  CONNECTION_CHANGED_INTERRUPTED = 2,
5057  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
5063  CONNECTION_CHANGED_JOIN_FAILED = 4,
5067  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
5072  CONNECTION_CHANGED_INVALID_APP_ID = 6,
5082  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
5097  CONNECTION_CHANGED_INVALID_TOKEN = 8,
5102  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
5111  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
5115  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
5119  CONNECTION_CHANGED_RENEW_TOKEN = 12,
5124  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
5129  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
5133  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
5137  CONNECTION_CHANGED_LOST = 16,
5141  CONNECTION_CHANGED_ECHO_TEST = 17,
5145  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
5149  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
5153  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
5154 
5158  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
5159  /*
5160  * 22: The connection is failed due to certification verify failure.
5161  */
5162  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
5166  CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
5170  CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
5171 };
5172 
5176 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
5183  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
5188  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
5194  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
5200  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
5201 };
5202 
5206 enum NETWORK_TYPE {
5210  NETWORK_TYPE_UNKNOWN = -1,
5214  NETWORK_TYPE_DISCONNECTED = 0,
5218  NETWORK_TYPE_LAN = 1,
5222  NETWORK_TYPE_WIFI = 2,
5226  NETWORK_TYPE_MOBILE_2G = 3,
5230  NETWORK_TYPE_MOBILE_3G = 4,
5234  NETWORK_TYPE_MOBILE_4G = 5,
5238  NETWORK_TYPE_MOBILE_5G = 6,
5239 };
5240 
5244 enum VIDEO_VIEW_SETUP_MODE {
5248  VIDEO_VIEW_SETUP_REPLACE = 0,
5252  VIDEO_VIEW_SETUP_ADD = 1,
5259  VIDEO_VIEW_SETUP_REMOVE = 2,
5260 };
5261 
5265 struct VideoCanvas {
5269  uid_t uid;
5270 
5274  uid_t subviewUid;
5280  view_t view;
5289  media::base::RENDER_MODE_TYPE renderMode;
5297  VIDEO_MIRROR_MODE_TYPE mirrorMode;
5301  VIDEO_VIEW_SETUP_MODE setupMode;
5305  VIDEO_SOURCE_TYPE sourceType;
5332  media::base::VIDEO_MODULE_POSITION position;
5333 
5334  VideoCanvas()
5335  : uid(0),
5336  subviewUid(0),
5337  view(NULL),
5338  backgroundColor(0x00000000),
5339  renderMode(media::base::RENDER_MODE_HIDDEN),
5340  mirrorMode(VIDEO_MIRROR_MODE_AUTO),
5341  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5342  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5343  mediaPlayerId(-ERR_NOT_READY),
5344  cropArea(0, 0, 0, 0),
5345  enableAlphaMask(false),
5346  position(media::base::POSITION_POST_CAPTURER) {}
5347 
5348  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5349  : uid(0),
5350  subviewUid(0),
5351  view(v),
5352  backgroundColor(0x00000000),
5353  renderMode(m),
5354  mirrorMode(mt),
5355  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5356  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5357  mediaPlayerId(-ERR_NOT_READY),
5358  cropArea(0, 0, 0, 0),
5359  enableAlphaMask(false),
5360  position(media::base::POSITION_POST_CAPTURER) {}
5361 
5362  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5363  : uid(u),
5364  subviewUid(0),
5365  view(v),
5366  backgroundColor(0x00000000),
5367  renderMode(m),
5368  mirrorMode(mt),
5369  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5370  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5371  mediaPlayerId(-ERR_NOT_READY),
5372  cropArea(0, 0, 0, 0),
5373  enableAlphaMask(false),
5374  position(media::base::POSITION_POST_CAPTURER) {}
5375 
5376  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5377  uid_t subu)
5378  : uid(u),
5379  subviewUid(subu),
5380  view(v),
5381  backgroundColor(0x00000000),
5382  renderMode(m),
5383  mirrorMode(mt),
5384  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5385  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5386  mediaPlayerId(-ERR_NOT_READY),
5387  cropArea(0, 0, 0, 0),
5388  enableAlphaMask(false),
5389  position(media::base::POSITION_POST_CAPTURER) {}
5390 };
5391 
5412  };
5413 
5419 
5425 
5431 
5437 
5443 
5444  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness,
5445  float redness, float sharpness)
5446  : lighteningContrastLevel(contrastLevel),
5447  lighteningLevel(lightening),
5448  smoothnessLevel(smoothness),
5449  rednessLevel(redness),
5450  sharpnessLevel(sharpness) {}
5451 
5452  BeautyOptions()
5454  lighteningLevel(0),
5455  smoothnessLevel(0),
5456  rednessLevel(0),
5457  sharpnessLevel(0) {}
5458 };
5459 
5651  };
5652 
5657 
5663 
5664  FaceShapeAreaOptions(FACE_SHAPE_AREA shapeArea, int areaIntensity) : shapeArea(shapeArea), shapeIntensity(areaIntensity) {}
5665 
5667 };
5668 
5694  };
5695 
5700 
5707 
5709 
5711 };
5712 
5736  const char * path;
5737 
5742  float strength;
5743 
5744  FilterEffectOptions(const char * lut3dPath, float filterStrength) : path(lut3dPath), strength(filterStrength) {}
5745 
5746  FilterEffectOptions() : path(OPTIONAL_NULLPTR), strength(0.5) {}
5747 };
5748 
5767  };
5783  };
5784 
5789 
5794 
5796  : mode(lowlightMode), level(lowlightLevel) {}
5797 
5800 };
5820  };
5839  };
5844 
5849 
5851  : mode(denoiserMode), level(denoiserLevel) {}
5852 
5854 };
5855 
5868 
5881 
5882  ColorEnhanceOptions(float stength, float skinProtect)
5883  : strengthLevel(stength), skinProtectLevel(skinProtect) {}
5884 
5886 };
5887 
5918  };
5919 
5939  };
5940 
5945 
5958  unsigned int color;
5959 
5967  const char* source;
5968 
5975 
5978  color(0xffffff),
5979  source(OPTIONAL_NULLPTR),
5981 };
5982 
5998  SEG_MODEL_GREEN = 2
5999  };
6000 
6016  SCREEN_COLOR_BLUE = 2
6017  };
6018 
6023 
6033 
6038 
6040 };
6041 
6045 enum AUDIO_TRACK_TYPE {
6049  AUDIO_TRACK_INVALID = -1,
6055  AUDIO_TRACK_MIXABLE = 0,
6065  AUDIO_TRACK_DIRECT = 1,
6066 };
6067 
6086 
6088 };
6089 
6111 enum VOICE_BEAUTIFIER_PRESET {
6115  VOICE_BEAUTIFIER_OFF = 0x00000000,
6121  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
6127  CHAT_BEAUTIFIER_FRESH = 0x01010200,
6133  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
6143  SINGING_BEAUTIFIER = 0x01020100,
6147  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
6151  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
6155  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
6159  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
6163  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
6167  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
6171  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
6175  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
6186  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
6187 };
6188 
6200 enum AUDIO_EFFECT_PRESET {
6204  AUDIO_EFFECT_OFF = 0x00000000,
6208  ROOM_ACOUSTICS_KTV = 0x02010100,
6212  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
6216  ROOM_ACOUSTICS_STUDIO = 0x02010300,
6220  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
6224  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
6228  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
6232  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
6240  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
6247  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
6252  ROOM_ACOUSTICS_CHORUS = 0x02010D00,
6258  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
6264  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
6270  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
6276  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
6282  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
6286  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
6290  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
6294  STYLE_TRANSFORMATION_RNB = 0x02030100,
6298  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
6304  PITCH_CORRECTION = 0x02040100,
6305 
6309 };
6310 
6314 enum VOICE_CONVERSION_PRESET {
6318  VOICE_CONVERSION_OFF = 0x00000000,
6323  VOICE_CHANGER_NEUTRAL = 0x03010100,
6328  VOICE_CHANGER_SWEET = 0x03010200,
6333  VOICE_CHANGER_SOLID = 0x03010300,
6338  VOICE_CHANGER_BASS = 0x03010400,
6341  VOICE_CHANGER_CARTOON = 0x03010500,
6344  VOICE_CHANGER_CHILDLIKE = 0x03010600,
6347  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6350  VOICE_CHANGER_MONSTER = 0x03010800,
6353  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6356  VOICE_CHANGER_GROOT = 0x03010A00,
6359  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6362  VOICE_CHANGER_IRON_LADY = 0x03010C00,
6365  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6368  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6371  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6372 
6373 };
6374 
6378 enum HEADPHONE_EQUALIZER_PRESET {
6382  HEADPHONE_EQUALIZER_OFF = 0x00000000,
6386  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6390  HEADPHONE_EQUALIZER_INEAR = 0x04000002
6391 };
6392 
6396 enum VOICE_AI_TUNER_TYPE {
6400  VOICE_AI_TUNER_MATURE_MALE,
6404  VOICE_AI_TUNER_FRESH_MALE,
6408  VOICE_AI_TUNER_ELEGANT_FEMALE,
6412  VOICE_AI_TUNER_SWEET_FEMALE,
6416  VOICE_AI_TUNER_WARM_MALE_SINGING,
6420  VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6424  VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6428  VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6432  VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6436  VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6437 };
6438 
6459 
6460 #if defined(__APPLE__) && !TARGET_OS_IOS
6461 
6464  bool excludeCurrentProcessAudio = true;
6466 #else
6468 #endif
6469 };
6470 
6475 
6492 
6528  int bitrate;
6559 
6571  unsigned int highLightColor;
6580 
6582  : captureAudio(false),
6583  dimensions(1920, 1080),
6584  frameRate(5),
6585  bitrate(STANDARD_BITRATE),
6586  captureMouseCursor(true),
6587  windowFocus(false),
6588  excludeWindowList(OPTIONAL_NULLPTR),
6589  excludeWindowCount(0),
6590  highLightWidth(0),
6591  highLightColor(0),
6592  enableHighLight(false) {}
6593  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
6594  : captureAudio(false),dimensions(d),
6595  frameRate(f),
6596  bitrate(b),
6597  captureMouseCursor(true),
6598  windowFocus(false),
6599  excludeWindowList(OPTIONAL_NULLPTR),
6600  excludeWindowCount(0),
6601  highLightWidth(0),
6602  highLightColor(0),
6603  enableHighLight(false) {}
6604  ScreenCaptureParameters(int width, int height, int f, int b)
6605  : captureAudio(false),
6606  dimensions(width, height),
6607  frameRate(f),
6608  bitrate(b),
6609  captureMouseCursor(true),
6610  windowFocus(false),
6611  excludeWindowList(OPTIONAL_NULLPTR),
6612  excludeWindowCount(0),
6613  highLightWidth(0),
6614  highLightColor(0),
6615  enableHighLight(false) {}
6616  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
6617  : captureAudio(false),
6618  dimensions(width, height),
6619  frameRate(f),
6620  bitrate(b),
6621  captureMouseCursor(cur),
6622  windowFocus(fcs),
6623  excludeWindowList(OPTIONAL_NULLPTR),
6624  excludeWindowCount(0),
6625  highLightWidth(0),
6626  highLightColor(0),
6627  enableHighLight(false) {}
6628  ScreenCaptureParameters(int width, int height, int f, int b, view_t* ex, int cnt)
6629  : captureAudio(false),
6630  dimensions(width, height),
6631  frameRate(f),
6632  bitrate(b),
6633  captureMouseCursor(true),
6634  windowFocus(false),
6635  excludeWindowList(ex),
6636  excludeWindowCount(cnt),
6637  highLightWidth(0),
6638  highLightColor(0),
6639  enableHighLight(false) {}
6640  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t* ex,
6641  int cnt)
6642  : captureAudio(false),
6643  dimensions(width, height),
6644  frameRate(f),
6645  bitrate(b),
6646  captureMouseCursor(cur),
6647  windowFocus(fcs),
6648  excludeWindowList(ex),
6649  excludeWindowCount(cnt),
6650  highLightWidth(0),
6651  highLightColor(0),
6652  enableHighLight(false) {}
6653 };
6654 
6658 enum AUDIO_RECORDING_QUALITY_TYPE {
6663  AUDIO_RECORDING_QUALITY_LOW = 0,
6668  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6673  AUDIO_RECORDING_QUALITY_HIGH = 2,
6678  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6679 };
6680 
6684 enum AUDIO_FILE_RECORDING_TYPE {
6688  AUDIO_FILE_RECORDING_MIC = 1,
6692  AUDIO_FILE_RECORDING_PLAYBACK = 2,
6696  AUDIO_FILE_RECORDING_MIXED = 3,
6697 };
6698 
6702 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6706  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6710  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6714  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6715 };
6716 
6726  const char* filePath;
6732  bool encode;
6747  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
6752  AUDIO_RECORDING_QUALITY_TYPE quality;
6753 
6768 
6770  : filePath(OPTIONAL_NULLPTR),
6771  encode(false),
6772  sampleRate(32000),
6773  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6774  quality(AUDIO_RECORDING_QUALITY_LOW),
6775  recordingChannel(1) {}
6776 
6777  AudioRecordingConfiguration(const char* file_path, int sample_rate,
6778  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6779  : filePath(file_path),
6780  encode(false),
6781  sampleRate(sample_rate),
6782  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6783  quality(quality_type),
6784  recordingChannel(channel) {}
6785 
6786  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate,
6787  AUDIO_FILE_RECORDING_TYPE type,
6788  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6789  : filePath(file_path),
6790  encode(enc),
6791  sampleRate(sample_rate),
6792  fileRecordingType(type),
6793  quality(quality_type),
6794  recordingChannel(channel) {}
6795 
6796  AudioRecordingConfiguration(const AudioRecordingConfiguration& rhs)
6797  : filePath(rhs.filePath),
6798  encode(rhs.encode),
6799  sampleRate(rhs.sampleRate),
6801  quality(rhs.quality),
6803 };
6804 
6812  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
6816  AUDIO_ENCODING_TYPE encodingType;
6817 
6819  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6820  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM) {}
6821 };
6826  public:
6840  virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6841  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6842 
6856  virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6857  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6858 
6872  virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6873  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6874 
6875  virtual ~IAudioEncodedFrameObserver() {}
6876 };
6877 
6882 enum AREA_CODE {
6886  AREA_CODE_CN = 0x00000001,
6890  AREA_CODE_NA = 0x00000002,
6894  AREA_CODE_EU = 0x00000004,
6898  AREA_CODE_AS = 0x00000008,
6902  AREA_CODE_JP = 0x00000010,
6906  AREA_CODE_IN = 0x00000020,
6910  AREA_CODE_GLOB = (0xFFFFFFFF)
6911 };
6912 
6917 enum AREA_CODE_EX {
6921  AREA_CODE_OC = 0x00000040,
6925  AREA_CODE_SA = 0x00000080,
6929  AREA_CODE_AF = 0x00000100,
6933  AREA_CODE_KR = 0x00000200,
6937  AREA_CODE_HKMC = 0x00000400,
6941  AREA_CODE_US = 0x00000800,
6945  AREA_CODE_RU = 0x00001000,
6949  AREA_CODE_OVS = 0xFFFFFFFE
6950 };
6951 
6955 enum CHANNEL_MEDIA_RELAY_ERROR {
6959  RELAY_OK = 0,
6963  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6972  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6976  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6980  RELAY_ERROR_FAILED_JOIN_SRC = 4,
6984  RELAY_ERROR_FAILED_JOIN_DEST = 5,
6988  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6992  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6997  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
7001  RELAY_ERROR_INTERNAL_ERROR = 9,
7005  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
7009  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
7010 };
7011 
7015 enum CHANNEL_MEDIA_RELAY_STATE {
7020  RELAY_STATE_IDLE = 0,
7024  RELAY_STATE_CONNECTING = 1,
7028  RELAY_STATE_RUNNING = 2,
7032  RELAY_STATE_FAILURE = 3,
7033 };
7034 
7042  uid_t uid;
7046  const char* channelName;
7050  const char* token;
7051 
7052  ChannelMediaInfo() : uid(0), channelName(NULL), token(NULL) {}
7053  ChannelMediaInfo(const char* c, const char* t, uid_t u) : uid(u), channelName(c), token(t) {}
7054 };
7055 
7097 
7099  : srcInfo(OPTIONAL_NULLPTR), destInfos(OPTIONAL_NULLPTR), destCount(0) {}
7100 };
7101 
7110 
7112 
7113  bool operator==(const UplinkNetworkInfo& rhs) const {
7115  }
7116 };
7117 
7123  const char* userId;
7127  VIDEO_STREAM_TYPE stream_type;
7131  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
7136 
7138  : userId(OPTIONAL_NULLPTR),
7139  stream_type(VIDEO_STREAM_HIGH),
7140  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
7141  expected_bitrate_bps(-1) {}
7142 
7144  : stream_type(rhs.stream_type),
7147  if (rhs.userId != OPTIONAL_NULLPTR) {
7148  const size_t len = std::strlen(rhs.userId);
7149  char* buf = new char[len + 1];
7150  std::memcpy(buf, rhs.userId, len);
7151  buf[len] = '\0';
7152  userId = buf;
7153  }
7154  }
7155 
7156  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
7157  if (this == &rhs) return *this;
7158  userId = OPTIONAL_NULLPTR;
7159  stream_type = rhs.stream_type;
7160  current_downscale_level = rhs.current_downscale_level;
7161  expected_bitrate_bps = rhs.expected_bitrate_bps;
7162  if (rhs.userId != OPTIONAL_NULLPTR) {
7163  const size_t len = std::strlen(rhs.userId);
7164  char* buf = new char[len + 1];
7165  std::memcpy(buf, rhs.userId, len);
7166  buf[len] = '\0';
7167  userId = buf;
7168  }
7169  return *this;
7170  }
7171 
7172  ~PeerDownlinkInfo() { delete[] userId; }
7173  };
7174 
7195 
7200  peer_downlink_info(OPTIONAL_NULLPTR),
7202 
7207  peer_downlink_info(OPTIONAL_NULLPTR),
7209  if (total_received_video_count <= 0) return;
7210  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
7211  for (int i = 0; i < total_received_video_count; ++i)
7213  }
7214 
7215  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
7216  if (this == &rhs) return *this;
7217  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
7218  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
7219  total_downscale_level_count = rhs.total_downscale_level_count;
7220  peer_downlink_info = OPTIONAL_NULLPTR;
7221  total_received_video_count = rhs.total_received_video_count;
7222  if (total_received_video_count > 0) {
7223  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
7224  for (int i = 0; i < total_received_video_count; ++i)
7225  peer_downlink_info[i] = rhs.peer_downlink_info[i];
7226  }
7227  return *this;
7228  }
7229 
7230  ~DownlinkNetworkInfo() { delete[] peer_downlink_info; }
7231 };
7232 
7241 enum ENCRYPTION_MODE {
7245  AES_128_XTS = 1,
7249  AES_128_ECB = 2,
7253  AES_256_XTS = 3,
7257  SM4_128_ECB = 4,
7261  AES_128_GCM = 5,
7265  AES_256_GCM = 6,
7270  AES_128_GCM2 = 7,
7275  AES_256_GCM2 = 8,
7279  MODE_END,
7280 };
7281 
7290  ENCRYPTION_MODE encryptionMode;
7296  const char* encryptionKey;
7303  uint8_t encryptionKdfSalt[32];
7304 
7311 
7313  : encryptionMode(AES_128_GCM2),
7314  encryptionKey(OPTIONAL_NULLPTR),
7316  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
7317  }
7318 
7320  const char* getEncryptionString() const {
7321  switch (encryptionMode) {
7322  case AES_128_XTS:
7323  return "aes-128-xts";
7324  case AES_128_ECB:
7325  return "aes-128-ecb";
7326  case AES_256_XTS:
7327  return "aes-256-xts";
7328  case SM4_128_ECB:
7329  return "sm4-128-ecb";
7330  case AES_128_GCM:
7331  return "aes-128-gcm";
7332  case AES_256_GCM:
7333  return "aes-256-gcm";
7334  case AES_128_GCM2:
7335  return "aes-128-gcm-2";
7336  case AES_256_GCM2:
7337  return "aes-256-gcm-2";
7338  default:
7339  return "aes-128-gcm-2";
7340  }
7341  return "aes-128-gcm-2";
7342  }
7344 };
7345 
7349 enum ENCRYPTION_ERROR_TYPE {
7353  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
7358  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
7362  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
7367  ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
7371  ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
7372 };
7373 
7374 enum UPLOAD_ERROR_REASON {
7375  UPLOAD_SUCCESS = 0,
7376  UPLOAD_NET_ERROR = 1,
7377  UPLOAD_SERVER_ERROR = 2,
7378 };
7379 
7385 enum RENEW_TOKEN_ERROR_CODE {
7389  RENEW_TOKEN_SUCCESS = 0,
7394  RENEW_TOKEN_FAILURE = 1,
7399  RENEW_TOKEN_TOKEN_EXPIRED = 2,
7408  RENEW_TOKEN_INVALID_TOKEN = 3,
7414  RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
7419  RENEW_TOKEN_INCONSISTENT_APPID = 5,
7423  RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
7424 };
7425 
7429 enum PERMISSION_TYPE {
7433  RECORD_AUDIO = 0,
7437  CAMERA = 1,
7438 
7442  SCREEN_CAPTURE = 2,
7443 };
7444 
7448 enum STREAM_SUBSCRIBE_STATE {
7452  SUB_STATE_IDLE = 0,
7468  SUB_STATE_NO_SUBSCRIBED = 1,
7472  SUB_STATE_SUBSCRIBING = 2,
7476  SUB_STATE_SUBSCRIBED = 3
7477 };
7478 
7482 enum STREAM_PUBLISH_STATE {
7486  PUB_STATE_IDLE = 0,
7497  PUB_STATE_NO_PUBLISHED = 1,
7501  PUB_STATE_PUBLISHING = 2,
7505  PUB_STATE_PUBLISHED = 3
7506 };
7507 
7516  view_t view;
7538  const char* token;
7544  const char* channelId;
7553 
7554  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
7555  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
7556 
7558  : view(OPTIONAL_NULLPTR),
7559  enableAudio(true),
7560  enableVideo(true),
7561  token(OPTIONAL_NULLPTR),
7562  channelId(OPTIONAL_NULLPTR),
7563  intervalInSeconds(2) {}
7564 };
7565 
7569 struct UserInfo {
7573  uid_t uid;
7577  char userAccount[MAX_USER_ACCOUNT_LENGTH];
7578 
7579  UserInfo() : uid(0) { userAccount[0] = '\0'; }
7580 };
7581 
7585 enum EAR_MONITORING_FILTER_TYPE {
7589  EAR_MONITORING_FILTER_NONE = (1 << 0),
7594  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7598  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7604  EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7605 };
7606 
7610 enum THREAD_PRIORITY_TYPE {
7614  LOWEST = 0,
7618  LOW = 1,
7622  NORMAL = 2,
7626  HIGH = 3,
7630  HIGHEST = 4,
7634  CRITICAL = 5,
7635 };
7636 
7637 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7638 
7642 struct ScreenVideoParameters {
7646  VideoDimensions dimensions;
7650  int frameRate = 15;
7654  int bitrate;
7658  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7659 
7660  ScreenVideoParameters() : dimensions(1280, 720) {}
7661 };
7662 
7666 struct ScreenCaptureParameters2 {
7678  bool captureAudio = false;
7683  ScreenAudioParameters audioParams;
7691  bool captureVideo = true;
7696  ScreenVideoParameters videoParams;
7697 };
7698 #endif
7699 
7703 enum MEDIA_TRACE_EVENT {
7707  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7711  MEDIA_TRACE_EVENT_VIDEO_DECODED,
7712 };
7713 
7800 };
7801 
7802 enum CONFIG_FETCH_TYPE {
7806  CONFIG_FETCH_TYPE_INITIALIZE = 1,
7810  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7811 };
7812 
7816 enum LOCAL_PROXY_MODE {
7821  ConnectivityFirst = 0,
7825  LocalOnly = 1,
7826 };
7827 
7835  const char* serverDomain;
7839  const char* serverPath;
7850 
7851  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
7852 
7853  LogUploadServerInfo(const char* domain, const char* path, int port, bool https)
7854  : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
7855 };
7856 
7866 };
7867 
7876  const char** ipList;
7889  const char** domainList;
7899  const char* verifyDomainName;
7903  LOCAL_PROXY_MODE mode;
7915  : ipList(NULL),
7916  ipListSize(0),
7917  domainList(NULL),
7918  domainListSize(0),
7919  verifyDomainName(NULL),
7920  mode(ConnectivityFirst),
7921  disableAut(true) {}
7922 };
7923 
7927 enum RecorderStreamType {
7931  RTC,
7935  PREVIEW,
7936 };
7937 
7945  const char* channelId;
7949  uid_t uid;
7953  RecorderStreamType type;
7954  RecorderStreamInfo() : channelId(NULL), uid(0), type(RTC) {}
7955  RecorderStreamInfo(const char* channelId, uid_t uid)
7956  : channelId(channelId), uid(uid), type(RTC) {}
7957  RecorderStreamInfo(const char* channelId, uid_t uid, RecorderStreamType type)
7958  : channelId(channelId), uid(uid), type(type) {}
7959 };
7960 
7966 enum RdtStreamType {
7972  RDT_STREAM_CMD,
7978  RDT_STREAM_DATA,
7982  RDT_STREAM_COUNT,
7983 };
7984 
7990 enum RdtState {
7994  RDT_STATE_CLOSED,
7998  RDT_STATE_OPENED,
8003  RDT_STATE_BLOCKED,
8008  RDT_STATE_PENDING,
8015  RDT_STATE_BROKEN,
8016 };
8017 } // namespace rtc
8018 
8019 namespace base {
8020 
8022  public:
8023  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
8024  virtual ~IEngineBase() {}
8025 };
8026 
8027 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
8028  public:
8029  AParameter(IEngineBase& engine) { initialize(&engine); }
8030  AParameter(IEngineBase* engine) { initialize(engine); }
8032 
8033  private:
8034  bool initialize(IEngineBase* engine) {
8035  IAgoraParameter* p = OPTIONAL_NULLPTR;
8036  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
8037  return p != OPTIONAL_NULLPTR;
8038  }
8039 };
8040 
8042  public:
8043  virtual ~LicenseCallback() {}
8044  virtual void onCertificateRequired() = 0;
8045  virtual void onLicenseRequest() = 0;
8046  virtual void onLicenseValidated() = 0;
8047  virtual void onLicenseError(int result) = 0;
8048 };
8049 
8050 } // namespace base
8051 
8132 };
8136 struct VideoLayout {
8140  const char* channelId;
8144  rtc::uid_t uid;
8148  user_id_t strUid;
8154  uint32_t x;
8160  uint32_t y;
8164  uint32_t width;
8168  uint32_t height;
8176  uint32_t videoState;
8177 
8178  VideoLayout()
8179  : channelId(OPTIONAL_NULLPTR),
8180  uid(0),
8181  strUid(OPTIONAL_NULLPTR),
8182  x(0),
8183  y(0),
8184  width(0),
8185  height(0),
8186  videoState(0) {}
8187 };
8188 } // namespace agora
8189 
8195 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
8196 
8202 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
8203 
8204 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
8205 
8213 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString& credential);
8214 
8228 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char* credential_buf,
8229  int credential_len,
8230  const char* certificate_buf,
8231  int certificate_len);
8232 
8240 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback* callback);
8241 
8249 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
8250 
8251 /*
8252  * Get monotonic time in ms which can be used by capture time,
8253  * typical scenario is as follows:
8254  *
8255  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8256  * | // custom audio/video base capture time, e.g. the first audio/video capture time. | | int64_t
8257  * custom_capture_time_base; | | | |
8258  * int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
8259  * | | | // offset is fixed once calculated in the begining. | | const int64_t offset =
8260  * agora_monotonic_time - custom_capture_time_base; | | | | //
8261  * realtime_custom_audio/video_capture_time is the origin capture time that customer provided.| | //
8262  * actual_audio/video_capture_time is the actual capture time transfered to sdk. | |
8263  * int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
8264  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
8265  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8266  *
8267  * @return
8268  * - >= 0: Success.
8269  * - < 0: Failure.
8270  */
8271 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:4619
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:7835
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:5309
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:4376
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:4767
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2852
agora::rtc::ScreenAudioParameters::captureSignalVolume
int captureSignalVolume
Definition: AgoraBase.h:6458
agora::VideoLayout
Layout information of a specific sub-video stream within the mixed stream.
Definition: AgoraBase.h:8136
agora::rtc::FilterEffectOptions::strength
float strength
Definition: AgoraBase.h:5742
agora::rtc::SimulcastConfig::STREAM_LAYER_1
@ STREAM_LAYER_1
Definition: AgoraBase.h:2266
agora::VideoLayout::channelId
const char * channelId
Definition: AgoraBase.h:8140
agora::rtc::UserInfo
The information of the user.
Definition: AgoraBase.h:7569
agora::rtc::FilterEffectOptions
Filter effect options.
Definition: AgoraBase.h:5718
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:4772
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1606
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:2102
agora::rtc::LastmileProbeResult
Results of the uplink and downlink last-mile network tests.
Definition: AgoraBase.h:5016
agora::rtc::RtcStats::lanAccelerateState
int lanAccelerateState
Definition: AgoraBase.h:2908
agora::rtc::AudioEncodedFrameObserverConfig
Observer settings for the encoded audio.
Definition: AgoraBase.h:6808
agora::rtc::ScreenCaptureParameters
Screen sharing configurations.
Definition: AgoraBase.h:6474
agora::VideoLayout::x
uint32_t x
Definition: AgoraBase.h:8154
agora::rtc::WatermarkRatio
The position and size of the watermark on the screen.
Definition: AgoraBase.h:2376
agora::rtc::AudioVolumeInfo
The volume information of users.
Definition: AgoraBase.h:3973
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
The degree of blurring applied to the custom background image.
Definition: AgoraBase.h:5923
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:5024
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1804
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:7865
agora::rtc::BeautyOptions
Image enhancement options.
Definition: AgoraBase.h:5395
agora::rtc::SenderOptions
Definition: AgoraBase.h:1342
agora::rtc::WatermarkBuffer::height
int height
Definition: AgoraBase.h:2561
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:6528
agora::rtc::EchoTestConfiguration::channelId
const char * channelId
Definition: AgoraBase.h:7544
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:5424
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2761
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:5913
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:4606
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:4006
agora::rtc::LastmileProbeConfig
Configurations of the last-mile network test.
Definition: AgoraBase.h:4947
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:4500
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:6565
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2777
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2837
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:4186
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:3187
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:8073
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:2091
agora::rtc::WatermarkConfig::buffer
WatermarkBuffer buffer
Definition: AgoraBase.h:2599
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:6579
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:5815
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:5301
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5777
agora::rtc::WatermarkConfig::literal
WatermarkLiteral literal
Definition: AgoraBase.h:2611
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:4543
agora::rtc::SimulcastConfig::StreamLayerIndex
StreamLayerIndex
Index of video streams of different quality levels.
Definition: AgoraBase.h:2262
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2872
agora::rtc::SimulcastConfig::STREAM_LAYER_2
@ STREAM_LAYER_2
Definition: AgoraBase.h:2270
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:3179
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:6545
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:6816
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1351
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1585
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:4595
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:7096
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:4190
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:5004
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:5430
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:5848
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:5297
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2745
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2245
agora::rtc::SegmentationProperty::SEG_MODEL_GREEN
@ SEG_MODEL_GREEN
Definition: AgoraBase.h:5998
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1174
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:7903
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:4954
agora::rtc::RecorderStreamInfo::channelId
const char * channelId
Definition: AgoraBase.h:7945
agora::rtc::LocalAccessPointConfiguration
Configuration for the Local Access Point.
Definition: AgoraBase.h:7871
agora::rtc::FilterEffectOptions::path
const char * path
Definition: AgoraBase.h:5736
agora::rtc::SegmentationProperty::SCREEN_COLOR_TYPE
SCREEN_COLOR_TYPE
Screen color type.
Definition: AgoraBase.h:6004
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:4610
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Video noise reduction mode.
Definition: AgoraBase.h:5810
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWIDTH
@ FACE_SHAPE_AREA_NOSEWIDTH
Definition: AgoraBase.h:5580
agora::rtc::LiveTranscoding
Transcoding configurations for Media Push.
Definition: AgoraBase.h:4552
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2749
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:3183
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:2342
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:7876
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:5269
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2857
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:6726
agora::rtc::EncodedVideoFrameInfo
Information about externally encoded video frames.
Definition: AgoraBase.h:1735
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:5867
agora::rtc::MultipathStats::activePathNum
int activePathNum
Definition: AgoraBase.h:2722
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:8078
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:5901
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSMILE
@ FACE_SHAPE_AREA_MOUTHSMILE
Definition: AgoraBase.h:5630
agora::rtc::FaceShapeBeautyOptions::shapeStyle
FACE_SHAPE_BEAUTY_STYLE shapeStyle
Definition: AgoraBase.h:5699
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:5436
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2769
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4730
agora::rtc::WatermarkOptions::zOrder
int zOrder
Definition: AgoraBase.h:2437
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2067
agora::rtc::EncodedAudioFrameInfo
Audio information after encoding.
Definition: AgoraBase.h:1567
agora::util::AutoPtr
Definition: AgoraBase.h:100
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:5000
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:865
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:6558
agora::rtc::IPacketObserver::Packet
Configurations for the Packet instance.
Definition: AgoraBase.h:4037
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:6077
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSELENGTH
@ FACE_SHAPE_AREA_NOSELENGTH
Definition: AgoraBase.h:5574
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:4680
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:7949
agora::rtc::VideoEncoderConfiguration
Video encoder configurations.
Definition: AgoraBase.h:2057
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2354
agora::rtc::SimulcastConfig::StreamLayerConfig::framerate
int framerate
Definition: AgoraBase.h:2312
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:2081
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:7784
agora::util::AList
Definition: AgoraBase.h:233
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2887
agora::rtc::VideoSubscriptionOptions
Video subscription options.
Definition: AgoraBase.h:1705
agora::rtc::TranscodingUser
Transcoding configurations of each host.
Definition: AgoraBase.h:4484
agora::rtc::WatermarkConfig::id
const char * id
Definition: AgoraBase.h:2590
agora::rtc::PathStats
Statistical information about a specific network path.
Definition: AgoraBase.h:2672
agora::rtc::EchoTestConfiguration
The configuration of the audio and video call loop test.
Definition: AgoraBase.h:7511
agora::rtc::RtcImage
Image properties.
Definition: AgoraBase.h:4357
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:4494
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACECONTOUR
@ FACE_SHAPE_AREA_FACECONTOUR
Definition: AgoraBase.h:5490
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:7050
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:7799
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:6732
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:5418
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2388
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:8091
agora::rtc::SimulcastStreamConfig
The configuration of the low-quality video stream.
Definition: AgoraBase.h:2230
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:4666
agora::rtc::WatermarkBuffer::buffer
const uint8_t * buffer
Definition: AgoraBase.h:2576
agora::rtc::FaceShapeAreaOptions::shapeArea
FACE_SHAPE_AREA shapeArea
Definition: AgoraBase.h:5656
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:7090
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:4367
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:5944
agora::rtc::FaceShapeBeautyOptions
The facial enhancement style options.
Definition: AgoraBase.h:5674
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4724
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:4819
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:4388
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACELENGTH
@ FACE_SHAPE_AREA_FACELENGTH
Definition: AgoraBase.h:5496
agora::rtc::WatermarkTimestamp::format
const char * format
Definition: AgoraBase.h:2504
agora::rtc::MixedAudioStream
The source of the audio streams that are mixed locally.
Definition: AgoraBase.h:4863
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:3003
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3989
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:4488
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:5328
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:7723
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:4419
agora::rtc::AdvancedConfigInfo
Advanced options for the Local Access Point.
Definition: AgoraBase.h:7860
agora::rtc::ScreenAudioParameters::channels
int channels
Definition: AgoraBase.h:6454
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2350
agora::rtc::SimulcastConfig::publish_fallback_enable
bool publish_fallback_enable
Definition: AgoraBase.h:2334
agora::rtc::MultipathStats::wifiRxBytes
uint32_t wifiRxBytes
Definition: AgoraBase.h:2710
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:4177
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:4362
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:4043
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1817
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2892
agora::rtc::SimulcastConfig::configs
StreamLayerConfig configs[STREAM_LAYER_COUNT_MAX]
Definition: AgoraBase.h:2325
agora::rtc::WatermarkConfig::imageUrl
const char * imageUrl
Definition: AgoraBase.h:2615
agora::rtc::ColorEnhanceOptions
The color enhancement options.
Definition: AgoraBase.h:5861
agora::rtc::MultipathStats::wifiTxBytes
uint32_t wifiTxBytes
Definition: AgoraBase.h:2706
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:6743
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:859
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2424
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:7907
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:5028
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:4643
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2346
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:4805
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEDISTANCE
@ FACE_SHAPE_AREA_EYEDISTANCE
Definition: AgoraBase.h:5536
agora::rtc::WatermarkConfig::timestamp
WatermarkTimestamp timestamp
Definition: AgoraBase.h:2605
agora::util::IString
Definition: AgoraBase.h:172
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:7899
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:8100
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
The low-light enhancement level.
Definition: AgoraBase.h:5771
agora::rtc::SegmentationProperty::SEG_MODEL_TYPE
SEG_MODEL_TYPE
The type of algorithms to user for background processing.
Definition: AgoraBase.h:5990
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1601
agora::rtc::LocalTranscoderConfiguration
The configuration of the video mixing on the local client.
Definition: AgoraBase.h:4797
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
The contrast level.
Definition: AgoraBase.h:5399
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2382
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:4173
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1710
agora::rtc::RecorderStreamInfo::type
RecorderStreamType type
Definition: AgoraBase.h:7953
agora::rtc::LocalAudioMixerConfiguration::audioInputStreams
MixedAudioStream * audioInputStreams
Definition: AgoraBase.h:4930
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHPOSITION
@ FACE_SHAPE_AREA_MOUTHPOSITION
Definition: AgoraBase.h:5624
agora::rtc::WatermarkConfig::options
WatermarkOptions options
Definition: AgoraBase.h:2621
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:4970
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2817
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:4047
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:4684
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWING
@ FACE_SHAPE_AREA_NOSEWING
Definition: AgoraBase.h:5586
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:4656
agora::rtc::IPacketObserver
Definition: AgoraBase.h:4031
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:4651
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHIN
@ FACE_SHAPE_AREA_CHIN
Definition: AgoraBase.h:5524
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWTHICKNESS
@ FACE_SHAPE_AREA_EYEBROWTHICKNESS
Definition: AgoraBase.h:5650
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2808
agora::VideoLayout::width
uint32_t width
Definition: AgoraBase.h:8164
agora::rtc::VideoFormat
The format of the video frame.
Definition: AgoraBase.h:3166
agora::rtc::AdvanceOptions
Advanced options for video encoding.
Definition: AgoraBase.h:1873
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:4523
agora::rtc::MixedAudioStream::trackId
track_id_t trackId
Definition: AgoraBase.h:4894
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2429
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEKBONE
@ FACE_SHAPE_AREA_CHEEKBONE
Definition: AgoraBase.h:5507
agora::rtc::DataStreamConfig
The configurations for the data stream.
Definition: AgoraBase.h:2185
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1882
agora::rtc::LocalAudioMixerConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4926
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2757
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2847
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:5020
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:2114
agora::rtc::VideoCanvas::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraBase.h:5332
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:7046
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:4568
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1555
agora::rtc::LocalAudioMixerConfiguration
The configurations for mixing the lcoal audio.
Definition: AgoraBase.h:4922
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1782
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2793
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2765
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1561
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:8131
agora::rtc::CodecCapLevels::hwDecodingLevel
VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel
Definition: AgoraBase.h:2004
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2785
agora::VideoLayout::height
uint32_t height
Definition: AgoraBase.h:8168
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3980
agora::rtc::WatermarkLiteral
The definition of the WatermarkLiteral struct.
Definition: AgoraBase.h:2515
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:5403
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:4575
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_FEMALE
@ FACE_SHAPE_BEAUTY_STYLE_FEMALE
Definition: AgoraBase.h:5684
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3918
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3932
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE
FACE_SHAPE_BEAUTY_STYLE
The facial enhancement style options.
Definition: AgoraBase.h:5680
agora::rtc::SegmentationProperty::SCREEN_COLOR_BLUE
@ SCREEN_COLOR_BLUE
Definition: AgoraBase.h:6016
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEK
@ FACE_SHAPE_AREA_CHEEK
Definition: AgoraBase.h:5512
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSCALE
@ FACE_SHAPE_AREA_MOUTHSCALE
Definition: AgoraBase.h:5618
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:4504
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_MALE
@ FACE_SHAPE_BEAUTY_STYLE_MALE
Definition: AgoraBase.h:5688
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:6571
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACEWIDTH
@ FACE_SHAPE_AREA_FACEWIDTH
Definition: AgoraBase.h:5501
agora::base::AParameter
Definition: AgoraBase.h:8027
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:5442
agora::rtc::MultipathStats::lanTxBytes
uint32_t lanTxBytes
Definition: AgoraBase.h:2698
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:7290
agora::util::AOutputIterator
Definition: AgoraBase.h:202
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2419
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:6825
agora::rtc::WatermarkBuffer::length
int length
Definition: AgoraBase.h:2565
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1786
agora::rtc::WatermarkTimestamp::fontSize
int fontSize
Definition: AgoraBase.h:2485
agora::rtc::ScreenAudioParameters
The audio configuration for the shared screen stream.
Definition: AgoraBase.h:6446
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:3914
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:7739
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:5008
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1813
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1796
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:4625
agora::rtc::SimulcastConfig::StreamLayerConfig
Configures the parameters of a specific layer in multi-quality video streams.
Definition: AgoraBase.h:2304
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3926
agora::rtc::DeviceInfo::isLowLatencyAudioSupported
bool isLowLatencyAudioSupported
Definition: AgoraBase.h:4023
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:4632
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:4661
agora::rtc::ChannelMediaRelayConfiguration
Configuration of cross channel media relay.
Definition: AgoraBase.h:7059
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:5974
agora::rtc::MultipathStats::pathStats
const PathStats * pathStats
Definition: AgoraBase.h:2726
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:7573
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2204
agora::rtc::LiveStreamAdvancedFeature
The configuration for advanced features of the RTMP or RTMPS streaming with transcoding.
Definition: AgoraBase.h:4406
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:5958
agora::rtc::LastmileProbeOneWayResult
Results of the uplink or downlink last-mile network test.
Definition: AgoraBase.h:4996
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEGENERAL
@ FACE_SHAPE_AREA_NOSEGENERAL
Definition: AgoraBase.h:5611
agora::rtc::VideoDenoiserOptions
Video noise reduction options.
Definition: AgoraBase.h:5806
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2395
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5830
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:5315
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1633
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:2071
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2358
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1637
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2433
agora::rtc::MixedAudioStream::channelId
const char * channelId
Definition: AgoraBase.h:4887
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1589
agora::UserInfo
The information of the user.
Definition: AgoraBase.h:855
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2897
agora::rtc::VirtualBackgroundSource
The custom background.
Definition: AgoraBase.h:5891
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPUPILS
@ FACE_SHAPE_AREA_EYEPUPILS
Definition: AgoraBase.h:5555
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:5793
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:5280
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:4737
agora::rtc::ScreenCaptureParameters::audioParams
ScreenAudioParameters audioParams
Definition: AgoraBase.h:6491
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:6812
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:7303
agora::rtc::ScreenCaptureParameters::captureAudio
bool captureAudio
Definition: AgoraBase.h:6485
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:5909
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:4638
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:4000
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSETIP
@ FACE_SHAPE_AREA_NOSETIP
Definition: AgoraBase.h:5604
agora::rtc::ChannelMediaInfo
Channel media information.
Definition: AgoraBase.h:7038
agora::rtc::WatermarkLiteral::wmLiteral
const char * wmLiteral
Definition: AgoraBase.h:2530
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:871
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:5766
agora::VideoLayout::y
uint32_t y
Definition: AgoraBase.h:8160
agora::rtc::WatermarkLiteral::fontSize
int fontSize
Definition: AgoraBase.h:2520
agora::rtc::LocalAudioStats::aecEstimatedDelay
int aecEstimatedDelay
Definition: AgoraBase.h:4203
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:5289
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:8085
agora::rtc::LocalAudioStats::earMonitorDelay
int earMonitorDelay
Definition: AgoraBase.h:4198
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA
FACE_SHAPE_AREA
Chooses the specific facial areas that need to be adjusted.
Definition: AgoraBase.h:5471
agora::rtc::MultipathStats::lanRxBytes
uint32_t lanRxBytes
Definition: AgoraBase.h:2702
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3936
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2773
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1597
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1821
agora::rtc::SimulcastConfig::STREAM_LAYER_6
@ STREAM_LAYER_6
Definition: AgoraBase.h:2286
agora::rtc::MultipathStats::mobileRxBytes
uint32_t mobileRxBytes
Definition: AgoraBase.h:2718
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEINNERCORNER
@ FACE_SHAPE_AREA_EYEINNERCORNER
Definition: AgoraBase.h:5562
agora::rtc::LocalAudioStats::audioPlayoutDelay
int audioPlayoutDelay
Definition: AgoraBase.h:4194
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:8114
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3940
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_LOWEREYELID
@ FACE_SHAPE_AREA_LOWEREYELID
Definition: AgoraBase.h:5549
agora::rtc::AdvanceOptions::encodeAlpha
bool encodeAlpha
Definition: AgoraBase.h:1889
agora::VideoLayout::strUid
user_id_t strUid
Definition: AgoraBase.h:8148
agora::rtc::LogUploadServerInfo
Configuration information for the log server.
Definition: AgoraBase.h:7831
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Video noise reduction level.
Definition: AgoraBase.h:5824
agora::rtc::AudioTrackConfig::enableAudioProcessing
bool enableAudioProcessing
Definition: AgoraBase.h:6085
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:5305
agora::rtc::CodecCapInfo
The codec capability of the SDK.
Definition: AgoraBase.h:2019
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:6522
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:6767
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2882
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:4676
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:4380
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2235
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1800
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:4960
agora::rtc::SegmentationProperty::modelType
SEG_MODEL_TYPE modelType
Definition: AgoraBase.h:6022
agora::rtc::MultipathStats
Aggregates statistics of each network path in multipath transmission.
Definition: AgoraBase.h:2694
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2801
agora::rtc::EchoTestConfiguration::intervalInSeconds
int intervalInSeconds
Definition: AgoraBase.h:7552
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4801
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:5411
agora::base::LicenseCallback
Definition: AgoraBase.h:8041
agora::rtc::EncryptionConfig
Built-in encryption configurations.
Definition: AgoraBase.h:7285
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:4601
agora::rtc::SimulcastConfig::STREAM_LOW
@ STREAM_LOW
Definition: AgoraBase.h:2290
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
The custom background.
Definition: AgoraBase.h:5895
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:7732
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:5285
agora::rtc::LocalAccessPointConfiguration::disableAut
bool disableAut
Definition: AgoraBase.h:7913
agora::rtc::ScreenAudioParameters::sampleRate
int sampleRate
Definition: AgoraBase.h:6450
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:6516
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1170
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:4747
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:4590
agora::rtc::TranscodingVideoStream
The video streams for local video mixing.
Definition: AgoraBase.h:4720
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:5967
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:7839
agora::rtc::EncryptionConfig::datastreamEncryptionEnabled
bool datastreamEncryptionEnabled
Definition: AgoraBase.h:7310
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYESCALE
@ FACE_SHAPE_AREA_EYESCALE
Definition: AgoraBase.h:5529
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHLIP
@ FACE_SHAPE_AREA_MOUTHLIP
Definition: AgoraBase.h:5637
agora::rtc::SimulcastConfig::STREAM_LAYER_5
@ STREAM_LAYER_5
Definition: AgoraBase.h:2282
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEBRIDGE
@ FACE_SHAPE_AREA_NOSEBRIDGE
Definition: AgoraBase.h:5598
agora::rtc::SegmentationProperty::SCREEN_COLOR_AUTO
@ SCREEN_COLOR_AUTO
Definition: AgoraBase.h:6008
agora::VideoLayout::videoState
uint32_t videoState
Definition: AgoraBase.h:8176
agora::rtc::MixedAudioStream::sourceType
AUDIO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4867
agora::rtc::WatermarkConfig
Used to configure watermark-related information.
Definition: AgoraBase.h:2586
agora::rtc::EchoTestConfiguration::view
view_t view
Definition: AgoraBase.h:7516
agora::rtc::RtcStats
Statistics of a call session.
Definition: AgoraBase.h:2741
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1717
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:5917
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2414
agora::rtc::LowlightEnhanceOptions
The low-light enhancement options.
Definition: AgoraBase.h:5752
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:4517
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:4560
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1611
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2753
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2789
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:5843
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2781
agora::rtc::SegmentationProperty::greenCapacity
float greenCapacity
Definition: AgoraBase.h:6032
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:4169
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:7769
agora::rtc::SimulcastConfig::STREAM_LAYER_COUNT_MAX
@ STREAM_LAYER_COUNT_MAX
Definition: AgoraBase.h:2294
agora::rtc::WatermarkOptions
Watermark image configurations.
Definition: AgoraBase.h:2408
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:2109
agora::rtc::LocalAudioStats
Local audio statistics.
Definition: AgoraBase.h:4165
agora::rtc::RecorderStreamInfo
The information about the media streams to be recorded.
Definition: AgoraBase.h:7941
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:7843
agora::rtc::SimulcastConfig
Configure video streams of different quality levels.
Definition: AgoraBase.h:2258
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:6536
agora::rtc::MixedAudioStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4873
agora::rtc::WatermarkBuffer::width
int width
Definition: AgoraBase.h:2557
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:4372
agora::rtc::FocalLengthInfo::focalLengthType
CAMERA_FOCAL_LENGTH_TYPE focalLengthType
Definition: AgoraBase.h:2051
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1547
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2832
agora::rtc::EchoTestConfiguration::enableVideo
bool enableVideo
Definition: AgoraBase.h:7530
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2827
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:4965
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:3910
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPOSITION
@ FACE_SHAPE_AREA_EYEPOSITION
Definition: AgoraBase.h:5543
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:1877
agora::rtc::SegmentationProperty::screenColorType
SCREEN_COLOR_TYPE screenColorType
Definition: AgoraBase.h:6037
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3922
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:5782
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2862
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:2031
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:4689
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:2027
agora::rtc::AudioRecordingConfiguration
Recording configurations.
Definition: AgoraBase.h:6720
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:8065
agora::rtc::WatermarkTimestamp::strokeWidth
int strokeWidth
Definition: AgoraBase.h:2496
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
The low-light enhancement mode.
Definition: AgoraBase.h:5756
agora::util::IContainer
Definition: AgoraBase.h:193
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:5938
agora::rtc::LocalAudioMixerConfiguration::syncWithLocalMic
bool syncWithLocalMic
Definition: AgoraBase.h:4939
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MANDIBLE
@ FACE_SHAPE_AREA_MANDIBLE
Definition: AgoraBase.h:5518
agora::rtc::VideoDimensions
The video dimension.
Definition: AgoraBase.h:1166
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:5928
agora::rtc::SegmentationProperty::SEG_MODEL_AI
@ SEG_MODEL_AI
Definition: AgoraBase.h:5994
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_NATURAL
@ FACE_SHAPE_BEAUTY_STYLE_NATURAL
Definition: AgoraBase.h:5693
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:7754
agora::rtc::FaceShapeAreaOptions::shapeIntensity
int shapeIntensity
Definition: AgoraBase.h:5662
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:4760
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2196
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:5788
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:4614
agora::rtc::WatermarkBuffer
Configures the format, size, and pixel buffer of the watermark image.
Definition: AgoraBase.h:2552
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FOREHEAD
@ FACE_SHAPE_AREA_FOREHEAD
Definition: AgoraBase.h:5485
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::WatermarkTimestamp
The definition of the WatermarkTimestamp struct.
Definition: AgoraBase.h:2481
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:2023
agora::rtc::AudioTrackConfig
The configuration of custom audio tracks.
Definition: AgoraBase.h:6071
agora::rtc::FocalLengthInfo::cameraDirection
int cameraDirection
Definition: AgoraBase.h:2047
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:7881
agora::rtc::SimulcastConfig::STREAM_LAYER_4
@ STREAM_LAYER_4
Definition: AgoraBase.h:2278
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:4756
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:4779
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:2241
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:4394
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEOUTERCORNER
@ FACE_SHAPE_AREA_EYEOUTERCORNER
Definition: AgoraBase.h:5569
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4742
agora::rtc::VideoCanvas::subviewUid
uid_t subviewUid
Definition: AgoraBase.h:5274
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:7296
agora::rtc::MultipathStats::mobileTxBytes
uint32_t mobileTxBytes
Definition: AgoraBase.h:2714
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1808
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:5933
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:6552
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:7889
agora::rtc::SimulcastConfig::STREAM_LAYER_3
@ STREAM_LAYER_3
Definition: AgoraBase.h:2274
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:1625
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3895
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:4810
agora::rtc::EchoTestConfiguration::enableAudio
bool enableAudio
Definition: AgoraBase.h:7523
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_HEADSCALE
@ FACE_SHAPE_AREA_HEADSCALE
Definition: AgoraBase.h:5480
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1346
agora::rtc::SimulcastConfig::StreamLayerConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2308
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:5905
agora::rtc::CodecCapLevels::swDecodingLevel
VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel
Definition: AgoraBase.h:2009
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1641
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:5762
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2877
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NONE
@ FACE_SHAPE_AREA_NONE
Definition: AgoraBase.h:5475
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:4581
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2902
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2797
agora::rtc::FaceShapeAreaOptions
Filter effect options.
Definition: AgoraBase.h:5465
agora::rtc::CodecCapLevels
The level of the codec capability.
Definition: AgoraBase.h:1999
agora::SpatialAudioParams
The spatial audio parameters.
Definition: AgoraBase.h:8055
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:5880
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:5838
agora::rtc::SegmentationProperty::SCREEN_COLOR_GREEN
@ SCREEN_COLOR_GREEN
Definition: AgoraBase.h:6012
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:2061
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:5032
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:4752
agora::rtc::PathStats::rxKBitRate
int rxKBitRate
Definition: AgoraBase.h:2684
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEROOT
@ FACE_SHAPE_AREA_NOSEROOT
Definition: AgoraBase.h:5592
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2867
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:5407
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:7073
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:2095
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWPOSITION
@ FACE_SHAPE_AREA_EYEBROWPOSITION
Definition: AgoraBase.h:5644
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:4426
agora::rtc::WatermarkBuffer::format
media::base::VIDEO_PIXEL_FORMAT format
Definition: AgoraBase.h:2571
agora::rtc::FocalLengthInfo
Focal length information supported by the camera, including the camera direction and focal length typ...
Definition: AgoraBase.h:2043
agora::rtc::EchoTestConfiguration::token
const char * token
Definition: AgoraBase.h:7538
agora::rtc::DeviceInfo
The audio device information.
Definition: AgoraBase.h:4017
agora::base::IEngineBase
Definition: AgoraBase.h:8021
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1412
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:6752
agora::util::IIterator
Definition: AgoraBase.h:184
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:7577
agora::rtc::VideoRenderingTracingInfo
Indicators during video frame rendering progress.
Definition: AgoraBase.h:7717
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:7849
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:5819
agora::rtc::WatermarkTimestamp::fontFilePath
const char * fontFilePath
Definition: AgoraBase.h:2492
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1593
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1790
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2842
agora::rtc::FaceShapeBeautyOptions::styleIntensity
int styleIntensity
Definition: AgoraBase.h:5706
agora::rtc::WatermarkLiteral::fontFilePath
const char * fontFilePath
Definition: AgoraBase.h:2537
agora::VideoLayout::uid
rtc::uid_t uid
Definition: AgoraBase.h:8144
agora::rtc::WatermarkConfig::type
WATERMARK_SOURCE_TYPE type
Definition: AgoraBase.h:2594
agora::rtc::PathStats::txKBitRate
int txKBitRate
Definition: AgoraBase.h:2680
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:7894
agora::rtc::PathStats::type
MultipathType type
Definition: AgoraBase.h:2676
agora::rtc::ClientRoleOptions
Setting of user role properties.
Definition: AgoraBase.h:2998
agora::rtc::WatermarkLiteral::strokeWidth
int strokeWidth
Definition: AgoraBase.h:2524
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:4508
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:5265
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:4181
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:6747
agora::rtc::SegmentationProperty
Processing properties for background images.
Definition: AgoraBase.h:5986
agora::rtc::SimulcastConfig::StreamLayerConfig::enable
bool enable
Definition: AgoraBase.h:2318
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:7042