Agora Java API Reference for Android
AgoraBase.h
1 //
2 // Agora Engine SDK
3 //
4 // Created by Sting Feng in 2017-11.
5 // Copyright (c) 2017 Agora.io. All rights reserved.
6 //
7 
8 // This header file is included by both high level and low level APIs,
9 #pragma once // NOLINT(build/header_guard)
10 
11 #include <stdarg.h>
12 #include <stddef.h>
13 #include <stdio.h>
14 #include <string.h>
15 #include <cassert>
16 
17 #include "IAgoraParameter.h"
18 #include "AgoraMediaBase.h"
19 #include "AgoraRefPtr.h"
20 #include "AgoraOptional.h"
21 
22 #define MAX_PATH_260 (260)
23 
24 #if defined(_WIN32)
25 
26 #ifndef WIN32_LEAN_AND_MEAN
27 #define WIN32_LEAN_AND_MEAN
28 #endif // !WIN32_LEAN_AND_MEAN
29 #if defined(__aarch64__)
30 #include <arm64intr.h>
31 #endif
32 #include <Windows.h>
33 
34 #if defined(AGORARTC_EXPORT)
35 #define AGORA_API extern "C" __declspec(dllexport)
36 #define AGORA_CPP_API __declspec(dllexport)
37 #else
38 #define AGORA_API extern "C" __declspec(dllimport)
39 #define AGORA_CPP_API __declspec(dllimport)
40 #endif // AGORARTC_EXPORT
41 
42 #define AGORA_CALL __cdecl
43 
44 #define __deprecated
45 
46 #define AGORA_CPP_INTERNAL_API extern
47 
48 #elif defined(__APPLE__)
49 
50 #include <TargetConditionals.h>
51 
52 #define AGORA_API extern "C" __attribute__((visibility("default")))
53 #define AGORA_CPP_API __attribute__((visibility("default")))
54 #define AGORA_CALL
55 
56 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
57 
58 #elif defined(__ANDROID__) || defined(__linux__)
59 
60 #define AGORA_API extern "C" __attribute__((visibility("default")))
61 #define AGORA_CPP_API __attribute__((visibility("default")))
62 #define AGORA_CALL
63 
64 #define __deprecated
65 
66 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
67 
68 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
69 
70 #define AGORA_API extern "C"
71 #define AGORA_CPP_API
72 #define AGORA_CALL
73 
74 #define __deprecated
75 
76 #endif // _WIN32
77 
78 #ifndef OPTIONAL_ENUM_SIZE_T
79 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
80 #define OPTIONAL_ENUM_SIZE_T enum : size_t
81 #else
82 #define OPTIONAL_ENUM_SIZE_T enum
83 #endif
84 #endif
85 
86 #ifndef OPTIONAL_NULLPTR
87 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
88 #define OPTIONAL_NULLPTR nullptr
89 #else
90 #define OPTIONAL_NULLPTR NULL
91 #endif
92 #endif
93 
94 #define INVALID_DISPLAY_ID (-2)
95 
96 namespace agora {
97 namespace util {
98 
99 template <class T>
100 class AutoPtr {
101  protected:
102  typedef T value_type;
103  typedef T* pointer_type;
104 
105  public:
106  explicit AutoPtr(pointer_type p = OPTIONAL_NULLPTR) : ptr_(p) {}
107 
108  ~AutoPtr() {
109  if (ptr_) {
110  ptr_->release();
111  ptr_ = OPTIONAL_NULLPTR;
112  }
113  }
114 
115  operator bool() const { return (ptr_ != OPTIONAL_NULLPTR); }
116 
117  value_type& operator*() const { return *get(); }
118 
119  pointer_type operator->() const { return get(); }
120 
121  pointer_type get() const { return ptr_; }
122 
123  pointer_type release() {
124  pointer_type ret = ptr_;
125  ptr_ = 0;
126  return ret;
127  }
128 
129  void reset(pointer_type ptr = OPTIONAL_NULLPTR) {
130  if (ptr != ptr_ && ptr_) {
131  ptr_->release();
132  }
133 
134  ptr_ = ptr;
135  }
136 
137  template <class C1, class C2>
138  bool queryInterface(C1* c, C2 iid) {
139  pointer_type p = OPTIONAL_NULLPTR;
140  if (c && !c->queryInterface(iid, reinterpret_cast<void**>(&p))) {
141  reset(p);
142  }
143 
144  return (p != OPTIONAL_NULLPTR);
145  }
146 
147  private:
148  AutoPtr(const AutoPtr&);
149  AutoPtr& operator=(const AutoPtr&);
150 
151  private:
152  pointer_type ptr_;
153 };
154 
155 template <class T>
156 class CopyableAutoPtr : public AutoPtr<T> {
157  typedef typename AutoPtr<T>::pointer_type pointer_type;
158 
159  public:
160  explicit CopyableAutoPtr(pointer_type p = 0) : AutoPtr<T>(p) {}
161  CopyableAutoPtr(const CopyableAutoPtr& rhs) { this->reset(rhs.clone()); }
162  CopyableAutoPtr& operator=(const CopyableAutoPtr& rhs) {
163  if (this != &rhs) this->reset(rhs.clone());
164  return *this;
165  }
166  pointer_type clone() const {
167  if (!this->get()) return OPTIONAL_NULLPTR;
168  return this->get()->clone();
169  }
170 };
171 
172 class IString {
173  public:
174  virtual bool empty() const = 0;
175  virtual const char* c_str() = 0;
176  virtual const char* data() = 0;
177  virtual size_t length() = 0;
178  virtual IString* clone() = 0;
179  virtual void release() = 0;
180  virtual ~IString() {}
181 };
183 
184 class IIterator {
185  public:
186  virtual void* current() = 0;
187  virtual const void* const_current() const = 0;
188  virtual bool next() = 0;
189  virtual void release() = 0;
190  virtual ~IIterator() {}
191 };
192 
193 class IContainer {
194  public:
195  virtual IIterator* begin() = 0;
196  virtual size_t size() const = 0;
197  virtual void release() = 0;
198  virtual ~IContainer() {}
199 };
200 
201 template <class T>
203  IIterator* p;
204 
205  public:
206  typedef T value_type;
207  typedef value_type& reference;
208  typedef const value_type& const_reference;
209  typedef value_type* pointer;
210  typedef const value_type* const_pointer;
211  explicit AOutputIterator(IIterator* it = OPTIONAL_NULLPTR) : p(it) {}
212  ~AOutputIterator() {
213  if (p) p->release();
214  }
215  AOutputIterator(const AOutputIterator& rhs) : p(rhs.p) {}
216  AOutputIterator& operator++() {
217  p->next();
218  return *this;
219  }
220  bool operator==(const AOutputIterator& rhs) const {
221  if (p && rhs.p)
222  return p->current() == rhs.p->current();
223  else
224  return valid() == rhs.valid();
225  }
226  bool operator!=(const AOutputIterator& rhs) const { return !this->operator==(rhs); }
227  reference operator*() { return *reinterpret_cast<pointer>(p->current()); }
228  const_reference operator*() const { return *reinterpret_cast<const_pointer>(p->const_current()); }
229  bool valid() const { return p && p->current() != OPTIONAL_NULLPTR; }
230 };
231 
232 template <class T>
233 class AList {
234  IContainer* container;
235  bool owner;
236 
237  public:
238  typedef T value_type;
239  typedef value_type& reference;
240  typedef const value_type& const_reference;
241  typedef value_type* pointer;
242  typedef const value_type* const_pointer;
243  typedef size_t size_type;
246 
247  public:
248  AList() : container(OPTIONAL_NULLPTR), owner(false) {}
249  AList(IContainer* c, bool take_ownership) : container(c), owner(take_ownership) {}
250  ~AList() { reset(); }
251  void reset(IContainer* c = OPTIONAL_NULLPTR, bool take_ownership = false) {
252  if (owner && container) container->release();
253  container = c;
254  owner = take_ownership;
255  }
256  iterator begin() { return container ? iterator(container->begin()) : iterator(OPTIONAL_NULLPTR); }
257  iterator end() { return iterator(OPTIONAL_NULLPTR); }
258  size_type size() const { return container ? container->size() : 0; }
259  bool empty() const { return size() == 0; }
260 };
261 
262 } // namespace util
263 
267 enum CHANNEL_PROFILE_TYPE {
273  CHANNEL_PROFILE_COMMUNICATION = 0,
279  CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
284  CHANNEL_PROFILE_GAME __deprecated = 2,
290  CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
291 
296  CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
297 };
298 
302 enum WARN_CODE_TYPE {
307  WARN_INVALID_VIEW = 8,
312  WARN_INIT_VIDEO = 16,
317  WARN_PENDING = 20,
322  WARN_NO_AVAILABLE_CHANNEL = 103,
328  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
333  WARN_LOOKUP_CHANNEL_REJECTED = 105,
339  WARN_OPEN_CHANNEL_TIMEOUT = 106,
344  WARN_OPEN_CHANNEL_REJECTED = 107,
345 
346  // sdk: 100~1000
350  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
354  WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
358  WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
362  WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
366  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
370  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
374  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
377  WARN_CHANNEL_SOCKET_ERROR = 134,
381  WARN_AUDIO_MIXING_OPEN_ERROR = 701,
385  WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
389  WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
393  WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
397  WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
401  WARN_ADM_RECORD_MALFUNCTION = 1021,
405  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
409  WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
417  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
421  WARN_APM_HOWLING = 1051,
425  WARN_ADM_GLITCH_STATE = 1052,
429  WARN_ADM_IMPROPER_SETTINGS = 1053,
433  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
438  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
446  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
447 };
448 
452 enum ERROR_CODE_TYPE {
456  ERR_OK = 0,
457  // 1~1000
461  ERR_FAILED = 1,
466  ERR_INVALID_ARGUMENT = 2,
473  ERR_NOT_READY = 3,
477  ERR_NOT_SUPPORTED = 4,
481  ERR_REFUSED = 5,
485  ERR_BUFFER_TOO_SMALL = 6,
489  ERR_NOT_INITIALIZED = 7,
493  ERR_INVALID_STATE = 8,
498  ERR_NO_PERMISSION = 9,
504  ERR_TIMEDOUT = 10,
509  ERR_CANCELED = 11,
515  ERR_TOO_OFTEN = 12,
521  ERR_BIND_SOCKET = 13,
526  ERR_NET_DOWN = 14,
532  ERR_JOIN_CHANNEL_REJECTED = 17,
539  ERR_LEAVE_CHANNEL_REJECTED = 18,
543  ERR_ALREADY_IN_USE = 19,
548  ERR_ABORTED = 20,
553  ERR_INIT_NET_ENGINE = 21,
558  ERR_RESOURCE_LIMITED = 22,
565  ERR_INVALID_APP_ID = 101,
570  ERR_INVALID_CHANNEL_NAME = 102,
576  ERR_NO_SERVER_RESOURCES = 103,
589  ERR_TOKEN_EXPIRED = 109,
606  ERR_INVALID_TOKEN = 110,
611  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
616  ERR_CONNECTION_LOST = 112, // only used in web sdk
621  ERR_NOT_IN_CHANNEL = 113,
626  ERR_SIZE_TOO_LARGE = 114,
631  ERR_BITRATE_LIMIT = 115,
636  ERR_TOO_MANY_DATA_STREAMS = 116,
640  ERR_STREAM_MESSAGE_TIMEOUT = 117,
644  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
649  ERR_DECRYPTION_FAILED = 120,
653  ERR_INVALID_USER_ID = 121,
658  ERR_DATASTREAM_DECRYPTION_FAILED = 122,
662  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
668  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
669 
673  ERR_LICENSE_CREDENTIAL_INVALID = 131,
674 
679  ERR_INVALID_USER_ACCOUNT = 134,
680 
687  ERR_MODULE_NOT_FOUND = 157,
688 
689  // Licensing, keep the license error code same as the main version
690  ERR_CERT_RAW = 157,
691  ERR_CERT_JSON_PART = 158,
692  ERR_CERT_JSON_INVAL = 159,
693  ERR_CERT_JSON_NOMEM = 160,
694  ERR_CERT_CUSTOM = 161,
695  ERR_CERT_CREDENTIAL = 162,
696  ERR_CERT_SIGN = 163,
697  ERR_CERT_FAIL = 164,
698  ERR_CERT_BUF = 165,
699  ERR_CERT_NULL = 166,
700  ERR_CERT_DUEDATE = 167,
701  ERR_CERT_REQUEST = 168,
702 
703  // PcmSend Error num
704  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
705  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
706 
708  // signaling: 400~600
709  ERR_LOGIN_ALREADY_LOGIN = 428,
710 
712  // 1001~2000
716  ERR_LOAD_MEDIA_ENGINE = 1001,
722  ERR_ADM_GENERAL_ERROR = 1005,
727  ERR_ADM_INIT_PLAYOUT = 1008,
731  ERR_ADM_START_PLAYOUT = 1009,
735  ERR_ADM_STOP_PLAYOUT = 1010,
740  ERR_ADM_INIT_RECORDING = 1011,
744  ERR_ADM_START_RECORDING = 1012,
748  ERR_ADM_STOP_RECORDING = 1013,
752  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
753 };
754 
755 enum LICENSE_ERROR_TYPE {
759  LICENSE_ERR_INVALID = 1,
763  LICENSE_ERR_EXPIRE = 2,
767  LICENSE_ERR_MINUTES_EXCEED = 3,
771  LICENSE_ERR_LIMITED_PERIOD = 4,
775  LICENSE_ERR_DIFF_DEVICES = 5,
779  LICENSE_ERR_INTERNAL = 99,
780 };
781 
785 enum AUDIO_SESSION_OPERATION_RESTRICTION {
789  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
793  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
797  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
802  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
807  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
808 };
809 
810 typedef const char* user_id_t;
811 typedef void* view_t;
812 
816 struct UserInfo {
826  bool hasAudio;
832  bool hasVideo;
833 
834  UserInfo() : hasAudio(false), hasVideo(false) {}
835 };
836 
837 typedef util::AList<UserInfo> UserList;
838 
839 // Shared between Agora Service and Rtc Engine
840 namespace rtc {
841 
845 enum USER_OFFLINE_REASON_TYPE {
849  USER_OFFLINE_QUIT = 0,
855  USER_OFFLINE_DROPPED = 1,
859  USER_OFFLINE_BECOME_AUDIENCE = 2,
860 };
861 
862 enum INTERFACE_ID_TYPE {
863  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
864  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
865  AGORA_IID_PARAMETER_ENGINE = 3,
866  AGORA_IID_MEDIA_ENGINE = 4,
867  AGORA_IID_AUDIO_ENGINE = 5,
868  AGORA_IID_VIDEO_ENGINE = 6,
869  AGORA_IID_RTC_CONNECTION = 7,
870  AGORA_IID_SIGNALING_ENGINE = 8,
871  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
872  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
873  AGORA_IID_STATE_SYNC = 13,
874  AGORA_IID_META_SERVICE = 14,
875  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
876  AGORA_IID_H265_TRANSCODER = 16,
877 };
878 
882 enum QUALITY_TYPE {
887  QUALITY_UNKNOWN __deprecated = 0,
891  QUALITY_EXCELLENT = 1,
896  QUALITY_GOOD = 2,
900  QUALITY_POOR = 3,
904  QUALITY_BAD = 4,
908  QUALITY_VBAD = 5,
912  QUALITY_DOWN = 6,
916  QUALITY_UNSUPPORTED = 7,
920  QUALITY_DETECTING = 8,
921 };
922 
926 enum FIT_MODE_TYPE {
931  MODE_COVER = 1,
932 
938  MODE_CONTAIN = 2,
939 };
940 
944 enum VIDEO_ORIENTATION {
948  VIDEO_ORIENTATION_0 = 0,
952  VIDEO_ORIENTATION_90 = 90,
956  VIDEO_ORIENTATION_180 = 180,
960  VIDEO_ORIENTATION_270 = 270
961 };
962 
966 enum FRAME_RATE {
970  FRAME_RATE_FPS_1 = 1,
974  FRAME_RATE_FPS_7 = 7,
978  FRAME_RATE_FPS_10 = 10,
982  FRAME_RATE_FPS_15 = 15,
986  FRAME_RATE_FPS_24 = 24,
990  FRAME_RATE_FPS_30 = 30,
994  FRAME_RATE_FPS_60 = 60,
995 };
996 
997 enum FRAME_WIDTH {
998  FRAME_WIDTH_960 = 960,
999 };
1000 
1001 enum FRAME_HEIGHT {
1002  FRAME_HEIGHT_540 = 540,
1003 };
1004 
1008 enum VIDEO_FRAME_TYPE {
1010  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1012  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1014  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1016  VIDEO_FRAME_TYPE_B_FRAME = 5,
1018  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1020  VIDEO_FRAME_TYPE_UNKNOW
1021 };
1022 
1026 enum ORIENTATION_MODE {
1034  ORIENTATION_MODE_ADAPTIVE = 0,
1041  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1048  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1049 };
1050 
1054 enum DEGRADATION_PREFERENCE {
1061  MAINTAIN_AUTO = -1,
1069  MAINTAIN_QUALITY = 0,
1075  MAINTAIN_FRAMERATE = 1,
1082  MAINTAIN_BALANCED = 2,
1086  MAINTAIN_RESOLUTION = 3,
1090  DISABLED = 100,
1091 };
1092 
1100  int width;
1104  int height;
1105  VideoDimensions() : width(640), height(480) {}
1106  VideoDimensions(int w, int h) : width(w), height(h) {}
1107  bool operator==(const VideoDimensions& rhs) const {
1108  return width == rhs.width && height == rhs.height;
1109  }
1110 };
1111 
1117 const int STANDARD_BITRATE = 0;
1118 
1126 const int COMPATIBLE_BITRATE = -1;
1127 
1131 const int DEFAULT_MIN_BITRATE = -1;
1132 
1136 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1137 
1141 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1142  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1143  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1144  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1145 };
1146 
1150 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1152  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1154  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1156  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1158  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1160  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1161 };
1162 
1166 enum VIDEO_CODEC_TYPE {
1172  VIDEO_CODEC_NONE = 0,
1176  VIDEO_CODEC_VP8 = 1,
1180  VIDEO_CODEC_H264 = 2,
1184  VIDEO_CODEC_H265 = 3,
1190  VIDEO_CODEC_GENERIC = 6,
1195  VIDEO_CODEC_GENERIC_H264 = 7,
1200  VIDEO_CODEC_AV1 = 12,
1204  VIDEO_CODEC_VP9 = 13,
1208  VIDEO_CODEC_GENERIC_JPEG = 20,
1209 };
1210 
1214 enum CAMERA_FOCAL_LENGTH_TYPE {
1218  CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1222  CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1226  CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1230  CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1231 };
1232 
1236 enum TCcMode {
1240  CC_ENABLED,
1244  CC_DISABLED,
1245 };
1246 
1254  TCcMode ccMode;
1259  VIDEO_CODEC_TYPE codecType;
1260 
1321 
1322  SenderOptions() : ccMode(CC_ENABLED), codecType(VIDEO_CODEC_H265), targetBitrate(6500) {}
1323 };
1324 
1328 enum AUDIO_CODEC_TYPE {
1332  AUDIO_CODEC_OPUS = 1,
1333  // kIsac = 2,
1337  AUDIO_CODEC_PCMA = 3,
1341  AUDIO_CODEC_PCMU = 4,
1345  AUDIO_CODEC_G722 = 5,
1346  // kIlbc = 6,
1348  // AUDIO_CODEC_AAC = 7,
1352  AUDIO_CODEC_AACLC = 8,
1356  AUDIO_CODEC_HEAAC = 9,
1360  AUDIO_CODEC_JC1 = 10,
1364  AUDIO_CODEC_HEAAC2 = 11,
1368  AUDIO_CODEC_LPCNET = 12,
1372  AUDIO_CODEC_OPUSMC = 13,
1373 };
1374 
1378 enum AUDIO_ENCODING_TYPE {
1383  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1388  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1393  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1398  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1403  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1408  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1413  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1418  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1423  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1428  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1433  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1434 };
1435 
1439 enum WATERMARK_FIT_MODE {
1444  FIT_MODE_COVER_POSITION,
1449  FIT_MODE_USE_IMAGE_RATIO
1450 };
1451 
1457 
1463  bool speech;
1470 };
1471 
1477  : codec(AUDIO_CODEC_AACLC),
1478  sampleRateHz(0),
1479  samplesPerChannel(0),
1480  numberOfChannels(0),
1481  captureTimeMs(0) {}
1482 
1484  : codec(rhs.codec),
1493  AUDIO_CODEC_TYPE codec;
1512 
1516  int64_t captureTimeMs;
1517 };
1523  : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1524 
1527  channelNum(rhs.channelNum),
1528  samplesOut(rhs.samplesOut),
1530  ntpTimeMs(rhs.ntpTimeMs) {}
1531 
1536 
1537  int16_t channelNum;
1538 
1539  // Output
1543  size_t samplesOut;
1547  int64_t elapsedTimeMs;
1551  int64_t ntpTimeMs;
1552 };
1556 enum H264PacketizeMode {
1560  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1564  SingleNalUnit, // Mode 0 - only single NALU allowed
1565 };
1566 
1570 enum VIDEO_STREAM_TYPE {
1574  VIDEO_STREAM_HIGH = 0,
1578  VIDEO_STREAM_LOW = 1,
1582  VIDEO_STREAM_LAYER_1 = 4,
1586  VIDEO_STREAM_LAYER_2 = 5,
1590  VIDEO_STREAM_LAYER_3 = 6,
1594  VIDEO_STREAM_LAYER_4 = 7,
1598  VIDEO_STREAM_LAYER_5 = 8,
1602  VIDEO_STREAM_LAYER_6 = 9,
1603 
1604 };
1605 
1620 
1622 };
1623 
1626 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1629  MAX_USER_ACCOUNT_LENGTH = 256
1630 };
1631 
1638  : uid(0),
1639  codecType(VIDEO_CODEC_H264),
1640  width(0),
1641  height(0),
1642  framesPerSecond(0),
1643  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1644  rotation(VIDEO_ORIENTATION_0),
1645  trackId(0),
1646  captureTimeMs(0),
1647  decodeTimeMs(0),
1648  streamType(VIDEO_STREAM_HIGH),
1649  presentationMs(-1) {}
1650 
1652  : uid(rhs.uid),
1653  codecType(rhs.codecType),
1654  width(rhs.width),
1655  height(rhs.height),
1657  frameType(rhs.frameType),
1658  rotation(rhs.rotation),
1659  trackId(rhs.trackId),
1662  streamType(rhs.streamType),
1663  presentationMs(rhs.presentationMs) {}
1664 
1665  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1666  if (this == &rhs) return *this;
1667  uid = rhs.uid;
1668  codecType = rhs.codecType;
1669  width = rhs.width;
1670  height = rhs.height;
1672  frameType = rhs.frameType;
1673  rotation = rhs.rotation;
1674  trackId = rhs.trackId;
1676  decodeTimeMs = rhs.decodeTimeMs;
1677  streamType = rhs.streamType;
1678  presentationMs = rhs.presentationMs;
1679  return *this;
1680  }
1681 
1685  uid_t uid;
1690  VIDEO_CODEC_TYPE codecType;
1694  int width;
1698  int height;
1708  VIDEO_FRAME_TYPE frameType;
1712  VIDEO_ORIENTATION rotation;
1716  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1717  // and additional payload for later implementation.
1721  int64_t captureTimeMs;
1725  int64_t decodeTimeMs;
1729  VIDEO_STREAM_TYPE streamType;
1730 
1731  // @technical preview
1732  int64_t presentationMs;
1733 };
1734 
1738 enum COMPRESSION_PREFERENCE {
1745  PREFER_COMPRESSION_AUTO = -1,
1749  PREFER_LOW_LATENCY = 0,
1753  PREFER_QUALITY = 1,
1754 };
1755 
1759 enum ENCODING_PREFERENCE {
1763  PREFER_AUTO = -1,
1767  PREFER_SOFTWARE = 0,
1771  PREFER_HARDWARE = 1,
1772 };
1773 
1781  ENCODING_PREFERENCE encodingPreference;
1782 
1786  COMPRESSION_PREFERENCE compressionPreference;
1787 
1793 
1794  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1795  compressionPreference(PREFER_COMPRESSION_AUTO),
1796  encodeAlpha(false) {}
1797 
1798  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1799  COMPRESSION_PREFERENCE compression_preference,
1800  bool encode_alpha) :
1801  encodingPreference(encoding_preference),
1802  compressionPreference(compression_preference),
1803  encodeAlpha(encode_alpha) {}
1804 
1805  bool operator==(const AdvanceOptions& rhs) const {
1806  return encodingPreference == rhs.encodingPreference &&
1807  compressionPreference == rhs.compressionPreference &&
1808  encodeAlpha == rhs.encodeAlpha;
1809  }
1810 };
1811 
1815 enum VIDEO_MIRROR_MODE_TYPE {
1819  VIDEO_MIRROR_MODE_AUTO = 0,
1823  VIDEO_MIRROR_MODE_ENABLED = 1,
1827  VIDEO_MIRROR_MODE_DISABLED = 2,
1828 };
1829 
1830 #if defined(__APPLE__) && TARGET_OS_IOS
1831 
1834 enum CAMERA_FORMAT_TYPE {
1836  CAMERA_FORMAT_NV12,
1838  CAMERA_FORMAT_BGRA,
1839 };
1840 #endif
1841 
1842 enum VIDEO_MODULE_TYPE {
1844  VIDEO_MODULE_CAPTURER = 0,
1846  VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1848  VIDEO_MODULE_HARDWARE_ENCODER = 2,
1850  VIDEO_MODULE_SOFTWARE_DECODER = 3,
1852  VIDEO_MODULE_HARDWARE_DECODER = 4,
1854  VIDEO_MODULE_RENDERER = 5,
1855 };
1856 
1857 enum HDR_CAPABILITY {
1859  HDR_CAPABILITY_UNKNOWN = -1,
1861  HDR_CAPABILITY_UNSUPPORTED = 0,
1863  HDR_CAPABILITY_SUPPORTED = 1,
1864 };
1865 
1867 enum CODEC_CAP_MASK {
1869  CODEC_CAP_MASK_NONE = 0,
1870 
1872  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1873 
1875  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1876 
1878  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1879 
1881  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1882 };
1883 
1885  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1886  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1887 
1888  CodecCapLevels()
1889  : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
1890  swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1891 };
1892 
1896  VIDEO_CODEC_TYPE codecType;
1901 
1902  CodecCapInfo() : codecType(VIDEO_CODEC_NONE), codecCapMask(0) {}
1903 };
1904 
1911  CAMERA_FOCAL_LENGTH_TYPE focalLengthType;
1912 };
1913 
1921  VIDEO_CODEC_TYPE codecType;
1987  int bitrate;
1988 
2008  ORIENTATION_MODE orientationMode;
2012  DEGRADATION_PREFERENCE degradationPreference;
2013 
2019  VIDEO_MIRROR_MODE_TYPE mirrorMode;
2020 
2025 
2026  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2027  : codecType(VIDEO_CODEC_NONE),
2028  dimensions(d),
2029  frameRate(f),
2030  bitrate(b),
2031  minBitrate(DEFAULT_MIN_BITRATE),
2032  orientationMode(m),
2033  degradationPreference(MAINTAIN_AUTO),
2034  mirrorMode(mirror),
2035  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2036  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2037  : codecType(VIDEO_CODEC_NONE),
2038  dimensions(width, height),
2039  frameRate(f),
2040  bitrate(b),
2041  minBitrate(DEFAULT_MIN_BITRATE),
2042  orientationMode(m),
2043  degradationPreference(MAINTAIN_AUTO),
2044  mirrorMode(mirror),
2045  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2046  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
2047  : codecType(config.codecType),
2048  dimensions(config.dimensions),
2049  frameRate(config.frameRate),
2050  bitrate(config.bitrate),
2051  minBitrate(config.minBitrate),
2054  mirrorMode(config.mirrorMode),
2055  advanceOptions(config.advanceOptions) {}
2056  VideoEncoderConfiguration()
2057  : codecType(VIDEO_CODEC_NONE),
2058  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2059  frameRate(FRAME_RATE_FPS_15),
2060  bitrate(STANDARD_BITRATE),
2061  minBitrate(DEFAULT_MIN_BITRATE),
2062  orientationMode(ORIENTATION_MODE_ADAPTIVE),
2063  degradationPreference(MAINTAIN_AUTO),
2064  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
2065  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2066 
2067  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
2068  if (this == &rhs) return *this;
2069  codecType = rhs.codecType;
2070  dimensions = rhs.dimensions;
2071  frameRate = rhs.frameRate;
2072  bitrate = rhs.bitrate;
2073  minBitrate = rhs.minBitrate;
2074  orientationMode = rhs.orientationMode;
2075  degradationPreference = rhs.degradationPreference;
2076  mirrorMode = rhs.mirrorMode;
2077  advanceOptions = rhs.advanceOptions;
2078  return *this;
2079  }
2080 };
2081 
2106  bool ordered;
2107 };
2108 
2112 enum SIMULCAST_STREAM_MODE {
2113  /*
2114  * disable simulcast stream until receive request for enable simulcast stream by other broadcaster
2115  */
2116  AUTO_SIMULCAST_STREAM = -1,
2117  /*
2118  * disable simulcast stream
2119  */
2120  DISABLE_SIMULCAST_STREAM = 0,
2121  /*
2122  * always enable simulcast stream
2123  */
2124  ENABLE_SIMULCAST_STREAM = 1,
2125 };
2126 
2144  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
2146  bool operator==(const SimulcastStreamConfig& rhs) const {
2147  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
2148  }
2149 };
2150 
2191  };
2204  bool enable;
2205  StreamLayerConfig() : dimensions(0, 0), framerate(0), enable(false) {}
2206  };
2207 
2212 };
2217 struct Rectangle {
2221  int x;
2225  int y;
2229  int width;
2233  int height;
2234 
2235  Rectangle() : x(0), y(0), width(0), height(0) {}
2236  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2237 };
2238 
2255  float xRatio;
2261  float yRatio;
2268  float widthRatio;
2269 
2270  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2271  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2272 };
2273 
2302  WATERMARK_FIT_MODE mode;
2303 
2305  : visibleInPreview(true),
2306  positionInLandscapeMode(0, 0, 0, 0),
2307  positionInPortraitMode(0, 0, 0, 0),
2308  mode(FIT_MODE_COVER_POSITION) {}
2309 };
2310 
2314 struct RtcStats {
2318  unsigned int duration;
2322  unsigned int txBytes;
2326  unsigned int rxBytes;
2330  unsigned int txAudioBytes;
2334  unsigned int txVideoBytes;
2338  unsigned int rxAudioBytes;
2342  unsigned int rxVideoBytes;
2346  unsigned short txKBitRate;
2350  unsigned short rxKBitRate;
2354  unsigned short rxAudioKBitRate;
2358  unsigned short txAudioKBitRate;
2362  unsigned short rxVideoKBitRate;
2366  unsigned short txVideoKBitRate;
2370  unsigned short lastmileDelay;
2374  unsigned int userCount;
2382  double cpuAppUsage;
2474  RtcStats()
2475  : duration(0),
2476  txBytes(0),
2477  rxBytes(0),
2478  txAudioBytes(0),
2479  txVideoBytes(0),
2480  rxAudioBytes(0),
2481  rxVideoBytes(0),
2482  txKBitRate(0),
2483  rxKBitRate(0),
2484  rxAudioKBitRate(0),
2485  txAudioKBitRate(0),
2486  rxVideoKBitRate(0),
2487  txVideoKBitRate(0),
2488  lastmileDelay(0),
2489  userCount(0),
2490  cpuAppUsage(0.0),
2491  cpuTotalUsage(0.0),
2492  gatewayRtt(0),
2493  memoryAppUsageRatio(0.0),
2494  memoryTotalUsageRatio(0.0),
2496  connectTimeMs(0),
2506  txPacketLossRate(0),
2507  rxPacketLossRate(0) {}
2508 };
2509 
2513 enum CLIENT_ROLE_TYPE {
2517  CLIENT_ROLE_BROADCASTER = 1,
2521  CLIENT_ROLE_AUDIENCE = 2,
2522 };
2523 
2528 enum QUALITY_ADAPT_INDICATION {
2532  ADAPT_NONE = 0,
2536  ADAPT_UP_BANDWIDTH = 1,
2540  ADAPT_DOWN_BANDWIDTH = 2,
2541 };
2542 
2547 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2551  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2555  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2556 };
2557 
2566  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2567 
2568  ClientRoleOptions() : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2569 };
2570 
2574 enum EXPERIENCE_QUALITY_TYPE {
2576  EXPERIENCE_QUALITY_GOOD = 0,
2578  EXPERIENCE_QUALITY_BAD = 1,
2579 };
2580 
2584 enum EXPERIENCE_POOR_REASON {
2588  EXPERIENCE_REASON_NONE = 0,
2592  REMOTE_NETWORK_QUALITY_POOR = 1,
2596  LOCAL_NETWORK_QUALITY_POOR = 2,
2600  WIRELESS_SIGNAL_POOR = 4,
2605  WIFI_BLUETOOTH_COEXIST = 8,
2606 };
2607 
2611 enum AUDIO_AINS_MODE {
2615  AINS_MODE_BALANCED = 0,
2619  AINS_MODE_AGGRESSIVE = 1,
2623  AINS_MODE_ULTRALOWLATENCY = 2
2624 };
2625 
2629 enum AUDIO_PROFILE_TYPE {
2639  AUDIO_PROFILE_DEFAULT = 0,
2643  AUDIO_PROFILE_SPEECH_STANDARD = 1,
2647  AUDIO_PROFILE_MUSIC_STANDARD = 2,
2654  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2658  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2665  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2669  AUDIO_PROFILE_IOT = 6,
2670  AUDIO_PROFILE_NUM = 7
2671 };
2672 
2676 enum AUDIO_SCENARIO_TYPE {
2681  AUDIO_SCENARIO_DEFAULT = 0,
2687  AUDIO_SCENARIO_GAME_STREAMING = 3,
2693  AUDIO_SCENARIO_CHATROOM = 5,
2698  AUDIO_SCENARIO_CHORUS = 7,
2702  AUDIO_SCENARIO_MEETING = 8,
2706  AUDIO_SCENARIO_NUM = 9,
2707 };
2708 
2712 struct VideoFormat {
2713  OPTIONAL_ENUM_SIZE_T{
2715  kMaxWidthInPixels = 3840,
2717  kMaxHeightInPixels = 2160,
2719  kMaxFps = 60,
2720  };
2721 
2725  int width; // Number of pixels.
2729  int height; // Number of pixels.
2733  int fps;
2734  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
2735  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
2736 
2737  bool operator<(const VideoFormat& fmt) const {
2738  if (height != fmt.height) {
2739  return height < fmt.height;
2740  } else if (width != fmt.width) {
2741  return width < fmt.width;
2742  } else {
2743  return fps < fmt.fps;
2744  }
2745  }
2746  bool operator==(const VideoFormat& fmt) const {
2747  return width == fmt.width && height == fmt.height && fps == fmt.fps;
2748  }
2749  bool operator!=(const VideoFormat& fmt) const { return !operator==(fmt); }
2750 };
2751 
2755 enum VIDEO_CONTENT_HINT {
2759  CONTENT_HINT_NONE,
2766  CONTENT_HINT_MOTION,
2772  CONTENT_HINT_DETAILS
2773 };
2777 enum SCREEN_SCENARIO_TYPE {
2783  SCREEN_SCENARIO_DOCUMENT = 1,
2788  SCREEN_SCENARIO_GAMING = 2,
2793  SCREEN_SCENARIO_VIDEO = 3,
2799  SCREEN_SCENARIO_RDC = 4,
2800 };
2801 
2805 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2809  APPLICATION_SCENARIO_GENERAL = 0,
2813  APPLICATION_SCENARIO_MEETING = 1,
2817  APPLICATION_SCENARIO_1V1 = 2,
2821  APPLICATION_SCENARIO_LIVESHOW = 3,
2822 };
2823 
2827 enum VIDEO_QOE_PREFERENCE_TYPE {
2831  VIDEO_QOE_PREFERENCE_BALANCE = 1,
2835  VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2839  VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2843  VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2844 
2845 };
2846 
2850 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2855  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2858  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2861  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2864  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2865 };
2866 
2867 enum CAMERA_STABILIZATION_MODE {
2870  CAMERA_STABILIZATION_MODE_OFF = -1,
2873  CAMERA_STABILIZATION_MODE_AUTO = 0,
2876  CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2879  CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2882  CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2885  CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2886 };
2887 
2891 enum LOCAL_AUDIO_STREAM_STATE {
2895  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2899  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2903  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2907  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2908 };
2909 
2913 enum LOCAL_AUDIO_STREAM_REASON {
2917  LOCAL_AUDIO_STREAM_REASON_OK = 0,
2922  LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2926  LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2933  LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2937  LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2941  LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2944  LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2947  LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2951  LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2954  LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2957  LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2958 };
2959 
2962 enum LOCAL_VIDEO_STREAM_STATE {
2966  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2971  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2975  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2979  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2980 };
2981 
2985 enum LOCAL_VIDEO_STREAM_REASON {
2989  LOCAL_VIDEO_STREAM_REASON_OK = 0,
2993  LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
2998  LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3003  LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3009  LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3013  LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3018  LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3025  LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3031  LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3036  LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3041  LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3046  LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3051  LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3055  LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3061  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3076  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3078  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3080  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3082  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3084  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3090  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3093  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3095  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3097  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3105  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3107  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3109  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3110 
3111 };
3112 
3116 enum REMOTE_AUDIO_STATE {
3122  REMOTE_AUDIO_STATE_STOPPED =
3123  0, // Default state, audio is started or remote user disabled/muted audio stream
3127  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
3133  REMOTE_AUDIO_STATE_DECODING =
3134  2, // The first remote audio frame has been decoded or fronzen state ends
3139  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
3144  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
3145 };
3146 
3150 enum REMOTE_AUDIO_STATE_REASON {
3154  REMOTE_AUDIO_REASON_INTERNAL = 0,
3158  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3162  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3167  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3172  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3177  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3182  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3186  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3190  REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3194  REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3195 };
3196 
3200 enum REMOTE_VIDEO_STATE {
3207  REMOTE_VIDEO_STATE_STOPPED = 0,
3211  REMOTE_VIDEO_STATE_STARTING = 1,
3218  REMOTE_VIDEO_STATE_DECODING = 2,
3222  REMOTE_VIDEO_STATE_FROZEN = 3,
3226  REMOTE_VIDEO_STATE_FAILED = 4,
3227 };
3231 enum REMOTE_VIDEO_STATE_REASON {
3235  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3239  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3243  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3247  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3251  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3255  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3259  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3263  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3267  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3271  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3274  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3277  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3280  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3281 
3284  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3285 
3286 };
3287 
3291 enum REMOTE_USER_STATE {
3295  USER_STATE_MUTE_AUDIO = (1 << 0),
3299  USER_STATE_MUTE_VIDEO = (1 << 1),
3303  USER_STATE_ENABLE_VIDEO = (1 << 4),
3307  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3308 };
3309 
3315  VideoTrackInfo()
3316  : isLocal(false),
3317  ownerUid(0),
3318  trackId(0),
3319  channelId(OPTIONAL_NULLPTR),
3320  codecType(VIDEO_CODEC_H265),
3321  encodedFrameOnly(false),
3322  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
3323  observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
3329  bool isLocal;
3333  uid_t ownerUid;
3337  track_id_t trackId;
3341  const char* channelId;
3345  VIDEO_CODEC_TYPE codecType;
3355  VIDEO_SOURCE_TYPE sourceType;
3360 };
3361 
3366 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3370  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3374  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3378  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3382  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3386  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3387 };
3388 
3399  uid_t uid;
3405  unsigned int volume; // [0,255]
3416  unsigned int vad;
3422  double voicePitch;
3423 
3424  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3425 };
3426 
3430 struct DeviceInfo {
3431  /*
3432  * Whether the audio device supports ultra-low-latency capture and playback:
3433  * - `true`: The device supports ultra-low-latency capture and playback.
3434  * - `false`: The device does not support ultra-low-latency capture and playback.
3435  */
3436  bool isLowLatencyAudioSupported;
3437 
3438  DeviceInfo() : isLowLatencyAudioSupported(false) {}
3439 };
3440 
3445  public:
3446  virtual ~IPacketObserver() {}
3450  struct Packet {
3456  const unsigned char* buffer;
3460  unsigned int size;
3461 
3462  Packet() : buffer(OPTIONAL_NULLPTR), size(0) {}
3463  };
3471  virtual bool onSendAudioPacket(Packet& packet) = 0;
3479  virtual bool onSendVideoPacket(Packet& packet) = 0;
3487  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3495  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3496 };
3497 
3501 enum AUDIO_SAMPLE_RATE_TYPE {
3505  AUDIO_SAMPLE_RATE_32000 = 32000,
3509  AUDIO_SAMPLE_RATE_44100 = 44100,
3513  AUDIO_SAMPLE_RATE_48000 = 48000,
3514 };
3518 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3522  VIDEO_CODEC_H264_FOR_STREAM = 1,
3526  VIDEO_CODEC_H265_FOR_STREAM = 2,
3527 };
3528 
3532 enum VIDEO_CODEC_PROFILE_TYPE {
3536  VIDEO_CODEC_PROFILE_BASELINE = 66,
3541  VIDEO_CODEC_PROFILE_MAIN = 77,
3545  VIDEO_CODEC_PROFILE_HIGH = 100,
3546 };
3547 
3551 enum AUDIO_CODEC_PROFILE_TYPE {
3555  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3559  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3563  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3564 };
3565 
3590  unsigned short txPacketLossRate;
3607 };
3608 
3612 enum RTMP_STREAM_PUBLISH_STATE {
3617  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3622  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3627  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3638  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3644  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3649  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3650 };
3651 
3655 enum RTMP_STREAM_PUBLISH_REASON {
3659  RTMP_STREAM_PUBLISH_REASON_OK = 0,
3666  RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3670  RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3675  RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3680  RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3684  RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3688  RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3692  RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3696  RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3700  RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3705  RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3710  RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
3711  11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
3717  RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
3718  13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
3722  RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
3726  RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
3727  15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
3729  RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3734  RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3735 };
3736 
3738 enum RTMP_STREAMING_EVENT {
3743  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3748  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3752  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3756  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3757 };
3758 
3762 typedef struct RtcImage {
3767  const char* url;
3772  int x;
3777  int y;
3781  int width;
3785  int height;
3793  int zOrder;
3799  double alpha;
3800 
3801  RtcImage() : url(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
3802 } RtcImage;
3810  LiveStreamAdvancedFeature() : featureName(OPTIONAL_NULLPTR), opened(false) {}
3811  LiveStreamAdvancedFeature(const char* feat_name, bool open)
3812  : featureName(feat_name), opened(open) {}
3814  // static const char* LBHQ = "lbhq";
3816  // static const char* VEO = "veo";
3817 
3822  const char* featureName;
3823 
3829  bool opened;
3830 };
3831 
3835 enum CONNECTION_STATE_TYPE {
3842  CONNECTION_STATE_DISCONNECTED = 1,
3851  CONNECTION_STATE_CONNECTING = 2,
3859  CONNECTION_STATE_CONNECTED = 3,
3869  CONNECTION_STATE_RECONNECTING = 4,
3878  CONNECTION_STATE_FAILED = 5,
3879 };
3880 
3888  uid_t uid;
3894  int x;
3900  int y;
3904  int width;
3908  int height;
3916  int zOrder;
3922  double alpha;
3944 
3945  TranscodingUser()
3946  : uid(0), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0), audioChannel(0) {}
3947 };
3948 
3959  int width;
3966  int height;
3979 
3986 
3994  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
3998  unsigned int backgroundColor;
4000  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
4004  unsigned int userCount;
4015 
4018  const char* metadata;
4029  unsigned int watermarkCount;
4030 
4042  unsigned int backgroundImageCount;
4043 
4046  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
4062  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
4067 
4069  unsigned int advancedFeatureCount;
4070 
4071  LiveTranscoding()
4072  : width(360),
4073  height(640),
4074  videoBitrate(400),
4075  videoFramerate(15),
4076  lowLatency(false),
4077  videoGop(30),
4078  videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
4079  backgroundColor(0x000000),
4080  videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
4081  userCount(0),
4082  transcodingUsers(OPTIONAL_NULLPTR),
4083  transcodingExtraInfo(OPTIONAL_NULLPTR),
4084  metadata(OPTIONAL_NULLPTR),
4085  watermark(OPTIONAL_NULLPTR),
4086  watermarkCount(0),
4087  backgroundImage(OPTIONAL_NULLPTR),
4089  audioSampleRate(AUDIO_SAMPLE_RATE_48000),
4090  audioBitrate(48),
4091  audioChannels(1),
4092  audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
4093  advancedFeatures(OPTIONAL_NULLPTR),
4094  advancedFeatureCount(0) {}
4095 };
4096 
4104  VIDEO_SOURCE_TYPE sourceType;
4116  const char* imageUrl;
4125  int x;
4130  int y;
4134  int width;
4138  int height;
4145  int zOrder;
4151  double alpha;
4158  bool mirror;
4159 
4161  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4162  remoteUserUid(0),
4163  imageUrl(OPTIONAL_NULLPTR),
4164  x(0),
4165  y(0),
4166  width(0),
4167  height(0),
4168  zOrder(0),
4169  alpha(1.0),
4170  mirror(false) {}
4171 };
4172 
4180  unsigned int streamCount;
4199 
4201  : streamCount(0),
4202  videoInputStreams(OPTIONAL_NULLPTR),
4204  syncWithPrimaryCamera(true) {}
4205 };
4206 
4207 enum VIDEO_TRANSCODER_ERROR {
4211  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4215  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4219  VT_ERR_INVALID_IMAGE_PATH = 3,
4223  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4227  VT_ERR_INVALID_LAYOUT = 5,
4231  VT_ERR_INTERNAL = 20
4232 };
4233 
4234 
4242  AUDIO_SOURCE_TYPE sourceType;
4252  const char* channelId;
4257  track_id_t trackId;
4258 
4259  MixedAudioStream(AUDIO_SOURCE_TYPE source)
4260  : sourceType(source),
4261  remoteUserUid(0),
4262  channelId(NULL),
4263  trackId(-1) {}
4264 
4265  MixedAudioStream(AUDIO_SOURCE_TYPE source, track_id_t track)
4266  : sourceType(source),
4267  trackId(track) {}
4268 
4269  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel)
4270  : sourceType(source),
4271  remoteUserUid(uid),
4272  channelId(channel) {}
4273 
4274  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel, track_id_t track)
4275  : sourceType(source),
4276  remoteUserUid(uid),
4277  channelId(channel),
4278  trackId(track) {}
4279 
4280 };
4281 
4289  unsigned int streamCount;
4294 
4301 
4303 };
4304 
4333 };
4334 
4338 enum LASTMILE_PROBE_RESULT_STATE {
4342  LASTMILE_PROBE_RESULT_COMPLETE = 1,
4347  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4352  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4353 };
4354 
4362  unsigned int packetLossRate;
4366  unsigned int jitter;
4370  unsigned int availableBandwidth;
4371 
4373 };
4374 
4382  LASTMILE_PROBE_RESULT_STATE state;
4394  unsigned int rtt;
4395 
4396  LastmileProbeResult() : state(LASTMILE_PROBE_RESULT_UNAVAILABLE), rtt(0) {}
4397 };
4398 
4402 enum CONNECTION_CHANGED_REASON_TYPE {
4406  CONNECTION_CHANGED_CONNECTING = 0,
4410  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4414  CONNECTION_CHANGED_INTERRUPTED = 2,
4419  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4424  CONNECTION_CHANGED_JOIN_FAILED = 4,
4428  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4432  CONNECTION_CHANGED_INVALID_APP_ID = 6,
4437  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4446  CONNECTION_CHANGED_INVALID_TOKEN = 8,
4450  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4458  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4462  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4466  CONNECTION_CHANGED_RENEW_TOKEN = 12,
4471  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4476  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4480  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4484  CONNECTION_CHANGED_LOST = 16,
4488  CONNECTION_CHANGED_ECHO_TEST = 17,
4492  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4496  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4500  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4501 
4505  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4506  /*
4507  * 22: The connection is failed due to certification verify failure.
4508  */
4509  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4513  CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4517  CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4518 };
4519 
4523 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4527  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4531  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4536  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4541  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4542 };
4543 
4547 enum WLACC_MESSAGE_REASON {
4551  WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4555  WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4556 };
4557 
4561 enum WLACC_SUGGEST_ACTION {
4565  WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4569  WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4574  WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4579  WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4580 };
4581 
4585 struct WlAccStats {
4589  unsigned short e2eDelayPercent;
4593  unsigned short frozenRatioPercent;
4597  unsigned short lossRatePercent;
4598 };
4599 
4603 enum NETWORK_TYPE {
4607  NETWORK_TYPE_UNKNOWN = -1,
4611  NETWORK_TYPE_DISCONNECTED = 0,
4615  NETWORK_TYPE_LAN = 1,
4619  NETWORK_TYPE_WIFI = 2,
4623  NETWORK_TYPE_MOBILE_2G = 3,
4627  NETWORK_TYPE_MOBILE_3G = 4,
4631  NETWORK_TYPE_MOBILE_4G = 5,
4635  NETWORK_TYPE_MOBILE_5G = 6,
4636 };
4637 
4641 enum VIDEO_VIEW_SETUP_MODE {
4645  VIDEO_VIEW_SETUP_REPLACE = 0,
4649  VIDEO_VIEW_SETUP_ADD = 1,
4653  VIDEO_VIEW_SETUP_REMOVE = 2,
4654 };
4655 
4659 struct VideoCanvas {
4663  uid_t uid;
4664 
4669  uid_t subviewUid;
4673  view_t view;
4682  media::base::RENDER_MODE_TYPE renderMode;
4692  VIDEO_MIRROR_MODE_TYPE mirrorMode;
4697  VIDEO_VIEW_SETUP_MODE setupMode;
4702  VIDEO_SOURCE_TYPE sourceType;
4725  media::base::VIDEO_MODULE_POSITION position;
4726 
4727  VideoCanvas()
4728  : uid(0),
4729  subviewUid(0),
4730  view(NULL),
4731  backgroundColor(0x00000000),
4732  renderMode(media::base::RENDER_MODE_HIDDEN),
4733  mirrorMode(VIDEO_MIRROR_MODE_AUTO),
4734  setupMode(VIDEO_VIEW_SETUP_REPLACE),
4735  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4736  mediaPlayerId(-ERR_NOT_READY),
4737  cropArea(0, 0, 0, 0),
4738  enableAlphaMask(false),
4739  position(media::base::POSITION_POST_CAPTURER) {}
4740 
4741  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4742  : uid(0),
4743  subviewUid(0),
4744  view(v),
4745  backgroundColor(0x00000000),
4746  renderMode(m),
4747  mirrorMode(mt),
4748  setupMode(VIDEO_VIEW_SETUP_REPLACE),
4749  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4750  mediaPlayerId(-ERR_NOT_READY),
4751  cropArea(0, 0, 0, 0),
4752  enableAlphaMask(false),
4753  position(media::base::POSITION_POST_CAPTURER) {}
4754 
4755  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4756  : uid(u),
4757  subviewUid(0),
4758  view(v),
4759  backgroundColor(0x00000000),
4760  renderMode(m),
4761  mirrorMode(mt),
4762  setupMode(VIDEO_VIEW_SETUP_REPLACE),
4763  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4764  mediaPlayerId(-ERR_NOT_READY),
4765  cropArea(0, 0, 0, 0),
4766  enableAlphaMask(false),
4767  position(media::base::POSITION_POST_CAPTURER) {}
4768 
4769  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
4770  uid_t subu)
4771  : uid(u),
4772  subviewUid(subu),
4773  view(v),
4774  backgroundColor(0x00000000),
4775  renderMode(m),
4776  mirrorMode(mt),
4777  setupMode(VIDEO_VIEW_SETUP_REPLACE),
4778  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4779  mediaPlayerId(-ERR_NOT_READY),
4780  cropArea(0, 0, 0, 0),
4781  enableAlphaMask(false),
4782  position(media::base::POSITION_POST_CAPTURER) {}
4783 };
4784 
4797  };
4798 
4803 
4807 
4812 
4817 
4822 
4823  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness,
4824  float redness, float sharpness)
4825  : lighteningContrastLevel(contrastLevel),
4826  lighteningLevel(lightening),
4827  smoothnessLevel(smoothness),
4828  rednessLevel(redness),
4829  sharpnessLevel(sharpness) {}
4830 
4831  BeautyOptions()
4833  lighteningLevel(0),
4834  smoothnessLevel(0),
4835  rednessLevel(0),
4836  sharpnessLevel(0) {}
4837 };
4838 
4873  };
4874 
4878 
4885 
4886  FaceShapeAreaOptions(FACE_SHAPE_AREA shapeArea, int areaIntensity) : shapeArea(shapeArea), shapeIntensity(areaIntensity) {}
4887 
4889 };
4890 
4903  };
4904 
4908 
4912 
4914 
4916 };
4917 
4937  const char * path;
4938 
4942  float strength;
4943 
4944  FilterEffectOptions(const char * lut3dPath, float filterStrength) : path(lut3dPath), strength(filterStrength) {}
4945 
4946  FilterEffectOptions() : path(OPTIONAL_NULLPTR), strength(0.5) {}
4947 };
4948 
4960  };
4976  };
4977 
4981 
4985 
4987  : mode(lowlightMode), level(lowlightLevel) {}
4988 
4991 };
5006  };
5026  };
5030 
5034 
5036  : mode(denoiserMode), level(denoiserLevel) {}
5037 
5039 };
5040 
5051 
5061 
5062  ColorEnhanceOptions(float stength, float skinProtect)
5063  : strengthLevel(stength), skinProtectLevel(skinProtect) {}
5064 
5066 };
5067 
5095  };
5096 
5109  };
5110 
5114 
5124  unsigned int color;
5125 
5134  const char* source;
5135 
5141 
5144  color(0xffffff),
5145  source(OPTIONAL_NULLPTR),
5147 };
5148 
5150  enum SEG_MODEL_TYPE {
5151 
5152  SEG_MODEL_AI = 1,
5153  SEG_MODEL_GREEN = 2
5154  };
5155 
5156  SEG_MODEL_TYPE modelType;
5157 
5158  float greenCapacity;
5159 
5160  SegmentationProperty() : modelType(SEG_MODEL_AI), greenCapacity(0.5) {}
5161 };
5162 
5165 enum AUDIO_TRACK_TYPE {
5169  AUDIO_TRACK_INVALID = -1,
5176  AUDIO_TRACK_MIXABLE = 0,
5182  AUDIO_TRACK_DIRECT = 1,
5183 };
5184 
5200 
5202 };
5203 
5224 enum VOICE_BEAUTIFIER_PRESET {
5227  VOICE_BEAUTIFIER_OFF = 0x00000000,
5233  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
5239  CHAT_BEAUTIFIER_FRESH = 0x01010200,
5245  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
5255  SINGING_BEAUTIFIER = 0x01020100,
5258  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
5261  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
5264  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
5267  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
5270  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
5273  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
5276  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
5279  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
5290  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
5291 };
5292 
5315 enum AUDIO_EFFECT_PRESET {
5318  AUDIO_EFFECT_OFF = 0x00000000,
5321  ROOM_ACOUSTICS_KTV = 0x02010100,
5324  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
5327  ROOM_ACOUSTICS_STUDIO = 0x02010300,
5330  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5337  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5340  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5343  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5355  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5366  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5374  ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5381  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5387  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5393  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5400  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5406  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5410  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5413  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5420  STYLE_TRANSFORMATION_RNB = 0x02030100,
5427  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5432  PITCH_CORRECTION = 0x02040100,
5433 
5437 };
5438 
5441 enum VOICE_CONVERSION_PRESET {
5444  VOICE_CONVERSION_OFF = 0x00000000,
5448  VOICE_CHANGER_NEUTRAL = 0x03010100,
5452  VOICE_CHANGER_SWEET = 0x03010200,
5456  VOICE_CHANGER_SOLID = 0x03010300,
5460  VOICE_CHANGER_BASS = 0x03010400,
5463  VOICE_CHANGER_CARTOON = 0x03010500,
5466  VOICE_CHANGER_CHILDLIKE = 0x03010600,
5469  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5472  VOICE_CHANGER_MONSTER = 0x03010800,
5475  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5478  VOICE_CHANGER_GROOT = 0x03010A00,
5481  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5484  VOICE_CHANGER_IRON_LADY = 0x03010C00,
5487  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5490  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5493  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5494 
5495 };
5496 
5499 enum HEADPHONE_EQUALIZER_PRESET {
5502  HEADPHONE_EQUALIZER_OFF = 0x00000000,
5505  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5508  HEADPHONE_EQUALIZER_INEAR = 0x04000002
5509 };
5510 
5513 enum VOICE_AI_TUNER_TYPE {
5516  VOICE_AI_TUNER_MATURE_MALE,
5519  VOICE_AI_TUNER_FRESH_MALE,
5522  VOICE_AI_TUNER_ELEGANT_FEMALE,
5525  VOICE_AI_TUNER_SWEET_FEMALE,
5528  VOICE_AI_TUNER_WARM_MALE_SINGING,
5531  VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
5534  VOICE_AI_TUNER_HUSKY_MALE_SINGING,
5537  VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
5540  VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
5543  VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
5544 };
5545 
5575  int bitrate;
5599 
5607  unsigned int highLightColor;
5617 
5619  : dimensions(1920, 1080),
5620  frameRate(5),
5621  bitrate(STANDARD_BITRATE),
5622  captureMouseCursor(true),
5623  windowFocus(false),
5624  excludeWindowList(OPTIONAL_NULLPTR),
5625  excludeWindowCount(0),
5626  highLightWidth(0),
5627  highLightColor(0),
5628  enableHighLight(false) {}
5629  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
5630  : dimensions(d),
5631  frameRate(f),
5632  bitrate(b),
5633  captureMouseCursor(true),
5634  windowFocus(false),
5635  excludeWindowList(OPTIONAL_NULLPTR),
5636  excludeWindowCount(0),
5637  highLightWidth(0),
5638  highLightColor(0),
5639  enableHighLight(false) {}
5640  ScreenCaptureParameters(int width, int height, int f, int b)
5641  : dimensions(width, height),
5642  frameRate(f),
5643  bitrate(b),
5644  captureMouseCursor(true),
5645  windowFocus(false),
5646  excludeWindowList(OPTIONAL_NULLPTR),
5647  excludeWindowCount(0),
5648  highLightWidth(0),
5649  highLightColor(0),
5650  enableHighLight(false) {}
5651  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
5652  : dimensions(width, height),
5653  frameRate(f),
5654  bitrate(b),
5655  captureMouseCursor(cur),
5656  windowFocus(fcs),
5657  excludeWindowList(OPTIONAL_NULLPTR),
5658  excludeWindowCount(0),
5659  highLightWidth(0),
5660  highLightColor(0),
5661  enableHighLight(false) {}
5662  ScreenCaptureParameters(int width, int height, int f, int b, view_t* ex, int cnt)
5663  : dimensions(width, height),
5664  frameRate(f),
5665  bitrate(b),
5666  captureMouseCursor(true),
5667  windowFocus(false),
5668  excludeWindowList(ex),
5669  excludeWindowCount(cnt),
5670  highLightWidth(0),
5671  highLightColor(0),
5672  enableHighLight(false) {}
5673  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t* ex,
5674  int cnt)
5675  : dimensions(width, height),
5676  frameRate(f),
5677  bitrate(b),
5678  captureMouseCursor(cur),
5679  windowFocus(fcs),
5680  excludeWindowList(ex),
5681  excludeWindowCount(cnt),
5682  highLightWidth(0),
5683  highLightColor(0),
5684  enableHighLight(false) {}
5685 };
5686 
5690 enum AUDIO_RECORDING_QUALITY_TYPE {
5695  AUDIO_RECORDING_QUALITY_LOW = 0,
5700  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5705  AUDIO_RECORDING_QUALITY_HIGH = 2,
5709  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5710 };
5711 
5715 enum AUDIO_FILE_RECORDING_TYPE {
5719  AUDIO_FILE_RECORDING_MIC = 1,
5723  AUDIO_FILE_RECORDING_PLAYBACK = 2,
5727  AUDIO_FILE_RECORDING_MIXED = 3,
5728 };
5729 
5733 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5737  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5741  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5745  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
5746 };
5747 
5757  const char* filePath;
5763  bool encode;
5778  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
5783  AUDIO_RECORDING_QUALITY_TYPE quality;
5784 
5791 
5793  : filePath(OPTIONAL_NULLPTR),
5794  encode(false),
5795  sampleRate(32000),
5796  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
5797  quality(AUDIO_RECORDING_QUALITY_LOW),
5798  recordingChannel(1) {}
5799 
5800  AudioRecordingConfiguration(const char* file_path, int sample_rate,
5801  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
5802  : filePath(file_path),
5803  encode(false),
5804  sampleRate(sample_rate),
5805  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
5806  quality(quality_type),
5807  recordingChannel(channel) {}
5808 
5809  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate,
5810  AUDIO_FILE_RECORDING_TYPE type,
5811  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
5812  : filePath(file_path),
5813  encode(enc),
5814  sampleRate(sample_rate),
5815  fileRecordingType(type),
5816  quality(quality_type),
5817  recordingChannel(channel) {}
5818 
5819  AudioRecordingConfiguration(const AudioRecordingConfiguration& rhs)
5820  : filePath(rhs.filePath),
5821  encode(rhs.encode),
5822  sampleRate(rhs.sampleRate),
5824  quality(rhs.quality),
5826 };
5827 
5835  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
5839  AUDIO_ENCODING_TYPE encodingType;
5840 
5842  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5843  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM) {}
5844 };
5849  public:
5862  virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length,
5863  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5864 
5877  virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length,
5878  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5879 
5892  virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length,
5893  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5894 
5895  virtual ~IAudioEncodedFrameObserver() {}
5896 };
5897 
5900 enum AREA_CODE {
5904  AREA_CODE_CN = 0x00000001,
5908  AREA_CODE_NA = 0x00000002,
5912  AREA_CODE_EU = 0x00000004,
5916  AREA_CODE_AS = 0x00000008,
5920  AREA_CODE_JP = 0x00000010,
5924  AREA_CODE_IN = 0x00000020,
5928  AREA_CODE_GLOB = (0xFFFFFFFF)
5929 };
5930 
5935 enum AREA_CODE_EX {
5939  AREA_CODE_OC = 0x00000040,
5943  AREA_CODE_SA = 0x00000080,
5947  AREA_CODE_AF = 0x00000100,
5951  AREA_CODE_KR = 0x00000200,
5955  AREA_CODE_HKMC = 0x00000400,
5959  AREA_CODE_US = 0x00000800,
5963  AREA_CODE_RU = 0x00001000,
5967  AREA_CODE_OVS = 0xFFFFFFFE
5968 };
5969 
5973 enum CHANNEL_MEDIA_RELAY_ERROR {
5976  RELAY_OK = 0,
5979  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5986  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
5989  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
5992  RELAY_ERROR_FAILED_JOIN_SRC = 4,
5995  RELAY_ERROR_FAILED_JOIN_DEST = 5,
5998  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6001  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6005  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6008  RELAY_ERROR_INTERNAL_ERROR = 9,
6011  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
6014  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
6015 };
6016 
6020 enum CHANNEL_MEDIA_RELAY_STATE {
6024  RELAY_STATE_IDLE = 0,
6027  RELAY_STATE_CONNECTING = 1,
6030  RELAY_STATE_RUNNING = 2,
6033  RELAY_STATE_FAILURE = 3,
6034 };
6035 
6041  uid_t uid;
6045  const char* channelName;
6049  const char* token;
6050 
6051  ChannelMediaInfo() : uid(0), channelName(NULL), token(NULL) {}
6052  ChannelMediaInfo(const char* c, const char* t, uid_t u) : uid(u), channelName(c), token(t) {}
6053 };
6054 
6092 
6094  : srcInfo(OPTIONAL_NULLPTR), destInfos(OPTIONAL_NULLPTR), destCount(0) {}
6095 };
6096 
6105 
6107 
6108  bool operator==(const UplinkNetworkInfo& rhs) const {
6110  }
6111 };
6112 
6118  const char* userId;
6122  VIDEO_STREAM_TYPE stream_type;
6126  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
6131 
6133  : userId(OPTIONAL_NULLPTR),
6134  stream_type(VIDEO_STREAM_HIGH),
6135  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
6136  expected_bitrate_bps(-1) {}
6137 
6139  : stream_type(rhs.stream_type),
6142  if (rhs.userId != OPTIONAL_NULLPTR) {
6143  const size_t len = std::strlen(rhs.userId);
6144  char* buf = new char[len + 1];
6145  std::memcpy(buf, rhs.userId, len);
6146  buf[len] = '\0';
6147  userId = buf;
6148  }
6149  }
6150 
6151  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
6152  if (this == &rhs) return *this;
6153  userId = OPTIONAL_NULLPTR;
6154  stream_type = rhs.stream_type;
6155  current_downscale_level = rhs.current_downscale_level;
6156  expected_bitrate_bps = rhs.expected_bitrate_bps;
6157  if (rhs.userId != OPTIONAL_NULLPTR) {
6158  const size_t len = std::strlen(rhs.userId);
6159  char* buf = new char[len + 1];
6160  std::memcpy(buf, rhs.userId, len);
6161  buf[len] = '\0';
6162  userId = buf;
6163  }
6164  return *this;
6165  }
6166 
6167  ~PeerDownlinkInfo() { delete[] userId; }
6168  };
6169 
6190 
6195  peer_downlink_info(OPTIONAL_NULLPTR),
6197 
6202  peer_downlink_info(OPTIONAL_NULLPTR),
6204  if (total_received_video_count <= 0) return;
6205  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
6206  for (int i = 0; i < total_received_video_count; ++i)
6208  }
6209 
6210  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
6211  if (this == &rhs) return *this;
6212  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
6213  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
6214  total_downscale_level_count = rhs.total_downscale_level_count;
6215  peer_downlink_info = OPTIONAL_NULLPTR;
6216  total_received_video_count = rhs.total_received_video_count;
6217  if (total_received_video_count > 0) {
6218  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
6219  for (int i = 0; i < total_received_video_count; ++i)
6220  peer_downlink_info[i] = rhs.peer_downlink_info[i];
6221  }
6222  return *this;
6223  }
6224 
6225  ~DownlinkNetworkInfo() { delete[] peer_downlink_info; }
6226 };
6227 
6234 enum ENCRYPTION_MODE {
6237  AES_128_XTS = 1,
6240  AES_128_ECB = 2,
6243  AES_256_XTS = 3,
6246  SM4_128_ECB = 4,
6249  AES_128_GCM = 5,
6252  AES_256_GCM = 6,
6256  AES_128_GCM2 = 7,
6260  AES_256_GCM2 = 8,
6263  MODE_END,
6264 };
6265 
6272  ENCRYPTION_MODE encryptionMode;
6279  const char* encryptionKey;
6287  uint8_t encryptionKdfSalt[32];
6288 
6289  bool datastreamEncryptionEnabled;
6290 
6292  : encryptionMode(AES_128_GCM2),
6293  encryptionKey(OPTIONAL_NULLPTR),
6294  datastreamEncryptionEnabled(false) {
6295  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
6296  }
6297 
6299  const char* getEncryptionString() const {
6300  switch (encryptionMode) {
6301  case AES_128_XTS:
6302  return "aes-128-xts";
6303  case AES_128_ECB:
6304  return "aes-128-ecb";
6305  case AES_256_XTS:
6306  return "aes-256-xts";
6307  case SM4_128_ECB:
6308  return "sm4-128-ecb";
6309  case AES_128_GCM:
6310  return "aes-128-gcm";
6311  case AES_256_GCM:
6312  return "aes-256-gcm";
6313  case AES_128_GCM2:
6314  return "aes-128-gcm-2";
6315  case AES_256_GCM2:
6316  return "aes-256-gcm-2";
6317  default:
6318  return "aes-128-gcm-2";
6319  }
6320  return "aes-128-gcm-2";
6321  }
6323 };
6324 
6327 enum ENCRYPTION_ERROR_TYPE {
6331  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
6336  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
6340  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
6345  ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
6349  ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
6350 };
6351 
6352 enum UPLOAD_ERROR_REASON {
6353  UPLOAD_SUCCESS = 0,
6354  UPLOAD_NET_ERROR = 1,
6355  UPLOAD_SERVER_ERROR = 2,
6356 };
6357 
6360 enum PERMISSION_TYPE {
6364  RECORD_AUDIO = 0,
6368  CAMERA = 1,
6369 
6370  SCREEN_CAPTURE = 2,
6371 };
6372 
6376 enum STREAM_SUBSCRIBE_STATE {
6380  SUB_STATE_IDLE = 0,
6394  SUB_STATE_NO_SUBSCRIBED = 1,
6398  SUB_STATE_SUBSCRIBING = 2,
6402  SUB_STATE_SUBSCRIBED = 3
6403 };
6404 
6408 enum STREAM_PUBLISH_STATE {
6412  PUB_STATE_IDLE = 0,
6423  PUB_STATE_NO_PUBLISHED = 1,
6427  PUB_STATE_PUBLISHING = 2,
6431  PUB_STATE_PUBLISHED = 3
6432 };
6433 
6438  view_t view;
6439  bool enableAudio;
6440  bool enableVideo;
6441  const char* token;
6442  const char* channelId;
6443  int intervalInSeconds;
6444 
6445  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
6446  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
6447 
6449  : view(OPTIONAL_NULLPTR),
6450  enableAudio(true),
6451  enableVideo(true),
6452  token(OPTIONAL_NULLPTR),
6453  channelId(OPTIONAL_NULLPTR),
6454  intervalInSeconds(2) {}
6455 };
6456 
6460 struct UserInfo {
6464  uid_t uid;
6468  char userAccount[MAX_USER_ACCOUNT_LENGTH];
6469 
6470  UserInfo() : uid(0) { userAccount[0] = '\0'; }
6471 };
6472 
6476 enum EAR_MONITORING_FILTER_TYPE {
6480  EAR_MONITORING_FILTER_NONE = (1 << 0),
6485  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
6489  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
6495  EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
6496 };
6497 
6501 enum THREAD_PRIORITY_TYPE {
6505  LOWEST = 0,
6509  LOW = 1,
6513  NORMAL = 2,
6517  HIGH = 3,
6521  HIGHEST = 4,
6525  CRITICAL = 5,
6526 };
6527 
6528 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
6529 
6533 struct ScreenVideoParameters {
6560  VideoDimensions dimensions;
6566  int frameRate = 15;
6571  int bitrate;
6572  /*
6573  * The content hint of the screen sharing:
6574  */
6575  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6576 
6577  ScreenVideoParameters() : dimensions(1280, 720) {}
6578 };
6579 
6583 struct ScreenAudioParameters {
6587  int sampleRate = 16000;
6591  int channels = 2;
6596  int captureSignalVolume = 100;
6597 };
6598 
6602 struct ScreenCaptureParameters2 {
6612  bool captureAudio = false;
6616  ScreenAudioParameters audioParams;
6626  bool captureVideo = true;
6630  ScreenVideoParameters videoParams;
6631 };
6632 #endif
6633 
6637 enum MEDIA_TRACE_EVENT {
6641  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6645  MEDIA_TRACE_EVENT_VIDEO_DECODED,
6646 };
6647 
6701 };
6702 
6703 enum CONFIG_FETCH_TYPE {
6707  CONFIG_FETCH_TYPE_INITIALIZE = 1,
6711  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6712 };
6713 
6715 enum LOCAL_PROXY_MODE {
6718  ConnectivityFirst = 0,
6721  LocalOnly = 1,
6722 };
6723 
6727  const char* serverDomain;
6730  const char* serverPath;
6739 
6740  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
6741 
6742  LogUploadServerInfo(const char* domain, const char* path, int port, bool https)
6743  : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
6744 };
6745 
6750 };
6751 
6755  const char** ipList;
6761  const char** domainList;
6769  const char* verifyDomainName;
6772  LOCAL_PROXY_MODE mode;
6783  : ipList(NULL),
6784  ipListSize(0),
6785  domainList(NULL),
6786  domainListSize(0),
6787  verifyDomainName(NULL),
6788  mode(ConnectivityFirst),
6789  disableAut(true) {}
6790 };
6791 
6792 enum RecorderStreamType {
6793  RTC,
6794  PREVIEW,
6795 };
6796 
6804  const char* channelId;
6808  uid_t uid;
6812  RecorderStreamType type;
6813  RecorderStreamInfo() : channelId(NULL), uid(0), type(RTC) {}
6814  RecorderStreamInfo(const char* channelId, uid_t uid)
6815  : channelId(channelId), uid(uid), type(RTC) {}
6816  RecorderStreamInfo(const char* channelId, uid_t uid, RecorderStreamType type)
6817  : channelId(channelId), uid(uid), type(type) {}
6818 };
6819 } // namespace rtc
6820 
6821 namespace base {
6822 
6824  public:
6825  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
6826  virtual ~IEngineBase() {}
6827 };
6828 
6829 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
6830  public:
6831  AParameter(IEngineBase& engine) { initialize(&engine); }
6832  AParameter(IEngineBase* engine) { initialize(engine); }
6834 
6835  private:
6836  bool initialize(IEngineBase* engine) {
6837  IAgoraParameter* p = OPTIONAL_NULLPTR;
6838  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
6839  return p != OPTIONAL_NULLPTR;
6840  }
6841 };
6842 
6844  public:
6845  virtual ~LicenseCallback() {}
6846  virtual void onCertificateRequired() = 0;
6847  virtual void onLicenseRequest() = 0;
6848  virtual void onLicenseValidated() = 0;
6849  virtual void onLicenseError(int result) = 0;
6850 };
6851 
6852 } // namespace base
6853 
6890 };
6894 struct VideoLayout {
6898  const char* channelId;
6902  rtc::uid_t uid;
6906  user_id_t strUid;
6910  uint32_t x;
6914  uint32_t y;
6918  uint32_t width;
6922  uint32_t height;
6927  uint32_t videoState;
6928 
6929  VideoLayout()
6930  : channelId(OPTIONAL_NULLPTR),
6931  uid(0),
6932  strUid(OPTIONAL_NULLPTR),
6933  x(0),
6934  y(0),
6935  width(0),
6936  height(0),
6937  videoState(0) {}
6938 };
6939 } // namespace agora
6940 
6946 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
6947 
6953 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
6954 
6955 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
6956 
6964 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString& credential);
6965 
6979 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char* credential_buf,
6980  int credential_len,
6981  const char* certificate_buf,
6982  int certificate_len);
6983 
6991 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback* callback);
6992 
7000 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
7001 
7002 /*
7003  * Get monotonic time in ms which can be used by capture time,
7004  * typical scenario is as follows:
7005  *
7006  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7007  * | // custom audio/video base capture time, e.g. the first audio/video capture time. | | int64_t
7008  * custom_capture_time_base; | | | |
7009  * int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
7010  * | | | // offset is fixed once calculated in the begining. | | const int64_t offset =
7011  * agora_monotonic_time - custom_capture_time_base; | | | | //
7012  * realtime_custom_audio/video_capture_time is the origin capture time that customer provided.| | //
7013  * actual_audio/video_capture_time is the actual capture time transfered to sdk. | |
7014  * int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
7015  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
7016  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7017  *
7018  * @return
7019  * - >= 0: Success.
7020  * - < 0: Failure.
7021  */
7022 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:4008
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:6727
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::VideoCanvas::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4708
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:3781
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:4145
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2425
agora::VideoLayout
Definition: AgoraBase.h:6894
agora::rtc::FilterEffectOptions::strength
float strength
Definition: AgoraBase.h:4942
agora::rtc::SimulcastConfig::STREAM_LAYER_1
@ STREAM_LAYER_1
Definition: AgoraBase.h:2162
agora::VideoLayout::channelId
const char * channelId
Definition: AgoraBase.h:6898
agora::rtc::UserInfo
Definition: AgoraBase.h:6460
agora::rtc::FilterEffectOptions
Definition: AgoraBase.h:4922
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:4151
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1516
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:2012
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:4378
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:5831
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:5549
agora::VideoLayout::x
uint32_t x
Definition: AgoraBase.h:6910
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:2248
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:3392
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:5099
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:4386
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1712
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:6749
agora::rtc::BeautyOptions
Definition: AgoraBase.h:4787
agora::rtc::SenderOptions
Definition: AgoraBase.h:1250
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:5575
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:4806
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2334
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:5090
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:3998
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:147
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:3422
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:4308
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:3900
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:5603
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2350
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2410
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3590
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:2733
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:6865
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:2004
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:5616
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:5003
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:4697
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4970
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:3943
agora::rtc::SimulcastConfig::StreamLayerIndex
StreamLayerIndex
Definition: AgoraBase.h:2158
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2445
agora::rtc::SimulcastConfig::STREAM_LAYER_2
@ STREAM_LAYER_2
Definition: AgoraBase.h:2166
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:2725
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:5587
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:5839
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1259
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1493
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:3989
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:6091
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:3594
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:4366
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:4811
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:5033
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:4692
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2318
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2143
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1104
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:6772
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:4315
agora::rtc::RecorderStreamInfo::channelId
const char * channelId
Definition: AgoraBase.h:6804
agora::rtc::LocalAccessPointConfiguration
Definition: AgoraBase.h:6752
agora::rtc::FilterEffectOptions::path
const char * path
Definition: AgoraBase.h:4937
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:4000
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Definition: AgoraBase.h:5000
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWIDTH
@ FACE_SHAPE_AREA_NOSEWIDTH
Definition: AgoraBase.h:4870
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:3952
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2322
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:2729
agora::rtc::Rectangle
Definition: AgoraBase.h:2217
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:6755
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:4663
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2430
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:5757
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1636
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:5050
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:6869
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:5078
agora::rtc::FaceShapeBeautyOptions::shapeStyle
FACE_SHAPE_BEAUTY_STYLE shapeStyle
Definition: AgoraBase.h:4907
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:4816
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2342
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4110
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1925
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1685
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1475
agora::util::AutoPtr
Definition: AgoraBase.h:100
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:4362
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:826
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:5598
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:3450
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:5193
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSELENGTH
@ FACE_SHAPE_AREA_NOSELENGTH
Definition: AgoraBase.h:4868
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:4062
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:6808
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1917
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2229
agora::rtc::SimulcastConfig::StreamLayerConfig::framerate
int framerate
Definition: AgoraBase.h:2200
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:1987
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:6691
agora::util::AList
Definition: AgoraBase.h:233
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2460
agora::rtc::VideoSubscriptionOptions
Definition: AgoraBase.h:1606
agora::rtc::TranscodingUser
Definition: AgoraBase.h:3884
agora::rtc::EchoTestConfiguration
Definition: AgoraBase.h:6437
agora::rtc::RtcImage
Definition: AgoraBase.h:3762
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:3894
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACECONTOUR
@ FACE_SHAPE_AREA_FACECONTOUR
Definition: AgoraBase.h:4854
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:6049
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:6700
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:5763
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:4802
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2261
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:6877
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:2130
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:4050
agora::rtc::FaceShapeAreaOptions::shapeArea
FACE_SHAPE_AREA shapeArea
Definition: AgoraBase.h:4877
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:6086
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:3772
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:5113
agora::rtc::FaceShapeBeautyOptions
Definition: AgoraBase.h:4895
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4104
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:4198
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:3793
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACELENGTH
@ FACE_SHAPE_AREA_FACELENGTH
Definition: AgoraBase.h:4856
agora::rtc::MixedAudioStream
Definition: AgoraBase.h:4238
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2566
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3405
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:3888
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:4720
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:6655
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:3822
agora::rtc::AdvancedConfigInfo
Definition: AgoraBase.h:6746
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2225
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3581
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:3767
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:3456
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1725
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2465
agora::rtc::SimulcastConfig::configs
StreamLayerConfig configs[STREAM_LAYER_COUNT_MAX]
Definition: AgoraBase.h:2211
agora::rtc::ColorEnhanceOptions
Definition: AgoraBase.h:5045
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:5774
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:820
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2293
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:6775
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:4390
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:4029
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2221
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:4184
agora::util::IString
Definition: AgoraBase.h:172
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:6769
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:6881
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
Definition: AgoraBase.h:4964
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1511
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:4176
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:4790
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2255
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3577
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1613
agora::rtc::RecorderStreamInfo::type
RecorderStreamType type
Definition: AgoraBase.h:6812
agora::rtc::LocalAudioMixerConfiguration::audioInputStreams
MixedAudioStream * audioInputStreams
Definition: AgoraBase.h:4293
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:4332
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2393
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:3460
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:4066
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:4042
agora::rtc::IPacketObserver
Definition: AgoraBase.h:3444
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:4037
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHIN
@ FACE_SHAPE_AREA_CHIN
Definition: AgoraBase.h:4864
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2382
agora::VideoLayout::width
uint32_t width
Definition: AgoraBase.h:6918
agora::rtc::VideoFormat
Definition: AgoraBase.h:2712
agora::rtc::AdvanceOptions
Definition: AgoraBase.h:1777
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:3922
agora::rtc::MixedAudioStream::trackId
track_id_t trackId
Definition: AgoraBase.h:4257
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2298
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEKBONE
@ FACE_SHAPE_AREA_CHEEKBONE
Definition: AgoraBase.h:4860
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:2085
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1786
agora::rtc::LocalAudioMixerConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4289
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2330
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2420
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:4382
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:2024
agora::rtc::VideoCanvas::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraBase.h:4725
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:6045
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:3966
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1463
agora::rtc::LocalAudioMixerConfiguration
Definition: AgoraBase.h:4285
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1690
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2366
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2338
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1469
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:6889
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2358
agora::VideoLayout::height
uint32_t height
Definition: AgoraBase.h:6922
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3399
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:4792
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:3972
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_FEMALE
@ FACE_SHAPE_BEAUTY_STYLE_FEMALE
Definition: AgoraBase.h:4900
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3337
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3351
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE
FACE_SHAPE_BEAUTY_STYLE
Definition: AgoraBase.h:4898
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEK
@ FACE_SHAPE_AREA_CHEEK
Definition: AgoraBase.h:4862
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSCALE
@ FACE_SHAPE_AREA_MOUTHSCALE
Definition: AgoraBase.h:4872
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:3904
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_MALE
@ FACE_SHAPE_BEAUTY_STYLE_MALE
Definition: AgoraBase.h:4902
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:5607
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACEWIDTH
@ FACE_SHAPE_AREA_FACEWIDTH
Definition: AgoraBase.h:4858
agora::base::AParameter
Definition: AgoraBase.h:6829
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:4821
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:6272
agora::util::AOutputIterator
Definition: AgoraBase.h:202
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2288
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:5848
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1694
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:3333
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:6666
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:4370
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1721
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1704
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:4014
agora::rtc::SimulcastConfig::StreamLayerConfig
Definition: AgoraBase.h:2192
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3345
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:4018
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:4046
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:6057
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:5140
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:6464
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2106
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:3809
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:5124
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:4358
agora::rtc::VideoDenoiserOptions
Definition: AgoraBase.h:4997
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2268
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5017
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:4714
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1543
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1929
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2233
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1547
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2302
agora::rtc::MixedAudioStream::channelId
const char * channelId
Definition: AgoraBase.h:4252
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1497
agora::UserInfo
Definition: AgoraBase.h:816
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2469
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:5071
agora::rtc::WlAccStats::frozenRatioPercent
unsigned short frozenRatioPercent
Definition: AgoraBase.h:4593
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:4984
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:4673
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:4116
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:5835
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:6287
agora::rtc::WlAccStats::lossRatePercent
unsigned short lossRatePercent
Definition: AgoraBase.h:4597
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:5086
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:4024
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:3416
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:6038
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:832
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:4959
agora::VideoLayout::y
uint32_t y
Definition: AgoraBase.h:6914
agora::rtc::WlAccStats
Definition: AgoraBase.h:4585
agora::rtc::LocalAudioStats::aecEstimatedDelay
int aecEstimatedDelay
Definition: AgoraBase.h:3606
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:4682
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:6873
agora::rtc::LocalAudioStats::earMonitorDelay
int earMonitorDelay
Definition: AgoraBase.h:3602
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA
FACE_SHAPE_AREA
Definition: AgoraBase.h:4846
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3355
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2346
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1507
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1729
agora::rtc::SimulcastConfig::STREAM_LAYER_6
@ STREAM_LAYER_6
Definition: AgoraBase.h:2182
agora::rtc::LocalAudioStats::audioPlayoutDelay
int audioPlayoutDelay
Definition: AgoraBase.h:3598
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:6885
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3359
agora::rtc::AdvanceOptions::encodeAlpha
bool encodeAlpha
Definition: AgoraBase.h:1792
agora::VideoLayout::strUid
user_id_t strUid
Definition: AgoraBase.h:6906
agora::rtc::LogUploadServerInfo
Definition: AgoraBase.h:6724
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Definition: AgoraBase.h:5010
agora::rtc::AudioTrackConfig::enableAudioProcessing
bool enableAudioProcessing
Definition: AgoraBase.h:5199
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4702
agora::rtc::CodecCapInfo
Definition: AgoraBase.h:1894
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:5569
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:5790
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2455
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:4059
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:3785
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2134
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1708
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:4321
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2374
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4180
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:4796
agora::base::LicenseCallback
Definition: AgoraBase.h:6843
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:6267
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:3994
agora::rtc::SimulcastConfig::STREAM_LOW
@ STREAM_LOW
Definition: AgoraBase.h:2186
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:5074
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:6662
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:4677
agora::rtc::LocalAccessPointConfiguration::disableAut
bool disableAut
Definition: AgoraBase.h:6781
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:5563
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1100
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:4125
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:3985
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:4100
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:5134
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:6730
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYESCALE
@ FACE_SHAPE_AREA_EYESCALE
Definition: AgoraBase.h:4866
agora::rtc::SimulcastConfig::STREAM_LAYER_5
@ STREAM_LAYER_5
Definition: AgoraBase.h:2178
agora::VideoLayout::videoState
uint32_t videoState
Definition: AgoraBase.h:6927
agora::rtc::MixedAudioStream::sourceType
AUDIO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4242
agora::rtc::RtcStats
Definition: AgoraBase.h:2314
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1619
agora::rtc::IAudioEncodedFrameObserver::onRecordAudioEncodedFrame
virtual void onRecordAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::VirtualBackgroundSource::BACKGROUND_VIDEO
@ BACKGROUND_VIDEO
Definition: AgoraBase.h:5094
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2283
agora::rtc::LowlightEnhanceOptions
Definition: AgoraBase.h:4949
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:3916
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:3959
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1521
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2326
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2362
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:5029
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2354
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3573
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:6682
agora::rtc::SimulcastConfig::STREAM_LAYER_COUNT_MAX
@ STREAM_LAYER_COUNT_MAX
Definition: AgoraBase.h:2190
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:2277
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:2019
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3569
agora::rtc::RecorderStreamInfo
Definition: AgoraBase.h:6800
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:6733
agora::rtc::SimulcastConfig
Definition: AgoraBase.h:2154
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:5580
agora::rtc::MixedAudioStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4247
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:3777
agora::rtc::FocalLengthInfo::focalLengthType
CAMERA_FOCAL_LENGTH_TYPE focalLengthType
Definition: AgoraBase.h:1911
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1455
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2405
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2400
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:4327
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:3329
agora::rtc::IAudioEncodedFrameObserver::onPlaybackAudioEncodedFrame
virtual void onPlaybackAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::AdvanceOptions::encodingPreference
ENCODING_PREFERENCE encodingPreference
Definition: AgoraBase.h:1781
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3341
agora::rtc::IAudioEncodedFrameObserver::onMixedAudioEncodedFrame
virtual void onMixedAudioEncodedFrame(const uint8_t *frameBuffer, int length, const EncodedAudioFrameInfo &audioEncodedFrameInfo)=0
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_FAST
@ LOW_LIGHT_ENHANCE_LEVEL_FAST
Definition: AgoraBase.h:4975
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2435
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:1900
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:4069
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:1898
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:5751
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:6861
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
Definition: AgoraBase.h:4953
agora::util::IContainer
Definition: AgoraBase.h:193
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:5108
agora::rtc::LocalAudioMixerConfiguration::syncWithLocalMic
bool syncWithLocalMic
Definition: AgoraBase.h:4300
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1096
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:5102
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:6674
agora::rtc::FaceShapeAreaOptions::shapeIntensity
int shapeIntensity
Definition: AgoraBase.h:4884
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:4138
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2097
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:4980
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:4004
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FOREHEAD
@ FACE_SHAPE_AREA_FOREHEAD
Definition: AgoraBase.h:4852
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1896
agora::rtc::AudioTrackConfig
Definition: AgoraBase.h:5187
agora::rtc::FocalLengthInfo::cameraDirection
int cameraDirection
Definition: AgoraBase.h:1909
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:6758
agora::rtc::SimulcastConfig::STREAM_LAYER_4
@ STREAM_LAYER_4
Definition: AgoraBase.h:2174
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:4134
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:4158
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:2139
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:3799
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4120
agora::rtc::VideoCanvas::subviewUid
uid_t subviewUid
Definition: AgoraBase.h:4669
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:6279
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1716
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:5105
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:5594
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:6761
agora::rtc::SimulcastConfig::STREAM_LAYER_3
@ STREAM_LAYER_3
Definition: AgoraBase.h:2170
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1535
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3314
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:4189
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_HEADSCALE
@ FACE_SHAPE_AREA_HEADSCALE
Definition: AgoraBase.h:4850
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1254
agora::rtc::SimulcastConfig::StreamLayerConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2196
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:5082
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1551
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:4957
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2450
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NONE
@ FACE_SHAPE_AREA_NONE
Definition: AgoraBase.h:4848
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:3978
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2473
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2370
agora::rtc::FaceShapeAreaOptions
Definition: AgoraBase.h:4843
agora::rtc::CodecCapLevels
Definition: AgoraBase.h:1884
agora::SpatialAudioParams
Definition: AgoraBase.h:6857
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:5060
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:5025
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1921
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:4394
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:4130
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2440
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:4794
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:6070
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:2008
agora::rtc::WlAccStats::e2eDelayPercent
unsigned short e2eDelayPercent
Definition: AgoraBase.h:4589
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:3829
agora::rtc::FocalLengthInfo
Definition: AgoraBase.h:1907
agora::rtc::DeviceInfo
Definition: AgoraBase.h:3430
agora::base::IEngineBase
Definition: AgoraBase.h:6823
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1320
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:5783
agora::util::IIterator
Definition: AgoraBase.h:184
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:6468
agora::rtc::VideoRenderingTracingInfo
Definition: AgoraBase.h:6651
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:6738
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:5005
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1503
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1698
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2415
agora::rtc::FaceShapeBeautyOptions::styleIntensity
int styleIntensity
Definition: AgoraBase.h:4911
agora::VideoLayout::uid
rtc::uid_t uid
Definition: AgoraBase.h:6902
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:6764
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2561
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:3908
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:4659
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3585
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:5778
agora::rtc::SegmentationProperty
Definition: AgoraBase.h:5149
agora::rtc::SimulcastConfig::StreamLayerConfig::enable
bool enable
Definition: AgoraBase.h:2204
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:6041