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,
298 enum WARN_CODE_TYPE {
303 WARN_INVALID_VIEW = 8,
308 WARN_INIT_VIDEO = 16,
318 WARN_NO_AVAILABLE_CHANNEL = 103,
324 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
329 WARN_LOOKUP_CHANNEL_REJECTED = 105,
335 WARN_OPEN_CHANNEL_TIMEOUT = 106,
340 WARN_OPEN_CHANNEL_REJECTED = 107,
346 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
350 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
354 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
358 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
362 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
366 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
370 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
373 WARN_CHANNEL_SOCKET_ERROR = 134,
377 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
381 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
385 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
389 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
393 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
397 WARN_ADM_RECORD_MALFUNCTION = 1021,
401 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
405 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
413 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
417 WARN_APM_HOWLING = 1051,
421 WARN_ADM_GLITCH_STATE = 1052,
425 WARN_ADM_IMPROPER_SETTINGS = 1053,
429 WARN_ADM_POP_STATE = 1055,
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,
458 enum ERROR_CODE_TYPE {
472 ERR_INVALID_ARGUMENT = 2,
488 ERR_NOT_SUPPORTED = 4,
501 ERR_BUFFER_TOO_SMALL = 6,
506 ERR_NOT_INITIALIZED = 7,
510 ERR_INVALID_STATE = 8,
515 ERR_NO_PERMISSION = 9,
537 ERR_BIND_SOCKET = 13,
552 ERR_JOIN_CHANNEL_REJECTED = 17,
562 ERR_LEAVE_CHANNEL_REJECTED = 18,
566 ERR_ALREADY_IN_USE = 19,
576 ERR_INIT_NET_ENGINE = 21,
581 ERR_RESOURCE_LIMITED = 22,
586 ERR_FUNC_IS_PROHIBITED = 23,
590 ERR_INVALID_APP_ID = 101,
595 ERR_INVALID_CHANNEL_NAME = 102,
600 ERR_NO_SERVER_RESOURCES = 103,
604 ERR_TOKEN_EXPIRED = 109,
611 ERR_INVALID_TOKEN = 110,
616 ERR_CONNECTION_INTERRUPTED = 111,
621 ERR_CONNECTION_LOST = 112,
625 ERR_NOT_IN_CHANNEL = 113,
629 ERR_SIZE_TOO_LARGE = 114,
633 ERR_BITRATE_LIMIT = 115,
638 ERR_TOO_MANY_DATA_STREAMS = 116,
642 ERR_STREAM_MESSAGE_TIMEOUT = 117,
646 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
651 ERR_DECRYPTION_FAILED = 120,
655 ERR_INVALID_USER_ID = 121,
660 ERR_DATASTREAM_DECRYPTION_FAILED = 122,
664 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
668 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
673 ERR_LICENSE_CREDENTIAL_INVALID = 131,
678 ERR_INVALID_USER_ACCOUNT = 134,
686 ERR_MODULE_NOT_FOUND = 157,
690 ERR_CERT_JSON_PART = 158,
691 ERR_CERT_JSON_INVAL = 159,
692 ERR_CERT_JSON_NOMEM = 160,
693 ERR_CERT_CUSTOM = 161,
694 ERR_CERT_CREDENTIAL = 162,
699 ERR_CERT_DUEDATE = 167,
700 ERR_CERT_REQUEST = 168,
706 ERR_PCMSEND_FORMAT = 200,
710 ERR_PCMSEND_BUFFEROVERFLOW = 201,
718 ERR_RDT_USER_NOT_EXIST = 250,
723 ERR_RDT_USER_NOT_READY = 251,
728 ERR_RDT_DATA_BLOCKED = 252,
733 ERR_RDT_CMD_EXCEED_LIMIT = 253,
738 ERR_RDT_DATA_EXCEED_LIMIT = 254,
743 ERR_RDT_ENCRYPTION = 255,
748 ERR_LOGIN_ALREADY_LOGIN = 428,
755 ERR_LOAD_MEDIA_ENGINE = 1001,
760 ERR_ADM_GENERAL_ERROR = 1005,
765 ERR_ADM_INIT_PLAYOUT = 1008,
769 ERR_ADM_START_PLAYOUT = 1009,
773 ERR_ADM_STOP_PLAYOUT = 1010,
778 ERR_ADM_INIT_RECORDING = 1011,
782 ERR_ADM_START_RECORDING = 1012,
786 ERR_ADM_STOP_RECORDING = 1013,
791 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
794 enum LICENSE_ERROR_TYPE {
798 LICENSE_ERR_INVALID = 1,
802 LICENSE_ERR_EXPIRE = 2,
806 LICENSE_ERR_MINUTES_EXCEED = 3,
810 LICENSE_ERR_LIMITED_PERIOD = 4,
814 LICENSE_ERR_DIFF_DEVICES = 5,
818 LICENSE_ERR_INTERNAL = 99,
824 enum AUDIO_SESSION_OPERATION_RESTRICTION {
828 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
832 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
836 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
841 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
846 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
849 typedef const char* user_id_t;
850 typedef void* view_t;
876 typedef util::AList<UserInfo> UserList;
884 enum USER_OFFLINE_REASON_TYPE {
888 USER_OFFLINE_QUIT = 0,
895 USER_OFFLINE_DROPPED = 1,
899 USER_OFFLINE_BECOME_AUDIENCE = 2,
905 enum INTERFACE_ID_TYPE {
909 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
913 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
917 AGORA_IID_PARAMETER_ENGINE = 3,
921 AGORA_IID_MEDIA_ENGINE = 4,
922 AGORA_IID_AUDIO_ENGINE = 5,
923 AGORA_IID_VIDEO_ENGINE = 6,
924 AGORA_IID_RTC_CONNECTION = 7,
928 AGORA_IID_SIGNALING_ENGINE = 8,
929 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
930 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
931 AGORA_IID_STATE_SYNC = 13,
932 AGORA_IID_META_SERVICE = 14,
933 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
934 AGORA_IID_H265_TRANSCODER = 16,
945 QUALITY_UNKNOWN __deprecated = 0,
949 QUALITY_EXCELLENT = 1,
973 QUALITY_UNSUPPORTED = 7,
977 QUALITY_DETECTING = 8,
1001 enum VIDEO_ORIENTATION {
1005 VIDEO_ORIENTATION_0 = 0,
1009 VIDEO_ORIENTATION_90 = 90,
1013 VIDEO_ORIENTATION_180 = 180,
1017 VIDEO_ORIENTATION_270 = 270
1027 FRAME_RATE_FPS_1 = 1,
1031 FRAME_RATE_FPS_7 = 7,
1035 FRAME_RATE_FPS_10 = 10,
1039 FRAME_RATE_FPS_15 = 15,
1043 FRAME_RATE_FPS_24 = 24,
1047 FRAME_RATE_FPS_30 = 30,
1052 FRAME_RATE_FPS_60 = 60,
1056 FRAME_WIDTH_960 = 960,
1060 FRAME_HEIGHT_540 = 540,
1066 enum VIDEO_FRAME_TYPE {
1070 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1074 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1078 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1082 VIDEO_FRAME_TYPE_B_FRAME = 5,
1086 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1090 VIDEO_FRAME_TYPE_UNKNOW
1096 enum ORIENTATION_MODE {
1104 ORIENTATION_MODE_ADAPTIVE = 0,
1111 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1117 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1123 enum DEGRADATION_PREFERENCE {
1135 MAINTAIN_QUALITY = 0,
1141 MAINTAIN_FRAMERATE = 1,
1150 MAINTAIN_BALANCED = 2,
1156 MAINTAIN_RESOLUTION = 3,
1177 bool operator==(
const VideoDimensions& rhs)
const {
1178 return width == rhs.width &&
height == rhs.height;
1187 const int STANDARD_BITRATE = 0;
1196 const int COMPATIBLE_BITRATE = -1;
1201 const int DEFAULT_MIN_BITRATE = -1;
1206 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1211 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1215 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1219 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1223 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1229 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1234 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1238 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1242 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1246 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1250 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1256 enum VIDEO_CODEC_TYPE {
1261 VIDEO_CODEC_NONE = 0,
1265 VIDEO_CODEC_VP8 = 1,
1269 VIDEO_CODEC_H264 = 2,
1273 VIDEO_CODEC_H265 = 3,
1279 VIDEO_CODEC_GENERIC = 6,
1284 VIDEO_CODEC_GENERIC_H264 = 7,
1289 VIDEO_CODEC_AV1 = 12,
1293 VIDEO_CODEC_VP9 = 13,
1297 VIDEO_CODEC_GENERIC_JPEG = 20,
1306 enum CAMERA_FOCAL_LENGTH_TYPE {
1310 CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1314 CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1318 CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1322 CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1420 enum AUDIO_CODEC_TYPE {
1424 AUDIO_CODEC_OPUS = 1,
1429 AUDIO_CODEC_PCMA = 3,
1433 AUDIO_CODEC_PCMU = 4,
1437 AUDIO_CODEC_G722 = 5,
1444 AUDIO_CODEC_AACLC = 8,
1448 AUDIO_CODEC_HEAAC = 9,
1452 AUDIO_CODEC_JC1 = 10,
1456 AUDIO_CODEC_HEAAC2 = 11,
1460 AUDIO_CODEC_LPCNET = 12,
1464 AUDIO_CODEC_OPUSMC = 13,
1470 enum AUDIO_ENCODING_TYPE {
1475 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1480 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1485 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1490 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1495 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1500 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1505 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1510 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1515 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1520 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1525 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1531 enum WATERMARK_FIT_MODE {
1536 FIT_MODE_COVER_POSITION = 0,
1541 FIT_MODE_USE_IMAGE_RATIO = 1,
1569 :
codec(AUDIO_CODEC_AACLC),
1617 channelNum(rhs.channelNum),
1646 enum H264PacketizeMode {
1660 enum VIDEO_STREAM_TYPE {
1664 VIDEO_STREAM_HIGH = 0,
1668 VIDEO_STREAM_LOW = 1,
1673 VIDEO_STREAM_LAYER_1 = 4,
1678 VIDEO_STREAM_LAYER_2 = 5,
1683 VIDEO_STREAM_LAYER_3 = 6,
1688 VIDEO_STREAM_LAYER_4 = 7,
1693 VIDEO_STREAM_LAYER_5 = 8,
1698 VIDEO_STREAM_LAYER_6 = 9,
1725 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1729 MAX_USER_ACCOUNT_LENGTH = 256
1741 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1747 presentationMs(-1) {}
1760 presentationMs(rhs.presentationMs) {}
1763 if (
this == &rhs)
return *
this;
1774 presentationMs = rhs.presentationMs;
1824 int64_t presentationMs;
1830 enum COMPRESSION_PREFERENCE {
1835 PREFER_COMPRESSION_AUTO = -1,
1840 PREFER_LOW_LATENCY = 0,
1851 enum ENCODING_PREFERENCE {
1860 PREFER_SOFTWARE = 0,
1867 PREFER_HARDWARE = 1,
1896 COMPRESSION_PREFERENCE compression_preference,
1897 bool encode_alpha) :
1902 bool operator==(
const AdvanceOptions& rhs)
const {
1912 enum VIDEO_MIRROR_MODE_TYPE {
1919 VIDEO_MIRROR_MODE_AUTO = 0,
1923 VIDEO_MIRROR_MODE_ENABLED = 1,
1927 VIDEO_MIRROR_MODE_DISABLED = 2,
1930 #if defined(__APPLE__) && TARGET_OS_IOS
1934 enum CAMERA_FORMAT_TYPE {
1942 enum VIDEO_MODULE_TYPE {
1944 VIDEO_MODULE_CAPTURER = 0,
1946 VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1948 VIDEO_MODULE_HARDWARE_ENCODER = 2,
1950 VIDEO_MODULE_SOFTWARE_DECODER = 3,
1952 VIDEO_MODULE_HARDWARE_DECODER = 4,
1954 VIDEO_MODULE_RENDERER = 5,
1957 enum HDR_CAPABILITY {
1959 HDR_CAPABILITY_UNKNOWN = -1,
1961 HDR_CAPABILITY_UNSUPPORTED = 0,
1963 HDR_CAPABILITY_SUPPORTED = 1,
1969 enum CODEC_CAP_MASK {
1973 CODEC_CAP_MASK_NONE = 0,
1978 CODEC_CAP_MASK_HW_DEC = 1 << 0,
1983 CODEC_CAP_MASK_HW_ENC = 1 << 1,
1988 CODEC_CAP_MASK_SW_DEC = 1 << 2,
1993 CODEC_CAP_MASK_SW_ENC = 1 << 3,
2126 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2136 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2146 VideoEncoderConfiguration()
2148 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2157 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2158 if (
this == &rhs)
return *
this;
2210 enum SIMULCAST_STREAM_MODE {
2216 AUTO_SIMULCAST_STREAM = -1,
2220 DISABLE_SIMULCAST_STREAM = 0,
2224 ENABLE_SIMULCAST_STREAM = 1,
2248 bool operator==(
const SimulcastStreamConfig& rhs)
const {
2443 mode(FIT_MODE_COVER_POSITION),
2452 enum WATERMARK_SOURCE_TYPE {
2631 enum MultipathMode {
2648 enum MultipathType {
2950 enum CLIENT_ROLE_TYPE {
2954 CLIENT_ROLE_BROADCASTER = 1,
2958 CLIENT_ROLE_AUDIENCE = 2,
2965 enum QUALITY_ADAPT_INDICATION {
2973 ADAPT_UP_BANDWIDTH = 1,
2977 ADAPT_DOWN_BANDWIDTH = 2,
2984 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2988 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2992 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
3011 enum EXPERIENCE_QUALITY_TYPE {
3015 EXPERIENCE_QUALITY_GOOD = 0,
3019 EXPERIENCE_QUALITY_BAD = 1,
3025 enum EXPERIENCE_POOR_REASON {
3029 EXPERIENCE_REASON_NONE = 0,
3033 REMOTE_NETWORK_QUALITY_POOR = 1,
3037 LOCAL_NETWORK_QUALITY_POOR = 2,
3041 WIRELESS_SIGNAL_POOR = 4,
3046 WIFI_BLUETOOTH_COEXIST = 8,
3052 enum AUDIO_AINS_MODE {
3057 AINS_MODE_BALANCED = 0,
3063 AINS_MODE_AGGRESSIVE = 1,
3069 AINS_MODE_ULTRALOWLATENCY = 2
3075 enum AUDIO_PROFILE_TYPE {
3085 AUDIO_PROFILE_DEFAULT = 0,
3089 AUDIO_PROFILE_SPEECH_STANDARD = 1,
3093 AUDIO_PROFILE_MUSIC_STANDARD = 2,
3099 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3103 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3109 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3113 AUDIO_PROFILE_IOT = 6,
3117 AUDIO_PROFILE_NUM = 7
3123 enum AUDIO_SCENARIO_TYPE {
3128 AUDIO_SCENARIO_DEFAULT = 0,
3132 AUDIO_SCENARIO_GAME_STREAMING = 3,
3137 AUDIO_SCENARIO_CHATROOM = 5,
3142 AUDIO_SCENARIO_CHORUS = 7,
3146 AUDIO_SCENARIO_MEETING = 8,
3151 AUDIO_SCENARIO_AI_SERVER = 9,
3156 AUDIO_SCENARIO_AI_CLIENT = 10,
3160 AUDIO_SCENARIO_NUM = 11,
3167 OPTIONAL_ENUM_SIZE_T{
3169 kMaxWidthInPixels = 3840,
3171 kMaxHeightInPixels = 2160,
3191 bool operator<(
const VideoFormat& fmt)
const {
3192 if (
height != fmt.height) {
3193 return height < fmt.height;
3194 }
else if (
width != fmt.width) {
3195 return width < fmt.width;
3197 return fps < fmt.fps;
3200 bool operator==(
const VideoFormat& fmt)
const {
3201 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
3203 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
3209 enum VIDEO_CONTENT_HINT {
3218 CONTENT_HINT_MOTION,
3223 CONTENT_HINT_DETAILS
3228 enum SCREEN_SCENARIO_TYPE {
3234 SCREEN_SCENARIO_DOCUMENT = 1,
3239 SCREEN_SCENARIO_GAMING = 2,
3244 SCREEN_SCENARIO_VIDEO = 3,
3250 SCREEN_SCENARIO_RDC = 4,
3256 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3260 APPLICATION_SCENARIO_GENERAL = 0,
3296 APPLICATION_SCENARIO_MEETING = 1,
3305 APPLICATION_SCENARIO_1V1 = 2,
3316 APPLICATION_SCENARIO_LIVESHOW = 3,
3322 enum VIDEO_QOE_PREFERENCE_TYPE {
3326 VIDEO_QOE_PREFERENCE_BALANCE = 1,
3330 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3334 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3338 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3345 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3350 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3354 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3358 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3362 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3373 enum CAMERA_STABILIZATION_MODE {
3377 CAMERA_STABILIZATION_MODE_OFF = -1,
3383 CAMERA_STABILIZATION_MODE_AUTO = 0,
3387 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3391 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3395 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3398 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3404 enum LOCAL_AUDIO_STREAM_STATE {
3408 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3412 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3416 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3420 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3426 enum LOCAL_AUDIO_STREAM_REASON {
3430 LOCAL_AUDIO_STREAM_REASON_OK = 0,
3435 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3439 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3446 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3450 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3454 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3460 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3466 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3472 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3477 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3482 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3488 enum LOCAL_VIDEO_STREAM_STATE {
3492 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3497 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3501 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3505 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3512 enum LOCAL_VIDEO_EVENT_TYPE {
3516 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_HIDDEN = 1,
3520 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 2,
3524 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_STOPPED_BY_USER = 3,
3528 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_SYSTEM_INTERNAL_ERROR = 4,
3534 enum LOCAL_VIDEO_STREAM_REASON {
3538 LOCAL_VIDEO_STREAM_REASON_OK = 0,
3542 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3547 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3552 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3557 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3561 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3566 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3573 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3579 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3584 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3589 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3598 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3604 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3608 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3614 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3628 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3633 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3635 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3639 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3643 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3653 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3658 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3662 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3667 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3673 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3677 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3682 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3684 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3686 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3688 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3690 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_EXCLUDE_WINDOW_FAILED = 34,
3696 enum REMOTE_AUDIO_STATE {
3702 REMOTE_AUDIO_STATE_STOPPED =
3707 REMOTE_AUDIO_STATE_STARTING = 1,
3713 REMOTE_AUDIO_STATE_DECODING =
3719 REMOTE_AUDIO_STATE_FROZEN = 3,
3724 REMOTE_AUDIO_STATE_FAILED = 4,
3730 enum REMOTE_AUDIO_STATE_REASON {
3734 REMOTE_AUDIO_REASON_INTERNAL = 0,
3738 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3742 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3746 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3750 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3754 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3758 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3762 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3766 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3770 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3776 enum REMOTE_VIDEO_STATE {
3782 REMOTE_VIDEO_STATE_STOPPED = 0,
3786 REMOTE_VIDEO_STATE_STARTING = 1,
3793 REMOTE_VIDEO_STATE_DECODING = 2,
3798 REMOTE_VIDEO_STATE_FROZEN = 3,
3803 REMOTE_VIDEO_STATE_FAILED = 4,
3808 enum REMOTE_VIDEO_STATE_REASON {
3812 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3816 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3820 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3824 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3828 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3832 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3836 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3840 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3845 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3850 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3853 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3856 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3860 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3865 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3872 enum REMOTE_USER_STATE {
3876 USER_STATE_MUTE_AUDIO = (1 << 0),
3880 USER_STATE_MUTE_VIDEO = (1 << 1),
3884 USER_STATE_ENABLE_VIDEO = (1 << 4),
3888 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3947 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3951 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3955 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3959 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3963 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3967 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
4096 enum AUDIO_SAMPLE_RATE_TYPE {
4100 AUDIO_SAMPLE_RATE_32000 = 32000,
4104 AUDIO_SAMPLE_RATE_44100 = 44100,
4108 AUDIO_SAMPLE_RATE_48000 = 48000,
4113 enum VIDEO_CODEC_TYPE_FOR_STREAM {
4117 VIDEO_CODEC_H264_FOR_STREAM = 1,
4121 VIDEO_CODEC_H265_FOR_STREAM = 2,
4127 enum VIDEO_CODEC_PROFILE_TYPE {
4131 VIDEO_CODEC_PROFILE_BASELINE = 66,
4136 VIDEO_CODEC_PROFILE_MAIN = 77,
4141 VIDEO_CODEC_PROFILE_HIGH = 100,
4147 enum AUDIO_CODEC_PROFILE_TYPE {
4151 AUDIO_CODEC_PROFILE_LC_AAC = 0,
4155 AUDIO_CODEC_PROFILE_HE_AAC = 1,
4159 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
4209 enum RTMP_STREAM_PUBLISH_STATE {
4213 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4217 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4222 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4231 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4236 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4242 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4248 enum RTMP_STREAM_PUBLISH_REASON {
4252 RTMP_STREAM_PUBLISH_REASON_OK = 0,
4256 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4260 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4264 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4268 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4272 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4276 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4280 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4285 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4289 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4294 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4299 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4305 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4310 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
4314 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4319 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4324 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4330 enum RTMP_STREAMING_EVENT {
4334 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4339 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4343 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4347 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4432 enum CONNECTION_STATE_TYPE {
4440 CONNECTION_STATE_DISCONNECTED = 1,
4450 CONNECTION_STATE_CONNECTING = 2,
4458 CONNECTION_STATE_CONNECTED = 3,
4468 CONNECTION_STATE_RECONNECTING = 4,
4478 CONNECTION_STATE_FAILED = 5,
4831 enum VIDEO_TRANSCODER_ERROR {
4836 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4840 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4844 VT_ERR_INVALID_IMAGE_PATH = 3,
4848 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4852 VT_ERR_INVALID_LAYOUT = 5,
4856 VT_ERR_INTERNAL = 20
4906 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
4911 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
4976 enum LASTMILE_PROBE_RESULT_STATE {
4980 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4986 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4990 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
5040 enum CONNECTION_CHANGED_REASON_TYPE {
5044 CONNECTION_CHANGED_CONNECTING = 0,
5048 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
5052 CONNECTION_CHANGED_INTERRUPTED = 2,
5057 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
5063 CONNECTION_CHANGED_JOIN_FAILED = 4,
5067 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
5072 CONNECTION_CHANGED_INVALID_APP_ID = 6,
5082 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
5097 CONNECTION_CHANGED_INVALID_TOKEN = 8,
5102 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
5111 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
5115 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
5119 CONNECTION_CHANGED_RENEW_TOKEN = 12,
5124 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
5129 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
5133 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
5137 CONNECTION_CHANGED_LOST = 16,
5141 CONNECTION_CHANGED_ECHO_TEST = 17,
5145 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
5149 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
5153 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
5158 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
5162 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
5166 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
5170 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
5176 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
5183 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
5188 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
5194 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
5200 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
5210 NETWORK_TYPE_UNKNOWN = -1,
5214 NETWORK_TYPE_DISCONNECTED = 0,
5218 NETWORK_TYPE_LAN = 1,
5222 NETWORK_TYPE_WIFI = 2,
5226 NETWORK_TYPE_MOBILE_2G = 3,
5230 NETWORK_TYPE_MOBILE_3G = 4,
5234 NETWORK_TYPE_MOBILE_4G = 5,
5238 NETWORK_TYPE_MOBILE_5G = 6,
5244 enum VIDEO_VIEW_SETUP_MODE {
5248 VIDEO_VIEW_SETUP_REPLACE = 0,
5252 VIDEO_VIEW_SETUP_ADD = 1,
5259 VIDEO_VIEW_SETUP_REMOVE = 2,
5346 position(media::base::POSITION_POST_CAPTURER) {}
5348 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5360 position(media::base::POSITION_POST_CAPTURER) {}
5362 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5374 position(media::base::POSITION_POST_CAPTURER) {}
5376 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5389 position(media::base::POSITION_POST_CAPTURER) {}
5445 float redness,
float sharpness)
5796 :
mode(lowlightMode),
level(lowlightLevel) {}
5851 :
mode(denoiserMode),
level(denoiserLevel) {}
5979 source(OPTIONAL_NULLPTR),
6045 enum AUDIO_TRACK_TYPE {
6049 AUDIO_TRACK_INVALID = -1,
6055 AUDIO_TRACK_MIXABLE = 0,
6065 AUDIO_TRACK_DIRECT = 1,
6111 enum VOICE_BEAUTIFIER_PRESET {
6115 VOICE_BEAUTIFIER_OFF = 0x00000000,
6121 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
6127 CHAT_BEAUTIFIER_FRESH = 0x01010200,
6133 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
6143 SINGING_BEAUTIFIER = 0x01020100,
6147 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
6151 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
6155 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
6159 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
6163 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
6167 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
6171 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
6175 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
6186 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
6200 enum AUDIO_EFFECT_PRESET {
6204 AUDIO_EFFECT_OFF = 0x00000000,
6208 ROOM_ACOUSTICS_KTV = 0x02010100,
6212 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
6216 ROOM_ACOUSTICS_STUDIO = 0x02010300,
6220 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
6224 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
6228 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
6232 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
6240 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
6247 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
6252 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
6258 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
6264 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
6270 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
6276 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
6282 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
6286 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
6290 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
6294 STYLE_TRANSFORMATION_RNB = 0x02030100,
6298 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
6304 PITCH_CORRECTION = 0x02040100,
6314 enum VOICE_CONVERSION_PRESET {
6318 VOICE_CONVERSION_OFF = 0x00000000,
6323 VOICE_CHANGER_NEUTRAL = 0x03010100,
6328 VOICE_CHANGER_SWEET = 0x03010200,
6333 VOICE_CHANGER_SOLID = 0x03010300,
6338 VOICE_CHANGER_BASS = 0x03010400,
6341 VOICE_CHANGER_CARTOON = 0x03010500,
6344 VOICE_CHANGER_CHILDLIKE = 0x03010600,
6347 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6350 VOICE_CHANGER_MONSTER = 0x03010800,
6353 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6356 VOICE_CHANGER_GROOT = 0x03010A00,
6359 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6362 VOICE_CHANGER_IRON_LADY = 0x03010C00,
6365 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6368 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6371 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6378 enum HEADPHONE_EQUALIZER_PRESET {
6382 HEADPHONE_EQUALIZER_OFF = 0x00000000,
6386 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6390 HEADPHONE_EQUALIZER_INEAR = 0x04000002
6396 enum VOICE_AI_TUNER_TYPE {
6400 VOICE_AI_TUNER_MATURE_MALE,
6404 VOICE_AI_TUNER_FRESH_MALE,
6408 VOICE_AI_TUNER_ELEGANT_FEMALE,
6412 VOICE_AI_TUNER_SWEET_FEMALE,
6416 VOICE_AI_TUNER_WARM_MALE_SINGING,
6420 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6424 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6428 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6432 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6436 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6460 #if defined(__APPLE__) && !TARGET_OS_IOS
6464 bool excludeCurrentProcessAudio =
true;
6604 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
6616 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
6628 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
6640 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
6658 enum AUDIO_RECORDING_QUALITY_TYPE {
6663 AUDIO_RECORDING_QUALITY_LOW = 0,
6668 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6673 AUDIO_RECORDING_QUALITY_HIGH = 2,
6678 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6684 enum AUDIO_FILE_RECORDING_TYPE {
6688 AUDIO_FILE_RECORDING_MIC = 1,
6692 AUDIO_FILE_RECORDING_PLAYBACK = 2,
6696 AUDIO_FILE_RECORDING_MIXED = 3,
6702 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6706 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6710 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6714 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6774 quality(AUDIO_RECORDING_QUALITY_LOW),
6778 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6786 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
6787 AUDIO_FILE_RECORDING_TYPE type,
6788 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6796 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
6819 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6886 AREA_CODE_CN = 0x00000001,
6890 AREA_CODE_NA = 0x00000002,
6894 AREA_CODE_EU = 0x00000004,
6898 AREA_CODE_AS = 0x00000008,
6902 AREA_CODE_JP = 0x00000010,
6906 AREA_CODE_IN = 0x00000020,
6910 AREA_CODE_GLOB = (0xFFFFFFFF)
6921 AREA_CODE_OC = 0x00000040,
6925 AREA_CODE_SA = 0x00000080,
6929 AREA_CODE_AF = 0x00000100,
6933 AREA_CODE_KR = 0x00000200,
6937 AREA_CODE_HKMC = 0x00000400,
6941 AREA_CODE_US = 0x00000800,
6945 AREA_CODE_RU = 0x00001000,
6949 AREA_CODE_OVS = 0xFFFFFFFE
6955 enum CHANNEL_MEDIA_RELAY_ERROR {
6963 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6972 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6976 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6980 RELAY_ERROR_FAILED_JOIN_SRC = 4,
6984 RELAY_ERROR_FAILED_JOIN_DEST = 5,
6988 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6992 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6997 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
7001 RELAY_ERROR_INTERNAL_ERROR = 9,
7005 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
7009 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
7015 enum CHANNEL_MEDIA_RELAY_STATE {
7020 RELAY_STATE_IDLE = 0,
7024 RELAY_STATE_CONNECTING = 1,
7028 RELAY_STATE_RUNNING = 2,
7032 RELAY_STATE_FAILURE = 3,
7138 :
userId(OPTIONAL_NULLPTR),
7147 if (rhs.
userId != OPTIONAL_NULLPTR) {
7148 const size_t len = std::strlen(rhs.
userId);
7149 char* buf =
new char[len + 1];
7150 std::memcpy(buf, rhs.
userId, len);
7156 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
7157 if (
this == &rhs)
return *
this;
7158 userId = OPTIONAL_NULLPTR;
7162 if (rhs.userId != OPTIONAL_NULLPTR) {
7163 const size_t len = std::strlen(rhs.userId);
7164 char* buf =
new char[len + 1];
7165 std::memcpy(buf, rhs.userId, len);
7172 ~PeerDownlinkInfo() {
delete[]
userId; }
7215 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
7216 if (
this == &rhs)
return *
this;
7241 enum ENCRYPTION_MODE {
7320 const char* getEncryptionString()
const {
7323 return "aes-128-xts";
7325 return "aes-128-ecb";
7327 return "aes-256-xts";
7329 return "sm4-128-ecb";
7331 return "aes-128-gcm";
7333 return "aes-256-gcm";
7335 return "aes-128-gcm-2";
7337 return "aes-256-gcm-2";
7339 return "aes-128-gcm-2";
7341 return "aes-128-gcm-2";
7349 enum ENCRYPTION_ERROR_TYPE {
7353 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
7358 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
7362 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
7367 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
7371 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
7374 enum UPLOAD_ERROR_REASON {
7376 UPLOAD_NET_ERROR = 1,
7377 UPLOAD_SERVER_ERROR = 2,
7385 enum RENEW_TOKEN_ERROR_CODE {
7389 RENEW_TOKEN_SUCCESS = 0,
7394 RENEW_TOKEN_FAILURE = 1,
7399 RENEW_TOKEN_TOKEN_EXPIRED = 2,
7408 RENEW_TOKEN_INVALID_TOKEN = 3,
7414 RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
7419 RENEW_TOKEN_INCONSISTENT_APPID = 5,
7423 RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
7429 enum PERMISSION_TYPE {
7448 enum STREAM_SUBSCRIBE_STATE {
7468 SUB_STATE_NO_SUBSCRIBED = 1,
7472 SUB_STATE_SUBSCRIBING = 2,
7476 SUB_STATE_SUBSCRIBED = 3
7482 enum STREAM_PUBLISH_STATE {
7497 PUB_STATE_NO_PUBLISHED = 1,
7501 PUB_STATE_PUBLISHING = 2,
7505 PUB_STATE_PUBLISHED = 3
7558 :
view(OPTIONAL_NULLPTR),
7561 token(OPTIONAL_NULLPTR),
7585 enum EAR_MONITORING_FILTER_TYPE {
7589 EAR_MONITORING_FILTER_NONE = (1 << 0),
7594 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7598 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7604 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7610 enum THREAD_PRIORITY_TYPE {
7637 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7642 struct ScreenVideoParameters {
7646 VideoDimensions dimensions;
7658 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7660 ScreenVideoParameters() : dimensions(1280, 720) {}
7666 struct ScreenCaptureParameters2 {
7678 bool captureAudio =
false;
7683 ScreenAudioParameters audioParams;
7691 bool captureVideo =
true;
7696 ScreenVideoParameters videoParams;
7703 enum MEDIA_TRACE_EVENT {
7707 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7711 MEDIA_TRACE_EVENT_VIDEO_DECODED,
7802 enum CONFIG_FETCH_TYPE {
7806 CONFIG_FETCH_TYPE_INITIALIZE = 1,
7810 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7816 enum LOCAL_PROXY_MODE {
7821 ConnectivityFirst = 0,
7920 mode(ConnectivityFirst),
7927 enum RecorderStreamType {
7957 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
7966 enum RdtStreamType {
8023 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
8036 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
8037 return p != OPTIONAL_NULLPTR;
8044 virtual void onCertificateRequired() = 0;
8045 virtual void onLicenseRequest() = 0;
8046 virtual void onLicenseValidated() = 0;
8047 virtual void onLicenseError(
int result) = 0;
8181 strUid(OPTIONAL_NULLPTR),
8195 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
8202 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
8204 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
8228 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
8230 const char* certificate_buf,
8231 int certificate_len);
8271 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();