Agora Java API Reference for Android
AgoraBase.h
1 //
2 // Agora Engine SDK
3 //
4 // Created by Sting Feng in 2017-11.
5 // Copyright (c) 2017 Agora.io. All rights reserved.
6 //
7 
8 // This header file is included by both high level and low level APIs,
9 #pragma once // NOLINT(build/header_guard)
10 
11 #include <stdarg.h>
12 #include <stddef.h>
13 #include <stdio.h>
14 #include <string.h>
15 #include <cassert>
16 
17 #include "IAgoraParameter.h"
18 #include "AgoraMediaBase.h"
19 #include "AgoraRefPtr.h"
20 #include "AgoraOptional.h"
21 
22 #define MAX_PATH_260 (260)
23 
24 #if defined(_WIN32)
25 
26 #ifndef WIN32_LEAN_AND_MEAN
27 #define WIN32_LEAN_AND_MEAN
28 #endif // !WIN32_LEAN_AND_MEAN
29 #if defined(__aarch64__)
30 #include <arm64intr.h>
31 #endif
32 #include <Windows.h>
33 
34 #if defined(AGORARTC_EXPORT)
35 #define AGORA_API extern "C" __declspec(dllexport)
36 #else
37 #define AGORA_API extern "C" __declspec(dllimport)
38 #endif // AGORARTC_EXPORT
39 
40 #define AGORA_CALL __cdecl
41 
42 #define __deprecated
43 
44 #elif defined(__APPLE__)
45 
46 #include <TargetConditionals.h>
47 
48 #define AGORA_API extern "C" __attribute__((visibility("default")))
49 #define AGORA_CALL
50 
51 #elif defined(__ANDROID__) || defined(__linux__)
52 
53 #define AGORA_API extern "C" __attribute__((visibility("default")))
54 #define AGORA_CALL
55 
56 #define __deprecated
57 
58 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
59 
60 #define AGORA_API extern "C"
61 #define AGORA_CALL
62 
63 #define __deprecated
64 
65 #endif // _WIN32
66 
67 #ifndef OPTIONAL_ENUM_SIZE_T
68 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
69 #define OPTIONAL_ENUM_SIZE_T enum : size_t
70 #else
71 #define OPTIONAL_ENUM_SIZE_T enum
72 #endif
73 #endif
74 
75 #ifndef OPTIONAL_NULLPTR
76 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
77 #define OPTIONAL_NULLPTR nullptr
78 #else
79 #define OPTIONAL_NULLPTR NULL
80 #endif
81 #endif
82 
83 #define INVALID_DISPLAY_ID 0xffff
84 
85 namespace agora {
86 namespace util {
87 
88 template <class T>
89 class AutoPtr {
90  protected:
91  typedef T value_type;
92  typedef T* pointer_type;
93 
94  public:
95  explicit AutoPtr(pointer_type p = NULL) : ptr_(p) {}
96 
97  ~AutoPtr() {
98  if (ptr_) {
99  ptr_->release();
100  ptr_ = NULL;
101  }
102  }
103 
104  operator bool() const { return (ptr_ != NULL); }
105 
106  value_type& operator*() const { return *get(); }
107 
108  pointer_type operator->() const { return get(); }
109 
110  pointer_type get() const { return ptr_; }
111 
112  pointer_type release() {
113  pointer_type ret = ptr_;
114  ptr_ = 0;
115  return ret;
116  }
117 
118  void reset(pointer_type ptr = NULL) {
119  if (ptr != ptr_ && ptr_) {
120  ptr_->release();
121  }
122 
123  ptr_ = ptr;
124  }
125 
126  template <class C1, class C2>
127  bool queryInterface(C1* c, C2 iid) {
128  pointer_type p = NULL;
129  if (c && !c->queryInterface(iid, reinterpret_cast<void**>(&p))) {
130  reset(p);
131  }
132 
133  return (p != NULL);
134  }
135 
136  private:
137  AutoPtr(const AutoPtr&);
138  AutoPtr& operator=(const AutoPtr&);
139 
140  private:
141  pointer_type ptr_;
142 };
143 
144 template <class T>
145 class CopyableAutoPtr : public AutoPtr<T> {
146  typedef typename AutoPtr<T>::pointer_type pointer_type;
147 
148  public:
149  explicit CopyableAutoPtr(pointer_type p = 0) : AutoPtr<T>(p) {}
150  CopyableAutoPtr(const CopyableAutoPtr& rhs) { this->reset(rhs.clone()); }
151  CopyableAutoPtr& operator=(const CopyableAutoPtr& rhs) {
152  if (this != &rhs) this->reset(rhs.clone());
153  return *this;
154  }
155  pointer_type clone() const {
156  if (!this->get()) return NULL;
157  return this->get()->clone();
158  }
159 };
160 
161 class IString {
162  public:
163  virtual bool empty() const = 0;
164  virtual const char* c_str() = 0;
165  virtual const char* data() = 0;
166  virtual size_t length() = 0;
167  virtual IString* clone() = 0;
168  virtual void release() = 0;
169  virtual ~IString() {}
170 };
172 
173 class IIterator {
174  public:
175  virtual void* current() = 0;
176  virtual const void* const_current() const = 0;
177  virtual bool next() = 0;
178  virtual void release() = 0;
179  virtual ~IIterator() {}
180 };
181 
182 class IContainer {
183  public:
184  virtual IIterator* begin() = 0;
185  virtual size_t size() const = 0;
186  virtual void release() = 0;
187  virtual ~IContainer() {}
188 };
189 
190 template <class T>
192  IIterator* p;
193 
194  public:
195  typedef T value_type;
196  typedef value_type& reference;
197  typedef const value_type& const_reference;
198  typedef value_type* pointer;
199  typedef const value_type* const_pointer;
200  explicit AOutputIterator(IIterator* it = NULL) : p(it) {}
201  ~AOutputIterator() {
202  if (p) p->release();
203  }
204  AOutputIterator(const AOutputIterator& rhs) : p(rhs.p) {}
205  AOutputIterator& operator++() {
206  p->next();
207  return *this;
208  }
209  bool operator==(const AOutputIterator& rhs) const {
210  if (p && rhs.p)
211  return p->current() == rhs.p->current();
212  else
213  return valid() == rhs.valid();
214  }
215  bool operator!=(const AOutputIterator& rhs) const { return !this->operator==(rhs); }
216  reference operator*() { return *reinterpret_cast<pointer>(p->current()); }
217  const_reference operator*() const { return *reinterpret_cast<const_pointer>(p->const_current()); }
218  bool valid() const { return p && p->current() != NULL; }
219 };
220 
221 template <class T>
222 class AList {
223  IContainer* container;
224  bool owner;
225 
226  public:
227  typedef T value_type;
228  typedef value_type& reference;
229  typedef const value_type& const_reference;
230  typedef value_type* pointer;
231  typedef const value_type* const_pointer;
232  typedef size_t size_type;
235 
236  public:
237  AList() : container(NULL), owner(false) {}
238  AList(IContainer* c, bool take_ownership) : container(c), owner(take_ownership) {}
239  ~AList() { reset(); }
240  void reset(IContainer* c = NULL, bool take_ownership = false) {
241  if (owner && container) container->release();
242  container = c;
243  owner = take_ownership;
244  }
245  iterator begin() { return container ? iterator(container->begin()) : iterator(NULL); }
246  iterator end() { return iterator(NULL); }
247  size_type size() const { return container ? container->size() : 0; }
248  bool empty() const { return size() == 0; }
249 };
250 
251 } // namespace util
252 
256 enum CHANNEL_PROFILE_TYPE {
262  CHANNEL_PROFILE_COMMUNICATION = 0,
268  CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
273  CHANNEL_PROFILE_GAME __deprecated = 2,
279  CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
280 
285  CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
286 };
287 
291 enum WARN_CODE_TYPE {
296  WARN_INVALID_VIEW = 8,
301  WARN_INIT_VIDEO = 16,
306  WARN_PENDING = 20,
311  WARN_NO_AVAILABLE_CHANNEL = 103,
317  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
322  WARN_LOOKUP_CHANNEL_REJECTED = 105,
328  WARN_OPEN_CHANNEL_TIMEOUT = 106,
333  WARN_OPEN_CHANNEL_REJECTED = 107,
334 
335  // sdk: 100~1000
339  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
343  WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
347  WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
351  WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
355  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
359  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
363  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
366  WARN_CHANNEL_SOCKET_ERROR = 134,
370  WARN_AUDIO_MIXING_OPEN_ERROR = 701,
374  WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
378  WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
382  WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
386  WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
390  WARN_ADM_RECORD_MALFUNCTION = 1021,
394  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
398  WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
406  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
410  WARN_APM_HOWLING = 1051,
414  WARN_ADM_GLITCH_STATE = 1052,
418  WARN_ADM_IMPROPER_SETTINGS = 1053,
422  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
427  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
435  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
436 };
437 
441 enum ERROR_CODE_TYPE {
445  ERR_OK = 0,
446  // 1~1000
450  ERR_FAILED = 1,
455  ERR_INVALID_ARGUMENT = 2,
462  ERR_NOT_READY = 3,
466  ERR_NOT_SUPPORTED = 4,
470  ERR_REFUSED = 5,
474  ERR_BUFFER_TOO_SMALL = 6,
478  ERR_NOT_INITIALIZED = 7,
482  ERR_INVALID_STATE = 8,
487  ERR_NO_PERMISSION = 9,
493  ERR_TIMEDOUT = 10,
498  ERR_CANCELED = 11,
504  ERR_TOO_OFTEN = 12,
510  ERR_BIND_SOCKET = 13,
515  ERR_NET_DOWN = 14,
521  ERR_JOIN_CHANNEL_REJECTED = 17,
528  ERR_LEAVE_CHANNEL_REJECTED = 18,
532  ERR_ALREADY_IN_USE = 19,
537  ERR_ABORTED = 20,
542  ERR_INIT_NET_ENGINE = 21,
547  ERR_RESOURCE_LIMITED = 22,
553  ERR_INVALID_APP_ID = 101,
558  ERR_INVALID_CHANNEL_NAME = 102,
564  ERR_NO_SERVER_RESOURCES = 103,
577  ERR_TOKEN_EXPIRED = 109,
594  ERR_INVALID_TOKEN = 110,
599  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
604  ERR_CONNECTION_LOST = 112, // only used in web sdk
609  ERR_NOT_IN_CHANNEL = 113,
614  ERR_SIZE_TOO_LARGE = 114,
619  ERR_BITRATE_LIMIT = 115,
624  ERR_TOO_MANY_DATA_STREAMS = 116,
628  ERR_STREAM_MESSAGE_TIMEOUT = 117,
632  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
637  ERR_DECRYPTION_FAILED = 120,
641  ERR_INVALID_USER_ID = 121,
645  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
651  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
652 
656  ERR_LICENSE_CREDENTIAL_INVALID = 131,
657 
661  ERR_INVALID_USER_ACCOUNT = 134,
662 
668  ERR_MODULE_NOT_FOUND = 157,
669 
670  // Licensing, keep the license error code same as the main version
671  ERR_CERT_RAW = 157,
672  ERR_CERT_JSON_PART = 158,
673  ERR_CERT_JSON_INVAL = 159,
674  ERR_CERT_JSON_NOMEM = 160,
675  ERR_CERT_CUSTOM = 161,
676  ERR_CERT_CREDENTIAL = 162,
677  ERR_CERT_SIGN = 163,
678  ERR_CERT_FAIL = 164,
679  ERR_CERT_BUF = 165,
680  ERR_CERT_NULL = 166,
681  ERR_CERT_DUEDATE = 167,
682  ERR_CERT_REQUEST = 168,
683 
684  // PcmSend Error num
685  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
686  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
687 
689  // signaling: 400~600
690  ERR_LOGIN_ALREADY_LOGIN = 428,
691 
693  // 1001~2000
697  ERR_LOAD_MEDIA_ENGINE = 1001,
703  ERR_ADM_GENERAL_ERROR = 1005,
708  ERR_ADM_INIT_PLAYOUT = 1008,
712  ERR_ADM_START_PLAYOUT = 1009,
716  ERR_ADM_STOP_PLAYOUT = 1010,
721  ERR_ADM_INIT_RECORDING = 1011,
725  ERR_ADM_START_RECORDING = 1012,
729  ERR_ADM_STOP_RECORDING = 1013,
733  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
734 };
735 
736 enum LICENSE_ERROR_TYPE {
740  LICENSE_ERR_INVALID = 1,
744  LICENSE_ERR_EXPIRE = 2,
748  LICENSE_ERR_MINUTES_EXCEED = 3,
752  LICENSE_ERR_LIMITED_PERIOD = 4,
756  LICENSE_ERR_DIFF_DEVICES = 5,
760  LICENSE_ERR_INTERNAL = 99,
761 };
762 
766 enum AUDIO_SESSION_OPERATION_RESTRICTION {
770  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
774  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
778  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
783  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
788  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
789 };
790 
791 typedef const char* user_id_t;
792 typedef void* view_t;
793 
797 struct UserInfo {
807  bool hasAudio;
813  bool hasVideo;
814 
815  UserInfo() : hasAudio(false), hasVideo(false) {}
816 };
817 
818 typedef util::AList<UserInfo> UserList;
819 
820 // Shared between Agora Service and Rtc Engine
821 namespace rtc {
822 
826 enum USER_OFFLINE_REASON_TYPE {
830  USER_OFFLINE_QUIT = 0,
836  USER_OFFLINE_DROPPED = 1,
840  USER_OFFLINE_BECOME_AUDIENCE = 2,
841 };
842 
843 enum INTERFACE_ID_TYPE {
844  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
845  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
846  AGORA_IID_PARAMETER_ENGINE = 3,
847  AGORA_IID_MEDIA_ENGINE = 4,
848  AGORA_IID_AUDIO_ENGINE = 5,
849  AGORA_IID_VIDEO_ENGINE = 6,
850  AGORA_IID_RTC_CONNECTION = 7,
851  AGORA_IID_SIGNALING_ENGINE = 8,
852  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
853  AGORA_IID_CLOUD_SPATIAL_AUDIO = 10,
854  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
855  AGORA_IID_STATE_SYNC = 13,
856  AGORA_IID_METACHAT_SERVICE = 14,
857  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
858  AGORA_IID_H265_TRANSCODER = 16,
859 };
860 
864 enum QUALITY_TYPE {
869  QUALITY_UNKNOWN __deprecated = 0,
873  QUALITY_EXCELLENT = 1,
878  QUALITY_GOOD = 2,
882  QUALITY_POOR = 3,
886  QUALITY_BAD = 4,
890  QUALITY_VBAD = 5,
894  QUALITY_DOWN = 6,
898  QUALITY_UNSUPPORTED = 7,
902  QUALITY_DETECTING = 8,
903 };
904 
908 enum FIT_MODE_TYPE {
913  MODE_COVER = 1,
914 
920  MODE_CONTAIN = 2,
921 };
922 
926 enum VIDEO_ORIENTATION {
930  VIDEO_ORIENTATION_0 = 0,
934  VIDEO_ORIENTATION_90 = 90,
938  VIDEO_ORIENTATION_180 = 180,
942  VIDEO_ORIENTATION_270 = 270
943 };
944 
948 enum FRAME_RATE {
952  FRAME_RATE_FPS_1 = 1,
956  FRAME_RATE_FPS_7 = 7,
960  FRAME_RATE_FPS_10 = 10,
964  FRAME_RATE_FPS_15 = 15,
968  FRAME_RATE_FPS_24 = 24,
972  FRAME_RATE_FPS_30 = 30,
976  FRAME_RATE_FPS_60 = 60,
977 };
978 
979 enum FRAME_WIDTH {
980  FRAME_WIDTH_960 = 960,
981 };
982 
983 enum FRAME_HEIGHT {
984  FRAME_HEIGHT_540 = 540,
985 };
986 
987 
991 enum VIDEO_FRAME_TYPE {
993  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
995  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
997  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
999  VIDEO_FRAME_TYPE_B_FRAME = 5,
1001  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1003  VIDEO_FRAME_TYPE_UNKNOW
1004 };
1005 
1009 enum ORIENTATION_MODE {
1017  ORIENTATION_MODE_ADAPTIVE = 0,
1024  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1031  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1032 };
1033 
1037 enum DEGRADATION_PREFERENCE {
1045  MAINTAIN_QUALITY = 0,
1051  MAINTAIN_FRAMERATE = 1,
1058  MAINTAIN_BALANCED = 2,
1062  MAINTAIN_RESOLUTION = 3,
1066  DISABLED = 100,
1067 };
1068 
1076  int width;
1080  int height;
1081  VideoDimensions() : width(640), height(480) {}
1082  VideoDimensions(int w, int h) : width(w), height(h) {}
1083  bool operator==(const VideoDimensions& rhs) const {
1084  return width == rhs.width && height == rhs.height;
1085  }
1086 };
1087 
1093 const int STANDARD_BITRATE = 0;
1094 
1102 const int COMPATIBLE_BITRATE = -1;
1103 
1107 const int DEFAULT_MIN_BITRATE = -1;
1108 
1112 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1113 
1117 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1118  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1119  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1120  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1121 };
1122 
1126 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1128  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1130  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1132  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1134  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1136  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1137 };
1138 
1142 enum VIDEO_CODEC_TYPE {
1143  VIDEO_CODEC_NONE = 0,
1147  VIDEO_CODEC_VP8 = 1,
1151  VIDEO_CODEC_H264 = 2,
1155  VIDEO_CODEC_H265 = 3,
1160  VIDEO_CODEC_GENERIC = 6,
1164  VIDEO_CODEC_GENERIC_H264 = 7,
1168  VIDEO_CODEC_AV1 = 12,
1172  VIDEO_CODEC_VP9 = 13,
1176  VIDEO_CODEC_GENERIC_JPEG = 20,
1177 };
1178 
1182 enum TCcMode {
1186  CC_ENABLED,
1190  CC_DISABLED,
1191 };
1192 
1200  TCcMode ccMode;
1204  VIDEO_CODEC_TYPE codecType;
1205 
1263 
1264  SenderOptions()
1265  : ccMode(CC_ENABLED),
1266  codecType(VIDEO_CODEC_H264),
1267  targetBitrate(6500) {}
1268 };
1269 
1273 enum AUDIO_CODEC_TYPE {
1277  AUDIO_CODEC_OPUS = 1,
1278  // kIsac = 2,
1282  AUDIO_CODEC_PCMA = 3,
1286  AUDIO_CODEC_PCMU = 4,
1290  AUDIO_CODEC_G722 = 5,
1291  // kIlbc = 6,
1293  // AUDIO_CODEC_AAC = 7,
1297  AUDIO_CODEC_AACLC = 8,
1301  AUDIO_CODEC_HEAAC = 9,
1305  AUDIO_CODEC_JC1 = 10,
1309  AUDIO_CODEC_HEAAC2 = 11,
1313  AUDIO_CODEC_LPCNET = 12,
1314 };
1315 
1319 enum AUDIO_ENCODING_TYPE {
1324  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1329  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1334  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1339  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1344  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1349  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1354  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1359  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1364  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1369  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1374  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1375 };
1376 
1380 enum WATERMARK_FIT_MODE {
1385  FIT_MODE_COVER_POSITION,
1390  FIT_MODE_USE_IMAGE_RATIO
1391 };
1392 
1398  : speech(true),
1399  sendEvenIfEmpty(true) {}
1400 
1406  bool speech;
1413 };
1414 
1420  : codec(AUDIO_CODEC_AACLC),
1421  sampleRateHz(0),
1422  samplesPerChannel(0),
1423  numberOfChannels(0),
1424  captureTimeMs(0) {}
1425 
1427  : codec(rhs.codec),
1436  AUDIO_CODEC_TYPE codec;
1455 
1459  int64_t captureTimeMs;
1460 };
1465  AudioPcmDataInfo() : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1466 
1469  channelNum(rhs.channelNum),
1470  samplesOut(rhs.samplesOut),
1472  ntpTimeMs(rhs.ntpTimeMs) {}
1473 
1478 
1479  int16_t channelNum;
1480 
1481  // Output
1485  size_t samplesOut;
1489  int64_t elapsedTimeMs;
1493  int64_t ntpTimeMs;
1494 };
1498 enum H264PacketizeMode {
1502  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1506  SingleNalUnit, // Mode 0 - only single NALU allowed
1507 };
1508 
1512 enum VIDEO_STREAM_TYPE {
1516  VIDEO_STREAM_HIGH = 0,
1520  VIDEO_STREAM_LOW = 1,
1521 };
1522 
1537 
1539 };
1540 
1546  : codecType(VIDEO_CODEC_H264),
1547  width(0),
1548  height(0),
1549  framesPerSecond(0),
1550  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1551  rotation(VIDEO_ORIENTATION_0),
1552  trackId(0),
1553  captureTimeMs(0),
1554  decodeTimeMs(0),
1555  uid(0),
1556  streamType(VIDEO_STREAM_HIGH) {}
1557 
1559  : codecType(rhs.codecType),
1560  width(rhs.width),
1561  height(rhs.height),
1563  frameType(rhs.frameType),
1564  rotation(rhs.rotation),
1565  trackId(rhs.trackId),
1568  uid(rhs.uid),
1569  streamType(rhs.streamType) {}
1570 
1571  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1572  if (this == &rhs) return *this;
1573  codecType = rhs.codecType;
1574  width = rhs.width;
1575  height = rhs.height;
1577  frameType = rhs.frameType;
1578  rotation = rhs.rotation;
1579  trackId = rhs.trackId;
1581  decodeTimeMs = rhs.decodeTimeMs;
1582  uid = rhs.uid;
1583  streamType = rhs.streamType;
1584  return *this;
1585  }
1589  VIDEO_CODEC_TYPE codecType;
1593  int width;
1597  int height;
1607  VIDEO_FRAME_TYPE frameType;
1611  VIDEO_ORIENTATION rotation;
1615  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1616  // and additional payload for later implementation.
1620  int64_t captureTimeMs;
1624  int64_t decodeTimeMs;
1628  uid_t uid;
1632  VIDEO_STREAM_TYPE streamType;
1633 
1634 };
1638 enum COMPRESSION_PREFERENCE {
1642  PREFER_LOW_LATENCY,
1646  PREFER_QUALITY,
1647 };
1648 
1652 enum ENCODING_PREFERENCE {
1656  PREFER_AUTO = -1,
1660  PREFER_SOFTWARE = 0,
1664  PREFER_HARDWARE = 1,
1665 };
1666 
1671 
1675  ENCODING_PREFERENCE encodingPreference;
1676 
1680  COMPRESSION_PREFERENCE compressionPreference;
1681 
1682  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1683  compressionPreference(PREFER_LOW_LATENCY) {}
1684 
1685  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1686  COMPRESSION_PREFERENCE compression_preference) :
1687  encodingPreference(encoding_preference),
1688  compressionPreference(compression_preference) {}
1689 
1690  bool operator==(const AdvanceOptions& rhs) const {
1691  return encodingPreference == rhs.encodingPreference &&
1692  compressionPreference == rhs.compressionPreference;
1693  }
1694 
1695 };
1696 
1700 enum VIDEO_MIRROR_MODE_TYPE {
1704  VIDEO_MIRROR_MODE_AUTO = 0,
1708  VIDEO_MIRROR_MODE_ENABLED = 1,
1712  VIDEO_MIRROR_MODE_DISABLED = 2,
1713 };
1714 
1715 
1717 enum CODEC_CAP_MASK {
1719  CODEC_CAP_MASK_NONE = 0,
1720 
1722  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1723 
1725  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1726 
1728  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1729 
1731  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1732 };
1733 
1735  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1736  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1737 
1738  CodecCapLevels(): hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED), swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1739 };
1740 
1744  VIDEO_CODEC_TYPE codecType;
1749 };
1750 
1758  VIDEO_CODEC_TYPE codecType;
1823  int bitrate;
1824 
1844  ORIENTATION_MODE orientationMode;
1848  DEGRADATION_PREFERENCE degradationPreference;
1849 
1854  VIDEO_MIRROR_MODE_TYPE mirrorMode;
1855 
1860 
1861  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1862  : codecType(VIDEO_CODEC_H264),
1863  dimensions(d),
1864  frameRate(f),
1865  bitrate(b),
1866  minBitrate(DEFAULT_MIN_BITRATE),
1867  orientationMode(m),
1868  degradationPreference(MAINTAIN_QUALITY),
1869  mirrorMode(mirror),
1870  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1871  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1872  : codecType(VIDEO_CODEC_H264),
1873  dimensions(width, height),
1874  frameRate(f),
1875  bitrate(b),
1876  minBitrate(DEFAULT_MIN_BITRATE),
1877  orientationMode(m),
1878  degradationPreference(MAINTAIN_QUALITY),
1879  mirrorMode(mirror),
1880  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1881  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
1882  : codecType(config.codecType),
1883  dimensions(config.dimensions),
1884  frameRate(config.frameRate),
1885  bitrate(config.bitrate),
1886  minBitrate(config.minBitrate),
1889  mirrorMode(config.mirrorMode),
1890  advanceOptions(config.advanceOptions) {}
1891  VideoEncoderConfiguration()
1892  : codecType(VIDEO_CODEC_H264),
1893  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
1894  frameRate(FRAME_RATE_FPS_15),
1895  bitrate(STANDARD_BITRATE),
1896  minBitrate(DEFAULT_MIN_BITRATE),
1897  orientationMode(ORIENTATION_MODE_ADAPTIVE),
1898  degradationPreference(MAINTAIN_QUALITY),
1899  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
1900  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1901 
1902  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
1903  if (this == &rhs) return *this;
1904  codecType = rhs.codecType;
1905  dimensions = rhs.dimensions;
1906  frameRate = rhs.frameRate;
1907  bitrate = rhs.bitrate;
1908  minBitrate = rhs.minBitrate;
1909  orientationMode = rhs.orientationMode;
1910  degradationPreference = rhs.degradationPreference;
1911  mirrorMode = rhs.mirrorMode;
1912  advanceOptions = rhs.advanceOptions;
1913  return *this;
1914  }
1915 };
1916 
1940  bool ordered;
1941 };
1942 
1946 enum SIMULCAST_STREAM_MODE {
1947  /*
1948  * disable simulcast stream until receive request for enable simulcast stream by other broadcaster
1949  */
1950  AUTO_SIMULCAST_STREAM = -1,
1951  /*
1952  * disable simulcast stream
1953  */
1954  DISABLE_SIMULCAST_STREAM = 0,
1955  /*
1956  * always enable simulcast stream
1957  */
1958  ENABLE_SIMULCAST_STREAM = 1,
1959 };
1960 
1977  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
1978  bool operator==(const SimulcastStreamConfig& rhs) const {
1979  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
1980  }
1981 };
1982 
1987 struct Rectangle {
1991  int x;
1995  int y;
1999  int width;
2003  int height;
2004 
2005  Rectangle() : x(0), y(0), width(0), height(0) {}
2006  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2007 };
2008 
2023  float xRatio;
2029  float yRatio;
2035  float widthRatio;
2036 
2037  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2038  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2039 };
2040 
2069  WATERMARK_FIT_MODE mode;
2070 
2072  : visibleInPreview(true),
2073  positionInLandscapeMode(0, 0, 0, 0),
2074  positionInPortraitMode(0, 0, 0, 0),
2075  mode(FIT_MODE_COVER_POSITION) {}
2076 };
2077 
2081 struct RtcStats {
2085  unsigned int duration;
2089  unsigned int txBytes;
2093  unsigned int rxBytes;
2097  unsigned int txAudioBytes;
2101  unsigned int txVideoBytes;
2105  unsigned int rxAudioBytes;
2109  unsigned int rxVideoBytes;
2113  unsigned short txKBitRate;
2117  unsigned short rxKBitRate;
2121  unsigned short rxAudioKBitRate;
2125  unsigned short txAudioKBitRate;
2129  unsigned short rxVideoKBitRate;
2133  unsigned short txVideoKBitRate;
2137  unsigned short lastmileDelay;
2141  unsigned int userCount;
2148  double cpuAppUsage;
2238  RtcStats()
2239  : duration(0),
2240  txBytes(0),
2241  rxBytes(0),
2242  txAudioBytes(0),
2243  txVideoBytes(0),
2244  rxAudioBytes(0),
2245  rxVideoBytes(0),
2246  txKBitRate(0),
2247  rxKBitRate(0),
2248  rxAudioKBitRate(0),
2249  txAudioKBitRate(0),
2250  rxVideoKBitRate(0),
2251  txVideoKBitRate(0),
2252  lastmileDelay(0),
2253  userCount(0),
2254  cpuAppUsage(0.0),
2255  cpuTotalUsage(0.0),
2256  gatewayRtt(0),
2257  memoryAppUsageRatio(0.0),
2258  memoryTotalUsageRatio(0.0),
2260  connectTimeMs(0),
2270  txPacketLossRate(0),
2271  rxPacketLossRate(0) {}
2272 };
2273 
2277 enum CLIENT_ROLE_TYPE {
2281  CLIENT_ROLE_BROADCASTER = 1,
2285  CLIENT_ROLE_AUDIENCE = 2,
2286 };
2287 
2291 enum QUALITY_ADAPT_INDICATION {
2295  ADAPT_NONE = 0,
2299  ADAPT_UP_BANDWIDTH = 1,
2303  ADAPT_DOWN_BANDWIDTH = 2,
2304 };
2305 
2310 enum AUDIENCE_LATENCY_LEVEL_TYPE
2311 {
2315  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2319  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2320 };
2321 
2326 {
2330  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2331 
2333  : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2334 };
2335 
2339 enum EXPERIENCE_QUALITY_TYPE {
2341  EXPERIENCE_QUALITY_GOOD = 0,
2343  EXPERIENCE_QUALITY_BAD = 1,
2344 };
2345 
2349 enum EXPERIENCE_POOR_REASON {
2353  EXPERIENCE_REASON_NONE = 0,
2357  REMOTE_NETWORK_QUALITY_POOR = 1,
2361  LOCAL_NETWORK_QUALITY_POOR = 2,
2365  WIRELESS_SIGNAL_POOR = 4,
2370  WIFI_BLUETOOTH_COEXIST = 8,
2371 };
2372 
2376 enum AUDIO_AINS_MODE {
2380  AINS_MODE_BALANCED = 0,
2384  AINS_MODE_AGGRESSIVE = 1,
2388  AINS_MODE_ULTRALOWLATENCY = 2
2389 };
2390 
2394 enum AUDIO_PROFILE_TYPE {
2403  AUDIO_PROFILE_DEFAULT = 0,
2407  AUDIO_PROFILE_SPEECH_STANDARD = 1,
2411  AUDIO_PROFILE_MUSIC_STANDARD = 2,
2418  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2422  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2429  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2433  AUDIO_PROFILE_IOT = 6,
2434  AUDIO_PROFILE_NUM = 7
2435 };
2436 
2440 enum AUDIO_SCENARIO_TYPE {
2445  AUDIO_SCENARIO_DEFAULT = 0,
2451  AUDIO_SCENARIO_GAME_STREAMING = 3,
2457  AUDIO_SCENARIO_CHATROOM = 5,
2461  AUDIO_SCENARIO_CHORUS = 7,
2465  AUDIO_SCENARIO_MEETING = 8,
2469  AUDIO_SCENARIO_NUM = 9,
2470 };
2471 
2475 struct VideoFormat {
2476  OPTIONAL_ENUM_SIZE_T {
2478  kMaxWidthInPixels = 3840,
2480  kMaxHeightInPixels = 2160,
2482  kMaxFps = 60,
2483  };
2484 
2488  int width; // Number of pixels.
2492  int height; // Number of pixels.
2496  int fps;
2497  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
2498  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
2499 
2500  bool operator<(const VideoFormat& fmt) const {
2501  if (height != fmt.height) {
2502  return height < fmt.height;
2503  } else if (width != fmt.width) {
2504  return width < fmt.width;
2505  } else {
2506  return fps < fmt.fps;
2507  }
2508  }
2509  bool operator==(const VideoFormat& fmt) const {
2510  return width == fmt.width && height == fmt.height && fps == fmt.fps;
2511  }
2512  bool operator!=(const VideoFormat& fmt) const {
2513  return !operator==(fmt);
2514  }
2515 };
2516 
2520 enum VIDEO_CONTENT_HINT {
2524  CONTENT_HINT_NONE,
2531  CONTENT_HINT_MOTION,
2537  CONTENT_HINT_DETAILS
2538 };
2542 enum SCREEN_SCENARIO_TYPE {
2548  SCREEN_SCENARIO_DOCUMENT = 1,
2553  SCREEN_SCENARIO_GAMING = 2,
2558  SCREEN_SCENARIO_VIDEO = 3,
2564  SCREEN_SCENARIO_RDC = 4,
2565 };
2566 
2567 
2571 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2575  APPLICATION_SCENARIO_GENERAL = 0,
2579  APPLICATION_SCENARIO_MEETING = 1,
2580 };
2581 
2585 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2589  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2592  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2595  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2598  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2599 };
2600 
2604 enum LOCAL_AUDIO_STREAM_STATE {
2608  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2612  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2616  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2620  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2621 };
2622 
2626 enum LOCAL_AUDIO_STREAM_ERROR {
2630  LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2634  LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2638  LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2645  LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2649  LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2653  LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5,
2656  LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE = 6,
2659  LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE = 7,
2663  LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED = 8,
2666  LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID = 9,
2669  LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID = 10,
2670 };
2671 
2674 enum LOCAL_VIDEO_STREAM_STATE {
2678  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2683  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2687  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2691  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2692 };
2693 
2697 enum LOCAL_VIDEO_STREAM_ERROR {
2701  LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2705  LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2710  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2715  LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2721  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2725  LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2730  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6,
2737  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2743  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND = 8,
2748  LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED = 9,
2753  LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID = 10,
2757  LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE = 101,
2763  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2778  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
2780  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
2782  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
2784  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_FAILURE = 21,
2786  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_NO_PERMISSION = 22,
2787 };
2788 
2792 enum REMOTE_AUDIO_STATE
2793 {
2799  REMOTE_AUDIO_STATE_STOPPED = 0, // Default state, audio is started or remote user disabled/muted audio stream
2803  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
2809  REMOTE_AUDIO_STATE_DECODING = 2, // The first remote audio frame has been decoded or fronzen state ends
2814  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
2819  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
2820 };
2821 
2825 enum REMOTE_AUDIO_STATE_REASON
2826 {
2830  REMOTE_AUDIO_REASON_INTERNAL = 0,
2834  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2838  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2843  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2848  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2853  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2858  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2862  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2863 };
2864 
2868 enum REMOTE_VIDEO_STATE {
2874  REMOTE_VIDEO_STATE_STOPPED = 0,
2878  REMOTE_VIDEO_STATE_STARTING = 1,
2884  REMOTE_VIDEO_STATE_DECODING = 2,
2888  REMOTE_VIDEO_STATE_FROZEN = 3,
2892  REMOTE_VIDEO_STATE_FAILED = 4,
2893 };
2897 enum REMOTE_VIDEO_STATE_REASON {
2901  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2905  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2909  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2913  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2917  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2921  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2925  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2929  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2933  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2937  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
2940  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
2943  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
2946  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
2947 
2950  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
2951 
2952 };
2953 
2957 enum REMOTE_USER_STATE {
2961  USER_STATE_MUTE_AUDIO = (1 << 0),
2965  USER_STATE_MUTE_VIDEO = (1 << 1),
2969  USER_STATE_ENABLE_VIDEO = (1 << 4),
2973  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
2974 
2975 };
2976 
2982  VideoTrackInfo()
2983  : isLocal(false), ownerUid(0), trackId(0), channelId(OPTIONAL_NULLPTR)
2984  , streamType(VIDEO_STREAM_HIGH), codecType(VIDEO_CODEC_H264)
2985  , encodedFrameOnly(false), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY)
2986  , observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
2992  bool isLocal;
2996  uid_t ownerUid;
2997 
3001  track_id_t trackId;
3005  const char* channelId;
3009  VIDEO_STREAM_TYPE streamType;
3013  VIDEO_CODEC_TYPE codecType;
3023  VIDEO_SOURCE_TYPE sourceType;
3028 };
3029 
3033 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3037  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3041  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3045  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3049  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3053  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3054 };
3055 
3066  uid_t uid;
3072  unsigned int volume; // [0,255]
3082  unsigned int vad;
3088  double voicePitch;
3089 
3090  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3091 };
3092 
3096 struct DeviceInfo {
3097  /*
3098  * Whether the audio device supports ultra-low-latency capture and playback:
3099  * - `true`: The device supports ultra-low-latency capture and playback.
3100  * - `false`: The device does not support ultra-low-latency capture and playback.
3101  */
3102  bool isLowLatencyAudioSupported;
3103 
3104  DeviceInfo() : isLowLatencyAudioSupported(false) {}
3105 };
3106 
3111  public:
3112  virtual ~IPacketObserver() {}
3116  struct Packet {
3122  const unsigned char* buffer;
3126  unsigned int size;
3127 
3128  Packet() : buffer(NULL), size(0) {}
3129  };
3137  virtual bool onSendAudioPacket(Packet& packet) = 0;
3145  virtual bool onSendVideoPacket(Packet& packet) = 0;
3153  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3161  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3162 };
3163 
3167 enum AUDIO_SAMPLE_RATE_TYPE {
3171  AUDIO_SAMPLE_RATE_32000 = 32000,
3175  AUDIO_SAMPLE_RATE_44100 = 44100,
3179  AUDIO_SAMPLE_RATE_48000 = 48000,
3180 };
3184 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3188  VIDEO_CODEC_H264_FOR_STREAM = 1,
3192  VIDEO_CODEC_H265_FOR_STREAM = 2,
3193 };
3194 
3198 enum VIDEO_CODEC_PROFILE_TYPE {
3202  VIDEO_CODEC_PROFILE_BASELINE = 66,
3206  VIDEO_CODEC_PROFILE_MAIN = 77,
3210  VIDEO_CODEC_PROFILE_HIGH = 100,
3211 };
3212 
3213 
3217 enum AUDIO_CODEC_PROFILE_TYPE {
3221  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3225  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3229  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3230 };
3231 
3236 {
3256  unsigned short txPacketLossRate;
3261 };
3262 
3263 
3267 enum RTMP_STREAM_PUBLISH_STATE {
3271  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3275  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3279  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3285  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3289  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3293  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3294 };
3295 
3299 enum RTMP_STREAM_PUBLISH_ERROR_TYPE {
3303  RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3308  RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3312  RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3316  RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3320  RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3324  RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3328  RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3332  RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3336  RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3340  RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3344  RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3348  RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER = 11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
3352  RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM = 13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
3356  RTMP_STREAM_PUBLISH_ERROR_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
3360  RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID = 15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
3362  RTMP_STREAM_PUBLISH_ERROR_INVALID_PRIVILEGE = 16,
3366  RTMP_STREAM_UNPUBLISH_ERROR_OK = 100,
3367 };
3368 
3370 enum RTMP_STREAMING_EVENT {
3374  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3378  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3382  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3386  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3387 };
3388 
3392 typedef struct RtcImage {
3396  const char* url;
3400  int x;
3404  int y;
3408  int width;
3412  int height;
3420  int zOrder;
3426  double alpha;
3427 
3428  RtcImage() : url(NULL), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
3429 } RtcImage;
3436  LiveStreamAdvancedFeature() : featureName(NULL), opened(false) {}
3437  LiveStreamAdvancedFeature(const char* feat_name, bool open) : featureName(feat_name), opened(open) {}
3439  // static const char* LBHQ = "lbhq";
3441  // static const char* VEO = "veo";
3442 
3446  const char* featureName;
3447 
3453  bool opened;
3454 } ;
3455 
3459 enum CONNECTION_STATE_TYPE
3460 {
3466  CONNECTION_STATE_DISCONNECTED = 1,
3475  CONNECTION_STATE_CONNECTING = 2,
3483  CONNECTION_STATE_CONNECTED = 3,
3493  CONNECTION_STATE_RECONNECTING = 4,
3502  CONNECTION_STATE_FAILED = 5,
3503 };
3504 
3512  uid_t uid;
3516  int x;
3520  int y;
3524  int width;
3528  int height;
3536  int zOrder;
3542  double alpha;
3556  TranscodingUser()
3557  : uid(0),
3558  x(0),
3559  y(0),
3560  width(0),
3561  height(0),
3562  zOrder(0),
3563  alpha(1.0),
3564  audioChannel(0) {}
3565 };
3566 
3577  int width;
3584  int height;
3595 
3602 
3610  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
3613  unsigned int backgroundColor;
3615  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
3619  unsigned int userCount;
3628 
3631  const char* metadata;
3640  unsigned int watermarkCount;
3641 
3650  unsigned int backgroundImageCount;
3651 
3654  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
3668  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
3672 
3674  unsigned int advancedFeatureCount;
3675  LiveTranscoding() : width(360), height(640), videoBitrate(400), videoFramerate(15), lowLatency(false), videoGop(30), videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH), backgroundColor(0x000000), videoCodecType(VIDEO_CODEC_H264_FOR_STREAM), userCount(0), transcodingUsers(NULL), transcodingExtraInfo(NULL), metadata(NULL), watermark(NULL), watermarkCount(0), backgroundImage(NULL), backgroundImageCount(0), audioSampleRate(AUDIO_SAMPLE_RATE_48000), audioBitrate(48), audioChannels(1), audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC), advancedFeatures(NULL), advancedFeatureCount(0) {}
3676 };
3677 
3685  VIDEO_SOURCE_TYPE sourceType;
3695  const char* imageUrl;
3703  int x;
3707  int y;
3711  int width;
3715  int height;
3721  int zOrder;
3725  double alpha;
3732  bool mirror;
3733 
3735  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
3736  remoteUserUid(0),
3737  imageUrl(NULL),
3738  x(0),
3739  y(0),
3740  width(0),
3741  height(0),
3742  zOrder(0),
3743  alpha(1.0),
3744  mirror(false) {}
3745 };
3746 
3747 
3755  unsigned int streamCount;
3770 
3772  : streamCount(0),
3773  videoInputStreams(NULL),
3775  syncWithPrimaryCamera(true) {}
3776 };
3777 
3778 enum VIDEO_TRANSCODER_ERROR {
3782  VT_ERR_OK = 0,
3786  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
3790  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
3794  VT_ERR_INVALID_IMAGE_PATH = 3,
3798  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
3802  VT_ERR_INVALID_LAYOUT = 5,
3806  VT_ERR_INTERNAL = 20
3807 };
3808 
3835 };
3836 
3840 enum LASTMILE_PROBE_RESULT_STATE {
3844  LASTMILE_PROBE_RESULT_COMPLETE = 1,
3848  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3852  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3853 };
3854 
3862  unsigned int packetLossRate;
3866  unsigned int jitter;
3870  unsigned int availableBandwidth;
3871 
3873  jitter(0),
3874  availableBandwidth(0) {}
3875 };
3876 
3884  LASTMILE_PROBE_RESULT_STATE state;
3896  unsigned int rtt;
3897 
3899  : state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
3900  rtt(0) {}
3901 };
3902 
3906 enum CONNECTION_CHANGED_REASON_TYPE
3907 {
3911  CONNECTION_CHANGED_CONNECTING = 0,
3915  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3919  CONNECTION_CHANGED_INTERRUPTED = 2,
3923  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3927  CONNECTION_CHANGED_JOIN_FAILED = 4,
3931  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3935  CONNECTION_CHANGED_INVALID_APP_ID = 6,
3939  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3945  CONNECTION_CHANGED_INVALID_TOKEN = 8,
3949  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3955  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3959  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3963  CONNECTION_CHANGED_RENEW_TOKEN = 12,
3967  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3971  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3975  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3979  CONNECTION_CHANGED_LOST = 16,
3983  CONNECTION_CHANGED_ECHO_TEST = 17,
3987  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
3991  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
3995  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
3996 
4000  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4001 };
4002 
4006 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4010  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4014  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4018  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3,
4022  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4,
4023 };
4024 
4028 enum WLACC_MESSAGE_REASON {
4032  WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4036  WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4037 };
4038 
4042 enum WLACC_SUGGEST_ACTION {
4046  WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4050  WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4054  WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4058  WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4059 };
4060 
4064 struct WlAccStats {
4068  unsigned short e2eDelayPercent;
4072  unsigned short frozenRatioPercent;
4076  unsigned short lossRatePercent;
4077 };
4078 
4082 enum NETWORK_TYPE {
4086  NETWORK_TYPE_UNKNOWN = -1,
4090  NETWORK_TYPE_DISCONNECTED = 0,
4094  NETWORK_TYPE_LAN = 1,
4098  NETWORK_TYPE_WIFI = 2,
4102  NETWORK_TYPE_MOBILE_2G = 3,
4106  NETWORK_TYPE_MOBILE_3G = 4,
4110  NETWORK_TYPE_MOBILE_4G = 5,
4111 };
4112 
4116 enum VIDEO_VIEW_SETUP_MODE {
4120  VIDEO_VIEW_SETUP_REPLACE = 0,
4124  VIDEO_VIEW_SETUP_ADD = 1,
4128  VIDEO_VIEW_SETUP_REMOVE = 2,
4129 };
4130 
4134 struct VideoCanvas {
4138  view_t view;
4142  uid_t uid;
4151  media::base::RENDER_MODE_TYPE renderMode;
4161  VIDEO_MIRROR_MODE_TYPE mirrorMode;
4166  VIDEO_VIEW_SETUP_MODE setupMode;
4171  VIDEO_SOURCE_TYPE sourceType;
4184 
4191 
4192  VideoCanvas()
4193  : view(NULL), uid(0), backgroundColor(0x00000000), renderMode(media::base::RENDER_MODE_HIDDEN), mirrorMode(VIDEO_MIRROR_MODE_AUTO),
4194  setupMode(VIDEO_VIEW_SETUP_REPLACE), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4195  cropArea(0, 0, 0, 0), enableAlphaMask(false) {}
4196 
4197  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4198  : view(v), uid(u), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4199  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4200  cropArea(0, 0, 0, 0), enableAlphaMask(false) {}
4201 
4202  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
4203  : view(v), uid(0), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4204  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4205  cropArea(0, 0, 0, 0), enableAlphaMask(false) {}
4206 };
4207 
4220  };
4221 
4225 
4228 
4232 
4236 
4240 
4241  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness, float sharpness) : lighteningContrastLevel(contrastLevel), lighteningLevel(lightening), smoothnessLevel(smoothness), rednessLevel(redness), sharpnessLevel(sharpness) {}
4242 
4244 };
4245 
4255  };
4268  };
4269 
4273 
4277 
4278  LowlightEnhanceOptions(LOW_LIGHT_ENHANCE_MODE lowlightMode, LOW_LIGHT_ENHANCE_LEVEL lowlightLevel) : mode(lowlightMode), level(lowlightLevel) {}
4279 
4281 };
4295  };
4316  };
4320 
4324 
4325  VideoDenoiserOptions(VIDEO_DENOISER_MODE denoiserMode, VIDEO_DENOISER_LEVEL denoiserLevel) : mode(denoiserMode), level(denoiserLevel) {}
4326 
4328 };
4329 
4338 
4344 
4345  ColorEnhanceOptions(float stength, float skinProtect) : strengthLevel(stength), skinProtectLevel(skinProtect) {}
4346 
4348 };
4349 
4377  };
4378 
4388  };
4389 
4393 
4402  unsigned int color;
4403 
4410  const char* source;
4411 
4416 
4418 };
4419 
4421 
4422  enum SEG_MODEL_TYPE {
4423 
4424  SEG_MODEL_AI = 1,
4425  SEG_MODEL_GREEN = 2
4426  };
4427 
4428  SEG_MODEL_TYPE modelType;
4429 
4430  float greenCapacity;
4431 
4432 
4433  SegmentationProperty() : modelType(SEG_MODEL_AI), greenCapacity(0.5){}
4434 };
4435 
4438 enum AUDIO_TRACK_TYPE {
4442  AUDIO_TRACK_INVALID = -1,
4449  AUDIO_TRACK_MIXABLE = 0,
4455  AUDIO_TRACK_DIRECT = 1,
4456 };
4457 
4467 
4469  : enableLocalPlayback(true) {}
4470 };
4471 
4492 enum VOICE_BEAUTIFIER_PRESET {
4495  VOICE_BEAUTIFIER_OFF = 0x00000000,
4501  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4507  CHAT_BEAUTIFIER_FRESH = 0x01010200,
4513  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4522  SINGING_BEAUTIFIER = 0x01020100,
4525  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4528  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4531  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4534  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4537  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4540  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4543  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4546  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4556  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4557 };
4558 
4578 enum AUDIO_EFFECT_PRESET {
4581  AUDIO_EFFECT_OFF = 0x00000000,
4584  ROOM_ACOUSTICS_KTV = 0x02010100,
4587  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4590  ROOM_ACOUSTICS_STUDIO = 0x02010300,
4593  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
4600  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
4603  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
4606  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
4618  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
4629  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
4636  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
4642  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
4648  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
4655  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
4661  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
4665  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
4668  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
4675  STYLE_TRANSFORMATION_RNB = 0x02030100,
4682  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
4687  PITCH_CORRECTION = 0x02040100,
4688 
4692 };
4693 
4696 enum VOICE_CONVERSION_PRESET {
4699  VOICE_CONVERSION_OFF = 0x00000000,
4702  VOICE_CHANGER_NEUTRAL = 0x03010100,
4705  VOICE_CHANGER_SWEET = 0x03010200,
4708  VOICE_CHANGER_SOLID = 0x03010300,
4711  VOICE_CHANGER_BASS = 0x03010400,
4714  VOICE_CHANGER_CARTOON = 0x03010500,
4717  VOICE_CHANGER_CHILDLIKE = 0x03010600,
4720  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
4723  VOICE_CHANGER_MONSTER = 0x03010800,
4726  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
4729  VOICE_CHANGER_GROOT = 0x03010A00,
4732  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
4735  VOICE_CHANGER_IRON_LADY = 0x03010C00,
4738  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
4741  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
4744  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
4745 
4746 };
4747 
4750 enum HEADPHONE_EQUALIZER_PRESET {
4753  HEADPHONE_EQUALIZER_OFF = 0x00000000,
4756  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
4759  HEADPHONE_EQUALIZER_INEAR = 0x04000002
4760 };
4761 
4791  int bitrate;
4814 
4822  unsigned int highLightColor;
4831 
4833  : dimensions(1920, 1080), frameRate(5), bitrate(STANDARD_BITRATE), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
4834  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
4836  ScreenCaptureParameters(int width, int height, int f, int b)
4837  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false){}
4838  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
4839  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
4840  ScreenCaptureParameters(int width, int height, int f, int b, view_t *ex, int cnt)
4842  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t *ex, int cnt)
4844 };
4845 
4849 enum AUDIO_RECORDING_QUALITY_TYPE {
4853  AUDIO_RECORDING_QUALITY_LOW = 0,
4857  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4861  AUDIO_RECORDING_QUALITY_HIGH = 2,
4865  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
4866 };
4867 
4871 enum AUDIO_FILE_RECORDING_TYPE {
4875  AUDIO_FILE_RECORDING_MIC = 1,
4879  AUDIO_FILE_RECORDING_PLAYBACK = 2,
4883  AUDIO_FILE_RECORDING_MIXED = 3,
4884 };
4885 
4889 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4893  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4897  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4901  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4902 };
4903 
4912  const char* filePath;
4918  bool encode;
4932  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
4937  AUDIO_RECORDING_QUALITY_TYPE quality;
4938 
4945 
4947  : filePath(NULL),
4948  encode(false),
4949  sampleRate(32000),
4950  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4951  quality(AUDIO_RECORDING_QUALITY_LOW),
4952  recordingChannel(1) {}
4953 
4954  AudioRecordingConfiguration(const char* file_path, int sample_rate, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
4955  : filePath(file_path),
4956  encode(false),
4957  sampleRate(sample_rate),
4958  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4959  quality(quality_type),
4960  recordingChannel(channel) {}
4961 
4962  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
4963  : filePath(file_path),
4964  encode(enc),
4965  sampleRate(sample_rate),
4966  fileRecordingType(type),
4967  quality(quality_type),
4968  recordingChannel(channel) {}
4969 
4970  AudioRecordingConfiguration(const AudioRecordingConfiguration &rhs)
4971  : filePath(rhs.filePath),
4972  encode(rhs.encode),
4973  sampleRate(rhs.sampleRate),
4975  quality(rhs.quality),
4977 };
4978 
4986  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
4990  AUDIO_ENCODING_TYPE encodingType;
4991 
4993  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4994  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM){}
4995 
4996 };
5001 public:
5012 virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5013 
5024 virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5025 
5036 virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5037 
5038 virtual ~IAudioEncodedFrameObserver () {}
5039 };
5040 
5043 enum AREA_CODE {
5047  AREA_CODE_CN = 0x00000001,
5051  AREA_CODE_NA = 0x00000002,
5055  AREA_CODE_EU = 0x00000004,
5059  AREA_CODE_AS = 0x00000008,
5063  AREA_CODE_JP = 0x00000010,
5067  AREA_CODE_IN = 0x00000020,
5071  AREA_CODE_GLOB = (0xFFFFFFFF)
5072 };
5073 
5074 enum AREA_CODE_EX {
5078  AREA_CODE_OC = 0x00000040,
5082  AREA_CODE_SA = 0x00000080,
5086  AREA_CODE_AF = 0x00000100,
5090  AREA_CODE_KR = 0x00000200,
5094  AREA_CODE_HKMC = 0x00000400,
5098  AREA_CODE_US = 0x00000800,
5102  AREA_CODE_OVS = 0xFFFFFFFE
5103 };
5104 
5108 enum CHANNEL_MEDIA_RELAY_ERROR {
5111  RELAY_OK = 0,
5114  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5120  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
5123  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
5126  RELAY_ERROR_FAILED_JOIN_SRC = 4,
5129  RELAY_ERROR_FAILED_JOIN_DEST = 5,
5132  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
5135  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
5139  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
5142  RELAY_ERROR_INTERNAL_ERROR = 9,
5145  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
5148  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
5149 };
5150 
5154 enum CHANNEL_MEDIA_RELAY_EVENT {
5157  RELAY_EVENT_NETWORK_DISCONNECTED = 0,
5160  RELAY_EVENT_NETWORK_CONNECTED = 1,
5163  RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
5166  RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
5169  RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
5172  RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
5175  RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
5178  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
5181  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
5184  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
5187  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
5190  RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
5193  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12,
5196  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13,
5199  RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14,
5202  RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15,
5203 };
5207 enum CHANNEL_MEDIA_RELAY_STATE {
5211  RELAY_STATE_IDLE = 0,
5214  RELAY_STATE_CONNECTING = 1,
5217  RELAY_STATE_RUNNING = 2,
5220  RELAY_STATE_FAILURE = 3,
5221 };
5222 
5229  const char* channelName;
5233  const char* token;
5236  uid_t uid;
5237 };
5238 
5275 
5277  : srcInfo(NULL),
5278  destInfos(NULL),
5279  destCount(0)
5280  {}
5281 };
5282 
5291 
5293 
5294  bool operator==(const UplinkNetworkInfo& rhs) const {
5296  }
5297 };
5298 
5307  const char* uid;
5311  VIDEO_STREAM_TYPE stream_type;
5315  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
5320 
5322  : uid(OPTIONAL_NULLPTR),
5323  stream_type(VIDEO_STREAM_HIGH),
5324  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
5325  expected_bitrate_bps(-1) {}
5326 
5327  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
5328  if (this == &rhs) return *this;
5329  uid = OPTIONAL_NULLPTR;
5330  stream_type = rhs.stream_type;
5333  if (rhs.uid != OPTIONAL_NULLPTR) {
5334  char* temp = new char[strlen(rhs.uid) + 1];
5335  strcpy(temp, rhs.uid);
5336  uid = temp;
5337  }
5338  return *this;
5339  }
5340 
5341  ~PeerDownlinkInfo() {
5342  if (uid) { delete [] uid; }
5343  }
5344  };
5345 
5366 
5371  peer_downlink_info(OPTIONAL_NULLPTR),
5373 
5378  peer_downlink_info(OPTIONAL_NULLPTR),
5380  if (total_received_video_count <= 0) return;
5381  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5382  for (int i = 0; i < total_received_video_count; ++i)
5384  }
5385 
5386  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
5387  if (this == &rhs) return *this;
5388  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
5389  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
5390  total_downscale_level_count = rhs.total_downscale_level_count;
5391  peer_downlink_info = OPTIONAL_NULLPTR;
5392  total_received_video_count = rhs.total_received_video_count;
5393  if (total_received_video_count > 0) {
5394  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5395  for (int i = 0; i < total_received_video_count; ++i)
5396  peer_downlink_info[i] = rhs.peer_downlink_info[i];
5397  }
5398  return *this;
5399  }
5400 
5401  ~DownlinkNetworkInfo() {
5402  if (peer_downlink_info) delete [] peer_downlink_info;
5403  }
5404 };
5405 
5412 enum ENCRYPTION_MODE {
5415  AES_128_XTS = 1,
5418  AES_128_ECB = 2,
5421  AES_256_XTS = 3,
5424  SM4_128_ECB = 4,
5427  AES_128_GCM = 5,
5430  AES_256_GCM = 6,
5434  AES_128_GCM2 = 7,
5437  AES_256_GCM2 = 8,
5440  MODE_END,
5441 };
5442 
5449  ENCRYPTION_MODE encryptionMode;
5455  const char* encryptionKey;
5462  uint8_t encryptionKdfSalt[32];
5463 
5465  : encryptionMode(AES_128_GCM2),
5466  encryptionKey(NULL)
5467  {
5468  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
5469  }
5470 
5472  const char* getEncryptionString() const {
5473  switch(encryptionMode) {
5474  case AES_128_XTS:
5475  return "aes-128-xts";
5476  case AES_128_ECB:
5477  return "aes-128-ecb";
5478  case AES_256_XTS:
5479  return "aes-256-xts";
5480  case SM4_128_ECB:
5481  return "sm4-128-ecb";
5482  case AES_128_GCM:
5483  return "aes-128-gcm";
5484  case AES_256_GCM:
5485  return "aes-256-gcm";
5486  case AES_128_GCM2:
5487  return "aes-128-gcm-2";
5488  case AES_256_GCM2:
5489  return "aes-256-gcm-2";
5490  default:
5491  return "aes-128-gcm-2";
5492  }
5493  return "aes-128-gcm-2";
5494  }
5496 };
5497 
5500 enum ENCRYPTION_ERROR_TYPE {
5504  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5508  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5512  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5513 };
5514 
5515 enum UPLOAD_ERROR_REASON
5516 {
5517  UPLOAD_SUCCESS = 0,
5518  UPLOAD_NET_ERROR = 1,
5519  UPLOAD_SERVER_ERROR = 2,
5520 };
5521 
5524 enum PERMISSION_TYPE {
5528  RECORD_AUDIO = 0,
5532  CAMERA = 1,
5533 
5534  SCREEN_CAPTURE = 2,
5535 };
5536 
5539 enum MAX_USER_ACCOUNT_LENGTH_TYPE
5540 {
5543  MAX_USER_ACCOUNT_LENGTH = 256
5544 };
5545 
5549 enum STREAM_SUBSCRIBE_STATE {
5553  SUB_STATE_IDLE = 0,
5566  SUB_STATE_NO_SUBSCRIBED = 1,
5570  SUB_STATE_SUBSCRIBING = 2,
5574  SUB_STATE_SUBSCRIBED = 3
5575 };
5576 
5580 enum STREAM_PUBLISH_STATE {
5584  PUB_STATE_IDLE = 0,
5592  PUB_STATE_NO_PUBLISHED = 1,
5596  PUB_STATE_PUBLISHING = 2,
5600  PUB_STATE_PUBLISHED = 3
5601 };
5602 
5607  view_t view;
5608  bool enableAudio;
5609  bool enableVideo;
5610  const char* token;
5611  const char* channelId;
5612  int intervalInSeconds;
5613 
5614  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
5615  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
5616 
5618  : view(OPTIONAL_NULLPTR), enableAudio(true), enableVideo(true), token(OPTIONAL_NULLPTR), channelId(OPTIONAL_NULLPTR), intervalInSeconds(2) {}
5619 };
5620 
5624 struct UserInfo {
5628  uid_t uid;
5632  char userAccount[MAX_USER_ACCOUNT_LENGTH];
5633  UserInfo()
5634  : uid(0) {
5635  userAccount[0] = '\0';
5636  }
5637 };
5638 
5642 enum EAR_MONITORING_FILTER_TYPE {
5646  EAR_MONITORING_FILTER_NONE = (1<<0),
5651  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
5655  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
5656 };
5657 
5661 enum THREAD_PRIORITY_TYPE {
5665  LOWEST = 0,
5669  LOW = 1,
5673  NORMAL = 2,
5677  HIGH = 3,
5681  HIGHEST = 4,
5685  CRITICAL = 5,
5686 };
5687 
5688 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
5689 
5693 struct ScreenVideoParameters {
5720  VideoDimensions dimensions;
5726  int frameRate = 15;
5731  int bitrate;
5732  /*
5733  * The content hint of the screen sharing:
5734  */
5735  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
5736 
5737  ScreenVideoParameters() : dimensions(1280, 720) {}
5738 };
5739 
5743 struct ScreenAudioParameters {
5747  int sampleRate = 16000;
5751  int channels = 2;
5756  int captureSignalVolume = 100;
5757 };
5758 
5762 struct ScreenCaptureParameters2 {
5772  bool captureAudio = false;
5776  ScreenAudioParameters audioParams;
5786  bool captureVideo = true;
5790  ScreenVideoParameters videoParams;
5791 };
5792 #endif
5793 
5797 enum MEDIA_TRACE_EVENT {
5801  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
5805  MEDIA_TRACE_EVENT_VIDEO_DECODED,
5806 };
5807 
5861 };
5862 
5863 enum CONFIG_FETCH_TYPE {
5867  CONFIG_FETCH_TYPE_INITIALIZE = 1,
5871  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
5872 };
5873 
5874 
5882  const char* channelId;
5886  uid_t uid;
5887  RecorderStreamInfo() : channelId(NULL), uid(0) {}
5888 };
5889 
5890 
5892 enum LOCAL_PROXY_MODE {
5895  ConnectivityFirst = 0,
5898  LocalOnly = 1,
5899 };
5900 
5904  const char* serverDomain;
5907  const char* serverPath;
5916 
5917  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
5918 
5919  LogUploadServerInfo(const char* domain, const char* path, int port, bool https) : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
5920 };
5921 
5926 };
5927 
5931  const char** ipList;
5937  const char** domainList;
5944  const char* verifyDomainName;
5947  LOCAL_PROXY_MODE mode;
5951  LocalAccessPointConfiguration() : ipList(NULL), ipListSize(0), domainList(NULL), domainListSize(0), verifyDomainName(NULL), mode(ConnectivityFirst) {}
5952 };
5953 
5954 
5955 } // namespace rtc
5956 
5957 namespace base {
5958 
5960  public:
5961  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
5962  virtual ~IEngineBase() {}
5963 };
5964 
5965 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
5966  public:
5967  AParameter(IEngineBase& engine) { initialize(&engine); }
5968  AParameter(IEngineBase* engine) { initialize(engine); }
5970 
5971  private:
5972  bool initialize(IEngineBase* engine) {
5973  IAgoraParameter* p = NULL;
5974  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
5975  return p != NULL;
5976  }
5977 };
5978 
5980  public:
5981  virtual ~LicenseCallback() {}
5982  virtual void onCertificateRequired() = 0;
5983  virtual void onLicenseRequest() = 0;
5984  virtual void onLicenseValidated() = 0;
5985  virtual void onLicenseError(int result) = 0;
5986 };
5987 
5988 } // namespace base
5989 
6026 };
6027 
6028 } // namespace agora
6029 
6035 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
6036 
6042 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
6043 
6044 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
6045 
6053 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString &credential);
6054 
6068 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char *credential_buf, int credential_len,
6069  const char *certificate_buf, int certificate_len);
6070 
6078 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback *callback);
6079 
6087 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
6088 
6089 /*
6090  * Get monotonic time in ms which can be used by capture time,
6091  * typical scenario is as follows:
6092  *
6093  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6094  * | // custom audio/video base capture time, e.g. the first audio/video capture time. |
6095  * | int64_t custom_capture_time_base; |
6096  * | |
6097  * | int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
6098  * | |
6099  * | // offset is fixed once calculated in the begining. |
6100  * | const int64_t offset = agora_monotonic_time - custom_capture_time_base; |
6101  * | |
6102  * | // realtime_custom_audio/video_capture_time is the origin capture time that customer provided.|
6103  * | // actual_audio/video_capture_time is the actual capture time transfered to sdk. |
6104  * | int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
6105  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
6106  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6107  *
6108  * @return
6109  * - >= 0: Success.
6110  * - < 0: Failure.
6111  */
6112 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:3622
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:5904
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::VideoCanvas::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4177
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:3408
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:3721
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2189
agora::rtc::UserInfo
Definition: AgoraBase.h:5624
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:3725
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1459
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:1848
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:3880
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:4982
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:4765
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:2017
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:3059
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:4381
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:3888
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1611
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:5925
agora::rtc::BeautyOptions
Definition: AgoraBase.h:4210
agora::rtc::SenderOptions
Definition: AgoraBase.h:1196
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:4791
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:4227
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2101
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:4372
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:3613
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:147
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:3088
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:3812
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:3520
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:4818
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2117
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2174
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3256
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:2496
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:6001
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:1840
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:4830
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:4292
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:4166
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4263
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:3555
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2209
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:2488
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:4802
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:4990
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1204
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1436
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:3605
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:5274
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:3260
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:3866
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:4231
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:4323
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:4161
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2085
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:1976
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1080
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:5947
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:3819
agora::rtc::RecorderStreamInfo::channelId
const char * channelId
Definition: AgoraBase.h:5882
agora::rtc::LocalAccessPointConfiguration
Definition: AgoraBase.h:5928
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:3615
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Definition: AgoraBase.h:4290
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:3570
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2089
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:2492
agora::rtc::Rectangle
Definition: AgoraBase.h:1987
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:5931
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:4142
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2194
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:4912
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1544
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:4337
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:6005
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:4360
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:4235
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2109
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:3690
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1762
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1628
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1418
agora::util::AutoPtr
Definition: AgoraBase.h:89
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:3862
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:807
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:4813
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:3116
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:4466
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:3668
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:5886
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1754
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:1999
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:1823
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:5851
agora::util::AList
Definition: AgoraBase.h:222
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2224
agora::rtc::VideoSubscriptionOptions
Definition: AgoraBase.h:1523
agora::rtc::TranscodingUser
Definition: AgoraBase.h:3508
agora::rtc::EchoTestConfiguration
Definition: AgoraBase.h:5606
agora::rtc::RtcImage
Definition: AgoraBase.h:3392
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:3516
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:5233
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:5860
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:4918
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:4224
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2029
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:6013
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:1964
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:3657
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:5269
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:3400
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:4392
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3685
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:3769
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:3420
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2330
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3072
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:3512
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:4190
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:5815
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:3446
agora::rtc::AdvancedConfigInfo
Definition: AgoraBase.h:5922
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:1995
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3248
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:3396
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:3122
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1624
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2229
agora::rtc::ColorEnhanceOptions
Definition: AgoraBase.h:4334
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:4928
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:801
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2060
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:5950
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:3892
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:3640
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:1991
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:3759
agora::util::IString
Definition: AgoraBase.h:161
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:5944
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:6017
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
Definition: AgoraBase.h:4259
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1454
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:3751
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:4213
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2023
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3244
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1530
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:3834
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2158
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:3126
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:3671
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:3650
agora::rtc::IPacketObserver
Definition: AgoraBase.h:3110
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:3646
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2148
agora::rtc::VideoFormat
Definition: AgoraBase.h:2475
agora::rtc::AdvanceOptions
Definition: AgoraBase.h:1670
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:3542
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2065
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:1920
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1680
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2097
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2184
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:3884
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:1859
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:5229
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:3584
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1406
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1589
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2133
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2105
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1412
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:6025
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2125
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3066
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:4215
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:3589
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3001
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3019
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:3524
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:4822
agora::base::AParameter
Definition: AgoraBase.h:5965
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:4239
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:5449
agora::util::AOutputIterator
Definition: AgoraBase.h:191
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2055
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:5000
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1593
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:2996
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:5826
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:3870
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1620
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1603
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:3627
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3013
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:3631
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:3654
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:5241
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:4415
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:5628
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:1940
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:3435
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:4402
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:3858
agora::rtc::VideoDenoiserOptions
Definition: AgoraBase.h:4287
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2035
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4304
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:4183
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1485
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1766
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2003
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1489
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2069
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1440
agora::UserInfo
Definition: AgoraBase.h:797
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2233
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:4353
agora::rtc::WlAccStats::frozenRatioPercent
unsigned short frozenRatioPercent
Definition: AgoraBase.h:4072
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:4276
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:4138
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:3695
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:4986
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:5462
agora::rtc::WlAccStats::lossRatePercent
unsigned short lossRatePercent
Definition: AgoraBase.h:4076
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:4368
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:3636
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:3082
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:5225
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:813
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:4254
agora::rtc::WlAccStats
Definition: AgoraBase.h:4064
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:4151
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:6009
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3023
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2113
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1450
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1632
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:6021
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3027
agora::rtc::LogUploadServerInfo
Definition: AgoraBase.h:5901
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Definition: AgoraBase.h:4299
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4171
agora::rtc::CodecCapInfo
Definition: AgoraBase.h:1742
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:4785
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:4944
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2219
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:3665
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:3412
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1968
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1607
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:3825
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2141
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:3755
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:4219
agora::base::LicenseCallback
Definition: AgoraBase.h:5979
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:5444
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:3610
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:4356
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:5822
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:4146
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:4779
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1076
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:3703
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:3601
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:3681
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:4410
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:5907
agora::rtc::RtcStats
Definition: AgoraBase.h:2081
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1536
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:4376
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2050
agora::rtc::LowlightEnhanceOptions
Definition: AgoraBase.h:4246
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:3536
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:3577
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1464
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2093
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2129
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:4319
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2121
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3240
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:5842
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:2044
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:1854
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3236
agora::rtc::RecorderStreamInfo
Definition: AgoraBase.h:5878
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:5910
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:4796
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:3404
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1396
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2169
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2164
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:3830
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:2992
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:1675
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3005
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:4267
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2199
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:1748
agora::rtc::VideoTrackInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:3009
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:3674
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:1746
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:4907
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:5997
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
Definition: AgoraBase.h:4250
agora::util::IContainer
Definition: AgoraBase.h:182
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:4387
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1072
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:4383
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:5834
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:3715
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:1932
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:4272
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:3619
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:145
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1744
agora::rtc::AudioTrackConfig
Definition: AgoraBase.h:4460
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:5934
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:3711
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:3732
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:1972
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:3426
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:3699
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:5455
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1615
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:4385
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:4809
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:5937
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1477
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:2981
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:3763
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1200
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:4364
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1493
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:4252
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2214
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:3594
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2237
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2137
agora::rtc::CodecCapLevels
Definition: AgoraBase.h:1734
agora::SpatialAudioParams
Definition: AgoraBase.h:5993
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:4343
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:4309
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1758
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:3896
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:3707
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2204
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:4217
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:5254
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:1844
agora::rtc::WlAccStats::e2eDelayPercent
unsigned short e2eDelayPercent
Definition: AgoraBase.h:4068
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_STRENGTH
@ VIDEO_DENOISER_LEVEL_STRENGTH
Definition: AgoraBase.h:4315
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:3453
agora::rtc::DeviceInfo
Definition: AgoraBase.h:3096
agora::base::IEngineBase
Definition: AgoraBase.h:5959
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1262
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:4937
agora::util::IIterator
Definition: AgoraBase.h:173
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:5632
agora::rtc::VideoRenderingTracingInfo
Definition: AgoraBase.h:5811
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:5915
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:4294
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1446
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1597
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2179
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:5940
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2326
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:3528
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:4134
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3252
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:4932
agora::rtc::SegmentationProperty
Definition: AgoraBase.h:4420
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:5236