Agora Java API Reference for Android
AgoraBase.h
1 //
2 // Agora Engine SDK
3 //
4 // Created by Sting Feng in 2017-11.
5 // Copyright (c) 2017 Agora.io. All rights reserved.
6 //
7 
8 // This header file is included by both high level and low level APIs,
9 #pragma once // NOLINT(build/header_guard)
10 
11 #include <stdarg.h>
12 #include <stddef.h>
13 #include <stdio.h>
14 #include <string.h>
15 #include <cassert>
16 
17 #include "IAgoraParameter.h"
18 #include "AgoraMediaBase.h"
19 #include "AgoraRefPtr.h"
20 #include "AgoraOptional.h"
21 
22 #define MAX_PATH_260 (260)
23 
24 #if defined(_WIN32)
25 
26 #ifndef WIN32_LEAN_AND_MEAN
27 #define WIN32_LEAN_AND_MEAN
28 #endif // !WIN32_LEAN_AND_MEAN
29 #if defined(__aarch64__)
30 #include <arm64intr.h>
31 #endif
32 #include <Windows.h>
33 
34 #if defined(AGORARTC_EXPORT)
35 #define AGORA_API extern "C" __declspec(dllexport)
36 #define AGORA_CPP_API __declspec(dllexport)
37 #else
38 #define AGORA_API extern "C" __declspec(dllimport)
39 #define AGORA_CPP_API __declspec(dllimport)
40 #endif // AGORARTC_EXPORT
41 
42 #define AGORA_CALL __cdecl
43 
44 #define __deprecated
45 
46 #define AGORA_CPP_INTERNAL_API extern
47 
48 #elif defined(__APPLE__)
49 
50 #include <TargetConditionals.h>
51 
52 #define AGORA_API extern "C" __attribute__((visibility("default")))
53 #define AGORA_CPP_API __attribute__((visibility("default")))
54 #define AGORA_CALL
55 
56 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
57 
58 #elif defined(__ANDROID__) || defined(__linux__)
59 
60 #define AGORA_API extern "C" __attribute__((visibility("default")))
61 #define AGORA_CPP_API __attribute__((visibility("default")))
62 #define AGORA_CALL
63 
64 #define __deprecated
65 
66 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
67 
68 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
69 
70 #define AGORA_API extern "C"
71 #define AGORA_CPP_API
72 #define AGORA_CALL
73 
74 #define __deprecated
75 
76 #endif // _WIN32
77 
78 #ifndef OPTIONAL_ENUM_SIZE_T
79 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
80 #define OPTIONAL_ENUM_SIZE_T enum : size_t
81 #else
82 #define OPTIONAL_ENUM_SIZE_T enum
83 #endif
84 #endif
85 
86 #ifndef OPTIONAL_NULLPTR
87 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
88 #define OPTIONAL_NULLPTR nullptr
89 #else
90 #define OPTIONAL_NULLPTR NULL
91 #endif
92 #endif
93 
94 #define INVALID_DISPLAY_ID (-2)
95 
96 namespace agora {
97 namespace util {
98 
99 template <class T>
100 class AutoPtr {
101  protected:
102  typedef T value_type;
103  typedef T* pointer_type;
104 
105  public:
106  explicit AutoPtr(pointer_type p = OPTIONAL_NULLPTR) : ptr_(p) {}
107 
108  ~AutoPtr() {
109  if (ptr_) {
110  ptr_->release();
111  ptr_ = OPTIONAL_NULLPTR;
112  }
113  }
114 
115  operator bool() const { return (ptr_ != OPTIONAL_NULLPTR); }
116 
117  value_type& operator*() const { return *get(); }
118 
119  pointer_type operator->() const { return get(); }
120 
121  pointer_type get() const { return ptr_; }
122 
123  pointer_type release() {
124  pointer_type ret = ptr_;
125  ptr_ = 0;
126  return ret;
127  }
128 
129  void reset(pointer_type ptr = OPTIONAL_NULLPTR) {
130  if (ptr != ptr_ && ptr_) {
131  ptr_->release();
132  }
133 
134  ptr_ = ptr;
135  }
136 
137  template <class C1, class C2>
138  bool queryInterface(C1* c, C2 iid) {
139  pointer_type p = OPTIONAL_NULLPTR;
140  if (c && !c->queryInterface(iid, reinterpret_cast<void**>(&p))) {
141  reset(p);
142  }
143 
144  return (p != OPTIONAL_NULLPTR);
145  }
146 
147  private:
148  AutoPtr(const AutoPtr&);
149  AutoPtr& operator=(const AutoPtr&);
150 
151  private:
152  pointer_type ptr_;
153 };
154 
155 template <class T>
156 class CopyableAutoPtr : public AutoPtr<T> {
157  typedef typename AutoPtr<T>::pointer_type pointer_type;
158 
159  public:
160  explicit CopyableAutoPtr(pointer_type p = 0) : AutoPtr<T>(p) {}
161  CopyableAutoPtr(const CopyableAutoPtr& rhs) { this->reset(rhs.clone()); }
162  CopyableAutoPtr& operator=(const CopyableAutoPtr& rhs) {
163  if (this != &rhs) this->reset(rhs.clone());
164  return *this;
165  }
166  pointer_type clone() const {
167  if (!this->get()) return OPTIONAL_NULLPTR;
168  return this->get()->clone();
169  }
170 };
171 
172 class IString {
173  public:
174  virtual bool empty() const = 0;
175  virtual const char* c_str() = 0;
176  virtual const char* data() = 0;
177  virtual size_t length() = 0;
178  virtual IString* clone() = 0;
179  virtual void release() = 0;
180  virtual ~IString() {}
181 };
183 
184 class IIterator {
185  public:
186  virtual void* current() = 0;
187  virtual const void* const_current() const = 0;
188  virtual bool next() = 0;
189  virtual void release() = 0;
190  virtual ~IIterator() {}
191 };
192 
193 class IContainer {
194  public:
195  virtual IIterator* begin() = 0;
196  virtual size_t size() const = 0;
197  virtual void release() = 0;
198  virtual ~IContainer() {}
199 };
200 
201 template <class T>
203  IIterator* p;
204 
205  public:
206  typedef T value_type;
207  typedef value_type& reference;
208  typedef const value_type& const_reference;
209  typedef value_type* pointer;
210  typedef const value_type* const_pointer;
211  explicit AOutputIterator(IIterator* it = OPTIONAL_NULLPTR) : p(it) {}
212  ~AOutputIterator() {
213  if (p) p->release();
214  }
215  AOutputIterator(const AOutputIterator& rhs) : p(rhs.p) {}
216  AOutputIterator& operator++() {
217  p->next();
218  return *this;
219  }
220  bool operator==(const AOutputIterator& rhs) const {
221  if (p && rhs.p)
222  return p->current() == rhs.p->current();
223  else
224  return valid() == rhs.valid();
225  }
226  bool operator!=(const AOutputIterator& rhs) const { return !this->operator==(rhs); }
227  reference operator*() { return *reinterpret_cast<pointer>(p->current()); }
228  const_reference operator*() const { return *reinterpret_cast<const_pointer>(p->const_current()); }
229  bool valid() const { return p && p->current() != OPTIONAL_NULLPTR; }
230 };
231 
232 template <class T>
233 class AList {
234  IContainer* container;
235  bool owner;
236 
237  public:
238  typedef T value_type;
239  typedef value_type& reference;
240  typedef const value_type& const_reference;
241  typedef value_type* pointer;
242  typedef const value_type* const_pointer;
243  typedef size_t size_type;
246 
247  public:
248  AList() : container(OPTIONAL_NULLPTR), owner(false) {}
249  AList(IContainer* c, bool take_ownership) : container(c), owner(take_ownership) {}
250  ~AList() { reset(); }
251  void reset(IContainer* c = OPTIONAL_NULLPTR, bool take_ownership = false) {
252  if (owner && container) container->release();
253  container = c;
254  owner = take_ownership;
255  }
256  iterator begin() { return container ? iterator(container->begin()) : iterator(OPTIONAL_NULLPTR); }
257  iterator end() { return iterator(OPTIONAL_NULLPTR); }
258  size_type size() const { return container ? container->size() : 0; }
259  bool empty() const { return size() == 0; }
260 };
261 
262 } // namespace util
263 
267 enum CHANNEL_PROFILE_TYPE {
273  CHANNEL_PROFILE_COMMUNICATION = 0,
279  CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
284  CHANNEL_PROFILE_GAME __deprecated = 2,
290  CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
291 
296  CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
297 };
298 
302 enum WARN_CODE_TYPE {
307  WARN_INVALID_VIEW = 8,
312  WARN_INIT_VIDEO = 16,
317  WARN_PENDING = 20,
322  WARN_NO_AVAILABLE_CHANNEL = 103,
328  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
333  WARN_LOOKUP_CHANNEL_REJECTED = 105,
339  WARN_OPEN_CHANNEL_TIMEOUT = 106,
344  WARN_OPEN_CHANNEL_REJECTED = 107,
345 
346  // sdk: 100~1000
350  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
354  WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
358  WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
362  WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
366  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
370  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
374  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
377  WARN_CHANNEL_SOCKET_ERROR = 134,
381  WARN_AUDIO_MIXING_OPEN_ERROR = 701,
385  WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
389  WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
393  WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
397  WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
401  WARN_ADM_RECORD_MALFUNCTION = 1021,
405  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
409  WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
417  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
421  WARN_APM_HOWLING = 1051,
425  WARN_ADM_GLITCH_STATE = 1052,
429  WARN_ADM_IMPROPER_SETTINGS = 1053,
433  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
438  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
446  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
447 };
448 
452 enum ERROR_CODE_TYPE {
456  ERR_OK = 0,
457  // 1~1000
461  ERR_FAILED = 1,
466  ERR_INVALID_ARGUMENT = 2,
473  ERR_NOT_READY = 3,
477  ERR_NOT_SUPPORTED = 4,
481  ERR_REFUSED = 5,
485  ERR_BUFFER_TOO_SMALL = 6,
489  ERR_NOT_INITIALIZED = 7,
493  ERR_INVALID_STATE = 8,
498  ERR_NO_PERMISSION = 9,
504  ERR_TIMEDOUT = 10,
509  ERR_CANCELED = 11,
515  ERR_TOO_OFTEN = 12,
521  ERR_BIND_SOCKET = 13,
526  ERR_NET_DOWN = 14,
532  ERR_JOIN_CHANNEL_REJECTED = 17,
539  ERR_LEAVE_CHANNEL_REJECTED = 18,
543  ERR_ALREADY_IN_USE = 19,
548  ERR_ABORTED = 20,
553  ERR_INIT_NET_ENGINE = 21,
558  ERR_RESOURCE_LIMITED = 22,
564  ERR_INVALID_APP_ID = 101,
569  ERR_INVALID_CHANNEL_NAME = 102,
575  ERR_NO_SERVER_RESOURCES = 103,
588  ERR_TOKEN_EXPIRED = 109,
605  ERR_INVALID_TOKEN = 110,
610  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
615  ERR_CONNECTION_LOST = 112, // only used in web sdk
620  ERR_NOT_IN_CHANNEL = 113,
625  ERR_SIZE_TOO_LARGE = 114,
630  ERR_BITRATE_LIMIT = 115,
635  ERR_TOO_MANY_DATA_STREAMS = 116,
639  ERR_STREAM_MESSAGE_TIMEOUT = 117,
643  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
648  ERR_DECRYPTION_FAILED = 120,
652  ERR_INVALID_USER_ID = 121,
657  ERR_DATASTREAM_DECRYPTION_FAILED = 122,
661  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
667  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
668 
672  ERR_LICENSE_CREDENTIAL_INVALID = 131,
673 
677  ERR_INVALID_USER_ACCOUNT = 134,
678 
684  ERR_MODULE_NOT_FOUND = 157,
685 
686  // Licensing, keep the license error code same as the main version
687  ERR_CERT_RAW = 157,
688  ERR_CERT_JSON_PART = 158,
689  ERR_CERT_JSON_INVAL = 159,
690  ERR_CERT_JSON_NOMEM = 160,
691  ERR_CERT_CUSTOM = 161,
692  ERR_CERT_CREDENTIAL = 162,
693  ERR_CERT_SIGN = 163,
694  ERR_CERT_FAIL = 164,
695  ERR_CERT_BUF = 165,
696  ERR_CERT_NULL = 166,
697  ERR_CERT_DUEDATE = 167,
698  ERR_CERT_REQUEST = 168,
699 
700  // PcmSend Error num
701  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
702  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
703 
705  // signaling: 400~600
706  ERR_LOGIN_ALREADY_LOGIN = 428,
707 
709  // 1001~2000
713  ERR_LOAD_MEDIA_ENGINE = 1001,
719  ERR_ADM_GENERAL_ERROR = 1005,
724  ERR_ADM_INIT_PLAYOUT = 1008,
728  ERR_ADM_START_PLAYOUT = 1009,
732  ERR_ADM_STOP_PLAYOUT = 1010,
737  ERR_ADM_INIT_RECORDING = 1011,
741  ERR_ADM_START_RECORDING = 1012,
745  ERR_ADM_STOP_RECORDING = 1013,
749  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
750 };
751 
752 enum LICENSE_ERROR_TYPE {
756  LICENSE_ERR_INVALID = 1,
760  LICENSE_ERR_EXPIRE = 2,
764  LICENSE_ERR_MINUTES_EXCEED = 3,
768  LICENSE_ERR_LIMITED_PERIOD = 4,
772  LICENSE_ERR_DIFF_DEVICES = 5,
776  LICENSE_ERR_INTERNAL = 99,
777 };
778 
782 enum AUDIO_SESSION_OPERATION_RESTRICTION {
786  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
790  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
794  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
799  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
804  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
805 };
806 
807 typedef const char* user_id_t;
808 typedef void* view_t;
809 
813 struct UserInfo {
823  bool hasAudio;
829  bool hasVideo;
830 
831  UserInfo() : hasAudio(false), hasVideo(false) {}
832 };
833 
834 typedef util::AList<UserInfo> UserList;
835 
836 // Shared between Agora Service and Rtc Engine
837 namespace rtc {
838 
842 enum USER_OFFLINE_REASON_TYPE {
846  USER_OFFLINE_QUIT = 0,
852  USER_OFFLINE_DROPPED = 1,
856  USER_OFFLINE_BECOME_AUDIENCE = 2,
857 };
858 
859 enum INTERFACE_ID_TYPE {
860  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
861  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
862  AGORA_IID_PARAMETER_ENGINE = 3,
863  AGORA_IID_MEDIA_ENGINE = 4,
864  AGORA_IID_AUDIO_ENGINE = 5,
865  AGORA_IID_VIDEO_ENGINE = 6,
866  AGORA_IID_RTC_CONNECTION = 7,
867  AGORA_IID_SIGNALING_ENGINE = 8,
868  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
869  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
870  AGORA_IID_STATE_SYNC = 13,
871  AGORA_IID_META_SERVICE = 14,
872  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
873  AGORA_IID_H265_TRANSCODER = 16,
874 };
875 
879 enum QUALITY_TYPE {
884  QUALITY_UNKNOWN __deprecated = 0,
888  QUALITY_EXCELLENT = 1,
893  QUALITY_GOOD = 2,
897  QUALITY_POOR = 3,
901  QUALITY_BAD = 4,
905  QUALITY_VBAD = 5,
909  QUALITY_DOWN = 6,
913  QUALITY_UNSUPPORTED = 7,
917  QUALITY_DETECTING = 8,
918 };
919 
923 enum FIT_MODE_TYPE {
928  MODE_COVER = 1,
929 
935  MODE_CONTAIN = 2,
936 };
937 
941 enum VIDEO_ORIENTATION {
945  VIDEO_ORIENTATION_0 = 0,
949  VIDEO_ORIENTATION_90 = 90,
953  VIDEO_ORIENTATION_180 = 180,
957  VIDEO_ORIENTATION_270 = 270
958 };
959 
963 enum FRAME_RATE {
967  FRAME_RATE_FPS_1 = 1,
971  FRAME_RATE_FPS_7 = 7,
975  FRAME_RATE_FPS_10 = 10,
979  FRAME_RATE_FPS_15 = 15,
983  FRAME_RATE_FPS_24 = 24,
987  FRAME_RATE_FPS_30 = 30,
991  FRAME_RATE_FPS_60 = 60,
992 };
993 
994 enum FRAME_WIDTH {
995  FRAME_WIDTH_960 = 960,
996 };
997 
998 enum FRAME_HEIGHT {
999  FRAME_HEIGHT_540 = 540,
1000 };
1001 
1002 
1006 enum VIDEO_FRAME_TYPE {
1008  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1010  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1012  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1014  VIDEO_FRAME_TYPE_B_FRAME = 5,
1016  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1018  VIDEO_FRAME_TYPE_UNKNOW
1019 };
1020 
1024 enum ORIENTATION_MODE {
1032  ORIENTATION_MODE_ADAPTIVE = 0,
1039  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1046  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1047 };
1048 
1052 enum DEGRADATION_PREFERENCE {
1060  MAINTAIN_QUALITY = 0,
1066  MAINTAIN_FRAMERATE = 1,
1073  MAINTAIN_BALANCED = 2,
1077  MAINTAIN_RESOLUTION = 3,
1081  DISABLED = 100,
1082 };
1083 
1091  int width;
1095  int height;
1096  VideoDimensions() : width(640), height(480) {}
1097  VideoDimensions(int w, int h) : width(w), height(h) {}
1098  bool operator==(const VideoDimensions& rhs) const {
1099  return width == rhs.width && height == rhs.height;
1100  }
1101 };
1102 
1108 const int STANDARD_BITRATE = 0;
1109 
1117 const int COMPATIBLE_BITRATE = -1;
1118 
1122 const int DEFAULT_MIN_BITRATE = -1;
1123 
1127 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1128 
1132 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1133  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1134  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1135  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1136 };
1137 
1141 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1143  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1145  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1147  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1149  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1151  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1152 };
1153 
1157 enum VIDEO_CODEC_TYPE {
1158  VIDEO_CODEC_NONE = 0,
1162  VIDEO_CODEC_VP8 = 1,
1166  VIDEO_CODEC_H264 = 2,
1170  VIDEO_CODEC_H265 = 3,
1175  VIDEO_CODEC_GENERIC = 6,
1179  VIDEO_CODEC_GENERIC_H264 = 7,
1184  VIDEO_CODEC_AV1 = 12,
1188  VIDEO_CODEC_VP9 = 13,
1192  VIDEO_CODEC_GENERIC_JPEG = 20,
1193 };
1194 
1198 enum CAMERA_FOCAL_LENGTH_TYPE {
1202  CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1206  CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1210  CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1214  CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1215 };
1216 
1220 enum TCcMode {
1224  CC_ENABLED,
1228  CC_DISABLED,
1229 };
1230 
1238  TCcMode ccMode;
1242  VIDEO_CODEC_TYPE codecType;
1243 
1301 
1302  SenderOptions()
1303  : ccMode(CC_ENABLED),
1304  codecType(VIDEO_CODEC_H265),
1305  targetBitrate(6500) {}
1306 };
1307 
1311 enum AUDIO_CODEC_TYPE {
1315  AUDIO_CODEC_OPUS = 1,
1316  // kIsac = 2,
1320  AUDIO_CODEC_PCMA = 3,
1324  AUDIO_CODEC_PCMU = 4,
1328  AUDIO_CODEC_G722 = 5,
1329  // kIlbc = 6,
1331  // AUDIO_CODEC_AAC = 7,
1335  AUDIO_CODEC_AACLC = 8,
1339  AUDIO_CODEC_HEAAC = 9,
1343  AUDIO_CODEC_JC1 = 10,
1347  AUDIO_CODEC_HEAAC2 = 11,
1351  AUDIO_CODEC_LPCNET = 12,
1355  AUDIO_CODEC_OPUSMC = 13,
1356 };
1357 
1361 enum AUDIO_ENCODING_TYPE {
1366  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1371  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1376  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1381  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1386  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1391  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1396  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1401  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1406  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1411  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1416  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1417 };
1418 
1422 enum WATERMARK_FIT_MODE {
1427  FIT_MODE_COVER_POSITION,
1432  FIT_MODE_USE_IMAGE_RATIO
1433 };
1434 
1440  : speech(true),
1441  sendEvenIfEmpty(true) {}
1442 
1448  bool speech;
1455 };
1456 
1462  : codec(AUDIO_CODEC_AACLC),
1463  sampleRateHz(0),
1464  samplesPerChannel(0),
1465  numberOfChannels(0),
1466  captureTimeMs(0) {}
1467 
1469  : codec(rhs.codec),
1478  AUDIO_CODEC_TYPE codec;
1497 
1501  int64_t captureTimeMs;
1502 };
1507  AudioPcmDataInfo() : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1508 
1511  channelNum(rhs.channelNum),
1512  samplesOut(rhs.samplesOut),
1514  ntpTimeMs(rhs.ntpTimeMs) {}
1515 
1520 
1521  int16_t channelNum;
1522 
1523  // Output
1527  size_t samplesOut;
1531  int64_t elapsedTimeMs;
1535  int64_t ntpTimeMs;
1536 };
1540 enum H264PacketizeMode {
1544  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1548  SingleNalUnit, // Mode 0 - only single NALU allowed
1549 };
1550 
1554 enum VIDEO_STREAM_TYPE {
1558  VIDEO_STREAM_HIGH = 0,
1562  VIDEO_STREAM_LOW = 1,
1566  VIDEO_STREAM_LAYER_1 = 4,
1570  VIDEO_STREAM_LAYER_2 = 5,
1574  VIDEO_STREAM_LAYER_3 = 6,
1578  VIDEO_STREAM_LAYER_4 = 7,
1582  VIDEO_STREAM_LAYER_5 = 8,
1586  VIDEO_STREAM_LAYER_6 = 9,
1587 
1588 };
1589 
1604 
1606 };
1607 
1608 
1611 enum MAX_USER_ACCOUNT_LENGTH_TYPE
1612 {
1615  MAX_USER_ACCOUNT_LENGTH = 256
1616 };
1617 
1623  : uid(0),
1624  codecType(VIDEO_CODEC_H264),
1625  width(0),
1626  height(0),
1627  framesPerSecond(0),
1628  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1629  rotation(VIDEO_ORIENTATION_0),
1630  trackId(0),
1631  captureTimeMs(0),
1632  decodeTimeMs(0),
1633  streamType(VIDEO_STREAM_HIGH),
1634  presentationMs(-1) {}
1635 
1637  : uid(rhs.uid),
1638  codecType(rhs.codecType),
1639  width(rhs.width),
1640  height(rhs.height),
1642  frameType(rhs.frameType),
1643  rotation(rhs.rotation),
1644  trackId(rhs.trackId),
1647  streamType(rhs.streamType),
1648  presentationMs(rhs.presentationMs) {}
1649 
1650  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1651  if (this == &rhs) return *this;
1652  uid = rhs.uid;
1653  codecType = rhs.codecType;
1654  width = rhs.width;
1655  height = rhs.height;
1657  frameType = rhs.frameType;
1658  rotation = rhs.rotation;
1659  trackId = rhs.trackId;
1661  decodeTimeMs = rhs.decodeTimeMs;
1662  streamType = rhs.streamType;
1663  presentationMs = rhs.presentationMs;
1664  return *this;
1665  }
1666 
1670  uid_t uid;
1674  VIDEO_CODEC_TYPE codecType;
1678  int width;
1682  int height;
1692  VIDEO_FRAME_TYPE frameType;
1696  VIDEO_ORIENTATION rotation;
1700  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1701  // and additional payload for later implementation.
1705  int64_t captureTimeMs;
1709  int64_t decodeTimeMs;
1713  VIDEO_STREAM_TYPE streamType;
1714 
1715  // @technical preview
1716  int64_t presentationMs;
1717 };
1718 
1722 enum COMPRESSION_PREFERENCE {
1726  PREFER_LOW_LATENCY,
1730  PREFER_QUALITY,
1731 };
1732 
1736 enum ENCODING_PREFERENCE {
1740  PREFER_AUTO = -1,
1744  PREFER_SOFTWARE = 0,
1748  PREFER_HARDWARE = 1,
1749 };
1750 
1755 
1759  ENCODING_PREFERENCE encodingPreference;
1760 
1764  COMPRESSION_PREFERENCE compressionPreference;
1765 
1771 
1772  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1773  compressionPreference(PREFER_LOW_LATENCY),
1774  encodeAlpha(false) {}
1775 
1776  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1777  COMPRESSION_PREFERENCE compression_preference,
1778  bool encode_alpha) :
1779  encodingPreference(encoding_preference),
1780  compressionPreference(compression_preference),
1781  encodeAlpha(encode_alpha) {}
1782 
1783  bool operator==(const AdvanceOptions& rhs) const {
1784  return encodingPreference == rhs.encodingPreference &&
1785  compressionPreference == rhs.compressionPreference &&
1786  encodeAlpha == rhs.encodeAlpha;
1787  }
1788 
1789 };
1790 
1794 enum VIDEO_MIRROR_MODE_TYPE {
1798  VIDEO_MIRROR_MODE_AUTO = 0,
1802  VIDEO_MIRROR_MODE_ENABLED = 1,
1806  VIDEO_MIRROR_MODE_DISABLED = 2,
1807 };
1808 
1809 #if defined(__APPLE__) && TARGET_OS_IOS
1810 
1813 enum CAMERA_FORMAT_TYPE {
1815  CAMERA_FORMAT_NV12,
1817  CAMERA_FORMAT_BGRA,
1818 };
1819 #endif
1820 
1822 enum CODEC_CAP_MASK {
1824  CODEC_CAP_MASK_NONE = 0,
1825 
1827  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1828 
1830  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1831 
1833  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1834 
1836  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1837 };
1838 
1840  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1841  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1842 
1843  CodecCapLevels(): hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED), swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1844 };
1845 
1849  VIDEO_CODEC_TYPE codecType;
1854 
1855  CodecCapInfo(): codecType(VIDEO_CODEC_NONE), codecCapMask(0) {}
1856 };
1857 
1863  CAMERA_FOCAL_LENGTH_TYPE focalLengthType;
1864 };
1865 
1873  VIDEO_CODEC_TYPE codecType;
1938  int bitrate;
1939 
1959  ORIENTATION_MODE orientationMode;
1963  DEGRADATION_PREFERENCE degradationPreference;
1964 
1969  VIDEO_MIRROR_MODE_TYPE mirrorMode;
1970 
1975 
1976  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1977  : codecType(VIDEO_CODEC_NONE),
1978  dimensions(d),
1979  frameRate(f),
1980  bitrate(b),
1981  minBitrate(DEFAULT_MIN_BITRATE),
1982  orientationMode(m),
1983  degradationPreference(MAINTAIN_QUALITY),
1984  mirrorMode(mirror),
1985  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY, false) {}
1986  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1987  : codecType(VIDEO_CODEC_NONE),
1988  dimensions(width, height),
1989  frameRate(f),
1990  bitrate(b),
1991  minBitrate(DEFAULT_MIN_BITRATE),
1992  orientationMode(m),
1993  degradationPreference(MAINTAIN_QUALITY),
1994  mirrorMode(mirror),
1995  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY, false) {}
1996  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
1997  : codecType(config.codecType),
1998  dimensions(config.dimensions),
1999  frameRate(config.frameRate),
2000  bitrate(config.bitrate),
2001  minBitrate(config.minBitrate),
2004  mirrorMode(config.mirrorMode),
2005  advanceOptions(config.advanceOptions) {}
2006  VideoEncoderConfiguration()
2007  : codecType(VIDEO_CODEC_NONE),
2008  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2009  frameRate(FRAME_RATE_FPS_15),
2010  bitrate(STANDARD_BITRATE),
2011  minBitrate(DEFAULT_MIN_BITRATE),
2012  orientationMode(ORIENTATION_MODE_ADAPTIVE),
2013  degradationPreference(MAINTAIN_QUALITY),
2014  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
2015  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY, false) {}
2016 
2017  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
2018  if (this == &rhs) return *this;
2019  codecType = rhs.codecType;
2020  dimensions = rhs.dimensions;
2021  frameRate = rhs.frameRate;
2022  bitrate = rhs.bitrate;
2023  minBitrate = rhs.minBitrate;
2024  orientationMode = rhs.orientationMode;
2025  degradationPreference = rhs.degradationPreference;
2026  mirrorMode = rhs.mirrorMode;
2027  advanceOptions = rhs.advanceOptions;
2028  return *this;
2029  }
2030 };
2031 
2055  bool ordered;
2056 };
2057 
2061 enum SIMULCAST_STREAM_MODE {
2062  /*
2063  * disable simulcast stream until receive request for enable simulcast stream by other broadcaster
2064  */
2065  AUTO_SIMULCAST_STREAM = -1,
2066  /*
2067  * disable simulcast stream
2068  */
2069  DISABLE_SIMULCAST_STREAM = 0,
2070  /*
2071  * always enable simulcast stream
2072  */
2073  ENABLE_SIMULCAST_STREAM = 1,
2074 };
2075 
2092  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
2094  bool operator==(const SimulcastStreamConfig& rhs) const {
2095  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
2096  }
2097 };
2098 
2139  };
2152  bool enable;
2153  StreamLayerConfig() : dimensions(0, 0), framerate(0), enable(false) {}
2154  };
2155 
2160 };
2165 struct Rectangle {
2169  int x;
2173  int y;
2177  int width;
2181  int height;
2182 
2183  Rectangle() : x(0), y(0), width(0), height(0) {}
2184  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2185 };
2186 
2201  float xRatio;
2207  float yRatio;
2213  float widthRatio;
2214 
2215  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2216  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2217 };
2218 
2247  WATERMARK_FIT_MODE mode;
2248 
2250  : visibleInPreview(true),
2251  positionInLandscapeMode(0, 0, 0, 0),
2252  positionInPortraitMode(0, 0, 0, 0),
2253  mode(FIT_MODE_COVER_POSITION) {}
2254 };
2255 
2259 struct RtcStats {
2263  unsigned int duration;
2267  unsigned int txBytes;
2271  unsigned int rxBytes;
2275  unsigned int txAudioBytes;
2279  unsigned int txVideoBytes;
2283  unsigned int rxAudioBytes;
2287  unsigned int rxVideoBytes;
2291  unsigned short txKBitRate;
2295  unsigned short rxKBitRate;
2299  unsigned short rxAudioKBitRate;
2303  unsigned short txAudioKBitRate;
2307  unsigned short rxVideoKBitRate;
2311  unsigned short txVideoKBitRate;
2315  unsigned short lastmileDelay;
2319  unsigned int userCount;
2326  double cpuAppUsage;
2416  RtcStats()
2417  : duration(0),
2418  txBytes(0),
2419  rxBytes(0),
2420  txAudioBytes(0),
2421  txVideoBytes(0),
2422  rxAudioBytes(0),
2423  rxVideoBytes(0),
2424  txKBitRate(0),
2425  rxKBitRate(0),
2426  rxAudioKBitRate(0),
2427  txAudioKBitRate(0),
2428  rxVideoKBitRate(0),
2429  txVideoKBitRate(0),
2430  lastmileDelay(0),
2431  userCount(0),
2432  cpuAppUsage(0.0),
2433  cpuTotalUsage(0.0),
2434  gatewayRtt(0),
2435  memoryAppUsageRatio(0.0),
2436  memoryTotalUsageRatio(0.0),
2438  connectTimeMs(0),
2448  txPacketLossRate(0),
2449  rxPacketLossRate(0) {}
2450 };
2451 
2455 enum CLIENT_ROLE_TYPE {
2459  CLIENT_ROLE_BROADCASTER = 1,
2463  CLIENT_ROLE_AUDIENCE = 2,
2464 };
2465 
2469 enum QUALITY_ADAPT_INDICATION {
2473  ADAPT_NONE = 0,
2477  ADAPT_UP_BANDWIDTH = 1,
2481  ADAPT_DOWN_BANDWIDTH = 2,
2482 };
2483 
2488 enum AUDIENCE_LATENCY_LEVEL_TYPE
2489 {
2493  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2497  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2498 };
2499 
2504 {
2508  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2509 
2511  : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2512 };
2513 
2517 enum EXPERIENCE_QUALITY_TYPE {
2519  EXPERIENCE_QUALITY_GOOD = 0,
2521  EXPERIENCE_QUALITY_BAD = 1,
2522 };
2523 
2527 enum EXPERIENCE_POOR_REASON {
2531  EXPERIENCE_REASON_NONE = 0,
2535  REMOTE_NETWORK_QUALITY_POOR = 1,
2539  LOCAL_NETWORK_QUALITY_POOR = 2,
2543  WIRELESS_SIGNAL_POOR = 4,
2548  WIFI_BLUETOOTH_COEXIST = 8,
2549 };
2550 
2554 enum AUDIO_AINS_MODE {
2558  AINS_MODE_BALANCED = 0,
2562  AINS_MODE_AGGRESSIVE = 1,
2566  AINS_MODE_ULTRALOWLATENCY = 2
2567 };
2568 
2572 enum AUDIO_PROFILE_TYPE {
2581  AUDIO_PROFILE_DEFAULT = 0,
2585  AUDIO_PROFILE_SPEECH_STANDARD = 1,
2589  AUDIO_PROFILE_MUSIC_STANDARD = 2,
2596  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2600  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2607  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2611  AUDIO_PROFILE_IOT = 6,
2612  AUDIO_PROFILE_NUM = 7
2613 };
2614 
2618 enum AUDIO_SCENARIO_TYPE {
2623  AUDIO_SCENARIO_DEFAULT = 0,
2629  AUDIO_SCENARIO_GAME_STREAMING = 3,
2635  AUDIO_SCENARIO_CHATROOM = 5,
2639  AUDIO_SCENARIO_CHORUS = 7,
2643  AUDIO_SCENARIO_MEETING = 8,
2647  AUDIO_SCENARIO_NUM = 9,
2648 };
2649 
2653 struct VideoFormat {
2654  OPTIONAL_ENUM_SIZE_T {
2656  kMaxWidthInPixels = 3840,
2658  kMaxHeightInPixels = 2160,
2660  kMaxFps = 60,
2661  };
2662 
2666  int width; // Number of pixels.
2670  int height; // Number of pixels.
2674  int fps;
2675  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
2676  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
2677 
2678  bool operator<(const VideoFormat& fmt) const {
2679  if (height != fmt.height) {
2680  return height < fmt.height;
2681  } else if (width != fmt.width) {
2682  return width < fmt.width;
2683  } else {
2684  return fps < fmt.fps;
2685  }
2686  }
2687  bool operator==(const VideoFormat& fmt) const {
2688  return width == fmt.width && height == fmt.height && fps == fmt.fps;
2689  }
2690  bool operator!=(const VideoFormat& fmt) const {
2691  return !operator==(fmt);
2692  }
2693 };
2694 
2698 enum VIDEO_CONTENT_HINT {
2702  CONTENT_HINT_NONE,
2709  CONTENT_HINT_MOTION,
2715  CONTENT_HINT_DETAILS
2716 };
2720 enum SCREEN_SCENARIO_TYPE {
2726  SCREEN_SCENARIO_DOCUMENT = 1,
2731  SCREEN_SCENARIO_GAMING = 2,
2736  SCREEN_SCENARIO_VIDEO = 3,
2742  SCREEN_SCENARIO_RDC = 4,
2743 };
2744 
2745 
2749 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2753  APPLICATION_SCENARIO_GENERAL = 0,
2757  APPLICATION_SCENARIO_MEETING = 1,
2761  APPLICATION_SCENARIO_1V1 = 2,
2762 };
2763 
2767 enum VIDEO_QOE_PREFERENCE_TYPE {
2771  VIDEO_QOE_PREFERENCE_BALANCE = 1,
2775  VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2779  VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2783  VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2784 
2785 };
2786 
2790 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2794  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2797  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2800  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2803  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2804 };
2805 
2806 enum CAMERA_STABILIZATION_MODE {
2809  CAMERA_STABILIZATION_MODE_OFF = -1,
2812  CAMERA_STABILIZATION_MODE_AUTO = 0,
2815  CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2818  CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2821  CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2824  CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2825 };
2826 
2830 enum LOCAL_AUDIO_STREAM_STATE {
2834  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2838  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2842  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2846  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2847 };
2848 
2852 enum LOCAL_AUDIO_STREAM_REASON {
2856  LOCAL_AUDIO_STREAM_REASON_OK = 0,
2860  LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2864  LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2871  LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2875  LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2879  LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2882  LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2885  LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2889  LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2892  LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2895  LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2896 };
2897 
2900 enum LOCAL_VIDEO_STREAM_STATE {
2904  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2909  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2913  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2917  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2918 };
2919 
2923 enum LOCAL_VIDEO_STREAM_REASON {
2927  LOCAL_VIDEO_STREAM_REASON_OK = 0,
2931  LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
2936  LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2941  LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
2947  LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
2951  LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
2956  LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
2963  LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2969  LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
2974  LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
2979  LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
2984  LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
2989  LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
2993  LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
2999  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3014  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3016  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3018  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3020  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3022  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3028  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3030  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3032  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3034  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3042  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3044  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3046  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3047 
3048 };
3049 
3053 enum REMOTE_AUDIO_STATE
3054 {
3060  REMOTE_AUDIO_STATE_STOPPED = 0, // Default state, audio is started or remote user disabled/muted audio stream
3064  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
3070  REMOTE_AUDIO_STATE_DECODING = 2, // The first remote audio frame has been decoded or fronzen state ends
3075  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
3080  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
3081 };
3082 
3086 enum REMOTE_AUDIO_STATE_REASON
3087 {
3091  REMOTE_AUDIO_REASON_INTERNAL = 0,
3095  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3099  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3104  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3109  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3114  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3119  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3123  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3127  REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3131  REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3132 };
3133 
3137 enum REMOTE_VIDEO_STATE {
3143  REMOTE_VIDEO_STATE_STOPPED = 0,
3147  REMOTE_VIDEO_STATE_STARTING = 1,
3153  REMOTE_VIDEO_STATE_DECODING = 2,
3157  REMOTE_VIDEO_STATE_FROZEN = 3,
3161  REMOTE_VIDEO_STATE_FAILED = 4,
3162 };
3166 enum REMOTE_VIDEO_STATE_REASON {
3170  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3174  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3178  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3182  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3186  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3190  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3194  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3198  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3202  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3206  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3209  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3212  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3215  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3216 
3219  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3220 
3221 };
3222 
3226 enum REMOTE_USER_STATE {
3230  USER_STATE_MUTE_AUDIO = (1 << 0),
3234  USER_STATE_MUTE_VIDEO = (1 << 1),
3238  USER_STATE_ENABLE_VIDEO = (1 << 4),
3242  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3243 };
3244 
3250  VideoTrackInfo()
3251  : isLocal(false), ownerUid(0), trackId(0), channelId(OPTIONAL_NULLPTR)
3252  , codecType(VIDEO_CODEC_H265)
3253  , encodedFrameOnly(false), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY)
3254  , observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
3260  bool isLocal;
3264  uid_t ownerUid;
3268  track_id_t trackId;
3272  const char* channelId;
3276  VIDEO_CODEC_TYPE codecType;
3286  VIDEO_SOURCE_TYPE sourceType;
3291 };
3292 
3296 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3300  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3304  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3308  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3312  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3316  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3317 };
3318 
3329  uid_t uid;
3335  unsigned int volume; // [0,255]
3345  unsigned int vad;
3351  double voicePitch;
3352 
3353  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3354 };
3355 
3359 struct DeviceInfo {
3360  /*
3361  * Whether the audio device supports ultra-low-latency capture and playback:
3362  * - `true`: The device supports ultra-low-latency capture and playback.
3363  * - `false`: The device does not support ultra-low-latency capture and playback.
3364  */
3365  bool isLowLatencyAudioSupported;
3366 
3367  DeviceInfo() : isLowLatencyAudioSupported(false) {}
3368 };
3369 
3374  public:
3375  virtual ~IPacketObserver() {}
3379  struct Packet {
3385  const unsigned char* buffer;
3389  unsigned int size;
3390 
3391  Packet() : buffer(OPTIONAL_NULLPTR), size(0) {}
3392  };
3400  virtual bool onSendAudioPacket(Packet& packet) = 0;
3408  virtual bool onSendVideoPacket(Packet& packet) = 0;
3416  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3424  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3425 };
3426 
3430 enum AUDIO_SAMPLE_RATE_TYPE {
3434  AUDIO_SAMPLE_RATE_32000 = 32000,
3438  AUDIO_SAMPLE_RATE_44100 = 44100,
3442  AUDIO_SAMPLE_RATE_48000 = 48000,
3443 };
3447 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3451  VIDEO_CODEC_H264_FOR_STREAM = 1,
3455  VIDEO_CODEC_H265_FOR_STREAM = 2,
3456 };
3457 
3461 enum VIDEO_CODEC_PROFILE_TYPE {
3465  VIDEO_CODEC_PROFILE_BASELINE = 66,
3469  VIDEO_CODEC_PROFILE_MAIN = 77,
3473  VIDEO_CODEC_PROFILE_HIGH = 100,
3474 };
3475 
3476 
3480 enum AUDIO_CODEC_PROFILE_TYPE {
3484  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3488  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3492  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3493 };
3494 
3499 {
3519  unsigned short txPacketLossRate;
3536 };
3537 
3538 
3542 enum RTMP_STREAM_PUBLISH_STATE {
3546  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3550  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3554  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3560  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3564  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3568  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3569 };
3570 
3574 enum RTMP_STREAM_PUBLISH_REASON {
3578  RTMP_STREAM_PUBLISH_REASON_OK = 0,
3583  RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3587  RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3591  RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3595  RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3599  RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3603  RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3607  RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3611  RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3615  RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3619  RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3623  RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER = 11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
3627  RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM = 13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
3631  RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
3635  RTMP_STREAM_PUBLISH_REASON_INVALID_APPID = 15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
3637  RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3641  RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3642 };
3643 
3645 enum RTMP_STREAMING_EVENT {
3649  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3653  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3657  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3661  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3662 };
3663 
3667 typedef struct RtcImage {
3671  const char* url;
3675  int x;
3679  int y;
3683  int width;
3687  int height;
3695  int zOrder;
3701  double alpha;
3702 
3703  RtcImage() : url(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
3704 } RtcImage;
3711  LiveStreamAdvancedFeature() : featureName(OPTIONAL_NULLPTR), opened(false) {}
3712  LiveStreamAdvancedFeature(const char* feat_name, bool open) : featureName(feat_name), opened(open) {}
3714  // static const char* LBHQ = "lbhq";
3716  // static const char* VEO = "veo";
3717 
3721  const char* featureName;
3722 
3728  bool opened;
3729 } ;
3730 
3734 enum CONNECTION_STATE_TYPE
3735 {
3741  CONNECTION_STATE_DISCONNECTED = 1,
3750  CONNECTION_STATE_CONNECTING = 2,
3758  CONNECTION_STATE_CONNECTED = 3,
3768  CONNECTION_STATE_RECONNECTING = 4,
3777  CONNECTION_STATE_FAILED = 5,
3778 };
3779 
3787  uid_t uid;
3791  int x;
3795  int y;
3799  int width;
3803  int height;
3811  int zOrder;
3817  double alpha;
3831 
3832  TranscodingUser()
3833  : uid(0),
3834  x(0),
3835  y(0),
3836  width(0),
3837  height(0),
3838  zOrder(0),
3839  alpha(1.0),
3840  audioChannel(0) {}
3841 };
3842 
3853  int width;
3860  int height;
3871 
3878 
3886  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
3889  unsigned int backgroundColor;
3891  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
3895  unsigned int userCount;
3904 
3907  const char* metadata;
3916  unsigned int watermarkCount;
3917 
3926  unsigned int backgroundImageCount;
3927 
3930  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
3944  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
3948 
3950  unsigned int advancedFeatureCount;
3951 
3952  LiveTranscoding()
3953  : width(360),
3954  height(640),
3955  videoBitrate(400),
3956  videoFramerate(15),
3957  lowLatency(false),
3958  videoGop(30),
3959  videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
3960  backgroundColor(0x000000),
3961  videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
3962  userCount(0),
3963  transcodingUsers(OPTIONAL_NULLPTR),
3964  transcodingExtraInfo(OPTIONAL_NULLPTR),
3965  metadata(OPTIONAL_NULLPTR),
3966  watermark(OPTIONAL_NULLPTR),
3967  watermarkCount(0),
3968  backgroundImage(OPTIONAL_NULLPTR),
3970  audioSampleRate(AUDIO_SAMPLE_RATE_48000),
3971  audioBitrate(48),
3972  audioChannels(1),
3973  audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
3974  advancedFeatures(OPTIONAL_NULLPTR),
3975  advancedFeatureCount(0) {}
3976 };
3977 
3985  VIDEO_SOURCE_TYPE sourceType;
3995  const char* imageUrl;
4003  int x;
4007  int y;
4011  int width;
4015  int height;
4021  int zOrder;
4025  double alpha;
4032  bool mirror;
4033 
4035  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4036  remoteUserUid(0),
4037  imageUrl(OPTIONAL_NULLPTR),
4038  x(0),
4039  y(0),
4040  width(0),
4041  height(0),
4042  zOrder(0),
4043  alpha(1.0),
4044  mirror(false) {}
4045 };
4046 
4054  unsigned int streamCount;
4069 
4071 };
4072 
4073 enum VIDEO_TRANSCODER_ERROR {
4077  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4081  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4085  VT_ERR_INVALID_IMAGE_PATH = 3,
4089  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4093  VT_ERR_INVALID_LAYOUT = 5,
4097  VT_ERR_INTERNAL = 20
4098 };
4099 
4126 };
4127 
4131 enum LASTMILE_PROBE_RESULT_STATE {
4135  LASTMILE_PROBE_RESULT_COMPLETE = 1,
4139  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4143  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4144 };
4145 
4153  unsigned int packetLossRate;
4157  unsigned int jitter;
4161  unsigned int availableBandwidth;
4162 
4164  jitter(0),
4165  availableBandwidth(0) {}
4166 };
4167 
4175  LASTMILE_PROBE_RESULT_STATE state;
4187  unsigned int rtt;
4188 
4190  : state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
4191  rtt(0) {}
4192 };
4193 
4197 enum CONNECTION_CHANGED_REASON_TYPE
4198 {
4202  CONNECTION_CHANGED_CONNECTING = 0,
4206  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4210  CONNECTION_CHANGED_INTERRUPTED = 2,
4214  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4218  CONNECTION_CHANGED_JOIN_FAILED = 4,
4222  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4226  CONNECTION_CHANGED_INVALID_APP_ID = 6,
4230  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4236  CONNECTION_CHANGED_INVALID_TOKEN = 8,
4240  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4246  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4250  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4254  CONNECTION_CHANGED_RENEW_TOKEN = 12,
4258  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4262  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4266  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4270  CONNECTION_CHANGED_LOST = 16,
4274  CONNECTION_CHANGED_ECHO_TEST = 17,
4278  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4282  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4286  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4287 
4291  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4292  /*
4293  * 22: The connection is failed due to certification verify failure.
4294  */
4295  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4299  CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4303  CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4304 };
4305 
4309 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4313  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4317  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4322  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4327  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4328 };
4329 
4333 enum WLACC_MESSAGE_REASON {
4337  WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4341  WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4342 };
4343 
4347 enum WLACC_SUGGEST_ACTION {
4351  WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4355  WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4359  WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4363  WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4364 };
4365 
4369 struct WlAccStats {
4373  unsigned short e2eDelayPercent;
4377  unsigned short frozenRatioPercent;
4381  unsigned short lossRatePercent;
4382 };
4383 
4387 enum NETWORK_TYPE {
4391  NETWORK_TYPE_UNKNOWN = -1,
4395  NETWORK_TYPE_DISCONNECTED = 0,
4399  NETWORK_TYPE_LAN = 1,
4403  NETWORK_TYPE_WIFI = 2,
4407  NETWORK_TYPE_MOBILE_2G = 3,
4411  NETWORK_TYPE_MOBILE_3G = 4,
4415  NETWORK_TYPE_MOBILE_4G = 5,
4419  NETWORK_TYPE_MOBILE_5G = 6,
4420 };
4421 
4425 enum VIDEO_VIEW_SETUP_MODE {
4429  VIDEO_VIEW_SETUP_REPLACE = 0,
4433  VIDEO_VIEW_SETUP_ADD = 1,
4437  VIDEO_VIEW_SETUP_REMOVE = 2,
4438 };
4439 
4443 struct VideoCanvas {
4447  uid_t uid;
4448 
4452  uid_t subviewUid;
4456  view_t view;
4465  media::base::RENDER_MODE_TYPE renderMode;
4475  VIDEO_MIRROR_MODE_TYPE mirrorMode;
4480  VIDEO_VIEW_SETUP_MODE setupMode;
4485  VIDEO_SOURCE_TYPE sourceType;
4508  media::base::VIDEO_MODULE_POSITION position;
4509 
4510  VideoCanvas()
4511  : uid(0), subviewUid(0), view(NULL), backgroundColor(0x00000000), renderMode(media::base::RENDER_MODE_HIDDEN), mirrorMode(VIDEO_MIRROR_MODE_AUTO),
4512  setupMode(VIDEO_VIEW_SETUP_REPLACE), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4513  cropArea(0, 0, 0, 0), enableAlphaMask(false), position(media::base::POSITION_POST_CAPTURER) {}
4514 
4515  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4516  : uid(0), subviewUid(0), view(v), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4517  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4518  cropArea(0, 0, 0, 0), enableAlphaMask(false), position(media::base::POSITION_POST_CAPTURER) {}
4519 
4520  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4521  : uid(u), subviewUid(0), view(v), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4522  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4523  cropArea(0, 0, 0, 0), enableAlphaMask(false), position(media::base::POSITION_POST_CAPTURER) {}
4524 
4525  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u, uid_t subu)
4526  : uid(u), subviewUid(subu), view(v), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4527  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4528  cropArea(0, 0, 0, 0), enableAlphaMask(false), position(media::base::POSITION_POST_CAPTURER) {}
4529 };
4530 
4543  };
4544 
4548 
4551 
4555 
4559 
4563 
4564  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness, float sharpness) : lighteningContrastLevel(contrastLevel), lighteningLevel(lightening), smoothnessLevel(smoothness), rednessLevel(redness), sharpnessLevel(sharpness) {}
4565 
4567 };
4568 
4603  };
4604 
4608 
4615 
4616  FaceShapeAreaOptions(FACE_SHAPE_AREA shapeArea, int areaIntensity) : shapeArea(shapeArea), shapeIntensity(areaIntensity) {}
4617 
4619 };
4620 
4633  };
4634 
4638 
4642 
4644 
4646 };
4647 
4657  };
4670  };
4671 
4675 
4679 
4680  LowlightEnhanceOptions(LOW_LIGHT_ENHANCE_MODE lowlightMode, LOW_LIGHT_ENHANCE_LEVEL lowlightLevel) : mode(lowlightMode), level(lowlightLevel) {}
4681 
4683 };
4697  };
4718  };
4722 
4726 
4727  VideoDenoiserOptions(VIDEO_DENOISER_MODE denoiserMode, VIDEO_DENOISER_LEVEL denoiserLevel) : mode(denoiserMode), level(denoiserLevel) {}
4728 
4730 };
4731 
4740 
4746 
4747  ColorEnhanceOptions(float stength, float skinProtect) : strengthLevel(stength), skinProtectLevel(skinProtect) {}
4748 
4750 };
4751 
4779  };
4780 
4790  };
4791 
4795 
4804  unsigned int color;
4805 
4812  const char* source;
4813 
4818 
4820 };
4821 
4823 
4824  enum SEG_MODEL_TYPE {
4825 
4826  SEG_MODEL_AI = 1,
4827  SEG_MODEL_GREEN = 2
4828  };
4829 
4830  SEG_MODEL_TYPE modelType;
4831 
4832  float greenCapacity;
4833 
4834 
4835  SegmentationProperty() : modelType(SEG_MODEL_AI), greenCapacity(0.5){}
4836 };
4837 
4840 enum AUDIO_TRACK_TYPE {
4844  AUDIO_TRACK_INVALID = -1,
4851  AUDIO_TRACK_MIXABLE = 0,
4857  AUDIO_TRACK_DIRECT = 1,
4858 };
4859 
4869 
4871  : enableLocalPlayback(true) {}
4872 };
4873 
4894 enum VOICE_BEAUTIFIER_PRESET {
4897  VOICE_BEAUTIFIER_OFF = 0x00000000,
4903  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4909  CHAT_BEAUTIFIER_FRESH = 0x01010200,
4915  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4924  SINGING_BEAUTIFIER = 0x01020100,
4927  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4930  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4933  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4936  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4939  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4942  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4945  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4948  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4958  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4959 };
4960 
4981 enum AUDIO_EFFECT_PRESET {
4984  AUDIO_EFFECT_OFF = 0x00000000,
4987  ROOM_ACOUSTICS_KTV = 0x02010100,
4990  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4993  ROOM_ACOUSTICS_STUDIO = 0x02010300,
4996  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5003  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5006  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5009  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5021  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5032  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5040  ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5047  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5053  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5059  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5066  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5072  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5076  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5079  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5086  STYLE_TRANSFORMATION_RNB = 0x02030100,
5093  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5098  PITCH_CORRECTION = 0x02040100,
5099 
5103 };
5104 
5107 enum VOICE_CONVERSION_PRESET {
5110  VOICE_CONVERSION_OFF = 0x00000000,
5113  VOICE_CHANGER_NEUTRAL = 0x03010100,
5116  VOICE_CHANGER_SWEET = 0x03010200,
5119  VOICE_CHANGER_SOLID = 0x03010300,
5122  VOICE_CHANGER_BASS = 0x03010400,
5125  VOICE_CHANGER_CARTOON = 0x03010500,
5128  VOICE_CHANGER_CHILDLIKE = 0x03010600,
5131  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5134  VOICE_CHANGER_MONSTER = 0x03010800,
5137  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5140  VOICE_CHANGER_GROOT = 0x03010A00,
5143  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5146  VOICE_CHANGER_IRON_LADY = 0x03010C00,
5149  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5152  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5155  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5156 
5157 };
5158 
5161 enum HEADPHONE_EQUALIZER_PRESET {
5164  HEADPHONE_EQUALIZER_OFF = 0x00000000,
5167  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5170  HEADPHONE_EQUALIZER_INEAR = 0x04000002
5171 };
5172 
5175 enum VOICE_AI_TUNER_TYPE {
5178  VOICE_AI_TUNER_MATURE_MALE,
5181  VOICE_AI_TUNER_FRESH_MALE,
5184  VOICE_AI_TUNER_ELEGANT_FEMALE,
5187  VOICE_AI_TUNER_SWEET_FEMALE,
5190  VOICE_AI_TUNER_WARM_MALE_SINGING,
5193  VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
5196  VOICE_AI_TUNER_HUSKY_MALE_SINGING,
5199  VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
5202  VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
5205  VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
5206 };
5207 
5237  int bitrate;
5260 
5268  unsigned int highLightColor;
5277 
5279  : dimensions(1920, 1080), frameRate(5), bitrate(STANDARD_BITRATE), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
5280  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
5282  ScreenCaptureParameters(int width, int height, int f, int b)
5283  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false){}
5284  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
5285  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
5286  ScreenCaptureParameters(int width, int height, int f, int b, view_t *ex, int cnt)
5288  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t *ex, int cnt)
5290 };
5291 
5295 enum AUDIO_RECORDING_QUALITY_TYPE {
5299  AUDIO_RECORDING_QUALITY_LOW = 0,
5303  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5307  AUDIO_RECORDING_QUALITY_HIGH = 2,
5311  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5312 };
5313 
5317 enum AUDIO_FILE_RECORDING_TYPE {
5321  AUDIO_FILE_RECORDING_MIC = 1,
5325  AUDIO_FILE_RECORDING_PLAYBACK = 2,
5329  AUDIO_FILE_RECORDING_MIXED = 3,
5330 };
5331 
5335 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5339  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5343  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5347  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
5348 };
5349 
5358  const char* filePath;
5364  bool encode;
5378  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
5383  AUDIO_RECORDING_QUALITY_TYPE quality;
5384 
5391 
5393  : filePath(OPTIONAL_NULLPTR),
5394  encode(false),
5395  sampleRate(32000),
5396  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
5397  quality(AUDIO_RECORDING_QUALITY_LOW),
5398  recordingChannel(1) {}
5399 
5400  AudioRecordingConfiguration(const char* file_path, int sample_rate, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
5401  : filePath(file_path),
5402  encode(false),
5403  sampleRate(sample_rate),
5404  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
5405  quality(quality_type),
5406  recordingChannel(channel) {}
5407 
5408  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
5409  : filePath(file_path),
5410  encode(enc),
5411  sampleRate(sample_rate),
5412  fileRecordingType(type),
5413  quality(quality_type),
5414  recordingChannel(channel) {}
5415 
5416  AudioRecordingConfiguration(const AudioRecordingConfiguration &rhs)
5417  : filePath(rhs.filePath),
5418  encode(rhs.encode),
5419  sampleRate(rhs.sampleRate),
5421  quality(rhs.quality),
5423 };
5424 
5432  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
5436  AUDIO_ENCODING_TYPE encodingType;
5437 
5439  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5440  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM){}
5441 
5442 };
5447 public:
5458 virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5459 
5470 virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5471 
5482 virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5483 
5484 virtual ~IAudioEncodedFrameObserver () {}
5485 };
5486 
5489 enum AREA_CODE {
5493  AREA_CODE_CN = 0x00000001,
5497  AREA_CODE_NA = 0x00000002,
5501  AREA_CODE_EU = 0x00000004,
5505  AREA_CODE_AS = 0x00000008,
5509  AREA_CODE_JP = 0x00000010,
5513  AREA_CODE_IN = 0x00000020,
5517  AREA_CODE_GLOB = (0xFFFFFFFF)
5518 };
5519 
5524 enum AREA_CODE_EX {
5528  AREA_CODE_OC = 0x00000040,
5532  AREA_CODE_SA = 0x00000080,
5536  AREA_CODE_AF = 0x00000100,
5540  AREA_CODE_KR = 0x00000200,
5544  AREA_CODE_HKMC = 0x00000400,
5548  AREA_CODE_US = 0x00000800,
5552  AREA_CODE_RU = 0x00001000,
5556  AREA_CODE_OVS = 0xFFFFFFFE
5557 };
5558 
5562 enum CHANNEL_MEDIA_RELAY_ERROR {
5565  RELAY_OK = 0,
5568  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5574  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
5577  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
5580  RELAY_ERROR_FAILED_JOIN_SRC = 4,
5583  RELAY_ERROR_FAILED_JOIN_DEST = 5,
5586  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
5589  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
5593  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
5596  RELAY_ERROR_INTERNAL_ERROR = 9,
5599  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
5602  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
5603 };
5604 
5608 enum CHANNEL_MEDIA_RELAY_STATE {
5612  RELAY_STATE_IDLE = 0,
5615  RELAY_STATE_CONNECTING = 1,
5618  RELAY_STATE_RUNNING = 2,
5621  RELAY_STATE_FAILURE = 3,
5622 };
5623 
5629  uid_t uid;
5633  const char* channelName;
5637  const char* token;
5638 
5639  ChannelMediaInfo() : uid(0), channelName(NULL), token(NULL) {}
5640  ChannelMediaInfo(const char* c, const char* t, uid_t u) : uid(u), channelName(c), token(t) {}
5641 };
5642 
5679 
5680  ChannelMediaRelayConfiguration() : srcInfo(OPTIONAL_NULLPTR), destInfos(OPTIONAL_NULLPTR), destCount(0) {}
5681 };
5682 
5691 
5693 
5694  bool operator==(const UplinkNetworkInfo& rhs) const {
5696  }
5697 };
5698 
5704  const char* userId;
5708  VIDEO_STREAM_TYPE stream_type;
5712  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
5717 
5719  : userId(OPTIONAL_NULLPTR),
5720  stream_type(VIDEO_STREAM_HIGH),
5721  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
5722  expected_bitrate_bps(-1) {}
5723 
5725  : stream_type(rhs.stream_type),
5728  if (rhs.userId != OPTIONAL_NULLPTR) {
5729  const int len = std::strlen(rhs.userId);
5730  char* buf = new char[len + 1];
5731  std::memcpy(buf, rhs.userId, len);
5732  buf[len] = '\0';
5733  userId = buf;
5734  }
5735  }
5736 
5737  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
5738  if (this == &rhs) return *this;
5739  userId = OPTIONAL_NULLPTR;
5740  stream_type = rhs.stream_type;
5741  current_downscale_level = rhs.current_downscale_level;
5742  expected_bitrate_bps = rhs.expected_bitrate_bps;
5743  if (rhs.userId != OPTIONAL_NULLPTR) {
5744  const int len = std::strlen(rhs.userId);
5745  char* buf = new char[len + 1];
5746  std::memcpy(buf, rhs.userId, len);
5747  buf[len] = '\0';
5748  userId = buf;
5749  }
5750  return *this;
5751  }
5752 
5753  ~PeerDownlinkInfo() { delete[] userId; }
5754  };
5755 
5776 
5781  peer_downlink_info(OPTIONAL_NULLPTR),
5783 
5788  peer_downlink_info(OPTIONAL_NULLPTR),
5790  if (total_received_video_count <= 0) return;
5791  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5792  for (int i = 0; i < total_received_video_count; ++i)
5794  }
5795 
5796  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
5797  if (this == &rhs) return *this;
5798  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
5799  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
5800  total_downscale_level_count = rhs.total_downscale_level_count;
5801  peer_downlink_info = OPTIONAL_NULLPTR;
5802  total_received_video_count = rhs.total_received_video_count;
5803  if (total_received_video_count > 0) {
5804  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5805  for (int i = 0; i < total_received_video_count; ++i)
5806  peer_downlink_info[i] = rhs.peer_downlink_info[i];
5807  }
5808  return *this;
5809  }
5810 
5811  ~DownlinkNetworkInfo() { delete[] peer_downlink_info; }
5812 };
5813 
5820 enum ENCRYPTION_MODE {
5823  AES_128_XTS = 1,
5826  AES_128_ECB = 2,
5829  AES_256_XTS = 3,
5832  SM4_128_ECB = 4,
5835  AES_128_GCM = 5,
5838  AES_256_GCM = 6,
5842  AES_128_GCM2 = 7,
5845  AES_256_GCM2 = 8,
5848  MODE_END,
5849 };
5850 
5857  ENCRYPTION_MODE encryptionMode;
5863  const char* encryptionKey;
5870  uint8_t encryptionKdfSalt[32];
5871 
5872  bool datastreamEncryptionEnabled;
5873 
5875  : encryptionMode(AES_128_GCM2),
5876  encryptionKey(OPTIONAL_NULLPTR),
5877  datastreamEncryptionEnabled(false)
5878  {
5879  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
5880  }
5881 
5883  const char* getEncryptionString() const {
5884  switch(encryptionMode) {
5885  case AES_128_XTS:
5886  return "aes-128-xts";
5887  case AES_128_ECB:
5888  return "aes-128-ecb";
5889  case AES_256_XTS:
5890  return "aes-256-xts";
5891  case SM4_128_ECB:
5892  return "sm4-128-ecb";
5893  case AES_128_GCM:
5894  return "aes-128-gcm";
5895  case AES_256_GCM:
5896  return "aes-256-gcm";
5897  case AES_128_GCM2:
5898  return "aes-128-gcm-2";
5899  case AES_256_GCM2:
5900  return "aes-256-gcm-2";
5901  default:
5902  return "aes-128-gcm-2";
5903  }
5904  return "aes-128-gcm-2";
5905  }
5907 };
5908 
5911 enum ENCRYPTION_ERROR_TYPE {
5915  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5919  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5923  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5927  ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
5931  ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
5932 };
5933 
5934 enum UPLOAD_ERROR_REASON
5935 {
5936  UPLOAD_SUCCESS = 0,
5937  UPLOAD_NET_ERROR = 1,
5938  UPLOAD_SERVER_ERROR = 2,
5939 };
5940 
5943 enum PERMISSION_TYPE {
5947  RECORD_AUDIO = 0,
5951  CAMERA = 1,
5952 
5953  SCREEN_CAPTURE = 2,
5954 };
5955 
5959 enum STREAM_SUBSCRIBE_STATE {
5963  SUB_STATE_IDLE = 0,
5976  SUB_STATE_NO_SUBSCRIBED = 1,
5980  SUB_STATE_SUBSCRIBING = 2,
5984  SUB_STATE_SUBSCRIBED = 3
5985 };
5986 
5990 enum STREAM_PUBLISH_STATE {
5994  PUB_STATE_IDLE = 0,
6002  PUB_STATE_NO_PUBLISHED = 1,
6006  PUB_STATE_PUBLISHING = 2,
6010  PUB_STATE_PUBLISHED = 3
6011 };
6012 
6017  view_t view;
6018  bool enableAudio;
6019  bool enableVideo;
6020  const char* token;
6021  const char* channelId;
6022  int intervalInSeconds;
6023 
6024  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
6025  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
6026 
6028  : view(OPTIONAL_NULLPTR), enableAudio(true), enableVideo(true), token(OPTIONAL_NULLPTR), channelId(OPTIONAL_NULLPTR), intervalInSeconds(2) {}
6029 };
6030 
6034 struct UserInfo {
6038  uid_t uid;
6042  char userAccount[MAX_USER_ACCOUNT_LENGTH];
6043 
6044  UserInfo() : uid(0) {
6045  userAccount[0] = '\0';
6046  }
6047 };
6048 
6052 enum EAR_MONITORING_FILTER_TYPE {
6056  EAR_MONITORING_FILTER_NONE = (1<<0),
6061  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
6065  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2),
6070  EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1<<15),
6071 };
6072 
6076 enum THREAD_PRIORITY_TYPE {
6080  LOWEST = 0,
6084  LOW = 1,
6088  NORMAL = 2,
6092  HIGH = 3,
6096  HIGHEST = 4,
6100  CRITICAL = 5,
6101 };
6102 
6103 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
6104 
6108 struct ScreenVideoParameters {
6135  VideoDimensions dimensions;
6141  int frameRate = 15;
6146  int bitrate;
6147  /*
6148  * The content hint of the screen sharing:
6149  */
6150  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6151 
6152  ScreenVideoParameters() : dimensions(1280, 720) {}
6153 };
6154 
6158 struct ScreenAudioParameters {
6162  int sampleRate = 16000;
6166  int channels = 2;
6171  int captureSignalVolume = 100;
6172 };
6173 
6177 struct ScreenCaptureParameters2 {
6187  bool captureAudio = false;
6191  ScreenAudioParameters audioParams;
6201  bool captureVideo = true;
6205  ScreenVideoParameters videoParams;
6206 };
6207 #endif
6208 
6212 enum MEDIA_TRACE_EVENT {
6216  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6220  MEDIA_TRACE_EVENT_VIDEO_DECODED,
6221 };
6222 
6276 };
6277 
6278 enum CONFIG_FETCH_TYPE {
6282  CONFIG_FETCH_TYPE_INITIALIZE = 1,
6286  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6287 };
6288 
6289 
6291 enum LOCAL_PROXY_MODE {
6294  ConnectivityFirst = 0,
6297  LocalOnly = 1,
6298 };
6299 
6303  const char* serverDomain;
6306  const char* serverPath;
6315 
6316  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
6317 
6318  LogUploadServerInfo(const char* domain, const char* path, int port, bool https) : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
6319 };
6320 
6325 };
6326 
6330  const char** ipList;
6336  const char** domainList;
6343  const char* verifyDomainName;
6346  LOCAL_PROXY_MODE mode;
6356  LocalAccessPointConfiguration() : ipList(NULL), ipListSize(0), domainList(NULL), domainListSize(0), verifyDomainName(NULL), mode(ConnectivityFirst), disableAut(true) {}
6357 };
6358 
6363  const char* channelId;
6367  uid_t uid;
6371  RecorderStreamInfo() : channelId(NULL), uid(0) {}
6372  RecorderStreamInfo(const char* channelId, uid_t uid) : channelId(channelId), uid(uid) {}
6373 };
6374 } // namespace rtc
6375 
6376 namespace base {
6377 
6379  public:
6380  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
6381  virtual ~IEngineBase() {}
6382 };
6383 
6384 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
6385  public:
6386  AParameter(IEngineBase& engine) { initialize(&engine); }
6387  AParameter(IEngineBase* engine) { initialize(engine); }
6389 
6390  private:
6391  bool initialize(IEngineBase* engine) {
6392  IAgoraParameter* p = OPTIONAL_NULLPTR;
6393  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
6394  return p != OPTIONAL_NULLPTR;
6395  }
6396 };
6397 
6399  public:
6400  virtual ~LicenseCallback() {}
6401  virtual void onCertificateRequired() = 0;
6402  virtual void onLicenseRequest() = 0;
6403  virtual void onLicenseValidated() = 0;
6404  virtual void onLicenseError(int result) = 0;
6405 };
6406 
6407 } // namespace base
6408 
6445 };
6450 {
6454  const char* channelId;
6458  rtc::uid_t uid;
6462  user_id_t strUid;
6466  uint32_t x;
6470  uint32_t y;
6474  uint32_t width;
6478  uint32_t height;
6483  uint32_t videoState;
6484 
6485  VideoLayout() : channelId(OPTIONAL_NULLPTR), uid(0), strUid(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), videoState(0) {}
6486 };
6487 } // namespace agora
6488 
6494 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
6495 
6501 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
6502 
6503 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
6504 
6512 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString &credential);
6513 
6527 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char *credential_buf, int credential_len,
6528  const char *certificate_buf, int certificate_len);
6529 
6537 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback *callback);
6538 
6546 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
6547 
6548 /*
6549  * Get monotonic time in ms which can be used by capture time,
6550  * typical scenario is as follows:
6551  *
6552  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6553  * | // custom audio/video base capture time, e.g. the first audio/video capture time. |
6554  * | int64_t custom_capture_time_base; |
6555  * | |
6556  * | int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
6557  * | |
6558  * | // offset is fixed once calculated in the begining. |
6559  * | const int64_t offset = agora_monotonic_time - custom_capture_time_base; |
6560  * | |
6561  * | // realtime_custom_audio/video_capture_time is the origin capture time that customer provided.|
6562  * | // actual_audio/video_capture_time is the actual capture time transfered to sdk. |
6563  * | int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
6564  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
6565  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6566  *
6567  * @return
6568  * - >= 0: Success.
6569  * - < 0: Failure.
6570  */
6571 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:3898
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:6303
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::VideoCanvas::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4491
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:3683
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:4021
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2367
agora::VideoLayout
Definition: AgoraBase.h:6450
agora::rtc::SimulcastConfig::STREAM_LAYER_1
@ STREAM_LAYER_1
Definition: AgoraBase.h:2110
agora::VideoLayout::channelId
const char * channelId
Definition: AgoraBase.h:6454
agora::rtc::UserInfo
Definition: AgoraBase.h:6034
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:4025
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1501
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:1963
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:4171
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:5428
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:5211
agora::VideoLayout::x
uint32_t x
Definition: AgoraBase.h:6466
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:2195
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:3322
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:4783
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:4179
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1696
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:6324
agora::rtc::BeautyOptions
Definition: AgoraBase.h:4533
agora::rtc::SenderOptions
Definition: AgoraBase.h:1234
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:5237
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:4550
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2279
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:4774
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:3889
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:147
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:3351
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:4103
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:3795
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:5264
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2295
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2352
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3519
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:2674
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:6420
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:1955
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:5276
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:4694
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:4480
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4665
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:3830
agora::rtc::SimulcastConfig::StreamLayerIndex
StreamLayerIndex
Definition: AgoraBase.h:2106
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2387
agora::rtc::SimulcastConfig::STREAM_LAYER_2
@ STREAM_LAYER_2
Definition: AgoraBase.h:2114
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:2666
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:5248
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:5436
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1242
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1478
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:3881
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:5678
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:3523
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:4157
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:4554
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:4725
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:4475
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2263
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2091
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1095
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:6346
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:4110
agora::rtc::LocalAccessPointConfiguration
Definition: AgoraBase.h:6327
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:3891
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Definition: AgoraBase.h:4692
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSEWIDTH
@ FACE_SHAPE_AREA_NOSEWIDTH
Definition: AgoraBase.h:4600
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:3846
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2267
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:2670
agora::rtc::Rectangle
Definition: AgoraBase.h:2165
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:6330
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:4447
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2372
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:5358
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1621
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:4739
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:6424
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:4762
agora::rtc::FaceShapeBeautyOptions::shapeStyle
FACE_SHAPE_BEAUTY_STYLE shapeStyle
Definition: AgoraBase.h:4637
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:4558
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2287
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:3990
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1877
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1670
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1460
agora::util::AutoPtr
Definition: AgoraBase.h:100
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:4153
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:823
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:5259
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:3379
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:4868
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NOSELENGTH
@ FACE_SHAPE_AREA_NOSELENGTH
Definition: AgoraBase.h:4598
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:3944
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:6367
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1869
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2177
agora::rtc::SimulcastConfig::StreamLayerConfig::framerate
int framerate
Definition: AgoraBase.h:2148
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:1938
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:6266
agora::util::AList
Definition: AgoraBase.h:233
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2402
agora::rtc::VideoSubscriptionOptions
Definition: AgoraBase.h:1590
agora::rtc::TranscodingUser
Definition: AgoraBase.h:3783
agora::rtc::EchoTestConfiguration
Definition: AgoraBase.h:6016
agora::rtc::RtcImage
Definition: AgoraBase.h:3667
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:3791
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACECONTOUR
@ FACE_SHAPE_AREA_FACECONTOUR
Definition: AgoraBase.h:4584
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:5637
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:6275
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:5364
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:4547
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2207
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:6432
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:2079
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:3933
agora::rtc::FaceShapeAreaOptions::shapeArea
FACE_SHAPE_AREA shapeArea
Definition: AgoraBase.h:4607
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:5673
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:3675
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:4794
agora::rtc::FaceShapeBeautyOptions
Definition: AgoraBase.h:4625
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3985
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:4068
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:3695
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACELENGTH
@ FACE_SHAPE_AREA_FACELENGTH
Definition: AgoraBase.h:4586
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2508
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3335
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:3787
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:4503
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:6230
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:3721
agora::rtc::AdvancedConfigInfo
Definition: AgoraBase.h:6321
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2173
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3511
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:3671
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:3385
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1709
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2407
agora::rtc::SimulcastConfig::configs
StreamLayerConfig configs[STREAM_LAYER_COUNT_MAX]
Definition: AgoraBase.h:2159
agora::rtc::ColorEnhanceOptions
Definition: AgoraBase.h:4736
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:5374
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:817
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2238
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:6349
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:4183
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:3916
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2169
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:4058
agora::util::IString
Definition: AgoraBase.h:172
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:6343
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:6436
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
Definition: AgoraBase.h:4661
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1496
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:4050
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:4536
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2201
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3507
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1597
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:4125
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2336
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:3389
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:3947
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:3926
agora::rtc::IPacketObserver
Definition: AgoraBase.h:3373
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:3922
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHIN
@ FACE_SHAPE_AREA_CHIN
Definition: AgoraBase.h:4594
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2326
agora::VideoLayout::width
uint32_t width
Definition: AgoraBase.h:6474
agora::rtc::VideoFormat
Definition: AgoraBase.h:2653
agora::rtc::AdvanceOptions
Definition: AgoraBase.h:1754
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:3817
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2243
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEKBONE
@ FACE_SHAPE_AREA_CHEEKBONE
Definition: AgoraBase.h:4590
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:2035
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1764
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2275
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2362
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:4175
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:1974
agora::rtc::VideoCanvas::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraBase.h:4508
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:5633
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:3860
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1448
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1674
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2311
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2283
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1454
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:6444
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2303
agora::VideoLayout::height
uint32_t height
Definition: AgoraBase.h:6478
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3329
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:4538
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:3865
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_FEMALE
@ FACE_SHAPE_BEAUTY_STYLE_FEMALE
Definition: AgoraBase.h:4630
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3268
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3282
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE
FACE_SHAPE_BEAUTY_STYLE
Definition: AgoraBase.h:4628
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_CHEEK
@ FACE_SHAPE_AREA_CHEEK
Definition: AgoraBase.h:4592
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_MOUTHSCALE
@ FACE_SHAPE_AREA_MOUTHSCALE
Definition: AgoraBase.h:4602
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:3799
agora::rtc::FaceShapeBeautyOptions::FACE_SHAPE_BEAUTY_STYLE_MALE
@ FACE_SHAPE_BEAUTY_STYLE_MALE
Definition: AgoraBase.h:4632
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:5268
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FACEWIDTH
@ FACE_SHAPE_AREA_FACEWIDTH
Definition: AgoraBase.h:4588
agora::base::AParameter
Definition: AgoraBase.h:6384
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:4562
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:5857
agora::util::AOutputIterator
Definition: AgoraBase.h:202
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2233
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:5446
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1678
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:3264
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:6241
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:4161
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1705
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1688
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:3903
agora::rtc::SimulcastConfig::StreamLayerConfig
Definition: AgoraBase.h:2140
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3276
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:3907
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:3930
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:5645
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:4817
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:6038
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2055
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:3710
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:4804
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:4149
agora::rtc::VideoDenoiserOptions
Definition: AgoraBase.h:4689
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2213
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4706
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:4497
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1527
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1881
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2181
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1531
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2247
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1482
agora::UserInfo
Definition: AgoraBase.h:813
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2411
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:4755
agora::rtc::WlAccStats::frozenRatioPercent
unsigned short frozenRatioPercent
Definition: AgoraBase.h:4377
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:4678
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:4456
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:3995
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:5432
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:5870
agora::rtc::WlAccStats::lossRatePercent
unsigned short lossRatePercent
Definition: AgoraBase.h:4381
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:4770
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:3912
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:3345
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:5626
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:829
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:4656
agora::VideoLayout::y
uint32_t y
Definition: AgoraBase.h:6470
agora::rtc::WlAccStats
Definition: AgoraBase.h:4369
agora::rtc::RecorderStreamInfo::RecorderStreamInfo
RecorderStreamInfo()
Definition: AgoraBase.h:6371
agora::rtc::LocalAudioStats::aecEstimatedDelay
int aecEstimatedDelay
Definition: AgoraBase.h:3535
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:4465
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:6428
agora::rtc::LocalAudioStats::earMonitorDelay
int earMonitorDelay
Definition: AgoraBase.h:3531
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA
FACE_SHAPE_AREA
Definition: AgoraBase.h:4576
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3286
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2291
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1492
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1713
agora::rtc::SimulcastConfig::STREAM_LAYER_6
@ STREAM_LAYER_6
Definition: AgoraBase.h:2130
agora::rtc::LocalAudioStats::audioPlayoutDelay
int audioPlayoutDelay
Definition: AgoraBase.h:3527
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:6440
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3290
agora::rtc::AdvanceOptions::encodeAlpha
bool encodeAlpha
Definition: AgoraBase.h:1770
agora::VideoLayout::strUid
user_id_t strUid
Definition: AgoraBase.h:6462
agora::rtc::LogUploadServerInfo
Definition: AgoraBase.h:6300
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Definition: AgoraBase.h:4701
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4485
agora::rtc::CodecCapInfo
Definition: AgoraBase.h:1847
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:5231
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:5390
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2397
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:3941
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:3687
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2083
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1692
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:4116
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2319
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4054
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:4542
agora::base::LicenseCallback
Definition: AgoraBase.h:6398
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:5852
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:3886
agora::rtc::SimulcastConfig::STREAM_LOW
@ STREAM_LOW
Definition: AgoraBase.h:2134
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:4758
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:6237
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:4460
agora::rtc::LocalAccessPointConfiguration::disableAut
bool disableAut
Definition: AgoraBase.h:6355
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:5225
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1091
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:4003
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:3877
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:3981
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:4812
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:6306
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_EYESCALE
@ FACE_SHAPE_AREA_EYESCALE
Definition: AgoraBase.h:4596
agora::rtc::SimulcastConfig::STREAM_LAYER_5
@ STREAM_LAYER_5
Definition: AgoraBase.h:2126
agora::VideoLayout::videoState
uint32_t videoState
Definition: AgoraBase.h:6483
agora::rtc::RtcStats
Definition: AgoraBase.h:2259
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1603
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:4778
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2228
agora::rtc::LowlightEnhanceOptions
Definition: AgoraBase.h:4648
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:3811
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:3853
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1506
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2271
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2307
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:4721
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2299
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3503
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:6257
agora::rtc::SimulcastConfig::STREAM_LAYER_COUNT_MAX
@ STREAM_LAYER_COUNT_MAX
Definition: AgoraBase.h:2138
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:2222
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:1969
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3499
agora::rtc::RecorderStreamInfo
Definition: AgoraBase.h:6362
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:6309
agora::rtc::SimulcastConfig
Definition: AgoraBase.h:2102
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:5242
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:3679
agora::rtc::FocalLengthInfo::focalLengthType
CAMERA_FOCAL_LENGTH_TYPE focalLengthType
Definition: AgoraBase.h:1863
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1438
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2347
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2342
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:4121
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:3260
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:1759
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3272
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:4669
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2377
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:1853
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:3950
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:1851
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:5353
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:6416
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
Definition: AgoraBase.h:4652
agora::util::IContainer
Definition: AgoraBase.h:193
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:4789
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1087
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:4785
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:6249
agora::rtc::FaceShapeAreaOptions::shapeIntensity
int shapeIntensity
Definition: AgoraBase.h:4614
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:4015
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2047
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:4674
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:3895
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_FOREHEAD
@ FACE_SHAPE_AREA_FOREHEAD
Definition: AgoraBase.h:4582
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1849
agora::rtc::AudioTrackConfig
Definition: AgoraBase.h:4862
agora::rtc::FocalLengthInfo::cameraDirection
int cameraDirection
Definition: AgoraBase.h:1861
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:6333
agora::rtc::SimulcastConfig::STREAM_LAYER_4
@ STREAM_LAYER_4
Definition: AgoraBase.h:2122
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:4011
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:4032
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:2087
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:3701
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:3999
agora::rtc::VideoCanvas::subviewUid
uid_t subviewUid
Definition: AgoraBase.h:4452
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:5863
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1700
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:4787
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:5255
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:6336
agora::rtc::SimulcastConfig::STREAM_LAYER_3
@ STREAM_LAYER_3
Definition: AgoraBase.h:2118
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1519
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3249
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:4062
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_HEADSCALE
@ FACE_SHAPE_AREA_HEADSCALE
Definition: AgoraBase.h:4580
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1238
agora::rtc::SimulcastConfig::StreamLayerConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2144
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:4766
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1535
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:4654
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2392
agora::rtc::FaceShapeAreaOptions::FACE_SHAPE_AREA_NONE
@ FACE_SHAPE_AREA_NONE
Definition: AgoraBase.h:4578
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:3870
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2415
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2315
agora::rtc::FaceShapeAreaOptions
Definition: AgoraBase.h:4573
agora::rtc::CodecCapLevels
Definition: AgoraBase.h:1839
agora::SpatialAudioParams
Definition: AgoraBase.h:6412
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:4745
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:4711
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1873
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:4187
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:4007
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2382
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:4540
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:5658
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:1959
agora::rtc::WlAccStats::e2eDelayPercent
unsigned short e2eDelayPercent
Definition: AgoraBase.h:4373
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_STRENGTH
@ VIDEO_DENOISER_LEVEL_STRENGTH
Definition: AgoraBase.h:4717
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:3728
agora::rtc::FocalLengthInfo
Definition: AgoraBase.h:1859
agora::rtc::DeviceInfo
Definition: AgoraBase.h:3359
agora::base::IEngineBase
Definition: AgoraBase.h:6378
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1300
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:5383
agora::util::IIterator
Definition: AgoraBase.h:184
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:6042
agora::rtc::VideoRenderingTracingInfo
Definition: AgoraBase.h:6226
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:6314
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:4696
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1488
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1682
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2357
agora::rtc::FaceShapeBeautyOptions::styleIntensity
int styleIntensity
Definition: AgoraBase.h:4641
agora::VideoLayout::uid
rtc::uid_t uid
Definition: AgoraBase.h:6458
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:6339
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2504
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:3803
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:4443
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3515
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:5378
agora::rtc::SegmentationProperty
Definition: AgoraBase.h:4822
agora::rtc::SimulcastConfig::StreamLayerConfig::enable
bool enable
Definition: AgoraBase.h:2152
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:5629