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,
737  ERR_ADM_APPLICATION_LOOPBACK = 2007,
738 };
739 
740 enum LICENSE_ERROR_TYPE {
744  LICENSE_ERR_INVALID = 1,
748  LICENSE_ERR_EXPIRE = 2,
752  LICENSE_ERR_MINUTES_EXCEED = 3,
756  LICENSE_ERR_LIMITED_PERIOD = 4,
760  LICENSE_ERR_DIFF_DEVICES = 5,
764  LICENSE_ERR_INTERNAL = 99,
765 };
766 
770 enum AUDIO_SESSION_OPERATION_RESTRICTION {
774  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
778  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
782  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
787  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
792  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
793 };
794 
795 typedef const char* user_id_t;
796 typedef void* view_t;
797 
801 struct UserInfo {
811  bool hasAudio;
817  bool hasVideo;
818 
819  UserInfo() : hasAudio(false), hasVideo(false) {}
820 };
821 
822 typedef util::AList<UserInfo> UserList;
823 
824 // Shared between Agora Service and Rtc Engine
825 namespace rtc {
826 
830 enum USER_OFFLINE_REASON_TYPE {
834  USER_OFFLINE_QUIT = 0,
840  USER_OFFLINE_DROPPED = 1,
844  USER_OFFLINE_BECOME_AUDIENCE = 2,
845 };
846 
847 enum INTERFACE_ID_TYPE {
848  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
849  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
850  AGORA_IID_PARAMETER_ENGINE = 3,
851  AGORA_IID_MEDIA_ENGINE = 4,
852  AGORA_IID_AUDIO_ENGINE = 5,
853  AGORA_IID_VIDEO_ENGINE = 6,
854  AGORA_IID_RTC_CONNECTION = 7,
855  AGORA_IID_SIGNALING_ENGINE = 8,
856  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
857  AGORA_IID_CLOUD_SPATIAL_AUDIO = 10,
858  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
859  AGORA_IID_STATE_SYNC = 13,
860  AGORA_IID_METACHAT_SERVICE = 14,
861  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
862  AGORA_IID_H265_TRANSCODER = 16,
863 };
864 
868 enum QUALITY_TYPE {
873  QUALITY_UNKNOWN __deprecated = 0,
877  QUALITY_EXCELLENT = 1,
882  QUALITY_GOOD = 2,
886  QUALITY_POOR = 3,
890  QUALITY_BAD = 4,
894  QUALITY_VBAD = 5,
898  QUALITY_DOWN = 6,
902  QUALITY_UNSUPPORTED = 7,
906  QUALITY_DETECTING = 8,
907 };
908 
912 enum FIT_MODE_TYPE {
917  MODE_COVER = 1,
918 
924  MODE_CONTAIN = 2,
925 };
926 
930 enum VIDEO_ORIENTATION {
934  VIDEO_ORIENTATION_0 = 0,
938  VIDEO_ORIENTATION_90 = 90,
942  VIDEO_ORIENTATION_180 = 180,
946  VIDEO_ORIENTATION_270 = 270
947 };
948 
952 enum FRAME_RATE {
956  FRAME_RATE_FPS_1 = 1,
960  FRAME_RATE_FPS_7 = 7,
964  FRAME_RATE_FPS_10 = 10,
968  FRAME_RATE_FPS_15 = 15,
972  FRAME_RATE_FPS_24 = 24,
976  FRAME_RATE_FPS_30 = 30,
980  FRAME_RATE_FPS_60 = 60,
981 };
982 
983 enum FRAME_WIDTH {
984  FRAME_WIDTH_960 = 960,
985 };
986 
987 enum FRAME_HEIGHT {
988  FRAME_HEIGHT_540 = 540,
989 };
990 
991 
995 enum VIDEO_FRAME_TYPE {
997  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
999  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1001  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1003  VIDEO_FRAME_TYPE_B_FRAME = 5,
1005  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1007  VIDEO_FRAME_TYPE_UNKNOW
1008 };
1009 
1013 enum ORIENTATION_MODE {
1021  ORIENTATION_MODE_ADAPTIVE = 0,
1028  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1035  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1036 };
1037 
1041 enum DEGRADATION_PREFERENCE {
1049  MAINTAIN_QUALITY = 0,
1055  MAINTAIN_FRAMERATE = 1,
1062  MAINTAIN_BALANCED = 2,
1066  MAINTAIN_RESOLUTION = 3,
1070  DISABLED = 100,
1071 };
1072 
1080  int width;
1084  int height;
1085  VideoDimensions() : width(640), height(480) {}
1086  VideoDimensions(int w, int h) : width(w), height(h) {}
1087  bool operator==(const VideoDimensions& rhs) const {
1088  return width == rhs.width && height == rhs.height;
1089  }
1090 };
1091 
1097 const int STANDARD_BITRATE = 0;
1098 
1106 const int COMPATIBLE_BITRATE = -1;
1107 
1111 const int DEFAULT_MIN_BITRATE = -1;
1112 
1116 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1117 
1121 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1122  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1123  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1124  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1125 };
1126 
1130 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1132  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1134  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1136  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1138  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1140  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1141 };
1142 
1146 enum VIDEO_CODEC_TYPE {
1147  VIDEO_CODEC_NONE = 0,
1151  VIDEO_CODEC_VP8 = 1,
1155  VIDEO_CODEC_H264 = 2,
1159  VIDEO_CODEC_H265 = 3,
1164  VIDEO_CODEC_GENERIC = 6,
1168  VIDEO_CODEC_GENERIC_H264 = 7,
1172  VIDEO_CODEC_AV1 = 12,
1176  VIDEO_CODEC_VP9 = 13,
1180  VIDEO_CODEC_GENERIC_JPEG = 20,
1181 };
1182 
1186 enum TCcMode {
1190  CC_ENABLED,
1194  CC_DISABLED,
1195 };
1196 
1204  TCcMode ccMode;
1208  VIDEO_CODEC_TYPE codecType;
1209 
1267 
1268  SenderOptions()
1269  : ccMode(CC_ENABLED),
1270  codecType(VIDEO_CODEC_H264),
1271  targetBitrate(6500) {}
1272 };
1273 
1277 enum AUDIO_CODEC_TYPE {
1281  AUDIO_CODEC_OPUS = 1,
1282  // kIsac = 2,
1286  AUDIO_CODEC_PCMA = 3,
1290  AUDIO_CODEC_PCMU = 4,
1294  AUDIO_CODEC_G722 = 5,
1295  // kIlbc = 6,
1297  // AUDIO_CODEC_AAC = 7,
1301  AUDIO_CODEC_AACLC = 8,
1305  AUDIO_CODEC_HEAAC = 9,
1309  AUDIO_CODEC_JC1 = 10,
1313  AUDIO_CODEC_HEAAC2 = 11,
1317  AUDIO_CODEC_LPCNET = 12,
1318 };
1319 
1323 enum AUDIO_ENCODING_TYPE {
1328  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1333  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1338  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1343  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1348  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1353  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1358  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1363  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1368  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1373  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1378  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1379 };
1380 
1384 enum WATERMARK_FIT_MODE {
1389  FIT_MODE_COVER_POSITION,
1394  FIT_MODE_USE_IMAGE_RATIO
1395 };
1396 
1402  : speech(true),
1403  sendEvenIfEmpty(true) {}
1404 
1410  bool speech;
1417 };
1418 
1424  : codec(AUDIO_CODEC_AACLC),
1425  sampleRateHz(0),
1426  samplesPerChannel(0),
1427  numberOfChannels(0),
1428  captureTimeMs(0) {}
1429 
1431  : codec(rhs.codec),
1440  AUDIO_CODEC_TYPE codec;
1459 
1463  int64_t captureTimeMs;
1464 };
1469  AudioPcmDataInfo() : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1470 
1473  channelNum(rhs.channelNum),
1474  samplesOut(rhs.samplesOut),
1476  ntpTimeMs(rhs.ntpTimeMs) {}
1477 
1482 
1483  int16_t channelNum;
1484 
1485  // Output
1489  size_t samplesOut;
1493  int64_t elapsedTimeMs;
1497  int64_t ntpTimeMs;
1498 };
1502 enum H264PacketizeMode {
1506  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1510  SingleNalUnit, // Mode 0 - only single NALU allowed
1511 };
1512 
1516 enum VIDEO_STREAM_TYPE {
1520  VIDEO_STREAM_HIGH = 0,
1524  VIDEO_STREAM_LOW = 1,
1525 };
1526 
1541 
1543 };
1544 
1550  : codecType(VIDEO_CODEC_H264),
1551  width(0),
1552  height(0),
1553  framesPerSecond(0),
1554  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1555  rotation(VIDEO_ORIENTATION_0),
1556  trackId(0),
1557  captureTimeMs(0),
1558  decodeTimeMs(0),
1559  uid(0),
1560  streamType(VIDEO_STREAM_HIGH) {}
1561 
1563  : codecType(rhs.codecType),
1564  width(rhs.width),
1565  height(rhs.height),
1567  frameType(rhs.frameType),
1568  rotation(rhs.rotation),
1569  trackId(rhs.trackId),
1572  uid(rhs.uid),
1573  streamType(rhs.streamType) {}
1574 
1575  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1576  if (this == &rhs) return *this;
1577  codecType = rhs.codecType;
1578  width = rhs.width;
1579  height = rhs.height;
1581  frameType = rhs.frameType;
1582  rotation = rhs.rotation;
1583  trackId = rhs.trackId;
1585  decodeTimeMs = rhs.decodeTimeMs;
1586  uid = rhs.uid;
1587  streamType = rhs.streamType;
1588  return *this;
1589  }
1593  VIDEO_CODEC_TYPE codecType;
1597  int width;
1601  int height;
1611  VIDEO_FRAME_TYPE frameType;
1615  VIDEO_ORIENTATION rotation;
1619  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1620  // and additional payload for later implementation.
1624  int64_t captureTimeMs;
1628  int64_t decodeTimeMs;
1632  uid_t uid;
1636  VIDEO_STREAM_TYPE streamType;
1637 
1638 };
1642 enum COMPRESSION_PREFERENCE {
1646  PREFER_LOW_LATENCY,
1650  PREFER_QUALITY,
1651 };
1652 
1656 enum ENCODING_PREFERENCE {
1660  PREFER_AUTO = -1,
1664  PREFER_SOFTWARE = 0,
1668  PREFER_HARDWARE = 1,
1669 };
1670 
1675 
1679  ENCODING_PREFERENCE encodingPreference;
1680 
1684  COMPRESSION_PREFERENCE compressionPreference;
1685 
1686  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1687  compressionPreference(PREFER_LOW_LATENCY) {}
1688 
1689  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1690  COMPRESSION_PREFERENCE compression_preference) :
1691  encodingPreference(encoding_preference),
1692  compressionPreference(compression_preference) {}
1693 
1694  bool operator==(const AdvanceOptions& rhs) const {
1695  return encodingPreference == rhs.encodingPreference &&
1696  compressionPreference == rhs.compressionPreference;
1697  }
1698 
1699 };
1700 
1704 enum VIDEO_MIRROR_MODE_TYPE {
1708  VIDEO_MIRROR_MODE_AUTO = 0,
1712  VIDEO_MIRROR_MODE_ENABLED = 1,
1716  VIDEO_MIRROR_MODE_DISABLED = 2,
1717 };
1718 
1719 
1721 enum CODEC_CAP_MASK {
1723  CODEC_CAP_MASK_NONE = 0,
1724 
1726  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1727 
1729  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1730 
1732  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1733 
1735  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1736 };
1737 
1739  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1740  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1741 
1742  CodecCapLevels(): hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED), swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1743 };
1744 
1748  VIDEO_CODEC_TYPE codecType;
1753 };
1754 
1762  VIDEO_CODEC_TYPE codecType;
1827  int bitrate;
1828 
1848  ORIENTATION_MODE orientationMode;
1852  DEGRADATION_PREFERENCE degradationPreference;
1853 
1858  VIDEO_MIRROR_MODE_TYPE mirrorMode;
1859 
1864 
1865  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1866  : codecType(VIDEO_CODEC_H264),
1867  dimensions(d),
1868  frameRate(f),
1869  bitrate(b),
1870  minBitrate(DEFAULT_MIN_BITRATE),
1871  orientationMode(m),
1872  degradationPreference(MAINTAIN_QUALITY),
1873  mirrorMode(mirror),
1874  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1875  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1876  : codecType(VIDEO_CODEC_H264),
1877  dimensions(width, height),
1878  frameRate(f),
1879  bitrate(b),
1880  minBitrate(DEFAULT_MIN_BITRATE),
1881  orientationMode(m),
1882  degradationPreference(MAINTAIN_QUALITY),
1883  mirrorMode(mirror),
1884  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1885  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
1886  : codecType(config.codecType),
1887  dimensions(config.dimensions),
1888  frameRate(config.frameRate),
1889  bitrate(config.bitrate),
1890  minBitrate(config.minBitrate),
1893  mirrorMode(config.mirrorMode),
1894  advanceOptions(config.advanceOptions) {}
1895  VideoEncoderConfiguration()
1896  : codecType(VIDEO_CODEC_H264),
1897  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
1898  frameRate(FRAME_RATE_FPS_15),
1899  bitrate(STANDARD_BITRATE),
1900  minBitrate(DEFAULT_MIN_BITRATE),
1901  orientationMode(ORIENTATION_MODE_ADAPTIVE),
1902  degradationPreference(MAINTAIN_QUALITY),
1903  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
1904  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1905 
1906  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
1907  if (this == &rhs) return *this;
1908  codecType = rhs.codecType;
1909  dimensions = rhs.dimensions;
1910  frameRate = rhs.frameRate;
1911  bitrate = rhs.bitrate;
1912  minBitrate = rhs.minBitrate;
1913  orientationMode = rhs.orientationMode;
1914  degradationPreference = rhs.degradationPreference;
1915  mirrorMode = rhs.mirrorMode;
1916  advanceOptions = rhs.advanceOptions;
1917  return *this;
1918  }
1919 };
1920 
1944  bool ordered;
1945 };
1946 
1950 enum SIMULCAST_STREAM_MODE {
1951  /*
1952  * disable simulcast stream until receive request for enable simulcast stream by other broadcaster
1953  */
1954  AUTO_SIMULCAST_STREAM = -1,
1955  /*
1956  * disable simulcast stream
1957  */
1958  DISABLE_SIMULCAST_STREAM = 0,
1959  /*
1960  * always enable simulcast stream
1961  */
1962  ENABLE_SIMULCAST_STREAM = 1,
1963 };
1964 
1981  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
1982  bool operator==(const SimulcastStreamConfig& rhs) const {
1983  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
1984  }
1985 };
1986 
1991 struct Rectangle {
1995  int x;
1999  int y;
2003  int width;
2007  int height;
2008 
2009  Rectangle() : x(0), y(0), width(0), height(0) {}
2010  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2011 };
2012 
2027  float xRatio;
2033  float yRatio;
2039  float widthRatio;
2040 
2041  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2042  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2043 };
2044 
2073  WATERMARK_FIT_MODE mode;
2074 
2076  : visibleInPreview(true),
2077  positionInLandscapeMode(0, 0, 0, 0),
2078  positionInPortraitMode(0, 0, 0, 0),
2079  mode(FIT_MODE_COVER_POSITION) {}
2080 };
2081 
2085 struct RtcStats {
2089  unsigned int duration;
2093  unsigned int txBytes;
2097  unsigned int rxBytes;
2101  unsigned int txAudioBytes;
2105  unsigned int txVideoBytes;
2109  unsigned int rxAudioBytes;
2113  unsigned int rxVideoBytes;
2117  unsigned short txKBitRate;
2121  unsigned short rxKBitRate;
2125  unsigned short rxAudioKBitRate;
2129  unsigned short txAudioKBitRate;
2133  unsigned short rxVideoKBitRate;
2137  unsigned short txVideoKBitRate;
2141  unsigned short lastmileDelay;
2145  unsigned int userCount;
2152  double cpuAppUsage;
2242  RtcStats()
2243  : duration(0),
2244  txBytes(0),
2245  rxBytes(0),
2246  txAudioBytes(0),
2247  txVideoBytes(0),
2248  rxAudioBytes(0),
2249  rxVideoBytes(0),
2250  txKBitRate(0),
2251  rxKBitRate(0),
2252  rxAudioKBitRate(0),
2253  txAudioKBitRate(0),
2254  rxVideoKBitRate(0),
2255  txVideoKBitRate(0),
2256  lastmileDelay(0),
2257  userCount(0),
2258  cpuAppUsage(0.0),
2259  cpuTotalUsage(0.0),
2260  gatewayRtt(0),
2261  memoryAppUsageRatio(0.0),
2262  memoryTotalUsageRatio(0.0),
2264  connectTimeMs(0),
2274  txPacketLossRate(0),
2275  rxPacketLossRate(0) {}
2276 };
2277 
2281 enum CLIENT_ROLE_TYPE {
2285  CLIENT_ROLE_BROADCASTER = 1,
2289  CLIENT_ROLE_AUDIENCE = 2,
2290 };
2291 
2295 enum QUALITY_ADAPT_INDICATION {
2299  ADAPT_NONE = 0,
2303  ADAPT_UP_BANDWIDTH = 1,
2307  ADAPT_DOWN_BANDWIDTH = 2,
2308 };
2309 
2314 enum AUDIENCE_LATENCY_LEVEL_TYPE
2315 {
2319  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2323  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2324 };
2325 
2330 {
2334  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2335 
2337  : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2338 };
2339 
2343 enum EXPERIENCE_QUALITY_TYPE {
2345  EXPERIENCE_QUALITY_GOOD = 0,
2347  EXPERIENCE_QUALITY_BAD = 1,
2348 };
2349 
2353 enum EXPERIENCE_POOR_REASON {
2357  EXPERIENCE_REASON_NONE = 0,
2361  REMOTE_NETWORK_QUALITY_POOR = 1,
2365  LOCAL_NETWORK_QUALITY_POOR = 2,
2369  WIRELESS_SIGNAL_POOR = 4,
2374  WIFI_BLUETOOTH_COEXIST = 8,
2375 };
2376 
2380 enum AUDIO_AINS_MODE {
2384  AINS_MODE_BALANCED = 0,
2388  AINS_MODE_AGGRESSIVE = 1,
2392  AINS_MODE_ULTRALOWLATENCY = 2
2393 };
2394 
2398 enum AUDIO_PROFILE_TYPE {
2407  AUDIO_PROFILE_DEFAULT = 0,
2411  AUDIO_PROFILE_SPEECH_STANDARD = 1,
2415  AUDIO_PROFILE_MUSIC_STANDARD = 2,
2422  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2426  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2433  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2437  AUDIO_PROFILE_IOT = 6,
2438  AUDIO_PROFILE_NUM = 7
2439 };
2440 
2444 enum AUDIO_SCENARIO_TYPE {
2449  AUDIO_SCENARIO_DEFAULT = 0,
2455  AUDIO_SCENARIO_GAME_STREAMING = 3,
2461  AUDIO_SCENARIO_CHATROOM = 5,
2465  AUDIO_SCENARIO_CHORUS = 7,
2469  AUDIO_SCENARIO_MEETING = 8,
2473  AUDIO_SCENARIO_NUM = 9,
2474 };
2475 
2479 struct VideoFormat {
2480  OPTIONAL_ENUM_SIZE_T {
2482  kMaxWidthInPixels = 3840,
2484  kMaxHeightInPixels = 2160,
2486  kMaxFps = 60,
2487  };
2488 
2492  int width; // Number of pixels.
2496  int height; // Number of pixels.
2500  int fps;
2501  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
2502  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
2503 
2504  bool operator<(const VideoFormat& fmt) const {
2505  if (height != fmt.height) {
2506  return height < fmt.height;
2507  } else if (width != fmt.width) {
2508  return width < fmt.width;
2509  } else {
2510  return fps < fmt.fps;
2511  }
2512  }
2513  bool operator==(const VideoFormat& fmt) const {
2514  return width == fmt.width && height == fmt.height && fps == fmt.fps;
2515  }
2516  bool operator!=(const VideoFormat& fmt) const {
2517  return !operator==(fmt);
2518  }
2519 };
2520 
2524 enum VIDEO_CONTENT_HINT {
2528  CONTENT_HINT_NONE,
2535  CONTENT_HINT_MOTION,
2541  CONTENT_HINT_DETAILS
2542 };
2546 enum SCREEN_SCENARIO_TYPE {
2552  SCREEN_SCENARIO_DOCUMENT = 1,
2557  SCREEN_SCENARIO_GAMING = 2,
2562  SCREEN_SCENARIO_VIDEO = 3,
2568  SCREEN_SCENARIO_RDC = 4,
2569 };
2570 
2571 
2575 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2579  APPLICATION_SCENARIO_GENERAL = 0,
2583  APPLICATION_SCENARIO_MEETING = 1,
2584 };
2585 
2589 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2593  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2596  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2599  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2602  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2603 };
2604 
2608 enum LOCAL_AUDIO_STREAM_STATE {
2612  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2616  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2620  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2624  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2625 };
2626 
2630 enum LOCAL_AUDIO_STREAM_ERROR {
2634  LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2638  LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2642  LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2649  LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2653  LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2657  LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5,
2660  LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE = 6,
2663  LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE = 7,
2667  LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED = 8,
2670  LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID = 9,
2673  LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID = 10,
2674 };
2675 
2678 enum LOCAL_VIDEO_STREAM_STATE {
2682  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2687  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2691  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2695  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2696 };
2697 
2701 enum LOCAL_VIDEO_STREAM_ERROR {
2705  LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2709  LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2714  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2719  LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2725  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2729  LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2734  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6,
2741  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2747  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND = 8,
2752  LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED = 9,
2757  LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID = 10,
2761  LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE = 101,
2767  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2782  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
2784  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
2786  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
2788  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_FAILURE = 21,
2790  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_NO_PERMISSION = 22,
2798  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_PAUSED = 23,
2800  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_RESUMED = 24,
2802  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
2804  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
2806  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
2807 };
2808 
2812 enum REMOTE_AUDIO_STATE
2813 {
2819  REMOTE_AUDIO_STATE_STOPPED = 0, // Default state, audio is started or remote user disabled/muted audio stream
2823  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
2829  REMOTE_AUDIO_STATE_DECODING = 2, // The first remote audio frame has been decoded or fronzen state ends
2834  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
2839  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
2840 };
2841 
2845 enum REMOTE_AUDIO_STATE_REASON
2846 {
2850  REMOTE_AUDIO_REASON_INTERNAL = 0,
2854  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2858  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2863  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2868  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2873  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2878  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2882  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2883 };
2884 
2888 enum REMOTE_VIDEO_STATE {
2894  REMOTE_VIDEO_STATE_STOPPED = 0,
2898  REMOTE_VIDEO_STATE_STARTING = 1,
2904  REMOTE_VIDEO_STATE_DECODING = 2,
2908  REMOTE_VIDEO_STATE_FROZEN = 3,
2912  REMOTE_VIDEO_STATE_FAILED = 4,
2913 };
2917 enum REMOTE_VIDEO_STATE_REASON {
2921  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2925  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2929  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2933  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2937  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2941  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2945  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2949  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2953  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2957  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
2960  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
2963  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
2966  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
2967 
2970  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
2971 
2972 };
2973 
2977 enum REMOTE_USER_STATE {
2981  USER_STATE_MUTE_AUDIO = (1 << 0),
2985  USER_STATE_MUTE_VIDEO = (1 << 1),
2989  USER_STATE_ENABLE_VIDEO = (1 << 4),
2993  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
2994 
2995 };
2996 
3002  VideoTrackInfo()
3003  : isLocal(false), ownerUid(0), trackId(0), channelId(OPTIONAL_NULLPTR)
3004  , streamType(VIDEO_STREAM_HIGH), codecType(VIDEO_CODEC_H264)
3005  , encodedFrameOnly(false), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY)
3006  , observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
3012  bool isLocal;
3016  uid_t ownerUid;
3017 
3021  track_id_t trackId;
3025  const char* channelId;
3029  VIDEO_STREAM_TYPE streamType;
3033  VIDEO_CODEC_TYPE codecType;
3043  VIDEO_SOURCE_TYPE sourceType;
3048 };
3049 
3053 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3057  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3061  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3065  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3069  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3073  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3074 };
3075 
3086  uid_t uid;
3092  unsigned int volume; // [0,255]
3102  unsigned int vad;
3108  double voicePitch;
3109 
3110  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3111 };
3112 
3116 struct DeviceInfo {
3117  /*
3118  * Whether the audio device supports ultra-low-latency capture and playback:
3119  * - `true`: The device supports ultra-low-latency capture and playback.
3120  * - `false`: The device does not support ultra-low-latency capture and playback.
3121  */
3122  bool isLowLatencyAudioSupported;
3123 
3124  DeviceInfo() : isLowLatencyAudioSupported(false) {}
3125 };
3126 
3131  public:
3132  virtual ~IPacketObserver() {}
3136  struct Packet {
3142  const unsigned char* buffer;
3146  unsigned int size;
3147 
3148  Packet() : buffer(NULL), size(0) {}
3149  };
3157  virtual bool onSendAudioPacket(Packet& packet) = 0;
3165  virtual bool onSendVideoPacket(Packet& packet) = 0;
3173  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3181  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3182 };
3183 
3187 enum AUDIO_SAMPLE_RATE_TYPE {
3191  AUDIO_SAMPLE_RATE_32000 = 32000,
3195  AUDIO_SAMPLE_RATE_44100 = 44100,
3199  AUDIO_SAMPLE_RATE_48000 = 48000,
3200 };
3204 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3208  VIDEO_CODEC_H264_FOR_STREAM = 1,
3212  VIDEO_CODEC_H265_FOR_STREAM = 2,
3213 };
3214 
3218 enum VIDEO_CODEC_PROFILE_TYPE {
3222  VIDEO_CODEC_PROFILE_BASELINE = 66,
3226  VIDEO_CODEC_PROFILE_MAIN = 77,
3230  VIDEO_CODEC_PROFILE_HIGH = 100,
3231 };
3232 
3233 
3237 enum AUDIO_CODEC_PROFILE_TYPE {
3241  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3245  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3249  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3250 };
3251 
3256 {
3276  unsigned short txPacketLossRate;
3281 };
3282 
3283 
3287 enum RTMP_STREAM_PUBLISH_STATE {
3291  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3295  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3299  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3305  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3309  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3313  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3314 };
3315 
3319 enum RTMP_STREAM_PUBLISH_ERROR_TYPE {
3323  RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3328  RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3332  RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3336  RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3340  RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3344  RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3348  RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3352  RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3356  RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3360  RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3364  RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3368  RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER = 11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
3372  RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM = 13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
3376  RTMP_STREAM_PUBLISH_ERROR_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
3380  RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID = 15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
3382  RTMP_STREAM_PUBLISH_ERROR_INVALID_PRIVILEGE = 16,
3386  RTMP_STREAM_UNPUBLISH_ERROR_OK = 100,
3387 };
3388 
3390 enum RTMP_STREAMING_EVENT {
3394  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3398  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3402  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3406  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3407 };
3408 
3412 typedef struct RtcImage {
3416  const char* url;
3420  int x;
3424  int y;
3428  int width;
3432  int height;
3440  int zOrder;
3446  double alpha;
3447 
3448  RtcImage() : url(NULL), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
3449 } RtcImage;
3456  LiveStreamAdvancedFeature() : featureName(NULL), opened(false) {}
3457  LiveStreamAdvancedFeature(const char* feat_name, bool open) : featureName(feat_name), opened(open) {}
3459  // static const char* LBHQ = "lbhq";
3461  // static const char* VEO = "veo";
3462 
3466  const char* featureName;
3467 
3473  bool opened;
3474 } ;
3475 
3479 enum CONNECTION_STATE_TYPE
3480 {
3486  CONNECTION_STATE_DISCONNECTED = 1,
3495  CONNECTION_STATE_CONNECTING = 2,
3503  CONNECTION_STATE_CONNECTED = 3,
3513  CONNECTION_STATE_RECONNECTING = 4,
3522  CONNECTION_STATE_FAILED = 5,
3523 };
3524 
3532  uid_t uid;
3536  int x;
3540  int y;
3544  int width;
3548  int height;
3556  int zOrder;
3562  double alpha;
3576  TranscodingUser()
3577  : uid(0),
3578  x(0),
3579  y(0),
3580  width(0),
3581  height(0),
3582  zOrder(0),
3583  alpha(1.0),
3584  audioChannel(0) {}
3585 };
3586 
3597  int width;
3604  int height;
3615 
3622 
3630  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
3633  unsigned int backgroundColor;
3635  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
3639  unsigned int userCount;
3648 
3651  const char* metadata;
3660  unsigned int watermarkCount;
3661 
3670  unsigned int backgroundImageCount;
3671 
3674  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
3688  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
3692 
3694  unsigned int advancedFeatureCount;
3695  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) {}
3696 };
3697 
3705  VIDEO_SOURCE_TYPE sourceType;
3715  const char* imageUrl;
3723  int x;
3727  int y;
3731  int width;
3735  int height;
3741  int zOrder;
3745  double alpha;
3752  bool mirror;
3753 
3755  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
3756  remoteUserUid(0),
3757  imageUrl(NULL),
3758  x(0),
3759  y(0),
3760  width(0),
3761  height(0),
3762  zOrder(0),
3763  alpha(1.0),
3764  mirror(false) {}
3765 };
3766 
3767 
3775  unsigned int streamCount;
3790 
3792  : streamCount(0),
3793  videoInputStreams(NULL),
3795  syncWithPrimaryCamera(true) {}
3796 };
3797 
3798 enum VIDEO_TRANSCODER_ERROR {
3802  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
3806  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
3810  VT_ERR_INVALID_IMAGE_PATH = 3,
3814  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
3818  VT_ERR_INVALID_LAYOUT = 5,
3822  VT_ERR_INTERNAL = 20
3823 };
3824 
3851 };
3852 
3856 enum LASTMILE_PROBE_RESULT_STATE {
3860  LASTMILE_PROBE_RESULT_COMPLETE = 1,
3864  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3868  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3869 };
3870 
3878  unsigned int packetLossRate;
3882  unsigned int jitter;
3886  unsigned int availableBandwidth;
3887 
3889  jitter(0),
3890  availableBandwidth(0) {}
3891 };
3892 
3900  LASTMILE_PROBE_RESULT_STATE state;
3912  unsigned int rtt;
3913 
3915  : state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
3916  rtt(0) {}
3917 };
3918 
3922 enum CONNECTION_CHANGED_REASON_TYPE
3923 {
3927  CONNECTION_CHANGED_CONNECTING = 0,
3931  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3935  CONNECTION_CHANGED_INTERRUPTED = 2,
3939  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3943  CONNECTION_CHANGED_JOIN_FAILED = 4,
3947  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3951  CONNECTION_CHANGED_INVALID_APP_ID = 6,
3955  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3961  CONNECTION_CHANGED_INVALID_TOKEN = 8,
3965  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3971  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3975  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3979  CONNECTION_CHANGED_RENEW_TOKEN = 12,
3983  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3987  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3991  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3995  CONNECTION_CHANGED_LOST = 16,
3999  CONNECTION_CHANGED_ECHO_TEST = 17,
4003  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4007  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4011  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4012 
4016  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4020  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4021 };
4022 
4026 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4030  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4034  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4038  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3,
4042  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4,
4043 };
4044 
4048 enum WLACC_MESSAGE_REASON {
4052  WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4056  WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4057 };
4058 
4062 enum WLACC_SUGGEST_ACTION {
4066  WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4070  WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4074  WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4078  WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4079 };
4080 
4084 struct WlAccStats {
4088  unsigned short e2eDelayPercent;
4092  unsigned short frozenRatioPercent;
4096  unsigned short lossRatePercent;
4097 };
4098 
4102 enum NETWORK_TYPE {
4106  NETWORK_TYPE_UNKNOWN = -1,
4110  NETWORK_TYPE_DISCONNECTED = 0,
4114  NETWORK_TYPE_LAN = 1,
4118  NETWORK_TYPE_WIFI = 2,
4122  NETWORK_TYPE_MOBILE_2G = 3,
4126  NETWORK_TYPE_MOBILE_3G = 4,
4130  NETWORK_TYPE_MOBILE_4G = 5,
4134  NETWORK_TYPE_MOBILE_5G = 6,
4135 };
4136 
4140 enum VIDEO_VIEW_SETUP_MODE {
4144  VIDEO_VIEW_SETUP_REPLACE = 0,
4148  VIDEO_VIEW_SETUP_ADD = 1,
4152  VIDEO_VIEW_SETUP_REMOVE = 2,
4153 };
4154 
4158 struct VideoCanvas {
4162  view_t view;
4166  uid_t uid;
4175  media::base::RENDER_MODE_TYPE renderMode;
4185  VIDEO_MIRROR_MODE_TYPE mirrorMode;
4190  VIDEO_VIEW_SETUP_MODE setupMode;
4195  VIDEO_SOURCE_TYPE sourceType;
4208 
4215 
4216  VideoCanvas()
4217  : view(NULL), uid(0), backgroundColor(0x00000000), renderMode(media::base::RENDER_MODE_HIDDEN), mirrorMode(VIDEO_MIRROR_MODE_AUTO),
4218  setupMode(VIDEO_VIEW_SETUP_REPLACE), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4219  cropArea(0, 0, 0, 0), enableAlphaMask(false) {}
4220 
4221  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4222  : view(v), uid(u), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4223  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4224  cropArea(0, 0, 0, 0), enableAlphaMask(false) {}
4225 
4226  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
4227  : view(v), uid(0), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4228  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4229  cropArea(0, 0, 0, 0), enableAlphaMask(false) {}
4230 };
4231 
4244  };
4245 
4249 
4252 
4256 
4260 
4264 
4265  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness, float sharpness) : lighteningContrastLevel(contrastLevel), lighteningLevel(lightening), smoothnessLevel(smoothness), rednessLevel(redness), sharpnessLevel(sharpness) {}
4266 
4268 };
4269 
4279  };
4292  };
4293 
4297 
4301 
4302  LowlightEnhanceOptions(LOW_LIGHT_ENHANCE_MODE lowlightMode, LOW_LIGHT_ENHANCE_LEVEL lowlightLevel) : mode(lowlightMode), level(lowlightLevel) {}
4303 
4305 };
4319  };
4340  };
4344 
4348 
4349  VideoDenoiserOptions(VIDEO_DENOISER_MODE denoiserMode, VIDEO_DENOISER_LEVEL denoiserLevel) : mode(denoiserMode), level(denoiserLevel) {}
4350 
4352 };
4353 
4362 
4368 
4369  ColorEnhanceOptions(float stength, float skinProtect) : strengthLevel(stength), skinProtectLevel(skinProtect) {}
4370 
4372 };
4373 
4401  };
4402 
4412  };
4413 
4417 
4426  unsigned int color;
4427 
4434  const char* source;
4435 
4440 
4442 };
4443 
4445 
4446  enum SEG_MODEL_TYPE {
4447 
4448  SEG_MODEL_AI = 1,
4449  SEG_MODEL_GREEN = 2
4450  };
4451 
4452  SEG_MODEL_TYPE modelType;
4453 
4454  float greenCapacity;
4455 
4456 
4457  SegmentationProperty() : modelType(SEG_MODEL_AI), greenCapacity(0.5){}
4458 };
4459 
4462 enum AUDIO_TRACK_TYPE {
4466  AUDIO_TRACK_INVALID = -1,
4473  AUDIO_TRACK_MIXABLE = 0,
4479  AUDIO_TRACK_DIRECT = 1,
4480 };
4481 
4491 
4493  : enableLocalPlayback(true) {}
4494 };
4495 
4516 enum VOICE_BEAUTIFIER_PRESET {
4519  VOICE_BEAUTIFIER_OFF = 0x00000000,
4525  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4531  CHAT_BEAUTIFIER_FRESH = 0x01010200,
4537  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4546  SINGING_BEAUTIFIER = 0x01020100,
4549  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4552  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4555  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4558  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4561  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4564  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4567  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4570  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4580  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4581 };
4582 
4602 enum AUDIO_EFFECT_PRESET {
4605  AUDIO_EFFECT_OFF = 0x00000000,
4608  ROOM_ACOUSTICS_KTV = 0x02010100,
4611  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4614  ROOM_ACOUSTICS_STUDIO = 0x02010300,
4617  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
4624  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
4627  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
4630  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
4642  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
4653  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
4660  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
4666  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
4672  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
4679  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
4685  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
4689  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
4692  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
4699  STYLE_TRANSFORMATION_RNB = 0x02030100,
4706  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
4711  PITCH_CORRECTION = 0x02040100,
4712 
4716 };
4717 
4720 enum VOICE_CONVERSION_PRESET {
4723  VOICE_CONVERSION_OFF = 0x00000000,
4726  VOICE_CHANGER_NEUTRAL = 0x03010100,
4729  VOICE_CHANGER_SWEET = 0x03010200,
4732  VOICE_CHANGER_SOLID = 0x03010300,
4735  VOICE_CHANGER_BASS = 0x03010400,
4738  VOICE_CHANGER_CARTOON = 0x03010500,
4741  VOICE_CHANGER_CHILDLIKE = 0x03010600,
4744  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
4747  VOICE_CHANGER_MONSTER = 0x03010800,
4750  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
4753  VOICE_CHANGER_GROOT = 0x03010A00,
4756  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
4759  VOICE_CHANGER_IRON_LADY = 0x03010C00,
4762  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
4765  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
4768  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
4769 
4770 };
4771 
4774 enum HEADPHONE_EQUALIZER_PRESET {
4777  HEADPHONE_EQUALIZER_OFF = 0x00000000,
4780  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
4783  HEADPHONE_EQUALIZER_INEAR = 0x04000002
4784 };
4785 
4815  int bitrate;
4838 
4846  unsigned int highLightColor;
4855 
4857  : dimensions(1920, 1080), frameRate(5), bitrate(STANDARD_BITRATE), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
4858  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
4860  ScreenCaptureParameters(int width, int height, int f, int b)
4861  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false){}
4862  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
4863  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
4864  ScreenCaptureParameters(int width, int height, int f, int b, view_t *ex, int cnt)
4866  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t *ex, int cnt)
4868 };
4869 
4873 enum AUDIO_RECORDING_QUALITY_TYPE {
4877  AUDIO_RECORDING_QUALITY_LOW = 0,
4881  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4885  AUDIO_RECORDING_QUALITY_HIGH = 2,
4889  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
4890 };
4891 
4895 enum AUDIO_FILE_RECORDING_TYPE {
4899  AUDIO_FILE_RECORDING_MIC = 1,
4903  AUDIO_FILE_RECORDING_PLAYBACK = 2,
4907  AUDIO_FILE_RECORDING_MIXED = 3,
4908 };
4909 
4913 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4917  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4921  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4925  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4926 };
4927 
4936  const char* filePath;
4942  bool encode;
4956  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
4961  AUDIO_RECORDING_QUALITY_TYPE quality;
4962 
4969 
4971  : filePath(NULL),
4972  encode(false),
4973  sampleRate(32000),
4974  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4975  quality(AUDIO_RECORDING_QUALITY_LOW),
4976  recordingChannel(1) {}
4977 
4978  AudioRecordingConfiguration(const char* file_path, int sample_rate, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
4979  : filePath(file_path),
4980  encode(false),
4981  sampleRate(sample_rate),
4982  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4983  quality(quality_type),
4984  recordingChannel(channel) {}
4985 
4986  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
4987  : filePath(file_path),
4988  encode(enc),
4989  sampleRate(sample_rate),
4990  fileRecordingType(type),
4991  quality(quality_type),
4992  recordingChannel(channel) {}
4993 
4994  AudioRecordingConfiguration(const AudioRecordingConfiguration &rhs)
4995  : filePath(rhs.filePath),
4996  encode(rhs.encode),
4997  sampleRate(rhs.sampleRate),
4999  quality(rhs.quality),
5001 };
5002 
5010  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
5014  AUDIO_ENCODING_TYPE encodingType;
5015 
5017  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5018  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM){}
5019 
5020 };
5025 public:
5036 virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5037 
5048 virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5049 
5060 virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5061 
5062 virtual ~IAudioEncodedFrameObserver () {}
5063 };
5064 
5067 enum AREA_CODE {
5071  AREA_CODE_CN = 0x00000001,
5075  AREA_CODE_NA = 0x00000002,
5079  AREA_CODE_EU = 0x00000004,
5083  AREA_CODE_AS = 0x00000008,
5087  AREA_CODE_JP = 0x00000010,
5091  AREA_CODE_IN = 0x00000020,
5095  AREA_CODE_GLOB = (0xFFFFFFFF)
5096 };
5097 
5098 enum AREA_CODE_EX {
5102  AREA_CODE_OC = 0x00000040,
5106  AREA_CODE_SA = 0x00000080,
5110  AREA_CODE_AF = 0x00000100,
5114  AREA_CODE_KR = 0x00000200,
5118  AREA_CODE_HKMC = 0x00000400,
5122  AREA_CODE_US = 0x00000800,
5126  AREA_CODE_OVS = 0xFFFFFFFE
5127 };
5128 
5132 enum CHANNEL_MEDIA_RELAY_ERROR {
5135  RELAY_OK = 0,
5138  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5144  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
5147  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
5150  RELAY_ERROR_FAILED_JOIN_SRC = 4,
5153  RELAY_ERROR_FAILED_JOIN_DEST = 5,
5156  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
5159  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
5163  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
5166  RELAY_ERROR_INTERNAL_ERROR = 9,
5169  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
5172  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
5173 };
5174 
5178 enum CHANNEL_MEDIA_RELAY_EVENT {
5181  RELAY_EVENT_NETWORK_DISCONNECTED = 0,
5184  RELAY_EVENT_NETWORK_CONNECTED = 1,
5187  RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
5190  RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
5193  RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
5196  RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
5199  RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
5202  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
5205  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
5208  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
5211  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
5214  RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
5217  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12,
5220  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13,
5223  RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14,
5226  RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15,
5227 };
5231 enum CHANNEL_MEDIA_RELAY_STATE {
5235  RELAY_STATE_IDLE = 0,
5238  RELAY_STATE_CONNECTING = 1,
5241  RELAY_STATE_RUNNING = 2,
5244  RELAY_STATE_FAILURE = 3,
5245 };
5246 
5253  const char* channelName;
5257  const char* token;
5260  uid_t uid;
5261 };
5262 
5299 
5301  : srcInfo(NULL),
5302  destInfos(NULL),
5303  destCount(0)
5304  {}
5305 };
5306 
5315 
5317 
5318  bool operator==(const UplinkNetworkInfo& rhs) const {
5320  }
5321 };
5322 
5331  const char* uid;
5335  VIDEO_STREAM_TYPE stream_type;
5339  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
5344 
5346  : uid(OPTIONAL_NULLPTR),
5347  stream_type(VIDEO_STREAM_HIGH),
5348  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
5349  expected_bitrate_bps(-1) {}
5350 
5351  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
5352  if (this == &rhs) return *this;
5353  uid = OPTIONAL_NULLPTR;
5354  stream_type = rhs.stream_type;
5357  if (rhs.uid != OPTIONAL_NULLPTR) {
5358  char* temp = new char[strlen(rhs.uid) + 1];
5359  strcpy(temp, rhs.uid);
5360  uid = temp;
5361  }
5362  return *this;
5363  }
5364 
5365  ~PeerDownlinkInfo() {
5366  if (uid) { delete [] uid; }
5367  }
5368  };
5369 
5390 
5395  peer_downlink_info(OPTIONAL_NULLPTR),
5397 
5402  peer_downlink_info(OPTIONAL_NULLPTR),
5404  if (total_received_video_count <= 0) return;
5405  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5406  for (int i = 0; i < total_received_video_count; ++i)
5408  }
5409 
5410  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
5411  if (this == &rhs) return *this;
5412  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
5413  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
5414  total_downscale_level_count = rhs.total_downscale_level_count;
5415  peer_downlink_info = OPTIONAL_NULLPTR;
5416  total_received_video_count = rhs.total_received_video_count;
5417  if (total_received_video_count > 0) {
5418  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5419  for (int i = 0; i < total_received_video_count; ++i)
5420  peer_downlink_info[i] = rhs.peer_downlink_info[i];
5421  }
5422  return *this;
5423  }
5424 
5425  ~DownlinkNetworkInfo() {
5426  if (peer_downlink_info) delete [] peer_downlink_info;
5427  }
5428 };
5429 
5436 enum ENCRYPTION_MODE {
5439  AES_128_XTS = 1,
5442  AES_128_ECB = 2,
5445  AES_256_XTS = 3,
5448  SM4_128_ECB = 4,
5451  AES_128_GCM = 5,
5454  AES_256_GCM = 6,
5458  AES_128_GCM2 = 7,
5461  AES_256_GCM2 = 8,
5464  MODE_END,
5465 };
5466 
5473  ENCRYPTION_MODE encryptionMode;
5479  const char* encryptionKey;
5486  uint8_t encryptionKdfSalt[32];
5487 
5489  : encryptionMode(AES_128_GCM2),
5490  encryptionKey(NULL)
5491  {
5492  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
5493  }
5494 
5496  const char* getEncryptionString() const {
5497  switch(encryptionMode) {
5498  case AES_128_XTS:
5499  return "aes-128-xts";
5500  case AES_128_ECB:
5501  return "aes-128-ecb";
5502  case AES_256_XTS:
5503  return "aes-256-xts";
5504  case SM4_128_ECB:
5505  return "sm4-128-ecb";
5506  case AES_128_GCM:
5507  return "aes-128-gcm";
5508  case AES_256_GCM:
5509  return "aes-256-gcm";
5510  case AES_128_GCM2:
5511  return "aes-128-gcm-2";
5512  case AES_256_GCM2:
5513  return "aes-256-gcm-2";
5514  default:
5515  return "aes-128-gcm-2";
5516  }
5517  return "aes-128-gcm-2";
5518  }
5520 };
5521 
5524 enum ENCRYPTION_ERROR_TYPE {
5528  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5532  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5536  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5537 };
5538 
5539 enum UPLOAD_ERROR_REASON
5540 {
5541  UPLOAD_SUCCESS = 0,
5542  UPLOAD_NET_ERROR = 1,
5543  UPLOAD_SERVER_ERROR = 2,
5544 };
5545 
5548 enum PERMISSION_TYPE {
5552  RECORD_AUDIO = 0,
5556  CAMERA = 1,
5557 
5558  SCREEN_CAPTURE = 2,
5559 };
5560 
5563 enum MAX_USER_ACCOUNT_LENGTH_TYPE
5564 {
5567  MAX_USER_ACCOUNT_LENGTH = 256
5568 };
5569 
5573 enum STREAM_SUBSCRIBE_STATE {
5577  SUB_STATE_IDLE = 0,
5590  SUB_STATE_NO_SUBSCRIBED = 1,
5594  SUB_STATE_SUBSCRIBING = 2,
5598  SUB_STATE_SUBSCRIBED = 3
5599 };
5600 
5604 enum STREAM_PUBLISH_STATE {
5608  PUB_STATE_IDLE = 0,
5616  PUB_STATE_NO_PUBLISHED = 1,
5620  PUB_STATE_PUBLISHING = 2,
5624  PUB_STATE_PUBLISHED = 3
5625 };
5626 
5631  view_t view;
5632  bool enableAudio;
5633  bool enableVideo;
5634  const char* token;
5635  const char* channelId;
5636  int intervalInSeconds;
5637 
5638  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
5639  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
5640 
5642  : view(OPTIONAL_NULLPTR), enableAudio(true), enableVideo(true), token(OPTIONAL_NULLPTR), channelId(OPTIONAL_NULLPTR), intervalInSeconds(2) {}
5643 };
5644 
5648 struct UserInfo {
5652  uid_t uid;
5656  char userAccount[MAX_USER_ACCOUNT_LENGTH];
5657  UserInfo()
5658  : uid(0) {
5659  userAccount[0] = '\0';
5660  }
5661 };
5662 
5666 enum EAR_MONITORING_FILTER_TYPE {
5670  EAR_MONITORING_FILTER_NONE = (1<<0),
5675  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
5679  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
5680 };
5681 
5685 enum THREAD_PRIORITY_TYPE {
5689  LOWEST = 0,
5693  LOW = 1,
5697  NORMAL = 2,
5701  HIGH = 3,
5705  HIGHEST = 4,
5709  CRITICAL = 5,
5710 };
5711 
5712 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
5713 
5717 struct ScreenVideoParameters {
5744  VideoDimensions dimensions;
5750  int frameRate = 15;
5755  int bitrate;
5756  /*
5757  * The content hint of the screen sharing:
5758  */
5759  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
5760 
5761  ScreenVideoParameters() : dimensions(1280, 720) {}
5762 };
5763 
5767 struct ScreenAudioParameters {
5771  int sampleRate = 16000;
5775  int channels = 2;
5780  int captureSignalVolume = 100;
5781 };
5782 
5786 struct ScreenCaptureParameters2 {
5796  bool captureAudio = false;
5800  ScreenAudioParameters audioParams;
5810  bool captureVideo = true;
5814  ScreenVideoParameters videoParams;
5815 };
5816 #endif
5817 
5821 enum MEDIA_TRACE_EVENT {
5825  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
5829  MEDIA_TRACE_EVENT_VIDEO_DECODED,
5830 };
5831 
5885 };
5886 
5887 enum CONFIG_FETCH_TYPE {
5891  CONFIG_FETCH_TYPE_INITIALIZE = 1,
5895  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
5896 };
5897 
5898 
5906  const char* channelId;
5910  uid_t uid;
5911  RecorderStreamInfo() : channelId(NULL), uid(0) {}
5912 };
5913 
5914 
5916 enum LOCAL_PROXY_MODE {
5919  ConnectivityFirst = 0,
5922  LocalOnly = 1,
5923 };
5924 
5928  const char* serverDomain;
5931  const char* serverPath;
5940 
5941  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
5942 
5943  LogUploadServerInfo(const char* domain, const char* path, int port, bool https) : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
5944 };
5945 
5950 };
5951 
5955  const char** ipList;
5961  const char** domainList;
5968  const char* verifyDomainName;
5971  LOCAL_PROXY_MODE mode;
5975  LocalAccessPointConfiguration() : ipList(NULL), ipListSize(0), domainList(NULL), domainListSize(0), verifyDomainName(NULL), mode(ConnectivityFirst) {}
5976 };
5977 
5978 
5979 } // namespace rtc
5980 
5981 namespace base {
5982 
5984  public:
5985  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
5986  virtual ~IEngineBase() {}
5987 };
5988 
5989 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
5990  public:
5991  AParameter(IEngineBase& engine) { initialize(&engine); }
5992  AParameter(IEngineBase* engine) { initialize(engine); }
5994 
5995  private:
5996  bool initialize(IEngineBase* engine) {
5997  IAgoraParameter* p = NULL;
5998  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
5999  return p != NULL;
6000  }
6001 };
6002 
6004  public:
6005  virtual ~LicenseCallback() {}
6006  virtual void onCertificateRequired() = 0;
6007  virtual void onLicenseRequest() = 0;
6008  virtual void onLicenseValidated() = 0;
6009  virtual void onLicenseError(int result) = 0;
6010 };
6011 
6012 } // namespace base
6013 
6050 };
6051 
6052 } // namespace agora
6053 
6059 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
6060 
6066 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
6067 
6068 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
6069 
6077 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString &credential);
6078 
6092 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char *credential_buf, int credential_len,
6093  const char *certificate_buf, int certificate_len);
6094 
6102 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback *callback);
6103 
6111 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
6112 
6113 /*
6114  * Get monotonic time in ms which can be used by capture time,
6115  * typical scenario is as follows:
6116  *
6117  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6118  * | // custom audio/video base capture time, e.g. the first audio/video capture time. |
6119  * | int64_t custom_capture_time_base; |
6120  * | |
6121  * | int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
6122  * | |
6123  * | // offset is fixed once calculated in the begining. |
6124  * | const int64_t offset = agora_monotonic_time - custom_capture_time_base; |
6125  * | |
6126  * | // realtime_custom_audio/video_capture_time is the origin capture time that customer provided.|
6127  * | // actual_audio/video_capture_time is the actual capture time transfered to sdk. |
6128  * | int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
6129  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
6130  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6131  *
6132  * @return
6133  * - >= 0: Success.
6134  * - < 0: Failure.
6135  */
6136 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:3642
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:5928
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::VideoCanvas::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4201
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:3428
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:3741
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2193
agora::rtc::UserInfo
Definition: AgoraBase.h:5648
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:3745
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1463
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:1852
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:3896
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:5006
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:4789
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:2021
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:3079
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:4405
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:3904
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1615
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:5949
agora::rtc::BeautyOptions
Definition: AgoraBase.h:4234
agora::rtc::SenderOptions
Definition: AgoraBase.h:1200
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:4815
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:4251
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2105
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:4396
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:3633
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:147
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:3108
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:3828
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:3540
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:4842
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2121
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2178
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3276
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:2500
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:6025
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:1844
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:4854
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:4316
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:4190
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4287
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:3575
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2213
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:2492
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:4826
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:5014
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1208
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1440
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:3625
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:5298
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:3280
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:3882
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:4255
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:4347
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:4185
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2089
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:1980
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1084
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:5971
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:3835
agora::rtc::RecorderStreamInfo::channelId
const char * channelId
Definition: AgoraBase.h:5906
agora::rtc::LocalAccessPointConfiguration
Definition: AgoraBase.h:5952
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:3635
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Definition: AgoraBase.h:4314
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:3590
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2093
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:2496
agora::rtc::Rectangle
Definition: AgoraBase.h:1991
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:5955
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:4166
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2198
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:4936
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1548
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:4361
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:6029
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:4384
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:4259
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2113
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:3710
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1766
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1632
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1422
agora::util::AutoPtr
Definition: AgoraBase.h:89
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:3878
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:811
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:4837
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:3136
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:4490
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:3688
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:5910
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1758
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2003
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:1827
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:5875
agora::util::AList
Definition: AgoraBase.h:222
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2228
agora::rtc::VideoSubscriptionOptions
Definition: AgoraBase.h:1527
agora::rtc::TranscodingUser
Definition: AgoraBase.h:3528
agora::rtc::EchoTestConfiguration
Definition: AgoraBase.h:5630
agora::rtc::RtcImage
Definition: AgoraBase.h:3412
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:3536
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:5257
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:5884
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:4942
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:4248
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2033
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:6037
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:1968
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:3677
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:5293
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:3420
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:4416
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3705
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:3789
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:3440
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2334
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3092
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:3532
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:4214
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:5839
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:3466
agora::rtc::AdvancedConfigInfo
Definition: AgoraBase.h:5946
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:1999
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3268
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:3416
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:3142
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1628
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2233
agora::rtc::ColorEnhanceOptions
Definition: AgoraBase.h:4358
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:4952
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:805
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2064
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:5974
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:3908
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:3660
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:1995
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:3779
agora::util::IString
Definition: AgoraBase.h:161
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:5968
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:6041
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
Definition: AgoraBase.h:4283
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1458
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:3771
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:4237
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2027
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3264
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1534
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:3850
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2162
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:3146
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:3691
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:3670
agora::rtc::IPacketObserver
Definition: AgoraBase.h:3130
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:3666
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2152
agora::rtc::VideoFormat
Definition: AgoraBase.h:2479
agora::rtc::AdvanceOptions
Definition: AgoraBase.h:1674
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:3562
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2069
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:1924
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1684
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2101
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2188
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:3900
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:1863
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:5253
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:3604
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1410
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1593
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2137
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2109
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1416
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:6049
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2129
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3086
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:4239
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:3609
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3021
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3039
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:3544
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:4846
agora::base::AParameter
Definition: AgoraBase.h:5989
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:4263
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:5473
agora::util::AOutputIterator
Definition: AgoraBase.h:191
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2059
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:5024
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1597
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:3016
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:5850
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:3886
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1624
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1607
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:3647
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3033
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:3651
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:3674
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:5265
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:4439
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:5652
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:1944
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:3455
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:4426
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:3874
agora::rtc::VideoDenoiserOptions
Definition: AgoraBase.h:4311
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2039
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4328
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:4207
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1489
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1770
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2007
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1493
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2073
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1444
agora::UserInfo
Definition: AgoraBase.h:801
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2237
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:4377
agora::rtc::WlAccStats::frozenRatioPercent
unsigned short frozenRatioPercent
Definition: AgoraBase.h:4092
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:4300
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:4162
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:3715
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:5010
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:5486
agora::rtc::WlAccStats::lossRatePercent
unsigned short lossRatePercent
Definition: AgoraBase.h:4096
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:4392
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:3656
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:3102
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:5249
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:817
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:4278
agora::rtc::WlAccStats
Definition: AgoraBase.h:4084
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:4175
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:6033
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3043
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2117
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1454
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1636
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:6045
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3047
agora::rtc::LogUploadServerInfo
Definition: AgoraBase.h:5925
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Definition: AgoraBase.h:4323
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4195
agora::rtc::CodecCapInfo
Definition: AgoraBase.h:1746
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:4809
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:4968
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2223
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:3685
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:3432
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1972
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1611
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:3841
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2145
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:3775
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:4243
agora::base::LicenseCallback
Definition: AgoraBase.h:6003
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:5468
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:3630
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:4380
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:5846
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:4170
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:4803
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1080
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:3723
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:3621
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:3701
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:4434
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:5931
agora::rtc::RtcStats
Definition: AgoraBase.h:2085
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1540
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:4400
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2054
agora::rtc::LowlightEnhanceOptions
Definition: AgoraBase.h:4270
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:3556
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:3597
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1468
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2097
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2133
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:4343
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2125
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3260
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:5866
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:2048
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:1858
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3256
agora::rtc::RecorderStreamInfo
Definition: AgoraBase.h:5902
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:5934
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:4820
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:3424
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1400
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2173
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2168
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:3846
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:3012
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:1679
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3025
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:4291
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2203
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:1752
agora::rtc::VideoTrackInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:3029
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:3694
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:1750
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:4931
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:6021
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
Definition: AgoraBase.h:4274
agora::util::IContainer
Definition: AgoraBase.h:182
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:4411
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1076
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:4407
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:5858
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:3735
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:1936
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:4296
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:3639
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:145
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1748
agora::rtc::AudioTrackConfig
Definition: AgoraBase.h:4484
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:5958
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:3731
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:3752
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:1976
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:3446
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:3719
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:5479
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1619
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:4409
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:4833
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:5961
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1481
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3001
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:3783
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1204
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:4388
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1497
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:4276
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2218
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:3614
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2241
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2141
agora::rtc::CodecCapLevels
Definition: AgoraBase.h:1738
agora::SpatialAudioParams
Definition: AgoraBase.h:6017
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:4367
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:4333
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1762
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:3912
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:3727
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2208
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:4241
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:5278
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:1848
agora::rtc::WlAccStats::e2eDelayPercent
unsigned short e2eDelayPercent
Definition: AgoraBase.h:4088
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_STRENGTH
@ VIDEO_DENOISER_LEVEL_STRENGTH
Definition: AgoraBase.h:4339
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:3473
agora::rtc::DeviceInfo
Definition: AgoraBase.h:3116
agora::base::IEngineBase
Definition: AgoraBase.h:5983
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1266
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:4961
agora::util::IIterator
Definition: AgoraBase.h:173
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:5656
agora::rtc::VideoRenderingTracingInfo
Definition: AgoraBase.h:5835
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:5939
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:4318
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1450
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1601
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2183
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:5964
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2330
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:3548
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:4158
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3272
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:4956
agora::rtc::SegmentationProperty
Definition: AgoraBase.h:4444
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:5260