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 #elif defined(__APPLE__)
47 
48 #include <TargetConditionals.h>
49 
50 #define AGORA_API extern "C" __attribute__((visibility("default")))
51 #define AGORA_CPP_API __attribute__((visibility("default")))
52 #define AGORA_CALL
53 
54 #elif defined(__ANDROID__) || defined(__linux__)
55 
56 #define AGORA_API extern "C" __attribute__((visibility("default")))
57 #define AGORA_CPP_API __attribute__((visibility("default")))
58 #define AGORA_CALL
59 
60 #define __deprecated
61 
62 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
63 
64 #define AGORA_API extern "C"
65 #define AGORA_CPP_API
66 #define AGORA_CALL
67 
68 #define __deprecated
69 
70 #endif // _WIN32
71 
72 #ifndef OPTIONAL_ENUM_SIZE_T
73 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
74 #define OPTIONAL_ENUM_SIZE_T enum : size_t
75 #else
76 #define OPTIONAL_ENUM_SIZE_T enum
77 #endif
78 #endif
79 
80 #ifndef OPTIONAL_NULLPTR
81 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
82 #define OPTIONAL_NULLPTR nullptr
83 #else
84 #define OPTIONAL_NULLPTR NULL
85 #endif
86 #endif
87 
88 #define INVALID_DISPLAY_ID (-2)
89 
90 namespace agora {
91 namespace util {
92 
93 template <class T>
94 class AutoPtr {
95  protected:
96  typedef T value_type;
97  typedef T* pointer_type;
98 
99  public:
100  explicit AutoPtr(pointer_type p = OPTIONAL_NULLPTR) : ptr_(p) {}
101 
102  ~AutoPtr() {
103  if (ptr_) {
104  ptr_->release();
105  ptr_ = OPTIONAL_NULLPTR;
106  }
107  }
108 
109  operator bool() const { return (ptr_ != OPTIONAL_NULLPTR); }
110 
111  value_type& operator*() const { return *get(); }
112 
113  pointer_type operator->() const { return get(); }
114 
115  pointer_type get() const { return ptr_; }
116 
117  pointer_type release() {
118  pointer_type ret = ptr_;
119  ptr_ = 0;
120  return ret;
121  }
122 
123  void reset(pointer_type ptr = OPTIONAL_NULLPTR) {
124  if (ptr != ptr_ && ptr_) {
125  ptr_->release();
126  }
127 
128  ptr_ = ptr;
129  }
130 
131  template <class C1, class C2>
132  bool queryInterface(C1* c, C2 iid) {
133  pointer_type p = OPTIONAL_NULLPTR;
134  if (c && !c->queryInterface(iid, reinterpret_cast<void**>(&p))) {
135  reset(p);
136  }
137 
138  return (p != OPTIONAL_NULLPTR);
139  }
140 
141  private:
142  AutoPtr(const AutoPtr&);
143  AutoPtr& operator=(const AutoPtr&);
144 
145  private:
146  pointer_type ptr_;
147 };
148 
149 template <class T>
150 class CopyableAutoPtr : public AutoPtr<T> {
151  typedef typename AutoPtr<T>::pointer_type pointer_type;
152 
153  public:
154  explicit CopyableAutoPtr(pointer_type p = 0) : AutoPtr<T>(p) {}
155  CopyableAutoPtr(const CopyableAutoPtr& rhs) { this->reset(rhs.clone()); }
156  CopyableAutoPtr& operator=(const CopyableAutoPtr& rhs) {
157  if (this != &rhs) this->reset(rhs.clone());
158  return *this;
159  }
160  pointer_type clone() const {
161  if (!this->get()) return OPTIONAL_NULLPTR;
162  return this->get()->clone();
163  }
164 };
165 
166 class IString {
167  public:
168  virtual bool empty() const = 0;
169  virtual const char* c_str() = 0;
170  virtual const char* data() = 0;
171  virtual size_t length() = 0;
172  virtual IString* clone() = 0;
173  virtual void release() = 0;
174  virtual ~IString() {}
175 };
177 
178 class IIterator {
179  public:
180  virtual void* current() = 0;
181  virtual const void* const_current() const = 0;
182  virtual bool next() = 0;
183  virtual void release() = 0;
184  virtual ~IIterator() {}
185 };
186 
187 class IContainer {
188  public:
189  virtual IIterator* begin() = 0;
190  virtual size_t size() const = 0;
191  virtual void release() = 0;
192  virtual ~IContainer() {}
193 };
194 
195 template <class T>
197  IIterator* p;
198 
199  public:
200  typedef T value_type;
201  typedef value_type& reference;
202  typedef const value_type& const_reference;
203  typedef value_type* pointer;
204  typedef const value_type* const_pointer;
205  explicit AOutputIterator(IIterator* it = OPTIONAL_NULLPTR) : p(it) {}
206  ~AOutputIterator() {
207  if (p) p->release();
208  }
209  AOutputIterator(const AOutputIterator& rhs) : p(rhs.p) {}
210  AOutputIterator& operator++() {
211  p->next();
212  return *this;
213  }
214  bool operator==(const AOutputIterator& rhs) const {
215  if (p && rhs.p)
216  return p->current() == rhs.p->current();
217  else
218  return valid() == rhs.valid();
219  }
220  bool operator!=(const AOutputIterator& rhs) const { return !this->operator==(rhs); }
221  reference operator*() { return *reinterpret_cast<pointer>(p->current()); }
222  const_reference operator*() const { return *reinterpret_cast<const_pointer>(p->const_current()); }
223  bool valid() const { return p && p->current() != OPTIONAL_NULLPTR; }
224 };
225 
226 template <class T>
227 class AList {
228  IContainer* container;
229  bool owner;
230 
231  public:
232  typedef T value_type;
233  typedef value_type& reference;
234  typedef const value_type& const_reference;
235  typedef value_type* pointer;
236  typedef const value_type* const_pointer;
237  typedef size_t size_type;
240 
241  public:
242  AList() : container(OPTIONAL_NULLPTR), owner(false) {}
243  AList(IContainer* c, bool take_ownership) : container(c), owner(take_ownership) {}
244  ~AList() { reset(); }
245  void reset(IContainer* c = OPTIONAL_NULLPTR, bool take_ownership = false) {
246  if (owner && container) container->release();
247  container = c;
248  owner = take_ownership;
249  }
250  iterator begin() { return container ? iterator(container->begin()) : iterator(OPTIONAL_NULLPTR); }
251  iterator end() { return iterator(OPTIONAL_NULLPTR); }
252  size_type size() const { return container ? container->size() : 0; }
253  bool empty() const { return size() == 0; }
254 };
255 
256 } // namespace util
257 
261 enum CHANNEL_PROFILE_TYPE {
267  CHANNEL_PROFILE_COMMUNICATION = 0,
273  CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
278  CHANNEL_PROFILE_GAME __deprecated = 2,
284  CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
285 
290  CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
291 };
292 
296 enum WARN_CODE_TYPE {
301  WARN_INVALID_VIEW = 8,
306  WARN_INIT_VIDEO = 16,
311  WARN_PENDING = 20,
316  WARN_NO_AVAILABLE_CHANNEL = 103,
322  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
327  WARN_LOOKUP_CHANNEL_REJECTED = 105,
333  WARN_OPEN_CHANNEL_TIMEOUT = 106,
338  WARN_OPEN_CHANNEL_REJECTED = 107,
339 
340  // sdk: 100~1000
344  WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
348  WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
352  WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
356  WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
360  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
364  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
368  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
371  WARN_CHANNEL_SOCKET_ERROR = 134,
375  WARN_AUDIO_MIXING_OPEN_ERROR = 701,
379  WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
383  WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
387  WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
391  WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
395  WARN_ADM_RECORD_MALFUNCTION = 1021,
399  WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
403  WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
411  WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
415  WARN_APM_HOWLING = 1051,
419  WARN_ADM_GLITCH_STATE = 1052,
423  WARN_ADM_IMPROPER_SETTINGS = 1053,
427  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
432  WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
440  WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
441 };
442 
446 enum ERROR_CODE_TYPE {
450  ERR_OK = 0,
451  // 1~1000
455  ERR_FAILED = 1,
460  ERR_INVALID_ARGUMENT = 2,
467  ERR_NOT_READY = 3,
471  ERR_NOT_SUPPORTED = 4,
475  ERR_REFUSED = 5,
479  ERR_BUFFER_TOO_SMALL = 6,
483  ERR_NOT_INITIALIZED = 7,
487  ERR_INVALID_STATE = 8,
492  ERR_NO_PERMISSION = 9,
498  ERR_TIMEDOUT = 10,
503  ERR_CANCELED = 11,
509  ERR_TOO_OFTEN = 12,
515  ERR_BIND_SOCKET = 13,
520  ERR_NET_DOWN = 14,
526  ERR_JOIN_CHANNEL_REJECTED = 17,
533  ERR_LEAVE_CHANNEL_REJECTED = 18,
537  ERR_ALREADY_IN_USE = 19,
542  ERR_ABORTED = 20,
547  ERR_INIT_NET_ENGINE = 21,
552  ERR_RESOURCE_LIMITED = 22,
558  ERR_INVALID_APP_ID = 101,
563  ERR_INVALID_CHANNEL_NAME = 102,
569  ERR_NO_SERVER_RESOURCES = 103,
582  ERR_TOKEN_EXPIRED = 109,
599  ERR_INVALID_TOKEN = 110,
604  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
609  ERR_CONNECTION_LOST = 112, // only used in web sdk
614  ERR_NOT_IN_CHANNEL = 113,
619  ERR_SIZE_TOO_LARGE = 114,
624  ERR_BITRATE_LIMIT = 115,
629  ERR_TOO_MANY_DATA_STREAMS = 116,
633  ERR_STREAM_MESSAGE_TIMEOUT = 117,
637  ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
642  ERR_DECRYPTION_FAILED = 120,
646  ERR_INVALID_USER_ID = 121,
651  ERR_DATASTREAM_DECRYPTION_FAILED = 122,
655  ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
661  ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
662 
666  ERR_LICENSE_CREDENTIAL_INVALID = 131,
667 
671  ERR_INVALID_USER_ACCOUNT = 134,
672 
678  ERR_MODULE_NOT_FOUND = 157,
679 
680  // Licensing, keep the license error code same as the main version
681  ERR_CERT_RAW = 157,
682  ERR_CERT_JSON_PART = 158,
683  ERR_CERT_JSON_INVAL = 159,
684  ERR_CERT_JSON_NOMEM = 160,
685  ERR_CERT_CUSTOM = 161,
686  ERR_CERT_CREDENTIAL = 162,
687  ERR_CERT_SIGN = 163,
688  ERR_CERT_FAIL = 164,
689  ERR_CERT_BUF = 165,
690  ERR_CERT_NULL = 166,
691  ERR_CERT_DUEDATE = 167,
692  ERR_CERT_REQUEST = 168,
693 
694  // PcmSend Error num
695  ERR_PCMSEND_FORMAT = 200, // unsupport pcm format
696  ERR_PCMSEND_BUFFEROVERFLOW = 201, // buffer overflow, the pcm send rate too quickly
697 
699  // signaling: 400~600
700  ERR_LOGIN_ALREADY_LOGIN = 428,
701 
703  // 1001~2000
707  ERR_LOAD_MEDIA_ENGINE = 1001,
713  ERR_ADM_GENERAL_ERROR = 1005,
718  ERR_ADM_INIT_PLAYOUT = 1008,
722  ERR_ADM_START_PLAYOUT = 1009,
726  ERR_ADM_STOP_PLAYOUT = 1010,
731  ERR_ADM_INIT_RECORDING = 1011,
735  ERR_ADM_START_RECORDING = 1012,
739  ERR_ADM_STOP_RECORDING = 1013,
743  ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
744 };
745 
746 enum LICENSE_ERROR_TYPE {
750  LICENSE_ERR_INVALID = 1,
754  LICENSE_ERR_EXPIRE = 2,
758  LICENSE_ERR_MINUTES_EXCEED = 3,
762  LICENSE_ERR_LIMITED_PERIOD = 4,
766  LICENSE_ERR_DIFF_DEVICES = 5,
770  LICENSE_ERR_INTERNAL = 99,
771 };
772 
776 enum AUDIO_SESSION_OPERATION_RESTRICTION {
780  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
784  AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
788  AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
793  AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
798  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
799 };
800 
801 typedef const char* user_id_t;
802 typedef void* view_t;
803 
807 struct UserInfo {
817  bool hasAudio;
823  bool hasVideo;
824 
825  UserInfo() : hasAudio(false), hasVideo(false) {}
826 };
827 
828 typedef util::AList<UserInfo> UserList;
829 
830 // Shared between Agora Service and Rtc Engine
831 namespace rtc {
832 
836 enum USER_OFFLINE_REASON_TYPE {
840  USER_OFFLINE_QUIT = 0,
846  USER_OFFLINE_DROPPED = 1,
850  USER_OFFLINE_BECOME_AUDIENCE = 2,
851 };
852 
853 enum INTERFACE_ID_TYPE {
854  AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
855  AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
856  AGORA_IID_PARAMETER_ENGINE = 3,
857  AGORA_IID_MEDIA_ENGINE = 4,
858  AGORA_IID_AUDIO_ENGINE = 5,
859  AGORA_IID_VIDEO_ENGINE = 6,
860  AGORA_IID_RTC_CONNECTION = 7,
861  AGORA_IID_SIGNALING_ENGINE = 8,
862  AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
863  AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
864  AGORA_IID_STATE_SYNC = 13,
865  AGORA_IID_META_SERVICE = 14,
866  AGORA_IID_MUSIC_CONTENT_CENTER = 15,
867  AGORA_IID_H265_TRANSCODER = 16,
868 };
869 
873 enum QUALITY_TYPE {
878  QUALITY_UNKNOWN __deprecated = 0,
882  QUALITY_EXCELLENT = 1,
887  QUALITY_GOOD = 2,
891  QUALITY_POOR = 3,
895  QUALITY_BAD = 4,
899  QUALITY_VBAD = 5,
903  QUALITY_DOWN = 6,
907  QUALITY_UNSUPPORTED = 7,
911  QUALITY_DETECTING = 8,
912 };
913 
917 enum FIT_MODE_TYPE {
922  MODE_COVER = 1,
923 
929  MODE_CONTAIN = 2,
930 };
931 
935 enum VIDEO_ORIENTATION {
939  VIDEO_ORIENTATION_0 = 0,
943  VIDEO_ORIENTATION_90 = 90,
947  VIDEO_ORIENTATION_180 = 180,
951  VIDEO_ORIENTATION_270 = 270
952 };
953 
957 enum FRAME_RATE {
961  FRAME_RATE_FPS_1 = 1,
965  FRAME_RATE_FPS_7 = 7,
969  FRAME_RATE_FPS_10 = 10,
973  FRAME_RATE_FPS_15 = 15,
977  FRAME_RATE_FPS_24 = 24,
981  FRAME_RATE_FPS_30 = 30,
985  FRAME_RATE_FPS_60 = 60,
986 };
987 
988 enum FRAME_WIDTH {
989  FRAME_WIDTH_960 = 960,
990 };
991 
992 enum FRAME_HEIGHT {
993  FRAME_HEIGHT_540 = 540,
994 };
995 
996 
1000 enum VIDEO_FRAME_TYPE {
1002  VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1004  VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1006  VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1008  VIDEO_FRAME_TYPE_B_FRAME = 5,
1010  VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1012  VIDEO_FRAME_TYPE_UNKNOW
1013 };
1014 
1018 enum ORIENTATION_MODE {
1026  ORIENTATION_MODE_ADAPTIVE = 0,
1033  ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1040  ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1041 };
1042 
1046 enum DEGRADATION_PREFERENCE {
1054  MAINTAIN_QUALITY = 0,
1060  MAINTAIN_FRAMERATE = 1,
1067  MAINTAIN_BALANCED = 2,
1071  MAINTAIN_RESOLUTION = 3,
1075  DISABLED = 100,
1076 };
1077 
1085  int width;
1089  int height;
1090  VideoDimensions() : width(640), height(480) {}
1091  VideoDimensions(int w, int h) : width(w), height(h) {}
1092  bool operator==(const VideoDimensions& rhs) const {
1093  return width == rhs.width && height == rhs.height;
1094  }
1095 };
1096 
1102 const int STANDARD_BITRATE = 0;
1103 
1111 const int COMPATIBLE_BITRATE = -1;
1112 
1116 const int DEFAULT_MIN_BITRATE = -1;
1117 
1121 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1122 
1126 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1127  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1128  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1129  SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1130 };
1131 
1135 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1137  CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1139  CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1141  CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1143  CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1145  CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1146 };
1147 
1151 enum VIDEO_CODEC_TYPE {
1152  VIDEO_CODEC_NONE = 0,
1156  VIDEO_CODEC_VP8 = 1,
1160  VIDEO_CODEC_H264 = 2,
1164  VIDEO_CODEC_H265 = 3,
1169  VIDEO_CODEC_GENERIC = 6,
1173  VIDEO_CODEC_GENERIC_H264 = 7,
1178  VIDEO_CODEC_AV1 = 12,
1182  VIDEO_CODEC_VP9 = 13,
1186  VIDEO_CODEC_GENERIC_JPEG = 20,
1187 };
1188 
1192 enum CAMERA_FOCAL_LENGTH_TYPE {
1196  CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1200  CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1204  CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1208  CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1209 };
1210 
1214 enum TCcMode {
1218  CC_ENABLED,
1222  CC_DISABLED,
1223 };
1224 
1232  TCcMode ccMode;
1236  VIDEO_CODEC_TYPE codecType;
1237 
1295 
1296  SenderOptions()
1297  : ccMode(CC_ENABLED),
1298  codecType(VIDEO_CODEC_H265),
1299  targetBitrate(6500) {}
1300 };
1301 
1305 enum AUDIO_CODEC_TYPE {
1309  AUDIO_CODEC_OPUS = 1,
1310  // kIsac = 2,
1314  AUDIO_CODEC_PCMA = 3,
1318  AUDIO_CODEC_PCMU = 4,
1322  AUDIO_CODEC_G722 = 5,
1323  // kIlbc = 6,
1325  // AUDIO_CODEC_AAC = 7,
1329  AUDIO_CODEC_AACLC = 8,
1333  AUDIO_CODEC_HEAAC = 9,
1337  AUDIO_CODEC_JC1 = 10,
1341  AUDIO_CODEC_HEAAC2 = 11,
1345  AUDIO_CODEC_LPCNET = 12,
1346 };
1347 
1351 enum AUDIO_ENCODING_TYPE {
1356  AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1361  AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1366  AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1371  AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1376  AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1381  AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1386  AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1391  AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1396  AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1401  AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1406  AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1407 };
1408 
1412 enum WATERMARK_FIT_MODE {
1417  FIT_MODE_COVER_POSITION,
1422  FIT_MODE_USE_IMAGE_RATIO
1423 };
1424 
1430  : speech(true),
1431  sendEvenIfEmpty(true) {}
1432 
1438  bool speech;
1445 };
1446 
1452  : codec(AUDIO_CODEC_AACLC),
1453  sampleRateHz(0),
1454  samplesPerChannel(0),
1455  numberOfChannels(0),
1456  captureTimeMs(0) {}
1457 
1459  : codec(rhs.codec),
1468  AUDIO_CODEC_TYPE codec;
1487 
1491  int64_t captureTimeMs;
1492 };
1497  AudioPcmDataInfo() : samplesPerChannel(0), channelNum(0), samplesOut(0), elapsedTimeMs(0), ntpTimeMs(0) {}
1498 
1501  channelNum(rhs.channelNum),
1502  samplesOut(rhs.samplesOut),
1504  ntpTimeMs(rhs.ntpTimeMs) {}
1505 
1510 
1511  int16_t channelNum;
1512 
1513  // Output
1517  size_t samplesOut;
1521  int64_t elapsedTimeMs;
1525  int64_t ntpTimeMs;
1526 };
1530 enum H264PacketizeMode {
1534  NonInterleaved = 0, // Mode 1 - STAP-A, FU-A is allowed
1538  SingleNalUnit, // Mode 0 - only single NALU allowed
1539 };
1540 
1544 enum VIDEO_STREAM_TYPE {
1548  VIDEO_STREAM_HIGH = 0,
1552  VIDEO_STREAM_LOW = 1,
1556  VIDEO_STREAM_LAYER_1 = 4,
1560  VIDEO_STREAM_LAYER_2 = 5,
1564  VIDEO_STREAM_LAYER_3 = 6,
1568  VIDEO_STREAM_LAYER_4 = 7,
1572  VIDEO_STREAM_LAYER_5 = 8,
1576  VIDEO_STREAM_LAYER_6 = 9,
1577 
1578 };
1579 
1594 
1596 };
1597 
1598 
1601 enum MAX_USER_ACCOUNT_LENGTH_TYPE
1602 {
1605  MAX_USER_ACCOUNT_LENGTH = 256
1606 };
1607 
1613  : uid(0),
1614  codecType(VIDEO_CODEC_H264),
1615  width(0),
1616  height(0),
1617  framesPerSecond(0),
1618  frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1619  rotation(VIDEO_ORIENTATION_0),
1620  trackId(0),
1621  captureTimeMs(0),
1622  decodeTimeMs(0),
1623  streamType(VIDEO_STREAM_HIGH),
1624  presentationMs(-1) {}
1625 
1627  : uid(rhs.uid),
1628  codecType(rhs.codecType),
1629  width(rhs.width),
1630  height(rhs.height),
1632  frameType(rhs.frameType),
1633  rotation(rhs.rotation),
1634  trackId(rhs.trackId),
1637  streamType(rhs.streamType),
1638  presentationMs(rhs.presentationMs) {}
1639 
1640  EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) {
1641  if (this == &rhs) return *this;
1642  uid = rhs.uid;
1643  codecType = rhs.codecType;
1644  width = rhs.width;
1645  height = rhs.height;
1647  frameType = rhs.frameType;
1648  rotation = rhs.rotation;
1649  trackId = rhs.trackId;
1651  decodeTimeMs = rhs.decodeTimeMs;
1652  streamType = rhs.streamType;
1653  presentationMs = rhs.presentationMs;
1654  return *this;
1655  }
1656 
1660  uid_t uid;
1664  VIDEO_CODEC_TYPE codecType;
1668  int width;
1672  int height;
1682  VIDEO_FRAME_TYPE frameType;
1686  VIDEO_ORIENTATION rotation;
1690  int trackId; // This can be reserved for multiple video tracks, we need to create different ssrc
1691  // and additional payload for later implementation.
1695  int64_t captureTimeMs;
1699  int64_t decodeTimeMs;
1703  VIDEO_STREAM_TYPE streamType;
1704 
1705  // @technical preview
1706  int64_t presentationMs;
1707 };
1708 
1712 enum COMPRESSION_PREFERENCE {
1716  PREFER_LOW_LATENCY,
1720  PREFER_QUALITY,
1721 };
1722 
1726 enum ENCODING_PREFERENCE {
1730  PREFER_AUTO = -1,
1734  PREFER_SOFTWARE = 0,
1738  PREFER_HARDWARE = 1,
1739 };
1740 
1745 
1749  ENCODING_PREFERENCE encodingPreference;
1750 
1754  COMPRESSION_PREFERENCE compressionPreference;
1755 
1756  AdvanceOptions() : encodingPreference(PREFER_AUTO),
1757  compressionPreference(PREFER_LOW_LATENCY) {}
1758 
1759  AdvanceOptions(ENCODING_PREFERENCE encoding_preference,
1760  COMPRESSION_PREFERENCE compression_preference) :
1761  encodingPreference(encoding_preference),
1762  compressionPreference(compression_preference) {}
1763 
1764  bool operator==(const AdvanceOptions& rhs) const {
1765  return encodingPreference == rhs.encodingPreference &&
1766  compressionPreference == rhs.compressionPreference;
1767  }
1768 
1769 };
1770 
1774 enum VIDEO_MIRROR_MODE_TYPE {
1778  VIDEO_MIRROR_MODE_AUTO = 0,
1782  VIDEO_MIRROR_MODE_ENABLED = 1,
1786  VIDEO_MIRROR_MODE_DISABLED = 2,
1787 };
1788 
1789 #if defined(__APPLE__) && TARGET_OS_IOS
1790 
1793 enum CAMERA_FORMAT_TYPE {
1795  CAMERA_FORMAT_NV12,
1797  CAMERA_FORMAT_BGRA,
1798 };
1799 #endif
1800 
1802 enum CODEC_CAP_MASK {
1804  CODEC_CAP_MASK_NONE = 0,
1805 
1807  CODEC_CAP_MASK_HW_DEC = 1 << 0,
1808 
1810  CODEC_CAP_MASK_HW_ENC = 1 << 1,
1811 
1813  CODEC_CAP_MASK_SW_DEC = 1 << 2,
1814 
1816  CODEC_CAP_MASK_SW_ENC = 1 << 3,
1817 };
1818 
1820  VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1821  VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1822 
1823  CodecCapLevels(): hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED), swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1824 };
1825 
1829  VIDEO_CODEC_TYPE codecType;
1834 
1835  CodecCapInfo(): codecType(VIDEO_CODEC_NONE), codecCapMask(0) {}
1836 };
1837 
1843  CAMERA_FOCAL_LENGTH_TYPE focalLengthType;
1844 };
1845 
1853  VIDEO_CODEC_TYPE codecType;
1918  int bitrate;
1919 
1939  ORIENTATION_MODE orientationMode;
1943  DEGRADATION_PREFERENCE degradationPreference;
1944 
1949  VIDEO_MIRROR_MODE_TYPE mirrorMode;
1950 
1955 
1956  VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1957  : codecType(VIDEO_CODEC_NONE),
1958  dimensions(d),
1959  frameRate(f),
1960  bitrate(b),
1961  minBitrate(DEFAULT_MIN_BITRATE),
1962  orientationMode(m),
1963  degradationPreference(MAINTAIN_QUALITY),
1964  mirrorMode(mirror),
1965  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1966  VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1967  : codecType(VIDEO_CODEC_NONE),
1968  dimensions(width, height),
1969  frameRate(f),
1970  bitrate(b),
1971  minBitrate(DEFAULT_MIN_BITRATE),
1972  orientationMode(m),
1973  degradationPreference(MAINTAIN_QUALITY),
1974  mirrorMode(mirror),
1975  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1976  VideoEncoderConfiguration(const VideoEncoderConfiguration& config)
1977  : codecType(config.codecType),
1978  dimensions(config.dimensions),
1979  frameRate(config.frameRate),
1980  bitrate(config.bitrate),
1981  minBitrate(config.minBitrate),
1984  mirrorMode(config.mirrorMode),
1985  advanceOptions(config.advanceOptions) {}
1986  VideoEncoderConfiguration()
1987  : codecType(VIDEO_CODEC_NONE),
1988  dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
1989  frameRate(FRAME_RATE_FPS_15),
1990  bitrate(STANDARD_BITRATE),
1991  minBitrate(DEFAULT_MIN_BITRATE),
1992  orientationMode(ORIENTATION_MODE_ADAPTIVE),
1993  degradationPreference(MAINTAIN_QUALITY),
1994  mirrorMode(VIDEO_MIRROR_MODE_DISABLED),
1995  advanceOptions(PREFER_AUTO, PREFER_LOW_LATENCY) {}
1996 
1997  VideoEncoderConfiguration& operator=(const VideoEncoderConfiguration& rhs) {
1998  if (this == &rhs) return *this;
1999  codecType = rhs.codecType;
2000  dimensions = rhs.dimensions;
2001  frameRate = rhs.frameRate;
2002  bitrate = rhs.bitrate;
2003  minBitrate = rhs.minBitrate;
2004  orientationMode = rhs.orientationMode;
2005  degradationPreference = rhs.degradationPreference;
2006  mirrorMode = rhs.mirrorMode;
2007  advanceOptions = rhs.advanceOptions;
2008  return *this;
2009  }
2010 };
2011 
2035  bool ordered;
2036 };
2037 
2041 enum SIMULCAST_STREAM_MODE {
2042  /*
2043  * disable simulcast stream until receive request for enable simulcast stream by other broadcaster
2044  */
2045  AUTO_SIMULCAST_STREAM = -1,
2046  /*
2047  * disable simulcast stream
2048  */
2049  DISABLE_SIMULCAST_STREAM = 0,
2050  /*
2051  * always enable simulcast stream
2052  */
2053  ENABLE_SIMULCAST_STREAM = 1,
2054 };
2055 
2072  SimulcastStreamConfig() : dimensions(160, 120), kBitrate(65), framerate(5) {}
2074  bool operator==(const SimulcastStreamConfig& rhs) const {
2075  return dimensions == rhs.dimensions && kBitrate == rhs.kBitrate && framerate == rhs.framerate;
2076  }
2077 };
2078 
2119  };
2132  bool enable;
2133  StreamLayerConfig() : dimensions(0, 0), framerate(0), enable(false) {}
2134  };
2135 
2140 };
2145 struct Rectangle {
2149  int x;
2153  int y;
2157  int width;
2161  int height;
2162 
2163  Rectangle() : x(0), y(0), width(0), height(0) {}
2164  Rectangle(int xx, int yy, int ww, int hh) : x(xx), y(yy), width(ww), height(hh) {}
2165 };
2166 
2181  float xRatio;
2187  float yRatio;
2193  float widthRatio;
2194 
2195  WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {}
2196  WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {}
2197 };
2198 
2227  WATERMARK_FIT_MODE mode;
2228 
2230  : visibleInPreview(true),
2231  positionInLandscapeMode(0, 0, 0, 0),
2232  positionInPortraitMode(0, 0, 0, 0),
2233  mode(FIT_MODE_COVER_POSITION) {}
2234 };
2235 
2239 struct RtcStats {
2243  unsigned int duration;
2247  unsigned int txBytes;
2251  unsigned int rxBytes;
2255  unsigned int txAudioBytes;
2259  unsigned int txVideoBytes;
2263  unsigned int rxAudioBytes;
2267  unsigned int rxVideoBytes;
2271  unsigned short txKBitRate;
2275  unsigned short rxKBitRate;
2279  unsigned short rxAudioKBitRate;
2283  unsigned short txAudioKBitRate;
2287  unsigned short rxVideoKBitRate;
2291  unsigned short txVideoKBitRate;
2295  unsigned short lastmileDelay;
2299  unsigned int userCount;
2306  double cpuAppUsage;
2396  RtcStats()
2397  : duration(0),
2398  txBytes(0),
2399  rxBytes(0),
2400  txAudioBytes(0),
2401  txVideoBytes(0),
2402  rxAudioBytes(0),
2403  rxVideoBytes(0),
2404  txKBitRate(0),
2405  rxKBitRate(0),
2406  rxAudioKBitRate(0),
2407  txAudioKBitRate(0),
2408  rxVideoKBitRate(0),
2409  txVideoKBitRate(0),
2410  lastmileDelay(0),
2411  userCount(0),
2412  cpuAppUsage(0.0),
2413  cpuTotalUsage(0.0),
2414  gatewayRtt(0),
2415  memoryAppUsageRatio(0.0),
2416  memoryTotalUsageRatio(0.0),
2418  connectTimeMs(0),
2428  txPacketLossRate(0),
2429  rxPacketLossRate(0) {}
2430 };
2431 
2435 enum CLIENT_ROLE_TYPE {
2439  CLIENT_ROLE_BROADCASTER = 1,
2443  CLIENT_ROLE_AUDIENCE = 2,
2444 };
2445 
2449 enum QUALITY_ADAPT_INDICATION {
2453  ADAPT_NONE = 0,
2457  ADAPT_UP_BANDWIDTH = 1,
2461  ADAPT_DOWN_BANDWIDTH = 2,
2462 };
2463 
2468 enum AUDIENCE_LATENCY_LEVEL_TYPE
2469 {
2473  AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2477  AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2478 };
2479 
2484 {
2488  AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
2489 
2491  : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
2492 };
2493 
2497 enum EXPERIENCE_QUALITY_TYPE {
2499  EXPERIENCE_QUALITY_GOOD = 0,
2501  EXPERIENCE_QUALITY_BAD = 1,
2502 };
2503 
2507 enum EXPERIENCE_POOR_REASON {
2511  EXPERIENCE_REASON_NONE = 0,
2515  REMOTE_NETWORK_QUALITY_POOR = 1,
2519  LOCAL_NETWORK_QUALITY_POOR = 2,
2523  WIRELESS_SIGNAL_POOR = 4,
2528  WIFI_BLUETOOTH_COEXIST = 8,
2529 };
2530 
2534 enum AUDIO_AINS_MODE {
2538  AINS_MODE_BALANCED = 0,
2542  AINS_MODE_AGGRESSIVE = 1,
2546  AINS_MODE_ULTRALOWLATENCY = 2
2547 };
2548 
2552 enum AUDIO_PROFILE_TYPE {
2561  AUDIO_PROFILE_DEFAULT = 0,
2565  AUDIO_PROFILE_SPEECH_STANDARD = 1,
2569  AUDIO_PROFILE_MUSIC_STANDARD = 2,
2576  AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2580  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2587  AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2591  AUDIO_PROFILE_IOT = 6,
2592  AUDIO_PROFILE_NUM = 7
2593 };
2594 
2598 enum AUDIO_SCENARIO_TYPE {
2603  AUDIO_SCENARIO_DEFAULT = 0,
2609  AUDIO_SCENARIO_GAME_STREAMING = 3,
2615  AUDIO_SCENARIO_CHATROOM = 5,
2619  AUDIO_SCENARIO_CHORUS = 7,
2623  AUDIO_SCENARIO_MEETING = 8,
2627  AUDIO_SCENARIO_NUM = 9,
2628 };
2629 
2633 struct VideoFormat {
2634  OPTIONAL_ENUM_SIZE_T {
2636  kMaxWidthInPixels = 3840,
2638  kMaxHeightInPixels = 2160,
2640  kMaxFps = 60,
2641  };
2642 
2646  int width; // Number of pixels.
2650  int height; // Number of pixels.
2654  int fps;
2655  VideoFormat() : width(FRAME_WIDTH_960), height(FRAME_HEIGHT_540), fps(FRAME_RATE_FPS_15) {}
2656  VideoFormat(int w, int h, int f) : width(w), height(h), fps(f) {}
2657 
2658  bool operator<(const VideoFormat& fmt) const {
2659  if (height != fmt.height) {
2660  return height < fmt.height;
2661  } else if (width != fmt.width) {
2662  return width < fmt.width;
2663  } else {
2664  return fps < fmt.fps;
2665  }
2666  }
2667  bool operator==(const VideoFormat& fmt) const {
2668  return width == fmt.width && height == fmt.height && fps == fmt.fps;
2669  }
2670  bool operator!=(const VideoFormat& fmt) const {
2671  return !operator==(fmt);
2672  }
2673 };
2674 
2678 enum VIDEO_CONTENT_HINT {
2682  CONTENT_HINT_NONE,
2689  CONTENT_HINT_MOTION,
2695  CONTENT_HINT_DETAILS
2696 };
2700 enum SCREEN_SCENARIO_TYPE {
2706  SCREEN_SCENARIO_DOCUMENT = 1,
2711  SCREEN_SCENARIO_GAMING = 2,
2716  SCREEN_SCENARIO_VIDEO = 3,
2722  SCREEN_SCENARIO_RDC = 4,
2723 };
2724 
2725 
2729 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2733  APPLICATION_SCENARIO_GENERAL = 0,
2737  APPLICATION_SCENARIO_MEETING = 1,
2738 };
2739 
2743 enum VIDEO_QOE_PREFERENCE_TYPE {
2747  VIDEO_QOE_PREFERENCE_BALANCE = 1,
2751  VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2755  VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2759  VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2760 
2761 };
2762 
2766 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2770  CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2773  CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2776  CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2779  CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2780 };
2781 
2782 enum CAMERA_STABILIZATION_MODE {
2785  CAMERA_STABILIZATION_MODE_OFF = -1,
2788  CAMERA_STABILIZATION_MODE_AUTO = 0,
2791  CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2794  CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2797  CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2800  CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2801 };
2802 
2806 enum LOCAL_AUDIO_STREAM_STATE {
2810  LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2814  LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2818  LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2822  LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2823 };
2824 
2828 enum LOCAL_AUDIO_STREAM_REASON {
2832  LOCAL_AUDIO_STREAM_REASON_OK = 0,
2836  LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2840  LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2847  LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2851  LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2855  LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2858  LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2861  LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2865  LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2868  LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2871  LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2872 };
2873 
2876 enum LOCAL_VIDEO_STREAM_STATE {
2880  LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2885  LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2889  LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2893  LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2894 };
2895 
2899 enum LOCAL_VIDEO_STREAM_REASON {
2903  LOCAL_VIDEO_STREAM_REASON_OK = 0,
2907  LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
2912  LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2917  LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
2923  LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
2927  LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
2932  LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
2939  LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2945  LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
2950  LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
2955  LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
2960  LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
2965  LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
2969  LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
2975  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2990  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
2992  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
2994  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
2996  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
2998  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3004  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3006  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3008  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3010  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3018  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3020  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3022  LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3023 
3024 };
3025 
3029 enum REMOTE_AUDIO_STATE
3030 {
3036  REMOTE_AUDIO_STATE_STOPPED = 0, // Default state, audio is started or remote user disabled/muted audio stream
3040  REMOTE_AUDIO_STATE_STARTING = 1, // The first audio frame packet has been received
3046  REMOTE_AUDIO_STATE_DECODING = 2, // The first remote audio frame has been decoded or fronzen state ends
3051  REMOTE_AUDIO_STATE_FROZEN = 3, // Remote audio is frozen, probably due to network issue
3056  REMOTE_AUDIO_STATE_FAILED = 4, // Remote audio play failed
3057 };
3058 
3062 enum REMOTE_AUDIO_STATE_REASON
3063 {
3067  REMOTE_AUDIO_REASON_INTERNAL = 0,
3071  REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3075  REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3080  REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3085  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3090  REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3095  REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3099  REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3103  REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3107  REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3108 };
3109 
3113 enum REMOTE_VIDEO_STATE {
3119  REMOTE_VIDEO_STATE_STOPPED = 0,
3123  REMOTE_VIDEO_STATE_STARTING = 1,
3129  REMOTE_VIDEO_STATE_DECODING = 2,
3133  REMOTE_VIDEO_STATE_FROZEN = 3,
3137  REMOTE_VIDEO_STATE_FAILED = 4,
3138 };
3142 enum REMOTE_VIDEO_STATE_REASON {
3146  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3150  REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3154  REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3158  REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3162  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3166  REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3170  REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3174  REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3178  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3182  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3185  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3188  REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3191  REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3192 
3195  REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3196 
3197 };
3198 
3202 enum REMOTE_USER_STATE {
3206  USER_STATE_MUTE_AUDIO = (1 << 0),
3210  USER_STATE_MUTE_VIDEO = (1 << 1),
3214  USER_STATE_ENABLE_VIDEO = (1 << 4),
3218  USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3219 };
3220 
3226  VideoTrackInfo()
3227  : isLocal(false), ownerUid(0), trackId(0), channelId(OPTIONAL_NULLPTR)
3228  , codecType(VIDEO_CODEC_H265)
3229  , encodedFrameOnly(false), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY)
3230  , observationPosition(agora::media::base::POSITION_POST_CAPTURER) {}
3236  bool isLocal;
3240  uid_t ownerUid;
3244  track_id_t trackId;
3248  const char* channelId;
3252  VIDEO_CODEC_TYPE codecType;
3262  VIDEO_SOURCE_TYPE sourceType;
3267 };
3268 
3272 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3276  REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3280  REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3284  REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3288  REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3292  REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3293 };
3294 
3305  uid_t uid;
3311  unsigned int volume; // [0,255]
3321  unsigned int vad;
3327  double voicePitch;
3328 
3329  AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {}
3330 };
3331 
3335 struct DeviceInfo {
3336  /*
3337  * Whether the audio device supports ultra-low-latency capture and playback:
3338  * - `true`: The device supports ultra-low-latency capture and playback.
3339  * - `false`: The device does not support ultra-low-latency capture and playback.
3340  */
3341  bool isLowLatencyAudioSupported;
3342 
3343  DeviceInfo() : isLowLatencyAudioSupported(false) {}
3344 };
3345 
3350  public:
3351  virtual ~IPacketObserver() {}
3355  struct Packet {
3361  const unsigned char* buffer;
3365  unsigned int size;
3366 
3367  Packet() : buffer(OPTIONAL_NULLPTR), size(0) {}
3368  };
3376  virtual bool onSendAudioPacket(Packet& packet) = 0;
3384  virtual bool onSendVideoPacket(Packet& packet) = 0;
3392  virtual bool onReceiveAudioPacket(Packet& packet) = 0;
3400  virtual bool onReceiveVideoPacket(Packet& packet) = 0;
3401 };
3402 
3406 enum AUDIO_SAMPLE_RATE_TYPE {
3410  AUDIO_SAMPLE_RATE_32000 = 32000,
3414  AUDIO_SAMPLE_RATE_44100 = 44100,
3418  AUDIO_SAMPLE_RATE_48000 = 48000,
3419 };
3423 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3427  VIDEO_CODEC_H264_FOR_STREAM = 1,
3431  VIDEO_CODEC_H265_FOR_STREAM = 2,
3432 };
3433 
3437 enum VIDEO_CODEC_PROFILE_TYPE {
3441  VIDEO_CODEC_PROFILE_BASELINE = 66,
3445  VIDEO_CODEC_PROFILE_MAIN = 77,
3449  VIDEO_CODEC_PROFILE_HIGH = 100,
3450 };
3451 
3452 
3456 enum AUDIO_CODEC_PROFILE_TYPE {
3460  AUDIO_CODEC_PROFILE_LC_AAC = 0,
3464  AUDIO_CODEC_PROFILE_HE_AAC = 1,
3468  AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3469 };
3470 
3475 {
3495  unsigned short txPacketLossRate;
3520 };
3521 
3522 
3526 enum RTMP_STREAM_PUBLISH_STATE {
3530  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3534  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3538  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3544  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3548  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3552  RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3553 };
3554 
3558 enum RTMP_STREAM_PUBLISH_REASON {
3562  RTMP_STREAM_PUBLISH_REASON_OK = 0,
3567  RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3571  RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3575  RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3579  RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3583  RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3587  RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3591  RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3595  RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3599  RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3603  RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3607  RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER = 11, // Note: match to ERR_PUBLISH_STREAM_NOT_BROADCASTER in AgoraBase.h
3611  RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM = 13, // Note: match to ERR_PUBLISH_STREAM_TRANSCODING_NO_MIX_STREAM in AgoraBase.h
3615  RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14, // Note: match to ERR_NET_DOWN in AgoraBase.h
3619  RTMP_STREAM_PUBLISH_REASON_INVALID_APPID = 15, // Note: match to ERR_PUBLISH_STREAM_APPID_INVALID in AgoraBase.h
3621  RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3625  RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3626 };
3627 
3629 enum RTMP_STREAMING_EVENT {
3633  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3637  RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3641  RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3645  RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3646 };
3647 
3651 typedef struct RtcImage {
3655  const char* url;
3659  int x;
3663  int y;
3667  int width;
3671  int height;
3679  int zOrder;
3685  double alpha;
3686 
3687  RtcImage() : url(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
3688 } RtcImage;
3695  LiveStreamAdvancedFeature() : featureName(OPTIONAL_NULLPTR), opened(false) {}
3696  LiveStreamAdvancedFeature(const char* feat_name, bool open) : featureName(feat_name), opened(open) {}
3698  // static const char* LBHQ = "lbhq";
3700  // static const char* VEO = "veo";
3701 
3705  const char* featureName;
3706 
3712  bool opened;
3713 } ;
3714 
3718 enum CONNECTION_STATE_TYPE
3719 {
3725  CONNECTION_STATE_DISCONNECTED = 1,
3734  CONNECTION_STATE_CONNECTING = 2,
3742  CONNECTION_STATE_CONNECTED = 3,
3752  CONNECTION_STATE_RECONNECTING = 4,
3761  CONNECTION_STATE_FAILED = 5,
3762 };
3763 
3771  uid_t uid;
3775  int x;
3779  int y;
3783  int width;
3787  int height;
3795  int zOrder;
3801  double alpha;
3815 
3816  TranscodingUser()
3817  : uid(0),
3818  x(0),
3819  y(0),
3820  width(0),
3821  height(0),
3822  zOrder(0),
3823  alpha(1.0),
3824  audioChannel(0) {}
3825 };
3826 
3837  int width;
3844  int height;
3855 
3862 
3870  VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
3873  unsigned int backgroundColor;
3875  VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
3879  unsigned int userCount;
3888 
3891  const char* metadata;
3900  unsigned int watermarkCount;
3901 
3910  unsigned int backgroundImageCount;
3911 
3914  AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
3928  AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
3932 
3934  unsigned int advancedFeatureCount;
3935 
3936  LiveTranscoding()
3937  : width(360),
3938  height(640),
3939  videoBitrate(400),
3940  videoFramerate(15),
3941  lowLatency(false),
3942  videoGop(30),
3943  videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
3944  backgroundColor(0x000000),
3945  videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
3946  userCount(0),
3947  transcodingUsers(OPTIONAL_NULLPTR),
3948  transcodingExtraInfo(OPTIONAL_NULLPTR),
3949  metadata(OPTIONAL_NULLPTR),
3950  watermark(OPTIONAL_NULLPTR),
3951  watermarkCount(0),
3952  backgroundImage(OPTIONAL_NULLPTR),
3954  audioSampleRate(AUDIO_SAMPLE_RATE_48000),
3955  audioBitrate(48),
3956  audioChannels(1),
3957  audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
3958  advancedFeatures(OPTIONAL_NULLPTR),
3959  advancedFeatureCount(0) {}
3960 };
3961 
3969  VIDEO_SOURCE_TYPE sourceType;
3979  const char* imageUrl;
3987  int x;
3991  int y;
3995  int width;
3999  int height;
4005  int zOrder;
4009  double alpha;
4016  bool mirror;
4017 
4019  : sourceType(VIDEO_SOURCE_CAMERA_PRIMARY),
4020  remoteUserUid(0),
4021  imageUrl(OPTIONAL_NULLPTR),
4022  x(0),
4023  y(0),
4024  width(0),
4025  height(0),
4026  zOrder(0),
4027  alpha(1.0),
4028  mirror(false) {}
4029 };
4030 
4038  unsigned int streamCount;
4053 
4055 };
4056 
4057 enum VIDEO_TRANSCODER_ERROR {
4061  VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4065  VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4069  VT_ERR_INVALID_IMAGE_PATH = 3,
4073  VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4077  VT_ERR_INVALID_LAYOUT = 5,
4081  VT_ERR_INTERNAL = 20
4082 };
4083 
4110 };
4111 
4115 enum LASTMILE_PROBE_RESULT_STATE {
4119  LASTMILE_PROBE_RESULT_COMPLETE = 1,
4123  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4127  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4128 };
4129 
4137  unsigned int packetLossRate;
4141  unsigned int jitter;
4145  unsigned int availableBandwidth;
4146 
4148  jitter(0),
4149  availableBandwidth(0) {}
4150 };
4151 
4159  LASTMILE_PROBE_RESULT_STATE state;
4171  unsigned int rtt;
4172 
4174  : state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
4175  rtt(0) {}
4176 };
4177 
4181 enum CONNECTION_CHANGED_REASON_TYPE
4182 {
4186  CONNECTION_CHANGED_CONNECTING = 0,
4190  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4194  CONNECTION_CHANGED_INTERRUPTED = 2,
4198  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4202  CONNECTION_CHANGED_JOIN_FAILED = 4,
4206  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4210  CONNECTION_CHANGED_INVALID_APP_ID = 6,
4214  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4220  CONNECTION_CHANGED_INVALID_TOKEN = 8,
4224  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4230  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4234  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4238  CONNECTION_CHANGED_RENEW_TOKEN = 12,
4242  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4246  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4250  CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4254  CONNECTION_CHANGED_LOST = 16,
4258  CONNECTION_CHANGED_ECHO_TEST = 17,
4262  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4266  CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4270  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4271 
4275  CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4276  /*
4277  * 22: The connection is failed due to certification verify failure.
4278  */
4279  CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4283  CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4287  CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4288 };
4289 
4293 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4297  CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4301  CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4305  CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3,
4309  CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4,
4310 };
4311 
4315 enum WLACC_MESSAGE_REASON {
4319  WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4323  WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4324 };
4325 
4329 enum WLACC_SUGGEST_ACTION {
4333  WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4337  WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4341  WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4345  WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4346 };
4347 
4351 struct WlAccStats {
4355  unsigned short e2eDelayPercent;
4359  unsigned short frozenRatioPercent;
4363  unsigned short lossRatePercent;
4364 };
4365 
4369 enum NETWORK_TYPE {
4373  NETWORK_TYPE_UNKNOWN = -1,
4377  NETWORK_TYPE_DISCONNECTED = 0,
4381  NETWORK_TYPE_LAN = 1,
4385  NETWORK_TYPE_WIFI = 2,
4389  NETWORK_TYPE_MOBILE_2G = 3,
4393  NETWORK_TYPE_MOBILE_3G = 4,
4397  NETWORK_TYPE_MOBILE_4G = 5,
4401  NETWORK_TYPE_MOBILE_5G = 6,
4402 };
4403 
4407 enum VIDEO_VIEW_SETUP_MODE {
4411  VIDEO_VIEW_SETUP_REPLACE = 0,
4415  VIDEO_VIEW_SETUP_ADD = 1,
4419  VIDEO_VIEW_SETUP_REMOVE = 2,
4420 };
4421 
4425 struct VideoCanvas {
4429  uid_t uid;
4430 
4434  uid_t subviewUid;
4438  view_t view;
4447  media::base::RENDER_MODE_TYPE renderMode;
4457  VIDEO_MIRROR_MODE_TYPE mirrorMode;
4462  VIDEO_VIEW_SETUP_MODE setupMode;
4467  VIDEO_SOURCE_TYPE sourceType;
4490  media::base::VIDEO_MODULE_POSITION position;
4491 
4492  VideoCanvas()
4493  : uid(0), subviewUid(0), view(NULL), backgroundColor(0x00000000), renderMode(media::base::RENDER_MODE_HIDDEN), mirrorMode(VIDEO_MIRROR_MODE_AUTO),
4494  setupMode(VIDEO_VIEW_SETUP_REPLACE), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4495  cropArea(0, 0, 0, 0), enableAlphaMask(false), position(media::base::POSITION_POST_CAPTURER) {}
4496 
4497  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4498  : uid(0), subviewUid(0), view(v), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4499  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4500  cropArea(0, 0, 0, 0), enableAlphaMask(false), position(media::base::POSITION_POST_CAPTURER) {}
4501 
4502  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4503  : uid(u), subviewUid(0), view(v), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4504  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4505  cropArea(0, 0, 0, 0), enableAlphaMask(false), position(media::base::POSITION_POST_CAPTURER) {}
4506 
4507  VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u, uid_t subu)
4508  : uid(u), subviewUid(subu), view(v), backgroundColor(0x00000000), renderMode(m), mirrorMode(mt), setupMode(VIDEO_VIEW_SETUP_REPLACE),
4509  sourceType(VIDEO_SOURCE_CAMERA_PRIMARY), mediaPlayerId(-ERR_NOT_READY),
4510  cropArea(0, 0, 0, 0), enableAlphaMask(false), position(media::base::POSITION_POST_CAPTURER) {}
4511 };
4512 
4513 enum PIP_STATE {
4514  PIP_STATE_STARTED = 0,
4515  PIP_STATE_STOPPED = 1,
4516  PIP_STATE_FAILED = 2,
4517 };
4518 
4519 struct PipOptions {
4520  void* contentSource;
4521  int contentWidth;
4522  int contentHeight;
4523 #if defined(__APPLE__) && TARGET_OS_IOS
4524  bool autoEnterPip = false;
4525  VideoCanvas canvas = VideoCanvas();
4526 #endif
4527  PipOptions(): contentSource(NULL), contentWidth(0), contentHeight(0) {}
4528 };
4529 
4542  };
4543 
4547 
4550 
4554 
4558 
4562 
4563  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness, float sharpness) : lighteningContrastLevel(contrastLevel), lighteningLevel(lightening), smoothnessLevel(smoothness), rednessLevel(redness), sharpnessLevel(sharpness) {}
4564 
4566 };
4567 
4577  };
4590  };
4591 
4595 
4599 
4600  LowlightEnhanceOptions(LOW_LIGHT_ENHANCE_MODE lowlightMode, LOW_LIGHT_ENHANCE_LEVEL lowlightLevel) : mode(lowlightMode), level(lowlightLevel) {}
4601 
4603 };
4617  };
4638  };
4642 
4646 
4647  VideoDenoiserOptions(VIDEO_DENOISER_MODE denoiserMode, VIDEO_DENOISER_LEVEL denoiserLevel) : mode(denoiserMode), level(denoiserLevel) {}
4648 
4650 };
4651 
4660 
4666 
4667  ColorEnhanceOptions(float stength, float skinProtect) : strengthLevel(stength), skinProtectLevel(skinProtect) {}
4668 
4670 };
4671 
4699  };
4700 
4710  };
4711 
4715 
4724  unsigned int color;
4725 
4732  const char* source;
4733 
4738 
4740 };
4741 
4743 
4744  enum SEG_MODEL_TYPE {
4745 
4746  SEG_MODEL_AI = 1,
4747  SEG_MODEL_GREEN = 2
4748  };
4749 
4750  SEG_MODEL_TYPE modelType;
4751 
4752  float greenCapacity;
4753 
4754 
4755  SegmentationProperty() : modelType(SEG_MODEL_AI), greenCapacity(0.5){}
4756 };
4757 
4760 enum AUDIO_TRACK_TYPE {
4764  AUDIO_TRACK_INVALID = -1,
4771  AUDIO_TRACK_MIXABLE = 0,
4777  AUDIO_TRACK_DIRECT = 1,
4783  AUDIO_TRACK_EXTERNAL_AEC_REFERENCE = 3,
4784 };
4785 
4810 };
4811 
4832 enum VOICE_BEAUTIFIER_PRESET {
4835  VOICE_BEAUTIFIER_OFF = 0x00000000,
4841  CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4847  CHAT_BEAUTIFIER_FRESH = 0x01010200,
4853  CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4862  SINGING_BEAUTIFIER = 0x01020100,
4865  TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4868  TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4871  TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4874  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4877  TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4880  TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4883  TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4886  TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4896  ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4897 };
4898 
4919 enum AUDIO_EFFECT_PRESET {
4922  AUDIO_EFFECT_OFF = 0x00000000,
4925  ROOM_ACOUSTICS_KTV = 0x02010100,
4928  ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4931  ROOM_ACOUSTICS_STUDIO = 0x02010300,
4934  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
4941  ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
4944  ROOM_ACOUSTICS_SPACIAL = 0x02010600,
4947  ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
4959  ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
4970  ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
4978  ROOM_ACOUSTICS_CHORUS = 0x02010D00,
4985  VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
4991  VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
4997  VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5004  VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5010  VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5014  VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5017  VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5024  STYLE_TRANSFORMATION_RNB = 0x02030100,
5031  STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5036  PITCH_CORRECTION = 0x02040100,
5037 
5041 };
5042 
5045 enum VOICE_CONVERSION_PRESET {
5048  VOICE_CONVERSION_OFF = 0x00000000,
5051  VOICE_CHANGER_NEUTRAL = 0x03010100,
5054  VOICE_CHANGER_SWEET = 0x03010200,
5057  VOICE_CHANGER_SOLID = 0x03010300,
5060  VOICE_CHANGER_BASS = 0x03010400,
5063  VOICE_CHANGER_CARTOON = 0x03010500,
5066  VOICE_CHANGER_CHILDLIKE = 0x03010600,
5069  VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5072  VOICE_CHANGER_MONSTER = 0x03010800,
5075  VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5078  VOICE_CHANGER_GROOT = 0x03010A00,
5081  VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5084  VOICE_CHANGER_IRON_LADY = 0x03010C00,
5087  VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5090  VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5093  VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5094 
5095 };
5096 
5099 enum HEADPHONE_EQUALIZER_PRESET {
5102  HEADPHONE_EQUALIZER_OFF = 0x00000000,
5105  HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5108  HEADPHONE_EQUALIZER_INEAR = 0x04000002
5109 };
5110 
5140  int bitrate;
5163 
5171  unsigned int highLightColor;
5180 
5182  : dimensions(1920, 1080), frameRate(5), bitrate(STANDARD_BITRATE), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
5183  ScreenCaptureParameters(const VideoDimensions& d, int f, int b)
5185  ScreenCaptureParameters(int width, int height, int f, int b)
5186  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false){}
5187  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs)
5188  : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {}
5189  ScreenCaptureParameters(int width, int height, int f, int b, view_t *ex, int cnt)
5191  ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t *ex, int cnt)
5193 };
5194 
5198 enum AUDIO_RECORDING_QUALITY_TYPE {
5202  AUDIO_RECORDING_QUALITY_LOW = 0,
5206  AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5210  AUDIO_RECORDING_QUALITY_HIGH = 2,
5214  AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5215 };
5216 
5220 enum AUDIO_FILE_RECORDING_TYPE {
5224  AUDIO_FILE_RECORDING_MIC = 1,
5228  AUDIO_FILE_RECORDING_PLAYBACK = 2,
5232  AUDIO_FILE_RECORDING_MIXED = 3,
5233 };
5234 
5238 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5242  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5246  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5250  AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
5251 };
5252 
5261  const char* filePath;
5267  bool encode;
5281  AUDIO_FILE_RECORDING_TYPE fileRecordingType;
5286  AUDIO_RECORDING_QUALITY_TYPE quality;
5287 
5294 
5296  : filePath(OPTIONAL_NULLPTR),
5297  encode(false),
5298  sampleRate(32000),
5299  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
5300  quality(AUDIO_RECORDING_QUALITY_LOW),
5301  recordingChannel(1) {}
5302 
5303  AudioRecordingConfiguration(const char* file_path, int sample_rate, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
5304  : filePath(file_path),
5305  encode(false),
5306  sampleRate(sample_rate),
5307  fileRecordingType(AUDIO_FILE_RECORDING_MIXED),
5308  quality(quality_type),
5309  recordingChannel(channel) {}
5310 
5311  AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type, int channel)
5312  : filePath(file_path),
5313  encode(enc),
5314  sampleRate(sample_rate),
5315  fileRecordingType(type),
5316  quality(quality_type),
5317  recordingChannel(channel) {}
5318 
5319  AudioRecordingConfiguration(const AudioRecordingConfiguration &rhs)
5320  : filePath(rhs.filePath),
5321  encode(rhs.encode),
5322  sampleRate(rhs.sampleRate),
5324  quality(rhs.quality),
5326 };
5327 
5335  AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
5339  AUDIO_ENCODING_TYPE encodingType;
5340 
5342  : postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5343  encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM){}
5344 
5345 };
5350 public:
5361 virtual void onRecordAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5362 
5373 virtual void onPlaybackAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5374 
5385 virtual void onMixedAudioEncodedFrame(const uint8_t* frameBuffer, int length, const EncodedAudioFrameInfo& audioEncodedFrameInfo) = 0;
5386 
5387 virtual ~IAudioEncodedFrameObserver () {}
5388 };
5389 
5392 enum AREA_CODE {
5396  AREA_CODE_CN = 0x00000001,
5400  AREA_CODE_NA = 0x00000002,
5404  AREA_CODE_EU = 0x00000004,
5408  AREA_CODE_AS = 0x00000008,
5412  AREA_CODE_JP = 0x00000010,
5416  AREA_CODE_IN = 0x00000020,
5420  AREA_CODE_GLOB = (0xFFFFFFFF)
5421 };
5422 
5427 enum AREA_CODE_EX {
5431  AREA_CODE_OC = 0x00000040,
5435  AREA_CODE_SA = 0x00000080,
5439  AREA_CODE_AF = 0x00000100,
5443  AREA_CODE_KR = 0x00000200,
5447  AREA_CODE_HKMC = 0x00000400,
5451  AREA_CODE_US = 0x00000800,
5455  AREA_CODE_RU = 0x00001000,
5459  AREA_CODE_OVS = 0xFFFFFFFE
5460 };
5461 
5465 enum CHANNEL_MEDIA_RELAY_ERROR {
5468  RELAY_OK = 0,
5471  RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5477  RELAY_ERROR_SERVER_NO_RESPONSE = 2,
5480  RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
5483  RELAY_ERROR_FAILED_JOIN_SRC = 4,
5486  RELAY_ERROR_FAILED_JOIN_DEST = 5,
5489  RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
5492  RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
5496  RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
5499  RELAY_ERROR_INTERNAL_ERROR = 9,
5502  RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
5505  RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
5506 };
5507 
5511 enum CHANNEL_MEDIA_RELAY_STATE {
5515  RELAY_STATE_IDLE = 0,
5518  RELAY_STATE_CONNECTING = 1,
5521  RELAY_STATE_RUNNING = 2,
5524  RELAY_STATE_FAILURE = 3,
5525 };
5526 
5532  uid_t uid;
5536  const char* channelName;
5540  const char* token;
5541 
5542  ChannelMediaInfo() : uid(0), channelName(NULL), token(NULL) {}
5543  ChannelMediaInfo(const char* c, const char* t, uid_t u) : uid(u), channelName(c), token(t) {}
5544 };
5545 
5582 
5583  ChannelMediaRelayConfiguration() : srcInfo(OPTIONAL_NULLPTR), destInfos(OPTIONAL_NULLPTR), destCount(0) {}
5584 };
5585 
5594 
5596 
5597  bool operator==(const UplinkNetworkInfo& rhs) const {
5599  }
5600 };
5601 
5607  const char* userId;
5611  VIDEO_STREAM_TYPE stream_type;
5615  REMOTE_VIDEO_DOWNSCALE_LEVEL current_downscale_level;
5620 
5622  : userId(OPTIONAL_NULLPTR),
5623  stream_type(VIDEO_STREAM_HIGH),
5624  current_downscale_level(REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE),
5625  expected_bitrate_bps(-1) {}
5626 
5628  : stream_type(rhs.stream_type),
5631  if (rhs.userId != OPTIONAL_NULLPTR) {
5632  const int len = std::strlen(rhs.userId);
5633  char* buf = new char[len + 1];
5634  std::memcpy(buf, rhs.userId, len);
5635  buf[len] = '\0';
5636  userId = buf;
5637  }
5638  }
5639 
5640  PeerDownlinkInfo& operator=(const PeerDownlinkInfo& rhs) {
5641  if (this == &rhs) return *this;
5642  userId = OPTIONAL_NULLPTR;
5643  stream_type = rhs.stream_type;
5644  current_downscale_level = rhs.current_downscale_level;
5645  expected_bitrate_bps = rhs.expected_bitrate_bps;
5646  if (rhs.userId != OPTIONAL_NULLPTR) {
5647  const int len = std::strlen(rhs.userId);
5648  char* buf = new char[len + 1];
5649  std::memcpy(buf, rhs.userId, len);
5650  buf[len] = '\0';
5651  userId = buf;
5652  }
5653  return *this;
5654  }
5655 
5656  ~PeerDownlinkInfo() { delete[] userId; }
5657  };
5658 
5679 
5684  peer_downlink_info(OPTIONAL_NULLPTR),
5686 
5691  peer_downlink_info(OPTIONAL_NULLPTR),
5693  if (total_received_video_count <= 0) return;
5694  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5695  for (int i = 0; i < total_received_video_count; ++i)
5697  }
5698 
5699  DownlinkNetworkInfo& operator=(const DownlinkNetworkInfo& rhs) {
5700  if (this == &rhs) return *this;
5701  lastmile_buffer_delay_time_ms = rhs.lastmile_buffer_delay_time_ms;
5702  bandwidth_estimation_bps = rhs.bandwidth_estimation_bps;
5703  total_downscale_level_count = rhs.total_downscale_level_count;
5704  peer_downlink_info = OPTIONAL_NULLPTR;
5705  total_received_video_count = rhs.total_received_video_count;
5706  if (total_received_video_count > 0) {
5707  peer_downlink_info = new PeerDownlinkInfo[total_received_video_count];
5708  for (int i = 0; i < total_received_video_count; ++i)
5709  peer_downlink_info[i] = rhs.peer_downlink_info[i];
5710  }
5711  return *this;
5712  }
5713 
5714  ~DownlinkNetworkInfo() { delete[] peer_downlink_info; }
5715 };
5716 
5723 enum ENCRYPTION_MODE {
5726  AES_128_XTS = 1,
5729  AES_128_ECB = 2,
5732  AES_256_XTS = 3,
5735  SM4_128_ECB = 4,
5738  AES_128_GCM = 5,
5741  AES_256_GCM = 6,
5745  AES_128_GCM2 = 7,
5748  AES_256_GCM2 = 8,
5751  MODE_END,
5752 };
5753 
5760  ENCRYPTION_MODE encryptionMode;
5766  const char* encryptionKey;
5773  uint8_t encryptionKdfSalt[32];
5774 
5775  bool datastreamEncryptionEnabled;
5776 
5778  : encryptionMode(AES_128_GCM2),
5779  encryptionKey(OPTIONAL_NULLPTR),
5780  datastreamEncryptionEnabled(false)
5781  {
5782  memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
5783  }
5784 
5786  const char* getEncryptionString() const {
5787  switch(encryptionMode) {
5788  case AES_128_XTS:
5789  return "aes-128-xts";
5790  case AES_128_ECB:
5791  return "aes-128-ecb";
5792  case AES_256_XTS:
5793  return "aes-256-xts";
5794  case SM4_128_ECB:
5795  return "sm4-128-ecb";
5796  case AES_128_GCM:
5797  return "aes-128-gcm";
5798  case AES_256_GCM:
5799  return "aes-256-gcm";
5800  case AES_128_GCM2:
5801  return "aes-128-gcm-2";
5802  case AES_256_GCM2:
5803  return "aes-256-gcm-2";
5804  default:
5805  return "aes-128-gcm-2";
5806  }
5807  return "aes-128-gcm-2";
5808  }
5810 };
5811 
5814 enum ENCRYPTION_ERROR_TYPE {
5818  ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5822  ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5826  ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5830  ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
5834  ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
5835 };
5836 
5837 enum UPLOAD_ERROR_REASON
5838 {
5839  UPLOAD_SUCCESS = 0,
5840  UPLOAD_NET_ERROR = 1,
5841  UPLOAD_SERVER_ERROR = 2,
5842 };
5843 
5846 enum PERMISSION_TYPE {
5850  RECORD_AUDIO = 0,
5854  CAMERA = 1,
5855 
5856  SCREEN_CAPTURE = 2,
5857 };
5858 
5862 enum STREAM_SUBSCRIBE_STATE {
5866  SUB_STATE_IDLE = 0,
5879  SUB_STATE_NO_SUBSCRIBED = 1,
5883  SUB_STATE_SUBSCRIBING = 2,
5887  SUB_STATE_SUBSCRIBED = 3
5888 };
5889 
5893 enum STREAM_PUBLISH_STATE {
5897  PUB_STATE_IDLE = 0,
5905  PUB_STATE_NO_PUBLISHED = 1,
5909  PUB_STATE_PUBLISHING = 2,
5913  PUB_STATE_PUBLISHED = 3
5914 };
5915 
5920  view_t view;
5921  bool enableAudio;
5922  bool enableVideo;
5923  const char* token;
5924  const char* channelId;
5925  int intervalInSeconds;
5926 
5927  EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c, const int is)
5928  : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
5929 
5931  : view(OPTIONAL_NULLPTR), enableAudio(true), enableVideo(true), token(OPTIONAL_NULLPTR), channelId(OPTIONAL_NULLPTR), intervalInSeconds(2) {}
5932 };
5933 
5937 struct UserInfo {
5941  uid_t uid;
5945  char userAccount[MAX_USER_ACCOUNT_LENGTH];
5946 
5947  UserInfo() : uid(0) {
5948  userAccount[0] = '\0';
5949  }
5950 };
5951 
5955 enum EAR_MONITORING_FILTER_TYPE {
5959  EAR_MONITORING_FILTER_NONE = (1<<0),
5964  EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
5968  EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2),
5973  EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1<<15),
5974 };
5975 
5979 enum THREAD_PRIORITY_TYPE {
5983  LOWEST = 0,
5987  LOW = 1,
5991  NORMAL = 2,
5995  HIGH = 3,
5999  HIGHEST = 4,
6003  CRITICAL = 5,
6004 };
6005 
6006 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
6007 
6011 struct ScreenVideoParameters {
6038  VideoDimensions dimensions;
6044  int frameRate = 15;
6049  int bitrate;
6050  /*
6051  * The content hint of the screen sharing:
6052  */
6053  VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6054 
6055  ScreenVideoParameters() : dimensions(1280, 720) {}
6056 };
6057 
6061 struct ScreenAudioParameters {
6065  int sampleRate = 16000;
6069  int channels = 2;
6074  int captureSignalVolume = 100;
6075 };
6076 
6080 struct ScreenCaptureParameters2 {
6090  bool captureAudio = false;
6094  ScreenAudioParameters audioParams;
6104  bool captureVideo = true;
6108  ScreenVideoParameters videoParams;
6109 };
6110 #endif
6111 
6115 enum MEDIA_TRACE_EVENT {
6119  MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6123  MEDIA_TRACE_EVENT_VIDEO_DECODED,
6124 };
6125 
6179 };
6180 
6181 enum CONFIG_FETCH_TYPE {
6185  CONFIG_FETCH_TYPE_INITIALIZE = 1,
6189  CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6190 };
6191 
6192 
6194 enum LOCAL_PROXY_MODE {
6197  ConnectivityFirst = 0,
6200  LocalOnly = 1,
6201 };
6202 
6206  const char* serverDomain;
6209  const char* serverPath;
6218 
6219  LogUploadServerInfo() : serverDomain(NULL), serverPath(NULL), serverPort(0), serverHttps(true) {}
6220 
6221  LogUploadServerInfo(const char* domain, const char* path, int port, bool https) : serverDomain(domain), serverPath(path), serverPort(port), serverHttps(https) {}
6222 };
6223 
6228 };
6229 
6233  const char** ipList;
6239  const char** domainList;
6246  const char* verifyDomainName;
6249  LOCAL_PROXY_MODE mode;
6259  LocalAccessPointConfiguration() : ipList(NULL), ipListSize(0), domainList(NULL), domainListSize(0), verifyDomainName(NULL), mode(ConnectivityFirst), disableAut(true) {}
6260 };
6261 
6266  const char* channelId;
6270  uid_t uid;
6274  RecorderStreamInfo() : channelId(NULL), uid(0) {}
6275  RecorderStreamInfo(const char* channelId, uid_t uid) : channelId(channelId), uid(uid) {}
6276 };
6277 } // namespace rtc
6278 
6279 namespace base {
6280 
6282  public:
6283  virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid, void** inter) = 0;
6284  virtual ~IEngineBase() {}
6285 };
6286 
6287 class AParameter : public agora::util::AutoPtr<IAgoraParameter> {
6288  public:
6289  AParameter(IEngineBase& engine) { initialize(&engine); }
6290  AParameter(IEngineBase* engine) { initialize(engine); }
6292 
6293  private:
6294  bool initialize(IEngineBase* engine) {
6295  IAgoraParameter* p = OPTIONAL_NULLPTR;
6296  if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (void**)&p)) reset(p);
6297  return p != OPTIONAL_NULLPTR;
6298  }
6299 };
6300 
6302  public:
6303  virtual ~LicenseCallback() {}
6304  virtual void onCertificateRequired() = 0;
6305  virtual void onLicenseRequest() = 0;
6306  virtual void onLicenseValidated() = 0;
6307  virtual void onLicenseError(int result) = 0;
6308 };
6309 
6310 } // namespace base
6311 
6348 };
6353 {
6357  const char* channelId;
6361  rtc::uid_t uid;
6365  user_id_t strUid;
6369  uint32_t x;
6373  uint32_t y;
6377  uint32_t width;
6381  uint32_t height;
6386  uint32_t videoState;
6387 
6388  VideoLayout() : channelId(OPTIONAL_NULLPTR), uid(0), strUid(OPTIONAL_NULLPTR), x(0), y(0), width(0), height(0), videoState(0) {}
6389 };
6390 } // namespace agora
6391 
6397 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
6398 
6404 AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
6405 
6406 AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
6407 
6415 AGORA_API int AGORA_CALL createAgoraCredential(agora::util::AString &credential);
6416 
6430 AGORA_API int AGORA_CALL getAgoraCertificateVerifyResult(const char *credential_buf, int credential_len,
6431  const char *certificate_buf, int certificate_len);
6432 
6440 AGORA_API void setAgoraLicenseCallback(agora::base::LicenseCallback *callback);
6441 
6449 AGORA_API agora::base::LicenseCallback* getAgoraLicenseCallback();
6450 
6451 /*
6452  * Get monotonic time in ms which can be used by capture time,
6453  * typical scenario is as follows:
6454  *
6455  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6456  * | // custom audio/video base capture time, e.g. the first audio/video capture time. |
6457  * | int64_t custom_capture_time_base; |
6458  * | |
6459  * | int64_t agora_monotonic_time = getAgoraCurrentMonotonicTimeInMs(); |
6460  * | |
6461  * | // offset is fixed once calculated in the begining. |
6462  * | const int64_t offset = agora_monotonic_time - custom_capture_time_base; |
6463  * | |
6464  * | // realtime_custom_audio/video_capture_time is the origin capture time that customer provided.|
6465  * | // actual_audio/video_capture_time is the actual capture time transfered to sdk. |
6466  * | int64_t actual_audio_capture_time = realtime_custom_audio_capture_time + offset; |
6467  * | int64_t actual_video_capture_time = realtime_custom_video_capture_time + offset; |
6468  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6469  *
6470  * @return
6471  * - >= 0: Success.
6472  * - < 0: Failure.
6473  */
6474 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();
agora::rtc::LiveTranscoding::transcodingUsers
TranscodingUser * transcodingUsers
Definition: AgoraBase.h:3882
agora::rtc::LogUploadServerInfo::serverDomain
const char * serverDomain
Definition: AgoraBase.h:6206
agora::rtc::IPacketObserver::onReceiveVideoPacket
virtual bool onReceiveVideoPacket(Packet &packet)=0
agora::rtc::VideoCanvas::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:4473
agora::rtc::RtcImage::width
int width
Definition: AgoraBase.h:3667
agora::rtc::TranscodingVideoStream::zOrder
int zOrder
Definition: AgoraBase.h:4005
agora::rtc::RtcStats::firstAudioPacketDuration
int firstAudioPacketDuration
Definition: AgoraBase.h:2347
agora::VideoLayout
Definition: AgoraBase.h:6353
agora::rtc::SimulcastConfig::STREAM_LAYER_1
@ STREAM_LAYER_1
Definition: AgoraBase.h:2090
agora::VideoLayout::channelId
const char * channelId
Definition: AgoraBase.h:6357
agora::rtc::UserInfo
Definition: AgoraBase.h:5937
agora::rtc::TranscodingVideoStream::alpha
double alpha
Definition: AgoraBase.h:4009
agora::rtc::EncodedAudioFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1491
agora::rtc::VideoEncoderConfiguration::degradationPreference
DEGRADATION_PREFERENCE degradationPreference
Definition: AgoraBase.h:1943
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:4155
agora::rtc::AudioEncodedFrameObserverConfig
Definition: AgoraBase.h:5331
agora::rtc::ScreenCaptureParameters
Definition: AgoraBase.h:5114
agora::VideoLayout::x
uint32_t x
Definition: AgoraBase.h:6369
agora::rtc::WatermarkRatio
Definition: AgoraBase.h:2175
agora::rtc::AudioVolumeInfo
Definition: AgoraBase.h:3298
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR_DEGREE
BACKGROUND_BLUR_DEGREE
Definition: AgoraBase.h:4703
agora::rtc::LastmileProbeResult::uplinkReport
LastmileProbeOneWayResult uplinkReport
Definition: AgoraBase.h:4163
agora::rtc::EncodedVideoFrameInfo::rotation
VIDEO_ORIENTATION rotation
Definition: AgoraBase.h:1686
agora::rtc::AdvancedConfigInfo::logUploadServer
LogUploadServerInfo logUploadServer
Definition: AgoraBase.h:6227
agora::rtc::BeautyOptions
Definition: AgoraBase.h:4532
agora::rtc::SenderOptions
Definition: AgoraBase.h:1228
agora::rtc::ScreenCaptureParameters::bitrate
int bitrate
Definition: AgoraBase.h:5140
agora::rtc::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: AgoraBase.h:4549
agora::rtc::RtcStats::txVideoBytes
unsigned int txVideoBytes
Definition: AgoraBase.h:2259
agora::rtc::VirtualBackgroundSource::BACKGROUND_BLUR
@ BACKGROUND_BLUR
Definition: AgoraBase.h:4694
agora::rtc::LiveTranscoding::backgroundColor
unsigned int backgroundColor
Definition: AgoraBase.h:3873
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:148
agora::rtc::AudioVolumeInfo::voicePitch
double voicePitch
Definition: AgoraBase.h:3327
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:4087
agora::rtc::TranscodingUser::y
int y
Definition: AgoraBase.h:3779
agora::rtc::ScreenCaptureParameters::highLightWidth
int highLightWidth
Definition: AgoraBase.h:5167
agora::rtc::RtcStats::rxKBitRate
unsigned short rxKBitRate
Definition: AgoraBase.h:2275
agora::rtc::RtcStats::memoryTotalUsageRatio
double memoryTotalUsageRatio
Definition: AgoraBase.h:2332
agora::rtc::LocalAudioStats::txPacketLossRate
unsigned short txPacketLossRate
Definition: AgoraBase.h:3495
agora::rtc::VideoFormat::fps
int fps
Definition: AgoraBase.h:2654
agora::SpatialAudioParams::speaker_elevation
Optional< double > speaker_elevation
Definition: AgoraBase.h:6323
agora::rtc::VideoEncoderConfiguration::minBitrate
int minBitrate
Definition: AgoraBase.h:1935
agora::rtc::ScreenCaptureParameters::enableHighLight
bool enableHighLight
Definition: AgoraBase.h:5179
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_AUTO
@ VIDEO_DENOISER_AUTO
Definition: AgoraBase.h:4614
agora::rtc::VideoCanvas::setupMode
VIDEO_VIEW_SETUP_MODE setupMode
Definition: AgoraBase.h:4462
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
@ LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4585
agora::rtc::TranscodingUser::audioChannel
int audioChannel
Definition: AgoraBase.h:3814
agora::rtc::SimulcastConfig::StreamLayerIndex
StreamLayerIndex
Definition: AgoraBase.h:2086
agora::rtc::RtcStats::firstAudioPacketDurationAfterUnmute
int firstAudioPacketDurationAfterUnmute
Definition: AgoraBase.h:2367
agora::rtc::SimulcastConfig::STREAM_LAYER_2
@ STREAM_LAYER_2
Definition: AgoraBase.h:2094
agora::rtc::VideoFormat::width
int width
Definition: AgoraBase.h:2646
agora::rtc::ScreenCaptureParameters::windowFocus
bool windowFocus
Definition: AgoraBase.h:5151
agora::rtc::AudioEncodedFrameObserverConfig::encodingType
AUDIO_ENCODING_TYPE encodingType
Definition: AgoraBase.h:5339
agora::rtc::SenderOptions::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1236
agora::rtc::EncodedAudioFrameInfo::codec
AUDIO_CODEC_TYPE codec
Definition: AgoraBase.h:1468
agora::rtc::LiveTranscoding::videoGop
int videoGop
Definition: AgoraBase.h:3865
agora::rtc::ChannelMediaRelayConfiguration::destCount
int destCount
Definition: AgoraBase.h:5581
agora::rtc::LocalAudioStats::audioDeviceDelay
int audioDeviceDelay
Definition: AgoraBase.h:3499
agora::rtc::PipOptions
Definition: AgoraBase.h:4519
agora::rtc::LastmileProbeOneWayResult::jitter
unsigned int jitter
Definition: AgoraBase.h:4141
agora::rtc::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: AgoraBase.h:4553
agora::rtc::VideoDenoiserOptions::level
VIDEO_DENOISER_LEVEL level
Definition: AgoraBase.h:4645
agora::rtc::VideoCanvas::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:4457
agora::rtc::RtcStats::duration
unsigned int duration
Definition: AgoraBase.h:2243
agora::rtc::SimulcastStreamConfig::framerate
int framerate
Definition: AgoraBase.h:2071
agora::rtc::VideoDimensions::height
int height
Definition: AgoraBase.h:1089
agora::rtc::LocalAccessPointConfiguration::mode
LOCAL_PROXY_MODE mode
Definition: AgoraBase.h:6249
agora::rtc::LastmileProbeConfig::probeUplink
bool probeUplink
Definition: AgoraBase.h:4094
agora::rtc::LocalAccessPointConfiguration
Definition: AgoraBase.h:6230
agora::rtc::LiveTranscoding::videoCodecType
VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType
Definition: AgoraBase.h:3875
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MODE
VIDEO_DENOISER_MODE
Definition: AgoraBase.h:4612
agora::rtc::LiveTranscoding
Definition: AgoraBase.h:3830
agora::rtc::RtcStats::txBytes
unsigned int txBytes
Definition: AgoraBase.h:2247
agora::rtc::VideoFormat::height
int height
Definition: AgoraBase.h:2650
agora::rtc::Rectangle
Definition: AgoraBase.h:2145
agora::rtc::LocalAccessPointConfiguration::ipList
const char ** ipList
Definition: AgoraBase.h:6233
agora::rtc::VideoCanvas::uid
uid_t uid
Definition: AgoraBase.h:4429
agora::rtc::RtcStats::firstVideoPacketDuration
int firstVideoPacketDuration
Definition: AgoraBase.h:2352
agora::rtc::AudioRecordingConfiguration::filePath
const char * filePath
Definition: AgoraBase.h:5261
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1611
agora::rtc::ColorEnhanceOptions::strengthLevel
float strengthLevel
Definition: AgoraBase.h:4659
agora::SpatialAudioParams::speaker_distance
Optional< double > speaker_distance
Definition: AgoraBase.h:6327
agora::rtc::VirtualBackgroundSource::BACKGROUND_NONE
@ BACKGROUND_NONE
Definition: AgoraBase.h:4682
agora::rtc::BeautyOptions::rednessLevel
float rednessLevel
Definition: AgoraBase.h:4557
agora::rtc::RtcStats::rxVideoBytes
unsigned int rxVideoBytes
Definition: AgoraBase.h:2267
agora::rtc::TranscodingVideoStream::remoteUserUid
uid_t remoteUserUid
Definition: AgoraBase.h:3974
agora::rtc::VideoEncoderConfiguration::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:1857
agora::rtc::EncodedVideoFrameInfo::uid
uid_t uid
Definition: AgoraBase.h:1660
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1450
agora::util::AutoPtr
Definition: AgoraBase.h:94
agora::rtc::LastmileProbeOneWayResult::packetLossRate
unsigned int packetLossRate
Definition: AgoraBase.h:4137
agora::UserInfo::hasAudio
bool hasAudio
Definition: AgoraBase.h:817
agora::rtc::ScreenCaptureParameters::excludeWindowCount
int excludeWindowCount
Definition: AgoraBase.h:5162
agora::rtc::IPacketObserver::Packet
Definition: AgoraBase.h:3355
agora::rtc::AudioTrackConfig::enableLocalPlayback
bool enableLocalPlayback
Definition: AgoraBase.h:4794
agora::rtc::LiveTranscoding::audioCodecProfile
AUDIO_CODEC_PROFILE_TYPE audioCodecProfile
Definition: AgoraBase.h:3928
agora::rtc::RecorderStreamInfo::uid
uid_t uid
Definition: AgoraBase.h:6270
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1849
agora::rtc::Rectangle::width
int width
Definition: AgoraBase.h:2157
agora::rtc::SimulcastConfig::StreamLayerConfig::framerate
int framerate
Definition: AgoraBase.h:2128
agora::rtc::VideoEncoderConfiguration::bitrate
int bitrate
Definition: AgoraBase.h:1918
agora::rtc::VideoRenderingTracingInfo::remoteJoined2UnmuteVideo
int remoteJoined2UnmuteVideo
Definition: AgoraBase.h:6169
agora::util::AList
Definition: AgoraBase.h:227
agora::rtc::RtcStats::firstVideoKeyFrameDecodedDurationAfterUnmute
int firstVideoKeyFrameDecodedDurationAfterUnmute
Definition: AgoraBase.h:2382
agora::rtc::VideoSubscriptionOptions
Definition: AgoraBase.h:1580
agora::rtc::TranscodingUser
Definition: AgoraBase.h:3767
agora::rtc::EchoTestConfiguration
Definition: AgoraBase.h:5919
agora::rtc::RtcImage
Definition: AgoraBase.h:3651
agora::rtc::TranscodingUser::x
int x
Definition: AgoraBase.h:3775
agora::rtc::ChannelMediaInfo::token
const char * token
Definition: AgoraBase.h:5540
agora::rtc::VideoRenderingTracingInfo::remoteJoined2PacketReceived
int remoteJoined2PacketReceived
Definition: AgoraBase.h:6178
agora::rtc::AudioRecordingConfiguration::encode
bool encode
Definition: AgoraBase.h:5267
agora::rtc::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: AgoraBase.h:4546
agora::rtc::WatermarkRatio::yRatio
float yRatio
Definition: AgoraBase.h:2187
agora::SpatialAudioParams::enable_blur
Optional< bool > enable_blur
Definition: AgoraBase.h:6335
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:2059
agora::rtc::LiveTranscoding::audioBitrate
int audioBitrate
Definition: AgoraBase.h:3917
agora::rtc::ChannelMediaRelayConfiguration::destInfos
ChannelMediaInfo * destInfos
Definition: AgoraBase.h:5576
agora::rtc::RtcImage::x
int x
Definition: AgoraBase.h:3659
agora::rtc::VirtualBackgroundSource::background_source_type
BACKGROUND_SOURCE_TYPE background_source_type
Definition: AgoraBase.h:4714
agora::rtc::TranscodingVideoStream::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3969
agora::rtc::LocalTranscoderConfiguration::syncWithPrimaryCamera
bool syncWithPrimaryCamera
Definition: AgoraBase.h:4052
agora::rtc::RtcImage::zOrder
int zOrder
Definition: AgoraBase.h:3679
agora::rtc::ClientRoleOptions::audienceLatencyLevel
AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel
Definition: AgoraBase.h:2488
agora::rtc::AudioVolumeInfo::volume
unsigned int volume
Definition: AgoraBase.h:3311
agora::rtc::TranscodingUser::uid
uid_t uid
Definition: AgoraBase.h:3771
agora::rtc::VideoCanvas::enableAlphaMask
bool enableAlphaMask
Definition: AgoraBase.h:4485
agora::rtc::VideoRenderingTracingInfo::elapsedTime
int elapsedTime
Definition: AgoraBase.h:6133
agora::rtc::LiveStreamAdvancedFeature::featureName
const char * featureName
Definition: AgoraBase.h:3705
agora::rtc::AdvancedConfigInfo
Definition: AgoraBase.h:6224
agora::rtc::Rectangle::y
int y
Definition: AgoraBase.h:2153
agora::rtc::LocalAudioStats::sentBitrate
int sentBitrate
Definition: AgoraBase.h:3487
agora::rtc::RtcImage::url
const char * url
Definition: AgoraBase.h:3655
agora::rtc::IPacketObserver::Packet::buffer
const unsigned char * buffer
Definition: AgoraBase.h:3361
agora::rtc::EncodedVideoFrameInfo::decodeTimeMs
int64_t decodeTimeMs
Definition: AgoraBase.h:1699
agora::rtc::RtcStats::firstVideoKeyFrameRenderedDurationAfterUnmute
int firstVideoKeyFrameRenderedDurationAfterUnmute
Definition: AgoraBase.h:2387
agora::rtc::SimulcastConfig::configs
StreamLayerConfig configs[STREAM_LAYER_COUNT_MAX]
Definition: AgoraBase.h:2139
agora::rtc::ColorEnhanceOptions
Definition: AgoraBase.h:4656
agora::rtc::AudioRecordingConfiguration::sampleRate
int sampleRate
Definition: AgoraBase.h:5277
agora::UserInfo::userId
util::AString userId
Definition: AgoraBase.h:811
agora::rtc::WatermarkOptions::positionInPortraitMode
Rectangle positionInPortraitMode
Definition: AgoraBase.h:2218
agora::rtc::LocalAccessPointConfiguration::advancedConfig
AdvancedConfigInfo advancedConfig
Definition: AgoraBase.h:6252
agora::rtc::AudioTrackConfig::enableDirectPublish
bool enableDirectPublish
Definition: AgoraBase.h:4807
agora::rtc::LastmileProbeResult::downlinkReport
LastmileProbeOneWayResult downlinkReport
Definition: AgoraBase.h:4167
agora::rtc::LiveTranscoding::watermarkCount
unsigned int watermarkCount
Definition: AgoraBase.h:3900
agora::rtc::Rectangle::x
int x
Definition: AgoraBase.h:2149
agora::rtc::LocalTranscoderConfiguration::videoInputStreams
TranscodingVideoStream * videoInputStreams
Definition: AgoraBase.h:4042
agora::util::IString
Definition: AgoraBase.h:166
agora::rtc::LocalAccessPointConfiguration::verifyDomainName
const char * verifyDomainName
Definition: AgoraBase.h:6246
agora::SpatialAudioParams::enable_air_absorb
Optional< bool > enable_air_absorb
Definition: AgoraBase.h:6339
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_LEVEL
LOW_LIGHT_ENHANCE_LEVEL
Definition: AgoraBase.h:4581
agora::rtc::EncodedAudioFrameInfo::advancedSettings
EncodedAudioFrameAdvancedSettings advancedSettings
Definition: AgoraBase.h:1486
agora::rtc::LocalTranscoderConfiguration
Definition: AgoraBase.h:4034
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: AgoraBase.h:4535
agora::rtc::WatermarkRatio::xRatio
float xRatio
Definition: AgoraBase.h:2181
agora::rtc::LocalAudioStats::sentSampleRate
int sentSampleRate
Definition: AgoraBase.h:3483
agora::rtc::VideoSubscriptionOptions::type
Optional< VIDEO_STREAM_TYPE > type
Definition: AgoraBase.h:1587
agora::rtc::LastmileProbeConfig::expectedDownlinkBitrate
unsigned int expectedDownlinkBitrate
Definition: AgoraBase.h:4109
agora::rtc::RtcStats::cpuTotalUsage
double cpuTotalUsage
Definition: AgoraBase.h:2316
agora::rtc::IPacketObserver::Packet::size
unsigned int size
Definition: AgoraBase.h:3365
agora::rtc::LiveTranscoding::advancedFeatures
LiveStreamAdvancedFeature * advancedFeatures
Definition: AgoraBase.h:3931
agora::rtc::LiveTranscoding::backgroundImageCount
unsigned int backgroundImageCount
Definition: AgoraBase.h:3910
agora::rtc::IPacketObserver
Definition: AgoraBase.h:3349
agora::rtc::LiveTranscoding::backgroundImage
RtcImage * backgroundImage
Definition: AgoraBase.h:3906
agora::rtc::RtcStats::cpuAppUsage
double cpuAppUsage
Definition: AgoraBase.h:2306
agora::VideoLayout::width
uint32_t width
Definition: AgoraBase.h:6377
agora::rtc::VideoFormat
Definition: AgoraBase.h:2633
agora::rtc::AdvanceOptions
Definition: AgoraBase.h:1744
agora::rtc::TranscodingUser::alpha
double alpha
Definition: AgoraBase.h:3801
agora::rtc::LocalAudioStats::aedMusicRes
int aedMusicRes
Definition: AgoraBase.h:3519
agora::rtc::WatermarkOptions::watermarkRatio
WatermarkRatio watermarkRatio
Definition: AgoraBase.h:2223
agora::rtc::DataStreamConfig
Definition: AgoraBase.h:2015
agora::rtc::AdvanceOptions::compressionPreference
COMPRESSION_PREFERENCE compressionPreference
Definition: AgoraBase.h:1754
agora::rtc::RtcStats::txAudioBytes
unsigned int txAudioBytes
Definition: AgoraBase.h:2255
agora::rtc::RtcStats::connectTimeMs
int connectTimeMs
Definition: AgoraBase.h:2342
agora::rtc::LastmileProbeResult::state
LASTMILE_PROBE_RESULT_STATE state
Definition: AgoraBase.h:4159
agora::rtc::VideoEncoderConfiguration::advanceOptions
AdvanceOptions advanceOptions
Definition: AgoraBase.h:1954
agora::rtc::VideoCanvas::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraBase.h:4490
agora::rtc::ChannelMediaInfo::channelName
const char * channelName
Definition: AgoraBase.h:5536
agora::rtc::LiveTranscoding::height
int height
Definition: AgoraBase.h:3844
agora::rtc::EncodedAudioFrameAdvancedSettings::speech
bool speech
Definition: AgoraBase.h:1438
agora::rtc::EncodedVideoFrameInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1664
agora::rtc::RtcStats::txVideoKBitRate
unsigned short txVideoKBitRate
Definition: AgoraBase.h:2291
agora::rtc::RtcStats::rxAudioBytes
unsigned int rxAudioBytes
Definition: AgoraBase.h:2263
agora::rtc::EncodedAudioFrameAdvancedSettings::sendEvenIfEmpty
bool sendEvenIfEmpty
Definition: AgoraBase.h:1444
agora::SpatialAudioParams::enable_doppler
Optional< bool > enable_doppler
Definition: AgoraBase.h:6347
agora::rtc::RtcStats::txAudioKBitRate
unsigned short txAudioKBitRate
Definition: AgoraBase.h:2283
agora::VideoLayout::height
uint32_t height
Definition: AgoraBase.h:6381
agora::rtc::AudioVolumeInfo::uid
uid_t uid
Definition: AgoraBase.h:3305
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: AgoraBase.h:4537
agora::rtc::LiveTranscoding::videoBitrate
int videoBitrate
Definition: AgoraBase.h:3849
agora::rtc::VideoTrackInfo::trackId
track_id_t trackId
Definition: AgoraBase.h:3244
agora::rtc::VideoTrackInfo::encodedFrameOnly
bool encodedFrameOnly
Definition: AgoraBase.h:3258
agora::rtc::TranscodingUser::width
int width
Definition: AgoraBase.h:3783
agora::rtc::ScreenCaptureParameters::highLightColor
unsigned int highLightColor
Definition: AgoraBase.h:5171
agora::base::AParameter
Definition: AgoraBase.h:6287
agora::rtc::BeautyOptions::sharpnessLevel
float sharpnessLevel
Definition: AgoraBase.h:4561
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:5760
agora::util::AOutputIterator
Definition: AgoraBase.h:196
agora::rtc::WatermarkOptions::positionInLandscapeMode
Rectangle positionInLandscapeMode
Definition: AgoraBase.h:2213
agora::rtc::IAudioEncodedFrameObserver
Definition: AgoraBase.h:5349
agora::rtc::EncodedVideoFrameInfo::width
int width
Definition: AgoraBase.h:1668
agora::rtc::VideoTrackInfo::ownerUid
uid_t ownerUid
Definition: AgoraBase.h:3240
agora::rtc::VideoRenderingTracingInfo::join2JoinSuccess
int join2JoinSuccess
Definition: AgoraBase.h:6144
agora::rtc::LastmileProbeOneWayResult::availableBandwidth
unsigned int availableBandwidth
Definition: AgoraBase.h:4145
agora::rtc::EncodedVideoFrameInfo::captureTimeMs
int64_t captureTimeMs
Definition: AgoraBase.h:1695
agora::rtc::EncodedVideoFrameInfo::framesPerSecond
int framesPerSecond
Definition: AgoraBase.h:1678
agora::rtc::LiveTranscoding::transcodingExtraInfo
const char * transcodingExtraInfo
Definition: AgoraBase.h:3887
agora::rtc::SimulcastConfig::StreamLayerConfig
Definition: AgoraBase.h:2120
agora::rtc::VideoTrackInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:3252
agora::rtc::LiveTranscoding::metadata
const char * metadata
Definition: AgoraBase.h:3891
agora::rtc::LocalAudioStats::aedVoiceRes
int aedVoiceRes
Definition: AgoraBase.h:3515
agora::rtc::LiveTranscoding::audioSampleRate
AUDIO_SAMPLE_RATE_TYPE audioSampleRate
Definition: AgoraBase.h:3914
agora::rtc::ChannelMediaRelayConfiguration
Definition: AgoraBase.h:5548
agora::rtc::VirtualBackgroundSource::blur_degree
BACKGROUND_BLUR_DEGREE blur_degree
Definition: AgoraBase.h:4737
agora::rtc::UserInfo::uid
uid_t uid
Definition: AgoraBase.h:5941
agora::rtc::DataStreamConfig::ordered
bool ordered
Definition: AgoraBase.h:2035
agora::rtc::LiveStreamAdvancedFeature
Definition: AgoraBase.h:3694
agora::rtc::VirtualBackgroundSource::color
unsigned int color
Definition: AgoraBase.h:4724
agora::rtc::LastmileProbeOneWayResult
Definition: AgoraBase.h:4133
agora::rtc::VideoDenoiserOptions
Definition: AgoraBase.h:4609
agora::rtc::WatermarkRatio::widthRatio
float widthRatio
Definition: AgoraBase.h:2193
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_HIGH_QUALITY
@ VIDEO_DENOISER_LEVEL_HIGH_QUALITY
Definition: AgoraBase.h:4626
agora::rtc::VideoCanvas::cropArea
Rectangle cropArea
Definition: AgoraBase.h:4479
agora::rtc::AudioPcmDataInfo::samplesOut
size_t samplesOut
Definition: AgoraBase.h:1517
agora::rtc::VideoEncoderConfiguration::frameRate
int frameRate
Definition: AgoraBase.h:1861
agora::rtc::Rectangle::height
int height
Definition: AgoraBase.h:2161
agora::rtc::AudioPcmDataInfo::elapsedTimeMs
int64_t elapsedTimeMs
Definition: AgoraBase.h:1521
agora::rtc::WatermarkOptions::mode
WATERMARK_FIT_MODE mode
Definition: AgoraBase.h:2227
agora::rtc::EncodedAudioFrameInfo::sampleRateHz
int sampleRateHz
Definition: AgoraBase.h:1472
agora::UserInfo
Definition: AgoraBase.h:807
agora::rtc::RtcStats::txPacketLossRate
int txPacketLossRate
Definition: AgoraBase.h:2391
agora::rtc::VirtualBackgroundSource
Definition: AgoraBase.h:4675
agora::rtc::WlAccStats::frozenRatioPercent
unsigned short frozenRatioPercent
Definition: AgoraBase.h:4359
agora::rtc::LowlightEnhanceOptions::level
LOW_LIGHT_ENHANCE_LEVEL level
Definition: AgoraBase.h:4598
agora::rtc::VideoCanvas::view
view_t view
Definition: AgoraBase.h:4438
agora::rtc::TranscodingVideoStream::imageUrl
const char * imageUrl
Definition: AgoraBase.h:3979
agora::rtc::AudioEncodedFrameObserverConfig::postionType
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType
Definition: AgoraBase.h:5335
agora::rtc::IPacketObserver::onSendAudioPacket
virtual bool onSendAudioPacket(Packet &packet)=0
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:5773
agora::rtc::WlAccStats::lossRatePercent
unsigned short lossRatePercent
Definition: AgoraBase.h:4363
agora::rtc::VirtualBackgroundSource::BACKGROUND_IMG
@ BACKGROUND_IMG
Definition: AgoraBase.h:4690
agora::rtc::LiveTranscoding::watermark
RtcImage * watermark
Definition: AgoraBase.h:3896
agora::rtc::AudioVolumeInfo::vad
unsigned int vad
Definition: AgoraBase.h:3321
agora::rtc::ChannelMediaInfo
Definition: AgoraBase.h:5529
agora::UserInfo::hasVideo
bool hasVideo
Definition: AgoraBase.h:823
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MANUAL
@ LOW_LIGHT_ENHANCE_MANUAL
Definition: AgoraBase.h:4576
agora::VideoLayout::y
uint32_t y
Definition: AgoraBase.h:6373
agora::rtc::WlAccStats
Definition: AgoraBase.h:4351
agora::rtc::RecorderStreamInfo::RecorderStreamInfo
RecorderStreamInfo()
Definition: AgoraBase.h:6274
agora::rtc::LocalAudioStats::aecEstimatedDelay
int aecEstimatedDelay
Definition: AgoraBase.h:3511
agora::rtc::VideoCanvas::renderMode
media::base::RENDER_MODE_TYPE renderMode
Definition: AgoraBase.h:4447
agora::SpatialAudioParams::speaker_orientation
Optional< int > speaker_orientation
Definition: AgoraBase.h:6331
agora::rtc::LocalAudioStats::earMonitorDelay
int earMonitorDelay
Definition: AgoraBase.h:3507
agora::rtc::VideoTrackInfo::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:3262
agora::rtc::RtcStats::txKBitRate
unsigned short txKBitRate
Definition: AgoraBase.h:2271
agora::rtc::EncodedAudioFrameInfo::numberOfChannels
int numberOfChannels
Definition: AgoraBase.h:1482
agora::rtc::EncodedVideoFrameInfo::streamType
VIDEO_STREAM_TYPE streamType
Definition: AgoraBase.h:1703
agora::rtc::SimulcastConfig::STREAM_LAYER_6
@ STREAM_LAYER_6
Definition: AgoraBase.h:2110
agora::rtc::LocalAudioStats::audioPlayoutDelay
int audioPlayoutDelay
Definition: AgoraBase.h:3503
agora::SpatialAudioParams::speaker_attenuation
Optional< double > speaker_attenuation
Definition: AgoraBase.h:6343
agora::rtc::VideoTrackInfo::observationPosition
uint32_t observationPosition
Definition: AgoraBase.h:3266
agora::VideoLayout::strUid
user_id_t strUid
Definition: AgoraBase.h:6365
agora::rtc::LogUploadServerInfo
Definition: AgoraBase.h:6203
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL
VIDEO_DENOISER_LEVEL
Definition: AgoraBase.h:4621
agora::rtc::AudioTrackConfig::enableAudioProcessing
bool enableAudioProcessing
Definition: AgoraBase.h:4800
agora::rtc::VideoCanvas::sourceType
VIDEO_SOURCE_TYPE sourceType
Definition: AgoraBase.h:4467
agora::rtc::CodecCapInfo
Definition: AgoraBase.h:1827
agora::rtc::ScreenCaptureParameters::frameRate
int frameRate
Definition: AgoraBase.h:5134
agora::rtc::AudioRecordingConfiguration::recordingChannel
int recordingChannel
Definition: AgoraBase.h:5293
agora::rtc::RtcStats::firstVideoKeyFramePacketDurationAfterUnmute
int firstVideoKeyFramePacketDurationAfterUnmute
Definition: AgoraBase.h:2377
agora::rtc::LiveTranscoding::audioChannels
int audioChannels
Definition: AgoraBase.h:3925
agora::rtc::RtcImage::height
int height
Definition: AgoraBase.h:3671
agora::rtc::SimulcastStreamConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2063
agora::rtc::EncodedVideoFrameInfo::frameType
VIDEO_FRAME_TYPE frameType
Definition: AgoraBase.h:1682
agora::rtc::LastmileProbeConfig::probeDownlink
bool probeDownlink
Definition: AgoraBase.h:4100
agora::rtc::RtcStats::userCount
unsigned int userCount
Definition: AgoraBase.h:2299
agora::rtc::LocalTranscoderConfiguration::streamCount
unsigned int streamCount
Definition: AgoraBase.h:4038
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: AgoraBase.h:4541
agora::base::LicenseCallback
Definition: AgoraBase.h:6301
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:5755
agora::rtc::LiveTranscoding::videoCodecProfile
VIDEO_CODEC_PROFILE_TYPE videoCodecProfile
Definition: AgoraBase.h:3870
agora::rtc::SimulcastConfig::STREAM_LOW
@ STREAM_LOW
Definition: AgoraBase.h:2114
agora::rtc::VirtualBackgroundSource::BACKGROUND_SOURCE_TYPE
BACKGROUND_SOURCE_TYPE
Definition: AgoraBase.h:4678
agora::rtc::VideoRenderingTracingInfo::start2JoinChannel
int start2JoinChannel
Definition: AgoraBase.h:6140
agora::rtc::VideoCanvas::backgroundColor
uint32_t backgroundColor
Definition: AgoraBase.h:4442
agora::rtc::LocalAccessPointConfiguration::disableAut
bool disableAut
Definition: AgoraBase.h:6258
agora::rtc::ScreenCaptureParameters::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:5128
agora::rtc::VideoDimensions::width
int width
Definition: AgoraBase.h:1085
agora::rtc::TranscodingVideoStream::x
int x
Definition: AgoraBase.h:3987
agora::rtc::LiveTranscoding::lowLatency
bool lowLatency
Definition: AgoraBase.h:3861
agora::rtc::TranscodingVideoStream
Definition: AgoraBase.h:3965
agora::rtc::VirtualBackgroundSource::source
const char * source
Definition: AgoraBase.h:4732
agora::rtc::LogUploadServerInfo::serverPath
const char * serverPath
Definition: AgoraBase.h:6209
agora::rtc::SimulcastConfig::STREAM_LAYER_5
@ STREAM_LAYER_5
Definition: AgoraBase.h:2106
agora::VideoLayout::videoState
uint32_t videoState
Definition: AgoraBase.h:6386
agora::rtc::RtcStats
Definition: AgoraBase.h:2239
agora::rtc::VideoSubscriptionOptions::encodedFrameOnly
Optional< bool > encodedFrameOnly
Definition: AgoraBase.h:1593
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:4698
agora::rtc::WatermarkOptions::visibleInPreview
bool visibleInPreview
Definition: AgoraBase.h:2208
agora::rtc::LowlightEnhanceOptions
Definition: AgoraBase.h:4568
agora::rtc::TranscodingUser::zOrder
int zOrder
Definition: AgoraBase.h:3795
agora::rtc::LiveTranscoding::width
int width
Definition: AgoraBase.h:3837
agora::rtc::AudioPcmDataInfo
Definition: AgoraBase.h:1496
agora::rtc::RtcStats::rxBytes
unsigned int rxBytes
Definition: AgoraBase.h:2251
agora::rtc::RtcStats::rxVideoKBitRate
unsigned short rxVideoKBitRate
Definition: AgoraBase.h:2287
agora::rtc::VideoDenoiserOptions::mode
VIDEO_DENOISER_MODE mode
Definition: AgoraBase.h:4641
agora::rtc::RtcStats::rxAudioKBitRate
unsigned short rxAudioKBitRate
Definition: AgoraBase.h:2279
agora::rtc::LocalAudioStats::numChannels
int numChannels
Definition: AgoraBase.h:3479
agora::rtc::VideoRenderingTracingInfo::remoteJoined2SetView
int remoteJoined2SetView
Definition: AgoraBase.h:6160
agora::rtc::SimulcastConfig::STREAM_LAYER_COUNT_MAX
@ STREAM_LAYER_COUNT_MAX
Definition: AgoraBase.h:2118
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:2202
agora::rtc::VideoEncoderConfiguration::mirrorMode
VIDEO_MIRROR_MODE_TYPE mirrorMode
Definition: AgoraBase.h:1949
agora::rtc::LocalAudioStats
Definition: AgoraBase.h:3475
agora::rtc::RecorderStreamInfo
Definition: AgoraBase.h:6265
agora::rtc::LogUploadServerInfo::serverPort
int serverPort
Definition: AgoraBase.h:6212
agora::rtc::SimulcastConfig
Definition: AgoraBase.h:2082
agora::rtc::ScreenCaptureParameters::captureMouseCursor
bool captureMouseCursor
Definition: AgoraBase.h:5145
agora::rtc::RtcImage::y
int y
Definition: AgoraBase.h:3663
agora::rtc::FocalLengthInfo::focalLengthType
CAMERA_FOCAL_LENGTH_TYPE focalLengthType
Definition: AgoraBase.h:1843
agora::rtc::EncodedAudioFrameAdvancedSettings
Definition: AgoraBase.h:1428
agora::rtc::RtcStats::memoryAppUsageRatio
double memoryAppUsageRatio
Definition: AgoraBase.h:2327
agora::rtc::RtcStats::gatewayRtt
int gatewayRtt
Definition: AgoraBase.h:2322
agora::rtc::LastmileProbeConfig::expectedUplinkBitrate
unsigned int expectedUplinkBitrate
Definition: AgoraBase.h:4105
agora::rtc::VideoTrackInfo::isLocal
bool isLocal
Definition: AgoraBase.h:3236
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:1749
agora::rtc::VideoTrackInfo::channelId
const char * channelId
Definition: AgoraBase.h:3248
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:4589
agora::rtc::RtcStats::firstVideoKeyFramePacketDuration
int firstVideoKeyFramePacketDuration
Definition: AgoraBase.h:2357
agora::rtc::CodecCapInfo::codecLevels
CodecCapLevels codecLevels
Definition: AgoraBase.h:1833
agora::rtc::LiveTranscoding::advancedFeatureCount
unsigned int advancedFeatureCount
Definition: AgoraBase.h:3934
agora::rtc::CodecCapInfo::codecCapMask
int codecCapMask
Definition: AgoraBase.h:1831
agora::rtc::AudioRecordingConfiguration
Definition: AgoraBase.h:5256
agora::SpatialAudioParams::speaker_azimuth
Optional< double > speaker_azimuth
Definition: AgoraBase.h:6319
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_MODE
LOW_LIGHT_ENHANCE_MODE
Definition: AgoraBase.h:4572
agora::util::IContainer
Definition: AgoraBase.h:187
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_HIGH
@ BLUR_DEGREE_HIGH
Definition: AgoraBase.h:4709
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1081
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_LOW
@ BLUR_DEGREE_LOW
Definition: AgoraBase.h:4705
agora::rtc::VideoRenderingTracingInfo::joinSuccess2RemoteJoined
int joinSuccess2RemoteJoined
Definition: AgoraBase.h:6152
agora::rtc::TranscodingVideoStream::height
int height
Definition: AgoraBase.h:3999
agora::rtc::DataStreamConfig::syncWithAudio
bool syncWithAudio
Definition: AgoraBase.h:2027
agora::rtc::LowlightEnhanceOptions::mode
LOW_LIGHT_ENHANCE_MODE mode
Definition: AgoraBase.h:4594
agora::rtc::LiveTranscoding::userCount
unsigned int userCount
Definition: AgoraBase.h:3879
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:150
agora::rtc::CodecCapInfo::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1829
agora::rtc::AudioTrackConfig
Definition: AgoraBase.h:4788
agora::rtc::FocalLengthInfo::cameraDirection
int cameraDirection
Definition: AgoraBase.h:1841
agora::rtc::LocalAccessPointConfiguration::ipListSize
int ipListSize
Definition: AgoraBase.h:6236
agora::rtc::SimulcastConfig::STREAM_LAYER_4
@ STREAM_LAYER_4
Definition: AgoraBase.h:2102
agora::rtc::TranscodingVideoStream::width
int width
Definition: AgoraBase.h:3995
agora::rtc::TranscodingVideoStream::mirror
bool mirror
Definition: AgoraBase.h:4016
agora::rtc::SimulcastStreamConfig::kBitrate
int kBitrate
Definition: AgoraBase.h:2067
agora::rtc::RtcImage::alpha
double alpha
Definition: AgoraBase.h:3685
agora::rtc::TranscodingVideoStream::mediaPlayerId
int mediaPlayerId
Definition: AgoraBase.h:3983
agora::rtc::VideoCanvas::subviewUid
uid_t subviewUid
Definition: AgoraBase.h:4434
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:5766
agora::rtc::EncodedVideoFrameInfo::trackId
int trackId
Definition: AgoraBase.h:1690
agora::rtc::VirtualBackgroundSource::BLUR_DEGREE_MEDIUM
@ BLUR_DEGREE_MEDIUM
Definition: AgoraBase.h:4707
agora::rtc::ScreenCaptureParameters::excludeWindowList
view_t * excludeWindowList
Definition: AgoraBase.h:5158
agora::rtc::LocalAccessPointConfiguration::domainList
const char ** domainList
Definition: AgoraBase.h:6239
agora::rtc::SimulcastConfig::STREAM_LAYER_3
@ STREAM_LAYER_3
Definition: AgoraBase.h:2098
agora::rtc::IPacketObserver::onSendVideoPacket
virtual bool onSendVideoPacket(Packet &packet)=0
agora::rtc::AudioPcmDataInfo::samplesPerChannel
size_t samplesPerChannel
Definition: AgoraBase.h:1509
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:3225
agora::rtc::LocalTranscoderConfiguration::videoOutputConfiguration
VideoEncoderConfiguration videoOutputConfiguration
Definition: AgoraBase.h:4046
agora::rtc::SenderOptions::ccMode
TCcMode ccMode
Definition: AgoraBase.h:1232
agora::rtc::SimulcastConfig::StreamLayerConfig::dimensions
VideoDimensions dimensions
Definition: AgoraBase.h:2124
agora::rtc::VirtualBackgroundSource::BACKGROUND_COLOR
@ BACKGROUND_COLOR
Definition: AgoraBase.h:4686
agora::rtc::AudioPcmDataInfo::ntpTimeMs
int64_t ntpTimeMs
Definition: AgoraBase.h:1525
agora::rtc::LowlightEnhanceOptions::LOW_LIGHT_ENHANCE_AUTO
@ LOW_LIGHT_ENHANCE_AUTO
Definition: AgoraBase.h:4574
agora::rtc::RtcStats::firstVideoPacketDurationAfterUnmute
int firstVideoPacketDurationAfterUnmute
Definition: AgoraBase.h:2372
agora::rtc::LiveTranscoding::videoFramerate
int videoFramerate
Definition: AgoraBase.h:3854
agora::rtc::RtcStats::rxPacketLossRate
int rxPacketLossRate
Definition: AgoraBase.h:2395
agora::rtc::RtcStats::lastmileDelay
unsigned short lastmileDelay
Definition: AgoraBase.h:2295
agora::rtc::CodecCapLevels
Definition: AgoraBase.h:1819
agora::SpatialAudioParams
Definition: AgoraBase.h:6315
agora::rtc::ColorEnhanceOptions::skinProtectLevel
float skinProtectLevel
Definition: AgoraBase.h:4665
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_FAST
@ VIDEO_DENOISER_LEVEL_FAST
Definition: AgoraBase.h:4631
agora::rtc::VideoEncoderConfiguration::codecType
VIDEO_CODEC_TYPE codecType
Definition: AgoraBase.h:1853
agora::rtc::LastmileProbeResult::rtt
unsigned int rtt
Definition: AgoraBase.h:4171
agora::rtc::TranscodingVideoStream::y
int y
Definition: AgoraBase.h:3991
agora::rtc::RtcStats::packetsBeforeFirstKeyFramePacket
int packetsBeforeFirstKeyFramePacket
Definition: AgoraBase.h:2362
agora::rtc::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: AgoraBase.h:4539
agora::rtc::ChannelMediaRelayConfiguration::srcInfo
ChannelMediaInfo * srcInfo
Definition: AgoraBase.h:5561
agora::rtc::VideoEncoderConfiguration::orientationMode
ORIENTATION_MODE orientationMode
Definition: AgoraBase.h:1939
agora::rtc::WlAccStats::e2eDelayPercent
unsigned short e2eDelayPercent
Definition: AgoraBase.h:4355
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_LEVEL_STRENGTH
@ VIDEO_DENOISER_LEVEL_STRENGTH
Definition: AgoraBase.h:4637
agora::rtc::LiveStreamAdvancedFeature::opened
bool opened
Definition: AgoraBase.h:3712
agora::rtc::FocalLengthInfo
Definition: AgoraBase.h:1839
agora::rtc::DeviceInfo
Definition: AgoraBase.h:3335
agora::base::IEngineBase
Definition: AgoraBase.h:6281
agora::rtc::SenderOptions::targetBitrate
int targetBitrate
Definition: AgoraBase.h:1294
agora::rtc::AudioRecordingConfiguration::quality
AUDIO_RECORDING_QUALITY_TYPE quality
Definition: AgoraBase.h:5286
agora::util::IIterator
Definition: AgoraBase.h:178
agora::rtc::UserInfo::userAccount
char userAccount[MAX_USER_ACCOUNT_LENGTH]
Definition: AgoraBase.h:5945
agora::rtc::VideoRenderingTracingInfo
Definition: AgoraBase.h:6129
agora::rtc::LogUploadServerInfo::serverHttps
bool serverHttps
Definition: AgoraBase.h:6217
agora::rtc::VideoDenoiserOptions::VIDEO_DENOISER_MANUAL
@ VIDEO_DENOISER_MANUAL
Definition: AgoraBase.h:4616
agora::rtc::EncodedAudioFrameInfo::samplesPerChannel
int samplesPerChannel
Definition: AgoraBase.h:1478
agora::rtc::EncodedVideoFrameInfo::height
int height
Definition: AgoraBase.h:1672
agora::rtc::RtcStats::memoryAppUsageInKbytes
int memoryAppUsageInKbytes
Definition: AgoraBase.h:2337
agora::VideoLayout::uid
rtc::uid_t uid
Definition: AgoraBase.h:6361
agora::Optional< VIDEO_STREAM_TYPE >
agora::rtc::LocalAccessPointConfiguration::domainListSize
int domainListSize
Definition: AgoraBase.h:6242
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2484
agora::rtc::TranscodingUser::height
int height
Definition: AgoraBase.h:3787
agora::rtc::IPacketObserver::onReceiveAudioPacket
virtual bool onReceiveAudioPacket(Packet &packet)=0
agora::rtc::VideoCanvas
Definition: AgoraBase.h:4425
agora::rtc::LocalAudioStats::internalCodec
int internalCodec
Definition: AgoraBase.h:3491
agora::rtc::AudioRecordingConfiguration::fileRecordingType
AUDIO_FILE_RECORDING_TYPE fileRecordingType
Definition: AgoraBase.h:5281
agora::rtc::SegmentationProperty
Definition: AgoraBase.h:4742
agora::rtc::SimulcastConfig::StreamLayerConfig::enable
bool enable
Definition: AgoraBase.h:2132
agora::rtc::ChannelMediaInfo::uid
uid_t uid
Definition: AgoraBase.h:5532