9 #pragma once // NOLINT(build/header_guard)
17 #include "IAgoraParameter.h"
18 #include "AgoraMediaBase.h"
19 #include "AgoraRefPtr.h"
20 #include "AgoraOptional.h"
22 #define MAX_PATH_260 (260)
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>
34 #if defined(AGORARTC_EXPORT)
35 #define AGORA_API extern "C" __declspec(dllexport)
36 #define AGORA_CPP_API __declspec(dllexport)
38 #define AGORA_API extern "C" __declspec(dllimport)
39 #define AGORA_CPP_API __declspec(dllimport)
40 #endif // AGORARTC_EXPORT
42 #define AGORA_CALL __cdecl
46 #define AGORA_CPP_INTERNAL_API extern
48 #elif defined(__APPLE__)
50 #include <TargetConditionals.h>
52 #define AGORA_API extern "C" __attribute__((visibility("default")))
53 #define AGORA_CPP_API __attribute__((visibility("default")))
56 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
58 #elif defined(__ANDROID__) || defined(__linux__)
60 #define AGORA_API extern "C" __attribute__((visibility("default")))
61 #define AGORA_CPP_API __attribute__((visibility("default")))
66 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
68 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
70 #define AGORA_API extern "C"
78 #ifndef OPTIONAL_ENUM_SIZE_T
79 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
80 #define OPTIONAL_ENUM_SIZE_T enum : size_t
82 #define OPTIONAL_ENUM_SIZE_T enum
86 #ifndef OPTIONAL_NULLPTR
87 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
88 #define OPTIONAL_NULLPTR nullptr
90 #define OPTIONAL_NULLPTR NULL
94 #define INVALID_DISPLAY_ID (-2)
102 typedef T value_type;
103 typedef T* pointer_type;
106 explicit AutoPtr(pointer_type p = OPTIONAL_NULLPTR) : ptr_(p) {}
111 ptr_ = OPTIONAL_NULLPTR;
115 operator bool()
const {
return (ptr_ != OPTIONAL_NULLPTR); }
117 value_type& operator*()
const {
return *get(); }
119 pointer_type operator->()
const {
return get(); }
121 pointer_type get()
const {
return ptr_; }
123 pointer_type release() {
124 pointer_type ret = ptr_;
129 void reset(pointer_type ptr = OPTIONAL_NULLPTR) {
130 if (ptr != ptr_ && ptr_) {
137 template <
class C1,
class C2>
138 bool queryInterface(C1* c, C2 iid) {
139 pointer_type p = OPTIONAL_NULLPTR;
140 if (c && !c->queryInterface(iid,
reinterpret_cast<void**
>(&p))) {
144 return (p != OPTIONAL_NULLPTR);
157 typedef typename AutoPtr<T>::pointer_type pointer_type;
163 if (
this != &rhs) this->reset(rhs.clone());
166 pointer_type clone()
const {
167 if (!this->get())
return OPTIONAL_NULLPTR;
168 return this->get()->clone();
174 virtual bool empty()
const = 0;
175 virtual const char* c_str() = 0;
176 virtual const char* data() = 0;
177 virtual size_t length() = 0;
179 virtual void release() = 0;
186 virtual void* current() = 0;
187 virtual const void* const_current()
const = 0;
188 virtual bool next() = 0;
189 virtual void release() = 0;
196 virtual size_t size()
const = 0;
197 virtual void release() = 0;
206 typedef T value_type;
207 typedef value_type& reference;
208 typedef const value_type& const_reference;
209 typedef value_type* pointer;
210 typedef const value_type* const_pointer;
222 return p->current() == rhs.p->current();
224 return valid() == rhs.valid();
226 bool operator!=(
const AOutputIterator& rhs)
const {
return !this->operator==(rhs); }
227 reference operator*() {
return *
reinterpret_cast<pointer
>(p->current()); }
228 const_reference operator*()
const {
return *
reinterpret_cast<const_pointer
>(p->const_current()); }
229 bool valid()
const {
return p && p->current() != OPTIONAL_NULLPTR; }
238 typedef T value_type;
239 typedef value_type& reference;
240 typedef const value_type& const_reference;
241 typedef value_type* pointer;
242 typedef const value_type* const_pointer;
243 typedef size_t size_type;
248 AList() : container(OPTIONAL_NULLPTR), owner(
false) {}
249 AList(
IContainer* c,
bool take_ownership) : container(c), owner(take_ownership) {}
250 ~
AList() { reset(); }
251 void reset(
IContainer* c = OPTIONAL_NULLPTR,
bool take_ownership =
false) {
252 if (owner && container) container->release();
254 owner = take_ownership;
258 size_type size()
const {
return container ? container->size() : 0; }
259 bool empty()
const {
return size() == 0; }
267 enum CHANNEL_PROFILE_TYPE {
271 CHANNEL_PROFILE_COMMUNICATION = 0,
275 CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
280 CHANNEL_PROFILE_GAME __deprecated = 2,
286 CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
292 CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
303 CHANNEL_TYPE_STANDARD = 0,
307 CHANNEL_TYPE_LARGE_SCALE = 1,
313 enum WARN_CODE_TYPE {
318 WARN_INVALID_VIEW = 8,
323 WARN_INIT_VIDEO = 16,
333 WARN_NO_AVAILABLE_CHANNEL = 103,
339 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
344 WARN_LOOKUP_CHANNEL_REJECTED = 105,
350 WARN_OPEN_CHANNEL_TIMEOUT = 106,
355 WARN_OPEN_CHANNEL_REJECTED = 107,
361 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
365 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
369 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
373 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
377 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
381 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
385 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
388 WARN_CHANNEL_SOCKET_ERROR = 134,
392 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
396 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
400 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
404 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
408 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
412 WARN_ADM_RECORD_MALFUNCTION = 1021,
416 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
420 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
424 WARN_ADM_RECORD_IS_OCCUPIED = 1033,
432 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
436 WARN_APM_HOWLING = 1051,
440 WARN_ADM_GLITCH_STATE = 1052,
444 WARN_ADM_IMPROPER_SETTINGS = 1053,
448 WARN_ADM_POP_STATE = 1055,
452 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
457 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
465 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
477 enum ERROR_CODE_TYPE {
491 ERR_INVALID_ARGUMENT = 2,
507 ERR_NOT_SUPPORTED = 4,
520 ERR_BUFFER_TOO_SMALL = 6,
525 ERR_NOT_INITIALIZED = 7,
529 ERR_INVALID_STATE = 8,
534 ERR_NO_PERMISSION = 9,
556 ERR_BIND_SOCKET = 13,
571 ERR_JOIN_CHANNEL_REJECTED = 17,
581 ERR_LEAVE_CHANNEL_REJECTED = 18,
585 ERR_ALREADY_IN_USE = 19,
595 ERR_INIT_NET_ENGINE = 21,
600 ERR_RESOURCE_LIMITED = 22,
605 ERR_FUNC_IS_PROHIBITED = 23,
609 ERR_INVALID_APP_ID = 101,
614 ERR_INVALID_CHANNEL_NAME = 102,
619 ERR_NO_SERVER_RESOURCES = 103,
623 ERR_TOKEN_EXPIRED = 109,
630 ERR_INVALID_TOKEN = 110,
635 ERR_CONNECTION_INTERRUPTED = 111,
640 ERR_CONNECTION_LOST = 112,
644 ERR_NOT_IN_CHANNEL = 113,
648 ERR_SIZE_TOO_LARGE = 114,
653 ERR_BITRATE_LIMIT = 115,
658 ERR_TOO_MANY_DATA_STREAMS = 116,
662 ERR_STREAM_MESSAGE_TIMEOUT = 117,
666 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
671 ERR_DECRYPTION_FAILED = 120,
675 ERR_INVALID_USER_ID = 121,
680 ERR_DATASTREAM_DECRYPTION_FAILED = 122,
684 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
688 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
693 ERR_LICENSE_CREDENTIAL_INVALID = 131,
698 ERR_INVALID_USER_ACCOUNT = 134,
706 ERR_MODULE_NOT_FOUND = 157,
710 ERR_CERT_JSON_PART = 158,
711 ERR_CERT_JSON_INVAL = 159,
712 ERR_CERT_JSON_NOMEM = 160,
713 ERR_CERT_CUSTOM = 161,
714 ERR_CERT_CREDENTIAL = 162,
719 ERR_CERT_DUEDATE = 167,
720 ERR_CERT_REQUEST = 168,
726 ERR_PCMSEND_FORMAT = 200,
730 ERR_PCMSEND_BUFFEROVERFLOW = 201,
738 ERR_RDT_USER_NOT_EXIST = 250,
743 ERR_RDT_USER_NOT_READY = 251,
748 ERR_RDT_DATA_BLOCKED = 252,
753 ERR_RDT_CMD_EXCEED_LIMIT = 253,
758 ERR_RDT_DATA_EXCEED_LIMIT = 254,
763 ERR_RDT_ENCRYPTION = 255,
768 ERR_LOGIN_ALREADY_LOGIN = 428,
775 ERR_LOAD_MEDIA_ENGINE = 1001,
780 ERR_ADM_GENERAL_ERROR = 1005,
785 ERR_ADM_INIT_PLAYOUT = 1008,
789 ERR_ADM_START_PLAYOUT = 1009,
793 ERR_ADM_STOP_PLAYOUT = 1010,
798 ERR_ADM_INIT_RECORDING = 1011,
802 ERR_ADM_START_RECORDING = 1012,
806 ERR_ADM_STOP_RECORDING = 1013,
811 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
818 ERR_VIDEOEFFECT_ASSET_INVALID = 1700,
823 ERR_VIDEOEFFECT_SAVE_FAILED = 1701,
828 ERR_VIDEOEFFECT_ENGINE_INVALID = 1702,
833 ERR_VIDEOEFFECT_NODE_NOT_ACTIVE = 1704,
838 ERR_VIDEOEFFECT_INVALID_PARAM = 1705,
842 ERR_VIDEOEFFECT_NOT_SUPPORTED = 1706,
847 ERR_VIDEOEFFECT_INVALID_BUNDLE_PATH = 1707,
851 ERR_ADM_APPLICATION_LOOPBACK = 2007,
855 ERR_ADM_APPLICATION_LOOPBACK_STOPPED = 2008,
860 ERR_ADM_SYSTEM_LOOPBACK = 2009,
864 ERR_ADM_SYSTEM_LOOPBACK_STOPPED = 2010,
868 ERR_ADM_LOOPBACK_NO_PERMISSION = 2011,
872 ERR_ADM_LOOPBACK_SILENT_DETECTED = 2012,
876 ERR_ADM_LOOPBACK_SILENT_RECOVERED = 2013,
879 enum LICENSE_ERROR_TYPE {
883 LICENSE_ERR_INVALID = 1,
887 LICENSE_ERR_EXPIRE = 2,
891 LICENSE_ERR_MINUTES_EXCEED = 3,
895 LICENSE_ERR_LIMITED_PERIOD = 4,
899 LICENSE_ERR_DIFF_DEVICES = 5,
903 LICENSE_ERR_INTERNAL = 99,
909 enum AUDIO_SESSION_OPERATION_RESTRICTION {
913 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
917 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
921 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
926 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
931 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
934 typedef const char* user_id_t;
935 typedef void* view_t;
961 typedef util::AList<UserInfo> UserList;
969 enum USER_OFFLINE_REASON_TYPE {
973 USER_OFFLINE_QUIT = 0,
980 USER_OFFLINE_DROPPED = 1,
984 USER_OFFLINE_BECOME_AUDIENCE = 2,
990 enum INTERFACE_ID_TYPE {
994 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
998 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
1002 AGORA_IID_PARAMETER_ENGINE = 3,
1006 AGORA_IID_MEDIA_ENGINE = 4,
1007 AGORA_IID_AUDIO_ENGINE = 5,
1008 AGORA_IID_VIDEO_ENGINE = 6,
1009 AGORA_IID_RTC_CONNECTION = 7,
1013 AGORA_IID_SIGNALING_ENGINE = 8,
1014 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
1015 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
1016 AGORA_IID_STATE_SYNC = 13,
1017 AGORA_IID_META_SERVICE = 14,
1018 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
1019 AGORA_IID_H265_TRANSCODER = 16,
1030 QUALITY_UNKNOWN __deprecated = 0,
1034 QUALITY_EXCELLENT = 1,
1058 QUALITY_UNSUPPORTED = 7,
1062 QUALITY_DETECTING = 8,
1068 enum FIT_MODE_TYPE {
1086 enum VIDEO_ORIENTATION {
1090 VIDEO_ORIENTATION_0 = 0,
1094 VIDEO_ORIENTATION_90 = 90,
1098 VIDEO_ORIENTATION_180 = 180,
1102 VIDEO_ORIENTATION_270 = 270
1112 FRAME_RATE_FPS_1 = 1,
1116 FRAME_RATE_FPS_7 = 7,
1120 FRAME_RATE_FPS_10 = 10,
1124 FRAME_RATE_FPS_15 = 15,
1128 FRAME_RATE_FPS_24 = 24,
1132 FRAME_RATE_FPS_30 = 30,
1137 FRAME_RATE_FPS_60 = 60,
1141 FRAME_WIDTH_960 = 960,
1145 FRAME_HEIGHT_540 = 540,
1151 enum VIDEO_FRAME_TYPE {
1155 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1159 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1163 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1167 VIDEO_FRAME_TYPE_B_FRAME = 5,
1171 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1175 VIDEO_FRAME_TYPE_UNKNOW
1181 enum ORIENTATION_MODE {
1189 ORIENTATION_MODE_ADAPTIVE = 0,
1196 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1202 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1208 enum DEGRADATION_PREFERENCE {
1221 MAINTAIN_QUALITY = 0,
1227 MAINTAIN_FRAMERATE = 1,
1236 MAINTAIN_BALANCED = 2,
1242 MAINTAIN_RESOLUTION = 3,
1263 bool operator==(
const VideoDimensions& rhs)
const {
1264 return width == rhs.width &&
height == rhs.height;
1273 const int STANDARD_BITRATE = 0;
1282 const int COMPATIBLE_BITRATE = -1;
1287 const int DEFAULT_MIN_BITRATE = -1;
1292 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1297 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1301 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1305 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1309 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1315 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1320 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1324 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1328 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1332 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1336 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1342 enum VIDEO_CODEC_TYPE {
1347 VIDEO_CODEC_NONE = 0,
1351 VIDEO_CODEC_VP8 = 1,
1355 VIDEO_CODEC_H264 = 2,
1359 VIDEO_CODEC_H265 = 3,
1365 VIDEO_CODEC_GENERIC = 6,
1370 VIDEO_CODEC_GENERIC_H264 = 7,
1375 VIDEO_CODEC_AV1 = 12,
1379 VIDEO_CODEC_VP9 = 13,
1383 VIDEO_CODEC_GENERIC_JPEG = 20,
1392 enum CAMERA_FOCAL_LENGTH_TYPE {
1396 CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1400 CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1404 CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1408 CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1506 enum AUDIO_CODEC_TYPE {
1510 AUDIO_CODEC_OPUS = 1,
1515 AUDIO_CODEC_PCMA = 3,
1519 AUDIO_CODEC_PCMU = 4,
1523 AUDIO_CODEC_G722 = 5,
1530 AUDIO_CODEC_AACLC = 8,
1534 AUDIO_CODEC_HEAAC = 9,
1538 AUDIO_CODEC_JC1 = 10,
1542 AUDIO_CODEC_HEAAC2 = 11,
1546 AUDIO_CODEC_LPCNET = 12,
1550 AUDIO_CODEC_OPUSMC = 13,
1556 enum AUDIO_ENCODING_TYPE {
1561 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1566 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1571 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1576 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1581 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1586 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1591 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1596 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1601 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1606 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1611 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1617 enum WATERMARK_FIT_MODE {
1622 FIT_MODE_COVER_POSITION = 0,
1627 FIT_MODE_USE_IMAGE_RATIO = 1,
1655 :
codec(AUDIO_CODEC_AACLC),
1703 channelNum(rhs.channelNum),
1732 enum H264PacketizeMode {
1746 enum VIDEO_STREAM_TYPE {
1750 VIDEO_STREAM_HIGH = 0,
1754 VIDEO_STREAM_LOW = 1,
1759 VIDEO_STREAM_LAYER_1 = 4,
1764 VIDEO_STREAM_LAYER_2 = 5,
1769 VIDEO_STREAM_LAYER_3 = 6,
1774 VIDEO_STREAM_LAYER_4 = 7,
1779 VIDEO_STREAM_LAYER_5 = 8,
1784 VIDEO_STREAM_LAYER_6 = 9,
1811 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1815 MAX_USER_ACCOUNT_LENGTH = 256
1827 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1833 presentationMs(-1) {}
1846 presentationMs(rhs.presentationMs) {}
1849 if (
this == &rhs)
return *
this;
1860 presentationMs = rhs.presentationMs;
1910 int64_t presentationMs;
1916 enum COMPRESSION_PREFERENCE {
1921 PREFER_COMPRESSION_AUTO = -1,
1926 PREFER_LOW_LATENCY = 0,
1937 enum ENCODING_PREFERENCE {
1946 PREFER_SOFTWARE = 0,
1953 PREFER_HARDWARE = 1,
1982 COMPRESSION_PREFERENCE compression_preference,
1983 bool encode_alpha) :
1988 bool operator==(
const AdvanceOptions& rhs)
const {
1998 enum VIDEO_MIRROR_MODE_TYPE {
2005 VIDEO_MIRROR_MODE_AUTO = 0,
2009 VIDEO_MIRROR_MODE_ENABLED = 1,
2013 VIDEO_MIRROR_MODE_DISABLED = 2,
2016 #if defined(__APPLE__) && TARGET_OS_IOS
2020 enum CAMERA_FORMAT_TYPE {
2028 enum VIDEO_MODULE_TYPE {
2030 VIDEO_MODULE_CAPTURER = 0,
2032 VIDEO_MODULE_SOFTWARE_ENCODER = 1,
2034 VIDEO_MODULE_HARDWARE_ENCODER = 2,
2036 VIDEO_MODULE_SOFTWARE_DECODER = 3,
2038 VIDEO_MODULE_HARDWARE_DECODER = 4,
2040 VIDEO_MODULE_RENDERER = 5,
2043 enum HDR_CAPABILITY {
2045 HDR_CAPABILITY_UNKNOWN = -1,
2047 HDR_CAPABILITY_UNSUPPORTED = 0,
2049 HDR_CAPABILITY_SUPPORTED = 1,
2055 enum CODEC_CAP_MASK {
2059 CODEC_CAP_MASK_NONE = 0,
2064 CODEC_CAP_MASK_HW_DEC = 1 << 0,
2069 CODEC_CAP_MASK_HW_ENC = 1 << 1,
2074 CODEC_CAP_MASK_SW_DEC = 1 << 2,
2079 CODEC_CAP_MASK_SW_ENC = 1 << 3,
2212 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2222 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2232 VideoEncoderConfiguration()
2234 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2243 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2244 if (
this == &rhs)
return *
this;
2296 enum SIMULCAST_STREAM_MODE {
2302 AUTO_SIMULCAST_STREAM = -1,
2306 DISABLE_SIMULCAST_STREAM = 0,
2310 ENABLE_SIMULCAST_STREAM = 1,
2334 bool operator==(
const SimulcastStreamConfig& rhs)
const {
2530 mode(FIT_MODE_COVER_POSITION),
2539 enum WATERMARK_SOURCE_TYPE {
2718 enum MultipathMode {
2735 enum MultipathType {
3037 enum CLIENT_ROLE_TYPE {
3041 CLIENT_ROLE_BROADCASTER = 1,
3045 CLIENT_ROLE_AUDIENCE = 2,
3052 enum QUALITY_ADAPT_INDICATION {
3060 ADAPT_UP_BANDWIDTH = 1,
3064 ADAPT_DOWN_BANDWIDTH = 2,
3071 enum AUDIENCE_LATENCY_LEVEL_TYPE {
3075 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
3079 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
3098 enum EXPERIENCE_QUALITY_TYPE {
3102 EXPERIENCE_QUALITY_GOOD = 0,
3106 EXPERIENCE_QUALITY_BAD = 1,
3112 enum EXPERIENCE_POOR_REASON {
3116 EXPERIENCE_REASON_NONE = 0,
3120 REMOTE_NETWORK_QUALITY_POOR = 1,
3124 LOCAL_NETWORK_QUALITY_POOR = 2,
3128 WIRELESS_SIGNAL_POOR = 4,
3133 WIFI_BLUETOOTH_COEXIST = 8,
3139 enum AUDIO_AINS_MODE {
3144 AINS_MODE_BALANCED = 0,
3150 AINS_MODE_AGGRESSIVE = 1,
3156 AINS_MODE_ULTRALOWLATENCY = 2
3162 enum AUDIO_PROFILE_TYPE {
3172 AUDIO_PROFILE_DEFAULT = 0,
3176 AUDIO_PROFILE_SPEECH_STANDARD = 1,
3180 AUDIO_PROFILE_MUSIC_STANDARD = 2,
3186 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3190 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3196 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3200 AUDIO_PROFILE_IOT = 6,
3204 AUDIO_PROFILE_NUM = 7
3210 enum AUDIO_SCENARIO_TYPE {
3215 AUDIO_SCENARIO_DEFAULT = 0,
3219 AUDIO_SCENARIO_GAME_STREAMING = 3,
3224 AUDIO_SCENARIO_CHATROOM = 5,
3229 AUDIO_SCENARIO_CHORUS = 7,
3233 AUDIO_SCENARIO_MEETING = 8,
3238 AUDIO_SCENARIO_AI_SERVER = 9,
3243 AUDIO_SCENARIO_AI_CLIENT = 10,
3247 AUDIO_SCENARIO_NUM = 11,
3254 OPTIONAL_ENUM_SIZE_T{
3256 kMaxWidthInPixels = 3840,
3258 kMaxHeightInPixels = 2160,
3278 bool operator<(
const VideoFormat& fmt)
const {
3279 if (
height != fmt.height) {
3280 return height < fmt.height;
3281 }
else if (
width != fmt.width) {
3282 return width < fmt.width;
3284 return fps < fmt.fps;
3287 bool operator==(
const VideoFormat& fmt)
const {
3288 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
3290 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
3296 enum VIDEO_CONTENT_HINT {
3305 CONTENT_HINT_MOTION,
3310 CONTENT_HINT_DETAILS
3315 enum SCREEN_SCENARIO_TYPE {
3321 SCREEN_SCENARIO_DOCUMENT = 1,
3326 SCREEN_SCENARIO_GAMING = 2,
3331 SCREEN_SCENARIO_VIDEO = 3,
3337 SCREEN_SCENARIO_RDC = 4,
3343 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3347 APPLICATION_SCENARIO_GENERAL = 0,
3383 APPLICATION_SCENARIO_MEETING = 1,
3392 APPLICATION_SCENARIO_1V1 = 2,
3403 APPLICATION_SCENARIO_LIVESHOW = 3,
3409 enum VIDEO_QOE_PREFERENCE_TYPE {
3413 VIDEO_QOE_PREFERENCE_BALANCE = 1,
3417 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3421 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3425 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3432 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3437 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3441 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3445 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3449 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3460 enum CAMERA_STABILIZATION_MODE {
3464 CAMERA_STABILIZATION_MODE_OFF = -1,
3470 CAMERA_STABILIZATION_MODE_AUTO = 0,
3474 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3478 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3482 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3485 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3491 enum LOCAL_AUDIO_STREAM_STATE {
3495 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3499 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3503 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3507 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3513 enum LOCAL_AUDIO_STREAM_REASON {
3517 LOCAL_AUDIO_STREAM_REASON_OK = 0,
3522 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3526 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3533 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3537 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3541 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3547 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3553 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3559 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3564 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3569 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3575 enum LOCAL_VIDEO_STREAM_STATE {
3579 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3584 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3588 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3592 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3599 enum LOCAL_VIDEO_EVENT_TYPE {
3603 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_HIDDEN = 1,
3607 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 2,
3611 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_STOPPED_BY_USER = 3,
3615 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_SYSTEM_INTERNAL_ERROR = 4,
3619 LOCAL_VIDEO_EVENT_TYPE_CAMERA_FOCAL_LENGTH_APPLIED = 5,
3624 LOCAL_VIDEO_EVENT_TYPE_CAMERA_FOCAL_LENGTH_FALLBACK_TO_DEFAULT = 6,
3630 enum LOCAL_VIDEO_STREAM_REASON {
3634 LOCAL_VIDEO_STREAM_REASON_OK = 0,
3638 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3643 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3648 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3653 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3657 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3662 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3669 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3675 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3680 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3685 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3694 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3700 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3704 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3710 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3724 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3729 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3731 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3735 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3739 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3749 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3754 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3758 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3763 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3769 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3773 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3778 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3780 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3782 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3784 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3786 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_EXCLUDE_WINDOW_FAILED = 34,
3792 enum REMOTE_AUDIO_STATE {
3798 REMOTE_AUDIO_STATE_STOPPED =
3803 REMOTE_AUDIO_STATE_STARTING = 1,
3809 REMOTE_AUDIO_STATE_DECODING =
3815 REMOTE_AUDIO_STATE_FROZEN = 3,
3820 REMOTE_AUDIO_STATE_FAILED = 4,
3826 enum REMOTE_AUDIO_STATE_REASON {
3830 REMOTE_AUDIO_REASON_INTERNAL = 0,
3834 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3838 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3842 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3846 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3850 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3854 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3858 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3862 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3866 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3872 enum REMOTE_VIDEO_STATE {
3878 REMOTE_VIDEO_STATE_STOPPED = 0,
3882 REMOTE_VIDEO_STATE_STARTING = 1,
3889 REMOTE_VIDEO_STATE_DECODING = 2,
3894 REMOTE_VIDEO_STATE_FROZEN = 3,
3899 REMOTE_VIDEO_STATE_FAILED = 4,
3904 enum REMOTE_VIDEO_STATE_REASON {
3908 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3912 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3916 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3920 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3924 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3928 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3932 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3936 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3941 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3946 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3949 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3952 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3956 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3961 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3968 enum REMOTE_USER_STATE {
3972 USER_STATE_MUTE_AUDIO = (1 << 0),
3976 USER_STATE_MUTE_VIDEO = (1 << 1),
3980 USER_STATE_ENABLE_VIDEO = (1 << 4),
3984 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
4043 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
4047 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
4051 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
4055 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
4059 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
4063 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
4192 enum AUDIO_SAMPLE_RATE_TYPE {
4196 AUDIO_SAMPLE_RATE_32000 = 32000,
4200 AUDIO_SAMPLE_RATE_44100 = 44100,
4204 AUDIO_SAMPLE_RATE_48000 = 48000,
4209 enum VIDEO_CODEC_TYPE_FOR_STREAM {
4213 VIDEO_CODEC_H264_FOR_STREAM = 1,
4217 VIDEO_CODEC_H265_FOR_STREAM = 2,
4223 enum VIDEO_CODEC_PROFILE_TYPE {
4227 VIDEO_CODEC_PROFILE_BASELINE = 66,
4232 VIDEO_CODEC_PROFILE_MAIN = 77,
4237 VIDEO_CODEC_PROFILE_HIGH = 100,
4243 enum AUDIO_CODEC_PROFILE_TYPE {
4247 AUDIO_CODEC_PROFILE_LC_AAC = 0,
4251 AUDIO_CODEC_PROFILE_HE_AAC = 1,
4255 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
4305 enum RTMP_STREAM_PUBLISH_STATE {
4309 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4313 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4318 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4327 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4332 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4338 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4344 enum RTMP_STREAM_PUBLISH_REASON {
4348 RTMP_STREAM_PUBLISH_REASON_OK = 0,
4352 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4356 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4360 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4364 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4368 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4372 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4376 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4381 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4385 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4390 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4395 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4401 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4406 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
4410 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4415 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4420 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4426 enum RTMP_STREAMING_EVENT {
4430 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4435 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4439 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4443 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4528 enum CONNECTION_STATE_TYPE {
4536 CONNECTION_STATE_DISCONNECTED = 1,
4546 CONNECTION_STATE_CONNECTING = 2,
4554 CONNECTION_STATE_CONNECTED = 3,
4564 CONNECTION_STATE_RECONNECTING = 4,
4577 CONNECTION_STATE_FAILED = 5,
4930 enum VIDEO_TRANSCODER_ERROR {
4935 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4939 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4943 VT_ERR_INVALID_IMAGE_PATH = 3,
4947 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4951 VT_ERR_INVALID_LAYOUT = 5,
4955 VT_ERR_INTERNAL = 20
5005 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
5010 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
5075 enum LASTMILE_PROBE_RESULT_STATE {
5079 LASTMILE_PROBE_RESULT_COMPLETE = 1,
5085 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
5089 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
5139 enum CONNECTION_CHANGED_REASON_TYPE {
5143 CONNECTION_CHANGED_CONNECTING = 0,
5147 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
5151 CONNECTION_CHANGED_INTERRUPTED = 2,
5156 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
5162 CONNECTION_CHANGED_JOIN_FAILED = 4,
5166 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
5171 CONNECTION_CHANGED_INVALID_APP_ID = 6,
5181 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
5196 CONNECTION_CHANGED_INVALID_TOKEN = 8,
5201 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
5210 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
5214 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
5218 CONNECTION_CHANGED_RENEW_TOKEN = 12,
5223 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
5228 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
5232 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
5236 CONNECTION_CHANGED_LOST = 16,
5240 CONNECTION_CHANGED_ECHO_TEST = 17,
5244 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
5250 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
5254 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
5259 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
5263 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
5267 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
5271 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
5277 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
5284 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
5289 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
5295 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
5301 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
5311 NETWORK_TYPE_UNKNOWN = -1,
5315 NETWORK_TYPE_DISCONNECTED = 0,
5319 NETWORK_TYPE_LAN = 1,
5323 NETWORK_TYPE_WIFI = 2,
5327 NETWORK_TYPE_MOBILE_2G = 3,
5331 NETWORK_TYPE_MOBILE_3G = 4,
5335 NETWORK_TYPE_MOBILE_4G = 5,
5339 NETWORK_TYPE_MOBILE_5G = 6,
5345 enum VIDEO_VIEW_SETUP_MODE {
5349 VIDEO_VIEW_SETUP_REPLACE = 0,
5353 VIDEO_VIEW_SETUP_ADD = 1,
5360 VIDEO_VIEW_SETUP_REMOVE = 2,
5452 position(media::base::POSITION_POST_CAPTURER),
5455 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5467 position(media::base::POSITION_POST_CAPTURER),
5470 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5482 position(media::base::POSITION_POST_CAPTURER),
5485 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5498 position(media::base::POSITION_POST_CAPTURER),
5555 float redness,
float sharpness)
5918 :
mode(lowlightMode),
level(lowlightLevel) {}
5973 :
mode(denoiserMode),
level(denoiserLevel) {}
6101 source(OPTIONAL_NULLPTR),
6167 enum AUDIO_TRACK_TYPE {
6171 AUDIO_TRACK_INVALID = -1,
6177 AUDIO_TRACK_MIXABLE = 0,
6187 AUDIO_TRACK_DIRECT = 1,
6233 enum VOICE_BEAUTIFIER_PRESET {
6237 VOICE_BEAUTIFIER_OFF = 0x00000000,
6243 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
6249 CHAT_BEAUTIFIER_FRESH = 0x01010200,
6255 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
6265 SINGING_BEAUTIFIER = 0x01020100,
6269 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
6273 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
6277 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
6281 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
6285 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
6289 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
6293 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
6297 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
6308 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
6322 enum AUDIO_EFFECT_PRESET {
6326 AUDIO_EFFECT_OFF = 0x00000000,
6330 ROOM_ACOUSTICS_KTV = 0x02010100,
6334 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
6338 ROOM_ACOUSTICS_STUDIO = 0x02010300,
6342 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
6346 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
6350 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
6354 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
6362 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
6369 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
6374 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
6380 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
6386 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
6392 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
6398 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
6404 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
6408 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
6412 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
6416 STYLE_TRANSFORMATION_RNB = 0x02030100,
6420 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
6426 PITCH_CORRECTION = 0x02040100,
6436 enum VOICE_CONVERSION_PRESET {
6440 VOICE_CONVERSION_OFF = 0x00000000,
6445 VOICE_CHANGER_NEUTRAL = 0x03010100,
6450 VOICE_CHANGER_SWEET = 0x03010200,
6455 VOICE_CHANGER_SOLID = 0x03010300,
6460 VOICE_CHANGER_BASS = 0x03010400,
6463 VOICE_CHANGER_CARTOON = 0x03010500,
6466 VOICE_CHANGER_CHILDLIKE = 0x03010600,
6469 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6472 VOICE_CHANGER_MONSTER = 0x03010800,
6475 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6478 VOICE_CHANGER_GROOT = 0x03010A00,
6481 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6484 VOICE_CHANGER_IRON_LADY = 0x03010C00,
6487 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6490 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6493 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6500 enum HEADPHONE_EQUALIZER_PRESET {
6504 HEADPHONE_EQUALIZER_OFF = 0x00000000,
6508 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6512 HEADPHONE_EQUALIZER_INEAR = 0x04000002
6518 enum VOICE_AI_TUNER_TYPE {
6522 VOICE_AI_TUNER_MATURE_MALE,
6526 VOICE_AI_TUNER_FRESH_MALE,
6530 VOICE_AI_TUNER_ELEGANT_FEMALE,
6534 VOICE_AI_TUNER_SWEET_FEMALE,
6538 VOICE_AI_TUNER_WARM_MALE_SINGING,
6542 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6546 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6550 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6554 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6558 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6582 #if defined(__APPLE__) && !TARGET_OS_IOS
6586 bool excludeCurrentProcessAudio =
true;
6728 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
6740 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
6752 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
6764 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
6782 enum AUDIO_RECORDING_QUALITY_TYPE {
6787 AUDIO_RECORDING_QUALITY_LOW = 0,
6792 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6797 AUDIO_RECORDING_QUALITY_HIGH = 2,
6802 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6808 enum AUDIO_FILE_RECORDING_TYPE {
6812 AUDIO_FILE_RECORDING_MIC = 1,
6816 AUDIO_FILE_RECORDING_PLAYBACK = 2,
6820 AUDIO_FILE_RECORDING_MIXED = 3,
6826 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6830 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6834 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6838 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6898 quality(AUDIO_RECORDING_QUALITY_LOW),
6902 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6910 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
6911 AUDIO_FILE_RECORDING_TYPE type,
6912 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6920 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
6943 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
7010 AREA_CODE_CN = 0x00000001,
7014 AREA_CODE_NA = 0x00000002,
7018 AREA_CODE_EU = 0x00000004,
7022 AREA_CODE_AS = 0x00000008,
7026 AREA_CODE_JP = 0x00000010,
7030 AREA_CODE_IN = 0x00000020,
7034 AREA_CODE_GLOB = (0xFFFFFFFF)
7045 AREA_CODE_OC = 0x00000040,
7049 AREA_CODE_SA = 0x00000080,
7053 AREA_CODE_AF = 0x00000100,
7057 AREA_CODE_KR = 0x00000200,
7061 AREA_CODE_HKMC = 0x00000400,
7065 AREA_CODE_US = 0x00000800,
7069 AREA_CODE_RU = 0x00001000,
7073 AREA_CODE_OVS = 0xFFFFFFFE
7079 enum CHANNEL_MEDIA_RELAY_ERROR {
7087 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
7096 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
7100 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
7104 RELAY_ERROR_FAILED_JOIN_SRC = 4,
7108 RELAY_ERROR_FAILED_JOIN_DEST = 5,
7112 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
7116 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
7121 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
7125 RELAY_ERROR_INTERNAL_ERROR = 9,
7129 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
7133 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
7139 enum CHANNEL_MEDIA_RELAY_STATE {
7144 RELAY_STATE_IDLE = 0,
7148 RELAY_STATE_CONNECTING = 1,
7152 RELAY_STATE_RUNNING = 2,
7156 RELAY_STATE_FAILURE = 3,
7262 :
userId(OPTIONAL_NULLPTR),
7271 if (rhs.
userId != OPTIONAL_NULLPTR) {
7272 const size_t len = std::strlen(rhs.
userId);
7273 char* buf =
new char[len + 1];
7274 std::memcpy(buf, rhs.
userId, len);
7280 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
7281 if (
this == &rhs)
return *
this;
7282 userId = OPTIONAL_NULLPTR;
7286 if (rhs.userId != OPTIONAL_NULLPTR) {
7287 const size_t len = std::strlen(rhs.userId);
7288 char* buf =
new char[len + 1];
7289 std::memcpy(buf, rhs.userId, len);
7296 ~PeerDownlinkInfo() {
delete[]
userId; }
7339 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
7340 if (
this == &rhs)
return *
this;
7365 enum ENCRYPTION_MODE {
7444 const char* getEncryptionString()
const {
7447 return "aes-128-xts";
7449 return "aes-128-ecb";
7451 return "aes-256-xts";
7453 return "sm4-128-ecb";
7455 return "aes-128-gcm";
7457 return "aes-256-gcm";
7459 return "aes-128-gcm-2";
7461 return "aes-256-gcm-2";
7463 return "aes-128-gcm-2";
7465 return "aes-128-gcm-2";
7473 enum ENCRYPTION_ERROR_TYPE {
7477 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
7482 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
7486 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
7491 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
7495 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
7498 enum UPLOAD_ERROR_REASON {
7500 UPLOAD_NET_ERROR = 1,
7501 UPLOAD_SERVER_ERROR = 2,
7509 enum RENEW_TOKEN_ERROR_CODE {
7513 RENEW_TOKEN_SUCCESS = 0,
7518 RENEW_TOKEN_FAILURE = 1,
7523 RENEW_TOKEN_TOKEN_EXPIRED = 2,
7532 RENEW_TOKEN_INVALID_TOKEN = 3,
7538 RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
7543 RENEW_TOKEN_INCONSISTENT_APPID = 5,
7547 RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
7553 enum PERMISSION_TYPE {
7572 enum STREAM_SUBSCRIBE_STATE {
7592 SUB_STATE_NO_SUBSCRIBED = 1,
7596 SUB_STATE_SUBSCRIBING = 2,
7600 SUB_STATE_SUBSCRIBED = 3
7606 enum STREAM_PUBLISH_STATE {
7621 PUB_STATE_NO_PUBLISHED = 1,
7625 PUB_STATE_PUBLISHING = 2,
7629 PUB_STATE_PUBLISHED = 3
7682 :
view(OPTIONAL_NULLPTR),
7685 token(OPTIONAL_NULLPTR),
7709 enum EAR_MONITORING_FILTER_TYPE {
7713 EAR_MONITORING_FILTER_NONE = (1 << 0),
7718 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7722 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7728 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7734 enum THREAD_PRIORITY_TYPE {
7761 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7766 struct ScreenVideoParameters {
7770 VideoDimensions dimensions;
7782 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7784 ScreenVideoParameters() : dimensions(1280, 720) {}
7790 struct ScreenCaptureParameters2 {
7802 bool captureAudio =
false;
7807 ScreenAudioParameters audioParams;
7815 bool captureVideo =
true;
7820 ScreenVideoParameters videoParams;
7827 enum MEDIA_TRACE_EVENT {
7831 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7835 MEDIA_TRACE_EVENT_VIDEO_DECODED,
7926 enum CONFIG_FETCH_TYPE {
7930 CONFIG_FETCH_TYPE_INITIALIZE = 1,
7934 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7940 enum LOCAL_PROXY_MODE {
7945 ConnectivityFirst = 0,
8044 mode(ConnectivityFirst),
8051 enum RecorderStreamType {
8081 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
8090 enum RdtStreamType {
8147 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
8160 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
8161 return p != OPTIONAL_NULLPTR;
8168 virtual void onCertificateRequired() = 0;
8169 virtual void onLicenseRequest() = 0;
8170 virtual void onLicenseValidated() = 0;
8171 virtual void onLicenseError(
int result) = 0;
8305 strUid(OPTIONAL_NULLPTR),
8319 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
8326 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
8328 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
8352 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
8354 const char* certificate_buf,
8355 int certificate_len);
8395 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();