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,
703 ERR_PCMSEND_FORMAT = 200,
704 ERR_PCMSEND_BUFFEROVERFLOW = 201,
712 ERR_RDT_USER_NOT_EXIST = 250,
717 ERR_RDT_USER_NOT_READY = 251,
722 ERR_RDT_DATA_BLOCKED = 252,
727 ERR_RDT_CMD_EXCEED_LIMIT = 253,
732 ERR_RDT_DATA_EXCEED_LIMIT = 254,
737 ERR_RDT_ENCRYPTION = 255,
742 ERR_LOGIN_ALREADY_LOGIN = 428,
749 ERR_LOAD_MEDIA_ENGINE = 1001,
754 ERR_ADM_GENERAL_ERROR = 1005,
759 ERR_ADM_INIT_PLAYOUT = 1008,
763 ERR_ADM_START_PLAYOUT = 1009,
767 ERR_ADM_STOP_PLAYOUT = 1010,
772 ERR_ADM_INIT_RECORDING = 1011,
776 ERR_ADM_START_RECORDING = 1012,
780 ERR_ADM_STOP_RECORDING = 1013,
785 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
788 enum LICENSE_ERROR_TYPE {
792 LICENSE_ERR_INVALID = 1,
796 LICENSE_ERR_EXPIRE = 2,
800 LICENSE_ERR_MINUTES_EXCEED = 3,
804 LICENSE_ERR_LIMITED_PERIOD = 4,
808 LICENSE_ERR_DIFF_DEVICES = 5,
812 LICENSE_ERR_INTERNAL = 99,
818 enum AUDIO_SESSION_OPERATION_RESTRICTION {
822 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
826 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
830 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
835 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
840 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
843 typedef const char* user_id_t;
844 typedef void* view_t;
870 typedef util::AList<UserInfo> UserList;
878 enum USER_OFFLINE_REASON_TYPE {
882 USER_OFFLINE_QUIT = 0,
889 USER_OFFLINE_DROPPED = 1,
893 USER_OFFLINE_BECOME_AUDIENCE = 2,
899 enum INTERFACE_ID_TYPE {
903 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
907 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
911 AGORA_IID_PARAMETER_ENGINE = 3,
915 AGORA_IID_MEDIA_ENGINE = 4,
916 AGORA_IID_AUDIO_ENGINE = 5,
917 AGORA_IID_VIDEO_ENGINE = 6,
918 AGORA_IID_RTC_CONNECTION = 7,
922 AGORA_IID_SIGNALING_ENGINE = 8,
923 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
924 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
925 AGORA_IID_STATE_SYNC = 13,
926 AGORA_IID_META_SERVICE = 14,
927 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
928 AGORA_IID_H265_TRANSCODER = 16,
939 QUALITY_UNKNOWN __deprecated = 0,
943 QUALITY_EXCELLENT = 1,
967 QUALITY_UNSUPPORTED = 7,
971 QUALITY_DETECTING = 8,
995 enum VIDEO_ORIENTATION {
999 VIDEO_ORIENTATION_0 = 0,
1003 VIDEO_ORIENTATION_90 = 90,
1007 VIDEO_ORIENTATION_180 = 180,
1011 VIDEO_ORIENTATION_270 = 270
1021 FRAME_RATE_FPS_1 = 1,
1025 FRAME_RATE_FPS_7 = 7,
1029 FRAME_RATE_FPS_10 = 10,
1033 FRAME_RATE_FPS_15 = 15,
1037 FRAME_RATE_FPS_24 = 24,
1041 FRAME_RATE_FPS_30 = 30,
1046 FRAME_RATE_FPS_60 = 60,
1050 FRAME_WIDTH_960 = 960,
1054 FRAME_HEIGHT_540 = 540,
1060 enum VIDEO_FRAME_TYPE {
1064 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1068 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1072 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1076 VIDEO_FRAME_TYPE_B_FRAME = 5,
1080 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1084 VIDEO_FRAME_TYPE_UNKNOW
1090 enum ORIENTATION_MODE {
1098 ORIENTATION_MODE_ADAPTIVE = 0,
1105 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1111 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1117 enum DEGRADATION_PREFERENCE {
1129 MAINTAIN_QUALITY = 0,
1135 MAINTAIN_FRAMERATE = 1,
1144 MAINTAIN_BALANCED = 2,
1150 MAINTAIN_RESOLUTION = 3,
1171 bool operator==(
const VideoDimensions& rhs)
const {
1172 return width == rhs.width &&
height == rhs.height;
1181 const int STANDARD_BITRATE = 0;
1190 const int COMPATIBLE_BITRATE = -1;
1195 const int DEFAULT_MIN_BITRATE = -1;
1200 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1205 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1209 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1213 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1217 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1223 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1228 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1232 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1236 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1240 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1244 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1250 enum VIDEO_CODEC_TYPE {
1255 VIDEO_CODEC_NONE = 0,
1259 VIDEO_CODEC_VP8 = 1,
1263 VIDEO_CODEC_H264 = 2,
1267 VIDEO_CODEC_H265 = 3,
1273 VIDEO_CODEC_GENERIC = 6,
1278 VIDEO_CODEC_GENERIC_H264 = 7,
1283 VIDEO_CODEC_AV1 = 12,
1287 VIDEO_CODEC_VP9 = 13,
1291 VIDEO_CODEC_GENERIC_JPEG = 20,
1300 enum CAMERA_FOCAL_LENGTH_TYPE {
1304 CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1308 CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1312 CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1316 CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1414 enum AUDIO_CODEC_TYPE {
1418 AUDIO_CODEC_OPUS = 1,
1423 AUDIO_CODEC_PCMA = 3,
1427 AUDIO_CODEC_PCMU = 4,
1431 AUDIO_CODEC_G722 = 5,
1438 AUDIO_CODEC_AACLC = 8,
1442 AUDIO_CODEC_HEAAC = 9,
1446 AUDIO_CODEC_JC1 = 10,
1450 AUDIO_CODEC_HEAAC2 = 11,
1454 AUDIO_CODEC_LPCNET = 12,
1458 AUDIO_CODEC_OPUSMC = 13,
1464 enum AUDIO_ENCODING_TYPE {
1469 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1474 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1479 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1484 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1489 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1494 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1499 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1504 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1509 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1514 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1519 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1525 enum WATERMARK_FIT_MODE {
1530 FIT_MODE_COVER_POSITION = 0,
1535 FIT_MODE_USE_IMAGE_RATIO = 1,
1563 :
codec(AUDIO_CODEC_AACLC),
1611 channelNum(rhs.channelNum),
1640 enum H264PacketizeMode {
1654 enum VIDEO_STREAM_TYPE {
1658 VIDEO_STREAM_HIGH = 0,
1662 VIDEO_STREAM_LOW = 1,
1667 VIDEO_STREAM_LAYER_1 = 4,
1672 VIDEO_STREAM_LAYER_2 = 5,
1677 VIDEO_STREAM_LAYER_3 = 6,
1682 VIDEO_STREAM_LAYER_4 = 7,
1687 VIDEO_STREAM_LAYER_5 = 8,
1692 VIDEO_STREAM_LAYER_6 = 9,
1719 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1723 MAX_USER_ACCOUNT_LENGTH = 256
1735 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1741 presentationMs(-1) {}
1754 presentationMs(rhs.presentationMs) {}
1757 if (
this == &rhs)
return *
this;
1768 presentationMs = rhs.presentationMs;
1818 int64_t presentationMs;
1824 enum COMPRESSION_PREFERENCE {
1829 PREFER_COMPRESSION_AUTO = -1,
1834 PREFER_LOW_LATENCY = 0,
1845 enum ENCODING_PREFERENCE {
1854 PREFER_SOFTWARE = 0,
1861 PREFER_HARDWARE = 1,
1890 COMPRESSION_PREFERENCE compression_preference,
1891 bool encode_alpha) :
1896 bool operator==(
const AdvanceOptions& rhs)
const {
1906 enum VIDEO_MIRROR_MODE_TYPE {
1913 VIDEO_MIRROR_MODE_AUTO = 0,
1917 VIDEO_MIRROR_MODE_ENABLED = 1,
1921 VIDEO_MIRROR_MODE_DISABLED = 2,
1924 #if defined(__APPLE__) && TARGET_OS_IOS
1928 enum CAMERA_FORMAT_TYPE {
1936 enum VIDEO_MODULE_TYPE {
1938 VIDEO_MODULE_CAPTURER = 0,
1940 VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1942 VIDEO_MODULE_HARDWARE_ENCODER = 2,
1944 VIDEO_MODULE_SOFTWARE_DECODER = 3,
1946 VIDEO_MODULE_HARDWARE_DECODER = 4,
1948 VIDEO_MODULE_RENDERER = 5,
1951 enum HDR_CAPABILITY {
1953 HDR_CAPABILITY_UNKNOWN = -1,
1955 HDR_CAPABILITY_UNSUPPORTED = 0,
1957 HDR_CAPABILITY_SUPPORTED = 1,
1963 enum CODEC_CAP_MASK {
1967 CODEC_CAP_MASK_NONE = 0,
1972 CODEC_CAP_MASK_HW_DEC = 1 << 0,
1977 CODEC_CAP_MASK_HW_ENC = 1 << 1,
1982 CODEC_CAP_MASK_SW_DEC = 1 << 2,
1987 CODEC_CAP_MASK_SW_ENC = 1 << 3,
2120 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2130 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2140 VideoEncoderConfiguration()
2142 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2151 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2152 if (
this == &rhs)
return *
this;
2204 enum SIMULCAST_STREAM_MODE {
2210 AUTO_SIMULCAST_STREAM = -1,
2214 DISABLE_SIMULCAST_STREAM = 0,
2218 ENABLE_SIMULCAST_STREAM = 1,
2242 bool operator==(
const SimulcastStreamConfig& rhs)
const {
2437 mode(FIT_MODE_COVER_POSITION),
2446 enum WATERMARK_SOURCE_TYPE {
2625 enum MultipathMode {
2642 enum MultipathType {
2944 enum CLIENT_ROLE_TYPE {
2948 CLIENT_ROLE_BROADCASTER = 1,
2952 CLIENT_ROLE_AUDIENCE = 2,
2959 enum QUALITY_ADAPT_INDICATION {
2967 ADAPT_UP_BANDWIDTH = 1,
2971 ADAPT_DOWN_BANDWIDTH = 2,
2978 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2982 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2986 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
3005 enum EXPERIENCE_QUALITY_TYPE {
3009 EXPERIENCE_QUALITY_GOOD = 0,
3013 EXPERIENCE_QUALITY_BAD = 1,
3019 enum EXPERIENCE_POOR_REASON {
3023 EXPERIENCE_REASON_NONE = 0,
3027 REMOTE_NETWORK_QUALITY_POOR = 1,
3031 LOCAL_NETWORK_QUALITY_POOR = 2,
3035 WIRELESS_SIGNAL_POOR = 4,
3040 WIFI_BLUETOOTH_COEXIST = 8,
3046 enum AUDIO_AINS_MODE {
3051 AINS_MODE_BALANCED = 0,
3057 AINS_MODE_AGGRESSIVE = 1,
3063 AINS_MODE_ULTRALOWLATENCY = 2
3069 enum AUDIO_PROFILE_TYPE {
3079 AUDIO_PROFILE_DEFAULT = 0,
3083 AUDIO_PROFILE_SPEECH_STANDARD = 1,
3087 AUDIO_PROFILE_MUSIC_STANDARD = 2,
3093 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3097 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3103 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3107 AUDIO_PROFILE_IOT = 6,
3111 AUDIO_PROFILE_NUM = 7
3117 enum AUDIO_SCENARIO_TYPE {
3122 AUDIO_SCENARIO_DEFAULT = 0,
3126 AUDIO_SCENARIO_GAME_STREAMING = 3,
3131 AUDIO_SCENARIO_CHATROOM = 5,
3136 AUDIO_SCENARIO_CHORUS = 7,
3140 AUDIO_SCENARIO_MEETING = 8,
3145 AUDIO_SCENARIO_AI_SERVER = 9,
3150 AUDIO_SCENARIO_AI_CLIENT = 10,
3154 AUDIO_SCENARIO_NUM = 11,
3161 OPTIONAL_ENUM_SIZE_T{
3163 kMaxWidthInPixels = 3840,
3165 kMaxHeightInPixels = 2160,
3185 bool operator<(
const VideoFormat& fmt)
const {
3186 if (
height != fmt.height) {
3187 return height < fmt.height;
3188 }
else if (
width != fmt.width) {
3189 return width < fmt.width;
3191 return fps < fmt.fps;
3194 bool operator==(
const VideoFormat& fmt)
const {
3195 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
3197 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
3203 enum VIDEO_CONTENT_HINT {
3212 CONTENT_HINT_MOTION,
3217 CONTENT_HINT_DETAILS
3222 enum SCREEN_SCENARIO_TYPE {
3228 SCREEN_SCENARIO_DOCUMENT = 1,
3233 SCREEN_SCENARIO_GAMING = 2,
3238 SCREEN_SCENARIO_VIDEO = 3,
3244 SCREEN_SCENARIO_RDC = 4,
3250 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3254 APPLICATION_SCENARIO_GENERAL = 0,
3290 APPLICATION_SCENARIO_MEETING = 1,
3299 APPLICATION_SCENARIO_1V1 = 2,
3310 APPLICATION_SCENARIO_LIVESHOW = 3,
3316 enum VIDEO_QOE_PREFERENCE_TYPE {
3320 VIDEO_QOE_PREFERENCE_BALANCE = 1,
3324 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3328 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3332 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3339 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3344 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3348 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3352 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3356 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3367 enum CAMERA_STABILIZATION_MODE {
3371 CAMERA_STABILIZATION_MODE_OFF = -1,
3377 CAMERA_STABILIZATION_MODE_AUTO = 0,
3381 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3385 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3389 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3392 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3398 enum LOCAL_AUDIO_STREAM_STATE {
3402 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3406 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3410 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3414 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3420 enum LOCAL_AUDIO_STREAM_REASON {
3424 LOCAL_AUDIO_STREAM_REASON_OK = 0,
3429 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3433 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3440 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3444 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3448 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3454 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3460 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3466 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3471 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3476 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3482 enum LOCAL_VIDEO_STREAM_STATE {
3486 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3491 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3495 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3499 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3506 enum LOCAL_VIDEO_EVENT_TYPE {
3510 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_HIDDEN = 1,
3514 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 2,
3518 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_STOPPED_BY_USER = 3,
3522 LOCAL_VIDEO_EVENT_TYPE_SCREEN_CAPTURE_SYSTEM_INTERNAL_ERROR = 4,
3528 enum LOCAL_VIDEO_STREAM_REASON {
3532 LOCAL_VIDEO_STREAM_REASON_OK = 0,
3536 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3541 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3546 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3551 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3555 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3560 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3567 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3573 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3578 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3583 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3592 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3598 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3602 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3608 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3622 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3627 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3629 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3633 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3637 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3647 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3652 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3656 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3661 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3667 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3671 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3676 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3678 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3680 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3682 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3684 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_EXCLUDE_WINDOW_FAILED = 34,
3690 enum REMOTE_AUDIO_STATE {
3696 REMOTE_AUDIO_STATE_STOPPED =
3701 REMOTE_AUDIO_STATE_STARTING = 1,
3707 REMOTE_AUDIO_STATE_DECODING =
3713 REMOTE_AUDIO_STATE_FROZEN = 3,
3718 REMOTE_AUDIO_STATE_FAILED = 4,
3724 enum REMOTE_AUDIO_STATE_REASON {
3728 REMOTE_AUDIO_REASON_INTERNAL = 0,
3732 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3736 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3740 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3744 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3748 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3752 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3756 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3760 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3764 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3770 enum REMOTE_VIDEO_STATE {
3776 REMOTE_VIDEO_STATE_STOPPED = 0,
3780 REMOTE_VIDEO_STATE_STARTING = 1,
3787 REMOTE_VIDEO_STATE_DECODING = 2,
3792 REMOTE_VIDEO_STATE_FROZEN = 3,
3797 REMOTE_VIDEO_STATE_FAILED = 4,
3802 enum REMOTE_VIDEO_STATE_REASON {
3806 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3810 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3814 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3818 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3822 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3826 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3830 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3834 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3839 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3844 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3847 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3850 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3854 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3859 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3866 enum REMOTE_USER_STATE {
3870 USER_STATE_MUTE_AUDIO = (1 << 0),
3874 USER_STATE_MUTE_VIDEO = (1 << 1),
3878 USER_STATE_ENABLE_VIDEO = (1 << 4),
3882 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3941 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3945 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3949 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3953 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3957 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3961 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
4090 enum AUDIO_SAMPLE_RATE_TYPE {
4094 AUDIO_SAMPLE_RATE_32000 = 32000,
4098 AUDIO_SAMPLE_RATE_44100 = 44100,
4102 AUDIO_SAMPLE_RATE_48000 = 48000,
4107 enum VIDEO_CODEC_TYPE_FOR_STREAM {
4111 VIDEO_CODEC_H264_FOR_STREAM = 1,
4115 VIDEO_CODEC_H265_FOR_STREAM = 2,
4121 enum VIDEO_CODEC_PROFILE_TYPE {
4125 VIDEO_CODEC_PROFILE_BASELINE = 66,
4130 VIDEO_CODEC_PROFILE_MAIN = 77,
4135 VIDEO_CODEC_PROFILE_HIGH = 100,
4141 enum AUDIO_CODEC_PROFILE_TYPE {
4145 AUDIO_CODEC_PROFILE_LC_AAC = 0,
4149 AUDIO_CODEC_PROFILE_HE_AAC = 1,
4153 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
4203 enum RTMP_STREAM_PUBLISH_STATE {
4207 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4211 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4216 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4225 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4230 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4236 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4242 enum RTMP_STREAM_PUBLISH_REASON {
4246 RTMP_STREAM_PUBLISH_REASON_OK = 0,
4250 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4254 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4258 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4262 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4266 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4270 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4274 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4279 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4283 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4288 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4293 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4299 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4304 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
4308 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4313 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4318 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4324 enum RTMP_STREAMING_EVENT {
4328 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4333 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4337 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4341 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4426 enum CONNECTION_STATE_TYPE {
4434 CONNECTION_STATE_DISCONNECTED = 1,
4444 CONNECTION_STATE_CONNECTING = 2,
4452 CONNECTION_STATE_CONNECTED = 3,
4462 CONNECTION_STATE_RECONNECTING = 4,
4472 CONNECTION_STATE_FAILED = 5,
4825 enum VIDEO_TRANSCODER_ERROR {
4830 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4834 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4838 VT_ERR_INVALID_IMAGE_PATH = 3,
4842 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4846 VT_ERR_INVALID_LAYOUT = 5,
4850 VT_ERR_INTERNAL = 20
4900 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
4905 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
4970 enum LASTMILE_PROBE_RESULT_STATE {
4974 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4980 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4984 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
5034 enum CONNECTION_CHANGED_REASON_TYPE {
5038 CONNECTION_CHANGED_CONNECTING = 0,
5042 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
5046 CONNECTION_CHANGED_INTERRUPTED = 2,
5051 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
5057 CONNECTION_CHANGED_JOIN_FAILED = 4,
5061 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
5066 CONNECTION_CHANGED_INVALID_APP_ID = 6,
5076 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
5091 CONNECTION_CHANGED_INVALID_TOKEN = 8,
5096 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
5105 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
5109 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
5113 CONNECTION_CHANGED_RENEW_TOKEN = 12,
5118 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
5123 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
5127 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
5131 CONNECTION_CHANGED_LOST = 16,
5135 CONNECTION_CHANGED_ECHO_TEST = 17,
5139 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
5143 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
5147 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
5152 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
5156 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
5160 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
5164 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
5170 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
5177 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
5182 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
5188 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
5194 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
5204 NETWORK_TYPE_UNKNOWN = -1,
5208 NETWORK_TYPE_DISCONNECTED = 0,
5212 NETWORK_TYPE_LAN = 1,
5216 NETWORK_TYPE_WIFI = 2,
5220 NETWORK_TYPE_MOBILE_2G = 3,
5224 NETWORK_TYPE_MOBILE_3G = 4,
5228 NETWORK_TYPE_MOBILE_4G = 5,
5232 NETWORK_TYPE_MOBILE_5G = 6,
5238 enum VIDEO_VIEW_SETUP_MODE {
5242 VIDEO_VIEW_SETUP_REPLACE = 0,
5246 VIDEO_VIEW_SETUP_ADD = 1,
5253 VIDEO_VIEW_SETUP_REMOVE = 2,
5340 position(media::base::POSITION_POST_CAPTURER) {}
5342 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5354 position(media::base::POSITION_POST_CAPTURER) {}
5356 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5368 position(media::base::POSITION_POST_CAPTURER) {}
5370 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5383 position(media::base::POSITION_POST_CAPTURER) {}
5439 float redness,
float sharpness)
5790 :
mode(lowlightMode),
level(lowlightLevel) {}
5845 :
mode(denoiserMode),
level(denoiserLevel) {}
5973 source(OPTIONAL_NULLPTR),
6039 enum AUDIO_TRACK_TYPE {
6043 AUDIO_TRACK_INVALID = -1,
6049 AUDIO_TRACK_MIXABLE = 0,
6059 AUDIO_TRACK_DIRECT = 1,
6105 enum VOICE_BEAUTIFIER_PRESET {
6109 VOICE_BEAUTIFIER_OFF = 0x00000000,
6115 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
6121 CHAT_BEAUTIFIER_FRESH = 0x01010200,
6127 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
6137 SINGING_BEAUTIFIER = 0x01020100,
6141 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
6145 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
6149 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
6153 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
6157 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
6161 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
6165 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
6169 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
6180 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
6194 enum AUDIO_EFFECT_PRESET {
6198 AUDIO_EFFECT_OFF = 0x00000000,
6202 ROOM_ACOUSTICS_KTV = 0x02010100,
6206 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
6210 ROOM_ACOUSTICS_STUDIO = 0x02010300,
6214 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
6218 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
6222 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
6226 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
6234 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
6241 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
6246 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
6252 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
6258 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
6264 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
6270 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
6276 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
6280 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
6284 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
6288 STYLE_TRANSFORMATION_RNB = 0x02030100,
6292 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
6298 PITCH_CORRECTION = 0x02040100,
6308 enum VOICE_CONVERSION_PRESET {
6312 VOICE_CONVERSION_OFF = 0x00000000,
6317 VOICE_CHANGER_NEUTRAL = 0x03010100,
6322 VOICE_CHANGER_SWEET = 0x03010200,
6327 VOICE_CHANGER_SOLID = 0x03010300,
6332 VOICE_CHANGER_BASS = 0x03010400,
6335 VOICE_CHANGER_CARTOON = 0x03010500,
6338 VOICE_CHANGER_CHILDLIKE = 0x03010600,
6341 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6344 VOICE_CHANGER_MONSTER = 0x03010800,
6347 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6350 VOICE_CHANGER_GROOT = 0x03010A00,
6353 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6356 VOICE_CHANGER_IRON_LADY = 0x03010C00,
6359 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6362 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6365 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6372 enum HEADPHONE_EQUALIZER_PRESET {
6376 HEADPHONE_EQUALIZER_OFF = 0x00000000,
6380 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6384 HEADPHONE_EQUALIZER_INEAR = 0x04000002
6390 enum VOICE_AI_TUNER_TYPE {
6394 VOICE_AI_TUNER_MATURE_MALE,
6398 VOICE_AI_TUNER_FRESH_MALE,
6402 VOICE_AI_TUNER_ELEGANT_FEMALE,
6406 VOICE_AI_TUNER_SWEET_FEMALE,
6410 VOICE_AI_TUNER_WARM_MALE_SINGING,
6414 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6418 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6422 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6426 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6430 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6454 #if defined(__APPLE__) && !TARGET_OS_IOS
6455 bool excludeCurrentProcessAudio =
true;
6595 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
6607 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
6619 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
6631 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
6649 enum AUDIO_RECORDING_QUALITY_TYPE {
6654 AUDIO_RECORDING_QUALITY_LOW = 0,
6659 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6664 AUDIO_RECORDING_QUALITY_HIGH = 2,
6669 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6675 enum AUDIO_FILE_RECORDING_TYPE {
6679 AUDIO_FILE_RECORDING_MIC = 1,
6683 AUDIO_FILE_RECORDING_PLAYBACK = 2,
6687 AUDIO_FILE_RECORDING_MIXED = 3,
6693 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6697 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6701 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6705 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6765 quality(AUDIO_RECORDING_QUALITY_LOW),
6769 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6777 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
6778 AUDIO_FILE_RECORDING_TYPE type,
6779 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6787 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
6810 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6877 AREA_CODE_CN = 0x00000001,
6881 AREA_CODE_NA = 0x00000002,
6885 AREA_CODE_EU = 0x00000004,
6889 AREA_CODE_AS = 0x00000008,
6893 AREA_CODE_JP = 0x00000010,
6897 AREA_CODE_IN = 0x00000020,
6901 AREA_CODE_GLOB = (0xFFFFFFFF)
6912 AREA_CODE_OC = 0x00000040,
6916 AREA_CODE_SA = 0x00000080,
6920 AREA_CODE_AF = 0x00000100,
6924 AREA_CODE_KR = 0x00000200,
6928 AREA_CODE_HKMC = 0x00000400,
6932 AREA_CODE_US = 0x00000800,
6936 AREA_CODE_RU = 0x00001000,
6940 AREA_CODE_OVS = 0xFFFFFFFE
6946 enum CHANNEL_MEDIA_RELAY_ERROR {
6954 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6963 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6967 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6971 RELAY_ERROR_FAILED_JOIN_SRC = 4,
6975 RELAY_ERROR_FAILED_JOIN_DEST = 5,
6979 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6983 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6988 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6992 RELAY_ERROR_INTERNAL_ERROR = 9,
6996 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
7000 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
7006 enum CHANNEL_MEDIA_RELAY_STATE {
7011 RELAY_STATE_IDLE = 0,
7015 RELAY_STATE_CONNECTING = 1,
7019 RELAY_STATE_RUNNING = 2,
7023 RELAY_STATE_FAILURE = 3,
7129 :
userId(OPTIONAL_NULLPTR),
7138 if (rhs.
userId != OPTIONAL_NULLPTR) {
7139 const size_t len = std::strlen(rhs.
userId);
7140 char* buf =
new char[len + 1];
7141 std::memcpy(buf, rhs.
userId, len);
7147 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
7148 if (
this == &rhs)
return *
this;
7149 userId = OPTIONAL_NULLPTR;
7153 if (rhs.userId != OPTIONAL_NULLPTR) {
7154 const size_t len = std::strlen(rhs.userId);
7155 char* buf =
new char[len + 1];
7156 std::memcpy(buf, rhs.userId, len);
7163 ~PeerDownlinkInfo() {
delete[]
userId; }
7206 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
7207 if (
this == &rhs)
return *
this;
7232 enum ENCRYPTION_MODE {
7311 const char* getEncryptionString()
const {
7314 return "aes-128-xts";
7316 return "aes-128-ecb";
7318 return "aes-256-xts";
7320 return "sm4-128-ecb";
7322 return "aes-128-gcm";
7324 return "aes-256-gcm";
7326 return "aes-128-gcm-2";
7328 return "aes-256-gcm-2";
7330 return "aes-128-gcm-2";
7332 return "aes-128-gcm-2";
7340 enum ENCRYPTION_ERROR_TYPE {
7344 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
7349 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
7353 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
7358 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
7362 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
7365 enum UPLOAD_ERROR_REASON {
7367 UPLOAD_NET_ERROR = 1,
7368 UPLOAD_SERVER_ERROR = 2,
7376 enum RENEW_TOKEN_ERROR_CODE {
7380 RENEW_TOKEN_SUCCESS = 0,
7385 RENEW_TOKEN_FAILURE = 1,
7390 RENEW_TOKEN_TOKEN_EXPIRED = 2,
7399 RENEW_TOKEN_INVALID_TOKEN = 3,
7405 RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
7410 RENEW_TOKEN_INCONSISTENT_APPID = 5,
7414 RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
7420 enum PERMISSION_TYPE {
7439 enum STREAM_SUBSCRIBE_STATE {
7459 SUB_STATE_NO_SUBSCRIBED = 1,
7463 SUB_STATE_SUBSCRIBING = 2,
7467 SUB_STATE_SUBSCRIBED = 3
7473 enum STREAM_PUBLISH_STATE {
7488 PUB_STATE_NO_PUBLISHED = 1,
7492 PUB_STATE_PUBLISHING = 2,
7496 PUB_STATE_PUBLISHED = 3
7549 :
view(OPTIONAL_NULLPTR),
7552 token(OPTIONAL_NULLPTR),
7576 enum EAR_MONITORING_FILTER_TYPE {
7580 EAR_MONITORING_FILTER_NONE = (1 << 0),
7585 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7589 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7595 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7601 enum THREAD_PRIORITY_TYPE {
7628 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7633 struct ScreenVideoParameters {
7637 VideoDimensions dimensions;
7649 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7651 ScreenVideoParameters() : dimensions(1280, 720) {}
7657 struct ScreenCaptureParameters2 {
7669 bool captureAudio =
false;
7674 ScreenAudioParameters audioParams;
7682 bool captureVideo =
true;
7687 ScreenVideoParameters videoParams;
7694 enum MEDIA_TRACE_EVENT {
7698 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7702 MEDIA_TRACE_EVENT_VIDEO_DECODED,
7793 enum CONFIG_FETCH_TYPE {
7797 CONFIG_FETCH_TYPE_INITIALIZE = 1,
7801 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7807 enum LOCAL_PROXY_MODE {
7812 ConnectivityFirst = 0,
7911 mode(ConnectivityFirst),
7918 enum RecorderStreamType {
7948 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
7957 enum RdtStreamType {
8014 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
8027 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
8028 return p != OPTIONAL_NULLPTR;
8035 virtual void onCertificateRequired() = 0;
8036 virtual void onLicenseRequest() = 0;
8037 virtual void onLicenseValidated() = 0;
8038 virtual void onLicenseError(
int result) = 0;
8172 strUid(OPTIONAL_NULLPTR),
8186 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
8193 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
8195 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
8219 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
8221 const char* certificate_buf,
8222 int certificate_len);
8262 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();