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 {
273  CHANNEL_PROFILE_COMMUNICATION = 0,
279  CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
284  CHANNEL_PROFILE_GAME __deprecated = 2,
290  CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
291 
296  CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
297 };
298 
302 enum WARN_CODE_TYPE {
307  WARN_INVALID_VIEW = 8,
312  WARN_INIT_VIDEO = 16,
317  WARN_PENDING = 20,
322  WARN_NO_AVAILABLE_CHANNEL = 103,
328  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
333  WARN_LOOKUP_CHANNEL_REJECTED = 105,
339  WARN_OPEN_CHANNEL_TIMEOUT = 106,
344  WARN_OPEN_CHANNEL_REJECTED = 107,
345 
346  // sdk: 100~1000
350  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
354  WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
358  WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
362  WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
366  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
370  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
374  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
377  WARN_CHANNEL_SOCKET_ERROR = 134,
381  WARN_AUDIO_MIXING_OPEN_ERROR = 701,
385  WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
389  WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
393  WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
397  WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
401  WARN_ADM_RECORD_MALFUNCTION = 1021,
405  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
409  WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
417  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
421  WARN_APM_HOWLING = 1051,
425  WARN_ADM_GLITCH_STATE = 1052,
429  WARN_ADM_IMPROPER_SETTINGS = 1053,
433  WARN_ADM_POP_STATE = 1055,
437  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
442  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
450  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
451 };
452 
456 enum ERROR_CODE_TYPE {
460  ERR_OK = 0,
461  // 1~1000
465  ERR_FAILED = 1,
470  ERR_INVALID_ARGUMENT = 2,
477  ERR_NOT_READY = 3,
481  ERR_NOT_SUPPORTED = 4,
485  ERR_REFUSED = 5,
489  ERR_BUFFER_TOO_SMALL = 6,
493  ERR_NOT_INITIALIZED = 7,
497  ERR_INVALID_STATE = 8,
502  ERR_NO_PERMISSION = 9,
508  ERR_TIMEDOUT = 10,
513  ERR_CANCELED = 11,
519  ERR_TOO_OFTEN = 12,
525  ERR_BIND_SOCKET = 13,
530  ERR_NET_DOWN = 14,
536  ERR_JOIN_CHANNEL_REJECTED = 17,
543  ERR_LEAVE_CHANNEL_REJECTED = 18,
547  ERR_ALREADY_IN_USE = 19,
552  ERR_ABORTED = 20,
557  ERR_INIT_NET_ENGINE = 21,
562  ERR_RESOURCE_LIMITED = 22,
567  ERR_FUNC_IS_PROHIBITED = 23,
574  ERR_INVALID_APP_ID = 101,
579  ERR_INVALID_CHANNEL_NAME = 102,
585  ERR_NO_SERVER_RESOURCES = 103,
598  ERR_TOKEN_EXPIRED = 109,
615  ERR_INVALID_TOKEN = 110,
620  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
625  ERR_CONNECTION_LOST = 112, // only used in web sdk
630  ERR_NOT_IN_CHANNEL = 113,
635  ERR_SIZE_TOO_LARGE = 114,
640  ERR_BITRATE_LIMIT = 115,
645  ERR_TOO_MANY_DATA_STREAMS = 116,
649  ERR_STREAM_MESSAGE_TIMEOUT = 117,
653  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
658  ERR_DECRYPTION_FAILED = 120,
662  ERR_INVALID_USER_ID = 121,
667  ERR_DATASTREAM_DECRYPTION_FAILED = 122,
671  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
677  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
678 
682  ERR_LICENSE_CREDENTIAL_INVALID = 131,
683 
688  ERR_INVALID_USER_ACCOUNT = 134,
689 
696  ERR_MODULE_NOT_FOUND = 157,
697 
698  // Licensing, keep the license error code same as the main version
699  ERR_CERT_RAW = 157,
700  ERR_CERT_JSON_PART = 158,
701  ERR_CERT_JSON_INVAL = 159,
702  ERR_CERT_JSON_NOMEM = 160,
703  ERR_CERT_CUSTOM = 161,
704  ERR_CERT_CREDENTIAL = 162,
705  ERR_CERT_SIGN = 163,
706  ERR_CERT_FAIL = 164,
707  ERR_CERT_BUF = 165,
708  ERR_CERT_NULL = 166,
709  ERR_CERT_DUEDATE = 167,
710  ERR_CERT_REQUEST = 168,
711 
712  // PcmSend Error num
713  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
714  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
715 
717  // RDT error code: 250~270
722  ERR_RDT_USER_NOT_EXIST = 250,
727  ERR_RDT_USER_NOT_READY = 251,
732  ERR_RDT_DATA_BLOCKED = 252,
737  ERR_RDT_CMD_EXCEED_LIMIT = 253,
742  ERR_RDT_DATA_EXCEED_LIMIT = 254,
747  ERR_RDT_ENCRYPTION = 255,
749 
751  // signaling: 400~600
752  ERR_LOGIN_ALREADY_LOGIN = 428,
753 
755  // 1001~2000
759  ERR_LOAD_MEDIA_ENGINE = 1001,
765  ERR_ADM_GENERAL_ERROR = 1005,
770  ERR_ADM_INIT_PLAYOUT = 1008,
774  ERR_ADM_START_PLAYOUT = 1009,
778  ERR_ADM_STOP_PLAYOUT = 1010,
783  ERR_ADM_INIT_RECORDING = 1011,
787  ERR_ADM_START_RECORDING = 1012,
791  ERR_ADM_STOP_RECORDING = 1013,
795  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
796 };
797 
798 enum LICENSE_ERROR_TYPE {
802  LICENSE_ERR_INVALID = 1,
806  LICENSE_ERR_EXPIRE = 2,
810  LICENSE_ERR_MINUTES_EXCEED = 3,
814  LICENSE_ERR_LIMITED_PERIOD = 4,
818  LICENSE_ERR_DIFF_DEVICES = 5,
822  LICENSE_ERR_INTERNAL = 99,
823 };
824 
828 enum AUDIO_SESSION_OPERATION_RESTRICTION {
832  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
836  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
840  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
845  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
850  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
851 };
852 
853 typedef const char* user_id_t;
854 typedef void* view_t;
855 
859 struct UserInfo {
869  bool hasAudio;
875  bool hasVideo;
876 
877  UserInfo() : hasAudio(false), hasVideo(false) {}
878 };
879 
880 typedef util::AList<UserInfo> UserList;
881 
882 // Shared between Agora Service and Rtc Engine
883 namespace rtc {
884 
888 enum USER_OFFLINE_REASON_TYPE {
892  USER_OFFLINE_QUIT = 0,
898  USER_OFFLINE_DROPPED = 1,
902  USER_OFFLINE_BECOME_AUDIENCE = 2,
903 };
904 
905 enum INTERFACE_ID_TYPE {
906  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
907  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
908  AGORA_IID_PARAMETER_ENGINE = 3,
909  AGORA_IID_MEDIA_ENGINE = 4,
910  AGORA_IID_AUDIO_ENGINE = 5,
911  AGORA_IID_VIDEO_ENGINE = 6,
912  AGORA_IID_RTC_CONNECTION = 7,
913  AGORA_IID_SIGNALING_ENGINE = 8,
914  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
915  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
916  AGORA_IID_STATE_SYNC = 13,
917  AGORA_IID_META_SERVICE = 14,
918  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
919  AGORA_IID_H265_TRANSCODER = 16,
920 };
921 
925 enum QUALITY_TYPE {
930  QUALITY_UNKNOWN __deprecated = 0,
934  QUALITY_EXCELLENT = 1,
939  QUALITY_GOOD = 2,
943  QUALITY_POOR = 3,
947  QUALITY_BAD = 4,
951  QUALITY_VBAD = 5,
955  QUALITY_DOWN = 6,
959  QUALITY_UNSUPPORTED = 7,
963  QUALITY_DETECTING = 8,
964 };
965 
969 enum FIT_MODE_TYPE {
974  MODE_COVER = 1,
975 
981  MODE_CONTAIN = 2,
982 };
983 
987 enum VIDEO_ORIENTATION {
991  VIDEO_ORIENTATION_0 = 0,
995  VIDEO_ORIENTATION_90 = 90,
999  VIDEO_ORIENTATION_180 = 180,
1003  VIDEO_ORIENTATION_270 = 270
1004 };
1005 
1009 enum FRAME_RATE {
1013  FRAME_RATE_FPS_1 = 1,
1017  FRAME_RATE_FPS_7 = 7,
1021  FRAME_RATE_FPS_10 = 10,
1025  FRAME_RATE_FPS_15 = 15,
1029  FRAME_RATE_FPS_24 = 24,
1033  FRAME_RATE_FPS_30 = 30,
1037  FRAME_RATE_FPS_60 = 60,
1038 };
1039 
1040 enum FRAME_WIDTH {
1041  FRAME_WIDTH_960 = 960,
1042 };
1043 
1044 enum FRAME_HEIGHT {
1045  FRAME_HEIGHT_540 = 540,
1046 };
1047 
1051 enum VIDEO_FRAME_TYPE {
1053  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1055  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1057  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1059  VIDEO_FRAME_TYPE_B_FRAME = 5,
1061  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1063  VIDEO_FRAME_TYPE_UNKNOW
1064 };
1065 
1069 enum ORIENTATION_MODE {
1077  ORIENTATION_MODE_ADAPTIVE = 0,
1084  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1091  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1092 };
1093 
1097 enum DEGRADATION_PREFERENCE {
1104  MAINTAIN_AUTO = -1,
1112  MAINTAIN_QUALITY = 0,
1118  MAINTAIN_FRAMERATE = 1,
1125  MAINTAIN_BALANCED = 2,
1129  MAINTAIN_RESOLUTION = 3,
1133  DISABLED = 100,
1134 };
1135 
1143  int width;
1147  int height;
1148  VideoDimensions() : width(640), height(480) {}
1149  VideoDimensions(int w, int h) : width(w), height(h) {}
1150  bool operator==(const VideoDimensions& rhs) const {
1151  return width == rhs.width && height == rhs.height;
1152  }
1153 };
1154 
1160 const int STANDARD_BITRATE = 0;
1161 
1169 const int COMPATIBLE_BITRATE = -1;
1170 
1174 const int DEFAULT_MIN_BITRATE = -1;
1175 
1179 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1180 
1184 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1185  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1186  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1187  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1188 };
1189 
1193 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1195  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1197  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1199  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1201  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1203  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1204 };
1205 
1209 enum VIDEO_CODEC_TYPE {
1215  VIDEO_CODEC_NONE = 0,
1219  VIDEO_CODEC_VP8 = 1,
1223  VIDEO_CODEC_H264 = 2,
1227  VIDEO_CODEC_H265 = 3,
1233  VIDEO_CODEC_GENERIC = 6,
1238  VIDEO_CODEC_GENERIC_H264 = 7,
1243  VIDEO_CODEC_AV1 = 12,
1247  VIDEO_CODEC_VP9 = 13,
1251  VIDEO_CODEC_GENERIC_JPEG = 20,
1252 };
1253 
1257 enum CAMERA_FOCAL_LENGTH_TYPE {
1261  CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1265  CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1269  CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1273  CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1274 };
1275 
1279 enum TCcMode {
1283  CC_ENABLED,
1287  CC_DISABLED,
1288 };
1289 
1297  TCcMode ccMode;
1302  VIDEO_CODEC_TYPE codecType;
1303 
1364 
1365  SenderOptions() : ccMode(CC_ENABLED), codecType(VIDEO_CODEC_H265), targetBitrate(6500) {}
1366 };
1367 
1371 enum AUDIO_CODEC_TYPE {
1375  AUDIO_CODEC_OPUS = 1,
1376  // kIsac = 2,
1380  AUDIO_CODEC_PCMA = 3,
1384  AUDIO_CODEC_PCMU = 4,
1388  AUDIO_CODEC_G722 = 5,
1389  // kIlbc = 6,
1391  // AUDIO_CODEC_AAC = 7,
1395  AUDIO_CODEC_AACLC = 8,
1399  AUDIO_CODEC_HEAAC = 9,
1403  AUDIO_CODEC_JC1 = 10,
1407  AUDIO_CODEC_HEAAC2 = 11,
1411  AUDIO_CODEC_LPCNET = 12,
1415  AUDIO_CODEC_OPUSMC = 13,
1416 };
1417 
1421 enum AUDIO_ENCODING_TYPE {
1426  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1431  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1436  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1441  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1446  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1451  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1456  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1461  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1466  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1471  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1476  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1477 };
1478 
1482 enum WATERMARK_FIT_MODE {
1487  FIT_MODE_COVER_POSITION = 0,
1492  FIT_MODE_USE_IMAGE_RATIO = 1,
1493 };
1494 
1500 
1506  bool speech;
1513 };
1514 
1520  : codec(AUDIO_CODEC_AACLC),
1521  sampleRateHz(0),
1522  samplesPerChannel(0),
1523  numberOfChannels(0),
1524  captureTimeMs(0) {}
1525 
1527  : codec(rhs.codec),
1536  AUDIO_CODEC_TYPE codec;
1555 
1559  int64_t captureTimeMs;
1560 };
1566  : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1567 
1570  channelNum(rhs.channelNum),
1571  samplesOut(rhs.samplesOut),
1573  ntpTimeMs(rhs.ntpTimeMs) {}
1574 
1579 
1580  int16_t channelNum;
1581 
1582  // Output
1586  size_t samplesOut;
1590  int64_t elapsedTimeMs;
1594  int64_t ntpTimeMs;
1595 };
1599 enum H264PacketizeMode {
1603  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1607  SingleNalUnit, // Mode 0 - only single NALU allowed
1608 };
1609 
1613 enum VIDEO_STREAM_TYPE {
1617  VIDEO_STREAM_HIGH = 0,
1621  VIDEO_STREAM_LOW = 1,
1625  VIDEO_STREAM_LAYER_1 = 4,
1629  VIDEO_STREAM_LAYER_2 = 5,
1633  VIDEO_STREAM_LAYER_3 = 6,
1637  VIDEO_STREAM_LAYER_4 = 7,
1641  VIDEO_STREAM_LAYER_5 = 8,
1645  VIDEO_STREAM_LAYER_6 = 9,
1646 
1647 };
1648 
1663 
1665 };
1666 
1669 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1672  MAX_USER_ACCOUNT_LENGTH = 256
1673 };
1674 
1681  : uid(0),
1682  codecType(VIDEO_CODEC_H264),
1683  width(0),
1684  height(0),
1685  framesPerSecond(0),
1686  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1687  rotation(VIDEO_ORIENTATION_0),
1688  trackId(0),
1689  captureTimeMs(0),
1690  decodeTimeMs(0),
1691  streamType(VIDEO_STREAM_HIGH),
1692  presentationMs(-1) {}
1693 
1695  : uid(rhs.uid),
1696  codecType(rhs.codecType),
1697  width(rhs.width),
1698  height(rhs.height),
1700  frameType(rhs.frameType),
1701  rotation(rhs.rotation),
1702  trackId(rhs.trackId),
1705  streamType(rhs.streamType),
1706  presentationMs(rhs.presentationMs) {}
1707 
1708  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1709  if (this == &rhs) return *this;
1710  uid = rhs.uid;
1711  codecType = rhs.codecType;
1712  width = rhs.width;
1713  height = rhs.height;
1715  frameType = rhs.frameType;
1716  rotation = rhs.rotation;
1717  trackId = rhs.trackId;
1719  decodeTimeMs = rhs.decodeTimeMs;
1720  streamType = rhs.streamType;
1721  presentationMs = rhs.presentationMs;
1722  return *this;
1723  }
1724 
1728  uid_t uid;
1733  VIDEO_CODEC_TYPE codecType;
1737  int width;
1741  int height;
1751  VIDEO_FRAME_TYPE frameType;
1755  VIDEO_ORIENTATION rotation;
1759  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1760  // and additional payload for later implementation.
1764  int64_t captureTimeMs;
1768  int64_t decodeTimeMs;
1772  VIDEO_STREAM_TYPE streamType;
1773 
1774  // @technical preview
1775  int64_t presentationMs;
1776 };
1777 
1781 enum COMPRESSION_PREFERENCE {
1788  PREFER_COMPRESSION_AUTO = -1,
1792  PREFER_LOW_LATENCY = 0,
1796  PREFER_QUALITY = 1,
1797 };
1798 
1802 enum ENCODING_PREFERENCE {
1806  PREFER_AUTO = -1,
1810  PREFER_SOFTWARE = 0,
1814  PREFER_HARDWARE = 1,
1815 };
1816 
1824  ENCODING_PREFERENCE encodingPreference;
1825 
1829  COMPRESSION_PREFERENCE compressionPreference;
1830 
1836 
1837  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1838  compressionPreference(PREFER_COMPRESSION_AUTO),
1839  encodeAlpha(false) {}
1840 
1841  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1842  COMPRESSION_PREFERENCE compression_preference,
1843  bool encode_alpha) :
1844  encodingPreference(encoding_preference),
1845  compressionPreference(compression_preference),
1846  encodeAlpha(encode_alpha) {}
1847 
1848  bool operator==(const AdvanceOptions& rhs) const {
1849  return encodingPreference == rhs.encodingPreference &&
1850  compressionPreference == rhs.compressionPreference &&
1851  encodeAlpha == rhs.encodeAlpha;
1852  }
1853 };
1854 
1858 enum VIDEO_MIRROR_MODE_TYPE {
1862  VIDEO_MIRROR_MODE_AUTO = 0,
1866  VIDEO_MIRROR_MODE_ENABLED = 1,
1870  VIDEO_MIRROR_MODE_DISABLED = 2,
1871 };
1872 
1873 #if defined(__APPLE__) && TARGET_OS_IOS
1874 
1877 enum CAMERA_FORMAT_TYPE {
1879  CAMERA_FORMAT_NV12,
1881  CAMERA_FORMAT_BGRA,
1882 };
1883 #endif
1884 
1885 enum VIDEO_MODULE_TYPE {
1887  VIDEO_MODULE_CAPTURER = 0,
1889  VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1891  VIDEO_MODULE_HARDWARE_ENCODER = 2,
1893  VIDEO_MODULE_SOFTWARE_DECODER = 3,
1895  VIDEO_MODULE_HARDWARE_DECODER = 4,
1897  VIDEO_MODULE_RENDERER = 5,
1898 };
1899 
1900 enum HDR_CAPABILITY {
1902  HDR_CAPABILITY_UNKNOWN = -1,
1904  HDR_CAPABILITY_UNSUPPORTED = 0,
1906  HDR_CAPABILITY_SUPPORTED = 1,
1907 };
1908 
1910 enum CODEC_CAP_MASK {
1912  CODEC_CAP_MASK_NONE = 0,
1913 
1915  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1916 
1918  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1919 
1921  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1922 
1924  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1925 };
1926 
1928  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1929  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1930 
1931  CodecCapLevels()
1932  : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
1933  swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1934 };
1935 
1939  VIDEO_CODEC_TYPE codecType;
1944 
1945  CodecCapInfo() : codecType(VIDEO_CODEC_NONE), codecCapMask(0) {}
1946 };
1947 
1954  CAMERA_FOCAL_LENGTH_TYPE focalLengthType;
1955 };
1956 
1964  VIDEO_CODEC_TYPE codecType;
2032  int bitrate;
2033 
2053  ORIENTATION_MODE orientationMode;
2057  DEGRADATION_PREFERENCE degradationPreference;
2058 
2064  VIDEO_MIRROR_MODE_TYPE mirrorMode;
2065 
2070 
2071  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2072  : codecType(VIDEO_CODEC_NONE),
2073  dimensions(d),
2074  frameRate(f),
2075  bitrate(b),
2076  minBitrate(DEFAULT_MIN_BITRATE),
2077  orientationMode(m),
2078  degradationPreference(MAINTAIN_AUTO),
2079  mirrorMode(mirror),
2080  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2081  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2082  : codecType(VIDEO_CODEC_NONE),
2083  dimensions(width, height),
2084  frameRate(f),
2085  bitrate(b),
2086  minBitrate(DEFAULT_MIN_BITRATE),
2087  orientationMode(m),
2088  degradationPreference(MAINTAIN_AUTO),
2089  mirrorMode(mirror),
2090  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2091  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
2092  : codecType(config.codecType),
2093  dimensions(config.dimensions),
2094  frameRate(config.frameRate),
2095  bitrate(config.bitrate),
2096  minBitrate(config.minBitrate),
2099  mirrorMode(config.mirrorMode),
2100  advanceOptions(config.advanceOptions) {}
2101  VideoEncoderConfiguration()
2102  : codecType(VIDEO_CODEC_NONE),
2103  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2104  frameRate(FRAME_RATE_FPS_15),
2105  bitrate(STANDARD_BITRATE),
2106  minBitrate(DEFAULT_MIN_BITRATE),
2107  orientationMode(ORIENTATION_MODE_ADAPTIVE),
2108  degradationPreference(MAINTAIN_AUTO),
2109  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
2110  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2111 
2112  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
2113  if (this == &rhs) return *this;
2114  codecType = rhs.codecType;
2115  dimensions = rhs.dimensions;
2116  frameRate = rhs.frameRate;
2117  bitrate = rhs.bitrate;
2118  minBitrate = rhs.minBitrate;
2119  orientationMode = rhs.orientationMode;
2120  degradationPreference = rhs.degradationPreference;
2121  mirrorMode = rhs.mirrorMode;
2122  advanceOptions = rhs.advanceOptions;
2123  return *this;
2124  }
2125 };
2126 
2151  bool ordered;
2152 };
2153 
2157 enum SIMULCAST_STREAM_MODE {
2158  /*
2159  * disable simulcast stream until receive request for enable simulcast stream by other broadcaster
2160  */
2161  AUTO_SIMULCAST_STREAM = -1,
2162  /*
2163  * disable simulcast stream
2164  */
2165  DISABLE_SIMULCAST_STREAM = 0,
2166  /*
2167  * always enable simulcast stream
2168  */
2169  ENABLE_SIMULCAST_STREAM = 1,
2170 };
2171 
2189  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
2191  bool operator==(const SimulcastStreamConfig& rhs) const {
2192  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
2193  }
2194 };
2195 
2237  };
2255  bool enable;
2256  StreamLayerConfig() : dimensions(0, 0), framerate(0), enable(false) {}
2257  };
2258 
2274 
2276 };
2281 struct Rectangle {
2285  int x;
2289  int y;
2293  int width;
2297  int height;
2298 
2299  Rectangle() : x(0), y(0), width(0), height(0) {}
2300  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2301 };
2302 
2319  float xRatio;
2325  float yRatio;
2332  float widthRatio;
2333 
2334  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2335  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2336 };
2337 
2366  WATERMARK_FIT_MODE mode;
2370  int zOrder;
2371 
2373  : visibleInPreview(true),
2374  positionInLandscapeMode(0, 0, 0, 0),
2375  positionInPortraitMode(0, 0, 0, 0),
2376  mode(FIT_MODE_COVER_POSITION),
2377  zOrder(0) {}
2378 };
2379 
2385 enum WATERMARK_SOURCE_TYPE {
2389  IMAGE = 0,
2393  BUFFER = 1,
2399  LITERAL = 2,
2405  TIMESTAMPS = 3,
2406 };
2407 
2425  const char* fontFilePath;
2437  const char* format;
2438 
2439  WatermarkTimestamp() : fontSize(10), fontFilePath(NULL), strokeWidth(1), format(NULL) {}
2440 };
2441 
2449 
2463  const char* wmLiteral;
2470  const char* fontFilePath;
2471 
2472  WatermarkLiteral() : wmLiteral(NULL), fontFilePath(NULL), fontSize(10), strokeWidth(1) {}
2473 };
2474 
2481 
2485  int width;
2489  int height;
2493  int length;
2498  media::base::VIDEO_PIXEL_FORMAT format;
2499 
2505  const uint8_t* buffer;
2506 
2507  WatermarkBuffer() : buffer(NULL), width(0), height(0), length(0), format(media::base::VIDEO_PIXEL_I420) {}
2508 };
2509 
2519  const char* id;
2523  WATERMARK_SOURCE_TYPE type;
2524  union {
2546  const char* imageUrl;
2547  };
2548 
2553 
2554  WatermarkConfig() : id(NULL), type(IMAGE), imageUrl(NULL) {}
2555 };
2556 
2562 enum MultipathMode {
2567  Duplicate= 0,
2571  Dynamic
2572 };
2573 
2579 enum MultipathType {
2583  LAN = 0,
2587  WIFI,
2591  Mobile,
2595  Unknown = 99
2596 };
2597 
2603 struct PathStats {
2607  MultipathType type;
2616  PathStats() : type(Unknown), txKBitRate(0), rxKBitRate(0) {}
2617  PathStats(MultipathType t, int tx, int rx) : type(t), txKBitRate(tx), rxKBitRate(rx) {}
2618 };
2619 
2629  uint32_t lanTxBytes;
2633  uint32_t lanRxBytes;
2637  uint32_t wifiTxBytes;
2641  uint32_t wifiRxBytes;
2645  uint32_t mobileTxBytes;
2649  uint32_t mobileRxBytes;
2658  MultipathStats()
2659  : lanTxBytes(0),
2660  lanRxBytes(0),
2661  wifiTxBytes(0),
2662  wifiRxBytes(0),
2663  mobileTxBytes(0),
2664  mobileRxBytes(0),
2665  activePathNum(0),
2666  pathStats(nullptr) {}
2667 };
2668 
2672 struct RtcStats {
2676  unsigned int duration;
2680  unsigned int txBytes;
2684  unsigned int rxBytes;
2688  unsigned int txAudioBytes;
2692  unsigned int txVideoBytes;
2696  unsigned int rxAudioBytes;
2700  unsigned int rxVideoBytes;
2704  unsigned short txKBitRate;
2708  unsigned short rxKBitRate;
2712  unsigned short rxAudioKBitRate;
2716  unsigned short txAudioKBitRate;
2720  unsigned short rxVideoKBitRate;
2724  unsigned short txVideoKBitRate;
2728  unsigned short lastmileDelay;
2732  unsigned int userCount;
2740  double cpuAppUsage;
2838 
2839  RtcStats()
2840  : duration(0),
2841  txBytes(0),
2842  rxBytes(0),
2843  txAudioBytes(0),
2844  txVideoBytes(0),
2845  rxAudioBytes(0),
2846  rxVideoBytes(0),
2847  txKBitRate(0),
2848  rxKBitRate(0),
2849  rxAudioKBitRate(0),
2850  txAudioKBitRate(0),
2851  rxVideoKBitRate(0),
2852  txVideoKBitRate(0),
2853  lastmileDelay(0),
2854  userCount(0),
2855  cpuAppUsage(0.0),
2856  cpuTotalUsage(0.0),
2857  gatewayRtt(0),
2858  memoryAppUsageRatio(0.0),
2859  memoryTotalUsageRatio(0.0),
2861  connectTimeMs(0),
2871  txPacketLossRate(0),
2872  rxPacketLossRate(0),
2873  lanAccelerateState(0) {}
2874 };
2875 
2879 enum CLIENT_ROLE_TYPE {
2883  CLIENT_ROLE_BROADCASTER = 1,
2887  CLIENT_ROLE_AUDIENCE = 2,
2888 };
2889 
2894 enum QUALITY_ADAPT_INDICATION {
2898  ADAPT_NONE = 0,
2902  ADAPT_UP_BANDWIDTH = 1,
2906  ADAPT_DOWN_BANDWIDTH = 2,
2907 };
2908 
2913 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2917  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2921  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2922 };
2923 
2932  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2933 
2934  ClientRoleOptions() : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2935 };
2936 
2940 enum EXPERIENCE_QUALITY_TYPE {
2942  EXPERIENCE_QUALITY_GOOD = 0,
2944  EXPERIENCE_QUALITY_BAD = 1,
2945 };
2946 
2950 enum EXPERIENCE_POOR_REASON {
2954  EXPERIENCE_REASON_NONE = 0,
2958  REMOTE_NETWORK_QUALITY_POOR = 1,
2962  LOCAL_NETWORK_QUALITY_POOR = 2,
2966  WIRELESS_SIGNAL_POOR = 4,
2971  WIFI_BLUETOOTH_COEXIST = 8,
2972 };
2973 
2977 enum AUDIO_AINS_MODE {
2981  AINS_MODE_BALANCED = 0,
2985  AINS_MODE_AGGRESSIVE = 1,
2989  AINS_MODE_ULTRALOWLATENCY = 2
2990 };
2991 
2995 enum AUDIO_PROFILE_TYPE {
3005  AUDIO_PROFILE_DEFAULT = 0,
3009  AUDIO_PROFILE_SPEECH_STANDARD = 1,
3013  AUDIO_PROFILE_MUSIC_STANDARD = 2,
3020  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3024  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3031  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3035  AUDIO_PROFILE_IOT = 6,
3036  AUDIO_PROFILE_NUM = 7
3037 };
3038 
3042 enum AUDIO_SCENARIO_TYPE {
3047  AUDIO_SCENARIO_DEFAULT = 0,
3053  AUDIO_SCENARIO_GAME_STREAMING = 3,
3059  AUDIO_SCENARIO_CHATROOM = 5,
3064  AUDIO_SCENARIO_CHORUS = 7,
3068  AUDIO_SCENARIO_MEETING = 8,
3073  AUDIO_SCENARIO_AI_SERVER = 9,
3077  AUDIO_SCENARIO_AI_CLIENT = 10,
3081  AUDIO_SCENARIO_NUM = 11,
3082 };
3083 
3087 struct VideoFormat {
3088  OPTIONAL_ENUM_SIZE_T{
3090  kMaxWidthInPixels = 3840,
3092  kMaxHeightInPixels = 2160,
3094  kMaxFps = 60,
3095  };
3096 
3100  int width; // Number of pixels.
3104  int height; // Number of pixels.
3108  int fps;
3109  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
3110  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
3111 
3112  bool operator<(const VideoFormat& fmt) const {
3113  if (height != fmt.height) {
3114  return height < fmt.height;
3115  } else if (width != fmt.width) {
3116  return width < fmt.width;
3117  } else {
3118  return fps < fmt.fps;
3119  }
3120  }
3121  bool operator==(const VideoFormat& fmt) const {
3122  return width == fmt.width && height == fmt.height && fps == fmt.fps;
3123  }
3124  bool operator!=(const VideoFormat& fmt) const { return !operator==(fmt); }
3125 };
3126 
3130 enum VIDEO_CONTENT_HINT {
3134  CONTENT_HINT_NONE,
3141  CONTENT_HINT_MOTION,
3147  CONTENT_HINT_DETAILS
3148 };
3152 enum SCREEN_SCENARIO_TYPE {
3158  SCREEN_SCENARIO_DOCUMENT = 1,
3163  SCREEN_SCENARIO_GAMING = 2,
3168  SCREEN_SCENARIO_VIDEO = 3,
3174  SCREEN_SCENARIO_RDC = 4,
3175 };
3176 
3180 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3184  APPLICATION_SCENARIO_GENERAL = 0,
3188  APPLICATION_SCENARIO_MEETING = 1,
3192  APPLICATION_SCENARIO_1V1 = 2,
3196  APPLICATION_SCENARIO_LIVESHOW = 3,
3197 };
3198 
3202 enum VIDEO_QOE_PREFERENCE_TYPE {
3206  VIDEO_QOE_PREFERENCE_BALANCE = 1,
3210  VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3214  VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3218  VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3219 
3220 };
3221 
3225 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3230  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3233  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3236  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3239  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3240 };
3241 
3242 enum CAMERA_STABILIZATION_MODE {
3245  CAMERA_STABILIZATION_MODE_OFF = -1,
3248  CAMERA_STABILIZATION_MODE_AUTO = 0,
3251  CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3254  CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3257  CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3260  CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3261 };
3262 
3266 enum LOCAL_AUDIO_STREAM_STATE {
3270  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3274  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3278  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3282  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3283 };
3284 
3288 enum LOCAL_AUDIO_STREAM_REASON {
3292  LOCAL_AUDIO_STREAM_REASON_OK = 0,
3297  LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3301  LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3308  LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3312  LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3316  LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3319  LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3322  LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3326  LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3329  LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3332  LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3333 };
3334 
3337 enum LOCAL_VIDEO_STREAM_STATE {
3341  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3346  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3350  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3354  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3355 };
3356 
3360 enum LOCAL_VIDEO_STREAM_REASON {
3364  LOCAL_VIDEO_STREAM_REASON_OK = 0,
3368  LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3373  LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3378  LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3384  LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3388  LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3393  LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3400  LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3406  LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3411  LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3416  LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3421  LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3426  LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3430  LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3436  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3451  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3453  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3455  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3457  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3459  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3465  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3468  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3470  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3472  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3480  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3482  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3484  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3485  /* 30: (HMOS only) ScreenCapture stopped by user */
3486  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3487  /* 31: (HMOS only) ScreenCapture interrupted by other screen capture */
3488  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3489  /* 32: (HMOS only) ScreenCapture stopped by SIM call */
3490  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3491 };
3492 
3496 enum REMOTE_AUDIO_STATE {
3502  REMOTE_AUDIO_STATE_STOPPED =
3503  0, // Default state, audio is started or remote user disabled/muted audio stream
3507  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
3513  REMOTE_AUDIO_STATE_DECODING =
3514  2, // The first remote audio frame has been decoded or fronzen state ends
3519  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
3524  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
3525 };
3526 
3530 enum REMOTE_AUDIO_STATE_REASON {
3534  REMOTE_AUDIO_REASON_INTERNAL = 0,
3538  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3542  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3547  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3552  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3557  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3562  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3566  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3570  REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3574  REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3575 };
3576 
3580 enum REMOTE_VIDEO_STATE {
3587  REMOTE_VIDEO_STATE_STOPPED = 0,
3591  REMOTE_VIDEO_STATE_STARTING = 1,
3598  REMOTE_VIDEO_STATE_DECODING = 2,
3602  REMOTE_VIDEO_STATE_FROZEN = 3,
3606  REMOTE_VIDEO_STATE_FAILED = 4,
3607 };
3611 enum REMOTE_VIDEO_STATE_REASON {
3615  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3619  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3623  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3627  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3631  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3635  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3639  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3643  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3647  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3651  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3654  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3657  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3660  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3661 
3664  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3665 
3666 };
3667 
3671 enum REMOTE_USER_STATE {
3675  USER_STATE_MUTE_AUDIO = (1 << 0),
3679  USER_STATE_MUTE_VIDEO = (1 << 1),
3683  USER_STATE_ENABLE_VIDEO = (1 << 4),
3687  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3688 };
3689 
3695  VideoTrackInfo()
3696  : isLocal(false),
3697  ownerUid(0),
3698  trackId(0),
3699  channelId(OPTIONAL_NULLPTR),
3700  codecType(VIDEO_CODEC_H265),
3701  encodedFrameOnly(false),
3702  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
3703  observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
3709  bool isLocal;
3713  uid_t ownerUid;
3717  track_id_t trackId;
3721  const char* channelId;
3725  VIDEO_CODEC_TYPE codecType;
3735  VIDEO_SOURCE_TYPE sourceType;
3740 };
3741 
3746 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3750  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3754  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3758  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3762  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3766  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3767 };
3768 
3779  uid_t uid;
3785  unsigned int volume; // [0,255]
3796  unsigned int vad;
3802  double voicePitch;
3803 
3804  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3805 };
3806 
3810 struct DeviceInfo {
3811  /*
3812  * Whether the audio device supports ultra-low-latency capture and playback:
3813  * - `true`: The device supports ultra-low-latency capture and playback.
3814  * - `false`: The device does not support ultra-low-latency capture and playback.
3815  */
3816  bool isLowLatencyAudioSupported;
3817 
3818  DeviceInfo() : isLowLatencyAudioSupported(false) {}
3819 };
3820 
3825  public:
3826  virtual ~IPacketObserver() {}
3830  struct Packet {
3836  const unsigned char* buffer;
3840  unsigned int size;
3841 
3842  Packet() : buffer(OPTIONAL_NULLPTR), size(0) {}
3843  };
3851  virtual bool onSendAudioPacket(Packet& packet) = 0;
3859  virtual bool onSendVideoPacket(Packet& packet) = 0;
3867  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3875  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3876 };
3877 
3881 enum AUDIO_SAMPLE_RATE_TYPE {
3885  AUDIO_SAMPLE_RATE_32000 = 32000,
3889  AUDIO_SAMPLE_RATE_44100 = 44100,
3893  AUDIO_SAMPLE_RATE_48000 = 48000,
3894 };
3898 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3902  VIDEO_CODEC_H264_FOR_STREAM = 1,
3906  VIDEO_CODEC_H265_FOR_STREAM = 2,
3907 };
3908 
3912 enum VIDEO_CODEC_PROFILE_TYPE {
3916  VIDEO_CODEC_PROFILE_BASELINE = 66,
3921  VIDEO_CODEC_PROFILE_MAIN = 77,
3925  VIDEO_CODEC_PROFILE_HIGH = 100,
3926 };
3927 
3931 enum AUDIO_CODEC_PROFILE_TYPE {
3935  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3939  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3943  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3944 };
3945 
3970  unsigned short txPacketLossRate;
3987 };
3988 
3992 enum RTMP_STREAM_PUBLISH_STATE {
3997  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4002  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4007  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4018  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4024  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4029  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4030 };
4031 
4035 enum RTMP_STREAM_PUBLISH_REASON {
4039  RTMP_STREAM_PUBLISH_REASON_OK = 0,
4046  RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4050  RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4055  RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4060  RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4064  RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4068  RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4072  RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4076  RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4080  RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4085  RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4090  RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4091  11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
4097  RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4098  13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
4102  RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
4106  RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4107  15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
4109  RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4114  RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4115 };
4116 
4118 enum RTMP_STREAMING_EVENT {
4123  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4128  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4132  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4136  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4137 };
4138 
4142 typedef struct RtcImage {
4147  const char* url;
4152  int x;
4157  int y;
4161  int width;
4165  int height;
4173  int zOrder;
4179  double alpha;
4180 
4181  RtcImage() : url(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
4182 } RtcImage;
4190  LiveStreamAdvancedFeature() : featureName(OPTIONAL_NULLPTR), opened(false) {}
4191  LiveStreamAdvancedFeature(const char* feat_name, bool open)
4192  : featureName(feat_name), opened(open) {}
4194  // static const char* LBHQ = "lbhq";
4196  // static const char* VEO = "veo";
4197 
4202  const char* featureName;
4203 
4209  bool opened;
4210 };
4211 
4215 enum CONNECTION_STATE_TYPE {
4222  CONNECTION_STATE_DISCONNECTED = 1,
4231  CONNECTION_STATE_CONNECTING = 2,
4239  CONNECTION_STATE_CONNECTED = 3,
4249  CONNECTION_STATE_RECONNECTING = 4,
4258  CONNECTION_STATE_FAILED = 5,
4259 };
4260 
4268  uid_t uid;
4274  int x;
4280  int y;
4284  int width;
4288  int height;
4296  int zOrder;
4302  double alpha;
4324 
4325  TranscodingUser()
4326  : uid(0), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0), audioChannel(0) {}
4327 };
4328 
4339  int width;
4346  int height;
4359 
4366 
4374  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
4378  unsigned int backgroundColor;
4380  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
4384  unsigned int userCount;
4395 
4398  const char* metadata;
4409  unsigned int watermarkCount;
4410 
4422  unsigned int backgroundImageCount;
4423 
4426  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
4442  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
4447 
4449  unsigned int advancedFeatureCount;
4450 
4451  LiveTranscoding()
4452  : width(360),
4453  height(640),
4454  videoBitrate(400),
4455  videoFramerate(15),
4456  lowLatency(false),
4457  videoGop(30),
4458  videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
4459  backgroundColor(0x000000),
4460  videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
4461  userCount(0),
4462  transcodingUsers(OPTIONAL_NULLPTR),
4463  transcodingExtraInfo(OPTIONAL_NULLPTR),
4464  metadata(OPTIONAL_NULLPTR),
4465  watermark(OPTIONAL_NULLPTR),
4466  watermarkCount(0),
4467  backgroundImage(OPTIONAL_NULLPTR),
4469  audioSampleRate(AUDIO_SAMPLE_RATE_48000),
4470  audioBitrate(48),
4471  audioChannels(1),
4472  audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
4473  advancedFeatures(OPTIONAL_NULLPTR),
4474  advancedFeatureCount(0) {}
4475 };
4476 
4484  VIDEO_SOURCE_TYPE sourceType;
4496  const char* imageUrl;
4505  int x;
4510  int y;
4514  int width;
4518  int height;
4525  int zOrder;
4531  double alpha;
4538  bool mirror;
4539 
4541  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4542  remoteUserUid(0),
4543  imageUrl(OPTIONAL_NULLPTR),
4544  x(0),
4545  y(0),
4546  width(0),
4547  height(0),
4548  zOrder(0),
4549  alpha(1.0),
4550  mirror(false) {}
4551 };
4552 
4560  unsigned int streamCount;
4579 
4581  : streamCount(0),
4582  videoInputStreams(OPTIONAL_NULLPTR),
4584  syncWithPrimaryCamera(true) {}
4585 };
4586 
4587 enum VIDEO_TRANSCODER_ERROR {
4591  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4595  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4599  VT_ERR_INVALID_IMAGE_PATH = 3,
4603  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4607  VT_ERR_INVALID_LAYOUT = 5,
4611  VT_ERR_INTERNAL = 20
4612 };
4613 
4614 
4622  AUDIO_SOURCE_TYPE sourceType;
4632  const char* channelId;
4637  track_id_t trackId;
4638 
4639  MixedAudioStream(AUDIO_SOURCE_TYPE source)
4640  : sourceType(source),
4641  remoteUserUid(0),
4642  channelId(NULL),
4643  trackId(-1) {}
4644 
4645  MixedAudioStream(AUDIO_SOURCE_TYPE source, track_id_t track)
4646  : sourceType(source),
4647  trackId(track) {}
4648 
4649  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel)
4650  : sourceType(source),
4651  remoteUserUid(uid),
4652  channelId(channel) {}
4653 
4654  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel, track_id_t track)
4655  : sourceType(source),
4656  remoteUserUid(uid),
4657  channelId(channel),
4658  trackId(track) {}
4659 
4660 };
4661 
4669  unsigned int streamCount;
4674 
4681 
4683 };
4684 
4713 };
4714 
4718 enum LASTMILE_PROBE_RESULT_STATE {
4722  LASTMILE_PROBE_RESULT_COMPLETE = 1,
4727  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4732  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4733 };
4734 
4742  unsigned int packetLossRate;
4746  unsigned int jitter;
4750  unsigned int availableBandwidth;
4751 
4753 };
4754 
4762  LASTMILE_PROBE_RESULT_STATE state;
4774  unsigned int rtt;
4775 
4776  LastmileProbeResult() : state(LASTMILE_PROBE_RESULT_UNAVAILABLE), rtt(0) {}
4777 };
4778 
4782 enum CONNECTION_CHANGED_REASON_TYPE {
4786  CONNECTION_CHANGED_CONNECTING = 0,
4790  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4794  CONNECTION_CHANGED_INTERRUPTED = 2,
4799  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4804  CONNECTION_CHANGED_JOIN_FAILED = 4,
4808  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4812  CONNECTION_CHANGED_INVALID_APP_ID = 6,
4817  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4826  CONNECTION_CHANGED_INVALID_TOKEN = 8,
4830  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4838  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4842  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4846  CONNECTION_CHANGED_RENEW_TOKEN = 12,
4851  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4856  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4860  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4864  CONNECTION_CHANGED_LOST = 16,
4868  CONNECTION_CHANGED_ECHO_TEST = 17,
4872  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4876  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4880  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4881 
4885  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4886  /*
4887  * 22: The connection is failed due to certification verify failure.
4888  */
4889  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4893  CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4897  CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4898 };
4899 
4903 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4907  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4911  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4916  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4921  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4922 };
4923 
4927 enum NETWORK_TYPE {
4931  NETWORK_TYPE_UNKNOWN = -1,
4935  NETWORK_TYPE_DISCONNECTED = 0,
4939  NETWORK_TYPE_LAN = 1,
4943  NETWORK_TYPE_WIFI = 2,
4947  NETWORK_TYPE_MOBILE_2G = 3,
4951  NETWORK_TYPE_MOBILE_3G = 4,
4955  NETWORK_TYPE_MOBILE_4G = 5,
4959  NETWORK_TYPE_MOBILE_5G = 6,
4960 };
4961 
4965 enum VIDEO_VIEW_SETUP_MODE {
4969  VIDEO_VIEW_SETUP_REPLACE = 0,
4973  VIDEO_VIEW_SETUP_ADD = 1,
4977  VIDEO_VIEW_SETUP_REMOVE = 2,
4978 };
4979 
4983 struct VideoCanvas {
4987  uid_t uid;
4988 
4993  uid_t subviewUid;
4997  view_t view;
5006  media::base::RENDER_MODE_TYPE renderMode;
5016  VIDEO_MIRROR_MODE_TYPE mirrorMode;
5021  VIDEO_VIEW_SETUP_MODE setupMode;
5026  VIDEO_SOURCE_TYPE sourceType;
5049  media::base::VIDEO_MODULE_POSITION position;
5050 
5051  VideoCanvas()
5052  : uid(0),
5053  subviewUid(0),
5054  view(NULL),
5055  backgroundColor(0x00000000),
5056  renderMode(media::base::RENDER_MODE_HIDDEN),
5057  mirrorMode(VIDEO_MIRROR_MODE_AUTO),
5058  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5059  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5060  mediaPlayerId(-ERR_NOT_READY),
5061  cropArea(0, 0, 0, 0),
5062  enableAlphaMask(false),
5063  position(media::base::POSITION_POST_CAPTURER) {}
5064 
5065  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5066  : uid(0),
5067  subviewUid(0),
5068  view(v),
5069  backgroundColor(0x00000000),
5070  renderMode(m),
5071  mirrorMode(mt),
5072  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5073  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5074  mediaPlayerId(-ERR_NOT_READY),
5075  cropArea(0, 0, 0, 0),
5076  enableAlphaMask(false),
5077  position(media::base::POSITION_POST_CAPTURER) {}
5078 
5079  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5080  : uid(u),
5081  subviewUid(0),
5082  view(v),
5083  backgroundColor(0x00000000),
5084  renderMode(m),
5085  mirrorMode(mt),
5086  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5087  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5088  mediaPlayerId(-ERR_NOT_READY),
5089  cropArea(0, 0, 0, 0),
5090  enableAlphaMask(false),
5091  position(media::base::POSITION_POST_CAPTURER) {}
5092 
5093  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5094  uid_t subu)
5095  : uid(u),
5096  subviewUid(subu),
5097  view(v),
5098  backgroundColor(0x00000000),
5099  renderMode(m),
5100  mirrorMode(mt),
5101  setupMode(VIDEO_VIEW_SETUP_REPLACE),
5102  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
5103  mediaPlayerId(-ERR_NOT_READY),
5104  cropArea(0, 0, 0, 0),
5105  enableAlphaMask(false),
5106  position(media::base::POSITION_POST_CAPTURER) {}
5107 };
5108 
5121  };
5122 
5127 
5131 
5136 
5141 
5146 
5147  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness,
5148  float redness, float sharpness)
5149  : lighteningContrastLevel(contrastLevel),
5150  lighteningLevel(lightening),
5151  smoothnessLevel(smoothness),
5152  rednessLevel(redness),
5153  sharpnessLevel(sharpness) {}
5154 
5155  BeautyOptions()
5157  lighteningLevel(0),
5158  smoothnessLevel(0),
5159  rednessLevel(0),
5160  sharpnessLevel(0) {}
5161 };
5162 
5369  };
5370 
5374 
5379 
5380  FaceShapeAreaOptions(FACE_SHAPE_AREA shapeArea, int areaIntensity) : shapeArea(shapeArea), shapeIntensity(areaIntensity) {}
5381 
5383 };
5384 
5409  };
5410 
5414 
5418 
5420 
5422 };
5423 
5443  const char * path;
5444 
5448  float strength;
5449 
5450  FilterEffectOptions(const char * lut3dPath, float filterStrength) : path(lut3dPath), strength(filterStrength) {}
5451 
5452  FilterEffectOptions() : path(OPTIONAL_NULLPTR), strength(0.5) {}
5453 };
5454 
5466  };
5482  };
5483 
5487 
5491 
5493  : mode(lowlightMode), level(lowlightLevel) {}
5494 
5497 };
5512  };
5532  };
5536 
5540 
5542  : mode(denoiserMode), level(denoiserLevel) {}
5543 
5545 };
5546 
5557 
5567 
5568  ColorEnhanceOptions(float stength, float skinProtect)
5569  : strengthLevel(stength), skinProtectLevel(skinProtect) {}
5570 
5572 };
5573 
5601  };
5602 
5615  };
5616 
5620 
5630  unsigned int color;
5631 
5640  const char* source;
5641 
5647 
5650  color(0xffffff),
5651  source(OPTIONAL_NULLPTR),
5653 };
5654 
5667  SEG_MODEL_GREEN = 2
5668  };
5669 
5681  SCREEN_COLOR_BLUE = 2
5682  };
5683 
5688 
5697 
5703 
5705 };
5706 
5709 enum AUDIO_TRACK_TYPE {
5713  AUDIO_TRACK_INVALID = -1,
5720  AUDIO_TRACK_MIXABLE = 0,
5726  AUDIO_TRACK_DIRECT = 1,
5727 };
5728 
5744 
5746 };
5747 
5768 enum VOICE_BEAUTIFIER_PRESET {
5771  VOICE_BEAUTIFIER_OFF = 0x00000000,
5777  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
5783  CHAT_BEAUTIFIER_FRESH = 0x01010200,
5789  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
5799  SINGING_BEAUTIFIER = 0x01020100,
5802  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
5805  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
5808  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
5811  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
5814  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
5817  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
5820  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
5823  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
5834  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
5835 };
5836 
5859 enum AUDIO_EFFECT_PRESET {
5862  AUDIO_EFFECT_OFF = 0x00000000,
5865  ROOM_ACOUSTICS_KTV = 0x02010100,
5868  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
5871  ROOM_ACOUSTICS_STUDIO = 0x02010300,
5874  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5881  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5884  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5887  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5899  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5910  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5918  ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5925  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5931  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5937  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5944  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5950  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5954  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5957  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5964  STYLE_TRANSFORMATION_RNB = 0x02030100,
5971  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5976  PITCH_CORRECTION = 0x02040100,
5977 
5981 };
5982 
5985 enum VOICE_CONVERSION_PRESET {
5988  VOICE_CONVERSION_OFF = 0x00000000,
5992  VOICE_CHANGER_NEUTRAL = 0x03010100,
5996  VOICE_CHANGER_SWEET = 0x03010200,
6000  VOICE_CHANGER_SOLID = 0x03010300,
6004  VOICE_CHANGER_BASS = 0x03010400,
6007  VOICE_CHANGER_CARTOON = 0x03010500,
6010  VOICE_CHANGER_CHILDLIKE = 0x03010600,
6013  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6016  VOICE_CHANGER_MONSTER = 0x03010800,
6019  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6022  VOICE_CHANGER_GROOT = 0x03010A00,
6025  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6028  VOICE_CHANGER_IRON_LADY = 0x03010C00,
6031  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6034  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6037  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6038 
6039 };
6040 
6043 enum HEADPHONE_EQUALIZER_PRESET {
6046  HEADPHONE_EQUALIZER_OFF = 0x00000000,
6049  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6052  HEADPHONE_EQUALIZER_INEAR = 0x04000002
6053 };
6054 
6057 enum VOICE_AI_TUNER_TYPE {
6060  VOICE_AI_TUNER_MATURE_MALE,
6063  VOICE_AI_TUNER_FRESH_MALE,
6066  VOICE_AI_TUNER_ELEGANT_FEMALE,
6069  VOICE_AI_TUNER_SWEET_FEMALE,
6072  VOICE_AI_TUNER_WARM_MALE_SINGING,
6075  VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6078  VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6081  VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6084  VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6087  VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6088 };
6089 
6119  int bitrate;
6143 
6151  unsigned int highLightColor;
6161 
6163  : dimensions(1920, 1080),
6164  frameRate(5),
6165  bitrate(STANDARD_BITRATE),
6166  captureMouseCursor(true),
6167  windowFocus(false),
6168  excludeWindowList(OPTIONAL_NULLPTR),
6169  excludeWindowCount(0),
6170  highLightWidth(0),
6171  highLightColor(0),
6172  enableHighLight(false) {}
6173  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
6174  : dimensions(d),
6175  frameRate(f),
6176  bitrate(b),
6177  captureMouseCursor(true),
6178  windowFocus(false),
6179  excludeWindowList(OPTIONAL_NULLPTR),
6180  excludeWindowCount(0),
6181  highLightWidth(0),
6182  highLightColor(0),
6183  enableHighLight(false) {}
6184  ScreenCaptureParameters(int width, int height, int f, int b)
6185  : dimensions(width, height),
6186  frameRate(f),
6187  bitrate(b),
6188  captureMouseCursor(true),
6189  windowFocus(false),
6190  excludeWindowList(OPTIONAL_NULLPTR),
6191  excludeWindowCount(0),
6192  highLightWidth(0),
6193  highLightColor(0),
6194  enableHighLight(false) {}
6195  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
6196  : dimensions(width, height),
6197  frameRate(f),
6198  bitrate(b),
6199  captureMouseCursor(cur),
6200  windowFocus(fcs),
6201  excludeWindowList(OPTIONAL_NULLPTR),
6202  excludeWindowCount(0),
6203  highLightWidth(0),
6204  highLightColor(0),
6205  enableHighLight(false) {}
6206  ScreenCaptureParameters(int width, int height, int f, int b, view_t* ex, int cnt)
6207  : dimensions(width, height),
6208  frameRate(f),
6209  bitrate(b),
6210  captureMouseCursor(true),
6211  windowFocus(false),
6212  excludeWindowList(ex),
6213  excludeWindowCount(cnt),
6214  highLightWidth(0),
6215  highLightColor(0),
6216  enableHighLight(false) {}
6217  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t* ex,
6218  int cnt)
6219  : dimensions(width, height),
6220  frameRate(f),
6221  bitrate(b),
6222  captureMouseCursor(cur),
6223  windowFocus(fcs),
6224  excludeWindowList(ex),
6225  excludeWindowCount(cnt),
6226  highLightWidth(0),
6227  highLightColor(0),
6228  enableHighLight(false) {}
6229 };
6230 
6234 enum AUDIO_RECORDING_QUALITY_TYPE {
6239  AUDIO_RECORDING_QUALITY_LOW = 0,
6244  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6249  AUDIO_RECORDING_QUALITY_HIGH = 2,
6253  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6254 };
6255 
6259 enum AUDIO_FILE_RECORDING_TYPE {
6263  AUDIO_FILE_RECORDING_MIC = 1,
6267  AUDIO_FILE_RECORDING_PLAYBACK = 2,
6271  AUDIO_FILE_RECORDING_MIXED = 3,
6272 };
6273 
6277 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6281  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6285  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6289  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6290 };
6291 
6301  const char* filePath;
6307  bool encode;
6322  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
6327  AUDIO_RECORDING_QUALITY_TYPE quality;
6328 
6335 
6337  : filePath(OPTIONAL_NULLPTR),
6338  encode(false),
6339  sampleRate(32000),
6340  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6341  quality(AUDIO_RECORDING_QUALITY_LOW),
6342  recordingChannel(1) {}
6343 
6344  AudioRecordingConfiguration(const char* file_path, int sample_rate,
6345  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6346  : filePath(file_path),
6347  encode(false),
6348  sampleRate(sample_rate),
6349  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6350  quality(quality_type),
6351  recordingChannel(channel) {}
6352 
6353  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate,
6354  AUDIO_FILE_RECORDING_TYPE type,
6355  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6356  : filePath(file_path),
6357  encode(enc),
6358  sampleRate(sample_rate),
6359  fileRecordingType(type),
6360  quality(quality_type),
6361  recordingChannel(channel) {}
6362 
6363  AudioRecordingConfiguration(const AudioRecordingConfiguration& rhs)
6364  : filePath(rhs.filePath),
6365  encode(rhs.encode),
6366  sampleRate(rhs.sampleRate),
6368  quality(rhs.quality),
6370 };
6371 
6379  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
6383  AUDIO_ENCODING_TYPE encodingType;
6384 
6386  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6387  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM) {}
6388 };
6393  public:
6406  virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6407  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6408 
6421  virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6422  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6423 
6436  virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6437  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6438 
6439  virtual ~IAudioEncodedFrameObserver() {}
6440 };
6441 
6444 enum AREA_CODE {
6448  AREA_CODE_CN = 0x00000001,
6452  AREA_CODE_NA = 0x00000002,
6456  AREA_CODE_EU = 0x00000004,
6460  AREA_CODE_AS = 0x00000008,
6464  AREA_CODE_JP = 0x00000010,
6468  AREA_CODE_IN = 0x00000020,
6472  AREA_CODE_GLOB = (0xFFFFFFFF)
6473 };
6474 
6479 enum AREA_CODE_EX {
6483  AREA_CODE_OC = 0x00000040,
6487  AREA_CODE_SA = 0x00000080,
6491  AREA_CODE_AF = 0x00000100,
6495  AREA_CODE_KR = 0x00000200,
6499  AREA_CODE_HKMC = 0x00000400,
6503  AREA_CODE_US = 0x00000800,
6507  AREA_CODE_RU = 0x00001000,
6511  AREA_CODE_OVS = 0xFFFFFFFE
6512 };
6513 
6517 enum CHANNEL_MEDIA_RELAY_ERROR {
6520  RELAY_OK = 0,
6523  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6530  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6533  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6536  RELAY_ERROR_FAILED_JOIN_SRC = 4,
6539  RELAY_ERROR_FAILED_JOIN_DEST = 5,
6542  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6545  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6549  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6552  RELAY_ERROR_INTERNAL_ERROR = 9,
6555  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
6558  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
6559 };
6560 
6564 enum CHANNEL_MEDIA_RELAY_STATE {
6568  RELAY_STATE_IDLE = 0,
6571  RELAY_STATE_CONNECTING = 1,
6574  RELAY_STATE_RUNNING = 2,
6577  RELAY_STATE_FAILURE = 3,
6578 };
6579 
6585  uid_t uid;
6589  const char* channelName;
6593  const char* token;
6594 
6595  ChannelMediaInfo() : uid(0), channelName(NULL), token(NULL) {}
6596  ChannelMediaInfo(const char* c, const char* t, uid_t u) : uid(u), channelName(c), token(t) {}
6597 };
6598 
6636 
6638  : srcInfo(OPTIONAL_NULLPTR), destInfos(OPTIONAL_NULLPTR), destCount(0) {}
6639 };
6640 
6649 
6651 
6652  bool operator==(const UplinkNetworkInfo& rhs) const {
6654  }
6655 };
6656 
6662  const char* userId;
6666  VIDEO_STREAM_TYPE stream_type;
6670  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
6675 
6677  : userId(OPTIONAL_NULLPTR),
6678  stream_type(VIDEO_STREAM_HIGH),
6679  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
6680  expected_bitrate_bps(-1) {}
6681 
6683  : stream_type(rhs.stream_type),
6686  if (rhs.userId != OPTIONAL_NULLPTR) {
6687  const size_t len = std::strlen(rhs.userId);
6688  char* buf = new char[len + 1];
6689  std::memcpy(buf, rhs.userId, len);
6690  buf[len] = '\0';
6691  userId = buf;
6692  }
6693  }
6694 
6695  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
6696  if (this == &rhs) return *this;
6697  userId = OPTIONAL_NULLPTR;
6698  stream_type = rhs.stream_type;
6699  current_downscale_level = rhs.current_downscale_level;
6700  expected_bitrate_bps = rhs.expected_bitrate_bps;
6701  if (rhs.userId != OPTIONAL_NULLPTR) {
6702  const size_t len = std::strlen(rhs.userId);
6703  char* buf = new char[len + 1];
6704  std::memcpy(buf, rhs.userId, len);
6705  buf[len] = '\0';
6706  userId = buf;
6707  }
6708  return *this;
6709  }
6710 
6711  ~PeerDownlinkInfo() { delete[] userId; }
6712  };
6713 
6734 
6739  peer_downlink_info(OPTIONAL_NULLPTR),
6741 
6746  peer_downlink_info(OPTIONAL_NULLPTR),
6748  if (total_received_video_count <= 0) return;
6749  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
6750  for (int i = 0; i < total_received_video_count; ++i)
6752  }
6753 
6754  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
6755  if (this == &rhs) return *this;
6756  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
6757  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
6758  total_downscale_level_count = rhs.total_downscale_level_count;
6759  peer_downlink_info = OPTIONAL_NULLPTR;
6760  total_received_video_count = rhs.total_received_video_count;
6761  if (total_received_video_count > 0) {
6762  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
6763  for (int i = 0; i < total_received_video_count; ++i)
6764  peer_downlink_info[i] = rhs.peer_downlink_info[i];
6765  }
6766  return *this;
6767  }
6768 
6769  ~DownlinkNetworkInfo() { delete[] peer_downlink_info; }
6770 };
6771 
6778 enum ENCRYPTION_MODE {
6781  AES_128_XTS = 1,
6784  AES_128_ECB = 2,
6787  AES_256_XTS = 3,
6790  SM4_128_ECB = 4,
6793  AES_128_GCM = 5,
6796  AES_256_GCM = 6,
6800  AES_128_GCM2 = 7,
6804  AES_256_GCM2 = 8,
6807  MODE_END,
6808 };
6809 
6816  ENCRYPTION_MODE encryptionMode;
6823  const char* encryptionKey;
6831  uint8_t encryptionKdfSalt[32];
6832 
6833  bool datastreamEncryptionEnabled;
6834 
6836  : encryptionMode(AES_128_GCM2),
6837  encryptionKey(OPTIONAL_NULLPTR),
6838  datastreamEncryptionEnabled(false) {
6839  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
6840  }
6841 
6843  const char* getEncryptionString() const {
6844  switch (encryptionMode) {
6845  case AES_128_XTS:
6846  return "aes-128-xts";
6847  case AES_128_ECB:
6848  return "aes-128-ecb";
6849  case AES_256_XTS:
6850  return "aes-256-xts";
6851  case SM4_128_ECB:
6852  return "sm4-128-ecb";
6853  case AES_128_GCM:
6854  return "aes-128-gcm";
6855  case AES_256_GCM:
6856  return "aes-256-gcm";
6857  case AES_128_GCM2:
6858  return "aes-128-gcm-2";
6859  case AES_256_GCM2:
6860  return "aes-256-gcm-2";
6861  default:
6862  return "aes-128-gcm-2";
6863  }
6864  return "aes-128-gcm-2";
6865  }
6867 };
6868 
6871 enum ENCRYPTION_ERROR_TYPE {
6875  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
6880  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
6884  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
6889  ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
6893  ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
6894 };
6895 
6896 enum UPLOAD_ERROR_REASON {
6897  UPLOAD_SUCCESS = 0,
6898  UPLOAD_NET_ERROR = 1,
6899  UPLOAD_SERVER_ERROR = 2,
6900 };
6901 
6908 enum RENEW_TOKEN_ERROR_CODE {
6912  RENEW_TOKEN_SUCCESS = 0,
6918  RENEW_TOKEN_FAILURE = 1,
6923  RENEW_TOKEN_TOKEN_EXPIRED = 2,
6934  RENEW_TOKEN_INVALID_TOKEN = 3,
6939  RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
6944  RENEW_TOKEN_INCONSISTENT_APPID = 5,
6948  RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
6949 };
6950 
6953 enum PERMISSION_TYPE {
6957  RECORD_AUDIO = 0,
6961  CAMERA = 1,
6962 
6963  SCREEN_CAPTURE = 2,
6964 };
6965 
6969 enum STREAM_SUBSCRIBE_STATE {
6973  SUB_STATE_IDLE = 0,
6987  SUB_STATE_NO_SUBSCRIBED = 1,
6991  SUB_STATE_SUBSCRIBING = 2,
6995  SUB_STATE_SUBSCRIBED = 3
6996 };
6997 
7001 enum STREAM_PUBLISH_STATE {
7005  PUB_STATE_IDLE = 0,
7016  PUB_STATE_NO_PUBLISHED = 1,
7020  PUB_STATE_PUBLISHING = 2,
7024  PUB_STATE_PUBLISHED = 3
7025 };
7026 
7031  view_t view;
7032  bool enableAudio;
7033  bool enableVideo;
7034  const char* token;
7035  const char* channelId;
7036  int intervalInSeconds;
7037 
7038  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
7039  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
7040 
7042  : view(OPTIONAL_NULLPTR),
7043  enableAudio(true),
7044  enableVideo(true),
7045  token(OPTIONAL_NULLPTR),
7046  channelId(OPTIONAL_NULLPTR),
7047  intervalInSeconds(2) {}
7048 };
7049 
7053 struct UserInfo {
7057  uid_t uid;
7061  char userAccount[MAX_USER_ACCOUNT_LENGTH];
7062 
7063  UserInfo() : uid(0) { userAccount[0] = '\0'; }
7064 };
7065 
7069 enum EAR_MONITORING_FILTER_TYPE {
7073  EAR_MONITORING_FILTER_NONE = (1 << 0),
7078  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7082  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7088  EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7089 };
7090 
7094 enum THREAD_PRIORITY_TYPE {
7098  LOWEST = 0,
7102  LOW = 1,
7106  NORMAL = 2,
7110  HIGH = 3,
7114  HIGHEST = 4,
7118  CRITICAL = 5,
7119 };
7120 
7121 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7122 
7126 struct ScreenVideoParameters {
7153  VideoDimensions dimensions;
7159  int frameRate = 15;
7164  int bitrate;
7165  /*
7166  * The content hint of the screen sharing:
7167  */
7168  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7169 
7170  ScreenVideoParameters() : dimensions(1280, 720) {}
7171 };
7172 
7176 struct ScreenAudioParameters {
7180  int sampleRate = 16000;
7184  int channels = 2;
7189  int captureSignalVolume = 100;
7190 };
7191 
7195 struct ScreenCaptureParameters2 {
7205  bool captureAudio = false;
7209  ScreenAudioParameters audioParams;
7219  bool captureVideo = true;
7223  ScreenVideoParameters videoParams;
7224 };
7225 #endif
7226 
7230 enum MEDIA_TRACE_EVENT {
7234  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7238  MEDIA_TRACE_EVENT_VIDEO_DECODED,
7239 };
7240 
7294 };
7295 
7296 enum CONFIG_FETCH_TYPE {
7300  CONFIG_FETCH_TYPE_INITIALIZE = 1,
7304  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7305 };
7306 
7308 enum LOCAL_PROXY_MODE {
7311  ConnectivityFirst = 0,
7314  LocalOnly = 1,
7315 };
7316 
7320  const char* serverDomain;
7323  const char* serverPath;
7332 
7333  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
7334 
7335  LogUploadServerInfo(const char* domain, const char* path, int port, bool https)
7336  : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
7337 };
7338 
7343 };
7344 
7348  const char** ipList;
7354  const char** domainList;
7362  const char* verifyDomainName;
7365  LOCAL_PROXY_MODE mode;
7376  : ipList(NULL),
7377  ipListSize(0),
7378  domainList(NULL),
7379  domainListSize(0),
7380  verifyDomainName(NULL),
7381  mode(ConnectivityFirst),
7382  disableAut(true) {}
7383 };
7384 
7385 enum RecorderStreamType {
7386  RTC,
7387  PREVIEW,
7388 };
7389 
7397  const char* channelId;
7401  uid_t uid;
7405  RecorderStreamType type;
7406  RecorderStreamInfo() : channelId(NULL), uid(0), type(RTC) {}
7407  RecorderStreamInfo(const char* channelId, uid_t uid)
7408  : channelId(channelId), uid(uid), type(RTC) {}
7409  RecorderStreamInfo(const char* channelId, uid_t uid, RecorderStreamType type)
7410  : channelId(channelId), uid(uid), type(type) {}
7411 };
7412 
7418 enum RdtStreamType {
7424  RDT_STREAM_CMD,
7430  RDT_STREAM_DATA,
7434  RDT_STREAM_COUNT,
7435 };
7436 
7442 enum RdtState {
7446  RDT_STATE_CLOSED,
7450  RDT_STATE_OPENED,
7455  RDT_STATE_BLOCKED,
7460  RDT_STATE_PENDING,
7467  RDT_STATE_BROKEN,
7468 };
7469 } // namespace rtc
7470 
7471 namespace base {
7472 
7474  public:
7475  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
7476  virtual ~IEngineBase() {}
7477 };
7478 
7479 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
7480  public:
7481  AParameter(IEngineBase& engine) { initialize(&engine); }
7482  AParameter(IEngineBase* engine) { initialize(engine); }
7484 
7485  private:
7486  bool initialize(IEngineBase* engine) {
7487  IAgoraParameter* p = OPTIONAL_NULLPTR;
7488  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
7489  return p != OPTIONAL_NULLPTR;
7490  }
7491 };
7492 
7494  public:
7495  virtual ~LicenseCallback() {}
7496  virtual void onCertificateRequired() = 0;
7497  virtual void onLicenseRequest() = 0;
7498  virtual void onLicenseValidated() = 0;
7499  virtual void onLicenseError(int result) = 0;
7500 };
7501 
7502 } // namespace base
7503 
7540 };
7544 struct VideoLayout {
7548  const char* channelId;
7552  rtc::uid_t uid;
7556  user_id_t strUid;
7560  uint32_t x;
7564  uint32_t y;
7568  uint32_t width;
7572  uint32_t height;
7577  uint32_t videoState;
7578 
7579  VideoLayout()
7580  : channelId(OPTIONAL_NULLPTR),
7581  uid(0),
7582  strUid(OPTIONAL_NULLPTR),
7583  x(0),
7584  y(0),
7585  width(0),
7586  height(0),
7587  videoState(0) {}
7588 };
7589 } // namespace agora
7590 
7596 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
7597 
7603 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
7604 
7605 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
7606 
7614 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString& credential);
7615 
7629 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char* credential_buf,
7630  int credential_len,
7631  const char* certificate_buf,
7632  int certificate_len);
7633 
7641 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback* callback);
7642 
7650 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
7651 
7652 /*
7653  * Get monotonic time in ms which can be used by capture time,
7654  * typical scenario is as follows:
7655  *
7656  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7657  * | // custom audio/video base capture time, e.g. the first audio/video capture time. | | int64_t
7658  * custom_capture_time_base; | | | |
7659  * int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
7660  * | | | // offset is fixed once calculated in the begining. | | const int64_t offset =
7661  * agora_monotonic_time - custom_capture_time_base; | | | | //
7662  * realtime_custom_audio/video_capture_time is the origin capture time that customer provided.| | //
7663  * actual_audio/video_capture_time is the actual capture time transfered to sdk. | |
7664  * int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
7665  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
7666  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7667  *
7668  * @return
7669  * - >= 0: Success.
7670  * - < 0: Failure.
7671  */
7672 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:4388
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:7320
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::VideoCanvas::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:5032
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:4161
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:4525
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2783
agora::VideoLayout
Definition: AgoraBase.h:7544
agora::rtc::FilterEffectOptions::strength
float strength
Definition: AgoraBase.h:5448
agora::rtc::SimulcastConfig::STREAM_LAYER_1
@ STREAM_LAYER_1
Definition: AgoraBase.h:2208
agora::VideoLayout::channelId
const char * channelId
Definition: AgoraBase.h:7548
agora::rtc::UserInfo
Definition: AgoraBase.h:7053
agora::rtc::FilterEffectOptions
Definition: AgoraBase.h:5428
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:4531
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1559
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:2057
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:4758
agora::rtc::RtcStats::lanAccelerateState
int lanAccelerateState
Definition: AgoraBase.h:2837
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:6375
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:6093
agora::VideoLayout::x
uint32_t x
Definition: AgoraBase.h:7560
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:2312
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:3772
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:5605
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:4766
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1755
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:7342
agora::rtc::BeautyOptions
Definition: AgoraBase.h:5111
agora::rtc::SenderOptions
Definition: AgoraBase.h:1293
agora::rtc::WatermarkBuffer::height
int height
Definition: AgoraBase.h:2489
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:6119
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:5130
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2692
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:5596
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:4378
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:147
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:3802
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:4688
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:4280
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:6147
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2708
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2768
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3970
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:3108
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:7515
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:2049
agora::rtc::WatermarkConfig::buffer
WatermarkBuffer buffer
Definition: AgoraBase.h:2528
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:6160
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:5509
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:5021
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5476
agora::rtc::WatermarkConfig::literal
WatermarkLiteral literal
Definition: AgoraBase.h:2540
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:4323
agora::rtc::SimulcastConfig::StreamLayerIndex
StreamLayerIndex
Definition: AgoraBase.h:2204
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2803
agora::rtc::SimulcastConfig::STREAM_LAYER_2
@ STREAM_LAYER_2
Definition: AgoraBase.h:2212
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:3100
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:6131
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:6383
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1302
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1536
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:4369
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:6635
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:3974
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:4746
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:5135
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:5539
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:5016
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2676
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2188
agora::rtc::SegmentationProperty::SEG_MODEL_GREEN
@ SEG_MODEL_GREEN
Definition: AgoraBase.h:5667
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1147
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:7365
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:4695
agora::rtc::RecorderStreamInfo::channelId
const char * channelId
Definition: AgoraBase.h:7397
agora::rtc::LocalAccessPointConfiguration
Definition: AgoraBase.h:7345
agora::rtc::FilterEffectOptions::path
const char * path
Definition: AgoraBase.h:5443
agora::rtc::SegmentationProperty::SCREEN_COLOR_TYPE
SCREEN_COLOR_TYPE
Definition: AgoraBase.h:5672
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:4380
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Definition: AgoraBase.h:5506
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWIDTH
@ FACE_SHAPE_AREA_NOSEWIDTH
Definition: AgoraBase.h:5291
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:4332
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2680
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:3104
agora::rtc::Rectangle
Definition: AgoraBase.h:2281
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:7348
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:4987
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2788
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:6301
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1679
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:5556
agora::rtc::MultipathStats::activePathNum
int activePathNum
Definition: AgoraBase.h:2653
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:7519
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:5584
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSMILE
@ FACE_SHAPE_AREA_MOUTHSMILE
Definition: AgoraBase.h:5347
agora::rtc::FaceShapeBeautyOptions::shapeStyle
FACE_SHAPE_BEAUTY_STYLE shapeStyle
Definition: AgoraBase.h:5413
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:5140
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2700
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4490
agora::rtc::WatermarkOptions::zOrder
int zOrder
Definition: AgoraBase.h:2370
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1968
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1728
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1518
agora::util::AutoPtr
Definition: AgoraBase.h:100
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:4742
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:869
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:6142
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:3830
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:5737
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSELENGTH
@ FACE_SHAPE_AREA_NOSELENGTH
Definition: AgoraBase.h:5284
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:4442
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:7401
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1960
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2293
agora::rtc::SimulcastConfig::StreamLayerConfig::framerate
int framerate
Definition: AgoraBase.h:2249
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:2032
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:7284
agora::util::AList
Definition: AgoraBase.h:233
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2818
agora::rtc::VideoSubscriptionOptions
Definition: AgoraBase.h:1649
agora::rtc::TranscodingUser
Definition: AgoraBase.h:4264
agora::rtc::WatermarkConfig::id
const char * id
Definition: AgoraBase.h:2519
agora::rtc::PathStats
Contains statistics for a specific network path in multipath transmission.
Definition: AgoraBase.h:2603
agora::rtc::EchoTestConfiguration
Definition: AgoraBase.h:7030
agora::rtc::RtcImage
Definition: AgoraBase.h:4142
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:4274
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACECONTOUR
@ FACE_SHAPE_AREA_FACECONTOUR
Definition: AgoraBase.h:5194
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:6593
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:7293
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:6307
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:5126
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2325
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:7527
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:2175
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:4430
agora::rtc::WatermarkBuffer::buffer
const uint8_t * buffer
Definition: AgoraBase.h:2505
agora::rtc::FaceShapeAreaOptions::shapeArea
FACE_SHAPE_AREA shapeArea
Definition: AgoraBase.h:5373
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:6630
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:4152
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:5619
agora::rtc::FaceShapeBeautyOptions
Face shape beauty options. This structure defines options for facial adjustments of different facial ...
Definition: AgoraBase.h:5389
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4484
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:4578
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:4173
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACELENGTH
@ FACE_SHAPE_AREA_FACELENGTH
Definition: AgoraBase.h:5200
agora::rtc::WatermarkTimestamp::format
const char * format
Definition: AgoraBase.h:2437
agora::rtc::MixedAudioStream
Definition: AgoraBase.h:4618
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2932
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3785
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:4268
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:5044
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:7248
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:4202
agora::rtc::AdvancedConfigInfo
Definition: AgoraBase.h:7339
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2289
agora::rtc::SimulcastConfig::publish_fallback_enable
bool publish_fallback_enable
Definition: AgoraBase.h:2273
agora::rtc::MultipathStats::wifiRxBytes
uint32_t wifiRxBytes
Definition: AgoraBase.h:2641
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3961
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:4147
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:3836
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1768
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2823
agora::rtc::SimulcastConfig::configs
StreamLayerConfig configs[STREAM_LAYER_COUNT_MAX]
Definition: AgoraBase.h:2262
agora::rtc::WatermarkConfig::imageUrl
const char * imageUrl
Definition: AgoraBase.h:2546
agora::rtc::ColorEnhanceOptions
Definition: AgoraBase.h:5551
agora::rtc::MultipathStats::wifiTxBytes
uint32_t wifiTxBytes
Definition: AgoraBase.h:2637
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:6318
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:863
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2357
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:7368
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:4770
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:4409
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2285
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:4564
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEDISTANCE
@ FACE_SHAPE_AREA_EYEDISTANCE
Definition: AgoraBase.h:5244
agora::rtc::WatermarkConfig::timestamp
WatermarkTimestamp timestamp
Definition: AgoraBase.h:2534
agora::util::IString
Definition: AgoraBase.h:172
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:7362
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:7531
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
Definition: AgoraBase.h:5470
agora::rtc::SegmentationProperty::SEG_MODEL_TYPE
SEG_MODEL_TYPE
Definition: AgoraBase.h:5661
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1554
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:4556
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:5114
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2319
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3957
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1656
agora::rtc::RecorderStreamInfo::type
RecorderStreamType type
Definition: AgoraBase.h:7405
agora::rtc::LocalAudioMixerConfiguration::audioInputStreams
MixedAudioStream * audioInputStreams
Definition: AgoraBase.h:4673
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHPOSITION
@ FACE_SHAPE_AREA_MOUTHPOSITION
Definition: AgoraBase.h:5340
agora::rtc::WatermarkConfig::options
WatermarkOptions options
Definition: AgoraBase.h:2552
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:4712
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2751
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:3840
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:4446
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWING
@ FACE_SHAPE_AREA_NOSEWING
Definition: AgoraBase.h:5298
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:4422
agora::rtc::IPacketObserver
Definition: AgoraBase.h:3824
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:4417
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHIN
@ FACE_SHAPE_AREA_CHIN
Definition: AgoraBase.h:5231
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWTHICKNESS
@ FACE_SHAPE_AREA_EYEBROWTHICKNESS
Definition: AgoraBase.h:5368
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2740
agora::VideoLayout::width
uint32_t width
Definition: AgoraBase.h:7568
agora::rtc::VideoFormat
Definition: AgoraBase.h:3087
agora::rtc::AdvanceOptions
Definition: AgoraBase.h:1820
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:4302
agora::rtc::MixedAudioStream::trackId
track_id_t trackId
Definition: AgoraBase.h:4637
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2362
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEKBONE
@ FACE_SHAPE_AREA_CHEEKBONE
Definition: AgoraBase.h:5212
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:2130
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1829
agora::rtc::LocalAudioMixerConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4669
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2688
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2778
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:4762
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:2069
agora::rtc::VideoCanvas::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraBase.h:5049
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:6589
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:4346
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1506
agora::rtc::LocalAudioMixerConfiguration
Definition: AgoraBase.h:4665
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1733
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2724
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2696
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1512
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:7539
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2716
agora::VideoLayout::height
uint32_t height
Definition: AgoraBase.h:7572
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3779
agora::rtc::WatermarkLiteral
The definition of the WatermarkLiteral struct.
Definition: AgoraBase.h:2448
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:5116
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:4352
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_FEMALE
@ FACE_SHAPE_BEAUTY_STYLE_FEMALE
Definition: AgoraBase.h:5399
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3717
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3731
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE
FACE_SHAPE_BEAUTY_STYLE
The face shape beauty style options.
Definition: AgoraBase.h:5395
agora::rtc::SegmentationProperty::SCREEN_COLOR_BLUE
@ SCREEN_COLOR_BLUE
Definition: AgoraBase.h:5681
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEK
@ FACE_SHAPE_AREA_CHEEK
Definition: AgoraBase.h:5218
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSCALE
@ FACE_SHAPE_AREA_MOUTHSCALE
Definition: AgoraBase.h:5333
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:4284
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_MALE
@ FACE_SHAPE_BEAUTY_STYLE_MALE
Definition: AgoraBase.h:5403
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:6151
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACEWIDTH
@ FACE_SHAPE_AREA_FACEWIDTH
Definition: AgoraBase.h:5206
agora::base::AParameter
Definition: AgoraBase.h:7479
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:5145
agora::rtc::MultipathStats::lanTxBytes
uint32_t lanTxBytes
Definition: AgoraBase.h:2629
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:6816
agora::util::AOutputIterator
Definition: AgoraBase.h:202
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2352
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:6392
agora::rtc::WatermarkBuffer::length
int length
Definition: AgoraBase.h:2493
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1737
agora::rtc::WatermarkTimestamp::fontSize
int fontSize
Definition: AgoraBase.h:2418
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:3713
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:7259
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:4750
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1764
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1747
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:4394
agora::rtc::SimulcastConfig::StreamLayerConfig
Definition: AgoraBase.h:2241
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3725
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:4398
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:4426
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:6601
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:5646
agora::rtc::MultipathStats::pathStats
const PathStats * pathStats
Definition: AgoraBase.h:2657
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:7057
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2151
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:4189
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:5630
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:4738
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEGENERAL
@ FACE_SHAPE_AREA_NOSEGENERAL
Definition: AgoraBase.h:5326
agora::rtc::VideoDenoiserOptions
Definition: AgoraBase.h:5503
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2332
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5523
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:5038
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1586
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1972
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2297
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1590
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2366
agora::rtc::MixedAudioStream::channelId
const char * channelId
Definition: AgoraBase.h:4632
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1540
agora::UserInfo
Definition: AgoraBase.h:859
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2827
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:5577
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPUPILS
@ FACE_SHAPE_AREA_EYEPUPILS
Definition: AgoraBase.h:5265
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:5490
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:4997
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:4496
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:6379
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:6831
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:5592
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:4404
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:3796
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSETIP
@ FACE_SHAPE_AREA_NOSETIP
Definition: AgoraBase.h:5319
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:6582
agora::rtc::WatermarkLiteral::wmLiteral
const char * wmLiteral
Definition: AgoraBase.h:2463
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:875
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:5465
agora::VideoLayout::y
uint32_t y
Definition: AgoraBase.h:7564
agora::rtc::WatermarkLiteral::fontSize
int fontSize
Definition: AgoraBase.h:2453
agora::rtc::LocalAudioStats::aecEstimatedDelay
int aecEstimatedDelay
Definition: AgoraBase.h:3986
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:5006
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:7523
agora::rtc::LocalAudioStats::earMonitorDelay
int earMonitorDelay
Definition: AgoraBase.h:3982
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA
FACE_SHAPE_AREA
The specific facial area to be adjusted.
Definition: AgoraBase.h:5174
agora::rtc::MultipathStats::lanRxBytes
uint32_t lanRxBytes
Definition: AgoraBase.h:2633
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3735
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2704
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1550
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1772
agora::rtc::SimulcastConfig::STREAM_LAYER_6
@ STREAM_LAYER_6
Definition: AgoraBase.h:2228
agora::rtc::MultipathStats::mobileRxBytes
uint32_t mobileRxBytes
Definition: AgoraBase.h:2649
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEINNERCORNER
@ FACE_SHAPE_AREA_EYEINNERCORNER
Definition: AgoraBase.h:5272
agora::rtc::LocalAudioStats::audioPlayoutDelay
int audioPlayoutDelay
Definition: AgoraBase.h:3978
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:7535
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3739
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_LOWEREYELID
@ FACE_SHAPE_AREA_LOWEREYELID
Definition: AgoraBase.h:5258
agora::rtc::AdvanceOptions::encodeAlpha
bool encodeAlpha
Definition: AgoraBase.h:1835
agora::VideoLayout::strUid
user_id_t strUid
Definition: AgoraBase.h:7556
agora::rtc::LogUploadServerInfo
Definition: AgoraBase.h:7317
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Definition: AgoraBase.h:5516
agora::rtc::AudioTrackConfig::enableAudioProcessing
bool enableAudioProcessing
Definition: AgoraBase.h:5743
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:5026
agora::rtc::CodecCapInfo
Definition: AgoraBase.h:1937
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:6113
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:6334
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2813
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:4439
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:4165
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2179
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1751
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:4701
agora::rtc::SegmentationProperty::modelType
SEG_MODEL_TYPE modelType
Definition: AgoraBase.h:5687
agora::rtc::MultipathStats
Aggregates statistics for all network paths used in multipath transmission.
Definition: AgoraBase.h:2625
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2732
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4560
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:5120
agora::base::LicenseCallback
Definition: AgoraBase.h:7493
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:6811
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:4374
agora::rtc::SimulcastConfig::STREAM_LOW
@ STREAM_LOW
Definition: AgoraBase.h:2232
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:5580
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:7255
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:5001
agora::rtc::LocalAccessPointConfiguration::disableAut
bool disableAut
Definition: AgoraBase.h:7374
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:6107
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1143
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:4505
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:4365
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:4480
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:5640
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:7323
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYESCALE
@ FACE_SHAPE_AREA_EYESCALE
Definition: AgoraBase.h:5237
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHLIP
@ FACE_SHAPE_AREA_MOUTHLIP
Definition: AgoraBase.h:5354
agora::rtc::SimulcastConfig::STREAM_LAYER_5
@ STREAM_LAYER_5
Definition: AgoraBase.h:2224
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEBRIDGE
@ FACE_SHAPE_AREA_NOSEBRIDGE
Definition: AgoraBase.h:5312
agora::rtc::SegmentationProperty::SCREEN_COLOR_AUTO
@ SCREEN_COLOR_AUTO
Definition: AgoraBase.h:5675
agora::VideoLayout::videoState
uint32_t videoState
Definition: AgoraBase.h:7577
agora::rtc::MixedAudioStream::sourceType
AUDIO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4622
agora::rtc::WatermarkConfig
Defines the configuration for a watermark.
Definition: AgoraBase.h:2515
agora::rtc::RtcStats
Definition: AgoraBase.h:2672
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1662
agora::rtc::IAudioEncodedFrameObserver::onRecordAudioEncodedFrame
virtual void onRecordAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::VirtualBackgroundSource::BACKGROUND_VIDEO
@ BACKGROUND_VIDEO
Definition: AgoraBase.h:5600
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2347
agora::rtc::LowlightEnhanceOptions
Definition: AgoraBase.h:5455
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:4296
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:4339
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1564
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2684
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2720
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:5535
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2712
agora::rtc::SegmentationProperty::greenCapacity
float greenCapacity
Definition: AgoraBase.h:5696
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3953
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:7275
agora::rtc::SimulcastConfig::STREAM_LAYER_COUNT_MAX
@ STREAM_LAYER_COUNT_MAX
Definition: AgoraBase.h:2236
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:2341
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:2064
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3949
agora::rtc::RecorderStreamInfo
Definition: AgoraBase.h:7393
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:7326
agora::rtc::SimulcastConfig
Definition: AgoraBase.h:2200
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:6124
agora::rtc::MixedAudioStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4627
agora::rtc::WatermarkBuffer::width
int width
Definition: AgoraBase.h:2485
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:4157
agora::rtc::FocalLengthInfo::focalLengthType
CAMERA_FOCAL_LENGTH_TYPE focalLengthType
Definition: AgoraBase.h:1954
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1498
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2763
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2758
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:4707
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:3709
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPOSITION
@ FACE_SHAPE_AREA_EYEPOSITION
Definition: AgoraBase.h:5251
agora::rtc::IAudioEncodedFrameObserver::onPlaybackAudioEncodedFrame
virtual void onPlaybackAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::AdvanceOptions::encodingPreference
ENCODING_PREFERENCE encodingPreference
Definition: AgoraBase.h:1824
agora::rtc::SegmentationProperty::screenColorType
SCREEN_COLOR_TYPE screenColorType
Definition: AgoraBase.h:5702
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3721
agora::rtc::IAudioEncodedFrameObserver::onMixedAudioEncodedFrame
virtual void onMixedAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_FAST
@ LOW_LIGHT_ENHANCE_LEVEL_FAST
Definition: AgoraBase.h:5481
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2793
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:1943
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:4449
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:1941
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:6295
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:7511
agora::rtc::WatermarkTimestamp::strokeWidth
int strokeWidth
Definition: AgoraBase.h:2429
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
Definition: AgoraBase.h:5459
agora::util::IContainer
Definition: AgoraBase.h:193
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:5614
agora::rtc::LocalAudioMixerConfiguration::syncWithLocalMic
bool syncWithLocalMic
Definition: AgoraBase.h:4680
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MANDIBLE
@ FACE_SHAPE_AREA_MANDIBLE
Definition: AgoraBase.h:5225
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1139
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:5608
agora::rtc::SegmentationProperty::SEG_MODEL_AI
@ SEG_MODEL_AI
Definition: AgoraBase.h:5664
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_NATURAL
@ FACE_SHAPE_BEAUTY_STYLE_NATURAL
Definition: AgoraBase.h:5408
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:7267
agora::rtc::FaceShapeAreaOptions::shapeIntensity
int shapeIntensity
Definition: AgoraBase.h:5378
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:4518
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2142
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:5486
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:4384
agora::rtc::WatermarkBuffer
Defines the configuration for a buffer watermark.
Definition: AgoraBase.h:2480
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FOREHEAD
@ FACE_SHAPE_AREA_FOREHEAD
Definition: AgoraBase.h:5188
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::WatermarkTimestamp
The definition of the WatermarkTimestamp struct.
Definition: AgoraBase.h:2414
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1939
agora::rtc::AudioTrackConfig
Definition: AgoraBase.h:5731
agora::rtc::FocalLengthInfo::cameraDirection
int cameraDirection
Definition: AgoraBase.h:1952
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:7351
agora::rtc::SimulcastConfig::STREAM_LAYER_4
@ STREAM_LAYER_4
Definition: AgoraBase.h:2220
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:4514
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:4538
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:2184
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:4179
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEOUTERCORNER
@ FACE_SHAPE_AREA_EYEOUTERCORNER
Definition: AgoraBase.h:5279
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4500
agora::rtc::VideoCanvas::subviewUid
uid_t subviewUid
Definition: AgoraBase.h:4993
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:6823
agora::rtc::MultipathStats::mobileTxBytes
uint32_t mobileTxBytes
Definition: AgoraBase.h:2645
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1759
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:5611
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:6138
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:7354
agora::rtc::SimulcastConfig::STREAM_LAYER_3
@ STREAM_LAYER_3
Definition: AgoraBase.h:2216
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1578
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3694
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:4569
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_HEADSCALE
@ FACE_SHAPE_AREA_HEADSCALE
Definition: AgoraBase.h:5182
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1297
agora::rtc::SimulcastConfig::StreamLayerConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2245
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:5588
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1594
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:5463
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2808
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NONE
@ FACE_SHAPE_AREA_NONE
Definition: AgoraBase.h:5176
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:4358
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2831
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2728
agora::rtc::FaceShapeAreaOptions
Face shape area options. This structure defines options for facial adjustments on different facial ar...
Definition: AgoraBase.h:5168
agora::rtc::CodecCapLevels
Definition: AgoraBase.h:1927
agora::SpatialAudioParams
Definition: AgoraBase.h:7507
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:5566
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:5531
agora::rtc::SegmentationProperty::SCREEN_COLOR_GREEN
@ SCREEN_COLOR_GREEN
Definition: AgoraBase.h:5678
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1964
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:4774
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:4510
agora::rtc::PathStats::rxKBitRate
int rxKBitRate
Definition: AgoraBase.h:2615
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEROOT
@ FACE_SHAPE_AREA_NOSEROOT
Definition: AgoraBase.h:5305
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2798
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:5118
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:6614
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:2053
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWPOSITION
@ FACE_SHAPE_AREA_EYEBROWPOSITION
Definition: AgoraBase.h:5361
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:4209
agora::rtc::WatermarkBuffer::format
media::base::VIDEO_PIXEL_FORMAT format
Definition: AgoraBase.h:2498
agora::rtc::FocalLengthInfo
Definition: AgoraBase.h:1950
agora::rtc::DeviceInfo
Definition: AgoraBase.h:3810
agora::base::IEngineBase
Definition: AgoraBase.h:7473
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1363
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:6327
agora::util::IIterator
Definition: AgoraBase.h:184
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:7061
agora::rtc::VideoRenderingTracingInfo
Definition: AgoraBase.h:7244
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:7331
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:5511
agora::rtc::WatermarkTimestamp::fontFilePath
const char * fontFilePath
Definition: AgoraBase.h:2425
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1546
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1741
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2773
agora::rtc::FaceShapeBeautyOptions::styleIntensity
int styleIntensity
Definition: AgoraBase.h:5417
agora::rtc::WatermarkLiteral::fontFilePath
const char * fontFilePath
Definition: AgoraBase.h:2470
agora::VideoLayout::uid
rtc::uid_t uid
Definition: AgoraBase.h:7552
agora::rtc::WatermarkConfig::type
WATERMARK_SOURCE_TYPE type
Definition: AgoraBase.h:2523
agora::rtc::PathStats::txKBitRate
int txKBitRate
Definition: AgoraBase.h:2611
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:7357
agora::rtc::PathStats::type
MultipathType type
Definition: AgoraBase.h:2607
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2927
agora::rtc::WatermarkLiteral::strokeWidth
int strokeWidth
Definition: AgoraBase.h:2457
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:4288
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:4983
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3965
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:6322
agora::rtc::SegmentationProperty
Definition: AgoraBase.h:5658
agora::rtc::SimulcastConfig::StreamLayerConfig::enable
bool enable
Definition: AgoraBase.h:2255
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:6585