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 {
273 CHANNEL_PROFILE_COMMUNICATION = 0,
279 CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
284 CHANNEL_PROFILE_GAME __deprecated = 2,
290 CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
296 CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
302 enum WARN_CODE_TYPE {
307 WARN_INVALID_VIEW = 8,
312 WARN_INIT_VIDEO = 16,
322 WARN_NO_AVAILABLE_CHANNEL = 103,
328 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
333 WARN_LOOKUP_CHANNEL_REJECTED = 105,
339 WARN_OPEN_CHANNEL_TIMEOUT = 106,
344 WARN_OPEN_CHANNEL_REJECTED = 107,
350 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
354 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
358 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
362 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
366 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
370 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
374 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
377 WARN_CHANNEL_SOCKET_ERROR = 134,
381 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
385 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
389 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
393 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
397 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
401 WARN_ADM_RECORD_MALFUNCTION = 1021,
405 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
409 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
417 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
421 WARN_APM_HOWLING = 1051,
425 WARN_ADM_GLITCH_STATE = 1052,
429 WARN_ADM_IMPROPER_SETTINGS = 1053,
433 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
438 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
446 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
452 enum ERROR_CODE_TYPE {
466 ERR_INVALID_ARGUMENT = 2,
477 ERR_NOT_SUPPORTED = 4,
485 ERR_BUFFER_TOO_SMALL = 6,
489 ERR_NOT_INITIALIZED = 7,
493 ERR_INVALID_STATE = 8,
498 ERR_NO_PERMISSION = 9,
521 ERR_BIND_SOCKET = 13,
532 ERR_JOIN_CHANNEL_REJECTED = 17,
539 ERR_LEAVE_CHANNEL_REJECTED = 18,
543 ERR_ALREADY_IN_USE = 19,
553 ERR_INIT_NET_ENGINE = 21,
558 ERR_RESOURCE_LIMITED = 22,
564 ERR_INVALID_APP_ID = 101,
569 ERR_INVALID_CHANNEL_NAME = 102,
575 ERR_NO_SERVER_RESOURCES = 103,
588 ERR_TOKEN_EXPIRED = 109,
605 ERR_INVALID_TOKEN = 110,
610 ERR_CONNECTION_INTERRUPTED = 111,
615 ERR_CONNECTION_LOST = 112,
620 ERR_NOT_IN_CHANNEL = 113,
625 ERR_SIZE_TOO_LARGE = 114,
630 ERR_BITRATE_LIMIT = 115,
635 ERR_TOO_MANY_DATA_STREAMS = 116,
639 ERR_STREAM_MESSAGE_TIMEOUT = 117,
643 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
648 ERR_DECRYPTION_FAILED = 120,
652 ERR_INVALID_USER_ID = 121,
657 ERR_DATASTREAM_DECRYPTION_FAILED = 122,
661 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
667 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
672 ERR_LICENSE_CREDENTIAL_INVALID = 131,
677 ERR_INVALID_USER_ACCOUNT = 134,
684 ERR_MODULE_NOT_FOUND = 157,
688 ERR_CERT_JSON_PART = 158,
689 ERR_CERT_JSON_INVAL = 159,
690 ERR_CERT_JSON_NOMEM = 160,
691 ERR_CERT_CUSTOM = 161,
692 ERR_CERT_CREDENTIAL = 162,
697 ERR_CERT_DUEDATE = 167,
698 ERR_CERT_REQUEST = 168,
701 ERR_PCMSEND_FORMAT = 200,
702 ERR_PCMSEND_BUFFEROVERFLOW = 201,
706 ERR_LOGIN_ALREADY_LOGIN = 428,
713 ERR_LOAD_MEDIA_ENGINE = 1001,
719 ERR_ADM_GENERAL_ERROR = 1005,
724 ERR_ADM_INIT_PLAYOUT = 1008,
728 ERR_ADM_START_PLAYOUT = 1009,
732 ERR_ADM_STOP_PLAYOUT = 1010,
737 ERR_ADM_INIT_RECORDING = 1011,
741 ERR_ADM_START_RECORDING = 1012,
745 ERR_ADM_STOP_RECORDING = 1013,
749 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
752 enum LICENSE_ERROR_TYPE {
756 LICENSE_ERR_INVALID = 1,
760 LICENSE_ERR_EXPIRE = 2,
764 LICENSE_ERR_MINUTES_EXCEED = 3,
768 LICENSE_ERR_LIMITED_PERIOD = 4,
772 LICENSE_ERR_DIFF_DEVICES = 5,
776 LICENSE_ERR_INTERNAL = 99,
782 enum AUDIO_SESSION_OPERATION_RESTRICTION {
786 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
790 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
794 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
799 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
804 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
807 typedef const char* user_id_t;
808 typedef void* view_t;
834 typedef util::AList<UserInfo> UserList;
842 enum USER_OFFLINE_REASON_TYPE {
846 USER_OFFLINE_QUIT = 0,
852 USER_OFFLINE_DROPPED = 1,
856 USER_OFFLINE_BECOME_AUDIENCE = 2,
859 enum INTERFACE_ID_TYPE {
860 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
861 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
862 AGORA_IID_PARAMETER_ENGINE = 3,
863 AGORA_IID_MEDIA_ENGINE = 4,
864 AGORA_IID_AUDIO_ENGINE = 5,
865 AGORA_IID_VIDEO_ENGINE = 6,
866 AGORA_IID_RTC_CONNECTION = 7,
867 AGORA_IID_SIGNALING_ENGINE = 8,
868 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
869 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
870 AGORA_IID_STATE_SYNC = 13,
871 AGORA_IID_META_SERVICE = 14,
872 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
873 AGORA_IID_H265_TRANSCODER = 16,
884 QUALITY_UNKNOWN __deprecated = 0,
888 QUALITY_EXCELLENT = 1,
913 QUALITY_UNSUPPORTED = 7,
917 QUALITY_DETECTING = 8,
941 enum VIDEO_ORIENTATION {
945 VIDEO_ORIENTATION_0 = 0,
949 VIDEO_ORIENTATION_90 = 90,
953 VIDEO_ORIENTATION_180 = 180,
957 VIDEO_ORIENTATION_270 = 270
967 FRAME_RATE_FPS_1 = 1,
971 FRAME_RATE_FPS_7 = 7,
975 FRAME_RATE_FPS_10 = 10,
979 FRAME_RATE_FPS_15 = 15,
983 FRAME_RATE_FPS_24 = 24,
987 FRAME_RATE_FPS_30 = 30,
991 FRAME_RATE_FPS_60 = 60,
995 FRAME_WIDTH_960 = 960,
999 FRAME_HEIGHT_540 = 540,
1006 enum VIDEO_FRAME_TYPE {
1008 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1010 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1012 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1014 VIDEO_FRAME_TYPE_B_FRAME = 5,
1016 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1018 VIDEO_FRAME_TYPE_UNKNOW
1024 enum ORIENTATION_MODE {
1032 ORIENTATION_MODE_ADAPTIVE = 0,
1039 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1046 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1052 enum DEGRADATION_PREFERENCE {
1060 MAINTAIN_QUALITY = 0,
1066 MAINTAIN_FRAMERATE = 1,
1073 MAINTAIN_BALANCED = 2,
1077 MAINTAIN_RESOLUTION = 3,
1098 bool operator==(
const VideoDimensions& rhs)
const {
1099 return width == rhs.width &&
height == rhs.height;
1108 const int STANDARD_BITRATE = 0;
1117 const int COMPATIBLE_BITRATE = -1;
1122 const int DEFAULT_MIN_BITRATE = -1;
1127 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1132 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1133 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1134 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1135 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1141 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1143 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1145 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1147 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1149 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1151 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1157 enum VIDEO_CODEC_TYPE {
1158 VIDEO_CODEC_NONE = 0,
1162 VIDEO_CODEC_VP8 = 1,
1166 VIDEO_CODEC_H264 = 2,
1170 VIDEO_CODEC_H265 = 3,
1175 VIDEO_CODEC_GENERIC = 6,
1179 VIDEO_CODEC_GENERIC_H264 = 7,
1184 VIDEO_CODEC_AV1 = 12,
1188 VIDEO_CODEC_VP9 = 13,
1192 VIDEO_CODEC_GENERIC_JPEG = 20,
1198 enum CAMERA_FOCAL_LENGTH_TYPE {
1202 CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1206 CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1210 CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1214 CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1311 enum AUDIO_CODEC_TYPE {
1315 AUDIO_CODEC_OPUS = 1,
1320 AUDIO_CODEC_PCMA = 3,
1324 AUDIO_CODEC_PCMU = 4,
1328 AUDIO_CODEC_G722 = 5,
1335 AUDIO_CODEC_AACLC = 8,
1339 AUDIO_CODEC_HEAAC = 9,
1343 AUDIO_CODEC_JC1 = 10,
1347 AUDIO_CODEC_HEAAC2 = 11,
1351 AUDIO_CODEC_LPCNET = 12,
1355 AUDIO_CODEC_OPUSMC = 13,
1361 enum AUDIO_ENCODING_TYPE {
1366 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1371 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1376 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1381 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1386 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1391 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1396 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1401 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1406 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1411 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1416 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1422 enum WATERMARK_FIT_MODE {
1427 FIT_MODE_COVER_POSITION,
1432 FIT_MODE_USE_IMAGE_RATIO
1462 :
codec(AUDIO_CODEC_AACLC),
1511 channelNum(rhs.channelNum),
1540 enum H264PacketizeMode {
1554 enum VIDEO_STREAM_TYPE {
1558 VIDEO_STREAM_HIGH = 0,
1562 VIDEO_STREAM_LOW = 1,
1566 VIDEO_STREAM_LAYER_1 = 4,
1570 VIDEO_STREAM_LAYER_2 = 5,
1574 VIDEO_STREAM_LAYER_3 = 6,
1578 VIDEO_STREAM_LAYER_4 = 7,
1582 VIDEO_STREAM_LAYER_5 = 8,
1586 VIDEO_STREAM_LAYER_6 = 9,
1611 enum MAX_USER_ACCOUNT_LENGTH_TYPE
1615 MAX_USER_ACCOUNT_LENGTH = 256
1628 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1634 presentationMs(-1) {}
1648 presentationMs(rhs.presentationMs) {}
1651 if (
this == &rhs)
return *
this;
1663 presentationMs = rhs.presentationMs;
1716 int64_t presentationMs;
1722 enum COMPRESSION_PREFERENCE {
1736 enum ENCODING_PREFERENCE {
1744 PREFER_SOFTWARE = 0,
1748 PREFER_HARDWARE = 1,
1777 COMPRESSION_PREFERENCE compression_preference,
1778 bool encode_alpha) :
1783 bool operator==(
const AdvanceOptions& rhs)
const {
1794 enum VIDEO_MIRROR_MODE_TYPE {
1798 VIDEO_MIRROR_MODE_AUTO = 0,
1802 VIDEO_MIRROR_MODE_ENABLED = 1,
1806 VIDEO_MIRROR_MODE_DISABLED = 2,
1809 #if defined(__APPLE__) && TARGET_OS_IOS
1813 enum CAMERA_FORMAT_TYPE {
1822 enum CODEC_CAP_MASK {
1824 CODEC_CAP_MASK_NONE = 0,
1827 CODEC_CAP_MASK_HW_DEC = 1 << 0,
1830 CODEC_CAP_MASK_HW_ENC = 1 << 1,
1833 CODEC_CAP_MASK_SW_DEC = 1 << 2,
1836 CODEC_CAP_MASK_SW_ENC = 1 << 3,
1840 VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1841 VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1843 CodecCapLevels(): hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED), swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1986 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1996 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2006 VideoEncoderConfiguration()
2008 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2017 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2018 if (
this == &rhs)
return *
this;
2061 enum SIMULCAST_STREAM_MODE {
2065 AUTO_SIMULCAST_STREAM = -1,
2069 DISABLE_SIMULCAST_STREAM = 0,
2073 ENABLE_SIMULCAST_STREAM = 1,
2094 bool operator==(
const SimulcastStreamConfig& rhs)
const {
2253 mode(FIT_MODE_COVER_POSITION) {}
2455 enum CLIENT_ROLE_TYPE {
2459 CLIENT_ROLE_BROADCASTER = 1,
2463 CLIENT_ROLE_AUDIENCE = 2,
2469 enum QUALITY_ADAPT_INDICATION {
2477 ADAPT_UP_BANDWIDTH = 1,
2481 ADAPT_DOWN_BANDWIDTH = 2,
2488 enum AUDIENCE_LATENCY_LEVEL_TYPE
2493 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2497 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2517 enum EXPERIENCE_QUALITY_TYPE {
2519 EXPERIENCE_QUALITY_GOOD = 0,
2521 EXPERIENCE_QUALITY_BAD = 1,
2527 enum EXPERIENCE_POOR_REASON {
2531 EXPERIENCE_REASON_NONE = 0,
2535 REMOTE_NETWORK_QUALITY_POOR = 1,
2539 LOCAL_NETWORK_QUALITY_POOR = 2,
2543 WIRELESS_SIGNAL_POOR = 4,
2548 WIFI_BLUETOOTH_COEXIST = 8,
2554 enum AUDIO_AINS_MODE {
2558 AINS_MODE_BALANCED = 0,
2562 AINS_MODE_AGGRESSIVE = 1,
2566 AINS_MODE_ULTRALOWLATENCY = 2
2572 enum AUDIO_PROFILE_TYPE {
2581 AUDIO_PROFILE_DEFAULT = 0,
2585 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2589 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2596 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2600 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2607 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2611 AUDIO_PROFILE_IOT = 6,
2612 AUDIO_PROFILE_NUM = 7
2618 enum AUDIO_SCENARIO_TYPE {
2623 AUDIO_SCENARIO_DEFAULT = 0,
2629 AUDIO_SCENARIO_GAME_STREAMING = 3,
2635 AUDIO_SCENARIO_CHATROOM = 5,
2639 AUDIO_SCENARIO_CHORUS = 7,
2643 AUDIO_SCENARIO_MEETING = 8,
2647 AUDIO_SCENARIO_NUM = 9,
2654 OPTIONAL_ENUM_SIZE_T {
2656 kMaxWidthInPixels = 3840,
2658 kMaxHeightInPixels = 2160,
2678 bool operator<(
const VideoFormat& fmt)
const {
2679 if (
height != fmt.height) {
2680 return height < fmt.height;
2681 }
else if (
width != fmt.width) {
2682 return width < fmt.width;
2684 return fps < fmt.fps;
2687 bool operator==(
const VideoFormat& fmt)
const {
2688 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
2690 bool operator!=(
const VideoFormat& fmt)
const {
2691 return !operator==(fmt);
2698 enum VIDEO_CONTENT_HINT {
2709 CONTENT_HINT_MOTION,
2715 CONTENT_HINT_DETAILS
2720 enum SCREEN_SCENARIO_TYPE {
2726 SCREEN_SCENARIO_DOCUMENT = 1,
2731 SCREEN_SCENARIO_GAMING = 2,
2736 SCREEN_SCENARIO_VIDEO = 3,
2742 SCREEN_SCENARIO_RDC = 4,
2749 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2753 APPLICATION_SCENARIO_GENERAL = 0,
2757 APPLICATION_SCENARIO_MEETING = 1,
2761 APPLICATION_SCENARIO_1V1 = 2,
2767 enum VIDEO_QOE_PREFERENCE_TYPE {
2771 VIDEO_QOE_PREFERENCE_BALANCE = 1,
2775 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2779 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2783 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2790 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2794 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2797 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2800 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2803 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2806 enum CAMERA_STABILIZATION_MODE {
2809 CAMERA_STABILIZATION_MODE_OFF = -1,
2812 CAMERA_STABILIZATION_MODE_AUTO = 0,
2815 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2818 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2821 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2824 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2830 enum LOCAL_AUDIO_STREAM_STATE {
2834 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2838 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2842 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2846 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2852 enum LOCAL_AUDIO_STREAM_REASON {
2856 LOCAL_AUDIO_STREAM_REASON_OK = 0,
2860 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2864 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2871 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2875 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2879 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2882 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2885 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2889 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2892 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2895 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2900 enum LOCAL_VIDEO_STREAM_STATE {
2904 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2909 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2913 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2917 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2923 enum LOCAL_VIDEO_STREAM_REASON {
2927 LOCAL_VIDEO_STREAM_REASON_OK = 0,
2931 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
2936 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2941 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
2947 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
2951 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
2956 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
2963 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2969 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
2974 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
2979 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
2984 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
2989 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
2993 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
2999 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3014 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3016 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3018 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3020 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3022 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3028 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3030 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3032 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3034 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3042 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3044 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3046 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3053 enum REMOTE_AUDIO_STATE
3060 REMOTE_AUDIO_STATE_STOPPED = 0,
3064 REMOTE_AUDIO_STATE_STARTING = 1,
3070 REMOTE_AUDIO_STATE_DECODING = 2,
3075 REMOTE_AUDIO_STATE_FROZEN = 3,
3080 REMOTE_AUDIO_STATE_FAILED = 4,
3086 enum REMOTE_AUDIO_STATE_REASON
3091 REMOTE_AUDIO_REASON_INTERNAL = 0,
3095 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3099 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3104 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3109 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3114 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3119 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3123 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3127 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3131 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3137 enum REMOTE_VIDEO_STATE {
3143 REMOTE_VIDEO_STATE_STOPPED = 0,
3147 REMOTE_VIDEO_STATE_STARTING = 1,
3153 REMOTE_VIDEO_STATE_DECODING = 2,
3157 REMOTE_VIDEO_STATE_FROZEN = 3,
3161 REMOTE_VIDEO_STATE_FAILED = 4,
3166 enum REMOTE_VIDEO_STATE_REASON {
3170 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3174 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3178 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3182 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3186 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3190 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3194 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3198 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3202 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3206 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3209 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3212 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3215 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3219 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3226 enum REMOTE_USER_STATE {
3230 USER_STATE_MUTE_AUDIO = (1 << 0),
3234 USER_STATE_MUTE_VIDEO = (1 << 1),
3238 USER_STATE_ENABLE_VIDEO = (1 << 4),
3242 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3296 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3300 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3304 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3308 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3312 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3316 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3365 bool isLowLatencyAudioSupported;
3367 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3430 enum AUDIO_SAMPLE_RATE_TYPE {
3434 AUDIO_SAMPLE_RATE_32000 = 32000,
3438 AUDIO_SAMPLE_RATE_44100 = 44100,
3442 AUDIO_SAMPLE_RATE_48000 = 48000,
3447 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3451 VIDEO_CODEC_H264_FOR_STREAM = 1,
3455 VIDEO_CODEC_H265_FOR_STREAM = 2,
3461 enum VIDEO_CODEC_PROFILE_TYPE {
3465 VIDEO_CODEC_PROFILE_BASELINE = 66,
3469 VIDEO_CODEC_PROFILE_MAIN = 77,
3473 VIDEO_CODEC_PROFILE_HIGH = 100,
3480 enum AUDIO_CODEC_PROFILE_TYPE {
3484 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3488 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3492 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3542 enum RTMP_STREAM_PUBLISH_STATE {
3546 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3550 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3554 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3560 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3564 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3568 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3574 enum RTMP_STREAM_PUBLISH_REASON {
3578 RTMP_STREAM_PUBLISH_REASON_OK = 0,
3583 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3587 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3591 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3595 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3599 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3603 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3607 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3611 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3615 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3619 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3623 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER = 11,
3627 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM = 13,
3631 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
3635 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID = 15,
3637 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3641 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3645 enum RTMP_STREAMING_EVENT {
3649 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3653 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3657 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3661 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3734 enum CONNECTION_STATE_TYPE
3741 CONNECTION_STATE_DISCONNECTED = 1,
3750 CONNECTION_STATE_CONNECTING = 2,
3758 CONNECTION_STATE_CONNECTED = 3,
3768 CONNECTION_STATE_RECONNECTING = 4,
3777 CONNECTION_STATE_FAILED = 5,
4073 enum VIDEO_TRANSCODER_ERROR {
4077 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4081 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4085 VT_ERR_INVALID_IMAGE_PATH = 3,
4089 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4093 VT_ERR_INVALID_LAYOUT = 5,
4097 VT_ERR_INTERNAL = 20
4131 enum LASTMILE_PROBE_RESULT_STATE {
4135 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4139 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4143 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4190 :
state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
4197 enum CONNECTION_CHANGED_REASON_TYPE
4202 CONNECTION_CHANGED_CONNECTING = 0,
4206 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4210 CONNECTION_CHANGED_INTERRUPTED = 2,
4214 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4218 CONNECTION_CHANGED_JOIN_FAILED = 4,
4222 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4226 CONNECTION_CHANGED_INVALID_APP_ID = 6,
4230 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4236 CONNECTION_CHANGED_INVALID_TOKEN = 8,
4240 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4246 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4250 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4254 CONNECTION_CHANGED_RENEW_TOKEN = 12,
4258 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4262 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4266 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4270 CONNECTION_CHANGED_LOST = 16,
4274 CONNECTION_CHANGED_ECHO_TEST = 17,
4278 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4282 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4286 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4291 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4295 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4299 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4303 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4309 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4313 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4317 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4322 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4327 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4333 enum WLACC_MESSAGE_REASON {
4337 WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4341 WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4347 enum WLACC_SUGGEST_ACTION {
4351 WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4355 WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4359 WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4363 WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4391 NETWORK_TYPE_UNKNOWN = -1,
4395 NETWORK_TYPE_DISCONNECTED = 0,
4399 NETWORK_TYPE_LAN = 1,
4403 NETWORK_TYPE_WIFI = 2,
4407 NETWORK_TYPE_MOBILE_2G = 3,
4411 NETWORK_TYPE_MOBILE_3G = 4,
4415 NETWORK_TYPE_MOBILE_4G = 5,
4419 NETWORK_TYPE_MOBILE_5G = 6,
4425 enum VIDEO_VIEW_SETUP_MODE {
4429 VIDEO_VIEW_SETUP_REPLACE = 0,
4433 VIDEO_VIEW_SETUP_ADD = 1,
4437 VIDEO_VIEW_SETUP_REMOVE = 2,
4515 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4520 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4525 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u, uid_t subu)
4824 enum SEG_MODEL_TYPE {
4830 SEG_MODEL_TYPE modelType;
4832 float greenCapacity;
4840 enum AUDIO_TRACK_TYPE {
4844 AUDIO_TRACK_INVALID = -1,
4851 AUDIO_TRACK_MIXABLE = 0,
4857 AUDIO_TRACK_DIRECT = 1,
4894 enum VOICE_BEAUTIFIER_PRESET {
4897 VOICE_BEAUTIFIER_OFF = 0x00000000,
4903 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4909 CHAT_BEAUTIFIER_FRESH = 0x01010200,
4915 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4924 SINGING_BEAUTIFIER = 0x01020100,
4927 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4930 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4933 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4936 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4939 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4942 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4945 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4948 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4958 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4981 enum AUDIO_EFFECT_PRESET {
4984 AUDIO_EFFECT_OFF = 0x00000000,
4987 ROOM_ACOUSTICS_KTV = 0x02010100,
4990 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4993 ROOM_ACOUSTICS_STUDIO = 0x02010300,
4996 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5003 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5006 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5009 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5021 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5032 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5040 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5047 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5053 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5059 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5066 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5072 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5076 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5079 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5086 STYLE_TRANSFORMATION_RNB = 0x02030100,
5093 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5098 PITCH_CORRECTION = 0x02040100,
5107 enum VOICE_CONVERSION_PRESET {
5110 VOICE_CONVERSION_OFF = 0x00000000,
5113 VOICE_CHANGER_NEUTRAL = 0x03010100,
5116 VOICE_CHANGER_SWEET = 0x03010200,
5119 VOICE_CHANGER_SOLID = 0x03010300,
5122 VOICE_CHANGER_BASS = 0x03010400,
5125 VOICE_CHANGER_CARTOON = 0x03010500,
5128 VOICE_CHANGER_CHILDLIKE = 0x03010600,
5131 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5134 VOICE_CHANGER_MONSTER = 0x03010800,
5137 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5140 VOICE_CHANGER_GROOT = 0x03010A00,
5143 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5146 VOICE_CHANGER_IRON_LADY = 0x03010C00,
5149 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5152 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5155 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5161 enum HEADPHONE_EQUALIZER_PRESET {
5164 HEADPHONE_EQUALIZER_OFF = 0x00000000,
5167 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5170 HEADPHONE_EQUALIZER_INEAR = 0x04000002
5175 enum VOICE_AI_TUNER_TYPE {
5178 VOICE_AI_TUNER_MATURE_MALE,
5181 VOICE_AI_TUNER_FRESH_MALE,
5184 VOICE_AI_TUNER_ELEGANT_FEMALE,
5187 VOICE_AI_TUNER_SWEET_FEMALE,
5190 VOICE_AI_TUNER_WARM_MALE_SINGING,
5193 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
5196 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
5199 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
5202 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
5205 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
5279 :
dimensions(1920, 1080),
frameRate(5),
bitrate(STANDARD_BITRATE),
captureMouseCursor(true),
windowFocus(false),
excludeWindowList(OPTIONAL_NULLPTR),
excludeWindowCount(0),
highLightWidth(0),
highLightColor(0),
enableHighLight(false) {}
5282 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
5283 :
dimensions(width, height),
frameRate(f),
bitrate(b),
captureMouseCursor(true),
windowFocus(false),
excludeWindowList(OPTIONAL_NULLPTR),
excludeWindowCount(0),
highLightWidth(0),
highLightColor(0),
enableHighLight(false){}
5284 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
5285 :
dimensions(width, height),
frameRate(f),
bitrate(b),
captureMouseCursor(cur),
windowFocus(fcs),
excludeWindowList(OPTIONAL_NULLPTR),
excludeWindowCount(0),
highLightWidth(0),
highLightColor(0),
enableHighLight(false) {}
5286 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t *ex,
int cnt)
5287 :
dimensions(width, height),
frameRate(f),
bitrate(b),
captureMouseCursor(true),
windowFocus(false),
excludeWindowList(ex),
excludeWindowCount(cnt),
highLightWidth(0),
highLightColor(0),
enableHighLight(false) {}
5288 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t *ex,
int cnt)
5289 :
dimensions(width, height),
frameRate(f),
bitrate(b),
captureMouseCursor(cur),
windowFocus(fcs),
excludeWindowList(ex),
excludeWindowCount(cnt),
highLightWidth(0),
highLightColor(0),
enableHighLight(false) {}
5295 enum AUDIO_RECORDING_QUALITY_TYPE {
5299 AUDIO_RECORDING_QUALITY_LOW = 0,
5303 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5307 AUDIO_RECORDING_QUALITY_HIGH = 2,
5311 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5317 enum AUDIO_FILE_RECORDING_TYPE {
5321 AUDIO_FILE_RECORDING_MIC = 1,
5325 AUDIO_FILE_RECORDING_PLAYBACK = 2,
5329 AUDIO_FILE_RECORDING_MIXED = 3,
5335 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5339 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5343 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5347 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
5397 quality(AUDIO_RECORDING_QUALITY_LOW),
5408 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
5416 AudioRecordingConfiguration(
const AudioRecordingConfiguration &rhs)
5439 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5493 AREA_CODE_CN = 0x00000001,
5497 AREA_CODE_NA = 0x00000002,
5501 AREA_CODE_EU = 0x00000004,
5505 AREA_CODE_AS = 0x00000008,
5509 AREA_CODE_JP = 0x00000010,
5513 AREA_CODE_IN = 0x00000020,
5517 AREA_CODE_GLOB = (0xFFFFFFFF)
5528 AREA_CODE_OC = 0x00000040,
5532 AREA_CODE_SA = 0x00000080,
5536 AREA_CODE_AF = 0x00000100,
5540 AREA_CODE_KR = 0x00000200,
5544 AREA_CODE_HKMC = 0x00000400,
5548 AREA_CODE_US = 0x00000800,
5552 AREA_CODE_RU = 0x00001000,
5556 AREA_CODE_OVS = 0xFFFFFFFE
5562 enum CHANNEL_MEDIA_RELAY_ERROR {
5568 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5574 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
5577 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
5580 RELAY_ERROR_FAILED_JOIN_SRC = 4,
5583 RELAY_ERROR_FAILED_JOIN_DEST = 5,
5586 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
5589 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
5593 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
5596 RELAY_ERROR_INTERNAL_ERROR = 9,
5599 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
5602 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
5608 enum CHANNEL_MEDIA_RELAY_STATE {
5612 RELAY_STATE_IDLE = 0,
5615 RELAY_STATE_CONNECTING = 1,
5618 RELAY_STATE_RUNNING = 2,
5621 RELAY_STATE_FAILURE = 3,
5719 :
userId(OPTIONAL_NULLPTR),
5728 if (rhs.
userId != OPTIONAL_NULLPTR) {
5729 const int len = std::strlen(rhs.
userId);
5730 char* buf =
new char[len + 1];
5731 std::memcpy(buf, rhs.
userId, len);
5737 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
5738 if (
this == &rhs)
return *
this;
5739 userId = OPTIONAL_NULLPTR;
5743 if (rhs.userId != OPTIONAL_NULLPTR) {
5744 const int len = std::strlen(rhs.userId);
5745 char* buf =
new char[len + 1];
5746 std::memcpy(buf, rhs.userId, len);
5753 ~PeerDownlinkInfo() {
delete[]
userId; }
5796 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
5797 if (
this == &rhs)
return *
this;
5820 enum ENCRYPTION_MODE {
5872 bool datastreamEncryptionEnabled;
5877 datastreamEncryptionEnabled(false)
5883 const char* getEncryptionString()
const {
5886 return "aes-128-xts";
5888 return "aes-128-ecb";
5890 return "aes-256-xts";
5892 return "sm4-128-ecb";
5894 return "aes-128-gcm";
5896 return "aes-256-gcm";
5898 return "aes-128-gcm-2";
5900 return "aes-256-gcm-2";
5902 return "aes-128-gcm-2";
5904 return "aes-128-gcm-2";
5911 enum ENCRYPTION_ERROR_TYPE {
5915 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5919 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5923 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5927 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
5931 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
5934 enum UPLOAD_ERROR_REASON
5937 UPLOAD_NET_ERROR = 1,
5938 UPLOAD_SERVER_ERROR = 2,
5943 enum PERMISSION_TYPE {
5959 enum STREAM_SUBSCRIBE_STATE {
5976 SUB_STATE_NO_SUBSCRIBED = 1,
5980 SUB_STATE_SUBSCRIBING = 2,
5984 SUB_STATE_SUBSCRIBED = 3
5990 enum STREAM_PUBLISH_STATE {
6002 PUB_STATE_NO_PUBLISHED = 1,
6006 PUB_STATE_PUBLISHING = 2,
6010 PUB_STATE_PUBLISHED = 3
6021 const char* channelId;
6022 int intervalInSeconds;
6025 : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
6028 : view(OPTIONAL_NULLPTR), enableAudio(
true), enableVideo(
true), token(OPTIONAL_NULLPTR), channelId(OPTIONAL_NULLPTR), intervalInSeconds(2) {}
6052 enum EAR_MONITORING_FILTER_TYPE {
6056 EAR_MONITORING_FILTER_NONE = (1<<0),
6061 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
6065 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2),
6070 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1<<15),
6076 enum THREAD_PRIORITY_TYPE {
6103 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
6108 struct ScreenVideoParameters {
6135 VideoDimensions dimensions;
6150 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6152 ScreenVideoParameters() : dimensions(1280, 720) {}
6158 struct ScreenAudioParameters {
6162 int sampleRate = 16000;
6171 int captureSignalVolume = 100;
6177 struct ScreenCaptureParameters2 {
6187 bool captureAudio =
false;
6191 ScreenAudioParameters audioParams;
6201 bool captureVideo =
true;
6205 ScreenVideoParameters videoParams;
6212 enum MEDIA_TRACE_EVENT {
6216 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6220 MEDIA_TRACE_EVENT_VIDEO_DECODED,
6278 enum CONFIG_FETCH_TYPE {
6282 CONFIG_FETCH_TYPE_INITIALIZE = 1,
6286 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6291 enum LOCAL_PROXY_MODE {
6294 ConnectivityFirst = 0,
6363 const char* channelId;
6380 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
6393 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
6394 return p != OPTIONAL_NULLPTR;
6401 virtual void onCertificateRequired() = 0;
6402 virtual void onLicenseRequest() = 0;
6403 virtual void onLicenseValidated() = 0;
6404 virtual void onLicenseError(
int result) = 0;
6494 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
6501 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
6503 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
6527 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char *credential_buf,
int credential_len,
6528 const char *certificate_buf,
int certificate_len);
6571 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();