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
703  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
704  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
705 
707  // RDT error code: 250~270
712  ERR_RDT_USER_NOT_EXIST = 250,
717  ERR_RDT_USER_NOT_READY = 251,
722  ERR_RDT_DATA_BLOCKED = 252,
727  ERR_RDT_CMD_EXCEED_LIMIT = 253,
732  ERR_RDT_DATA_EXCEED_LIMIT = 254,
737  ERR_RDT_ENCRYPTION = 255,
739 
741  // signaling: 400~600
742  ERR_LOGIN_ALREADY_LOGIN = 428,
743 
745  // 1001~2000
749  ERR_LOAD_MEDIA_ENGINE = 1001,
754  ERR_ADM_GENERAL_ERROR = 1005,
759  ERR_ADM_INIT_PLAYOUT = 1008,
763  ERR_ADM_START_PLAYOUT = 1009,
767  ERR_ADM_STOP_PLAYOUT = 1010,
772  ERR_ADM_INIT_RECORDING = 1011,
776  ERR_ADM_START_RECORDING = 1012,
780  ERR_ADM_STOP_RECORDING = 1013,
785  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
786 };
787 
788 enum LICENSE_ERROR_TYPE {
792  LICENSE_ERR_INVALID = 1,
796  LICENSE_ERR_EXPIRE = 2,
800  LICENSE_ERR_MINUTES_EXCEED = 3,
804  LICENSE_ERR_LIMITED_PERIOD = 4,
808  LICENSE_ERR_DIFF_DEVICES = 5,
812  LICENSE_ERR_INTERNAL = 99,
813 };
814 
818 enum AUDIO_SESSION_OPERATION_RESTRICTION {
822  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
826  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
830  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
835  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
840  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
841 };
842 
843 typedef const char* user_id_t;
844 typedef void* view_t;
845 
849 struct UserInfo {
859  bool hasAudio;
865  bool hasVideo;
866 
867  UserInfo() : hasAudio(false), hasVideo(false) {}
868 };
869 
870 typedef util::AList<UserInfo> UserList;
871 
872 // Shared between Agora Service and Rtc Engine
873 namespace rtc {
874 
878 enum USER_OFFLINE_REASON_TYPE {
882  USER_OFFLINE_QUIT = 0,
889  USER_OFFLINE_DROPPED = 1,
893  USER_OFFLINE_BECOME_AUDIENCE = 2,
894 };
895 
899 enum INTERFACE_ID_TYPE {
903  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
907  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
911  AGORA_IID_PARAMETER_ENGINE = 3,
915  AGORA_IID_MEDIA_ENGINE = 4,
916  AGORA_IID_AUDIO_ENGINE = 5,
917  AGORA_IID_VIDEO_ENGINE = 6,
918  AGORA_IID_RTC_CONNECTION = 7,
922  AGORA_IID_SIGNALING_ENGINE = 8,
923  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
924  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
925  AGORA_IID_STATE_SYNC = 13,
926  AGORA_IID_META_SERVICE = 14,
927  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
928  AGORA_IID_H265_TRANSCODER = 16,
929 };
930 
934 enum QUALITY_TYPE {
939  QUALITY_UNKNOWN __deprecated = 0,
943  QUALITY_EXCELLENT = 1,
947  QUALITY_GOOD = 2,
951  QUALITY_POOR = 3,
955  QUALITY_BAD = 4,
959  QUALITY_VBAD = 5,
963  QUALITY_DOWN = 6,
967  QUALITY_UNSUPPORTED = 7,
971  QUALITY_DETECTING = 8,
972 };
973 
977 enum FIT_MODE_TYPE {
982  MODE_COVER = 1,
983 
989  MODE_CONTAIN = 2,
990 };
991 
995 enum VIDEO_ORIENTATION {
999  VIDEO_ORIENTATION_0 = 0,
1003  VIDEO_ORIENTATION_90 = 90,
1007  VIDEO_ORIENTATION_180 = 180,
1011  VIDEO_ORIENTATION_270 = 270
1012 };
1013 
1017 enum FRAME_RATE {
1021  FRAME_RATE_FPS_1 = 1,
1025  FRAME_RATE_FPS_7 = 7,
1029  FRAME_RATE_FPS_10 = 10,
1033  FRAME_RATE_FPS_15 = 15,
1037  FRAME_RATE_FPS_24 = 24,
1041  FRAME_RATE_FPS_30 = 30,
1046  FRAME_RATE_FPS_60 = 60,
1047 };
1048 
1049 enum FRAME_WIDTH {
1050  FRAME_WIDTH_960 = 960,
1051 };
1052 
1053 enum FRAME_HEIGHT {
1054  FRAME_HEIGHT_540 = 540,
1055 };
1056 
1060 enum VIDEO_FRAME_TYPE {
1064  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1068  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1072  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1076  VIDEO_FRAME_TYPE_B_FRAME = 5,
1080  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1084  VIDEO_FRAME_TYPE_UNKNOW
1085 };
1086 
1090 enum ORIENTATION_MODE {
1098  ORIENTATION_MODE_ADAPTIVE = 0,
1105  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1111  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1112 };
1113 
1117 enum DEGRADATION_PREFERENCE {
1123  MAINTAIN_AUTO = -1,
1129  MAINTAIN_QUALITY = 0,
1135  MAINTAIN_FRAMERATE = 1,
1144  MAINTAIN_BALANCED = 2,
1150  MAINTAIN_RESOLUTION = 3,
1154  DISABLED = 100,
1155 };
1156 
1164  int width;
1168  int height;
1169  VideoDimensions() : width(640), height(480) {}
1170  VideoDimensions(int w, int h) : width(w), height(h) {}
1171  bool operator==(const VideoDimensions& rhs) const {
1172  return width == rhs.width && height == rhs.height;
1173  }
1174 };
1175 
1181 const int STANDARD_BITRATE = 0;
1182 
1190 const int COMPATIBLE_BITRATE = -1;
1191 
1195 const int DEFAULT_MIN_BITRATE = -1;
1196 
1200 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1201 
1205 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1209  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1213  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1217  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1218 };
1219 
1223 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1228  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1232  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1236  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1240  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1244  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1245 };
1246 
1250 enum VIDEO_CODEC_TYPE {
1255  VIDEO_CODEC_NONE = 0,
1259  VIDEO_CODEC_VP8 = 1,
1263  VIDEO_CODEC_H264 = 2,
1267  VIDEO_CODEC_H265 = 3,
1273  VIDEO_CODEC_GENERIC = 6,
1278  VIDEO_CODEC_GENERIC_H264 = 7,
1283  VIDEO_CODEC_AV1 = 12,
1287  VIDEO_CODEC_VP9 = 13,
1291  VIDEO_CODEC_GENERIC_JPEG = 20,
1292 };
1293 
1300 enum CAMERA_FOCAL_LENGTH_TYPE {
1304  CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1308  CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1312  CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1316  CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1317 };
1318 
1322 enum TCcMode {
1326  CC_ENABLED,
1330  CC_DISABLED,
1331 };
1332 
1340  TCcMode ccMode;
1345  VIDEO_CODEC_TYPE codecType;
1346 
1407 
1408  SenderOptions() : ccMode(CC_ENABLED), codecType(VIDEO_CODEC_H265), targetBitrate(6500) {}
1409 };
1410 
1414 enum AUDIO_CODEC_TYPE {
1418  AUDIO_CODEC_OPUS = 1,
1419  // kIsac = 2,
1423  AUDIO_CODEC_PCMA = 3,
1427  AUDIO_CODEC_PCMU = 4,
1431  AUDIO_CODEC_G722 = 5,
1432  // kIlbc = 6,
1434  // AUDIO_CODEC_AAC = 7,
1438  AUDIO_CODEC_AACLC = 8,
1442  AUDIO_CODEC_HEAAC = 9,
1446  AUDIO_CODEC_JC1 = 10,
1450  AUDIO_CODEC_HEAAC2 = 11,
1454  AUDIO_CODEC_LPCNET = 12,
1458  AUDIO_CODEC_OPUSMC = 13,
1459 };
1460 
1464 enum AUDIO_ENCODING_TYPE {
1469  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1474  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1479  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1484  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1489  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1494  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1499  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1504  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1509  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1514  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1519  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1520 };
1521 
1525 enum WATERMARK_FIT_MODE {
1530  FIT_MODE_COVER_POSITION = 0,
1535  FIT_MODE_USE_IMAGE_RATIO = 1,
1536 };
1537 
1543 
1549  bool speech;
1556 };
1557 
1563  : codec(AUDIO_CODEC_AACLC),
1564  sampleRateHz(0),
1565  samplesPerChannel(0),
1566  numberOfChannels(0),
1567  captureTimeMs(0) {}
1568 
1570  : codec(rhs.codec),
1579  AUDIO_CODEC_TYPE codec;
1596 
1600  int64_t captureTimeMs;
1601 };
1607  : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1608 
1611  channelNum(rhs.channelNum),
1612  samplesOut(rhs.samplesOut),
1614  ntpTimeMs(rhs.ntpTimeMs) {}
1615 
1620 
1621  int16_t channelNum;
1622 
1623  // Output
1627  size_t samplesOut;
1631  int64_t elapsedTimeMs;
1635  int64_t ntpTimeMs;
1636 };
1640 enum H264PacketizeMode {
1644  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1648  SingleNalUnit, // Mode 0 - only single NALU allowed
1649 };
1650 
1654 enum VIDEO_STREAM_TYPE {
1658  VIDEO_STREAM_HIGH = 0,
1662  VIDEO_STREAM_LOW = 1,
1667  VIDEO_STREAM_LAYER_1 = 4,
1672  VIDEO_STREAM_LAYER_2 = 5,
1677  VIDEO_STREAM_LAYER_3 = 6,
1682  VIDEO_STREAM_LAYER_4 = 7,
1687  VIDEO_STREAM_LAYER_5 = 8,
1692  VIDEO_STREAM_LAYER_6 = 9,
1693 
1694 };
1695 
1712 
1714 };
1715 
1719 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1723  MAX_USER_ACCOUNT_LENGTH = 256
1724 };
1725 
1731  : codecType(VIDEO_CODEC_H264),
1732  width(0),
1733  height(0),
1734  framesPerSecond(0),
1735  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1736  rotation(VIDEO_ORIENTATION_0),
1737  trackId(0),
1738  captureTimeMs(0),
1739  decodeTimeMs(0),
1740  streamType(VIDEO_STREAM_HIGH),
1741  presentationMs(-1) {}
1742 
1744  : codecType(rhs.codecType),
1745  width(rhs.width),
1746  height(rhs.height),
1748  frameType(rhs.frameType),
1749  rotation(rhs.rotation),
1750  trackId(rhs.trackId),
1753  streamType(rhs.streamType),
1754  presentationMs(rhs.presentationMs) {}
1755 
1756  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1757  if (this == &rhs) return *this;
1758  codecType = rhs.codecType;
1759  width = rhs.width;
1760  height = rhs.height;
1762  frameType = rhs.frameType;
1763  rotation = rhs.rotation;
1764  trackId = rhs.trackId;
1766  decodeTimeMs = rhs.decodeTimeMs;
1767  streamType = rhs.streamType;
1768  presentationMs = rhs.presentationMs;
1769  return *this;
1770  }
1771 
1776  VIDEO_CODEC_TYPE codecType;
1780  int width;
1784  int height;
1794  VIDEO_FRAME_TYPE frameType;
1798  VIDEO_ORIENTATION rotation;
1802  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1803  // and additional payload for later implementation.
1807  int64_t captureTimeMs;
1811  int64_t decodeTimeMs;
1815  VIDEO_STREAM_TYPE streamType;
1816 
1817  // @technical preview
1818  int64_t presentationMs;
1819 };
1820 
1824 enum COMPRESSION_PREFERENCE {
1829  PREFER_COMPRESSION_AUTO = -1,
1834  PREFER_LOW_LATENCY = 0,
1839  PREFER_QUALITY = 1,
1840 };
1841 
1845 enum ENCODING_PREFERENCE {
1850  PREFER_AUTO = -1,
1854  PREFER_SOFTWARE = 0,
1861  PREFER_HARDWARE = 1,
1862 };
1863 
1871  ENCODING_PREFERENCE encodingPreference;
1872 
1876  COMPRESSION_PREFERENCE compressionPreference;
1877 
1884 
1885  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1886  compressionPreference(PREFER_COMPRESSION_AUTO),
1887  encodeAlpha(false) {}
1888 
1889  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1890  COMPRESSION_PREFERENCE compression_preference,
1891  bool encode_alpha) :
1892  encodingPreference(encoding_preference),
1893  compressionPreference(compression_preference),
1894  encodeAlpha(encode_alpha) {}
1895 
1896  bool operator==(const AdvanceOptions& rhs) const {
1897  return encodingPreference == rhs.encodingPreference &&
1898  compressionPreference == rhs.compressionPreference &&
1899  encodeAlpha == rhs.encodeAlpha;
1900  }
1901 };
1902 
1906 enum VIDEO_MIRROR_MODE_TYPE {
1913  VIDEO_MIRROR_MODE_AUTO = 0,
1917  VIDEO_MIRROR_MODE_ENABLED = 1,
1921  VIDEO_MIRROR_MODE_DISABLED = 2,
1922 };
1923 
1924 #if defined(__APPLE__) && TARGET_OS_IOS
1925 
1928 enum CAMERA_FORMAT_TYPE {
1930  CAMERA_FORMAT_NV12,
1932  CAMERA_FORMAT_BGRA,
1933 };
1934 #endif
1935 
1936 enum VIDEO_MODULE_TYPE {
1938  VIDEO_MODULE_CAPTURER = 0,
1940  VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1942  VIDEO_MODULE_HARDWARE_ENCODER = 2,
1944  VIDEO_MODULE_SOFTWARE_DECODER = 3,
1946  VIDEO_MODULE_HARDWARE_DECODER = 4,
1948  VIDEO_MODULE_RENDERER = 5,
1949 };
1950 
1951 enum HDR_CAPABILITY {
1953  HDR_CAPABILITY_UNKNOWN = -1,
1955  HDR_CAPABILITY_UNSUPPORTED = 0,
1957  HDR_CAPABILITY_SUPPORTED = 1,
1958 };
1959 
1963 enum CODEC_CAP_MASK {
1967  CODEC_CAP_MASK_NONE = 0,
1968 
1972  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1973 
1977  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1978 
1982  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1983 
1987  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1988 };
1989 
1998  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
2003  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
2004 
2005  CodecCapLevels()
2006  : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
2007  swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
2008 };
2009 
2017  VIDEO_CODEC_TYPE codecType;
2026 
2027  CodecCapInfo() : codecType(VIDEO_CODEC_NONE), codecCapMask(0) {}
2028 };
2029 
2045  CAMERA_FOCAL_LENGTH_TYPE focalLengthType;
2046 };
2047 
2055  VIDEO_CODEC_TYPE codecType;
2075  int bitrate;
2076 
2089  ORIENTATION_MODE orientationMode;
2096  DEGRADATION_PREFERENCE degradationPreference;
2097 
2103  VIDEO_MIRROR_MODE_TYPE mirrorMode;
2104 
2109 
2110  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2111  : codecType(VIDEO_CODEC_NONE),
2112  dimensions(d),
2113  frameRate(f),
2114  bitrate(b),
2115  minBitrate(DEFAULT_MIN_BITRATE),
2116  orientationMode(m),
2117  degradationPreference(MAINTAIN_AUTO),
2118  mirrorMode(mirror),
2119  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2120  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2121  : codecType(VIDEO_CODEC_NONE),
2122  dimensions(width, height),
2123  frameRate(f),
2124  bitrate(b),
2125  minBitrate(DEFAULT_MIN_BITRATE),
2126  orientationMode(m),
2127  degradationPreference(MAINTAIN_AUTO),
2128  mirrorMode(mirror),
2129  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2130  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
2131  : codecType(config.codecType),
2132  dimensions(config.dimensions),
2133  frameRate(config.frameRate),
2134  bitrate(config.bitrate),
2135  minBitrate(config.minBitrate),
2138  mirrorMode(config.mirrorMode),
2139  advanceOptions(config.advanceOptions) {}
2140  VideoEncoderConfiguration()
2141  : codecType(VIDEO_CODEC_NONE),
2142  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2143  frameRate(FRAME_RATE_FPS_15),
2144  bitrate(STANDARD_BITRATE),
2145  minBitrate(DEFAULT_MIN_BITRATE),
2146  orientationMode(ORIENTATION_MODE_ADAPTIVE),
2147  degradationPreference(MAINTAIN_AUTO),
2148  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
2149  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2150 
2151  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
2152  if (this == &rhs) return *this;
2153  codecType = rhs.codecType;
2154  dimensions = rhs.dimensions;
2155  frameRate = rhs.frameRate;
2156  bitrate = rhs.bitrate;
2157  minBitrate = rhs.minBitrate;
2158  orientationMode = rhs.orientationMode;
2159  degradationPreference = rhs.degradationPreference;
2160  mirrorMode = rhs.mirrorMode;
2161  advanceOptions = rhs.advanceOptions;
2162  return *this;
2163  }
2164 };
2165 
2198  bool ordered;
2199 };
2200 
2204 enum SIMULCAST_STREAM_MODE {
2210  AUTO_SIMULCAST_STREAM = -1,
2214  DISABLE_SIMULCAST_STREAM = 0,
2218  ENABLE_SIMULCAST_STREAM = 1,
2219 };
2220 
2240  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
2242  bool operator==(const SimulcastStreamConfig& rhs) const {
2243  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
2244  }
2245 };
2246 
2289  };
2312  bool enable;
2313  StreamLayerConfig() : dimensions(0, 0), framerate(0), enable(false) {}
2314  };
2315 
2329 
2331 };
2336 struct Rectangle {
2340  int x;
2344  int y;
2348  int width;
2352  int height;
2353 
2354  Rectangle() : x(0), y(0), width(0), height(0) {}
2355  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2356 };
2357 
2376  float xRatio;
2382  float yRatio;
2389  float widthRatio;
2390 
2391  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2392  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2393 };
2394 
2427  WATERMARK_FIT_MODE mode;
2431  int zOrder;
2432 
2434  : visibleInPreview(true),
2435  positionInLandscapeMode(0, 0, 0, 0),
2436  positionInPortraitMode(0, 0, 0, 0),
2437  mode(FIT_MODE_COVER_POSITION),
2438  zOrder(0) {}
2439 };
2440 
2446 enum WATERMARK_SOURCE_TYPE {
2450  IMAGE = 0,
2454  BUFFER = 1,
2460  LITERAL = 2,
2466  TIMESTAMPS = 3,
2467 };
2468 
2486  const char* fontFilePath;
2498  const char* format;
2499 
2500  WatermarkTimestamp() : fontSize(10), fontFilePath(NULL), strokeWidth(1), format(NULL) {}
2501 };
2502 
2510 
2524  const char* wmLiteral;
2531  const char* fontFilePath;
2532 
2533  WatermarkLiteral() : wmLiteral(NULL), fontFilePath(NULL), fontSize(10), strokeWidth(1) {}
2534 };
2535 
2547 
2551  int width;
2555  int height;
2559  int length;
2565  media::base::VIDEO_PIXEL_FORMAT format;
2566 
2570  const uint8_t* buffer;
2571 
2572  WatermarkBuffer() : buffer(NULL), width(0), height(0), length(0), format(media::base::VIDEO_PIXEL_I420) {}
2573 };
2574 
2584  const char* id;
2588  WATERMARK_SOURCE_TYPE type;
2589  union {
2609  const char* imageUrl;
2610  };
2611 
2616 
2617  WatermarkConfig() : id(NULL), type(IMAGE), imageUrl(NULL) {}
2618 };
2619 
2625 enum MultipathMode {
2629  Duplicate= 0,
2634  Dynamic
2635 };
2636 
2642 enum MultipathType {
2646  LAN = 0,
2650  WIFI,
2654  Mobile,
2658  Unknown = 99
2659 };
2660 
2666 struct PathStats {
2670  MultipathType type;
2679  PathStats() : type(Unknown), txKBitRate(0), rxKBitRate(0) {}
2680  PathStats(MultipathType t, int tx, int rx) : type(t), txKBitRate(tx), rxKBitRate(rx) {}
2681 };
2682 
2692  uint32_t lanTxBytes;
2696  uint32_t lanRxBytes;
2700  uint32_t wifiTxBytes;
2704  uint32_t wifiRxBytes;
2708  uint32_t mobileTxBytes;
2712  uint32_t mobileRxBytes;
2721  MultipathStats()
2722  : lanTxBytes(0),
2723  lanRxBytes(0),
2724  wifiTxBytes(0),
2725  wifiRxBytes(0),
2726  mobileTxBytes(0),
2727  mobileRxBytes(0),
2728  activePathNum(0),
2729  pathStats(nullptr) {}
2730 };
2731 
2735 struct RtcStats {
2739  unsigned int duration;
2743  unsigned int txBytes;
2747  unsigned int rxBytes;
2751  unsigned int txAudioBytes;
2755  unsigned int txVideoBytes;
2759  unsigned int rxAudioBytes;
2763  unsigned int rxVideoBytes;
2767  unsigned short txKBitRate;
2771  unsigned short rxKBitRate;
2775  unsigned short rxAudioKBitRate;
2779  unsigned short txAudioKBitRate;
2783  unsigned short rxVideoKBitRate;
2787  unsigned short txVideoKBitRate;
2791  unsigned short lastmileDelay;
2795  unsigned int userCount;
2802  double cpuAppUsage;
2903 
2904  RtcStats()
2905  : duration(0),
2906  txBytes(0),
2907  rxBytes(0),
2908  txAudioBytes(0),
2909  txVideoBytes(0),
2910  rxAudioBytes(0),
2911  rxVideoBytes(0),
2912  txKBitRate(0),
2913  rxKBitRate(0),
2914  rxAudioKBitRate(0),
2915  txAudioKBitRate(0),
2916  rxVideoKBitRate(0),
2917  txVideoKBitRate(0),
2918  lastmileDelay(0),
2919  userCount(0),
2920  cpuAppUsage(0.0),
2921  cpuTotalUsage(0.0),
2922  gatewayRtt(0),
2923  memoryAppUsageRatio(0.0),
2924  memoryTotalUsageRatio(0.0),
2926  connectTimeMs(0),
2936  txPacketLossRate(0),
2937  rxPacketLossRate(0),
2938  lanAccelerateState(0) {}
2939 };
2940 
2944 enum CLIENT_ROLE_TYPE {
2948  CLIENT_ROLE_BROADCASTER = 1,
2952  CLIENT_ROLE_AUDIENCE = 2,
2953 };
2954 
2959 enum QUALITY_ADAPT_INDICATION {
2963  ADAPT_NONE = 0,
2967  ADAPT_UP_BANDWIDTH = 1,
2971  ADAPT_DOWN_BANDWIDTH = 2,
2972 };
2973 
2978 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2982  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2986  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2987 };
2988 
2997  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2998 
2999  ClientRoleOptions() : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
3000 };
3001 
3005 enum EXPERIENCE_QUALITY_TYPE {
3009  EXPERIENCE_QUALITY_GOOD = 0,
3013  EXPERIENCE_QUALITY_BAD = 1,
3014 };
3015 
3019 enum EXPERIENCE_POOR_REASON {
3023  EXPERIENCE_REASON_NONE = 0,
3027  REMOTE_NETWORK_QUALITY_POOR = 1,
3031  LOCAL_NETWORK_QUALITY_POOR = 2,
3035  WIRELESS_SIGNAL_POOR = 4,
3040  WIFI_BLUETOOTH_COEXIST = 8,
3041 };
3042 
3046 enum AUDIO_AINS_MODE {
3051  AINS_MODE_BALANCED = 0,
3057  AINS_MODE_AGGRESSIVE = 1,
3063  AINS_MODE_ULTRALOWLATENCY = 2
3064 };
3065 
3069 enum AUDIO_PROFILE_TYPE {
3079  AUDIO_PROFILE_DEFAULT = 0,
3083  AUDIO_PROFILE_SPEECH_STANDARD = 1,
3087  AUDIO_PROFILE_MUSIC_STANDARD = 2,
3093  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3097  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3103  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3107  AUDIO_PROFILE_IOT = 6,
3111  AUDIO_PROFILE_NUM = 7
3112 };
3113 
3117 enum AUDIO_SCENARIO_TYPE {
3122  AUDIO_SCENARIO_DEFAULT = 0,
3126  AUDIO_SCENARIO_GAME_STREAMING = 3,
3131  AUDIO_SCENARIO_CHATROOM = 5,
3136  AUDIO_SCENARIO_CHORUS = 7,
3140  AUDIO_SCENARIO_MEETING = 8,
3145  AUDIO_SCENARIO_AI_SERVER = 9,
3150  AUDIO_SCENARIO_AI_CLIENT = 10,
3154  AUDIO_SCENARIO_NUM = 11,
3155 };
3156 
3160 struct VideoFormat {
3161  OPTIONAL_ENUM_SIZE_T{
3163  kMaxWidthInPixels = 3840,
3165  kMaxHeightInPixels = 2160,
3167  kMaxFps = 60,
3168  };
3169 
3173  int width; // Number of pixels.
3177  int height; // Number of pixels.
3181  int fps;
3182  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
3183  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
3184 
3185  bool operator<(const VideoFormat& fmt) const {
3186  if (height != fmt.height) {
3187  return height < fmt.height;
3188  } else if (width != fmt.width) {
3189  return width < fmt.width;
3190  } else {
3191  return fps < fmt.fps;
3192  }
3193  }
3194  bool operator==(const VideoFormat& fmt) const {
3195  return width == fmt.width && height == fmt.height && fps == fmt.fps;
3196  }
3197  bool operator!=(const VideoFormat& fmt) const { return !operator==(fmt); }
3198 };
3199 
3203 enum VIDEO_CONTENT_HINT {
3207  CONTENT_HINT_NONE,
3212  CONTENT_HINT_MOTION,
3217  CONTENT_HINT_DETAILS
3218 };
3222 enum SCREEN_SCENARIO_TYPE {
3228  SCREEN_SCENARIO_DOCUMENT = 1,
3233  SCREEN_SCENARIO_GAMING = 2,
3238  SCREEN_SCENARIO_VIDEO = 3,
3244  SCREEN_SCENARIO_RDC = 4,
3245 };
3246 
3250 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3254  APPLICATION_SCENARIO_GENERAL = 0,
3290  APPLICATION_SCENARIO_MEETING = 1,
3299  APPLICATION_SCENARIO_1V1 = 2,
3310  APPLICATION_SCENARIO_LIVESHOW = 3,
3311 };
3312 
3316 enum VIDEO_QOE_PREFERENCE_TYPE {
3320  VIDEO_QOE_PREFERENCE_BALANCE = 1,
3324  VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3328  VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3332  VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3333 
3334 };
3335 
3339 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3344  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3348  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3352  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3356  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3357 };
3358 
3367 enum CAMERA_STABILIZATION_MODE {
3371  CAMERA_STABILIZATION_MODE_OFF = -1,
3377  CAMERA_STABILIZATION_MODE_AUTO = 0,
3381  CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3385  CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3389  CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3392  CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3393 };
3394 
3398 enum LOCAL_AUDIO_STREAM_STATE {
3402  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3406  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3410  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3414  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3415 };
3416 
3420 enum LOCAL_AUDIO_STREAM_REASON {
3424  LOCAL_AUDIO_STREAM_REASON_OK = 0,
3429  LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3433  LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3440  LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3444  LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3448  LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3454  LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3460  LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3466  LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3471  LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3476  LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3477 };
3478 
3482 enum LOCAL_VIDEO_STREAM_STATE {
3486  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3491  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3495  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3499  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3500 };
3501 
3506 enum LOCAL_VIDEO_EVENT_TYPE {
3510  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_HIDDEN = 1,
3514  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 2,
3518  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_STOPPED_BY_USER = 3,
3522  LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_SYSTEM_INTERNAL_ERROR = 4,
3523 };
3524 
3528 enum LOCAL_VIDEO_STREAM_REASON {
3532  LOCAL_VIDEO_STREAM_REASON_OK = 0,
3536  LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3541  LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3546  LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3551  LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3555  LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3560  LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3567  LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3573  LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3578  LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3583  LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3592  LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3598  LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3602  LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3608  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3622  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3627  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3629  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3633  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3637  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3647  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3652  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3656  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3661  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3667  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3671  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3676  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3677  /* 30: (HMOS only) ScreenCapture stopped by user */
3678  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3679  /* 31: (HMOS only) ScreenCapture interrupted by other screen capture */
3680  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3681  /* 32: (HMOS only) ScreenCapture stopped by SIM call */
3682  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3684  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_EXCLUDE_WINDOW_FAILED = 34,
3685 };
3686 
3690 enum REMOTE_AUDIO_STATE {
3696  REMOTE_AUDIO_STATE_STOPPED =
3697  0, // Default state, audio is started or remote user disabled/muted audio stream
3701  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
3707  REMOTE_AUDIO_STATE_DECODING =
3708  2, // The first remote audio frame has been decoded or fronzen state ends
3713  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
3718  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
3719 };
3720 
3724 enum REMOTE_AUDIO_STATE_REASON {
3728  REMOTE_AUDIO_REASON_INTERNAL = 0,
3732  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3736  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3740  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3744  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3748  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3752  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3756  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3760  REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3764  REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3765 };
3766 
3770 enum REMOTE_VIDEO_STATE {
3776  REMOTE_VIDEO_STATE_STOPPED = 0,
3780  REMOTE_VIDEO_STATE_STARTING = 1,
3787  REMOTE_VIDEO_STATE_DECODING = 2,
3792  REMOTE_VIDEO_STATE_FROZEN = 3,
3797  REMOTE_VIDEO_STATE_FAILED = 4,
3798 };
3802 enum REMOTE_VIDEO_STATE_REASON {
3806  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3810  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3814  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3818  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3822  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3826  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3830  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3834  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3839  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3844  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3847  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3850  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3854  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3855 
3859  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3860 
3861 };
3862 
3866 enum REMOTE_USER_STATE {
3870  USER_STATE_MUTE_AUDIO = (1 << 0),
3874  USER_STATE_MUTE_VIDEO = (1 << 1),
3878  USER_STATE_ENABLE_VIDEO = (1 << 4),
3882  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3883 };
3884 
3890  VideoTrackInfo()
3891  : isLocal(false),
3892  ownerUid(0),
3893  trackId(0),
3894  channelId(OPTIONAL_NULLPTR),
3895  codecType(VIDEO_CODEC_H265),
3896  encodedFrameOnly(false),
3897  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
3898  observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
3904  bool isLocal;
3908  uid_t ownerUid;
3912  track_id_t trackId;
3916  const char* channelId;
3920  VIDEO_CODEC_TYPE codecType;
3930  VIDEO_SOURCE_TYPE sourceType;
3935 };
3936 
3941 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3945  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3949  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3953  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3957  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3961  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3962 };
3963 
3974  uid_t uid;
3983  unsigned int volume; // [0,255]
3994  unsigned int vad;
4000  double voicePitch;
4001 
4002  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
4003 };
4004 
4011 struct DeviceInfo {
4018 
4020 };
4021 
4026  public:
4027  virtual ~IPacketObserver() {}
4031  struct Packet {
4037  const unsigned char* buffer;
4041  unsigned int size;
4042 
4043  Packet() : buffer(OPTIONAL_NULLPTR), size(0) {}
4044  };
4054  virtual bool onSendAudioPacket(Packet& packet) = 0;
4064  virtual bool onSendVideoPacket(Packet& packet) = 0;
4074  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
4084  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
4085 };
4086 
4090 enum AUDIO_SAMPLE_RATE_TYPE {
4094  AUDIO_SAMPLE_RATE_32000 = 32000,
4098  AUDIO_SAMPLE_RATE_44100 = 44100,
4102  AUDIO_SAMPLE_RATE_48000 = 48000,
4103 };
4107 enum VIDEO_CODEC_TYPE_FOR_STREAM {
4111  VIDEO_CODEC_H264_FOR_STREAM = 1,
4115  VIDEO_CODEC_H265_FOR_STREAM = 2,
4116 };
4117 
4121 enum VIDEO_CODEC_PROFILE_TYPE {
4125  VIDEO_CODEC_PROFILE_BASELINE = 66,
4130  VIDEO_CODEC_PROFILE_MAIN = 77,
4135  VIDEO_CODEC_PROFILE_HIGH = 100,
4136 };
4137 
4141 enum AUDIO_CODEC_PROFILE_TYPE {
4145  AUDIO_CODEC_PROFILE_LC_AAC = 0,
4149  AUDIO_CODEC_PROFILE_HE_AAC = 1,
4153  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
4154 };
4155 
4180  unsigned short txPacketLossRate;
4198 };
4199 
4203 enum RTMP_STREAM_PUBLISH_STATE {
4207  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4211  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4216  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4225  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4230  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4236  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4237 };
4238 
4242 enum RTMP_STREAM_PUBLISH_REASON {
4246  RTMP_STREAM_PUBLISH_REASON_OK = 0,
4250  RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4254  RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4258  RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4262  RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4266  RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4270  RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4274  RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4279  RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4283  RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4288  RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4293  RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4294  11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
4299  RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4300  13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
4304  RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
4308  RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4309  15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
4313  RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4318  RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4319 };
4320 
4324 enum RTMP_STREAMING_EVENT {
4328  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4333  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4337  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4341  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4342 };
4343 
4351 typedef struct RtcImage {
4356  const char* url;
4361  int x;
4366  int y;
4370  int width;
4374  int height;
4382  int zOrder;
4388  double alpha;
4389 
4390  RtcImage() : url(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
4391 } RtcImage;
4401  LiveStreamAdvancedFeature() : featureName(OPTIONAL_NULLPTR), opened(false) {}
4402  LiveStreamAdvancedFeature(const char* feat_name, bool open)
4403  : featureName(feat_name), opened(open) {}
4405  // static const char* LBHQ = "lbhq";
4407  // static const char* VEO = "veo";
4408 
4413  const char* featureName;
4414 
4420  bool opened;
4421 };
4422 
4426 enum CONNECTION_STATE_TYPE {
4434  CONNECTION_STATE_DISCONNECTED = 1,
4444  CONNECTION_STATE_CONNECTING = 2,
4452  CONNECTION_STATE_CONNECTED = 3,
4462  CONNECTION_STATE_RECONNECTING = 4,
4472  CONNECTION_STATE_FAILED = 5,
4473 };
4474 
4482  uid_t uid;
4488  int x;
4494  int y;
4498  int width;
4502  int height;
4511  int zOrder;
4517  double alpha;
4538 
4539  TranscodingUser()
4540  : uid(0), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0), audioChannel(0) {}
4541 };
4542 
4554  int width;
4562  int height;
4576 
4585 
4595  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
4600  unsigned int backgroundColor;
4604  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
4608  unsigned int userCount;
4620 
4626  const char* metadata;
4637  unsigned int watermarkCount;
4638 
4650  unsigned int backgroundImageCount;
4651 
4655  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
4674  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
4679 
4683  unsigned int advancedFeatureCount;
4684 
4685  LiveTranscoding()
4686  : width(360),
4687  height(640),
4688  videoBitrate(400),
4689  videoFramerate(15),
4690  lowLatency(false),
4691  videoGop(30),
4692  videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
4693  backgroundColor(0x000000),
4694  videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
4695  userCount(0),
4696  transcodingUsers(OPTIONAL_NULLPTR),
4697  transcodingExtraInfo(OPTIONAL_NULLPTR),
4698  metadata(OPTIONAL_NULLPTR),
4699  watermark(OPTIONAL_NULLPTR),
4700  watermarkCount(0),
4701  backgroundImage(OPTIONAL_NULLPTR),
4703  audioSampleRate(AUDIO_SAMPLE_RATE_48000),
4704  audioBitrate(48),
4705  audioChannels(1),
4706  audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
4707  advancedFeatures(OPTIONAL_NULLPTR),
4708  advancedFeatureCount(0) {}
4709 };
4710 
4718  VIDEO_SOURCE_TYPE sourceType;
4731  const char* imageUrl;
4741  int x;
4746  int y;
4750  int width;
4754  int height;
4761  int zOrder;
4766  double alpha;
4773  bool mirror;
4774 
4776  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4777  remoteUserUid(0),
4778  imageUrl(OPTIONAL_NULLPTR),
4779  x(0),
4780  y(0),
4781  width(0),
4782  height(0),
4783  zOrder(0),
4784  alpha(1.0),
4785  mirror(false) {}
4786 };
4787 
4795  unsigned int streamCount;
4814 
4816  : streamCount(0),
4817  videoInputStreams(OPTIONAL_NULLPTR),
4819  syncWithPrimaryCamera(true) {}
4820 };
4821 
4825 enum VIDEO_TRANSCODER_ERROR {
4830  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4834  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4838  VT_ERR_INVALID_IMAGE_PATH = 3,
4842  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4846  VT_ERR_INVALID_LAYOUT = 5,
4850  VT_ERR_INTERNAL = 20
4851 };
4852 
4853 
4861  AUDIO_SOURCE_TYPE sourceType;
4881  const char* channelId;
4888  track_id_t trackId;
4889 
4890  MixedAudioStream(AUDIO_SOURCE_TYPE source)
4891  : sourceType(source),
4892  remoteUserUid(0),
4893  channelId(NULL),
4894  trackId(-1) {}
4895 
4896  MixedAudioStream(AUDIO_SOURCE_TYPE source, track_id_t track)
4897  : sourceType(source),
4898  trackId(track) {}
4899 
4900  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel)
4901  : sourceType(source),
4902  remoteUserUid(uid),
4903  channelId(channel) {}
4904 
4905  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel, track_id_t track)
4906  : sourceType(source),
4907  remoteUserUid(uid),
4908  channelId(channel),
4909  trackId(track) {}
4910 
4911 };
4912 
4920  unsigned int streamCount;
4925 
4934 
4936 };
4937 
4965 };
4966 
4970 enum LASTMILE_PROBE_RESULT_STATE {
4974  LASTMILE_PROBE_RESULT_COMPLETE = 1,
4980  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4984  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4985 };
4986 
4994  unsigned int packetLossRate;
4998  unsigned int jitter;
5002  unsigned int availableBandwidth;
5003 
5005 };
5006 
5014  LASTMILE_PROBE_RESULT_STATE state;
5026  unsigned int rtt;
5027 
5028  LastmileProbeResult() : state(LASTMILE_PROBE_RESULT_UNAVAILABLE), rtt(0) {}
5029 };
5030 
5034 enum CONNECTION_CHANGED_REASON_TYPE {
5038  CONNECTION_CHANGED_CONNECTING = 0,
5042  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
5046  CONNECTION_CHANGED_INTERRUPTED = 2,
5051  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
5057  CONNECTION_CHANGED_JOIN_FAILED = 4,
5061  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
5066  CONNECTION_CHANGED_INVALID_APP_ID = 6,
5076  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
5091  CONNECTION_CHANGED_INVALID_TOKEN = 8,
5096  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
5105  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
5109  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
5113  CONNECTION_CHANGED_RENEW_TOKEN = 12,
5118  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
5123  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
5127  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
5131  CONNECTION_CHANGED_LOST = 16,
5135  CONNECTION_CHANGED_ECHO_TEST = 17,
5139  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
5143  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
5147  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
5148 
5152  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
5153  /*
5154  * 22: The connection is failed due to certification verify failure.
5155  */
5156  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
5160  CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
5164  CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
5165 };
5166 
5170 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
5177  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
5182  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
5188  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
5194  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
5195 };
5196 
5200 enum NETWORK_TYPE {
5204  NETWORK_TYPE_UNKNOWN = -1,
5208  NETWORK_TYPE_DISCONNECTED = 0,
5212  NETWORK_TYPE_LAN = 1,
5216  NETWORK_TYPE_WIFI = 2,
5220  NETWORK_TYPE_MOBILE_2G = 3,
5224  NETWORK_TYPE_MOBILE_3G = 4,
5228  NETWORK_TYPE_MOBILE_4G = 5,
5232  NETWORK_TYPE_MOBILE_5G = 6,
5233 };
5234 
5238 enum VIDEO_VIEW_SETUP_MODE {
5242  VIDEO_VIEW_SETUP_REPLACE = 0,
5246  VIDEO_VIEW_SETUP_ADD = 1,
5253  VIDEO_VIEW_SETUP_REMOVE = 2,
5254 };
5255 
5259 struct VideoCanvas {
5263  uid_t uid;
5264 
5268  uid_t subviewUid;
5274  view_t view;
5283  media::base::RENDER_MODE_TYPE renderMode;
5291  VIDEO_MIRROR_MODE_TYPE mirrorMode;
5295  VIDEO_VIEW_SETUP_MODE setupMode;
5299  VIDEO_SOURCE_TYPE sourceType;
5326  media::base::VIDEO_MODULE_POSITION position;
5327 
5328  VideoCanvas()
5329  : uid(0),
5330  subviewUid(0),
5331  view(NULL),
5332  backgroundColor(0x00000000),
5333  renderMode(media::base::RENDER_MODE_HIDDEN),
5334  mirrorMode(VIDEO_MIRROR_MODE_AUTO),
5335  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5336  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5337  mediaPlayerId(-ERR_NOT_READY),
5338  cropArea(0, 0, 0, 0),
5339  enableAlphaMask(false),
5340  position(media::base::POSITION_POST_CAPTURER) {}
5341 
5342  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5343  : uid(0),
5344  subviewUid(0),
5345  view(v),
5346  backgroundColor(0x00000000),
5347  renderMode(m),
5348  mirrorMode(mt),
5349  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5350  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5351  mediaPlayerId(-ERR_NOT_READY),
5352  cropArea(0, 0, 0, 0),
5353  enableAlphaMask(false),
5354  position(media::base::POSITION_POST_CAPTURER) {}
5355 
5356  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5357  : uid(u),
5358  subviewUid(0),
5359  view(v),
5360  backgroundColor(0x00000000),
5361  renderMode(m),
5362  mirrorMode(mt),
5363  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5364  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5365  mediaPlayerId(-ERR_NOT_READY),
5366  cropArea(0, 0, 0, 0),
5367  enableAlphaMask(false),
5368  position(media::base::POSITION_POST_CAPTURER) {}
5369 
5370  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5371  uid_t subu)
5372  : uid(u),
5373  subviewUid(subu),
5374  view(v),
5375  backgroundColor(0x00000000),
5376  renderMode(m),
5377  mirrorMode(mt),
5378  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5379  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5380  mediaPlayerId(-ERR_NOT_READY),
5381  cropArea(0, 0, 0, 0),
5382  enableAlphaMask(false),
5383  position(media::base::POSITION_POST_CAPTURER) {}
5384 };
5385 
5406  };
5407 
5413 
5419 
5425 
5431 
5437 
5438  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness,
5439  float redness, float sharpness)
5440  : lighteningContrastLevel(contrastLevel),
5441  lighteningLevel(lightening),
5442  smoothnessLevel(smoothness),
5443  rednessLevel(redness),
5444  sharpnessLevel(sharpness) {}
5445 
5446  BeautyOptions()
5448  lighteningLevel(0),
5449  smoothnessLevel(0),
5450  rednessLevel(0),
5451  sharpnessLevel(0) {}
5452 };
5453 
5645  };
5646 
5651 
5657 
5658  FaceShapeAreaOptions(FACE_SHAPE_AREA shapeArea, int areaIntensity) : shapeArea(shapeArea), shapeIntensity(areaIntensity) {}
5659 
5661 };
5662 
5688  };
5689 
5694 
5701 
5703 
5705 };
5706 
5730  const char * path;
5731 
5736  float strength;
5737 
5738  FilterEffectOptions(const char * lut3dPath, float filterStrength) : path(lut3dPath), strength(filterStrength) {}
5739 
5740  FilterEffectOptions() : path(OPTIONAL_NULLPTR), strength(0.5) {}
5741 };
5742 
5761  };
5777  };
5778 
5783 
5788 
5790  : mode(lowlightMode), level(lowlightLevel) {}
5791 
5794 };
5814  };
5833  };
5838 
5843 
5845  : mode(denoiserMode), level(denoiserLevel) {}
5846 
5848 };
5849 
5862 
5875 
5876  ColorEnhanceOptions(float stength, float skinProtect)
5877  : strengthLevel(stength), skinProtectLevel(skinProtect) {}
5878 
5880 };
5881 
5912  };
5913 
5933  };
5934 
5939 
5952  unsigned int color;
5953 
5961  const char* source;
5962 
5969 
5972  color(0xffffff),
5973  source(OPTIONAL_NULLPTR),
5975 };
5976 
5992  SEG_MODEL_GREEN = 2
5993  };
5994 
6010  SCREEN_COLOR_BLUE = 2
6011  };
6012 
6017 
6027 
6032 
6034 };
6035 
6039 enum AUDIO_TRACK_TYPE {
6043  AUDIO_TRACK_INVALID = -1,
6049  AUDIO_TRACK_MIXABLE = 0,
6059  AUDIO_TRACK_DIRECT = 1,
6060 };
6061 
6080 
6082 };
6083 
6105 enum VOICE_BEAUTIFIER_PRESET {
6109  VOICE_BEAUTIFIER_OFF = 0x00000000,
6115  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
6121  CHAT_BEAUTIFIER_FRESH = 0x01010200,
6127  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
6137  SINGING_BEAUTIFIER = 0x01020100,
6141  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
6145  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
6149  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
6153  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
6157  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
6161  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
6165  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
6169  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
6180  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
6181 };
6182 
6194 enum AUDIO_EFFECT_PRESET {
6198  AUDIO_EFFECT_OFF = 0x00000000,
6202  ROOM_ACOUSTICS_KTV = 0x02010100,
6206  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
6210  ROOM_ACOUSTICS_STUDIO = 0x02010300,
6214  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
6218  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
6222  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
6226  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
6234  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
6241  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
6246  ROOM_ACOUSTICS_CHORUS = 0x02010D00,
6252  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
6258  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
6264  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
6270  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
6276  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
6280  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
6284  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
6288  STYLE_TRANSFORMATION_RNB = 0x02030100,
6292  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
6298  PITCH_CORRECTION = 0x02040100,
6299 
6303 };
6304 
6308 enum VOICE_CONVERSION_PRESET {
6312  VOICE_CONVERSION_OFF = 0x00000000,
6317  VOICE_CHANGER_NEUTRAL = 0x03010100,
6322  VOICE_CHANGER_SWEET = 0x03010200,
6327  VOICE_CHANGER_SOLID = 0x03010300,
6332  VOICE_CHANGER_BASS = 0x03010400,
6335  VOICE_CHANGER_CARTOON = 0x03010500,
6338  VOICE_CHANGER_CHILDLIKE = 0x03010600,
6341  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6344  VOICE_CHANGER_MONSTER = 0x03010800,
6347  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6350  VOICE_CHANGER_GROOT = 0x03010A00,
6353  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6356  VOICE_CHANGER_IRON_LADY = 0x03010C00,
6359  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6362  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6365  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6366 
6367 };
6368 
6372 enum HEADPHONE_EQUALIZER_PRESET {
6376  HEADPHONE_EQUALIZER_OFF = 0x00000000,
6380  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6384  HEADPHONE_EQUALIZER_INEAR = 0x04000002
6385 };
6386 
6390 enum VOICE_AI_TUNER_TYPE {
6394  VOICE_AI_TUNER_MATURE_MALE,
6398  VOICE_AI_TUNER_FRESH_MALE,
6402  VOICE_AI_TUNER_ELEGANT_FEMALE,
6406  VOICE_AI_TUNER_SWEET_FEMALE,
6410  VOICE_AI_TUNER_WARM_MALE_SINGING,
6414  VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6418  VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6422  VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6426  VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6430  VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6431 };
6432 
6453 
6454 #if defined(__APPLE__) && !TARGET_OS_IOS
6455  bool excludeCurrentProcessAudio = true;
6457 #else
6459 #endif
6460 };
6461 
6466 
6483 
6519  int bitrate;
6550 
6562  unsigned int highLightColor;
6571 
6573  : captureAudio(false),
6574  dimensions(1920, 1080),
6575  frameRate(5),
6576  bitrate(STANDARD_BITRATE),
6577  captureMouseCursor(true),
6578  windowFocus(false),
6579  excludeWindowList(OPTIONAL_NULLPTR),
6580  excludeWindowCount(0),
6581  highLightWidth(0),
6582  highLightColor(0),
6583  enableHighLight(false) {}
6584  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
6585  : captureAudio(false),dimensions(d),
6586  frameRate(f),
6587  bitrate(b),
6588  captureMouseCursor(true),
6589  windowFocus(false),
6590  excludeWindowList(OPTIONAL_NULLPTR),
6591  excludeWindowCount(0),
6592  highLightWidth(0),
6593  highLightColor(0),
6594  enableHighLight(false) {}
6595  ScreenCaptureParameters(int width, int height, int f, int b)
6596  : captureAudio(false),
6597  dimensions(width, height),
6598  frameRate(f),
6599  bitrate(b),
6600  captureMouseCursor(true),
6601  windowFocus(false),
6602  excludeWindowList(OPTIONAL_NULLPTR),
6603  excludeWindowCount(0),
6604  highLightWidth(0),
6605  highLightColor(0),
6606  enableHighLight(false) {}
6607  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
6608  : captureAudio(false),
6609  dimensions(width, height),
6610  frameRate(f),
6611  bitrate(b),
6612  captureMouseCursor(cur),
6613  windowFocus(fcs),
6614  excludeWindowList(OPTIONAL_NULLPTR),
6615  excludeWindowCount(0),
6616  highLightWidth(0),
6617  highLightColor(0),
6618  enableHighLight(false) {}
6619  ScreenCaptureParameters(int width, int height, int f, int b, view_t* ex, int cnt)
6620  : captureAudio(false),
6621  dimensions(width, height),
6622  frameRate(f),
6623  bitrate(b),
6624  captureMouseCursor(true),
6625  windowFocus(false),
6626  excludeWindowList(ex),
6627  excludeWindowCount(cnt),
6628  highLightWidth(0),
6629  highLightColor(0),
6630  enableHighLight(false) {}
6631  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t* ex,
6632  int cnt)
6633  : captureAudio(false),
6634  dimensions(width, height),
6635  frameRate(f),
6636  bitrate(b),
6637  captureMouseCursor(cur),
6638  windowFocus(fcs),
6639  excludeWindowList(ex),
6640  excludeWindowCount(cnt),
6641  highLightWidth(0),
6642  highLightColor(0),
6643  enableHighLight(false) {}
6644 };
6645 
6649 enum AUDIO_RECORDING_QUALITY_TYPE {
6654  AUDIO_RECORDING_QUALITY_LOW = 0,
6659  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6664  AUDIO_RECORDING_QUALITY_HIGH = 2,
6669  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6670 };
6671 
6675 enum AUDIO_FILE_RECORDING_TYPE {
6679  AUDIO_FILE_RECORDING_MIC = 1,
6683  AUDIO_FILE_RECORDING_PLAYBACK = 2,
6687  AUDIO_FILE_RECORDING_MIXED = 3,
6688 };
6689 
6693 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6697  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6701  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6705  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6706 };
6707 
6717  const char* filePath;
6723  bool encode;
6738  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
6743  AUDIO_RECORDING_QUALITY_TYPE quality;
6744 
6759 
6761  : filePath(OPTIONAL_NULLPTR),
6762  encode(false),
6763  sampleRate(32000),
6764  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6765  quality(AUDIO_RECORDING_QUALITY_LOW),
6766  recordingChannel(1) {}
6767 
6768  AudioRecordingConfiguration(const char* file_path, int sample_rate,
6769  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6770  : filePath(file_path),
6771  encode(false),
6772  sampleRate(sample_rate),
6773  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6774  quality(quality_type),
6775  recordingChannel(channel) {}
6776 
6777  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate,
6778  AUDIO_FILE_RECORDING_TYPE type,
6779  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6780  : filePath(file_path),
6781  encode(enc),
6782  sampleRate(sample_rate),
6783  fileRecordingType(type),
6784  quality(quality_type),
6785  recordingChannel(channel) {}
6786 
6787  AudioRecordingConfiguration(const AudioRecordingConfiguration& rhs)
6788  : filePath(rhs.filePath),
6789  encode(rhs.encode),
6790  sampleRate(rhs.sampleRate),
6792  quality(rhs.quality),
6794 };
6795 
6803  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
6807  AUDIO_ENCODING_TYPE encodingType;
6808 
6810  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6811  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM) {}
6812 };
6817  public:
6831  virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6832  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6833 
6847  virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6848  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6849 
6863  virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6864  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6865 
6866  virtual ~IAudioEncodedFrameObserver() {}
6867 };
6868 
6873 enum AREA_CODE {
6877  AREA_CODE_CN = 0x00000001,
6881  AREA_CODE_NA = 0x00000002,
6885  AREA_CODE_EU = 0x00000004,
6889  AREA_CODE_AS = 0x00000008,
6893  AREA_CODE_JP = 0x00000010,
6897  AREA_CODE_IN = 0x00000020,
6901  AREA_CODE_GLOB = (0xFFFFFFFF)
6902 };
6903 
6908 enum AREA_CODE_EX {
6912  AREA_CODE_OC = 0x00000040,
6916  AREA_CODE_SA = 0x00000080,
6920  AREA_CODE_AF = 0x00000100,
6924  AREA_CODE_KR = 0x00000200,
6928  AREA_CODE_HKMC = 0x00000400,
6932  AREA_CODE_US = 0x00000800,
6936  AREA_CODE_RU = 0x00001000,
6940  AREA_CODE_OVS = 0xFFFFFFFE
6941 };
6942 
6946 enum CHANNEL_MEDIA_RELAY_ERROR {
6950  RELAY_OK = 0,
6954  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6963  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6967  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6971  RELAY_ERROR_FAILED_JOIN_SRC = 4,
6975  RELAY_ERROR_FAILED_JOIN_DEST = 5,
6979  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6983  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6988  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6992  RELAY_ERROR_INTERNAL_ERROR = 9,
6996  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
7000  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
7001 };
7002 
7006 enum CHANNEL_MEDIA_RELAY_STATE {
7011  RELAY_STATE_IDLE = 0,
7015  RELAY_STATE_CONNECTING = 1,
7019  RELAY_STATE_RUNNING = 2,
7023  RELAY_STATE_FAILURE = 3,
7024 };
7025 
7033  uid_t uid;
7037  const char* channelName;
7041  const char* token;
7042 
7043  ChannelMediaInfo() : uid(0), channelName(NULL), token(NULL) {}
7044  ChannelMediaInfo(const char* c, const char* t, uid_t u) : uid(u), channelName(c), token(t) {}
7045 };
7046 
7088 
7090  : srcInfo(OPTIONAL_NULLPTR), destInfos(OPTIONAL_NULLPTR), destCount(0) {}
7091 };
7092 
7101 
7103 
7104  bool operator==(const UplinkNetworkInfo& rhs) const {
7106  }
7107 };
7108 
7114  const char* userId;
7118  VIDEO_STREAM_TYPE stream_type;
7122  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
7127 
7129  : userId(OPTIONAL_NULLPTR),
7130  stream_type(VIDEO_STREAM_HIGH),
7131  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
7132  expected_bitrate_bps(-1) {}
7133 
7135  : stream_type(rhs.stream_type),
7138  if (rhs.userId != OPTIONAL_NULLPTR) {
7139  const size_t len = std::strlen(rhs.userId);
7140  char* buf = new char[len + 1];
7141  std::memcpy(buf, rhs.userId, len);
7142  buf[len] = '\0';
7143  userId = buf;
7144  }
7145  }
7146 
7147  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
7148  if (this == &rhs) return *this;
7149  userId = OPTIONAL_NULLPTR;
7150  stream_type = rhs.stream_type;
7151  current_downscale_level = rhs.current_downscale_level;
7152  expected_bitrate_bps = rhs.expected_bitrate_bps;
7153  if (rhs.userId != OPTIONAL_NULLPTR) {
7154  const size_t len = std::strlen(rhs.userId);
7155  char* buf = new char[len + 1];
7156  std::memcpy(buf, rhs.userId, len);
7157  buf[len] = '\0';
7158  userId = buf;
7159  }
7160  return *this;
7161  }
7162 
7163  ~PeerDownlinkInfo() { delete[] userId; }
7164  };
7165 
7186 
7191  peer_downlink_info(OPTIONAL_NULLPTR),
7193 
7198  peer_downlink_info(OPTIONAL_NULLPTR),
7200  if (total_received_video_count <= 0) return;
7201  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
7202  for (int i = 0; i < total_received_video_count; ++i)
7204  }
7205 
7206  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
7207  if (this == &rhs) return *this;
7208  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
7209  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
7210  total_downscale_level_count = rhs.total_downscale_level_count;
7211  peer_downlink_info = OPTIONAL_NULLPTR;
7212  total_received_video_count = rhs.total_received_video_count;
7213  if (total_received_video_count > 0) {
7214  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
7215  for (int i = 0; i < total_received_video_count; ++i)
7216  peer_downlink_info[i] = rhs.peer_downlink_info[i];
7217  }
7218  return *this;
7219  }
7220 
7221  ~DownlinkNetworkInfo() { delete[] peer_downlink_info; }
7222 };
7223 
7232 enum ENCRYPTION_MODE {
7236  AES_128_XTS = 1,
7240  AES_128_ECB = 2,
7244  AES_256_XTS = 3,
7248  SM4_128_ECB = 4,
7252  AES_128_GCM = 5,
7256  AES_256_GCM = 6,
7261  AES_128_GCM2 = 7,
7266  AES_256_GCM2 = 8,
7270  MODE_END,
7271 };
7272 
7281  ENCRYPTION_MODE encryptionMode;
7287  const char* encryptionKey;
7294  uint8_t encryptionKdfSalt[32];
7295 
7302 
7304  : encryptionMode(AES_128_GCM2),
7305  encryptionKey(OPTIONAL_NULLPTR),
7307  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
7308  }
7309 
7311  const char* getEncryptionString() const {
7312  switch (encryptionMode) {
7313  case AES_128_XTS:
7314  return "aes-128-xts";
7315  case AES_128_ECB:
7316  return "aes-128-ecb";
7317  case AES_256_XTS:
7318  return "aes-256-xts";
7319  case SM4_128_ECB:
7320  return "sm4-128-ecb";
7321  case AES_128_GCM:
7322  return "aes-128-gcm";
7323  case AES_256_GCM:
7324  return "aes-256-gcm";
7325  case AES_128_GCM2:
7326  return "aes-128-gcm-2";
7327  case AES_256_GCM2:
7328  return "aes-256-gcm-2";
7329  default:
7330  return "aes-128-gcm-2";
7331  }
7332  return "aes-128-gcm-2";
7333  }
7335 };
7336 
7340 enum ENCRYPTION_ERROR_TYPE {
7344  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
7349  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
7353  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
7358  ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
7362  ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
7363 };
7364 
7365 enum UPLOAD_ERROR_REASON {
7366  UPLOAD_SUCCESS = 0,
7367  UPLOAD_NET_ERROR = 1,
7368  UPLOAD_SERVER_ERROR = 2,
7369 };
7370 
7376 enum RENEW_TOKEN_ERROR_CODE {
7380  RENEW_TOKEN_SUCCESS = 0,
7385  RENEW_TOKEN_FAILURE = 1,
7390  RENEW_TOKEN_TOKEN_EXPIRED = 2,
7399  RENEW_TOKEN_INVALID_TOKEN = 3,
7405  RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
7410  RENEW_TOKEN_INCONSISTENT_APPID = 5,
7414  RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
7415 };
7416 
7420 enum PERMISSION_TYPE {
7424  RECORD_AUDIO = 0,
7428  CAMERA = 1,
7429 
7433  SCREEN_CAPTURE = 2,
7434 };
7435 
7439 enum STREAM_SUBSCRIBE_STATE {
7443  SUB_STATE_IDLE = 0,
7459  SUB_STATE_NO_SUBSCRIBED = 1,
7463  SUB_STATE_SUBSCRIBING = 2,
7467  SUB_STATE_SUBSCRIBED = 3
7468 };
7469 
7473 enum STREAM_PUBLISH_STATE {
7477  PUB_STATE_IDLE = 0,
7488  PUB_STATE_NO_PUBLISHED = 1,
7492  PUB_STATE_PUBLISHING = 2,
7496  PUB_STATE_PUBLISHED = 3
7497 };
7498 
7507  view_t view;
7529  const char* token;
7535  const char* channelId;
7544 
7545  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
7546  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
7547 
7549  : view(OPTIONAL_NULLPTR),
7550  enableAudio(true),
7551  enableVideo(true),
7552  token(OPTIONAL_NULLPTR),
7553  channelId(OPTIONAL_NULLPTR),
7554  intervalInSeconds(2) {}
7555 };
7556 
7560 struct UserInfo {
7564  uid_t uid;
7568  char userAccount[MAX_USER_ACCOUNT_LENGTH];
7569 
7570  UserInfo() : uid(0) { userAccount[0] = '\0'; }
7571 };
7572 
7576 enum EAR_MONITORING_FILTER_TYPE {
7580  EAR_MONITORING_FILTER_NONE = (1 << 0),
7585  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7589  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7595  EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7596 };
7597 
7601 enum THREAD_PRIORITY_TYPE {
7605  LOWEST = 0,
7609  LOW = 1,
7613  NORMAL = 2,
7617  HIGH = 3,
7621  HIGHEST = 4,
7625  CRITICAL = 5,
7626 };
7627 
7628 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7629 
7633 struct ScreenVideoParameters {
7637  VideoDimensions dimensions;
7641  int frameRate = 15;
7645  int bitrate;
7649  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7650 
7651  ScreenVideoParameters() : dimensions(1280, 720) {}
7652 };
7653 
7657 struct ScreenCaptureParameters2 {
7669  bool captureAudio = false;
7674  ScreenAudioParameters audioParams;
7682  bool captureVideo = true;
7687  ScreenVideoParameters videoParams;
7688 };
7689 #endif
7690 
7694 enum MEDIA_TRACE_EVENT {
7698  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7702  MEDIA_TRACE_EVENT_VIDEO_DECODED,
7703 };
7704 
7791 };
7792 
7793 enum CONFIG_FETCH_TYPE {
7797  CONFIG_FETCH_TYPE_INITIALIZE = 1,
7801  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7802 };
7803 
7807 enum LOCAL_PROXY_MODE {
7812  ConnectivityFirst = 0,
7816  LocalOnly = 1,
7817 };
7818 
7826  const char* serverDomain;
7830  const char* serverPath;
7841 
7842  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
7843 
7844  LogUploadServerInfo(const char* domain, const char* path, int port, bool https)
7845  : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
7846 };
7847 
7857 };
7858 
7867  const char** ipList;
7880  const char** domainList;
7890  const char* verifyDomainName;
7894  LOCAL_PROXY_MODE mode;
7906  : ipList(NULL),
7907  ipListSize(0),
7908  domainList(NULL),
7909  domainListSize(0),
7910  verifyDomainName(NULL),
7911  mode(ConnectivityFirst),
7912  disableAut(true) {}
7913 };
7914 
7918 enum RecorderStreamType {
7922  RTC,
7926  PREVIEW,
7927 };
7928 
7936  const char* channelId;
7940  uid_t uid;
7944  RecorderStreamType type;
7945  RecorderStreamInfo() : channelId(NULL), uid(0), type(RTC) {}
7946  RecorderStreamInfo(const char* channelId, uid_t uid)
7947  : channelId(channelId), uid(uid), type(RTC) {}
7948  RecorderStreamInfo(const char* channelId, uid_t uid, RecorderStreamType type)
7949  : channelId(channelId), uid(uid), type(type) {}
7950 };
7951 
7957 enum RdtStreamType {
7963  RDT_STREAM_CMD,
7969  RDT_STREAM_DATA,
7973  RDT_STREAM_COUNT,
7974 };
7975 
7981 enum RdtState {
7985  RDT_STATE_CLOSED,
7989  RDT_STATE_OPENED,
7994  RDT_STATE_BLOCKED,
7999  RDT_STATE_PENDING,
8006  RDT_STATE_BROKEN,
8007 };
8008 } // namespace rtc
8009 
8010 namespace base {
8011 
8013  public:
8014  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
8015  virtual ~IEngineBase() {}
8016 };
8017 
8018 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
8019  public:
8020  AParameter(IEngineBase& engine) { initialize(&engine); }
8021  AParameter(IEngineBase* engine) { initialize(engine); }
8023 
8024  private:
8025  bool initialize(IEngineBase* engine) {
8026  IAgoraParameter* p = OPTIONAL_NULLPTR;
8027  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
8028  return p != OPTIONAL_NULLPTR;
8029  }
8030 };
8031 
8033  public:
8034  virtual ~LicenseCallback() {}
8035  virtual void onCertificateRequired() = 0;
8036  virtual void onLicenseRequest() = 0;
8037  virtual void onLicenseValidated() = 0;
8038  virtual void onLicenseError(int result) = 0;
8039 };
8040 
8041 } // namespace base
8042 
8123 };
8127 struct VideoLayout {
8131  const char* channelId;
8135  rtc::uid_t uid;
8139  user_id_t strUid;
8145  uint32_t x;
8151  uint32_t y;
8155  uint32_t width;
8159  uint32_t height;
8167  uint32_t videoState;
8168 
8169  VideoLayout()
8170  : channelId(OPTIONAL_NULLPTR),
8171  uid(0),
8172  strUid(OPTIONAL_NULLPTR),
8173  x(0),
8174  y(0),
8175  width(0),
8176  height(0),
8177  videoState(0) {}
8178 };
8179 } // namespace agora
8180 
8186 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
8187 
8193 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
8194 
8195 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
8196 
8204 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString& credential);
8205 
8219 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char* credential_buf,
8220  int credential_len,
8221  const char* certificate_buf,
8222  int certificate_len);
8223 
8231 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback* callback);
8232 
8240 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
8241 
8242 /*
8243  * Get monotonic time in ms which can be used by capture time,
8244  * typical scenario is as follows:
8245  *
8246  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8247  * | // custom audio/video base capture time, e.g. the first audio/video capture time. | | int64_t
8248  * custom_capture_time_base; | | | |
8249  * int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
8250  * | | | // offset is fixed once calculated in the begining. | | const int64_t offset =
8251  * agora_monotonic_time - custom_capture_time_base; | | | | //
8252  * realtime_custom_audio/video_capture_time is the origin capture time that customer provided.| | //
8253  * actual_audio/video_capture_time is the actual capture time transfered to sdk. | |
8254  * int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
8255  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
8256  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8257  *
8258  * @return
8259  * - >= 0: Success.
8260  * - < 0: Failure.
8261  */
8262 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:4613
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:7826
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:5303
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:4370
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:4761
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2846
agora::rtc::ScreenAudioParameters::captureSignalVolume
int captureSignalVolume
Definition: AgoraBase.h:6452
agora::VideoLayout
Layout information of a specific sub-video stream within the mixed stream.
Definition: AgoraBase.h:8127
agora::rtc::FilterEffectOptions::strength
float strength
Definition: AgoraBase.h:5736
agora::rtc::SimulcastConfig::STREAM_LAYER_1
@ STREAM_LAYER_1
Definition: AgoraBase.h:2260
agora::VideoLayout::channelId
const char * channelId
Definition: AgoraBase.h:8131
agora::rtc::UserInfo
The information of the user.
Definition: AgoraBase.h:7560
agora::rtc::FilterEffectOptions
Filter effect options.
Definition: AgoraBase.h:5712
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:4766
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1600
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:2096
agora::rtc::LastmileProbeResult
Results of the uplink and downlink last-mile network tests.
Definition: AgoraBase.h:5010
agora::rtc::RtcStats::lanAccelerateState
int lanAccelerateState
Definition: AgoraBase.h:2902
agora::rtc::AudioEncodedFrameObserverConfig
Observer settings for the encoded audio.
Definition: AgoraBase.h:6799
agora::rtc::ScreenCaptureParameters
Screen sharing configurations.
Definition: AgoraBase.h:6465
agora::VideoLayout::x
uint32_t x
Definition: AgoraBase.h:8145
agora::rtc::WatermarkRatio
The position and size of the watermark on the screen.
Definition: AgoraBase.h:2370
agora::rtc::AudioVolumeInfo
The volume information of users.
Definition: AgoraBase.h:3967
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
The degree of blurring applied to the custom background image.
Definition: AgoraBase.h:5917
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:5018
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1798
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:7856
agora::rtc::BeautyOptions
Image enhancement options.
Definition: AgoraBase.h:5389
agora::rtc::SenderOptions
Definition: AgoraBase.h:1336
agora::rtc::WatermarkBuffer::height
int height
Definition: AgoraBase.h:2555
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:6519
agora::rtc::EchoTestConfiguration::channelId
const char * channelId
Definition: AgoraBase.h:7535
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:5418
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2755
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:5907
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:4600
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:4000
agora::rtc::LastmileProbeConfig
Configurations of the last-mile network test.
Definition: AgoraBase.h:4941
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:4494
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:6556
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2771
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2831
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:4180
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:3181
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:8064
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:2085
agora::rtc::WatermarkConfig::buffer
WatermarkBuffer buffer
Definition: AgoraBase.h:2593
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:6570
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:5809
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:5295
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5771
agora::rtc::WatermarkConfig::literal
WatermarkLiteral literal
Definition: AgoraBase.h:2605
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:4537
agora::rtc::SimulcastConfig::StreamLayerIndex
StreamLayerIndex
Index of video streams of different quality levels.
Definition: AgoraBase.h:2256
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2866
agora::rtc::SimulcastConfig::STREAM_LAYER_2
@ STREAM_LAYER_2
Definition: AgoraBase.h:2264
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:3173
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:6536
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:6807
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1345
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1579
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:4589
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:7087
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:4184
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:4998
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:5424
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:5842
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:5291
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2739
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2239
agora::rtc::SegmentationProperty::SEG_MODEL_GREEN
@ SEG_MODEL_GREEN
Definition: AgoraBase.h:5992
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1168
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:7894
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:4948
agora::rtc::RecorderStreamInfo::channelId
const char * channelId
Definition: AgoraBase.h:7936
agora::rtc::LocalAccessPointConfiguration
Configuration for the Local Access Point.
Definition: AgoraBase.h:7862
agora::rtc::FilterEffectOptions::path
const char * path
Definition: AgoraBase.h:5730
agora::rtc::SegmentationProperty::SCREEN_COLOR_TYPE
SCREEN_COLOR_TYPE
Screen color type.
Definition: AgoraBase.h:5998
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:4604
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Video noise reduction mode.
Definition: AgoraBase.h:5804
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWIDTH
@ FACE_SHAPE_AREA_NOSEWIDTH
Definition: AgoraBase.h:5574
agora::rtc::LiveTranscoding
Transcoding configurations for Media Push.
Definition: AgoraBase.h:4546
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2743
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:3177
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:2336
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:7867
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:5263
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2851
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:6717
agora::rtc::EncodedVideoFrameInfo
Information about externally encoded video frames.
Definition: AgoraBase.h:1729
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:5861
agora::rtc::MultipathStats::activePathNum
int activePathNum
Definition: AgoraBase.h:2716
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:8069
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:5895
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSMILE
@ FACE_SHAPE_AREA_MOUTHSMILE
Definition: AgoraBase.h:5624
agora::rtc::FaceShapeBeautyOptions::shapeStyle
FACE_SHAPE_BEAUTY_STYLE shapeStyle
Definition: AgoraBase.h:5693
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:5430
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2763
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4724
agora::rtc::WatermarkOptions::zOrder
int zOrder
Definition: AgoraBase.h:2431
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2061
agora::rtc::EncodedAudioFrameInfo
Audio information after encoding.
Definition: AgoraBase.h:1561
agora::util::AutoPtr
Definition: AgoraBase.h:100
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:4994
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:859
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:6549
agora::rtc::IPacketObserver::Packet
Configurations for the Packet instance.
Definition: AgoraBase.h:4031
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:6071
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSELENGTH
@ FACE_SHAPE_AREA_NOSELENGTH
Definition: AgoraBase.h:5568
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:4674
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:7940
agora::rtc::VideoEncoderConfiguration
Video encoder configurations.
Definition: AgoraBase.h:2051
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2348
agora::rtc::SimulcastConfig::StreamLayerConfig::framerate
int framerate
Definition: AgoraBase.h:2306
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:2075
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:7775
agora::util::AList
Definition: AgoraBase.h:233
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2881
agora::rtc::VideoSubscriptionOptions
Video subscription options.
Definition: AgoraBase.h:1699
agora::rtc::TranscodingUser
Transcoding configurations of each host.
Definition: AgoraBase.h:4478
agora::rtc::WatermarkConfig::id
const char * id
Definition: AgoraBase.h:2584
agora::rtc::PathStats
Statistical information about a specific network path.
Definition: AgoraBase.h:2666
agora::rtc::EchoTestConfiguration
The configuration of the audio and video call loop test.
Definition: AgoraBase.h:7502
agora::rtc::RtcImage
Image properties.
Definition: AgoraBase.h:4351
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:4488
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACECONTOUR
@ FACE_SHAPE_AREA_FACECONTOUR
Definition: AgoraBase.h:5484
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:7041
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:7790
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:6723
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:5412
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2382
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:8082
agora::rtc::SimulcastStreamConfig
The configuration of the low-quality video stream.
Definition: AgoraBase.h:2224
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:4660
agora::rtc::WatermarkBuffer::buffer
const uint8_t * buffer
Definition: AgoraBase.h:2570
agora::rtc::FaceShapeAreaOptions::shapeArea
FACE_SHAPE_AREA shapeArea
Definition: AgoraBase.h:5650
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:7081
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:4361
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:5938
agora::rtc::FaceShapeBeautyOptions
The facial enhancement style options.
Definition: AgoraBase.h:5668
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4718
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:4813
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:4382
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACELENGTH
@ FACE_SHAPE_AREA_FACELENGTH
Definition: AgoraBase.h:5490
agora::rtc::WatermarkTimestamp::format
const char * format
Definition: AgoraBase.h:2498
agora::rtc::MixedAudioStream
The source of the audio streams that are mixed locally.
Definition: AgoraBase.h:4857
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2997
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3983
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:4482
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:5322
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:7714
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:4413
agora::rtc::AdvancedConfigInfo
Advanced options for the Local Access Point.
Definition: AgoraBase.h:7851
agora::rtc::ScreenAudioParameters::channels
int channels
Definition: AgoraBase.h:6448
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2344
agora::rtc::SimulcastConfig::publish_fallback_enable
bool publish_fallback_enable
Definition: AgoraBase.h:2328
agora::rtc::MultipathStats::wifiRxBytes
uint32_t wifiRxBytes
Definition: AgoraBase.h:2704
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:4171
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:4356
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:4037
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1811
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2886
agora::rtc::SimulcastConfig::configs
StreamLayerConfig configs[STREAM_LAYER_COUNT_MAX]
Definition: AgoraBase.h:2319
agora::rtc::WatermarkConfig::imageUrl
const char * imageUrl
Definition: AgoraBase.h:2609
agora::rtc::ColorEnhanceOptions
The color enhancement options.
Definition: AgoraBase.h:5855
agora::rtc::MultipathStats::wifiTxBytes
uint32_t wifiTxBytes
Definition: AgoraBase.h:2700
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:6734
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:853
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2418
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:7898
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:5022
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:4637
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2340
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:4799
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEDISTANCE
@ FACE_SHAPE_AREA_EYEDISTANCE
Definition: AgoraBase.h:5530
agora::rtc::WatermarkConfig::timestamp
WatermarkTimestamp timestamp
Definition: AgoraBase.h:2599
agora::util::IString
Definition: AgoraBase.h:172
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:7890
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:8091
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
The low-light enhancement level.
Definition: AgoraBase.h:5765
agora::rtc::SegmentationProperty::SEG_MODEL_TYPE
SEG_MODEL_TYPE
The type of algorithms to user for background processing.
Definition: AgoraBase.h:5984
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1595
agora::rtc::LocalTranscoderConfiguration
The configuration of the video mixing on the local client.
Definition: AgoraBase.h:4791
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
The contrast level.
Definition: AgoraBase.h:5393
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2376
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:4167
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1704
agora::rtc::RecorderStreamInfo::type
RecorderStreamType type
Definition: AgoraBase.h:7944
agora::rtc::LocalAudioMixerConfiguration::audioInputStreams
MixedAudioStream * audioInputStreams
Definition: AgoraBase.h:4924
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHPOSITION
@ FACE_SHAPE_AREA_MOUTHPOSITION
Definition: AgoraBase.h:5618
agora::rtc::WatermarkConfig::options
WatermarkOptions options
Definition: AgoraBase.h:2615
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:4964
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2811
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:4041
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:4678
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWING
@ FACE_SHAPE_AREA_NOSEWING
Definition: AgoraBase.h:5580
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:4650
agora::rtc::IPacketObserver
Definition: AgoraBase.h:4025
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:4645
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHIN
@ FACE_SHAPE_AREA_CHIN
Definition: AgoraBase.h:5518
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWTHICKNESS
@ FACE_SHAPE_AREA_EYEBROWTHICKNESS
Definition: AgoraBase.h:5644
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2802
agora::VideoLayout::width
uint32_t width
Definition: AgoraBase.h:8155
agora::rtc::VideoFormat
The format of the video frame.
Definition: AgoraBase.h:3160
agora::rtc::AdvanceOptions
Advanced options for video encoding.
Definition: AgoraBase.h:1867
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:4517
agora::rtc::MixedAudioStream::trackId
track_id_t trackId
Definition: AgoraBase.h:4888
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2423
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEKBONE
@ FACE_SHAPE_AREA_CHEEKBONE
Definition: AgoraBase.h:5501
agora::rtc::DataStreamConfig
The configurations for the data stream.
Definition: AgoraBase.h:2179
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1876
agora::rtc::LocalAudioMixerConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4920
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2751
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2841
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:5014
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:2108
agora::rtc::VideoCanvas::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraBase.h:5326
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:7037
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:4562
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1549
agora::rtc::LocalAudioMixerConfiguration
The configurations for mixing the lcoal audio.
Definition: AgoraBase.h:4916
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1776
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2787
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2759
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1555
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:8122
agora::rtc::CodecCapLevels::hwDecodingLevel
VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel
Definition: AgoraBase.h:1998
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2779
agora::VideoLayout::height
uint32_t height
Definition: AgoraBase.h:8159
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3974
agora::rtc::WatermarkLiteral
The definition of the WatermarkLiteral struct.
Definition: AgoraBase.h:2509
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:5397
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:4569
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_FEMALE
@ FACE_SHAPE_BEAUTY_STYLE_FEMALE
Definition: AgoraBase.h:5678
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3912
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3926
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE
FACE_SHAPE_BEAUTY_STYLE
The facial enhancement style options.
Definition: AgoraBase.h:5674
agora::rtc::SegmentationProperty::SCREEN_COLOR_BLUE
@ SCREEN_COLOR_BLUE
Definition: AgoraBase.h:6010
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEK
@ FACE_SHAPE_AREA_CHEEK
Definition: AgoraBase.h:5506
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSCALE
@ FACE_SHAPE_AREA_MOUTHSCALE
Definition: AgoraBase.h:5612
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:4498
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_MALE
@ FACE_SHAPE_BEAUTY_STYLE_MALE
Definition: AgoraBase.h:5682
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:6562
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACEWIDTH
@ FACE_SHAPE_AREA_FACEWIDTH
Definition: AgoraBase.h:5495
agora::base::AParameter
Definition: AgoraBase.h:8018
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:5436
agora::rtc::MultipathStats::lanTxBytes
uint32_t lanTxBytes
Definition: AgoraBase.h:2692
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:7281
agora::util::AOutputIterator
Definition: AgoraBase.h:202
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2413
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:6816
agora::rtc::WatermarkBuffer::length
int length
Definition: AgoraBase.h:2559
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1780
agora::rtc::WatermarkTimestamp::fontSize
int fontSize
Definition: AgoraBase.h:2479
agora::rtc::ScreenAudioParameters
The audio configuration for the shared screen stream.
Definition: AgoraBase.h:6440
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:3908
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:7730
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:5002
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1807
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1790
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:4619
agora::rtc::SimulcastConfig::StreamLayerConfig
Configures the parameters of a specific layer in multi-quality video streams.
Definition: AgoraBase.h:2298
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3920
agora::rtc::DeviceInfo::isLowLatencyAudioSupported
bool isLowLatencyAudioSupported
Definition: AgoraBase.h:4017
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:4626
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:4655
agora::rtc::ChannelMediaRelayConfiguration
Configuration of cross channel media relay.
Definition: AgoraBase.h:7050
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:5968
agora::rtc::MultipathStats::pathStats
const PathStats * pathStats
Definition: AgoraBase.h:2720
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:7564
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2198
agora::rtc::LiveStreamAdvancedFeature
The configuration for advanced features of the RTMP or RTMPS streaming with transcoding.
Definition: AgoraBase.h:4400
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:5952
agora::rtc::LastmileProbeOneWayResult
Results of the uplink or downlink last-mile network test.
Definition: AgoraBase.h:4990
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEGENERAL
@ FACE_SHAPE_AREA_NOSEGENERAL
Definition: AgoraBase.h:5605
agora::rtc::VideoDenoiserOptions
Video noise reduction options.
Definition: AgoraBase.h:5800
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2389
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5824
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:5309
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1627
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:2065
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2352
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1631
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2427
agora::rtc::MixedAudioStream::channelId
const char * channelId
Definition: AgoraBase.h:4881
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1583
agora::UserInfo
The information of the user.
Definition: AgoraBase.h:849
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2891
agora::rtc::VirtualBackgroundSource
The custom background.
Definition: AgoraBase.h:5885
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPUPILS
@ FACE_SHAPE_AREA_EYEPUPILS
Definition: AgoraBase.h:5549
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:5787
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:5274
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:4731
agora::rtc::ScreenCaptureParameters::audioParams
ScreenAudioParameters audioParams
Definition: AgoraBase.h:6482
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:6803
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:7294
agora::rtc::ScreenCaptureParameters::captureAudio
bool captureAudio
Definition: AgoraBase.h:6476
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:5903
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:4632
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:3994
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSETIP
@ FACE_SHAPE_AREA_NOSETIP
Definition: AgoraBase.h:5598
agora::rtc::ChannelMediaInfo
Channel media information.
Definition: AgoraBase.h:7029
agora::rtc::WatermarkLiteral::wmLiteral
const char * wmLiteral
Definition: AgoraBase.h:2524
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:865
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:5760
agora::VideoLayout::y
uint32_t y
Definition: AgoraBase.h:8151
agora::rtc::WatermarkLiteral::fontSize
int fontSize
Definition: AgoraBase.h:2514
agora::rtc::LocalAudioStats::aecEstimatedDelay
int aecEstimatedDelay
Definition: AgoraBase.h:4197
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:5283
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:8076
agora::rtc::LocalAudioStats::earMonitorDelay
int earMonitorDelay
Definition: AgoraBase.h:4192
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA
FACE_SHAPE_AREA
Chooses the specific facial areas that need to be adjusted.
Definition: AgoraBase.h:5465
agora::rtc::MultipathStats::lanRxBytes
uint32_t lanRxBytes
Definition: AgoraBase.h:2696
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3930
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2767
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1591
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1815
agora::rtc::SimulcastConfig::STREAM_LAYER_6
@ STREAM_LAYER_6
Definition: AgoraBase.h:2280
agora::rtc::MultipathStats::mobileRxBytes
uint32_t mobileRxBytes
Definition: AgoraBase.h:2712
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEINNERCORNER
@ FACE_SHAPE_AREA_EYEINNERCORNER
Definition: AgoraBase.h:5556
agora::rtc::LocalAudioStats::audioPlayoutDelay
int audioPlayoutDelay
Definition: AgoraBase.h:4188
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:8105
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3934
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_LOWEREYELID
@ FACE_SHAPE_AREA_LOWEREYELID
Definition: AgoraBase.h:5543
agora::rtc::AdvanceOptions::encodeAlpha
bool encodeAlpha
Definition: AgoraBase.h:1883
agora::VideoLayout::strUid
user_id_t strUid
Definition: AgoraBase.h:8139
agora::rtc::LogUploadServerInfo
Configuration information for the log server.
Definition: AgoraBase.h:7822
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Video noise reduction level.
Definition: AgoraBase.h:5818
agora::rtc::AudioTrackConfig::enableAudioProcessing
bool enableAudioProcessing
Definition: AgoraBase.h:6079
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:5299
agora::rtc::CodecCapInfo
The codec capability of the SDK.
Definition: AgoraBase.h:2013
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:6513
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:6758
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2876
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:4670
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:4374
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2229
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1794
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:4954
agora::rtc::SegmentationProperty::modelType
SEG_MODEL_TYPE modelType
Definition: AgoraBase.h:6016
agora::rtc::MultipathStats
Aggregates statistics of each network path in multipath transmission.
Definition: AgoraBase.h:2688
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2795
agora::rtc::EchoTestConfiguration::intervalInSeconds
int intervalInSeconds
Definition: AgoraBase.h:7543
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4795
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:5405
agora::base::LicenseCallback
Definition: AgoraBase.h:8032
agora::rtc::EncryptionConfig
Built-in encryption configurations.
Definition: AgoraBase.h:7276
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:4595
agora::rtc::SimulcastConfig::STREAM_LOW
@ STREAM_LOW
Definition: AgoraBase.h:2284
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
The custom background.
Definition: AgoraBase.h:5889
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:7723
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:5279
agora::rtc::LocalAccessPointConfiguration::disableAut
bool disableAut
Definition: AgoraBase.h:7904
agora::rtc::ScreenAudioParameters::sampleRate
int sampleRate
Definition: AgoraBase.h:6444
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:6507
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1164
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:4741
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:4584
agora::rtc::TranscodingVideoStream
The video streams for local video mixing.
Definition: AgoraBase.h:4714
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:5961
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:7830
agora::rtc::EncryptionConfig::datastreamEncryptionEnabled
bool datastreamEncryptionEnabled
Definition: AgoraBase.h:7301
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYESCALE
@ FACE_SHAPE_AREA_EYESCALE
Definition: AgoraBase.h:5523
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHLIP
@ FACE_SHAPE_AREA_MOUTHLIP
Definition: AgoraBase.h:5631
agora::rtc::SimulcastConfig::STREAM_LAYER_5
@ STREAM_LAYER_5
Definition: AgoraBase.h:2276
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEBRIDGE
@ FACE_SHAPE_AREA_NOSEBRIDGE
Definition: AgoraBase.h:5592
agora::rtc::SegmentationProperty::SCREEN_COLOR_AUTO
@ SCREEN_COLOR_AUTO
Definition: AgoraBase.h:6002
agora::VideoLayout::videoState
uint32_t videoState
Definition: AgoraBase.h:8167
agora::rtc::MixedAudioStream::sourceType
AUDIO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4861
agora::rtc::WatermarkConfig
Used to configure watermark-related information.
Definition: AgoraBase.h:2580
agora::rtc::EchoTestConfiguration::view
view_t view
Definition: AgoraBase.h:7507
agora::rtc::RtcStats
Statistics of a call session.
Definition: AgoraBase.h:2735
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1711
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:5911
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2408
agora::rtc::LowlightEnhanceOptions
The low-light enhancement options.
Definition: AgoraBase.h:5746
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:4511
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:4554
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1605
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2747
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2783
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:5837
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2775
agora::rtc::SegmentationProperty::greenCapacity
float greenCapacity
Definition: AgoraBase.h:6026
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:4163
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:7760
agora::rtc::SimulcastConfig::STREAM_LAYER_COUNT_MAX
@ STREAM_LAYER_COUNT_MAX
Definition: AgoraBase.h:2288
agora::rtc::WatermarkOptions
Watermark image configurations.
Definition: AgoraBase.h:2402
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:2103
agora::rtc::LocalAudioStats
Local audio statistics.
Definition: AgoraBase.h:4159
agora::rtc::RecorderStreamInfo
The information about the media streams to be recorded.
Definition: AgoraBase.h:7932
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:7834
agora::rtc::SimulcastConfig
Configure video streams of different quality levels.
Definition: AgoraBase.h:2252
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:6527
agora::rtc::MixedAudioStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4867
agora::rtc::WatermarkBuffer::width
int width
Definition: AgoraBase.h:2551
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:4366
agora::rtc::FocalLengthInfo::focalLengthType
CAMERA_FOCAL_LENGTH_TYPE focalLengthType
Definition: AgoraBase.h:2045
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1541
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2826
agora::rtc::EchoTestConfiguration::enableVideo
bool enableVideo
Definition: AgoraBase.h:7521
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2821
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:4959
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:3904
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPOSITION
@ FACE_SHAPE_AREA_EYEPOSITION
Definition: AgoraBase.h:5537
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:1871
agora::rtc::SegmentationProperty::screenColorType
SCREEN_COLOR_TYPE screenColorType
Definition: AgoraBase.h:6031
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3916
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:5776
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2856
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:2025
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:4683
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:2021
agora::rtc::AudioRecordingConfiguration
Recording configurations.
Definition: AgoraBase.h:6711
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:8056
agora::rtc::WatermarkTimestamp::strokeWidth
int strokeWidth
Definition: AgoraBase.h:2490
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
The low-light enhancement mode.
Definition: AgoraBase.h:5750
agora::util::IContainer
Definition: AgoraBase.h:193
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:5932
agora::rtc::LocalAudioMixerConfiguration::syncWithLocalMic
bool syncWithLocalMic
Definition: AgoraBase.h:4933
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MANDIBLE
@ FACE_SHAPE_AREA_MANDIBLE
Definition: AgoraBase.h:5512
agora::rtc::VideoDimensions
The video dimension.
Definition: AgoraBase.h:1160
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:5922
agora::rtc::SegmentationProperty::SEG_MODEL_AI
@ SEG_MODEL_AI
Definition: AgoraBase.h:5988
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_NATURAL
@ FACE_SHAPE_BEAUTY_STYLE_NATURAL
Definition: AgoraBase.h:5687
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:7745
agora::rtc::FaceShapeAreaOptions::shapeIntensity
int shapeIntensity
Definition: AgoraBase.h:5656
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:4754
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2190
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:5782
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:4608
agora::rtc::WatermarkBuffer
Configures the format, size, and pixel buffer of the watermark image.
Definition: AgoraBase.h:2546
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FOREHEAD
@ FACE_SHAPE_AREA_FOREHEAD
Definition: AgoraBase.h:5479
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::WatermarkTimestamp
The definition of the WatermarkTimestamp struct.
Definition: AgoraBase.h:2475
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:2017
agora::rtc::AudioTrackConfig
The configuration of custom audio tracks.
Definition: AgoraBase.h:6065
agora::rtc::FocalLengthInfo::cameraDirection
int cameraDirection
Definition: AgoraBase.h:2041
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:7872
agora::rtc::SimulcastConfig::STREAM_LAYER_4
@ STREAM_LAYER_4
Definition: AgoraBase.h:2272
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:4750
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:4773
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:2235
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:4388
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEOUTERCORNER
@ FACE_SHAPE_AREA_EYEOUTERCORNER
Definition: AgoraBase.h:5563
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4736
agora::rtc::VideoCanvas::subviewUid
uid_t subviewUid
Definition: AgoraBase.h:5268
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:7287
agora::rtc::MultipathStats::mobileTxBytes
uint32_t mobileTxBytes
Definition: AgoraBase.h:2708
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1802
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:5927
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:6543
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:7880
agora::rtc::SimulcastConfig::STREAM_LAYER_3
@ STREAM_LAYER_3
Definition: AgoraBase.h:2268
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:1619
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3889
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:4804
agora::rtc::EchoTestConfiguration::enableAudio
bool enableAudio
Definition: AgoraBase.h:7514
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_HEADSCALE
@ FACE_SHAPE_AREA_HEADSCALE
Definition: AgoraBase.h:5474
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1340
agora::rtc::SimulcastConfig::StreamLayerConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2302
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:5899
agora::rtc::CodecCapLevels::swDecodingLevel
VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel
Definition: AgoraBase.h:2003
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1635
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:5756
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2871
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NONE
@ FACE_SHAPE_AREA_NONE
Definition: AgoraBase.h:5469
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:4575
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2896
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2791
agora::rtc::FaceShapeAreaOptions
Filter effect options.
Definition: AgoraBase.h:5459
agora::rtc::CodecCapLevels
The level of the codec capability.
Definition: AgoraBase.h:1993
agora::SpatialAudioParams
The spatial audio parameters.
Definition: AgoraBase.h:8046
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:5874
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:5832
agora::rtc::SegmentationProperty::SCREEN_COLOR_GREEN
@ SCREEN_COLOR_GREEN
Definition: AgoraBase.h:6006
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:2055
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:5026
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:4746
agora::rtc::PathStats::rxKBitRate
int rxKBitRate
Definition: AgoraBase.h:2678
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEROOT
@ FACE_SHAPE_AREA_NOSEROOT
Definition: AgoraBase.h:5586
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2861
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:5401
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:7064
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:2089
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWPOSITION
@ FACE_SHAPE_AREA_EYEBROWPOSITION
Definition: AgoraBase.h:5638
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:4420
agora::rtc::WatermarkBuffer::format
media::base::VIDEO_PIXEL_FORMAT format
Definition: AgoraBase.h:2565
agora::rtc::FocalLengthInfo
Focal length information supported by the camera, including the camera direction and focal length typ...
Definition: AgoraBase.h:2037
agora::rtc::EchoTestConfiguration::token
const char * token
Definition: AgoraBase.h:7529
agora::rtc::DeviceInfo
The audio device information.
Definition: AgoraBase.h:4011
agora::base::IEngineBase
Definition: AgoraBase.h:8012
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1406
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:6743
agora::util::IIterator
Definition: AgoraBase.h:184
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:7568
agora::rtc::VideoRenderingTracingInfo
Indicators during video frame rendering progress.
Definition: AgoraBase.h:7708
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:7840
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:5813
agora::rtc::WatermarkTimestamp::fontFilePath
const char * fontFilePath
Definition: AgoraBase.h:2486
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1587
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1784
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2836
agora::rtc::FaceShapeBeautyOptions::styleIntensity
int styleIntensity
Definition: AgoraBase.h:5700
agora::rtc::WatermarkLiteral::fontFilePath
const char * fontFilePath
Definition: AgoraBase.h:2531
agora::VideoLayout::uid
rtc::uid_t uid
Definition: AgoraBase.h:8135
agora::rtc::WatermarkConfig::type
WATERMARK_SOURCE_TYPE type
Definition: AgoraBase.h:2588
agora::rtc::PathStats::txKBitRate
int txKBitRate
Definition: AgoraBase.h:2674
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:7885
agora::rtc::PathStats::type
MultipathType type
Definition: AgoraBase.h:2670
agora::rtc::ClientRoleOptions
Setting of user role properties.
Definition: AgoraBase.h:2992
agora::rtc::WatermarkLiteral::strokeWidth
int strokeWidth
Definition: AgoraBase.h:2518
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:4502
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:5259
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:4175
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:6738
agora::rtc::SegmentationProperty
Processing properties for background images.
Definition: AgoraBase.h:5980
agora::rtc::SimulcastConfig::StreamLayerConfig::enable
bool enable
Definition: AgoraBase.h:2312
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:7033