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,
413  WARN_ADM_RECORD_IS_OCCUPIED = 1033,
421  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
425  WARN_APM_HOWLING = 1051,
429  WARN_ADM_GLITCH_STATE = 1052,
433  WARN_ADM_IMPROPER_SETTINGS = 1053,
437  WARN_ADM_POP_STATE = 1055,
441  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
446  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
454  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
455 };
456 
460 enum ERROR_CODE_TYPE {
464  ERR_OK = 0,
465  // 1~1000
469  ERR_FAILED = 1,
474  ERR_INVALID_ARGUMENT = 2,
481  ERR_NOT_READY = 3,
485  ERR_NOT_SUPPORTED = 4,
489  ERR_REFUSED = 5,
493  ERR_BUFFER_TOO_SMALL = 6,
497  ERR_NOT_INITIALIZED = 7,
501  ERR_INVALID_STATE = 8,
506  ERR_NO_PERMISSION = 9,
512  ERR_TIMEDOUT = 10,
517  ERR_CANCELED = 11,
523  ERR_TOO_OFTEN = 12,
529  ERR_BIND_SOCKET = 13,
534  ERR_NET_DOWN = 14,
540  ERR_JOIN_CHANNEL_REJECTED = 17,
547  ERR_LEAVE_CHANNEL_REJECTED = 18,
551  ERR_ALREADY_IN_USE = 19,
556  ERR_ABORTED = 20,
561  ERR_INIT_NET_ENGINE = 21,
566  ERR_RESOURCE_LIMITED = 22,
573  ERR_INVALID_APP_ID = 101,
578  ERR_INVALID_CHANNEL_NAME = 102,
584  ERR_NO_SERVER_RESOURCES = 103,
597  ERR_TOKEN_EXPIRED = 109,
614  ERR_INVALID_TOKEN = 110,
619  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
624  ERR_CONNECTION_LOST = 112, // only used in web sdk
629  ERR_NOT_IN_CHANNEL = 113,
634  ERR_SIZE_TOO_LARGE = 114,
639  ERR_BITRATE_LIMIT = 115,
644  ERR_TOO_MANY_DATA_STREAMS = 116,
648  ERR_STREAM_MESSAGE_TIMEOUT = 117,
652  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
657  ERR_DECRYPTION_FAILED = 120,
661  ERR_INVALID_USER_ID = 121,
666  ERR_DATASTREAM_DECRYPTION_FAILED = 122,
670  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
676  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
677 
681  ERR_LICENSE_CREDENTIAL_INVALID = 131,
682 
687  ERR_INVALID_USER_ACCOUNT = 134,
688 
695  ERR_MODULE_NOT_FOUND = 157,
696 
697  // Licensing, keep the license error code same as the main version
698  ERR_CERT_RAW = 157,
699  ERR_CERT_JSON_PART = 158,
700  ERR_CERT_JSON_INVAL = 159,
701  ERR_CERT_JSON_NOMEM = 160,
702  ERR_CERT_CUSTOM = 161,
703  ERR_CERT_CREDENTIAL = 162,
704  ERR_CERT_SIGN = 163,
705  ERR_CERT_FAIL = 164,
706  ERR_CERT_BUF = 165,
707  ERR_CERT_NULL = 166,
708  ERR_CERT_DUEDATE = 167,
709  ERR_CERT_REQUEST = 168,
710 
711  // PcmSend Error num
712  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
713  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
714 
716  // signaling: 400~600
717  ERR_LOGIN_ALREADY_LOGIN = 428,
718 
720  // 1001~2000
724  ERR_LOAD_MEDIA_ENGINE = 1001,
730  ERR_ADM_GENERAL_ERROR = 1005,
735  ERR_ADM_INIT_PLAYOUT = 1008,
739  ERR_ADM_START_PLAYOUT = 1009,
743  ERR_ADM_STOP_PLAYOUT = 1010,
748  ERR_ADM_INIT_RECORDING = 1011,
752  ERR_ADM_START_RECORDING = 1012,
756  ERR_ADM_STOP_RECORDING = 1013,
760  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
761 };
762 
763 enum LICENSE_ERROR_TYPE {
767  LICENSE_ERR_INVALID = 1,
771  LICENSE_ERR_EXPIRE = 2,
775  LICENSE_ERR_MINUTES_EXCEED = 3,
779  LICENSE_ERR_LIMITED_PERIOD = 4,
783  LICENSE_ERR_DIFF_DEVICES = 5,
787  LICENSE_ERR_INTERNAL = 99,
788 };
789 
793 enum AUDIO_SESSION_OPERATION_RESTRICTION {
797  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
801  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
805  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
810  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
815  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
816 };
817 
818 typedef const char* user_id_t;
819 typedef void* view_t;
820 
824 struct UserInfo {
834  bool hasAudio;
840  bool hasVideo;
841 
842  UserInfo() : hasAudio(false), hasVideo(false) {}
843 };
844 
845 typedef util::AList<UserInfo> UserList;
846 
847 // Shared between Agora Service and Rtc Engine
848 namespace rtc {
849 
853 enum USER_OFFLINE_REASON_TYPE {
857  USER_OFFLINE_QUIT = 0,
863  USER_OFFLINE_DROPPED = 1,
867  USER_OFFLINE_BECOME_AUDIENCE = 2,
868 };
869 
870 enum INTERFACE_ID_TYPE {
871  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
872  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
873  AGORA_IID_PARAMETER_ENGINE = 3,
874  AGORA_IID_MEDIA_ENGINE = 4,
875  AGORA_IID_AUDIO_ENGINE = 5,
876  AGORA_IID_VIDEO_ENGINE = 6,
877  AGORA_IID_RTC_CONNECTION = 7,
878  AGORA_IID_SIGNALING_ENGINE = 8,
879  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
880  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
881  AGORA_IID_STATE_SYNC = 13,
882  AGORA_IID_META_SERVICE = 14,
883  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
884  AGORA_IID_H265_TRANSCODER = 16,
885 };
886 
890 enum QUALITY_TYPE {
895  QUALITY_UNKNOWN __deprecated = 0,
899  QUALITY_EXCELLENT = 1,
904  QUALITY_GOOD = 2,
908  QUALITY_POOR = 3,
912  QUALITY_BAD = 4,
916  QUALITY_VBAD = 5,
920  QUALITY_DOWN = 6,
924  QUALITY_UNSUPPORTED = 7,
928  QUALITY_DETECTING = 8,
929 };
930 
934 enum FIT_MODE_TYPE {
939  MODE_COVER = 1,
940 
946  MODE_CONTAIN = 2,
947 };
948 
952 enum VIDEO_ORIENTATION {
956  VIDEO_ORIENTATION_0 = 0,
960  VIDEO_ORIENTATION_90 = 90,
964  VIDEO_ORIENTATION_180 = 180,
968  VIDEO_ORIENTATION_270 = 270
969 };
970 
974 enum FRAME_RATE {
978  FRAME_RATE_FPS_1 = 1,
982  FRAME_RATE_FPS_7 = 7,
986  FRAME_RATE_FPS_10 = 10,
990  FRAME_RATE_FPS_15 = 15,
994  FRAME_RATE_FPS_24 = 24,
998  FRAME_RATE_FPS_30 = 30,
1002  FRAME_RATE_FPS_60 = 60,
1003 };
1004 
1005 enum FRAME_WIDTH {
1006  FRAME_WIDTH_960 = 960,
1007 };
1008 
1009 enum FRAME_HEIGHT {
1010  FRAME_HEIGHT_540 = 540,
1011 };
1012 
1016 enum VIDEO_FRAME_TYPE {
1018  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1020  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1022  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1024  VIDEO_FRAME_TYPE_B_FRAME = 5,
1026  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1028  VIDEO_FRAME_TYPE_UNKNOW
1029 };
1030 
1034 enum ORIENTATION_MODE {
1042  ORIENTATION_MODE_ADAPTIVE = 0,
1049  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1056  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1057 };
1058 
1062 enum DEGRADATION_PREFERENCE {
1069  MAINTAIN_AUTO = -1,
1077  MAINTAIN_QUALITY = 0,
1083  MAINTAIN_FRAMERATE = 1,
1090  MAINTAIN_BALANCED = 2,
1094  MAINTAIN_RESOLUTION = 3,
1098  DISABLED = 100,
1099 };
1100 
1108  int width;
1112  int height;
1113  VideoDimensions() : width(640), height(480) {}
1114  VideoDimensions(int w, int h) : width(w), height(h) {}
1115  bool operator==(const VideoDimensions& rhs) const {
1116  return width == rhs.width && height == rhs.height;
1117  }
1118 };
1119 
1125 const int STANDARD_BITRATE = 0;
1126 
1134 const int COMPATIBLE_BITRATE = -1;
1135 
1139 const int DEFAULT_MIN_BITRATE = -1;
1140 
1144 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1145 
1149 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1150  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1151  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1152  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1153 };
1154 
1158 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1160  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1162  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1164  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1166  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1168  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1169 };
1170 
1174 enum VIDEO_CODEC_TYPE {
1180  VIDEO_CODEC_NONE = 0,
1184  VIDEO_CODEC_VP8 = 1,
1188  VIDEO_CODEC_H264 = 2,
1192  VIDEO_CODEC_H265 = 3,
1198  VIDEO_CODEC_GENERIC = 6,
1203  VIDEO_CODEC_GENERIC_H264 = 7,
1208  VIDEO_CODEC_AV1 = 12,
1212  VIDEO_CODEC_VP9 = 13,
1216  VIDEO_CODEC_GENERIC_JPEG = 20,
1217 };
1218 
1222 enum CAMERA_FOCAL_LENGTH_TYPE {
1226  CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1230  CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1234  CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1238  CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1239 };
1240 
1244 enum TCcMode {
1248  CC_ENABLED,
1252  CC_DISABLED,
1253 };
1254 
1262  TCcMode ccMode;
1267  VIDEO_CODEC_TYPE codecType;
1268 
1329 
1330  SenderOptions() : ccMode(CC_ENABLED), codecType(VIDEO_CODEC_H265), targetBitrate(6500) {}
1331 };
1332 
1336 enum AUDIO_CODEC_TYPE {
1340  AUDIO_CODEC_OPUS = 1,
1341  // kIsac = 2,
1345  AUDIO_CODEC_PCMA = 3,
1349  AUDIO_CODEC_PCMU = 4,
1353  AUDIO_CODEC_G722 = 5,
1354  // kIlbc = 6,
1356  // AUDIO_CODEC_AAC = 7,
1360  AUDIO_CODEC_AACLC = 8,
1364  AUDIO_CODEC_HEAAC = 9,
1368  AUDIO_CODEC_JC1 = 10,
1372  AUDIO_CODEC_HEAAC2 = 11,
1376  AUDIO_CODEC_LPCNET = 12,
1380  AUDIO_CODEC_OPUSMC = 13,
1381 };
1382 
1386 enum AUDIO_ENCODING_TYPE {
1391  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1396  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1401  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1406  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1411  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1416  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1421  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1426  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1431  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1436  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1441  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1442 };
1443 
1447 enum WATERMARK_FIT_MODE {
1452  FIT_MODE_COVER_POSITION,
1457  FIT_MODE_USE_IMAGE_RATIO
1458 };
1459 
1465 
1471  bool speech;
1478 };
1479 
1485  : codec(AUDIO_CODEC_AACLC),
1486  sampleRateHz(0),
1487  samplesPerChannel(0),
1488  numberOfChannels(0),
1489  captureTimeMs(0) {}
1490 
1492  : codec(rhs.codec),
1501  AUDIO_CODEC_TYPE codec;
1520 
1524  int64_t captureTimeMs;
1525 };
1531  : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1532 
1535  channelNum(rhs.channelNum),
1536  samplesOut(rhs.samplesOut),
1538  ntpTimeMs(rhs.ntpTimeMs) {}
1539 
1544 
1545  int16_t channelNum;
1546 
1547  // Output
1551  size_t samplesOut;
1555  int64_t elapsedTimeMs;
1559  int64_t ntpTimeMs;
1560 };
1564 enum H264PacketizeMode {
1568  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1572  SingleNalUnit, // Mode 0 - only single NALU allowed
1573 };
1574 
1578 enum VIDEO_STREAM_TYPE {
1582  VIDEO_STREAM_HIGH = 0,
1586  VIDEO_STREAM_LOW = 1,
1590  VIDEO_STREAM_LAYER_1 = 4,
1594  VIDEO_STREAM_LAYER_2 = 5,
1598  VIDEO_STREAM_LAYER_3 = 6,
1602  VIDEO_STREAM_LAYER_4 = 7,
1606  VIDEO_STREAM_LAYER_5 = 8,
1610  VIDEO_STREAM_LAYER_6 = 9,
1611 
1612 };
1613 
1628 
1630 };
1631 
1634 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1637  MAX_USER_ACCOUNT_LENGTH = 256
1638 };
1639 
1642 enum MAX_CUSTOM_USER_INFO_LENGTH_TYPE {
1645  MAX_CUSTOM_USER_INFO_LENGTH = 1024
1646 };
1647 
1654  : uid(0),
1655  codecType(VIDEO_CODEC_H264),
1656  width(0),
1657  height(0),
1658  framesPerSecond(0),
1659  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1660  rotation(VIDEO_ORIENTATION_0),
1661  trackId(0),
1662  captureTimeMs(0),
1663  decodeTimeMs(0),
1664  streamType(VIDEO_STREAM_HIGH),
1665  presentationMs(-1) {}
1666 
1668  : uid(rhs.uid),
1669  codecType(rhs.codecType),
1670  width(rhs.width),
1671  height(rhs.height),
1673  frameType(rhs.frameType),
1674  rotation(rhs.rotation),
1675  trackId(rhs.trackId),
1678  streamType(rhs.streamType),
1679  presentationMs(rhs.presentationMs) {}
1680 
1681  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1682  if (this == &rhs) return *this;
1683  uid = rhs.uid;
1684  codecType = rhs.codecType;
1685  width = rhs.width;
1686  height = rhs.height;
1688  frameType = rhs.frameType;
1689  rotation = rhs.rotation;
1690  trackId = rhs.trackId;
1692  decodeTimeMs = rhs.decodeTimeMs;
1693  streamType = rhs.streamType;
1694  presentationMs = rhs.presentationMs;
1695  return *this;
1696  }
1697 
1701  uid_t uid;
1706  VIDEO_CODEC_TYPE codecType;
1710  int width;
1714  int height;
1724  VIDEO_FRAME_TYPE frameType;
1728  VIDEO_ORIENTATION rotation;
1732  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1733  // and additional payload for later implementation.
1737  int64_t captureTimeMs;
1741  int64_t decodeTimeMs;
1745  VIDEO_STREAM_TYPE streamType;
1746 
1747  // @technical preview
1748  int64_t presentationMs;
1749 };
1750 
1754 enum COMPRESSION_PREFERENCE {
1761  PREFER_COMPRESSION_AUTO = -1,
1765  PREFER_LOW_LATENCY = 0,
1769  PREFER_QUALITY = 1,
1770 };
1771 
1775 enum ENCODING_PREFERENCE {
1779  PREFER_AUTO = -1,
1783  PREFER_SOFTWARE = 0,
1787  PREFER_HARDWARE = 1,
1788 };
1789 
1797  ENCODING_PREFERENCE encodingPreference;
1798 
1802  COMPRESSION_PREFERENCE compressionPreference;
1803 
1809 
1810  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1811  compressionPreference(PREFER_COMPRESSION_AUTO),
1812  encodeAlpha(false) {}
1813 
1814  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1815  COMPRESSION_PREFERENCE compression_preference,
1816  bool encode_alpha) :
1817  encodingPreference(encoding_preference),
1818  compressionPreference(compression_preference),
1819  encodeAlpha(encode_alpha) {}
1820 
1821  bool operator==(const AdvanceOptions& rhs) const {
1822  return encodingPreference == rhs.encodingPreference &&
1823  compressionPreference == rhs.compressionPreference &&
1824  encodeAlpha == rhs.encodeAlpha;
1825  }
1826 };
1827 
1831 enum VIDEO_MIRROR_MODE_TYPE {
1835  VIDEO_MIRROR_MODE_AUTO = 0,
1839  VIDEO_MIRROR_MODE_ENABLED = 1,
1843  VIDEO_MIRROR_MODE_DISABLED = 2,
1844 };
1845 
1846 #if defined(__APPLE__) && TARGET_OS_IOS
1847 
1850 enum CAMERA_FORMAT_TYPE {
1852  CAMERA_FORMAT_NV12,
1854  CAMERA_FORMAT_BGRA,
1855 };
1856 #endif
1857 
1858 enum VIDEO_MODULE_TYPE {
1860  VIDEO_MODULE_CAPTURER = 0,
1862  VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1864  VIDEO_MODULE_HARDWARE_ENCODER = 2,
1866  VIDEO_MODULE_SOFTWARE_DECODER = 3,
1868  VIDEO_MODULE_HARDWARE_DECODER = 4,
1870  VIDEO_MODULE_RENDERER = 5,
1871 };
1872 
1873 enum HDR_CAPABILITY {
1875  HDR_CAPABILITY_UNKNOWN = -1,
1877  HDR_CAPABILITY_UNSUPPORTED = 0,
1879  HDR_CAPABILITY_SUPPORTED = 1,
1880 };
1881 
1883 enum CODEC_CAP_MASK {
1885  CODEC_CAP_MASK_NONE = 0,
1886 
1888  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1889 
1891  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1892 
1894  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1895 
1897  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1898 };
1899 
1901  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1902  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1903 
1904  CodecCapLevels()
1905  : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
1906  swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1907 };
1908 
1912  VIDEO_CODEC_TYPE codecType;
1917 
1918  CodecCapInfo() : codecType(VIDEO_CODEC_NONE), codecCapMask(0) {}
1919 };
1920 
1927  CAMERA_FOCAL_LENGTH_TYPE focalLengthType;
1928 };
1929 
1937  VIDEO_CODEC_TYPE codecType;
2003  int bitrate;
2004 
2024  ORIENTATION_MODE orientationMode;
2028  DEGRADATION_PREFERENCE degradationPreference;
2029 
2035  VIDEO_MIRROR_MODE_TYPE mirrorMode;
2036 
2041 
2042  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2043  : codecType(VIDEO_CODEC_NONE),
2044  dimensions(d),
2045  frameRate(f),
2046  bitrate(b),
2047  minBitrate(DEFAULT_MIN_BITRATE),
2048  orientationMode(m),
2049  degradationPreference(MAINTAIN_AUTO),
2050  mirrorMode(mirror),
2051  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2052  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2053  : codecType(VIDEO_CODEC_NONE),
2054  dimensions(width, height),
2055  frameRate(f),
2056  bitrate(b),
2057  minBitrate(DEFAULT_MIN_BITRATE),
2058  orientationMode(m),
2059  degradationPreference(MAINTAIN_AUTO),
2060  mirrorMode(mirror),
2061  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2062  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
2063  : codecType(config.codecType),
2064  dimensions(config.dimensions),
2065  frameRate(config.frameRate),
2066  bitrate(config.bitrate),
2067  minBitrate(config.minBitrate),
2070  mirrorMode(config.mirrorMode),
2071  advanceOptions(config.advanceOptions) {}
2072  VideoEncoderConfiguration()
2073  : codecType(VIDEO_CODEC_NONE),
2074  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2075  frameRate(FRAME_RATE_FPS_15),
2076  bitrate(STANDARD_BITRATE),
2077  minBitrate(DEFAULT_MIN_BITRATE),
2078  orientationMode(ORIENTATION_MODE_ADAPTIVE),
2079  degradationPreference(MAINTAIN_AUTO),
2080  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
2081  advanceOptions(PREFER_AUTO, PREFER_COMPRESSION_AUTO, false) {}
2082 
2083  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
2084  if (this == &rhs) return *this;
2085  codecType = rhs.codecType;
2086  dimensions = rhs.dimensions;
2087  frameRate = rhs.frameRate;
2088  bitrate = rhs.bitrate;
2089  minBitrate = rhs.minBitrate;
2090  orientationMode = rhs.orientationMode;
2091  degradationPreference = rhs.degradationPreference;
2092  mirrorMode = rhs.mirrorMode;
2093  advanceOptions = rhs.advanceOptions;
2094  return *this;
2095  }
2096 };
2097 
2122  bool ordered;
2123 };
2124 
2128 enum SIMULCAST_STREAM_MODE {
2129  /*
2130  * disable simulcast stream until receive request for enable simulcast stream by other broadcaster
2131  */
2132  AUTO_SIMULCAST_STREAM = -1,
2133  /*
2134  * disable simulcast stream
2135  */
2136  DISABLE_SIMULCAST_STREAM = 0,
2137  /*
2138  * always enable simulcast stream
2139  */
2140  ENABLE_SIMULCAST_STREAM = 1,
2141 };
2142 
2160  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
2162  bool operator==(const SimulcastStreamConfig& rhs) const {
2163  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
2164  }
2165 };
2166 
2207  };
2220  bool enable;
2221  StreamLayerConfig() : dimensions(0, 0), framerate(0), enable(false) {}
2222  };
2223 
2228 };
2233 struct Rectangle {
2237  int x;
2241  int y;
2245  int width;
2249  int height;
2250 
2251  Rectangle() : x(0), y(0), width(0), height(0) {}
2252  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2253 };
2254 
2271  float xRatio;
2277  float yRatio;
2284  float widthRatio;
2285 
2286  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2287  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2288 };
2289 
2318  WATERMARK_FIT_MODE mode;
2319 
2321  : visibleInPreview(true),
2322  positionInLandscapeMode(0, 0, 0, 0),
2323  positionInPortraitMode(0, 0, 0, 0),
2324  mode(FIT_MODE_COVER_POSITION) {}
2325 };
2326 
2330 struct RtcStats {
2334  unsigned int duration;
2338  unsigned int txBytes;
2342  unsigned int rxBytes;
2346  unsigned int txAudioBytes;
2350  unsigned int txVideoBytes;
2354  unsigned int rxAudioBytes;
2358  unsigned int rxVideoBytes;
2362  unsigned short txKBitRate;
2366  unsigned short rxKBitRate;
2370  unsigned short rxAudioKBitRate;
2374  unsigned short txAudioKBitRate;
2378  unsigned short rxVideoKBitRate;
2382  unsigned short txVideoKBitRate;
2386  unsigned short lastmileDelay;
2390  unsigned int userCount;
2398  double cpuAppUsage;
2490  RtcStats()
2491  : duration(0),
2492  txBytes(0),
2493  rxBytes(0),
2494  txAudioBytes(0),
2495  txVideoBytes(0),
2496  rxAudioBytes(0),
2497  rxVideoBytes(0),
2498  txKBitRate(0),
2499  rxKBitRate(0),
2500  rxAudioKBitRate(0),
2501  txAudioKBitRate(0),
2502  rxVideoKBitRate(0),
2503  txVideoKBitRate(0),
2504  lastmileDelay(0),
2505  userCount(0),
2506  cpuAppUsage(0.0),
2507  cpuTotalUsage(0.0),
2508  gatewayRtt(0),
2509  memoryAppUsageRatio(0.0),
2510  memoryTotalUsageRatio(0.0),
2512  connectTimeMs(0),
2522  txPacketLossRate(0),
2523  rxPacketLossRate(0) {}
2524 };
2525 
2529 enum CLIENT_ROLE_TYPE {
2533  CLIENT_ROLE_BROADCASTER = 1,
2537  CLIENT_ROLE_AUDIENCE = 2,
2538 };
2539 
2544 enum QUALITY_ADAPT_INDICATION {
2548  ADAPT_NONE = 0,
2552  ADAPT_UP_BANDWIDTH = 1,
2556  ADAPT_DOWN_BANDWIDTH = 2,
2557 };
2558 
2563 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2567  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2571  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2572 };
2573 
2582  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2583 
2584  ClientRoleOptions() : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2585 };
2586 
2590 enum EXPERIENCE_QUALITY_TYPE {
2592  EXPERIENCE_QUALITY_GOOD = 0,
2594  EXPERIENCE_QUALITY_BAD = 1,
2595 };
2596 
2600 enum EXPERIENCE_POOR_REASON {
2604  EXPERIENCE_REASON_NONE = 0,
2608  REMOTE_NETWORK_QUALITY_POOR = 1,
2612  LOCAL_NETWORK_QUALITY_POOR = 2,
2616  WIRELESS_SIGNAL_POOR = 4,
2621  WIFI_BLUETOOTH_COEXIST = 8,
2622 };
2623 
2627 enum AUDIO_AINS_MODE {
2631  AINS_MODE_BALANCED = 0,
2635  AINS_MODE_AGGRESSIVE = 1,
2639  AINS_MODE_ULTRALOWLATENCY = 2
2640 };
2641 
2645 enum AUDIO_PROFILE_TYPE {
2655  AUDIO_PROFILE_DEFAULT = 0,
2659  AUDIO_PROFILE_SPEECH_STANDARD = 1,
2663  AUDIO_PROFILE_MUSIC_STANDARD = 2,
2670  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2674  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2681  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2685  AUDIO_PROFILE_IOT = 6,
2686  AUDIO_PROFILE_NUM = 7
2687 };
2688 
2692 enum AUDIO_SCENARIO_TYPE {
2697  AUDIO_SCENARIO_DEFAULT = 0,
2703  AUDIO_SCENARIO_GAME_STREAMING = 3,
2709  AUDIO_SCENARIO_CHATROOM = 5,
2714  AUDIO_SCENARIO_CHORUS = 7,
2718  AUDIO_SCENARIO_MEETING = 8,
2723  AUDIO_SCENARIO_AI_SERVER = 9,
2727  AUDIO_SCENARIO_AI_CLIENT = 10,
2731  AUDIO_SCENARIO_NUM = 11,
2732 };
2733 
2737 struct VideoFormat {
2738  OPTIONAL_ENUM_SIZE_T{
2740  kMaxWidthInPixels = 3840,
2742  kMaxHeightInPixels = 2160,
2744  kMaxFps = 60,
2745  };
2746 
2750  int width; // Number of pixels.
2754  int height; // Number of pixels.
2758  int fps;
2759  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
2760  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
2761 
2762  bool operator<(const VideoFormat& fmt) const {
2763  if (height != fmt.height) {
2764  return height < fmt.height;
2765  } else if (width != fmt.width) {
2766  return width < fmt.width;
2767  } else {
2768  return fps < fmt.fps;
2769  }
2770  }
2771  bool operator==(const VideoFormat& fmt) const {
2772  return width == fmt.width && height == fmt.height && fps == fmt.fps;
2773  }
2774  bool operator!=(const VideoFormat& fmt) const { return !operator==(fmt); }
2775 };
2776 
2780 enum VIDEO_CONTENT_HINT {
2784  CONTENT_HINT_NONE,
2791  CONTENT_HINT_MOTION,
2797  CONTENT_HINT_DETAILS
2798 };
2802 enum SCREEN_SCENARIO_TYPE {
2808  SCREEN_SCENARIO_DOCUMENT = 1,
2813  SCREEN_SCENARIO_GAMING = 2,
2818  SCREEN_SCENARIO_VIDEO = 3,
2824  SCREEN_SCENARIO_RDC = 4,
2825 };
2826 
2830 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2834  APPLICATION_SCENARIO_GENERAL = 0,
2838  APPLICATION_SCENARIO_MEETING = 1,
2842  APPLICATION_SCENARIO_1V1 = 2,
2846  APPLICATION_SCENARIO_LIVESHOW = 3,
2847 };
2848 
2852 enum VIDEO_QOE_PREFERENCE_TYPE {
2856  VIDEO_QOE_PREFERENCE_BALANCE = 1,
2860  VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2864  VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2868  VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2869 
2870 };
2871 
2875 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2880  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2883  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2886  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2889  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2890 };
2891 
2892 enum CAMERA_STABILIZATION_MODE {
2895  CAMERA_STABILIZATION_MODE_OFF = -1,
2898  CAMERA_STABILIZATION_MODE_AUTO = 0,
2901  CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2904  CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2907  CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2910  CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2911 };
2912 
2916 enum LOCAL_AUDIO_STREAM_STATE {
2920  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2924  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2928  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2932  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2933 };
2934 
2938 enum LOCAL_AUDIO_STREAM_REASON {
2942  LOCAL_AUDIO_STREAM_REASON_OK = 0,
2947  LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2951  LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2958  LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2962  LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2966  LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2969  LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2972  LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2976  LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2979  LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2982  LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2983 };
2984 
2987 enum LOCAL_VIDEO_STREAM_STATE {
2991  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2996  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3000  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3004  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3005 };
3006 
3010 enum LOCAL_VIDEO_STREAM_REASON {
3014  LOCAL_VIDEO_STREAM_REASON_OK = 0,
3018  LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3023  LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3028  LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3034  LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3038  LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3043  LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3050  LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3056  LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3061  LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3066  LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3071  LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3076  LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3080  LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3086  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3101  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3103  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3105  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3107  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3109  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3115  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3118  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3120  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3122  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3130  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3132  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3134  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3135 
3136 };
3137 
3141 enum REMOTE_AUDIO_STATE {
3147  REMOTE_AUDIO_STATE_STOPPED =
3148  0, // Default state, audio is started or remote user disabled/muted audio stream
3152  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
3158  REMOTE_AUDIO_STATE_DECODING =
3159  2, // The first remote audio frame has been decoded or fronzen state ends
3164  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
3169  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
3170 };
3171 
3175 enum REMOTE_AUDIO_STATE_REASON {
3179  REMOTE_AUDIO_REASON_INTERNAL = 0,
3183  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3187  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3192  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3197  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3202  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3207  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3211  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3215  REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3219  REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3220 };
3221 
3225 enum REMOTE_VIDEO_STATE {
3232  REMOTE_VIDEO_STATE_STOPPED = 0,
3236  REMOTE_VIDEO_STATE_STARTING = 1,
3243  REMOTE_VIDEO_STATE_DECODING = 2,
3247  REMOTE_VIDEO_STATE_FROZEN = 3,
3251  REMOTE_VIDEO_STATE_FAILED = 4,
3252 };
3256 enum REMOTE_VIDEO_STATE_REASON {
3260  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3264  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3268  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3272  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3276  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3280  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3284  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3288  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3292  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3296  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3299  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3302  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3305  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3306 
3309  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3310 
3311 };
3312 
3316 enum REMOTE_USER_STATE {
3320  USER_STATE_MUTE_AUDIO = (1 << 0),
3324  USER_STATE_MUTE_VIDEO = (1 << 1),
3328  USER_STATE_ENABLE_VIDEO = (1 << 4),
3332  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3333 };
3334 
3340  VideoTrackInfo()
3341  : isLocal(false),
3342  ownerUid(0),
3343  trackId(0),
3344  channelId(OPTIONAL_NULLPTR),
3345  codecType(VIDEO_CODEC_H265),
3346  encodedFrameOnly(false),
3347  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
3348  observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
3354  bool isLocal;
3358  uid_t ownerUid;
3362  track_id_t trackId;
3366  const char* channelId;
3370  VIDEO_CODEC_TYPE codecType;
3380  VIDEO_SOURCE_TYPE sourceType;
3385 };
3386 
3391 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3395  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3399  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3403  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3407  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3411  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3412 };
3413 
3424  uid_t uid;
3430  unsigned int volume; // [0,255]
3441  unsigned int vad;
3447  double voicePitch;
3448 
3449  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3450 };
3451 
3455 struct DeviceInfo {
3456  /*
3457  * Whether the audio device supports ultra-low-latency capture and playback:
3458  * - `true`: The device supports ultra-low-latency capture and playback.
3459  * - `false`: The device does not support ultra-low-latency capture and playback.
3460  */
3461  bool isLowLatencyAudioSupported;
3462 
3463  DeviceInfo() : isLowLatencyAudioSupported(false) {}
3464 };
3465 
3470  public:
3471  virtual ~IPacketObserver() {}
3475  struct Packet {
3481  const unsigned char* buffer;
3485  unsigned int size;
3486 
3487  Packet() : buffer(OPTIONAL_NULLPTR), size(0) {}
3488  };
3496  virtual bool onSendAudioPacket(Packet& packet) = 0;
3504  virtual bool onSendVideoPacket(Packet& packet) = 0;
3512  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3520  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3521 };
3522 
3526 enum AUDIO_SAMPLE_RATE_TYPE {
3530  AUDIO_SAMPLE_RATE_32000 = 32000,
3534  AUDIO_SAMPLE_RATE_44100 = 44100,
3538  AUDIO_SAMPLE_RATE_48000 = 48000,
3539 };
3543 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3547  VIDEO_CODEC_H264_FOR_STREAM = 1,
3551  VIDEO_CODEC_H265_FOR_STREAM = 2,
3552 };
3553 
3557 enum VIDEO_CODEC_PROFILE_TYPE {
3561  VIDEO_CODEC_PROFILE_BASELINE = 66,
3566  VIDEO_CODEC_PROFILE_MAIN = 77,
3570  VIDEO_CODEC_PROFILE_HIGH = 100,
3571 };
3572 
3576 enum AUDIO_CODEC_PROFILE_TYPE {
3580  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3584  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3588  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3589 };
3590 
3615  unsigned short txPacketLossRate;
3632 };
3633 
3637 enum RTMP_STREAM_PUBLISH_STATE {
3642  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3647  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3652  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3663  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3669  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3674  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3675 };
3676 
3680 enum RTMP_STREAM_PUBLISH_REASON {
3684  RTMP_STREAM_PUBLISH_REASON_OK = 0,
3691  RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3695  RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3700  RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3705  RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3709  RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3713  RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3717  RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3721  RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3725  RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3730  RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3735  RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
3736  11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
3742  RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
3743  13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
3747  RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
3751  RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
3752  15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
3754  RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3759  RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3760 };
3761 
3763 enum RTMP_STREAMING_EVENT {
3768  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3773  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3777  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3781  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3782 };
3783 
3787 typedef struct RtcImage {
3792  const char* url;
3797  int x;
3802  int y;
3806  int width;
3810  int height;
3818  int zOrder;
3824  double alpha;
3825 
3826  RtcImage() : url(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
3827 } RtcImage;
3835  LiveStreamAdvancedFeature() : featureName(OPTIONAL_NULLPTR), opened(false) {}
3836  LiveStreamAdvancedFeature(const char* feat_name, bool open)
3837  : featureName(feat_name), opened(open) {}
3839  // static const char* LBHQ = "lbhq";
3841  // static const char* VEO = "veo";
3842 
3847  const char* featureName;
3848 
3854  bool opened;
3855 };
3856 
3860 enum CONNECTION_STATE_TYPE {
3867  CONNECTION_STATE_DISCONNECTED = 1,
3876  CONNECTION_STATE_CONNECTING = 2,
3884  CONNECTION_STATE_CONNECTED = 3,
3894  CONNECTION_STATE_RECONNECTING = 4,
3903  CONNECTION_STATE_FAILED = 5,
3904 };
3905 
3913  uid_t uid;
3919  int x;
3925  int y;
3929  int width;
3933  int height;
3941  int zOrder;
3947  double alpha;
3969 
3970  TranscodingUser()
3971  : uid(0), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0), audioChannel(0) {}
3972 };
3973 
3984  int width;
3991  int height;
4004 
4011 
4019  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
4023  unsigned int backgroundColor;
4025  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
4029  unsigned int userCount;
4040 
4043  const char* metadata;
4054  unsigned int watermarkCount;
4055 
4067  unsigned int backgroundImageCount;
4068 
4071  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
4087  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
4092 
4094  unsigned int advancedFeatureCount;
4095 
4096  LiveTranscoding()
4097  : width(360),
4098  height(640),
4099  videoBitrate(400),
4100  videoFramerate(15),
4101  lowLatency(false),
4102  videoGop(30),
4103  videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
4104  backgroundColor(0x000000),
4105  videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
4106  userCount(0),
4107  transcodingUsers(OPTIONAL_NULLPTR),
4108  transcodingExtraInfo(OPTIONAL_NULLPTR),
4109  metadata(OPTIONAL_NULLPTR),
4110  watermark(OPTIONAL_NULLPTR),
4111  watermarkCount(0),
4112  backgroundImage(OPTIONAL_NULLPTR),
4114  audioSampleRate(AUDIO_SAMPLE_RATE_48000),
4115  audioBitrate(48),
4116  audioChannels(1),
4117  audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
4118  advancedFeatures(OPTIONAL_NULLPTR),
4119  advancedFeatureCount(0) {}
4120 };
4121 
4129  VIDEO_SOURCE_TYPE sourceType;
4141  const char* imageUrl;
4150  int x;
4155  int y;
4159  int width;
4163  int height;
4170  int zOrder;
4176  double alpha;
4183  bool mirror;
4184 
4186  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4187  remoteUserUid(0),
4188  imageUrl(OPTIONAL_NULLPTR),
4189  x(0),
4190  y(0),
4191  width(0),
4192  height(0),
4193  zOrder(0),
4194  alpha(1.0),
4195  mirror(false) {}
4196 };
4197 
4205  unsigned int streamCount;
4224 
4226  : streamCount(0),
4227  videoInputStreams(OPTIONAL_NULLPTR),
4229  syncWithPrimaryCamera(true) {}
4230 };
4231 
4232 enum VIDEO_TRANSCODER_ERROR {
4236  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4240  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4244  VT_ERR_INVALID_IMAGE_PATH = 3,
4248  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4252  VT_ERR_INVALID_LAYOUT = 5,
4256  VT_ERR_INTERNAL = 20
4257 };
4258 
4259 
4267  AUDIO_SOURCE_TYPE sourceType;
4277  const char* channelId;
4282  track_id_t trackId;
4283 
4284  MixedAudioStream(AUDIO_SOURCE_TYPE source)
4285  : sourceType(source),
4286  remoteUserUid(0),
4287  channelId(NULL),
4288  trackId(-1) {}
4289 
4290  MixedAudioStream(AUDIO_SOURCE_TYPE source, track_id_t track)
4291  : sourceType(source),
4292  trackId(track) {}
4293 
4294  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel)
4295  : sourceType(source),
4296  remoteUserUid(uid),
4297  channelId(channel) {}
4298 
4299  MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid, const char* channel, track_id_t track)
4300  : sourceType(source),
4301  remoteUserUid(uid),
4302  channelId(channel),
4303  trackId(track) {}
4304 
4305 };
4306 
4314  unsigned int streamCount;
4319 
4326 
4328 };
4329 
4358 };
4359 
4363 enum LASTMILE_PROBE_RESULT_STATE {
4367  LASTMILE_PROBE_RESULT_COMPLETE = 1,
4372  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4377  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4378 };
4379 
4387  unsigned int packetLossRate;
4391  unsigned int jitter;
4395  unsigned int availableBandwidth;
4396 
4398 };
4399 
4407  LASTMILE_PROBE_RESULT_STATE state;
4419  unsigned int rtt;
4420 
4421  LastmileProbeResult() : state(LASTMILE_PROBE_RESULT_UNAVAILABLE), rtt(0) {}
4422 };
4423 
4427 enum CONNECTION_CHANGED_REASON_TYPE {
4431  CONNECTION_CHANGED_CONNECTING = 0,
4435  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4439  CONNECTION_CHANGED_INTERRUPTED = 2,
4444  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4449  CONNECTION_CHANGED_JOIN_FAILED = 4,
4453  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4457  CONNECTION_CHANGED_INVALID_APP_ID = 6,
4462  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4471  CONNECTION_CHANGED_INVALID_TOKEN = 8,
4475  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4483  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4487  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4491  CONNECTION_CHANGED_RENEW_TOKEN = 12,
4496  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4501  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4505  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4509  CONNECTION_CHANGED_LOST = 16,
4513  CONNECTION_CHANGED_ECHO_TEST = 17,
4517  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4521  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4525  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4526 
4530  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4531  /*
4532  * 22: The connection is failed due to certification verify failure.
4533  */
4534  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4538  CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4542  CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4543 };
4544 
4548 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4552  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4556  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4561  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4566  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4567 };
4568 
4572 enum WLACC_MESSAGE_REASON {
4576  WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4580  WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4581 };
4582 
4586 enum WLACC_SUGGEST_ACTION {
4590  WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4594  WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4599  WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4604  WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4605 };
4606 
4610 struct WlAccStats {
4614  unsigned short e2eDelayPercent;
4618  unsigned short frozenRatioPercent;
4622  unsigned short lossRatePercent;
4623 };
4624 
4628 enum NETWORK_TYPE {
4632  NETWORK_TYPE_UNKNOWN = -1,
4636  NETWORK_TYPE_DISCONNECTED = 0,
4640  NETWORK_TYPE_LAN = 1,
4644  NETWORK_TYPE_WIFI = 2,
4648  NETWORK_TYPE_MOBILE_2G = 3,
4652  NETWORK_TYPE_MOBILE_3G = 4,
4656  NETWORK_TYPE_MOBILE_4G = 5,
4660  NETWORK_TYPE_MOBILE_5G = 6,
4661 };
4662 
4666 enum VIDEO_VIEW_SETUP_MODE {
4670  VIDEO_VIEW_SETUP_REPLACE = 0,
4674  VIDEO_VIEW_SETUP_ADD = 1,
4678  VIDEO_VIEW_SETUP_REMOVE = 2,
4679 };
4680 
4684 struct VideoCanvas {
4688  uid_t uid;
4689 
4694  uid_t subviewUid;
4698  view_t view;
4707  media::base::RENDER_MODE_TYPE renderMode;
4717  VIDEO_MIRROR_MODE_TYPE mirrorMode;
4722  VIDEO_VIEW_SETUP_MODE setupMode;
4727  VIDEO_SOURCE_TYPE sourceType;
4750  media::base::VIDEO_MODULE_POSITION position;
4751 
4752  VideoCanvas()
4753  : uid(0),
4754  subviewUid(0),
4755  view(NULL),
4756  backgroundColor(0x00000000),
4757  renderMode(media::base::RENDER_MODE_HIDDEN),
4758  mirrorMode(VIDEO_MIRROR_MODE_AUTO),
4759  setupMode(VIDEO_VIEW_SETUP_REPLACE),
4760  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4761  mediaPlayerId(-ERR_NOT_READY),
4762  cropArea(0, 0, 0, 0),
4763  enableAlphaMask(false),
4764  position(media::base::POSITION_POST_CAPTURER) {}
4765 
4766  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4767  : uid(0),
4768  subviewUid(0),
4769  view(v),
4770  backgroundColor(0x00000000),
4771  renderMode(m),
4772  mirrorMode(mt),
4773  setupMode(VIDEO_VIEW_SETUP_REPLACE),
4774  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4775  mediaPlayerId(-ERR_NOT_READY),
4776  cropArea(0, 0, 0, 0),
4777  enableAlphaMask(false),
4778  position(media::base::POSITION_POST_CAPTURER) {}
4779 
4780  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4781  : uid(u),
4782  subviewUid(0),
4783  view(v),
4784  backgroundColor(0x00000000),
4785  renderMode(m),
4786  mirrorMode(mt),
4787  setupMode(VIDEO_VIEW_SETUP_REPLACE),
4788  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4789  mediaPlayerId(-ERR_NOT_READY),
4790  cropArea(0, 0, 0, 0),
4791  enableAlphaMask(false),
4792  position(media::base::POSITION_POST_CAPTURER) {}
4793 
4794  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
4795  uid_t subu)
4796  : uid(u),
4797  subviewUid(subu),
4798  view(v),
4799  backgroundColor(0x00000000),
4800  renderMode(m),
4801  mirrorMode(mt),
4802  setupMode(VIDEO_VIEW_SETUP_REPLACE),
4803  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4804  mediaPlayerId(-ERR_NOT_READY),
4805  cropArea(0, 0, 0, 0),
4806  enableAlphaMask(false),
4807  position(media::base::POSITION_POST_CAPTURER) {}
4808 };
4809 
4822  };
4823 
4828 
4832 
4837 
4842 
4847 
4848  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness,
4849  float redness, float sharpness)
4850  : lighteningContrastLevel(contrastLevel),
4851  lighteningLevel(lightening),
4852  smoothnessLevel(smoothness),
4853  rednessLevel(redness),
4854  sharpnessLevel(sharpness) {}
4855 
4856  BeautyOptions()
4858  lighteningLevel(0),
4859  smoothnessLevel(0),
4860  rednessLevel(0),
4861  sharpnessLevel(0) {}
4862 };
4863 
5070  };
5071 
5075 
5080 
5081  FaceShapeAreaOptions(FACE_SHAPE_AREA shapeArea, int areaIntensity) : shapeArea(shapeArea), shapeIntensity(areaIntensity) {}
5082 
5084 };
5085 
5110  };
5111 
5115 
5119 
5121 
5123 };
5124 
5144  const char * path;
5145 
5149  float strength;
5150 
5151  FilterEffectOptions(const char * lut3dPath, float filterStrength) : path(lut3dPath), strength(filterStrength) {}
5152 
5153  FilterEffectOptions() : path(OPTIONAL_NULLPTR), strength(0.5) {}
5154 };
5155 
5167  };
5183  };
5184 
5188 
5192 
5194  : mode(lowlightMode), level(lowlightLevel) {}
5195 
5198 };
5213  };
5233  };
5237 
5241 
5243  : mode(denoiserMode), level(denoiserLevel) {}
5244 
5246 };
5247 
5258 
5268 
5269  ColorEnhanceOptions(float stength, float skinProtect)
5270  : strengthLevel(stength), skinProtectLevel(skinProtect) {}
5271 
5273 };
5274 
5302  };
5303 
5316  };
5317 
5321 
5331  unsigned int color;
5332 
5341  const char* source;
5342 
5348 
5351  color(0xffffff),
5352  source(OPTIONAL_NULLPTR),
5354 };
5355 
5357  enum SEG_MODEL_TYPE {
5358 
5359  SEG_MODEL_AI = 1,
5360  SEG_MODEL_GREEN = 2
5361  };
5362 
5363  SEG_MODEL_TYPE modelType;
5364 
5365  float greenCapacity;
5366 
5367  SegmentationProperty() : modelType(SEG_MODEL_AI), greenCapacity(0.5) {}
5368 };
5369 
5372 enum AUDIO_TRACK_TYPE {
5376  AUDIO_TRACK_INVALID = -1,
5383  AUDIO_TRACK_MIXABLE = 0,
5389  AUDIO_TRACK_DIRECT = 1,
5390 };
5391 
5407 
5409 };
5410 
5431 enum VOICE_BEAUTIFIER_PRESET {
5434  VOICE_BEAUTIFIER_OFF = 0x00000000,
5440  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
5446  CHAT_BEAUTIFIER_FRESH = 0x01010200,
5452  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
5462  SINGING_BEAUTIFIER = 0x01020100,
5465  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
5468  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
5471  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
5474  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
5477  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
5480  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
5483  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
5486  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
5497  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
5498 };
5499 
5522 enum AUDIO_EFFECT_PRESET {
5525  AUDIO_EFFECT_OFF = 0x00000000,
5528  ROOM_ACOUSTICS_KTV = 0x02010100,
5531  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
5534  ROOM_ACOUSTICS_STUDIO = 0x02010300,
5537  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5544  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5547  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5550  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5562  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5573  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5581  ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5588  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5594  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5600  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5607  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5613  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5617  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5620  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5627  STYLE_TRANSFORMATION_RNB = 0x02030100,
5634  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5639  PITCH_CORRECTION = 0x02040100,
5640 
5644 };
5645 
5648 enum VOICE_CONVERSION_PRESET {
5651  VOICE_CONVERSION_OFF = 0x00000000,
5655  VOICE_CHANGER_NEUTRAL = 0x03010100,
5659  VOICE_CHANGER_SWEET = 0x03010200,
5663  VOICE_CHANGER_SOLID = 0x03010300,
5667  VOICE_CHANGER_BASS = 0x03010400,
5670  VOICE_CHANGER_CARTOON = 0x03010500,
5673  VOICE_CHANGER_CHILDLIKE = 0x03010600,
5676  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5679  VOICE_CHANGER_MONSTER = 0x03010800,
5682  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5685  VOICE_CHANGER_GROOT = 0x03010A00,
5688  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5691  VOICE_CHANGER_IRON_LADY = 0x03010C00,
5694  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5697  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5700  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5701 
5702 };
5703 
5706 enum HEADPHONE_EQUALIZER_PRESET {
5709  HEADPHONE_EQUALIZER_OFF = 0x00000000,
5712  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5715  HEADPHONE_EQUALIZER_INEAR = 0x04000002
5716 };
5717 
5720 enum VOICE_AI_TUNER_TYPE {
5723  VOICE_AI_TUNER_MATURE_MALE,
5726  VOICE_AI_TUNER_FRESH_MALE,
5729  VOICE_AI_TUNER_ELEGANT_FEMALE,
5732  VOICE_AI_TUNER_SWEET_FEMALE,
5735  VOICE_AI_TUNER_WARM_MALE_SINGING,
5738  VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
5741  VOICE_AI_TUNER_HUSKY_MALE_SINGING,
5744  VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
5747  VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
5750  VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
5751 };
5752 
5770 
5771 #if defined(__APPLE__) && !TARGET_OS_IOS
5772  bool excludeCurrentProcessAudio = true;
5774 #else
5776 #endif
5777 };
5778 
5783 
5798 
5824  int bitrate;
5848 
5856  unsigned int highLightColor;
5866 
5868  : captureAudio(false),
5869  dimensions(1920, 1080),
5870  frameRate(5),
5871  bitrate(STANDARD_BITRATE),
5872  captureMouseCursor(true),
5873  windowFocus(false),
5874  excludeWindowList(OPTIONAL_NULLPTR),
5875  excludeWindowCount(0),
5876  highLightWidth(0),
5877  highLightColor(0),
5878  enableHighLight(false) {}
5879  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
5880  : captureAudio(false),dimensions(d),
5881  frameRate(f),
5882  bitrate(b),
5883  captureMouseCursor(true),
5884  windowFocus(false),
5885  excludeWindowList(OPTIONAL_NULLPTR),
5886  excludeWindowCount(0),
5887  highLightWidth(0),
5888  highLightColor(0),
5889  enableHighLight(false) {}
5890  ScreenCaptureParameters(int width, int height, int f, int b)
5891  : captureAudio(false),
5892  dimensions(width, height),
5893  frameRate(f),
5894  bitrate(b),
5895  captureMouseCursor(true),
5896  windowFocus(false),
5897  excludeWindowList(OPTIONAL_NULLPTR),
5898  excludeWindowCount(0),
5899  highLightWidth(0),
5900  highLightColor(0),
5901  enableHighLight(false) {}
5902  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
5903  : captureAudio(false),
5904  dimensions(width, height),
5905  frameRate(f),
5906  bitrate(b),
5907  captureMouseCursor(cur),
5908  windowFocus(fcs),
5909  excludeWindowList(OPTIONAL_NULLPTR),
5910  excludeWindowCount(0),
5911  highLightWidth(0),
5912  highLightColor(0),
5913  enableHighLight(false) {}
5914  ScreenCaptureParameters(int width, int height, int f, int b, view_t* ex, int cnt)
5915  : captureAudio(false),
5916  dimensions(width, height),
5917  frameRate(f),
5918  bitrate(b),
5919  captureMouseCursor(true),
5920  windowFocus(false),
5921  excludeWindowList(ex),
5922  excludeWindowCount(cnt),
5923  highLightWidth(0),
5924  highLightColor(0),
5925  enableHighLight(false) {}
5926  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t* ex,
5927  int cnt)
5928  : captureAudio(false),
5929  dimensions(width, height),
5930  frameRate(f),
5931  bitrate(b),
5932  captureMouseCursor(cur),
5933  windowFocus(fcs),
5934  excludeWindowList(ex),
5935  excludeWindowCount(cnt),
5936  highLightWidth(0),
5937  highLightColor(0),
5938  enableHighLight(false) {}
5939 };
5940 
5944 enum AUDIO_RECORDING_QUALITY_TYPE {
5949  AUDIO_RECORDING_QUALITY_LOW = 0,
5954  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5959  AUDIO_RECORDING_QUALITY_HIGH = 2,
5963  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5964 };
5965 
5969 enum AUDIO_FILE_RECORDING_TYPE {
5973  AUDIO_FILE_RECORDING_MIC = 1,
5977  AUDIO_FILE_RECORDING_PLAYBACK = 2,
5981  AUDIO_FILE_RECORDING_MIXED = 3,
5982 };
5983 
5987 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5991  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5995  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5999  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6000 };
6001 
6011  const char* filePath;
6017  bool encode;
6032  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
6037  AUDIO_RECORDING_QUALITY_TYPE quality;
6038 
6045 
6047  : filePath(OPTIONAL_NULLPTR),
6048  encode(false),
6049  sampleRate(32000),
6050  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6051  quality(AUDIO_RECORDING_QUALITY_LOW),
6052  recordingChannel(1) {}
6053 
6054  AudioRecordingConfiguration(const char* file_path, int sample_rate,
6055  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6056  : filePath(file_path),
6057  encode(false),
6058  sampleRate(sample_rate),
6059  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
6060  quality(quality_type),
6061  recordingChannel(channel) {}
6062 
6063  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate,
6064  AUDIO_FILE_RECORDING_TYPE type,
6065  AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
6066  : filePath(file_path),
6067  encode(enc),
6068  sampleRate(sample_rate),
6069  fileRecordingType(type),
6070  quality(quality_type),
6071  recordingChannel(channel) {}
6072 
6073  AudioRecordingConfiguration(const AudioRecordingConfiguration& rhs)
6074  : filePath(rhs.filePath),
6075  encode(rhs.encode),
6076  sampleRate(rhs.sampleRate),
6078  quality(rhs.quality),
6080 };
6081 
6089  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
6093  AUDIO_ENCODING_TYPE encodingType;
6094 
6096  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6097  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM) {}
6098 };
6103  public:
6116  virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6117  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6118 
6131  virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6132  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6133 
6146  virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length,
6147  const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
6148 
6149  virtual ~IAudioEncodedFrameObserver() {}
6150 };
6151 
6154 enum AREA_CODE {
6158  AREA_CODE_CN = 0x00000001,
6162  AREA_CODE_NA = 0x00000002,
6166  AREA_CODE_EU = 0x00000004,
6170  AREA_CODE_AS = 0x00000008,
6174  AREA_CODE_JP = 0x00000010,
6178  AREA_CODE_IN = 0x00000020,
6182  AREA_CODE_GLOB = (0xFFFFFFFF)
6183 };
6184 
6189 enum AREA_CODE_EX {
6193  AREA_CODE_OC = 0x00000040,
6197  AREA_CODE_SA = 0x00000080,
6201  AREA_CODE_AF = 0x00000100,
6205  AREA_CODE_KR = 0x00000200,
6209  AREA_CODE_HKMC = 0x00000400,
6213  AREA_CODE_US = 0x00000800,
6217  AREA_CODE_RU = 0x00001000,
6221  AREA_CODE_OVS = 0xFFFFFFFE
6222 };
6223 
6227 enum CHANNEL_MEDIA_RELAY_ERROR {
6230  RELAY_OK = 0,
6233  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6240  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6243  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6246  RELAY_ERROR_FAILED_JOIN_SRC = 4,
6249  RELAY_ERROR_FAILED_JOIN_DEST = 5,
6252  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6255  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6259  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6262  RELAY_ERROR_INTERNAL_ERROR = 9,
6265  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
6268  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
6269 };
6270 
6274 enum CHANNEL_MEDIA_RELAY_STATE {
6278  RELAY_STATE_IDLE = 0,
6281  RELAY_STATE_CONNECTING = 1,
6284  RELAY_STATE_RUNNING = 2,
6287  RELAY_STATE_FAILURE = 3,
6288 };
6289 
6295  uid_t uid;
6299  const char* channelName;
6303  const char* token;
6304 
6305  ChannelMediaInfo() : uid(0), channelName(NULL), token(NULL) {}
6306  ChannelMediaInfo(const char* c, const char* t, uid_t u) : uid(u), channelName(c), token(t) {}
6307 };
6308 
6346 
6348  : srcInfo(OPTIONAL_NULLPTR), destInfos(OPTIONAL_NULLPTR), destCount(0) {}
6349 };
6350 
6359 
6361 
6362  bool operator==(const UplinkNetworkInfo& rhs) const {
6364  }
6365 };
6366 
6372  const char* userId;
6376  VIDEO_STREAM_TYPE stream_type;
6380  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
6385 
6387  : userId(OPTIONAL_NULLPTR),
6388  stream_type(VIDEO_STREAM_HIGH),
6389  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
6390  expected_bitrate_bps(-1) {}
6391 
6393  : stream_type(rhs.stream_type),
6396  if (rhs.userId != OPTIONAL_NULLPTR) {
6397  const size_t len = std::strlen(rhs.userId);
6398  char* buf = new char[len + 1];
6399  std::memcpy(buf, rhs.userId, len);
6400  buf[len] = '\0';
6401  userId = buf;
6402  }
6403  }
6404 
6405  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
6406  if (this == &rhs) return *this;
6407  userId = OPTIONAL_NULLPTR;
6408  stream_type = rhs.stream_type;
6409  current_downscale_level = rhs.current_downscale_level;
6410  expected_bitrate_bps = rhs.expected_bitrate_bps;
6411  if (rhs.userId != OPTIONAL_NULLPTR) {
6412  const size_t len = std::strlen(rhs.userId);
6413  char* buf = new char[len + 1];
6414  std::memcpy(buf, rhs.userId, len);
6415  buf[len] = '\0';
6416  userId = buf;
6417  }
6418  return *this;
6419  }
6420 
6421  ~PeerDownlinkInfo() { delete[] userId; }
6422  };
6423 
6444 
6449  peer_downlink_info(OPTIONAL_NULLPTR),
6451 
6456  peer_downlink_info(OPTIONAL_NULLPTR),
6458  if (total_received_video_count <= 0) return;
6459  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
6460  for (int i = 0; i < total_received_video_count; ++i)
6462  }
6463 
6464  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
6465  if (this == &rhs) return *this;
6466  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
6467  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
6468  total_downscale_level_count = rhs.total_downscale_level_count;
6469  peer_downlink_info = OPTIONAL_NULLPTR;
6470  total_received_video_count = rhs.total_received_video_count;
6471  if (total_received_video_count > 0) {
6472  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
6473  for (int i = 0; i < total_received_video_count; ++i)
6474  peer_downlink_info[i] = rhs.peer_downlink_info[i];
6475  }
6476  return *this;
6477  }
6478 
6479  ~DownlinkNetworkInfo() { delete[] peer_downlink_info; }
6480 };
6481 
6488 enum ENCRYPTION_MODE {
6491  AES_128_XTS = 1,
6494  AES_128_ECB = 2,
6497  AES_256_XTS = 3,
6500  SM4_128_ECB = 4,
6503  AES_128_GCM = 5,
6506  AES_256_GCM = 6,
6510  AES_128_GCM2 = 7,
6514  AES_256_GCM2 = 8,
6517  MODE_END,
6518 };
6519 
6526  ENCRYPTION_MODE encryptionMode;
6533  const char* encryptionKey;
6541  uint8_t encryptionKdfSalt[32];
6542 
6543  bool datastreamEncryptionEnabled;
6544 
6546  : encryptionMode(AES_128_GCM2),
6547  encryptionKey(OPTIONAL_NULLPTR),
6548  datastreamEncryptionEnabled(false) {
6549  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
6550  }
6551 
6553  const char* getEncryptionString() const {
6554  switch (encryptionMode) {
6555  case AES_128_XTS:
6556  return "aes-128-xts";
6557  case AES_128_ECB:
6558  return "aes-128-ecb";
6559  case AES_256_XTS:
6560  return "aes-256-xts";
6561  case SM4_128_ECB:
6562  return "sm4-128-ecb";
6563  case AES_128_GCM:
6564  return "aes-128-gcm";
6565  case AES_256_GCM:
6566  return "aes-256-gcm";
6567  case AES_128_GCM2:
6568  return "aes-128-gcm-2";
6569  case AES_256_GCM2:
6570  return "aes-256-gcm-2";
6571  default:
6572  return "aes-128-gcm-2";
6573  }
6574  return "aes-128-gcm-2";
6575  }
6577 };
6578 
6581 enum ENCRYPTION_ERROR_TYPE {
6585  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
6590  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
6594  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
6599  ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
6603  ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
6604 };
6605 
6606 enum UPLOAD_ERROR_REASON {
6607  UPLOAD_SUCCESS = 0,
6608  UPLOAD_NET_ERROR = 1,
6609  UPLOAD_SERVER_ERROR = 2,
6610 };
6611 
6614 enum PERMISSION_TYPE {
6618  RECORD_AUDIO = 0,
6622  CAMERA = 1,
6623 
6624  SCREEN_CAPTURE = 2,
6625 };
6626 
6630 enum STREAM_SUBSCRIBE_STATE {
6634  SUB_STATE_IDLE = 0,
6648  SUB_STATE_NO_SUBSCRIBED = 1,
6652  SUB_STATE_SUBSCRIBING = 2,
6656  SUB_STATE_SUBSCRIBED = 3
6657 };
6658 
6662 enum STREAM_PUBLISH_STATE {
6666  PUB_STATE_IDLE = 0,
6677  PUB_STATE_NO_PUBLISHED = 1,
6681  PUB_STATE_PUBLISHING = 2,
6685  PUB_STATE_PUBLISHED = 3
6686 };
6687 
6692  view_t view;
6693  bool enableAudio;
6694  bool enableVideo;
6695  const char* token;
6696  const char* channelId;
6697  int intervalInSeconds;
6698 
6699  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
6700  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
6701 
6703  : view(OPTIONAL_NULLPTR),
6704  enableAudio(true),
6705  enableVideo(true),
6706  token(OPTIONAL_NULLPTR),
6707  channelId(OPTIONAL_NULLPTR),
6708  intervalInSeconds(2) {}
6709 };
6710 
6714 struct UserInfo {
6718  uid_t uid;
6722  char userAccount[MAX_USER_ACCOUNT_LENGTH];
6723 
6727  char customUserInfo[MAX_CUSTOM_USER_INFO_LENGTH];
6728 
6729  UserInfo() : uid(0) { userAccount[0] = '\0'; customUserInfo[0] = '\0'; }
6730 };
6731 
6735 enum EAR_MONITORING_FILTER_TYPE {
6739  EAR_MONITORING_FILTER_NONE = (1 << 0),
6744  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
6748  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
6754  EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
6755 };
6756 
6760 enum THREAD_PRIORITY_TYPE {
6764  LOWEST = 0,
6768  LOW = 1,
6772  NORMAL = 2,
6776  HIGH = 3,
6780  HIGHEST = 4,
6784  CRITICAL = 5,
6785 };
6786 
6787 #if defined(__ANDROID__) || (defined(__APPLE__) && (TARGET_OS_IOS || (defined(TARGET_OS_VISION) && TARGET_OS_VISION)))
6788 
6792 struct ScreenVideoParameters {
6819  VideoDimensions dimensions;
6825  int frameRate = 15;
6830  int bitrate;
6831  /*
6832  * The content hint of the screen sharing:
6833  */
6834  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6835 
6836  ScreenVideoParameters() : dimensions(1280, 720) {}
6837 };
6838 
6842 struct ScreenCaptureParameters2 {
6852  bool captureAudio = false;
6856  ScreenAudioParameters audioParams;
6866  bool captureVideo = true;
6870  ScreenVideoParameters videoParams;
6871 };
6872 #endif
6873 
6877 enum MEDIA_TRACE_EVENT {
6881  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6885  MEDIA_TRACE_EVENT_VIDEO_DECODED,
6886 };
6887 
6941 };
6942 
6943 enum CONFIG_FETCH_TYPE {
6947  CONFIG_FETCH_TYPE_INITIALIZE = 1,
6951  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6952 };
6953 
6955 enum LOCAL_PROXY_MODE {
6958  ConnectivityFirst = 0,
6961  LocalOnly = 1,
6962 };
6963 
6967  const char* serverDomain;
6970  const char* serverPath;
6979 
6980  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
6981 
6982  LogUploadServerInfo(const char* domain, const char* path, int port, bool https)
6983  : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
6984 };
6985 
6990 };
6991 
6995  const char** ipList;
7001  const char** domainList;
7009  const char* verifyDomainName;
7012  LOCAL_PROXY_MODE mode;
7023  : ipList(NULL),
7024  ipListSize(0),
7025  domainList(NULL),
7026  domainListSize(0),
7027  verifyDomainName(NULL),
7028  mode(ConnectivityFirst),
7029  disableAut(true) {}
7030 };
7031 
7032 enum RecorderStreamType {
7033  RTC,
7034  PREVIEW,
7035 };
7036 
7044  const char* channelId;
7048  uid_t uid;
7052  RecorderStreamType type;
7053  RecorderStreamInfo() : channelId(NULL), uid(0), type(RTC) {}
7054  RecorderStreamInfo(const char* channelId, uid_t uid)
7055  : channelId(channelId), uid(uid), type(RTC) {}
7056  RecorderStreamInfo(const char* channelId, uid_t uid, RecorderStreamType type)
7057  : channelId(channelId), uid(uid), type(type) {}
7058 };
7059 } // namespace rtc
7060 
7061 namespace base {
7062 
7064  public:
7065  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
7066  virtual ~IEngineBase() {}
7067 };
7068 
7069 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
7070  public:
7071  AParameter(IEngineBase& engine) { initialize(&engine); }
7072  AParameter(IEngineBase* engine) { initialize(engine); }
7074 
7075  private:
7076  bool initialize(IEngineBase* engine) {
7077  IAgoraParameter* p = OPTIONAL_NULLPTR;
7078  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
7079  return p != OPTIONAL_NULLPTR;
7080  }
7081 };
7082 
7084  public:
7085  virtual ~LicenseCallback() {}
7086  virtual void onCertificateRequired() = 0;
7087  virtual void onLicenseRequest() = 0;
7088  virtual void onLicenseValidated() = 0;
7089  virtual void onLicenseError(int result) = 0;
7090 };
7091 
7092 } // namespace base
7093 
7130 };
7134 struct VideoLayout {
7138  const char* channelId;
7142  rtc::uid_t uid;
7146  user_id_t strUid;
7150  uint32_t x;
7154  uint32_t y;
7158  uint32_t width;
7162  uint32_t height;
7167  uint32_t videoState;
7168 
7169  VideoLayout()
7170  : channelId(OPTIONAL_NULLPTR),
7171  uid(0),
7172  strUid(OPTIONAL_NULLPTR),
7173  x(0),
7174  y(0),
7175  width(0),
7176  height(0),
7177  videoState(0) {}
7178 };
7179 } // namespace agora
7180 
7186 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
7187 
7193 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
7194 
7195 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
7196 
7204 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString& credential);
7205 
7219 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char* credential_buf,
7220  int credential_len,
7221  const char* certificate_buf,
7222  int certificate_len);
7223 
7231 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback* callback);
7232 
7240 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
7241 
7242 /*
7243  * Get monotonic time in ms which can be used by capture time,
7244  * typical scenario is as follows:
7245  *
7246  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7247  * | // custom audio/video base capture time, e.g. the first audio/video capture time. | | int64_t
7248  * custom_capture_time_base; | | | |
7249  * int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
7250  * | | | // offset is fixed once calculated in the begining. | | const int64_t offset =
7251  * agora_monotonic_time - custom_capture_time_base; | | | | //
7252  * realtime_custom_audio/video_capture_time is the origin capture time that customer provided.| | //
7253  * actual_audio/video_capture_time is the actual capture time transfered to sdk. | |
7254  * int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
7255  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
7256  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7257  *
7258  * @return
7259  * - >= 0: Success.
7260  * - < 0: Failure.
7261  */
7262 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:4033
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:6967
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::VideoCanvas::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4733
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:3806
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:4170
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2441
agora::rtc::ScreenAudioParameters::captureSignalVolume
int captureSignalVolume
Definition: AgoraBase.h:5769
agora::VideoLayout
Definition: AgoraBase.h:7134
agora::rtc::FilterEffectOptions::strength
float strength
Definition: AgoraBase.h:5149
agora::rtc::SimulcastConfig::STREAM_LAYER_1
@ STREAM_LAYER_1
Definition: AgoraBase.h:2178
agora::VideoLayout::channelId
const char * channelId
Definition: AgoraBase.h:7138
agora::rtc::UserInfo
Definition: AgoraBase.h:6714
agora::rtc::FilterEffectOptions
Definition: AgoraBase.h:5129
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:4176
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1524
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:2028
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:4403
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:6085
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:5782
agora::VideoLayout::x
uint32_t x
Definition: AgoraBase.h:7150
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:2264
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:3417
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:5306
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:4411
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1728
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:6989
agora::rtc::BeautyOptions
Definition: AgoraBase.h:4812
agora::rtc::SenderOptions
Definition: AgoraBase.h:1258
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:5824
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:4831
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2350
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:5297
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:4023
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:147
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:3447
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:4333
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:3925
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:5852
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2366
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2426
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3615
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:2758
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:7105
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:2020
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:5865
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:5210
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:4722
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5177
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:3968
agora::rtc::SimulcastConfig::StreamLayerIndex
StreamLayerIndex
Definition: AgoraBase.h:2174
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2461
agora::rtc::SimulcastConfig::STREAM_LAYER_2
@ STREAM_LAYER_2
Definition: AgoraBase.h:2182
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:2750
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:5836
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:6093
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1267
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1501
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:4014
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:6345
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:3619
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:4391
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:4836
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:5240
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:4717
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2334
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2159
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1112
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:7012
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:4340
agora::rtc::RecorderStreamInfo::channelId
const char * channelId
Definition: AgoraBase.h:7044
agora::rtc::LocalAccessPointConfiguration
Definition: AgoraBase.h:6992
agora::rtc::FilterEffectOptions::path
const char * path
Definition: AgoraBase.h:5144
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:4025
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Definition: AgoraBase.h:5207
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWIDTH
@ FACE_SHAPE_AREA_NOSEWIDTH
Definition: AgoraBase.h:4992
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:3977
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2338
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:2754
agora::rtc::Rectangle
Definition: AgoraBase.h:2233
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:6995
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:4688
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2446
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:6011
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1652
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:5257
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:7109
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:5285
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSMILE
@ FACE_SHAPE_AREA_MOUTHSMILE
Definition: AgoraBase.h:5048
agora::rtc::FaceShapeBeautyOptions::shapeStyle
FACE_SHAPE_BEAUTY_STYLE shapeStyle
Definition: AgoraBase.h:5114
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:4841
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2358
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4135
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1941
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1701
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1483
agora::util::AutoPtr
Definition: AgoraBase.h:100
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:4387
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:834
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:5847
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:3475
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:5400
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSELENGTH
@ FACE_SHAPE_AREA_NOSELENGTH
Definition: AgoraBase.h:4985
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:4087
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:7048
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1933
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2245
agora::rtc::SimulcastConfig::StreamLayerConfig::framerate
int framerate
Definition: AgoraBase.h:2216
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:2003
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:6931
agora::util::AList
Definition: AgoraBase.h:233
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2476
agora::rtc::VideoSubscriptionOptions
Definition: AgoraBase.h:1614
agora::rtc::TranscodingUser
Definition: AgoraBase.h:3909
agora::rtc::EchoTestConfiguration
Definition: AgoraBase.h:6691
agora::rtc::RtcImage
Definition: AgoraBase.h:3787
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:3919
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACECONTOUR
@ FACE_SHAPE_AREA_FACECONTOUR
Definition: AgoraBase.h:4895
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:6303
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:6940
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:6017
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:4827
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2277
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:7117
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:2146
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:4075
agora::rtc::FaceShapeAreaOptions::shapeArea
FACE_SHAPE_AREA shapeArea
Definition: AgoraBase.h:5074
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:6340
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:3797
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:5320
agora::rtc::FaceShapeBeautyOptions
Face shape beauty options. This structure defines options for facial adjustments of different facial ...
Definition: AgoraBase.h:5090
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4129
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:4223
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:3818
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACELENGTH
@ FACE_SHAPE_AREA_FACELENGTH
Definition: AgoraBase.h:4901
agora::rtc::MixedAudioStream
Definition: AgoraBase.h:4263
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2582
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3430
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:3913
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:4745
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:6895
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:3847
agora::rtc::AdvancedConfigInfo
Definition: AgoraBase.h:6986
agora::rtc::ScreenAudioParameters::channels
int channels
Definition: AgoraBase.h:5764
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2241
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3606
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:3792
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:3481
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1741
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2481
agora::rtc::SimulcastConfig::configs
StreamLayerConfig configs[STREAM_LAYER_COUNT_MAX]
Definition: AgoraBase.h:2227
agora::rtc::ColorEnhanceOptions
Definition: AgoraBase.h:5252
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:6028
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:828
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2309
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:7015
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:4415
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:4054
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2237
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:4209
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEDISTANCE
@ FACE_SHAPE_AREA_EYEDISTANCE
Definition: AgoraBase.h:4945
agora::util::IString
Definition: AgoraBase.h:172
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:7009
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:7121
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
Definition: AgoraBase.h:5171
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1519
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:4201
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:4815
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2271
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3602
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1621
agora::rtc::RecorderStreamInfo::type
RecorderStreamType type
Definition: AgoraBase.h:7052
agora::rtc::LocalAudioMixerConfiguration::audioInputStreams
MixedAudioStream * audioInputStreams
Definition: AgoraBase.h:4318
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHPOSITION
@ FACE_SHAPE_AREA_MOUTHPOSITION
Definition: AgoraBase.h:5041
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:4357
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2409
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:3485
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:4091
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWING
@ FACE_SHAPE_AREA_NOSEWING
Definition: AgoraBase.h:4999
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:4067
agora::rtc::IPacketObserver
Definition: AgoraBase.h:3469
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:4062
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHIN
@ FACE_SHAPE_AREA_CHIN
Definition: AgoraBase.h:4932
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWTHICKNESS
@ FACE_SHAPE_AREA_EYEBROWTHICKNESS
Definition: AgoraBase.h:5069
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2398
agora::VideoLayout::width
uint32_t width
Definition: AgoraBase.h:7158
agora::rtc::VideoFormat
Definition: AgoraBase.h:2737
agora::rtc::AdvanceOptions
Definition: AgoraBase.h:1793
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:3947
agora::rtc::MixedAudioStream::trackId
track_id_t trackId
Definition: AgoraBase.h:4282
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2314
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEKBONE
@ FACE_SHAPE_AREA_CHEEKBONE
Definition: AgoraBase.h:4913
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:2101
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1802
agora::rtc::LocalAudioMixerConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4314
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2346
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2436
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:4407
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:2040
agora::rtc::VideoCanvas::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraBase.h:4750
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:6299
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:3991
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1471
agora::rtc::LocalAudioMixerConfiguration
Definition: AgoraBase.h:4310
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1706
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2382
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2354
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1477
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:7129
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2374
agora::VideoLayout::height
uint32_t height
Definition: AgoraBase.h:7162
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3424
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:4817
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:3997
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_FEMALE
@ FACE_SHAPE_BEAUTY_STYLE_FEMALE
Definition: AgoraBase.h:5100
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3362
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3376
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE
FACE_SHAPE_BEAUTY_STYLE
The face shape beauty style options.
Definition: AgoraBase.h:5096
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEK
@ FACE_SHAPE_AREA_CHEEK
Definition: AgoraBase.h:4919
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSCALE
@ FACE_SHAPE_AREA_MOUTHSCALE
Definition: AgoraBase.h:5034
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:3929
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_MALE
@ FACE_SHAPE_BEAUTY_STYLE_MALE
Definition: AgoraBase.h:5104
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:5856
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACEWIDTH
@ FACE_SHAPE_AREA_FACEWIDTH
Definition: AgoraBase.h:4907
agora::base::AParameter
Definition: AgoraBase.h:7069
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:4846
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:6526
agora::util::AOutputIterator
Definition: AgoraBase.h:202
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2304
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:6102
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1710
agora::rtc::ScreenAudioParameters
Definition: AgoraBase.h:5756
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:3358
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:6906
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:4395
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1737
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1720
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:4039
agora::rtc::SimulcastConfig::StreamLayerConfig
Definition: AgoraBase.h:2208
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3370
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:4043
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:4071
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:6311
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:5347
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:6718
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2122
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:3834
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:5331
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:4383
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEGENERAL
@ FACE_SHAPE_AREA_NOSEGENERAL
Definition: AgoraBase.h:5027
agora::rtc::VideoDenoiserOptions
Definition: AgoraBase.h:5204
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2284
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:5224
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:4739
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1551
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1945
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2249
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1555
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2318
agora::rtc::MixedAudioStream::channelId
const char * channelId
Definition: AgoraBase.h:4277
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1505
agora::UserInfo
Definition: AgoraBase.h:824
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2485
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:5278
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPUPILS
@ FACE_SHAPE_AREA_EYEPUPILS
Definition: AgoraBase.h:4966
agora::rtc::WlAccStats::frozenRatioPercent
unsigned short frozenRatioPercent
Definition: AgoraBase.h:4618
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:5191
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:4698
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:4141
agora::rtc::ScreenCaptureParameters::audioParams
ScreenAudioParameters audioParams
Definition: AgoraBase.h:5797
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:6089
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:6541
agora::rtc::WlAccStats::lossRatePercent
unsigned short lossRatePercent
Definition: AgoraBase.h:4622
agora::rtc::ScreenCaptureParameters::captureAudio
bool captureAudio
Definition: AgoraBase.h:5793
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:5293
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:4049
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:3441
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSETIP
@ FACE_SHAPE_AREA_NOSETIP
Definition: AgoraBase.h:5020
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:6292
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:840
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:5166
agora::VideoLayout::y
uint32_t y
Definition: AgoraBase.h:7154
agora::rtc::WlAccStats
Definition: AgoraBase.h:4610
agora::rtc::LocalAudioStats::aecEstimatedDelay
int aecEstimatedDelay
Definition: AgoraBase.h:3631
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:4707
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:7113
agora::rtc::LocalAudioStats::earMonitorDelay
int earMonitorDelay
Definition: AgoraBase.h:3627
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA
FACE_SHAPE_AREA
The specific facial area to be adjusted.
Definition: AgoraBase.h:4875
agora::rtc::UserInfo::customUserInfo
char customUserInfo[MAX_CUSTOM_USER_INFO_LENGTH]
Definition: AgoraBase.h:6727
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3380
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2362
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1515
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1745
agora::rtc::SimulcastConfig::STREAM_LAYER_6
@ STREAM_LAYER_6
Definition: AgoraBase.h:2198
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEINNERCORNER
@ FACE_SHAPE_AREA_EYEINNERCORNER
Definition: AgoraBase.h:4973
agora::rtc::LocalAudioStats::audioPlayoutDelay
int audioPlayoutDelay
Definition: AgoraBase.h:3623
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:7125
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3384
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_LOWEREYELID
@ FACE_SHAPE_AREA_LOWEREYELID
Definition: AgoraBase.h:4959
agora::rtc::AdvanceOptions::encodeAlpha
bool encodeAlpha
Definition: AgoraBase.h:1808
agora::VideoLayout::strUid
user_id_t strUid
Definition: AgoraBase.h:7146
agora::rtc::LogUploadServerInfo
Definition: AgoraBase.h:6964
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Definition: AgoraBase.h:5217
agora::rtc::AudioTrackConfig::enableAudioProcessing
bool enableAudioProcessing
Definition: AgoraBase.h:5406
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4727
agora::rtc::CodecCapInfo
Definition: AgoraBase.h:1910
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:5818
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:6044
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2471
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:4084
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:3810
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2150
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1724
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:4346
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2390
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4205
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:4821
agora::base::LicenseCallback
Definition: AgoraBase.h:7083
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:6521
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:4019
agora::rtc::SimulcastConfig::STREAM_LOW
@ STREAM_LOW
Definition: AgoraBase.h:2202
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:5281
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:6902
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:4702
agora::rtc::LocalAccessPointConfiguration::disableAut
bool disableAut
Definition: AgoraBase.h:7021
agora::rtc::ScreenAudioParameters::sampleRate
int sampleRate
Definition: AgoraBase.h:5760
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:5812
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1108
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:4150
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:4010
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:4125
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:5341
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:6970
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYESCALE
@ FACE_SHAPE_AREA_EYESCALE
Definition: AgoraBase.h:4938
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHLIP
@ FACE_SHAPE_AREA_MOUTHLIP
Definition: AgoraBase.h:5055
agora::rtc::SimulcastConfig::STREAM_LAYER_5
@ STREAM_LAYER_5
Definition: AgoraBase.h:2194
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEBRIDGE
@ FACE_SHAPE_AREA_NOSEBRIDGE
Definition: AgoraBase.h:5013
agora::VideoLayout::videoState
uint32_t videoState
Definition: AgoraBase.h:7167
agora::rtc::MixedAudioStream::sourceType
AUDIO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4267
agora::rtc::RtcStats
Definition: AgoraBase.h:2330
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1627
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:5301
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2299
agora::rtc::LowlightEnhanceOptions
Definition: AgoraBase.h:5156
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:3941
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:3984
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1529
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2342
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2378
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:5236
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2370
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3598
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:6922
agora::rtc::SimulcastConfig::STREAM_LAYER_COUNT_MAX
@ STREAM_LAYER_COUNT_MAX
Definition: AgoraBase.h:2206
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:2293
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:2035
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3594
agora::rtc::RecorderStreamInfo
Definition: AgoraBase.h:7040
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:6973
agora::rtc::SimulcastConfig
Definition: AgoraBase.h:2170
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:5829
agora::rtc::MixedAudioStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:4272
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:3802
agora::rtc::FocalLengthInfo::focalLengthType
CAMERA_FOCAL_LENGTH_TYPE focalLengthType
Definition: AgoraBase.h:1927
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1463
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2421
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2416
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:4352
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:3354
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEPOSITION
@ FACE_SHAPE_AREA_EYEPOSITION
Definition: AgoraBase.h:4952
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:1797
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3366
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:5182
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2451
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:1916
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:4094
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:1914
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:6005
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:7101
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
Definition: AgoraBase.h:5160
agora::util::IContainer
Definition: AgoraBase.h:193
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:5315
agora::rtc::LocalAudioMixerConfiguration::syncWithLocalMic
bool syncWithLocalMic
Definition: AgoraBase.h:4325
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MANDIBLE
@ FACE_SHAPE_AREA_MANDIBLE
Definition: AgoraBase.h:4926
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1104
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:5309
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_NATURAL
@ FACE_SHAPE_BEAUTY_STYLE_NATURAL
Definition: AgoraBase.h:5109
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:6914
agora::rtc::FaceShapeAreaOptions::shapeIntensity
int shapeIntensity
Definition: AgoraBase.h:5079
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:4163
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2113
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:5187
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:4029
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FOREHEAD
@ FACE_SHAPE_AREA_FOREHEAD
Definition: AgoraBase.h:4889
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1912
agora::rtc::AudioTrackConfig
Definition: AgoraBase.h:5394
agora::rtc::FocalLengthInfo::cameraDirection
int cameraDirection
Definition: AgoraBase.h:1925
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:6998
agora::rtc::SimulcastConfig::STREAM_LAYER_4
@ STREAM_LAYER_4
Definition: AgoraBase.h:2190
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:4159
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:4183
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:2155
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:3824
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEOUTERCORNER
@ FACE_SHAPE_AREA_EYEOUTERCORNER
Definition: AgoraBase.h:4980
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4145
agora::rtc::VideoCanvas::subviewUid
uid_t subviewUid
Definition: AgoraBase.h:4694
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:6533
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1732
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:5312
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:5843
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:7001
agora::rtc::SimulcastConfig::STREAM_LAYER_3
@ STREAM_LAYER_3
Definition: AgoraBase.h:2186
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1543
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3339
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:4214
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_HEADSCALE
@ FACE_SHAPE_AREA_HEADSCALE
Definition: AgoraBase.h:4883
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1262
agora::rtc::SimulcastConfig::StreamLayerConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2212
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:5289
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1559
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:5164
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2466
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NONE
@ FACE_SHAPE_AREA_NONE
Definition: AgoraBase.h:4877
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:4003
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2489
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2386
agora::rtc::FaceShapeAreaOptions
Face shape area options. This structure defines options for facial adjustments on different facial ar...
Definition: AgoraBase.h:4869
agora::rtc::CodecCapLevels
Definition: AgoraBase.h:1900
agora::SpatialAudioParams
Definition: AgoraBase.h:7097
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:5267
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:5232
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1937
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:4419
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:4155
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEROOT
@ FACE_SHAPE_AREA_NOSEROOT
Definition: AgoraBase.h:5006
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2456
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:4819
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:6324
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:2024
agora::rtc::WlAccStats::e2eDelayPercent
unsigned short e2eDelayPercent
Definition: AgoraBase.h:4614
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYEBROWPOSITION
@ FACE_SHAPE_AREA_EYEBROWPOSITION
Definition: AgoraBase.h:5062
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:3854
agora::rtc::FocalLengthInfo
Definition: AgoraBase.h:1923
agora::rtc::DeviceInfo
Definition: AgoraBase.h:3455
agora::base::IEngineBase
Definition: AgoraBase.h:7063
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1328
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:6037
agora::util::IIterator
Definition: AgoraBase.h:184
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:6722
agora::rtc::VideoRenderingTracingInfo
Definition: AgoraBase.h:6891
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:6978
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:5212
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1511
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1714
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2431
agora::rtc::FaceShapeBeautyOptions::styleIntensity
int styleIntensity
Definition: AgoraBase.h:5118
agora::VideoLayout::uid
rtc::uid_t uid
Definition: AgoraBase.h:7142
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:7004
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2577
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:3933
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:4684
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3610
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:6032
agora::rtc::SegmentationProperty
Definition: AgoraBase.h:5356
agora::rtc::SimulcastConfig::StreamLayerConfig::enable
bool enable
Definition: AgoraBase.h:2220
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:6295