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 commons {
87 namespace cjson {
88 class JsonWrapper;
89 } // namespace cjson
90 } // namespace commons
91 
92 typedef commons::cjson::JsonWrapper any_document_t;
93 
94 namespace util {
95 
96 template <class T>
97 class AutoPtr {
98  protected:
99  typedef T value_type;
100  typedef T* pointer_type;
101 
102  public:
103  explicit AutoPtr(pointer_type p = NULL) : ptr_(p) {}
104 
105  ~AutoPtr() {
106  if (ptr_) {
107  ptr_->release();
108  ptr_ = NULL;
109  }
110  }
111 
112  operator bool() const { return (ptr_ != NULL); }
113 
114  value_type& operator*() const { return *get(); }
115 
116  pointer_type operator->() const { return get(); }
117 
118  pointer_type get() const { return ptr_; }
119 
120  pointer_type release() {
121  pointer_type ret = ptr_;
122  ptr_ = 0;
123  return ret;
124  }
125 
126  void reset(pointer_type ptr = NULL) {
127  if (ptr != ptr_ && ptr_) {
128  ptr_->release();
129  }
130 
131  ptr_ = ptr;
132  }
133 
134  template <class C1, class C2>
135  bool queryInterface(C1* c, C2 iid) {
136  pointer_type p = NULL;
137  if (c && !c->queryInterface(iid, reinterpret_cast<void**>(&p))) {
138  reset(p);
139  }
140 
141  return (p != NULL);
142  }
143 
144  private:
145  AutoPtr(const AutoPtr&);
146  AutoPtr& operator=(const AutoPtr&);
147 
148  private:
149  pointer_type ptr_;
150 };
151 
152 template <class T>
153 class CopyableAutoPtr : public AutoPtr<T> {
154  typedef typename AutoPtr<T>::pointer_type pointer_type;
155 
156  public:
157  explicit CopyableAutoPtr(pointer_type p = 0) : AutoPtr<T>(p) {}
158  explicit CopyableAutoPtr(const CopyableAutoPtr& rhs) { this->reset(rhs.clone()); }
159  CopyableAutoPtr& operator=(const CopyableAutoPtr& rhs) {
160  if (this != &rhs) this->reset(rhs.clone());
161  return *this;
162  }
163  pointer_type clone() const {
164  if (!this->get()) return NULL;
165  return this->get()->clone();
166  }
167 };
168 
169 class IString {
170  public:
171  virtual bool empty() const = 0;
172  virtual const char* c_str() = 0;
173  virtual const char* data() = 0;
174  virtual size_t length() = 0;
175  virtual IString* clone() = 0;
176  virtual void release() = 0;
177  virtual ~IString() {}
178 };
180 
181 class IIterator {
182  public:
183  virtual void* current() = 0;
184  virtual const void* const_current() const = 0;
185  virtual bool next() = 0;
186  virtual void release() = 0;
187  virtual ~IIterator() {}
188 };
189 
190 class IContainer {
191  public:
192  virtual IIterator* begin() = 0;
193  virtual size_t size() const = 0;
194  virtual void release() = 0;
195  virtual ~IContainer() {}
196 };
197 
198 template <class T>
200  IIterator* p;
201 
202  public:
203  typedef T value_type;
204  typedef value_type& reference;
205  typedef const value_type& const_reference;
206  typedef value_type* pointer;
207  typedef const value_type* const_pointer;
208  explicit AOutputIterator(IIterator* it = NULL) : p(it) {}
209  ~AOutputIterator() {
210  if (p) p->release();
211  }
212  AOutputIterator(const AOutputIterator& rhs) : p(rhs.p) {}
213  AOutputIterator& operator++() {
214  p->next();
215  return *this;
216  }
217  bool operator==(const AOutputIterator& rhs) const {
218  if (p && rhs.p)
219  return p->current() == rhs.p->current();
220  else
221  return valid() == rhs.valid();
222  }
223  bool operator!=(const AOutputIterator& rhs) const { return !this->operator==(rhs); }
224  reference operator*() { return *reinterpret_cast<pointer>(p->current()); }
225  const_reference operator*() const { return *reinterpret_cast<const_pointer>(p->const_current()); }
226  bool valid() const { return p && p->current() != NULL; }
227 };
228 
229 template <class T>
230 class AList {
231  IContainer* container;
232  bool owner;
233 
234  public:
235  typedef T value_type;
236  typedef value_type& reference;
237  typedef const value_type& const_reference;
238  typedef value_type* pointer;
239  typedef const value_type* const_pointer;
240  typedef size_t size_type;
243 
244  public:
245  AList() : container(NULL), owner(false) {}
246  AList(IContainer* c, bool take_ownership) : container(c), owner(take_ownership) {}
247  ~AList() { reset(); }
248  void reset(IContainer* c = NULL, bool take_ownership = false) {
249  if (owner && container) container->release();
250  container = c;
251  owner = take_ownership;
252  }
253  iterator begin() { return container ? iterator(container->begin()) : iterator(NULL); }
254  iterator end() { return iterator(NULL); }
255  size_type size() const { return container ? container->size() : 0; }
256  bool empty() const { return size() == 0; }
257 };
258 
259 } // namespace util
260 
264 enum CHANNEL_PROFILE_TYPE {
270  CHANNEL_PROFILE_COMMUNICATION = 0,
276  CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
281  CHANNEL_PROFILE_GAME __deprecated = 2,
287  CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
288 
293  CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
294 };
295 
299 enum WARN_CODE_TYPE {
304  WARN_INVALID_VIEW = 8,
309  WARN_INIT_VIDEO = 16,
314  WARN_PENDING = 20,
319  WARN_NO_AVAILABLE_CHANNEL = 103,
325  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
330  WARN_LOOKUP_CHANNEL_REJECTED = 105,
336  WARN_OPEN_CHANNEL_TIMEOUT = 106,
341  WARN_OPEN_CHANNEL_REJECTED = 107,
342 
343  // sdk: 100~1000
347  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
351  WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
355  WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
359  WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
363  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
367  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
371  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
374  WARN_CHANNEL_SOCKET_ERROR = 134,
378  WARN_AUDIO_MIXING_OPEN_ERROR = 701,
382  WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
386  WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
390  WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
394  WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
398  WARN_ADM_RECORD_MALFUNCTION = 1021,
402  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
406  WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
414  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
418  WARN_APM_HOWLING = 1051,
422  WARN_ADM_GLITCH_STATE = 1052,
426  WARN_ADM_IMPROPER_SETTINGS = 1053,
430  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
435  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
443  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
444 };
445 
449 enum ERROR_CODE_TYPE {
453  ERR_OK = 0,
454  // 1~1000
458  ERR_FAILED = 1,
463  ERR_INVALID_ARGUMENT = 2,
470  ERR_NOT_READY = 3,
474  ERR_NOT_SUPPORTED = 4,
478  ERR_REFUSED = 5,
482  ERR_BUFFER_TOO_SMALL = 6,
486  ERR_NOT_INITIALIZED = 7,
490  ERR_INVALID_STATE = 8,
495  ERR_NO_PERMISSION = 9,
501  ERR_TIMEDOUT = 10,
506  ERR_CANCELED = 11,
512  ERR_TOO_OFTEN = 12,
518  ERR_BIND_SOCKET = 13,
523  ERR_NET_DOWN = 14,
529  ERR_JOIN_CHANNEL_REJECTED = 17,
536  ERR_LEAVE_CHANNEL_REJECTED = 18,
540  ERR_ALREADY_IN_USE = 19,
545  ERR_ABORTED = 20,
550  ERR_INIT_NET_ENGINE = 21,
555  ERR_RESOURCE_LIMITED = 22,
561  ERR_INVALID_APP_ID = 101,
566  ERR_INVALID_CHANNEL_NAME = 102,
572  ERR_NO_SERVER_RESOURCES = 103,
585  ERR_TOKEN_EXPIRED = 109,
602  ERR_INVALID_TOKEN = 110,
607  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
612  ERR_CONNECTION_LOST = 112, // only used in web sdk
617  ERR_NOT_IN_CHANNEL = 113,
622  ERR_SIZE_TOO_LARGE = 114,
627  ERR_BITRATE_LIMIT = 115,
632  ERR_TOO_MANY_DATA_STREAMS = 116,
636  ERR_STREAM_MESSAGE_TIMEOUT = 117,
640  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
645  ERR_DECRYPTION_FAILED = 120,
649  ERR_INVALID_USER_ID = 121,
653  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
659  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
660 
664  ERR_LICENSE_CREDENTIAL_INVALID = 131,
665 
669  ERR_INVALID_USER_ACCOUNT = 134,
670 
676  ERR_MODULE_NOT_FOUND = 157,
677 
678  // Licensing, keep the license error code same as the main version
679  ERR_CERT_RAW = 157,
680  ERR_CERT_JSON_PART = 158,
681  ERR_CERT_JSON_INVAL = 159,
682  ERR_CERT_JSON_NOMEM = 160,
683  ERR_CERT_CUSTOM = 161,
684  ERR_CERT_CREDENTIAL = 162,
685  ERR_CERT_SIGN = 163,
686  ERR_CERT_FAIL = 164,
687  ERR_CERT_BUF = 165,
688  ERR_CERT_NULL = 166,
689  ERR_CERT_DUEDATE = 167,
690  ERR_CERT_REQUEST = 168,
691 
692  // PcmSend Error num
693  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
694  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
695 
697  // signaling: 400~600
698  ERR_LOGIN_ALREADY_LOGIN = 428,
699 
701  // 1001~2000
705  ERR_LOAD_MEDIA_ENGINE = 1001,
711  ERR_ADM_GENERAL_ERROR = 1005,
716  ERR_ADM_INIT_PLAYOUT = 1008,
720  ERR_ADM_START_PLAYOUT = 1009,
724  ERR_ADM_STOP_PLAYOUT = 1010,
729  ERR_ADM_INIT_RECORDING = 1011,
733  ERR_ADM_START_RECORDING = 1012,
737  ERR_ADM_STOP_RECORDING = 1013,
741  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
742 };
743 
744 enum LICENSE_ERROR_TYPE {
748  LICENSE_ERR_INVALID = 1,
752  LICENSE_ERR_EXPIRE = 2,
756  LICENSE_ERR_MINUTES_EXCEED = 3,
760  LICENSE_ERR_LIMITED_PERIOD = 4,
764  LICENSE_ERR_DIFF_DEVICES = 5,
768  LICENSE_ERR_INTERNAL = 99,
769 };
770 
774 enum AUDIO_SESSION_OPERATION_RESTRICTION {
778  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
782  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
786  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
791  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
796  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
797 };
798 
799 typedef const char* user_id_t;
800 typedef void* view_t;
801 
805 struct UserInfo {
815  bool hasAudio;
821  bool hasVideo;
822 
823  UserInfo() : hasAudio(false), hasVideo(false) {}
824 };
825 
826 typedef util::AList<UserInfo> UserList;
827 
828 // Shared between Agora Service and Rtc Engine
829 namespace rtc {
830 
834 enum USER_OFFLINE_REASON_TYPE {
838  USER_OFFLINE_QUIT = 0,
844  USER_OFFLINE_DROPPED = 1,
848  USER_OFFLINE_BECOME_AUDIENCE = 2,
849 };
850 
851 enum INTERFACE_ID_TYPE {
852  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
853  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
854  AGORA_IID_PARAMETER_ENGINE = 3,
855  AGORA_IID_MEDIA_ENGINE = 4,
856  AGORA_IID_AUDIO_ENGINE = 5,
857  AGORA_IID_VIDEO_ENGINE = 6,
858  AGORA_IID_RTC_CONNECTION = 7,
859  AGORA_IID_SIGNALING_ENGINE = 8,
860  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
861  AGORA_IID_CLOUD_SPATIAL_AUDIO = 10,
862  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
863  AGORA_IID_MEDIA_RECORDER = 12,
864  AGORA_IID_STATE_SYNC = 13,
865  AGORA_IID_METACHAT_SERVICE = 14,
866  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
867 };
868 
872 enum QUALITY_TYPE {
877  QUALITY_UNKNOWN __deprecated = 0,
881  QUALITY_EXCELLENT = 1,
886  QUALITY_GOOD = 2,
890  QUALITY_POOR = 3,
894  QUALITY_BAD = 4,
898  QUALITY_VBAD = 5,
902  QUALITY_DOWN = 6,
906  QUALITY_UNSUPPORTED = 7,
910  QUALITY_DETECTING = 8,
911 };
912 
916 enum FIT_MODE_TYPE {
921  MODE_COVER = 1,
922 
928  MODE_CONTAIN = 2,
929 };
930 
934 enum VIDEO_ORIENTATION {
938  VIDEO_ORIENTATION_0 = 0,
942  VIDEO_ORIENTATION_90 = 90,
946  VIDEO_ORIENTATION_180 = 180,
950  VIDEO_ORIENTATION_270 = 270
951 };
952 
956 enum FRAME_RATE {
960  FRAME_RATE_FPS_1 = 1,
964  FRAME_RATE_FPS_7 = 7,
968  FRAME_RATE_FPS_10 = 10,
972  FRAME_RATE_FPS_15 = 15,
976  FRAME_RATE_FPS_24 = 24,
980  FRAME_RATE_FPS_30 = 30,
984  FRAME_RATE_FPS_60 = 60,
985 };
986 
987 enum FRAME_WIDTH {
988  FRAME_WIDTH_640 = 640,
989 };
990 
991 enum FRAME_HEIGHT {
992  FRAME_HEIGHT_360 = 360,
993 };
994 
995 
999 enum VIDEO_FRAME_TYPE {
1001  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1003  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1005  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1007  VIDEO_FRAME_TYPE_B_FRAME = 5,
1009  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1011  VIDEO_FRAME_TYPE_UNKNOW
1012 };
1013 
1017 enum ORIENTATION_MODE {
1025  ORIENTATION_MODE_ADAPTIVE = 0,
1033  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1041  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1042 };
1043 
1047 enum DEGRADATION_PREFERENCE {
1051  MAINTAIN_QUALITY = 0,
1055  MAINTAIN_FRAMERATE = 1,
1059  MAINTAIN_BALANCED = 2,
1063  MAINTAIN_RESOLUTION = 3,
1067  DISABLED = 100,
1068 };
1069 
1077  int width;
1081  int height;
1082  VideoDimensions() : width(640), height(480) {}
1083  VideoDimensions(int w, int h) : width(w), height(h) {}
1084  bool operator==(const VideoDimensions& rhs) const {
1085  return width == rhs.width && height == rhs.height;
1086  }
1087 };
1088 
1098 const int STANDARD_BITRATE = 0;
1099 
1107 const int COMPATIBLE_BITRATE = -1;
1108 
1112 const int DEFAULT_MIN_BITRATE = -1;
1113 
1117 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1118 
1122 enum VIDEO_CODEC_TYPE {
1123  VIDEO_CODEC_NONE = 0,
1127  VIDEO_CODEC_VP8 = 1,
1131  VIDEO_CODEC_H264 = 2,
1135  VIDEO_CODEC_H265 = 3,
1139  VIDEO_CODEC_GENERIC = 6,
1143  VIDEO_CODEC_GENERIC_H264 = 7,
1147  VIDEO_CODEC_AV1 = 12,
1151  VIDEO_CODEC_VP9 = 13,
1155  VIDEO_CODEC_GENERIC_JPEG = 20,
1156 };
1157 
1161 enum TCcMode {
1165  CC_ENABLED,
1169  CC_DISABLED,
1170 };
1171 
1179  TCcMode ccMode;
1183  VIDEO_CODEC_TYPE codecType;
1184 
1242 
1243  SenderOptions()
1244  : ccMode(CC_ENABLED),
1245  codecType(VIDEO_CODEC_H264),
1246  targetBitrate(6500) {}
1247 };
1248 
1252 enum AUDIO_CODEC_TYPE {
1256  AUDIO_CODEC_OPUS = 1,
1257  // kIsac = 2,
1261  AUDIO_CODEC_PCMA = 3,
1265  AUDIO_CODEC_PCMU = 4,
1269  AUDIO_CODEC_G722 = 5,
1270  // kIlbc = 6,
1272  // AUDIO_CODEC_AAC = 7,
1276  AUDIO_CODEC_AACLC = 8,
1280  AUDIO_CODEC_HEAAC = 9,
1284  AUDIO_CODEC_JC1 = 10,
1285  AUDIO_CODEC_HEAAC2 = 11,
1289  AUDIO_CODEC_LPCNET = 12,
1290 };
1291 
1295 enum AUDIO_ENCODING_TYPE {
1299  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1303  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1307  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1311  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1315  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1319  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1323  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1324 
1328  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1332  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1336  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1340  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1341 };
1342 
1346 enum WATERMARK_FIT_MODE {
1351  FIT_MODE_COVER_POSITION,
1356  FIT_MODE_USE_IMAGE_RATIO
1357 };
1358 
1364  : speech(true),
1365  sendEvenIfEmpty(true) {}
1366 
1372  bool speech;
1379 };
1380 
1386  : codec(AUDIO_CODEC_AACLC),
1387  sampleRateHz(0),
1388  samplesPerChannel(0),
1389  numberOfChannels(0),
1390  captureTimeMs(0) {}
1391 
1393  : codec(rhs.codec),
1402  AUDIO_CODEC_TYPE codec;
1421 
1425  int64_t captureTimeMs;
1426 };
1431  AudioPcmDataInfo() : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1432 
1435  channelNum(rhs.channelNum),
1436  samplesOut(rhs.samplesOut),
1438  ntpTimeMs(rhs.ntpTimeMs) {}
1439 
1444 
1445  int16_t channelNum;
1446 
1447  // Output
1451  size_t samplesOut;
1455  int64_t elapsedTimeMs;
1459  int64_t ntpTimeMs;
1460 };
1464 enum H264PacketizeMode {
1468  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1472  SingleNalUnit, // Mode 0 - only single NALU allowed
1473 };
1474 
1478 enum VIDEO_STREAM_TYPE {
1482  VIDEO_STREAM_HIGH = 0,
1486  VIDEO_STREAM_LOW = 1,
1487 };
1488 
1503 
1505 };
1506 
1512  : codecType(VIDEO_CODEC_H264),
1513  width(0),
1514  height(0),
1515  framesPerSecond(0),
1516  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1517  rotation(VIDEO_ORIENTATION_0),
1518  trackId(0),
1519  captureTimeMs(0),
1520  decodeTimeMs(0),
1521  uid(0),
1522  streamType(VIDEO_STREAM_HIGH) {}
1523 
1525  : codecType(rhs.codecType),
1526  width(rhs.width),
1527  height(rhs.height),
1529  frameType(rhs.frameType),
1530  rotation(rhs.rotation),
1531  trackId(rhs.trackId),
1534  uid(rhs.uid),
1535  streamType(rhs.streamType) {}
1536 
1537  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1538  if (this == &rhs) return *this;
1539  codecType = rhs.codecType;
1540  width = rhs.width;
1541  height = rhs.height;
1543  frameType = rhs.frameType;
1544  rotation = rhs.rotation;
1545  trackId = rhs.trackId;
1547  decodeTimeMs = rhs.decodeTimeMs;
1548  uid = rhs.uid;
1549  streamType = rhs.streamType;
1550  return *this;
1551  }
1555  VIDEO_CODEC_TYPE codecType;
1559  int width;
1563  int height;
1574  VIDEO_FRAME_TYPE frameType;
1578  VIDEO_ORIENTATION rotation;
1582  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1583  // and additional payload for later implementation.
1587  int64_t captureTimeMs;
1591  int64_t decodeTimeMs;
1595  uid_t uid;
1599  VIDEO_STREAM_TYPE streamType;
1600 };
1601 
1605 enum VIDEO_MIRROR_MODE_TYPE {
1609  VIDEO_MIRROR_MODE_AUTO = 0,
1613  VIDEO_MIRROR_MODE_ENABLED = 1,
1617  VIDEO_MIRROR_MODE_DISABLED = 2,
1618 };
1619 
1620 
1622 enum CODEC_CAP_MASK {
1624  CODEC_CAP_MASK_NONE = 0,
1625 
1627  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1628 
1630  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1631 
1633  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1634 
1636  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1637 };
1638 
1642  VIDEO_CODEC_TYPE codec_type;
1645 };
1646 
1654  VIDEO_CODEC_TYPE codecType;
1717  int bitrate;
1718 
1738  ORIENTATION_MODE orientationMode;
1743  DEGRADATION_PREFERENCE degradationPreference;
1744 
1748  VIDEO_MIRROR_MODE_TYPE mirrorMode;
1749 
1750  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1751  : codecType(VIDEO_CODEC_H264),
1752  dimensions(d),
1753  frameRate(f),
1754  bitrate(b),
1755  minBitrate(DEFAULT_MIN_BITRATE),
1756  orientationMode(m),
1757  degradationPreference(MAINTAIN_QUALITY),
1758  mirrorMode(mirror) {}
1759  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1760  : codecType(VIDEO_CODEC_H264),
1761  dimensions(width, height),
1762  frameRate(f),
1763  bitrate(b),
1764  minBitrate(DEFAULT_MIN_BITRATE),
1765  orientationMode(m),
1766  degradationPreference(MAINTAIN_QUALITY),
1767  mirrorMode(mirror) {}
1768  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
1769  : codecType(config.codecType),
1770  dimensions(config.dimensions),
1771  frameRate(config.frameRate),
1772  bitrate(config.bitrate),
1773  minBitrate(config.minBitrate),
1776  mirrorMode(config.mirrorMode) {}
1777  VideoEncoderConfiguration()
1778  : codecType(VIDEO_CODEC_H264),
1779  dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360),
1780  frameRate(FRAME_RATE_FPS_15),
1781  bitrate(STANDARD_BITRATE),
1782  minBitrate(DEFAULT_MIN_BITRATE),
1783  orientationMode(ORIENTATION_MODE_ADAPTIVE),
1784  degradationPreference(MAINTAIN_QUALITY),
1785  mirrorMode(VIDEO_MIRROR_MODE_DISABLED) {}
1786 
1787  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
1788  if (this == &rhs) return *this;
1789  codecType = rhs.codecType;
1790  dimensions = rhs.dimensions;
1791  frameRate = rhs.frameRate;
1792  bitrate = rhs.bitrate;
1793  minBitrate = rhs.minBitrate;
1794  orientationMode = rhs.orientationMode;
1795  degradationPreference = rhs.degradationPreference;
1796  mirrorMode = rhs.mirrorMode;
1797  return *this;
1798  }
1799 };
1800 
1809  bool ordered;
1810 };
1811 
1815 enum SIMULCAST_STREAM_MODE {
1816  /*
1817  * disable simulcast stream until receive request for enable simulcast stream by other broadcaster
1818  */
1819  AUTO_SIMULCAST_STREAM = -1,
1820  /*
1821  * disable simulcast stream
1822  */
1823  DISABLE_SIMULCAST_STREAM = 0,
1824  /*
1825  * always enable simulcast stream
1826  */
1827  ENABLE_SIMULCAST_STREAM = 1,
1828 };
1829 
1846  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
1847  bool operator==(const SimulcastStreamConfig& rhs) const {
1848  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
1849  }
1850 };
1851 
1855 struct Rectangle {
1859  int x;
1863  int y;
1867  int width;
1871  int height;
1872 
1873  Rectangle() : x(0), y(0), width(0), height(0) {}
1874  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
1875 };
1876 
1882  float xRatio;
1886  float yRatio;
1890  float widthRatio;
1891 
1892  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
1893  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
1894 };
1895 
1920  WATERMARK_FIT_MODE mode;
1921 
1923  : visibleInPreview(true),
1924  positionInLandscapeMode(0, 0, 0, 0),
1925  positionInPortraitMode(0, 0, 0, 0),
1926  mode(FIT_MODE_COVER_POSITION) {}
1927 };
1928 
1932 struct RtcStats {
1936  unsigned int duration;
1940  unsigned int txBytes;
1944  unsigned int rxBytes;
1948  unsigned int txAudioBytes;
1952  unsigned int txVideoBytes;
1956  unsigned int rxAudioBytes;
1960  unsigned int rxVideoBytes;
1964  unsigned short txKBitRate;
1968  unsigned short rxKBitRate;
1972  unsigned short rxAudioKBitRate;
1976  unsigned short txAudioKBitRate;
1980  unsigned short rxVideoKBitRate;
1984  unsigned short txVideoKBitRate;
1988  unsigned short lastmileDelay;
1992  unsigned int userCount;
1996  double cpuAppUsage;
2075  RtcStats()
2076  : duration(0),
2077  txBytes(0),
2078  rxBytes(0),
2079  txAudioBytes(0),
2080  txVideoBytes(0),
2081  rxAudioBytes(0),
2082  rxVideoBytes(0),
2083  txKBitRate(0),
2084  rxKBitRate(0),
2085  rxAudioKBitRate(0),
2086  txAudioKBitRate(0),
2087  rxVideoKBitRate(0),
2088  txVideoKBitRate(0),
2089  lastmileDelay(0),
2090  userCount(0),
2091  cpuAppUsage(0.0),
2092  cpuTotalUsage(0.0),
2093  gatewayRtt(0),
2094  memoryAppUsageRatio(0.0),
2095  memoryTotalUsageRatio(0.0),
2097  connectTimeMs(0),
2107  txPacketLossRate(0),
2108  rxPacketLossRate(0) {}
2109 };
2110 
2114 enum VIDEO_SOURCE_TYPE {
2117  VIDEO_SOURCE_CAMERA_PRIMARY = 0,
2118  VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
2121  VIDEO_SOURCE_CAMERA_SECONDARY = 1,
2124  VIDEO_SOURCE_SCREEN_PRIMARY = 2,
2125  VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
2128  VIDEO_SOURCE_SCREEN_SECONDARY = 3,
2131  VIDEO_SOURCE_CUSTOM = 4,
2134  VIDEO_SOURCE_MEDIA_PLAYER = 5,
2137  VIDEO_SOURCE_RTC_IMAGE_PNG = 6,
2140  VIDEO_SOURCE_RTC_IMAGE_JPEG = 7,
2143  VIDEO_SOURCE_RTC_IMAGE_GIF = 8,
2146  VIDEO_SOURCE_REMOTE = 9,
2149  VIDEO_SOURCE_TRANSCODED = 10,
2150 
2151  VIDEO_SOURCE_UNKNOWN = 100
2152 };
2153 
2157 enum CLIENT_ROLE_TYPE {
2161  CLIENT_ROLE_BROADCASTER = 1,
2165  CLIENT_ROLE_AUDIENCE = 2,
2166 };
2167 
2170 enum QUALITY_ADAPT_INDICATION {
2172  ADAPT_NONE = 0,
2174  ADAPT_UP_BANDWIDTH = 1,
2176  ADAPT_DOWN_BANDWIDTH = 2,
2177 };
2178 
2180 enum AUDIENCE_LATENCY_LEVEL_TYPE
2181 {
2183  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2185  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2186 };
2187 
2191 {
2195  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2196 
2198  : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2199 };
2200 
2204 enum EXPERIENCE_QUALITY_TYPE {
2206  EXPERIENCE_QUALITY_GOOD = 0,
2208  EXPERIENCE_QUALITY_BAD = 1,
2209 };
2210 
2215 enum EXPERIENCE_POOR_REASON {
2218  EXPERIENCE_REASON_NONE = 0,
2221  REMOTE_NETWORK_QUALITY_POOR = 1,
2224  LOCAL_NETWORK_QUALITY_POOR = 2,
2227  WIRELESS_SIGNAL_POOR = 4,
2231  WIFI_BLUETOOTH_COEXIST = 8,
2232 };
2233 
2239 {
2243  uid_t uid;
2247  int quality;
2319 
2320  RemoteAudioStats() :
2321  uid(0),
2322  quality(0),
2324  jitterBufferDelay(0),
2325  audioLossRate(0),
2326  numChannels(0),
2327  receivedSampleRate(0),
2328  receivedBitrate(0),
2329  totalFrozenTime(0),
2330  frozenRate(0),
2331  mosValue(0),
2332  totalActiveTime(0),
2333  publishDuration(0),
2334  qoeQuality(0),
2335  qualityChangedReason(0) {}
2336 };
2337 
2341 enum AUDIO_PROFILE_TYPE {
2349  AUDIO_PROFILE_DEFAULT = 0,
2353  AUDIO_PROFILE_SPEECH_STANDARD = 1,
2357  AUDIO_PROFILE_MUSIC_STANDARD = 2,
2362  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2366  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2370  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2374  AUDIO_PROFILE_IOT = 6,
2375  AUDIO_PROFILE_NUM = 7
2376 };
2377 
2381 enum AUDIO_SCENARIO_TYPE {
2385  AUDIO_SCENARIO_DEFAULT = 0,
2391  AUDIO_SCENARIO_GAME_STREAMING = 3,
2397  AUDIO_SCENARIO_CHATROOM = 5,
2401  AUDIO_SCENARIO_CHORUS = 7,
2405  AUDIO_SCENARIO_MEETING = 8,
2409  AUDIO_SCENARIO_NUM = 9,
2410 };
2411 
2415 struct VideoFormat {
2416  OPTIONAL_ENUM_SIZE_T {
2418  kMaxWidthInPixels = 3840,
2420  kMaxHeightInPixels = 2160,
2422  kMaxFps = 60,
2423  };
2424 
2428  int width; // Number of pixels.
2432  int height; // Number of pixels.
2436  int fps;
2437  VideoFormat() : width(FRAME_WIDTH_640), height(FRAME_HEIGHT_360), fps(FRAME_RATE_FPS_15) {}
2438  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
2439 
2440  bool operator<(const VideoFormat& fmt) const {
2441  if (height != fmt.height) {
2442  return height < fmt.height;
2443  } else if (width != fmt.width) {
2444  return width < fmt.width;
2445  } else {
2446  return fps < fmt.fps;
2447  }
2448  }
2449  bool operator==(const VideoFormat& fmt) const {
2450  return width == fmt.width && height == fmt.height && fps == fmt.fps;
2451  }
2452  bool operator!=(const VideoFormat& fmt) const {
2453  return !operator==(fmt);
2454  }
2455 };
2456 
2460 enum VIDEO_CONTENT_HINT {
2464  CONTENT_HINT_NONE,
2471  CONTENT_HINT_MOTION,
2477  CONTENT_HINT_DETAILS
2478 };
2479 
2480 enum SCREEN_SCENARIO_TYPE {
2481  SCREEN_SCENARIO_DOCUMENT = 1,
2482  SCREEN_SCENARIO_GAMING = 2,
2483  SCREEN_SCENARIO_VIDEO = 3,
2484  SCREEN_SCENARIO_RDC = 4,
2485 };
2486 
2490 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2494  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2497  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2500  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2503  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2504 };
2505 
2509 enum LOCAL_AUDIO_STREAM_STATE {
2513  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2517  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2521  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2525  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2526 };
2527 
2531 enum LOCAL_AUDIO_STREAM_ERROR {
2535  LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2539  LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2543  LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2547  LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2552  LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2556  LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5,
2559  LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE = 6,
2562  LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE = 7,
2566  LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED = 8,
2569  LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID = 9,
2572  LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID = 10,
2573 };
2574 
2577 enum LOCAL_VIDEO_STREAM_STATE {
2581  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2585  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2589  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2593  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2594 };
2595 
2599 enum LOCAL_VIDEO_STREAM_ERROR {
2601  LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2603  LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2605  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2607  LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2609  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2611  LOCAL_VIDEO_STREAM_ERROR_CODEC_NOT_SUPPORT = 5,
2613  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6,
2615  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2617  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND = 8,
2619  LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED = 9,
2621  LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID = 10,
2623  LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE = 101,
2625  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2627  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
2629  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
2631  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
2633  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_FAILURE = 21,
2635  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_NO_PERMISSION = 22,
2636 };
2637 
2641 enum REMOTE_AUDIO_STATE
2642 {
2649  REMOTE_AUDIO_STATE_STOPPED = 0, // Default state, audio is started or remote user disabled/muted audio stream
2653  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
2660  REMOTE_AUDIO_STATE_DECODING = 2, // The first remote audio frame has been decoded or fronzen state ends
2665  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
2670  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
2671 };
2672 
2676 enum REMOTE_AUDIO_STATE_REASON
2677 {
2681  REMOTE_AUDIO_REASON_INTERNAL = 0,
2685  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2689  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2694  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2699  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2704  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2709  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2713  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2714 };
2715 
2717 enum REMOTE_VIDEO_STATE {
2724  REMOTE_VIDEO_STATE_STOPPED = 0,
2727  REMOTE_VIDEO_STATE_STARTING = 1,
2734  REMOTE_VIDEO_STATE_DECODING = 2,
2738  REMOTE_VIDEO_STATE_FROZEN = 3,
2742  REMOTE_VIDEO_STATE_FAILED = 4,
2743 };
2745 enum REMOTE_VIDEO_STATE_REASON {
2749  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2750 
2754  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2755 
2759  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2760 
2764  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2765 
2769  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2770 
2774  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2775 
2779  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2780 
2784  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2785 
2789  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2790 
2794  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
2795 
2799  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
2803  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
2806  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
2807 
2810  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
2811 
2812 };
2813 
2817 enum REMOTE_USER_STATE {
2821  USER_STATE_MUTE_AUDIO = (1 << 0),
2825  USER_STATE_MUTE_VIDEO = (1 << 1),
2829  USER_STATE_ENABLE_VIDEO = (1 << 4),
2833  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
2834 
2835 };
2836 
2842  VideoTrackInfo()
2843  : isLocal(false), ownerUid(0), trackId(0), channelId(OPTIONAL_NULLPTR)
2844  , streamType(VIDEO_STREAM_HIGH), codecType(VIDEO_CODEC_H264)
2845  , encodedFrameOnly(false), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY)
2846  , observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
2852  bool isLocal;
2856  uid_t ownerUid;
2857 
2861  track_id_t trackId;
2865  const char* channelId;
2869  VIDEO_STREAM_TYPE streamType;
2873  VIDEO_CODEC_TYPE codecType;
2883  VIDEO_SOURCE_TYPE sourceType;
2888 };
2889 
2893 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
2897  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
2901  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
2905  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
2909  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
2913  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
2914 };
2915 
2923  uid_t uid;
2924 
2928  unsigned int volume; // [0,255]
2929 
2930  /*
2931  * The activity status of remote users
2932  */
2933  unsigned int vad;
2934 
2938  double voicePitch;
2939 
2940  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
2941 };
2942 
2946 struct DeviceInfo {
2947  /*
2948  * Whether the device support low latency audio. Not support by default
2949  */
2950  bool isLowLatencyAudioSupported;
2951 
2952  DeviceInfo() : isLowLatencyAudioSupported(false) {}
2953 };
2954 
2959  public:
2960  virtual ~IPacketObserver() {}
2964  struct Packet {
2968  const unsigned char* buffer;
2972  unsigned int size;
2973 
2974  Packet() : buffer(NULL), size(0) {}
2975  };
2983  virtual bool onSendAudioPacket(Packet& packet) = 0;
2991  virtual bool onSendVideoPacket(Packet& packet) = 0;
2999  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3007  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3008 };
3009 
3013 enum AUDIO_SAMPLE_RATE_TYPE {
3017  AUDIO_SAMPLE_RATE_32000 = 32000,
3021  AUDIO_SAMPLE_RATE_44100 = 44100,
3025  AUDIO_SAMPLE_RATE_48000 = 48000,
3026 };
3027 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3031  VIDEO_CODEC_H264_FOR_STREAM = 1,
3035  VIDEO_CODEC_H265_FOR_STREAM = 2,
3036 };
3037 
3041 enum VIDEO_CODEC_PROFILE_TYPE {
3045  VIDEO_CODEC_PROFILE_BASELINE = 66,
3049  VIDEO_CODEC_PROFILE_MAIN = 77,
3053  VIDEO_CODEC_PROFILE_HIGH = 100,
3054 };
3055 
3056 
3060 enum AUDIO_CODEC_PROFILE_TYPE {
3064  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3068  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3072  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3073 };
3074 
3080 {
3100  unsigned short txPacketLossRate;
3105 };
3106 
3107 
3111 enum RTMP_STREAM_PUBLISH_STATE {
3114  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3117  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3120  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3126  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3129  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3132  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3133 };
3134 
3138 enum RTMP_STREAM_PUBLISH_ERROR_TYPE {
3140  RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3142  RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3144  RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3146  RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3148  RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3150  RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3152  RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3154  RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3156  RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3158  RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3160  RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3162  RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER = 11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
3164  RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM = 13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
3166  RTMP_STREAM_PUBLISH_ERROR_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
3168  RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID = 15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
3170  RTMP_STREAM_PUBLISH_ERROR_INVALID_PRIVILEGE = 16,
3178  RTMP_STREAM_UNPUBLISH_ERROR_OK = 100,
3179 };
3180 
3182 enum RTMP_STREAMING_EVENT {
3185  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3190  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3193  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3196  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3197 };
3198 
3201 typedef struct RtcImage {
3205  const char* url;
3210  int x;
3215  int y;
3219  int width;
3223  int height;
3227  int zOrder;
3233  double alpha;
3234 
3235  RtcImage() : url(NULL), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
3236 } RtcImage;
3237 
3239  LiveStreamAdvancedFeature() : featureName(NULL), opened(false) {}
3240  LiveStreamAdvancedFeature(const char* feat_name, bool open) : featureName(feat_name), opened(open) {}
3242  // static const char* LBHQ = "lbhq";
3244  // static const char* VEO = "veo";
3245 
3250  const char* featureName;
3251 
3256  bool opened;
3257 } ;
3258 
3262 enum CONNECTION_STATE_TYPE
3263 {
3267  CONNECTION_STATE_DISCONNECTED = 1,
3271  CONNECTION_STATE_CONNECTING = 2,
3276  CONNECTION_STATE_CONNECTED = 3,
3281  CONNECTION_STATE_RECONNECTING = 4,
3285  CONNECTION_STATE_FAILED = 5,
3286 };
3287 
3295  uid_t uid;
3299  int x;
3303  int y;
3307  int width;
3311  int height;
3317  int zOrder;
3321  double alpha;
3338  TranscodingUser()
3339  : uid(0),
3340  x(0),
3341  y(0),
3342  width(0),
3343  height(0),
3344  zOrder(0),
3345  alpha(1.0),
3346  audioChannel(0) {}
3347 };
3348 
3359  int width;
3366  int height;
3377 
3384 
3392  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
3395  unsigned int backgroundColor;
3396 
3398  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
3399 
3403  unsigned int userCount;
3412 
3415  const char* metadata;
3421 
3429  unsigned int watermarkCount;
3430 
3443  unsigned int backgroundImageCount;
3444 
3447  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
3463  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
3465 
3469  LiveStreamAdvancedFeature* advancedFeatures;
3470 
3472  unsigned int advancedFeatureCount;
3474  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) {}
3475 };
3476 
3484  agora::media::MEDIA_SOURCE_TYPE sourceType;
3492  const char* imageUrl;
3500  int x;
3504  int y;
3508  int width;
3512  int height;
3518  int zOrder;
3522  double alpha;
3526  bool mirror;
3527 
3529  : sourceType(agora::media::PRIMARY_CAMERA_SOURCE),
3530  remoteUserUid(0),
3531  imageUrl(NULL),
3532  mediaPlayerId(0),
3533  x(0),
3534  y(0),
3535  width(0),
3536  height(0),
3537  zOrder(0),
3538  alpha(1.0),
3539  mirror(false) {}
3540 };
3541 
3542 
3550  unsigned int streamCount;
3563 
3565  : streamCount(0),
3566  videoInputStreams(NULL),
3568  sync_with_primary_camera(true) {}
3569 };
3570 
3571 enum VIDEO_TRANSCODER_ERROR {
3575  VT_ERR_OK = 0,
3579  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
3583  VT_ERR_INVALID_MEDIA_SOURCE_TYPE = 2,
3587  VT_ERR_INVALID_IMAGE_PATH = 3,
3591  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
3595  VT_ERR_INVALID_LAYOUT = 5,
3599  VT_ERR_INTERNAL = 20
3600 };
3601 
3630 };
3631 
3635 enum LASTMILE_PROBE_RESULT_STATE {
3639  LASTMILE_PROBE_RESULT_COMPLETE = 1,
3644  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3649  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3650 };
3651 
3660  unsigned int packetLossRate;
3664  unsigned int jitter;
3668  unsigned int availableBandwidth;
3669 
3671  jitter(0),
3672  availableBandwidth(0) {}
3673 };
3674 
3683  LASTMILE_PROBE_RESULT_STATE state;
3695  unsigned int rtt;
3696 
3698  : state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
3699  rtt(0) {}
3700 };
3701 
3705 enum CONNECTION_CHANGED_REASON_TYPE
3706 {
3710  CONNECTION_CHANGED_CONNECTING = 0,
3714  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3718  CONNECTION_CHANGED_INTERRUPTED = 2,
3722  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3726  CONNECTION_CHANGED_JOIN_FAILED = 4,
3730  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3734  CONNECTION_CHANGED_INVALID_APP_ID = 6,
3738  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3742  CONNECTION_CHANGED_INVALID_TOKEN = 8,
3746  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3750  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3754  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3758  CONNECTION_CHANGED_RENEW_TOKEN = 12,
3763  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3767  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3771  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3775  CONNECTION_CHANGED_LOST = 16,
3779  CONNECTION_CHANGED_ECHO_TEST = 17,
3783  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
3787  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
3791  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
3792 
3796  CONNECTION_CHANGED_LICENSE_VERIFY_FAILED = 21,
3797 };
3798 
3802 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
3806  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
3810  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
3814  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3,
3818  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4,
3819 };
3820 
3824 enum WLACC_MESSAGE_REASON {
3828  WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
3832  WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
3833 };
3834 
3838 enum WLACC_SUGGEST_ACTION {
3842  WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
3846  WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
3850  WLACC_SUGGEST_ACTION_CHECK_5G = 2,
3854  WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
3855 };
3856 
3860 struct WlAccStats {
3864  unsigned short e2eDelayPercent;
3868  unsigned short frozenRatioPercent;
3872  unsigned short lossRatePercent;
3873 };
3874 
3878 enum NETWORK_TYPE {
3882  NETWORK_TYPE_UNKNOWN = -1,
3886  NETWORK_TYPE_DISCONNECTED = 0,
3890  NETWORK_TYPE_LAN = 1,
3894  NETWORK_TYPE_WIFI = 2,
3898  NETWORK_TYPE_MOBILE_2G = 3,
3902  NETWORK_TYPE_MOBILE_3G = 4,
3906  NETWORK_TYPE_MOBILE_4G = 5,
3907 };
3908 
3912 enum VIDEO_VIEW_SETUP_MODE {
3916  VIDEO_VIEW_SETUP_REPLACE = 0,
3920  VIDEO_VIEW_SETUP_ADD = 1,
3924  VIDEO_VIEW_SETUP_REMOVE = 2,
3925 };
3926 
3930 struct VideoCanvas {
3934  view_t view;
3938  media::base::RENDER_MODE_TYPE renderMode;
3942  VIDEO_MIRROR_MODE_TYPE mirrorMode;
3946  uid_t uid;
3947  bool isScreenView;
3948 
3949  void* priv; // private data (underlying video engine denotes it)
3950 
3951  size_t priv_size;
3952 
3953  VIDEO_SOURCE_TYPE sourceType;
3954 
3955  Rectangle cropArea;
3956 
3957  VIDEO_VIEW_SETUP_MODE setupMode;
3958 
3959  VideoCanvas() : view(NULL), renderMode(media::base::RENDER_MODE_HIDDEN), mirrorMode(VIDEO_MIRROR_MODE_AUTO),
3960  uid(0), isScreenView(false), priv(NULL), priv_size(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
3961  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
3962  : view(v), renderMode(m), mirrorMode(mt), uid(u), isScreenView(false), priv(NULL), priv_size(0),
3963  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
3964  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
3965  : view(v), renderMode(m), mirrorMode(mt), uid(0), isScreenView(false), priv(NULL), priv_size(0),
3966  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), setupMode(VIDEO_VIEW_SETUP_REPLACE) {}
3967 };
3968 
3981  };
3982 
3986 
3989 
3993 
3997 
4001 
4002  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness, float sharpness) : lighteningContrastLevel(contrastLevel), lighteningLevel(lightening), smoothnessLevel(smoothness), rednessLevel(redness), sharpnessLevel(sharpness) {}
4003 
4005 };
4006 
4016  };
4029  };
4030 
4034 
4038 
4039  LowlightEnhanceOptions(LOW_LIGHT_ENHANCE_MODE lowlightMode, LOW_LIGHT_ENHANCE_LEVEL lowlightLevel) : mode(lowlightMode), level(lowlightLevel) {}
4040 
4042 };
4056  };
4077  };
4081 
4085 
4086  VideoDenoiserOptions(VIDEO_DENOISER_MODE denoiserMode, VIDEO_DENOISER_LEVEL denoiserLevel) : mode(denoiserMode), level(denoiserLevel) {}
4087 
4089 };
4090 
4099 
4105 
4106  ColorEnhanceOptions(float stength, float skinProtect) : strengthLevel(stength), skinProtectLevel(skinProtect) {}
4107 
4109 };
4110 
4111 
4126  };
4127 
4137  };
4138 
4142 
4151  unsigned int color;
4152 
4159  const char* source;
4160 
4163 
4165 };
4166 
4168 
4169  enum SEG_MODEL_TYPE {
4170 
4171  SEG_MODEL_AI = 1,
4172  SEG_MODEL_GREEN = 2
4173  };
4174 
4175  SEG_MODEL_TYPE modelType;
4176 
4177  float greenCapacity;
4178 
4179 
4180  SegmentationProperty() : modelType(SEG_MODEL_AI), greenCapacity(0.5){}
4181 };
4182 
4203 enum VOICE_BEAUTIFIER_PRESET {
4206  VOICE_BEAUTIFIER_OFF = 0x00000000,
4212  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4218  CHAT_BEAUTIFIER_FRESH = 0x01010200,
4224  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4238  SINGING_BEAUTIFIER = 0x01020100,
4241  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4244  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4247  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4250  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4253  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4256  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4259  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4262  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4263 
4264  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4265 };
4266 
4269 enum AUDIO_EFFECT_PRESET {
4272  AUDIO_EFFECT_OFF = 0x00000000,
4280  ROOM_ACOUSTICS_KTV = 0x02010100,
4288  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4296  ROOM_ACOUSTICS_STUDIO = 0x02010300,
4304  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
4311  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
4319  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
4327  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
4339  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
4350  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
4361  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
4372  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
4383  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
4394  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
4405  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
4414  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
4422  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
4430  STYLE_TRANSFORMATION_RNB = 0x02030100,
4438  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
4448  PITCH_CORRECTION = 0x02040100,
4449 
4453 };
4454 
4457 enum VOICE_CONVERSION_PRESET {
4460  VOICE_CONVERSION_OFF = 0x00000000,
4463  VOICE_CHANGER_NEUTRAL = 0x03010100,
4466  VOICE_CHANGER_SWEET = 0x03010200,
4469  VOICE_CHANGER_SOLID = 0x03010300,
4472  VOICE_CHANGER_BASS = 0x03010400
4473 };
4474 
4477 enum HEADPHONE_EQUALIZER_PRESET {
4480  HEADPHONE_EQUALIZER_OFF = 0x00000000,
4483  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
4486  HEADPHONE_EQUALIZER_INEAR = 0x04000002
4487 };
4488 
4507  int bitrate;
4527 
4535  unsigned int highLightColor;
4544 
4546  : dimensions(1920, 1080), frameRate(5), bitrate(STANDARD_BITRATE), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
4547  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
4549  ScreenCaptureParameters(int width, int height, int f, int b)
4550  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false){}
4551  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
4552  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
4553  ScreenCaptureParameters(int width, int height, int f, int b, view_t *ex, int cnt)
4555  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t *ex, int cnt)
4557 };
4558 
4562 enum AUDIO_RECORDING_QUALITY_TYPE {
4566  AUDIO_RECORDING_QUALITY_LOW = 0,
4570  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4574  AUDIO_RECORDING_QUALITY_HIGH = 2,
4578  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
4579 };
4580 
4584 enum AUDIO_FILE_RECORDING_TYPE {
4588  AUDIO_FILE_RECORDING_MIC = 1,
4592  AUDIO_FILE_RECORDING_PLAYBACK = 2,
4596  AUDIO_FILE_RECORDING_MIXED = 3,
4597 };
4598 
4602 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4606  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4610  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4614  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4615 };
4616 
4625  const char* filePath;
4631  bool encode;
4640  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
4644  AUDIO_RECORDING_QUALITY_TYPE quality;
4645 
4652 
4654  : filePath(NULL),
4655  encode(false),
4656  sampleRate(32000),
4657  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4658  quality(AUDIO_RECORDING_QUALITY_LOW),
4659  recordingChannel(1) {}
4660 
4661  AudioRecordingConfiguration(const char* file_path, int sample_rate, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
4662  : filePath(file_path),
4663  encode(false),
4664  sampleRate(sample_rate),
4665  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
4666  quality(quality_type),
4667  recordingChannel(channel) {}
4668 
4669  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
4670  : filePath(file_path),
4671  encode(enc),
4672  sampleRate(sample_rate),
4673  fileRecordingType(type),
4674  quality(quality_type),
4675  recordingChannel(channel) {}
4676 
4677  AudioRecordingConfiguration(const AudioRecordingConfiguration &rhs)
4678  : filePath(rhs.filePath),
4679  encode(rhs.encode),
4680  sampleRate(rhs.sampleRate),
4682  quality(rhs.quality),
4684 };
4685 
4694  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
4698  AUDIO_ENCODING_TYPE encodingType;
4699 
4701  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
4702  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM){}
4703 
4704 };
4705 
4707 public:
4715 virtual void OnRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
4716 
4724 virtual void OnPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
4725 
4733 virtual void OnMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
4734 
4735 virtual ~IAudioEncodedFrameObserver () {}
4736 };
4737 
4740 enum AREA_CODE {
4744  AREA_CODE_CN = 0x00000001,
4748  AREA_CODE_NA = 0x00000002,
4752  AREA_CODE_EU = 0x00000004,
4756  AREA_CODE_AS = 0x00000008,
4760  AREA_CODE_JP = 0x00000010,
4764  AREA_CODE_IN = 0x00000020,
4768  AREA_CODE_GLOB = (0xFFFFFFFF)
4769 };
4770 
4771 enum AREA_CODE_EX {
4775  AREA_CODE_OC = 0x00000040,
4779  AREA_CODE_SA = 0x00000080,
4783  AREA_CODE_AF = 0x00000100,
4787  AREA_CODE_KR = 0x00000200,
4791  AREA_CODE_HKMC = 0x00000400,
4795  AREA_CODE_US = 0x00000800,
4799  AREA_CODE_OVS = 0xFFFFFFFE
4800 };
4801 
4802 enum CHANNEL_MEDIA_RELAY_ERROR {
4805  RELAY_OK = 0,
4808  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
4813  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
4817  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
4820  RELAY_ERROR_FAILED_JOIN_SRC = 4,
4823  RELAY_ERROR_FAILED_JOIN_DEST = 5,
4826  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
4829  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
4834  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
4837  RELAY_ERROR_INTERNAL_ERROR = 9,
4840  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
4843  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
4844 };
4845 
4846 //callback event
4847 enum CHANNEL_MEDIA_RELAY_EVENT {
4851  RELAY_EVENT_NETWORK_DISCONNECTED = 0,
4854  RELAY_EVENT_NETWORK_CONNECTED = 1,
4857  RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
4860  RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
4863  RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
4866  RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
4869  RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
4872  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
4875  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
4879  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
4882  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
4885  RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
4888  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12,
4891  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13,
4894  RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14,
4897  RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15,
4898 };
4899 
4900 enum CHANNEL_MEDIA_RELAY_STATE {
4903  RELAY_STATE_IDLE = 0,
4906  RELAY_STATE_CONNECTING = 1,
4910  RELAY_STATE_RUNNING = 2,
4913  RELAY_STATE_FAILURE = 3,
4914 };
4915 
4922  const char* channelName;
4926  const char* token;
4929  uid_t uid;
4930 };
4931 
4960 
4962  : srcInfo(NULL),
4963  destInfos(NULL),
4964  destCount(0)
4965  {}
4966 };
4967 
4976 
4978 
4979  bool operator==(const UplinkNetworkInfo& rhs) const {
4981  }
4982 };
4983 
4992  const char* uid;
4996  VIDEO_STREAM_TYPE stream_type;
5000  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
5005 
5007  : uid(OPTIONAL_NULLPTR),
5008  stream_type(VIDEO_STREAM_HIGH),
5009  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
5010  expected_bitrate_bps(-1) {}
5011 
5012  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
5013  if (this == &rhs) return *this;
5014  uid = OPTIONAL_NULLPTR;
5015  stream_type = rhs.stream_type;
5018  if (rhs.uid != OPTIONAL_NULLPTR) {
5019  char* temp = new char[strlen(rhs.uid) + 1];
5020  strcpy(temp, rhs.uid);
5021  uid = temp;
5022  }
5023  return *this;
5024  }
5025 
5026  ~PeerDownlinkInfo() {
5027  if (uid) { delete [] uid; }
5028  }
5029  };
5030 
5051 
5056  peer_downlink_info(OPTIONAL_NULLPTR),
5058 
5063  peer_downlink_info(OPTIONAL_NULLPTR),
5065  if (total_received_video_count <= 0) return;
5066  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5067  for (int i = 0; i < total_received_video_count; ++i)
5069  }
5070 
5071  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
5072  if (this == &rhs) return *this;
5073  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
5074  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
5075  total_downscale_level_count = rhs.total_downscale_level_count;
5076  peer_downlink_info = OPTIONAL_NULLPTR;
5077  total_received_video_count = rhs.total_received_video_count;
5078  if (total_received_video_count > 0) {
5079  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5080  for (int i = 0; i < total_received_video_count; ++i)
5081  peer_downlink_info[i] = rhs.peer_downlink_info[i];
5082  }
5083  return *this;
5084  }
5085 
5086  ~DownlinkNetworkInfo() {
5087  if (peer_downlink_info) delete [] peer_downlink_info;
5088  }
5089 };
5090 
5093 enum ENCRYPTION_MODE {
5096  AES_128_XTS = 1,
5099  AES_128_ECB = 2,
5102  AES_256_XTS = 3,
5105  SM4_128_ECB = 4,
5108  AES_128_GCM = 5,
5111  AES_256_GCM = 6,
5114  AES_128_GCM2 = 7,
5117  AES_256_GCM2 = 8,
5120  MODE_END,
5121 };
5122 
5128  ENCRYPTION_MODE encryptionMode;
5134  const char* encryptionKey;
5135  uint8_t encryptionKdfSalt[32];
5136 
5138  : encryptionMode(AES_128_GCM2),
5139  encryptionKey(NULL)
5140  {
5141  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
5142  }
5143 
5145  const char* getEncryptionString() const {
5146  switch(encryptionMode) {
5147  case AES_128_XTS:
5148  return "aes-128-xts";
5149  case AES_128_ECB:
5150  return "aes-128-ecb";
5151  case AES_256_XTS:
5152  return "aes-256-xts";
5153  case SM4_128_ECB:
5154  return "sm4-128-ecb";
5155  case AES_128_GCM:
5156  return "aes-128-gcm";
5157  case AES_256_GCM:
5158  return "aes-256-gcm";
5159  case AES_128_GCM2:
5160  return "aes-128-gcm-2";
5161  case AES_256_GCM2:
5162  return "aes-256-gcm-2";
5163  default:
5164  return "aes-128-gcm-2";
5165  }
5166  return "aes-128-gcm-2";
5167  }
5169 };
5170 
5173 enum ENCRYPTION_ERROR_TYPE {
5174  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5175  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5176  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5177 };
5178 
5179 enum UPLOAD_ERROR_REASON
5180 {
5181  UPLOAD_SUCCESS = 0,
5182  UPLOAD_NET_ERROR = 1,
5183  UPLOAD_SERVER_ERROR = 2,
5184 };
5185 
5188 enum PERMISSION_TYPE {
5189  RECORD_AUDIO = 0,
5190  CAMERA = 1,
5191  SCREEN_CAPTURE = 2,
5192 };
5193 
5196 enum MAX_USER_ACCOUNT_LENGTH_TYPE
5197 {
5200  MAX_USER_ACCOUNT_LENGTH = 256
5201 };
5202 
5206 enum STREAM_SUBSCRIBE_STATE {
5207  SUB_STATE_IDLE = 0,
5208  SUB_STATE_NO_SUBSCRIBED = 1,
5209  SUB_STATE_SUBSCRIBING = 2,
5210  SUB_STATE_SUBSCRIBED = 3
5211 };
5212 
5216 enum STREAM_PUBLISH_STATE {
5217  PUB_STATE_IDLE = 0,
5218  PUB_STATE_NO_PUBLISHED = 1,
5219  PUB_STATE_PUBLISHING = 2,
5220  PUB_STATE_PUBLISHED = 3
5221 };
5222 
5227  view_t view;
5228  bool enableAudio;
5229  bool enableVideo;
5230  const char* token;
5231  const char* channelId;
5232 
5233  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c)
5234  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c) {}
5235 
5237  : view(OPTIONAL_NULLPTR), enableAudio(true), enableVideo(true), token(OPTIONAL_NULLPTR), channelId(OPTIONAL_NULLPTR) {}
5238 };
5239 
5243 struct UserInfo {
5247  uid_t uid;
5251  char userAccount[MAX_USER_ACCOUNT_LENGTH];
5252  UserInfo()
5253  : uid(0) {
5254  userAccount[0] = '\0';
5255  }
5256 };
5257 
5261 enum EAR_MONITORING_FILTER_TYPE {
5265  EAR_MONITORING_FILTER_NONE = (1<<0),
5269  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
5273  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
5274 };
5275 
5279 enum THREAD_PRIORITY_TYPE {
5283  LOWEST = 0,
5287  LOW = 1,
5291  NORMAL = 2,
5295  HIGH = 3,
5299  HIGHEST = 4,
5303  CRITICAL = 5,
5304 };
5305 
5306 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
5307 
5311 struct ScreenVideoParameters {
5338  VideoDimensions dimensions;
5344  int frameRate = 15;
5349  int bitrate;
5350  /*
5351  * The content hint of the screen sharing:
5352  */
5353  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
5354 
5355  ScreenVideoParameters() : dimensions(1280, 720) {}
5356 };
5357 
5361 struct ScreenAudioParameters {
5365  int sampleRate = 16000;
5369  int channels = 2;
5374  int captureSignalVolume = 100;
5375 };
5376 
5380 struct ScreenCaptureParameters2 {
5390  bool captureAudio = false;
5394  ScreenAudioParameters audioParams;
5404  bool captureVideo = true;
5408  ScreenVideoParameters videoParams;
5409 };
5410 #endif
5411 
5412 } // namespace rtc
5413 
5414 namespace base {
5415 
5417  public:
5418  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
5419  virtual ~IEngineBase() {}
5420 };
5421 
5422 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
5423  public:
5424  AParameter(IEngineBase& engine) { initialize(&engine); }
5425  AParameter(IEngineBase* engine) { initialize(engine); }
5427 
5428  private:
5429  bool initialize(IEngineBase* engine) {
5430  IAgoraParameter* p = NULL;
5431  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
5432  return p != NULL;
5433  }
5434 };
5435 
5437  public:
5438  virtual ~LicenseCallback() {}
5439  virtual void onCertificateRequired() = 0;
5440  virtual void onLicenseRequest() = 0;
5441  virtual void onLicenseValidated() = 0;
5442  virtual void onLicenseError(int result) = 0;
5443 };
5444 
5445 } // namespace base
5446 
5483 };
5484 
5485 } // namespace agora
5486 
5492 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
5493 
5499 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
5500 
5501 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
5502 
5510 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString &credential);
5511 
5525 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char *credential_buf, int credential_len,
5526  const char *certificate_buf, int certificate_len);
5527 
5535 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback *callback);
5536 
5544 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
5545 
5546 /*
5547  * Get monotonic time in ms which can be used by capture time,
5548  * typical scenario is as follows:
5549  *
5550  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5551  * | // custom audio/video base capture time, e.g. the first audio/video capture time. |
5552  * | int64_t custom_capture_time_base; |
5553  * | |
5554  * | int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
5555  * | |
5556  * | // offset is fixed once calculated in the begining. |
5557  * | const int64_t offset = agora_monotonic_time - custom_capture_time_base; |
5558  * | |
5559  * | // realtime_custom_audio/video_capture_time is the origin capture time that customer provided.|
5560  * | // actual_audio/video_capture_time is the actual capture time transfered to sdk. |
5561  * | int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
5562  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
5563  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5564  *
5565  * @return
5566  * - >= 0: Success.
5567  * - < 0: Failure.
5568  */
5569 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:3406
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:3219
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:3518
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2026
agora::rtc::UserInfo
Definition: AgoraBase.h:5243
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:3522
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1425
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:1743
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:3679
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:4690
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:4492
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:1878
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:2919
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:4130
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:3687
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1578
agora::rtc::BeautyOptions
Definition: AgoraBase.h:3971
agora::rtc::SenderOptions
Definition: AgoraBase.h:1175
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:4507
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:3988
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:1952
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:4125
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:3395
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:147
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:2938
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:3605
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:3303
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:4531
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:1968
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2012
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3100
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:2436
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:5458
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:1734
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:4543
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:4053
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4024
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:3337
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2046
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:2428
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:4518
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:4698
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1183
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1402
agora::rtc::RemoteAudioStats::totalActiveTime
int totalActiveTime
Definition: AgoraBase.h:2306
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:3387
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:4959
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:3104
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:3664
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:3992
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:4084
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:3942
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:1936
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:1845
agora::rtc::LocalTranscoderConfiguration::sync_with_primary_camera
bool sync_with_primary_camera
Definition: AgoraBase.h:3562
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1081
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:3612
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:3398
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Definition: AgoraBase.h:4051
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:3352
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:1940
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:2432
agora::rtc::Rectangle
Definition: AgoraBase.h:1855
agora::rtc::TranscodingVideoStream::sourceType
agora::media::MEDIA_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3484
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:3946
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2031
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:4625
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1510
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:4098
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:5462
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:3996
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:1960
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:3488
agora::rtc::RemoteAudioStats::networkTransportDelay
int networkTransportDelay
Definition: AgoraBase.h:2251
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1658
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1595
agora::rtc::IAudioEncodedFrameObserver::OnPlaybackAudioEncodedFrame
virtual void OnPlaybackAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1384
agora::util::AutoPtr
Definition: AgoraBase.h:97
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:3660
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:815
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:4526
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:2964
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:3463
agora::rtc::RemoteAudioStats::receivedBitrate
int receivedBitrate
Definition: AgoraBase.h:2272
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1650
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:1867
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:1717
agora::util::AList
Definition: AgoraBase.h:230
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2061
agora::rtc::VideoSubscriptionOptions
Definition: AgoraBase.h:1489
agora::rtc::TranscodingUser
Definition: AgoraBase.h:3291
agora::rtc::EchoTestConfiguration
Definition: AgoraBase.h:5226
agora::rtc::RtcImage
Definition: AgoraBase.h:3201
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:3299
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:4926
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:4631
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:3985
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:1886
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:5470
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:1833
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:3450
agora::rtc::IAudioEncodedFrameObserver::OnMixedAudioEncodedFrame
virtual void OnMixedAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:4953
agora::rtc::CodecCapInfo::codec_cap_mask
int codec_cap_mask
Definition: AgoraBase.h:1644
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:3210
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:4141
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:3227
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2195
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:2928
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:3295
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:3250
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:1863
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3092
agora::rtc::RemoteAudioStats::totalFrozenTime
int totalFrozenTime
Definition: AgoraBase.h:2279
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:3205
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:2968
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1591
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2066
agora::rtc::ColorEnhanceOptions
Definition: AgoraBase.h:4095
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:4636
agora::rtc::RemoteAudioStats::publishDuration
int publishDuration
Definition: AgoraBase.h:2310
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:809
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:1911
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:3691
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:3429
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:1859
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:3554
agora::util::IString
Definition: AgoraBase.h:169
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:5474
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
Definition: AgoraBase.h:4020
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1420
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:3546
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:3974
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:1882
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3088
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1496
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:3629
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2000
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:2972
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:3443
agora::rtc::IPacketObserver
Definition: AgoraBase.h:2958
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:3435
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:1996
agora::rtc::VideoFormat
Definition: AgoraBase.h:2415
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:3321
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:1916
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:1803
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:1948
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2021
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:3683
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:4922
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:3366
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1372
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1555
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:1984
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:1956
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1378
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:5482
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:1976
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:2923
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:3976
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:3371
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:2861
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:2879
agora::rtc::RemoteAudioStats::mosValue
int mosValue
Definition: AgoraBase.h:2301
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:3307
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:4535
agora::base::AParameter
Definition: AgoraBase.h:5422
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:4000
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:5128
agora::util::AOutputIterator
Definition: AgoraBase.h:199
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:1907
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:4706
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1559
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:2856
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:3668
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1587
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1570
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:3411
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:2873
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:3415
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:3447
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:4934
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:4162
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:5247
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:1809
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:3238
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:4151
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:3656
agora::rtc::VideoDenoiserOptions
Definition: AgoraBase.h:4048
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:1890
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4065
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1451
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1662
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:1871
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1455
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:1920
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1406
agora::rtc::RemoteAudioStats::audioLossRate
int audioLossRate
Definition: AgoraBase.h:2259
agora::UserInfo
Definition: AgoraBase.h:805
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2070
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:4112
agora::rtc::WlAccStats::frozenRatioPercent
unsigned short frozenRatioPercent
Definition: AgoraBase.h:3868
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:4037
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:3934
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:3492
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:4694
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::WlAccStats::lossRatePercent
unsigned short lossRatePercent
Definition: AgoraBase.h:3872
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:4123
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:3420
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:4918
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:821
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:4015
agora::rtc::WlAccStats
Definition: AgoraBase.h:3860
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:3938
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:5466
agora::rtc::CodecCapInfo::codec_type
VIDEO_CODEC_TYPE codec_type
Definition: AgoraBase.h:1642
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:2883
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:1964
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1416
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1599
agora::rtc::RemoteAudioStats::quality
int quality
Definition: AgoraBase.h:2247
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:5478
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:2887
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Definition: AgoraBase.h:4060
agora::rtc::CodecCapInfo
Definition: AgoraBase.h:1640
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:4502
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:4651
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2056
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:3459
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:3223
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1837
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1574
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:3618
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:1992
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:3550
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:3980
agora::base::LicenseCallback
Definition: AgoraBase.h:5436
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:5124
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:3392
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:4115
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:4497
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1077
agora::rtc::RemoteAudioStats
Definition: AgoraBase.h:2239
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:3500
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:3383
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:3480
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:4159
agora::rtc::RtcStats
Definition: AgoraBase.h:1932
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1502
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:1902
agora::rtc::LowlightEnhanceOptions
Definition: AgoraBase.h:4007
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:3317
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:3359
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1430
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:1944
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:1980
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:4080
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:1972
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3084
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:1897
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:1748
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3080
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:4512
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:3215
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1362
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2008
agora::rtc::RemoteAudioStats::qualityChangedReason
int qualityChangedReason
Definition: AgoraBase.h:2318
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2004
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:3624
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:2852
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:2865
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_FAST
@ LOW_LIGHT_ENHANCE_LEVEL_FAST
Definition: AgoraBase.h:4028
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2036
agora::rtc::VideoTrackInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:2869
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:4620
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:5454
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
Definition: AgoraBase.h:4011
agora::util::IContainer
Definition: AgoraBase.h:190
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:4136
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1073
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:4132
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:3512
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:1806
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:4033
agora::rtc::RemoteAudioStats::frozenRate
int frozenRate
Definition: AgoraBase.h:2284
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:3403
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:153
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:3508
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:3526
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:1841
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:3233
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:3496
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:5134
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1582
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:4134
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:4522
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1443
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:2841
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:3558
agora::rtc::RemoteAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:2263
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1179
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:4119
agora::rtc::RemoteAudioStats::jitterBufferDelay
int jitterBufferDelay
Definition: AgoraBase.h:2255
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1459
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:4013
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2051
agora::rtc::IAudioEncodedFrameObserver::OnRecordAudioEncodedFrame
virtual void OnRecordAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:3376
agora::rtc::RemoteAudioStats::uid
uid_t uid
Definition: AgoraBase.h:2243
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2074
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:1988
agora::SpatialAudioParams
Definition: AgoraBase.h:5450
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:4104
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:4070
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1654
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:3695
agora::rtc::RemoteAudioStats::qoeQuality
int qoeQuality
Definition: AgoraBase.h:2314
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:3504
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2041
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:3978
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:4946
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:1738
agora::rtc::WlAccStats::e2eDelayPercent
unsigned short e2eDelayPercent
Definition: AgoraBase.h:3864
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_STRENGTH
@ VIDEO_DENOISER_LEVEL_STRENGTH
Definition: AgoraBase.h:4076
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:3256
agora::rtc::DeviceInfo
Definition: AgoraBase.h:2946
agora::base::IEngineBase
Definition: AgoraBase.h:5416
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1241
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:4644
agora::util::IIterator
Definition: AgoraBase.h:181
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:5251
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:4055
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1412
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1563
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2016
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2191
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:3311
agora::rtc::RemoteAudioStats::receivedSampleRate
int receivedSampleRate
Definition: AgoraBase.h:2267
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:3930
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3096
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:4640
agora::rtc::SegmentationProperty
Definition: AgoraBase.h:4167
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:4929