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 {
2649 enum MultipathType {
2951 enum CLIENT_ROLE_TYPE {
2955 CLIENT_ROLE_BROADCASTER = 1,
2959 CLIENT_ROLE_AUDIENCE = 2,
2966 enum QUALITY_ADAPT_INDICATION {
2974 ADAPT_UP_BANDWIDTH = 1,
2978 ADAPT_DOWN_BANDWIDTH = 2,
2985 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2989 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2993 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
3012 enum EXPERIENCE_QUALITY_TYPE {
3016 EXPERIENCE_QUALITY_GOOD = 0,
3020 EXPERIENCE_QUALITY_BAD = 1,
3026 enum EXPERIENCE_POOR_REASON {
3030 EXPERIENCE_REASON_NONE = 0,
3034 REMOTE_NETWORK_QUALITY_POOR = 1,
3038 LOCAL_NETWORK_QUALITY_POOR = 2,
3042 WIRELESS_SIGNAL_POOR = 4,
3047 WIFI_BLUETOOTH_COEXIST = 8,
3053 enum AUDIO_AINS_MODE {
3058 AINS_MODE_BALANCED = 0,
3064 AINS_MODE_AGGRESSIVE = 1,
3070 AINS_MODE_ULTRALOWLATENCY = 2
3076 enum AUDIO_PROFILE_TYPE {
3086 AUDIO_PROFILE_DEFAULT = 0,
3090 AUDIO_PROFILE_SPEECH_STANDARD = 1,
3094 AUDIO_PROFILE_MUSIC_STANDARD = 2,
3100 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3104 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3110 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3114 AUDIO_PROFILE_IOT = 6,
3118 AUDIO_PROFILE_NUM = 7
3124 enum AUDIO_SCENARIO_TYPE {
3129 AUDIO_SCENARIO_DEFAULT = 0,
3133 AUDIO_SCENARIO_GAME_STREAMING = 3,
3138 AUDIO_SCENARIO_CHATROOM = 5,
3143 AUDIO_SCENARIO_CHORUS = 7,
3147 AUDIO_SCENARIO_MEETING = 8,
3152 AUDIO_SCENARIO_AI_SERVER = 9,
3157 AUDIO_SCENARIO_AI_CLIENT = 10,
3161 AUDIO_SCENARIO_NUM = 11,
3168 OPTIONAL_ENUM_SIZE_T{
3170 kMaxWidthInPixels = 3840,
3172 kMaxHeightInPixels = 2160,
3192 bool operator<(
const VideoFormat& fmt)
const {
3193 if (
height != fmt.height) {
3194 return height < fmt.height;
3195 }
else if (
width != fmt.width) {
3196 return width < fmt.width;
3198 return fps < fmt.fps;
3201 bool operator==(
const VideoFormat& fmt)
const {
3202 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
3204 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
3210 enum VIDEO_CONTENT_HINT {
3219 CONTENT_HINT_MOTION,
3224 CONTENT_HINT_DETAILS
3229 enum SCREEN_SCENARIO_TYPE {
3235 SCREEN_SCENARIO_DOCUMENT = 1,
3240 SCREEN_SCENARIO_GAMING = 2,
3245 SCREEN_SCENARIO_VIDEO = 3,
3251 SCREEN_SCENARIO_RDC = 4,
3257 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3261 APPLICATION_SCENARIO_GENERAL = 0,
3297 APPLICATION_SCENARIO_MEETING = 1,
3306 APPLICATION_SCENARIO_1V1 = 2,
3317 APPLICATION_SCENARIO_LIVESHOW = 3,
3323 enum VIDEO_QOE_PREFERENCE_TYPE {
3327 VIDEO_QOE_PREFERENCE_BALANCE = 1,
3331 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3335 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3339 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3346 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3351 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3355 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3359 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3363 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3374 enum CAMERA_STABILIZATION_MODE {
3378 CAMERA_STABILIZATION_MODE_OFF = -1,
3384 CAMERA_STABILIZATION_MODE_AUTO = 0,
3388 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3392 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3396 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3399 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3405 enum LOCAL_AUDIO_STREAM_STATE {
3409 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3413 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3417 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3421 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3427 enum LOCAL_AUDIO_STREAM_REASON {
3431 LOCAL_AUDIO_STREAM_REASON_OK = 0,
3436 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3440 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3447 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3451 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3455 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3461 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3467 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3473 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3478 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3483 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3489 enum LOCAL_VIDEO_STREAM_STATE {
3493 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3498 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3502 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3506 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3513 enum LOCAL_VIDEO_EVENT_TYPE {
3517 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_HIDDEN = 1,
3521 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 2,
3525 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_STOPPED_BY_USER = 3,
3529 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_SYSTEM_INTERNAL_ERROR = 4,
3535 enum LOCAL_VIDEO_STREAM_REASON {
3539 LOCAL_VIDEO_STREAM_REASON_OK = 0,
3543 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3548 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3553 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3558 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3562 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3567 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3574 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3580 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3585 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3590 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3599 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3605 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3609 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3615 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3629 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3634 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3636 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3640 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3644 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3654 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3659 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3663 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3668 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3674 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3678 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3683 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3685 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3687 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3689 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3691 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_EXCLUDE_WINDOW_FAILED = 34,
3697 enum REMOTE_AUDIO_STATE {
3703 REMOTE_AUDIO_STATE_STOPPED =
3708 REMOTE_AUDIO_STATE_STARTING = 1,
3714 REMOTE_AUDIO_STATE_DECODING =
3720 REMOTE_AUDIO_STATE_FROZEN = 3,
3725 REMOTE_AUDIO_STATE_FAILED = 4,
3731 enum REMOTE_AUDIO_STATE_REASON {
3735 REMOTE_AUDIO_REASON_INTERNAL = 0,
3739 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3743 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3747 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3751 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3755 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3759 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3763 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3767 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3771 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3777 enum REMOTE_VIDEO_STATE {
3783 REMOTE_VIDEO_STATE_STOPPED = 0,
3787 REMOTE_VIDEO_STATE_STARTING = 1,
3794 REMOTE_VIDEO_STATE_DECODING = 2,
3799 REMOTE_VIDEO_STATE_FROZEN = 3,
3804 REMOTE_VIDEO_STATE_FAILED = 4,
3809 enum REMOTE_VIDEO_STATE_REASON {
3813 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3817 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3821 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3825 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3829 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3833 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3837 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3841 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3846 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3851 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3854 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3857 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3861 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3866 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3873 enum REMOTE_USER_STATE {
3877 USER_STATE_MUTE_AUDIO = (1 << 0),
3881 USER_STATE_MUTE_VIDEO = (1 << 1),
3885 USER_STATE_ENABLE_VIDEO = (1 << 4),
3889 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3948 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3952 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3956 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3960 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3964 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3968 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
4097 enum AUDIO_SAMPLE_RATE_TYPE {
4101 AUDIO_SAMPLE_RATE_32000 = 32000,
4105 AUDIO_SAMPLE_RATE_44100 = 44100,
4109 AUDIO_SAMPLE_RATE_48000 = 48000,
4114 enum VIDEO_CODEC_TYPE_FOR_STREAM {
4118 VIDEO_CODEC_H264_FOR_STREAM = 1,
4122 VIDEO_CODEC_H265_FOR_STREAM = 2,
4128 enum VIDEO_CODEC_PROFILE_TYPE {
4132 VIDEO_CODEC_PROFILE_BASELINE = 66,
4137 VIDEO_CODEC_PROFILE_MAIN = 77,
4142 VIDEO_CODEC_PROFILE_HIGH = 100,
4148 enum AUDIO_CODEC_PROFILE_TYPE {
4152 AUDIO_CODEC_PROFILE_LC_AAC = 0,
4156 AUDIO_CODEC_PROFILE_HE_AAC = 1,
4160 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
4210 enum RTMP_STREAM_PUBLISH_STATE {
4214 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4218 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4223 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4232 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4237 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4243 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4249 enum RTMP_STREAM_PUBLISH_REASON {
4253 RTMP_STREAM_PUBLISH_REASON_OK = 0,
4257 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4261 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4265 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4269 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4273 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4277 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4281 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4286 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4290 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4295 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4300 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4306 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4311 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
4315 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4320 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4325 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4331 enum RTMP_STREAMING_EVENT {
4335 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4340 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4344 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4348 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4433 enum CONNECTION_STATE_TYPE {
4441 CONNECTION_STATE_DISCONNECTED = 1,
4451 CONNECTION_STATE_CONNECTING = 2,
4459 CONNECTION_STATE_CONNECTED = 3,
4469 CONNECTION_STATE_RECONNECTING = 4,
4479 CONNECTION_STATE_FAILED = 5,
4832 enum VIDEO_TRANSCODER_ERROR {
4837 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4841 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4845 VT_ERR_INVALID_IMAGE_PATH = 3,
4849 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4853 VT_ERR_INVALID_LAYOUT = 5,
4857 VT_ERR_INTERNAL = 20
4907 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
4912 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
4977 enum LASTMILE_PROBE_RESULT_STATE {
4981 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4987 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4991 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
5041 enum CONNECTION_CHANGED_REASON_TYPE {
5045 CONNECTION_CHANGED_CONNECTING = 0,
5049 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
5053 CONNECTION_CHANGED_INTERRUPTED = 2,
5058 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
5064 CONNECTION_CHANGED_JOIN_FAILED = 4,
5068 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
5073 CONNECTION_CHANGED_INVALID_APP_ID = 6,
5083 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
5098 CONNECTION_CHANGED_INVALID_TOKEN = 8,
5103 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
5112 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
5116 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
5120 CONNECTION_CHANGED_RENEW_TOKEN = 12,
5125 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
5130 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
5134 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
5138 CONNECTION_CHANGED_LOST = 16,
5142 CONNECTION_CHANGED_ECHO_TEST = 17,
5146 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
5150 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
5154 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
5159 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
5163 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
5167 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
5171 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
5177 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
5184 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
5189 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
5195 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
5201 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
5211 NETWORK_TYPE_UNKNOWN = -1,
5215 NETWORK_TYPE_DISCONNECTED = 0,
5219 NETWORK_TYPE_LAN = 1,
5223 NETWORK_TYPE_WIFI = 2,
5227 NETWORK_TYPE_MOBILE_2G = 3,
5231 NETWORK_TYPE_MOBILE_3G = 4,
5235 NETWORK_TYPE_MOBILE_4G = 5,
5239 NETWORK_TYPE_MOBILE_5G = 6,
5245 enum VIDEO_VIEW_SETUP_MODE {
5249 VIDEO_VIEW_SETUP_REPLACE = 0,
5253 VIDEO_VIEW_SETUP_ADD = 1,
5260 VIDEO_VIEW_SETUP_REMOVE = 2,
5347 position(media::base::POSITION_POST_CAPTURER) {}
5349 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5361 position(media::base::POSITION_POST_CAPTURER) {}
5363 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5375 position(media::base::POSITION_POST_CAPTURER) {}
5377 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5390 position(media::base::POSITION_POST_CAPTURER) {}
5446 float redness,
float sharpness)
5797 :
mode(lowlightMode),
level(lowlightLevel) {}
5852 :
mode(denoiserMode),
level(denoiserLevel) {}
5980 source(OPTIONAL_NULLPTR),
6046 enum AUDIO_TRACK_TYPE {
6050 AUDIO_TRACK_INVALID = -1,
6056 AUDIO_TRACK_MIXABLE = 0,
6066 AUDIO_TRACK_DIRECT = 1,
6112 enum VOICE_BEAUTIFIER_PRESET {
6116 VOICE_BEAUTIFIER_OFF = 0x00000000,
6122 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
6128 CHAT_BEAUTIFIER_FRESH = 0x01010200,
6134 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
6144 SINGING_BEAUTIFIER = 0x01020100,
6148 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
6152 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
6156 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
6160 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
6164 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
6168 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
6172 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
6176 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
6187 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
6201 enum AUDIO_EFFECT_PRESET {
6205 AUDIO_EFFECT_OFF = 0x00000000,
6209 ROOM_ACOUSTICS_KTV = 0x02010100,
6213 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
6217 ROOM_ACOUSTICS_STUDIO = 0x02010300,
6221 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
6225 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
6229 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
6233 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
6241 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
6248 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
6253 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
6259 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
6265 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
6271 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
6277 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
6283 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
6287 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
6291 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
6295 STYLE_TRANSFORMATION_RNB = 0x02030100,
6299 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
6305 PITCH_CORRECTION = 0x02040100,
6315 enum VOICE_CONVERSION_PRESET {
6319 VOICE_CONVERSION_OFF = 0x00000000,
6324 VOICE_CHANGER_NEUTRAL = 0x03010100,
6329 VOICE_CHANGER_SWEET = 0x03010200,
6334 VOICE_CHANGER_SOLID = 0x03010300,
6339 VOICE_CHANGER_BASS = 0x03010400,
6342 VOICE_CHANGER_CARTOON = 0x03010500,
6345 VOICE_CHANGER_CHILDLIKE = 0x03010600,
6348 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6351 VOICE_CHANGER_MONSTER = 0x03010800,
6354 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6357 VOICE_CHANGER_GROOT = 0x03010A00,
6360 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6363 VOICE_CHANGER_IRON_LADY = 0x03010C00,
6366 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6369 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6372 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6379 enum HEADPHONE_EQUALIZER_PRESET {
6383 HEADPHONE_EQUALIZER_OFF = 0x00000000,
6387 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6391 HEADPHONE_EQUALIZER_INEAR = 0x04000002
6397 enum VOICE_AI_TUNER_TYPE {
6401 VOICE_AI_TUNER_MATURE_MALE,
6405 VOICE_AI_TUNER_FRESH_MALE,
6409 VOICE_AI_TUNER_ELEGANT_FEMALE,
6413 VOICE_AI_TUNER_SWEET_FEMALE,
6417 VOICE_AI_TUNER_WARM_MALE_SINGING,
6421 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6425 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6429 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6433 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6437 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6461 #if defined(__APPLE__) && !TARGET_OS_IOS
6465 bool excludeCurrentProcessAudio =
true;
6605 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
6617 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
6629 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
6641 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
6659 enum AUDIO_RECORDING_QUALITY_TYPE {
6664 AUDIO_RECORDING_QUALITY_LOW = 0,
6669 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6674 AUDIO_RECORDING_QUALITY_HIGH = 2,
6679 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6685 enum AUDIO_FILE_RECORDING_TYPE {
6689 AUDIO_FILE_RECORDING_MIC = 1,
6693 AUDIO_FILE_RECORDING_PLAYBACK = 2,
6697 AUDIO_FILE_RECORDING_MIXED = 3,
6703 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6707 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6711 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6715 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6775 quality(AUDIO_RECORDING_QUALITY_LOW),
6779 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6787 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
6788 AUDIO_FILE_RECORDING_TYPE type,
6789 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6797 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
6820 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6887 AREA_CODE_CN = 0x00000001,
6891 AREA_CODE_NA = 0x00000002,
6895 AREA_CODE_EU = 0x00000004,
6899 AREA_CODE_AS = 0x00000008,
6903 AREA_CODE_JP = 0x00000010,
6907 AREA_CODE_IN = 0x00000020,
6911 AREA_CODE_GLOB = (0xFFFFFFFF)
6922 AREA_CODE_OC = 0x00000040,
6926 AREA_CODE_SA = 0x00000080,
6930 AREA_CODE_AF = 0x00000100,
6934 AREA_CODE_KR = 0x00000200,
6938 AREA_CODE_HKMC = 0x00000400,
6942 AREA_CODE_US = 0x00000800,
6946 AREA_CODE_RU = 0x00001000,
6950 AREA_CODE_OVS = 0xFFFFFFFE
6956 enum CHANNEL_MEDIA_RELAY_ERROR {
6964 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6973 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6977 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6981 RELAY_ERROR_FAILED_JOIN_SRC = 4,
6985 RELAY_ERROR_FAILED_JOIN_DEST = 5,
6989 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6993 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6998 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
7002 RELAY_ERROR_INTERNAL_ERROR = 9,
7006 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
7010 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
7016 enum CHANNEL_MEDIA_RELAY_STATE {
7021 RELAY_STATE_IDLE = 0,
7025 RELAY_STATE_CONNECTING = 1,
7029 RELAY_STATE_RUNNING = 2,
7033 RELAY_STATE_FAILURE = 3,
7139 :
userId(OPTIONAL_NULLPTR),
7148 if (rhs.
userId != OPTIONAL_NULLPTR) {
7149 const size_t len = std::strlen(rhs.
userId);
7150 char* buf =
new char[len + 1];
7151 std::memcpy(buf, rhs.
userId, len);
7157 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
7158 if (
this == &rhs)
return *
this;
7159 userId = OPTIONAL_NULLPTR;
7163 if (rhs.userId != OPTIONAL_NULLPTR) {
7164 const size_t len = std::strlen(rhs.userId);
7165 char* buf =
new char[len + 1];
7166 std::memcpy(buf, rhs.userId, len);
7173 ~PeerDownlinkInfo() {
delete[]
userId; }
7216 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
7217 if (
this == &rhs)
return *
this;
7242 enum ENCRYPTION_MODE {
7321 const char* getEncryptionString()
const {
7324 return "aes-128-xts";
7326 return "aes-128-ecb";
7328 return "aes-256-xts";
7330 return "sm4-128-ecb";
7332 return "aes-128-gcm";
7334 return "aes-256-gcm";
7336 return "aes-128-gcm-2";
7338 return "aes-256-gcm-2";
7340 return "aes-128-gcm-2";
7342 return "aes-128-gcm-2";
7350 enum ENCRYPTION_ERROR_TYPE {
7354 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
7359 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
7363 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
7368 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
7372 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
7375 enum UPLOAD_ERROR_REASON {
7377 UPLOAD_NET_ERROR = 1,
7378 UPLOAD_SERVER_ERROR = 2,
7386 enum RENEW_TOKEN_ERROR_CODE {
7390 RENEW_TOKEN_SUCCESS = 0,
7395 RENEW_TOKEN_FAILURE = 1,
7400 RENEW_TOKEN_TOKEN_EXPIRED = 2,
7409 RENEW_TOKEN_INVALID_TOKEN = 3,
7415 RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
7420 RENEW_TOKEN_INCONSISTENT_APPID = 5,
7424 RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
7430 enum PERMISSION_TYPE {
7449 enum STREAM_SUBSCRIBE_STATE {
7469 SUB_STATE_NO_SUBSCRIBED = 1,
7473 SUB_STATE_SUBSCRIBING = 2,
7477 SUB_STATE_SUBSCRIBED = 3
7483 enum STREAM_PUBLISH_STATE {
7498 PUB_STATE_NO_PUBLISHED = 1,
7502 PUB_STATE_PUBLISHING = 2,
7506 PUB_STATE_PUBLISHED = 3
7559 :
view(OPTIONAL_NULLPTR),
7562 token(OPTIONAL_NULLPTR),
7586 enum EAR_MONITORING_FILTER_TYPE {
7590 EAR_MONITORING_FILTER_NONE = (1 << 0),
7595 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7599 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7605 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7611 enum THREAD_PRIORITY_TYPE {
7638 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7643 struct ScreenVideoParameters {
7647 VideoDimensions dimensions;
7659 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7661 ScreenVideoParameters() : dimensions(1280, 720) {}
7667 struct ScreenCaptureParameters2 {
7679 bool captureAudio =
false;
7684 ScreenAudioParameters audioParams;
7692 bool captureVideo =
true;
7697 ScreenVideoParameters videoParams;
7704 enum MEDIA_TRACE_EVENT {
7708 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7712 MEDIA_TRACE_EVENT_VIDEO_DECODED,
7803 enum CONFIG_FETCH_TYPE {
7807 CONFIG_FETCH_TYPE_INITIALIZE = 1,
7811 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7817 enum LOCAL_PROXY_MODE {
7822 ConnectivityFirst = 0,
7921 mode(ConnectivityFirst),
7928 enum RecorderStreamType {
7958 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
7967 enum RdtStreamType {
8024 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
8037 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
8038 return p != OPTIONAL_NULLPTR;
8045 virtual void onCertificateRequired() = 0;
8046 virtual void onLicenseRequest() = 0;
8047 virtual void onLicenseValidated() = 0;
8048 virtual void onLicenseError(
int result) = 0;
8182 strUid(OPTIONAL_NULLPTR),
8196 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
8203 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
8205 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
8229 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
8231 const char* certificate_buf,
8232 int certificate_len);
8272 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();