9 #pragma once // NOLINT(build/header_guard)
17 #include "IAgoraParameter.h"
18 #include "AgoraMediaBase.h"
19 #include "AgoraRefPtr.h"
20 #include "AgoraOptional.h"
22 #define MAX_PATH_260 (260)
26 #ifndef WIN32_LEAN_AND_MEAN
27 #define WIN32_LEAN_AND_MEAN
28 #endif // !WIN32_LEAN_AND_MEAN
29 #if defined(__aarch64__)
30 #include <arm64intr.h>
34 #if defined(AGORARTC_EXPORT)
35 #define AGORA_API extern "C" __declspec(dllexport)
36 #define AGORA_CPP_API __declspec(dllexport)
38 #define AGORA_API extern "C" __declspec(dllimport)
39 #define AGORA_CPP_API __declspec(dllimport)
40 #endif // AGORARTC_EXPORT
42 #define AGORA_CALL __cdecl
46 #define AGORA_CPP_INTERNAL_API extern
48 #elif defined(__APPLE__)
50 #include <TargetConditionals.h>
52 #define AGORA_API extern "C" __attribute__((visibility("default")))
53 #define AGORA_CPP_API __attribute__((visibility("default")))
56 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
58 #elif defined(__ANDROID__) || defined(__linux__)
60 #define AGORA_API extern "C" __attribute__((visibility("default")))
61 #define AGORA_CPP_API __attribute__((visibility("default")))
66 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
68 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
70 #define AGORA_API extern "C"
78 #ifndef OPTIONAL_ENUM_SIZE_T
79 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
80 #define OPTIONAL_ENUM_SIZE_T enum : size_t
82 #define OPTIONAL_ENUM_SIZE_T enum
86 #ifndef OPTIONAL_NULLPTR
87 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
88 #define OPTIONAL_NULLPTR nullptr
90 #define OPTIONAL_NULLPTR NULL
94 #define INVALID_DISPLAY_ID (-2)
102 typedef T value_type;
103 typedef T* pointer_type;
106 explicit AutoPtr(pointer_type p = OPTIONAL_NULLPTR) : ptr_(p) {}
111 ptr_ = OPTIONAL_NULLPTR;
115 operator bool()
const {
return (ptr_ != OPTIONAL_NULLPTR); }
117 value_type& operator*()
const {
return *get(); }
119 pointer_type operator->()
const {
return get(); }
121 pointer_type get()
const {
return ptr_; }
123 pointer_type release() {
124 pointer_type ret = ptr_;
129 void reset(pointer_type ptr = OPTIONAL_NULLPTR) {
130 if (ptr != ptr_ && ptr_) {
137 template <
class C1,
class C2>
138 bool queryInterface(C1* c, C2 iid) {
139 pointer_type p = OPTIONAL_NULLPTR;
140 if (c && !c->queryInterface(iid,
reinterpret_cast<void**
>(&p))) {
144 return (p != OPTIONAL_NULLPTR);
157 typedef typename AutoPtr<T>::pointer_type pointer_type;
163 if (
this != &rhs) this->reset(rhs.clone());
166 pointer_type clone()
const {
167 if (!this->get())
return OPTIONAL_NULLPTR;
168 return this->get()->clone();
174 virtual bool empty()
const = 0;
175 virtual const char* c_str() = 0;
176 virtual const char* data() = 0;
177 virtual size_t length() = 0;
179 virtual void release() = 0;
186 virtual void* current() = 0;
187 virtual const void* const_current()
const = 0;
188 virtual bool next() = 0;
189 virtual void release() = 0;
196 virtual size_t size()
const = 0;
197 virtual void release() = 0;
206 typedef T value_type;
207 typedef value_type& reference;
208 typedef const value_type& const_reference;
209 typedef value_type* pointer;
210 typedef const value_type* const_pointer;
222 return p->current() == rhs.p->current();
224 return valid() == rhs.valid();
226 bool operator!=(
const AOutputIterator& rhs)
const {
return !this->operator==(rhs); }
227 reference operator*() {
return *
reinterpret_cast<pointer
>(p->current()); }
228 const_reference operator*()
const {
return *
reinterpret_cast<const_pointer
>(p->const_current()); }
229 bool valid()
const {
return p && p->current() != OPTIONAL_NULLPTR; }
238 typedef T value_type;
239 typedef value_type& reference;
240 typedef const value_type& const_reference;
241 typedef value_type* pointer;
242 typedef const value_type* const_pointer;
243 typedef size_t size_type;
248 AList() : container(OPTIONAL_NULLPTR), owner(
false) {}
249 AList(
IContainer* c,
bool take_ownership) : container(c), owner(take_ownership) {}
250 ~
AList() { reset(); }
251 void reset(
IContainer* c = OPTIONAL_NULLPTR,
bool take_ownership =
false) {
252 if (owner && container) container->release();
254 owner = take_ownership;
258 size_type size()
const {
return container ? container->size() : 0; }
259 bool empty()
const {
return size() == 0; }
267 enum CHANNEL_PROFILE_TYPE {
273 CHANNEL_PROFILE_COMMUNICATION = 0,
279 CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
284 CHANNEL_PROFILE_GAME __deprecated = 2,
290 CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
296 CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
302 enum WARN_CODE_TYPE {
307 WARN_INVALID_VIEW = 8,
312 WARN_INIT_VIDEO = 16,
322 WARN_NO_AVAILABLE_CHANNEL = 103,
328 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
333 WARN_LOOKUP_CHANNEL_REJECTED = 105,
339 WARN_OPEN_CHANNEL_TIMEOUT = 106,
344 WARN_OPEN_CHANNEL_REJECTED = 107,
350 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
354 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
358 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
362 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
366 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
370 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
374 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
377 WARN_CHANNEL_SOCKET_ERROR = 134,
381 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
385 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
389 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
393 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
397 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
401 WARN_ADM_RECORD_MALFUNCTION = 1021,
405 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
409 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
417 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
421 WARN_APM_HOWLING = 1051,
425 WARN_ADM_GLITCH_STATE = 1052,
429 WARN_ADM_IMPROPER_SETTINGS = 1053,
433 WARN_ADM_POP_STATE = 1055,
437 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
442 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
450 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
456 enum ERROR_CODE_TYPE {
470 ERR_INVALID_ARGUMENT = 2,
481 ERR_NOT_SUPPORTED = 4,
489 ERR_BUFFER_TOO_SMALL = 6,
493 ERR_NOT_INITIALIZED = 7,
497 ERR_INVALID_STATE = 8,
502 ERR_NO_PERMISSION = 9,
525 ERR_BIND_SOCKET = 13,
536 ERR_JOIN_CHANNEL_REJECTED = 17,
543 ERR_LEAVE_CHANNEL_REJECTED = 18,
547 ERR_ALREADY_IN_USE = 19,
557 ERR_INIT_NET_ENGINE = 21,
562 ERR_RESOURCE_LIMITED = 22,
567 ERR_FUNC_IS_PROHIBITED = 23,
574 ERR_INVALID_APP_ID = 101,
579 ERR_INVALID_CHANNEL_NAME = 102,
585 ERR_NO_SERVER_RESOURCES = 103,
598 ERR_TOKEN_EXPIRED = 109,
615 ERR_INVALID_TOKEN = 110,
620 ERR_CONNECTION_INTERRUPTED = 111,
625 ERR_CONNECTION_LOST = 112,
630 ERR_NOT_IN_CHANNEL = 113,
635 ERR_SIZE_TOO_LARGE = 114,
640 ERR_BITRATE_LIMIT = 115,
645 ERR_TOO_MANY_DATA_STREAMS = 116,
649 ERR_STREAM_MESSAGE_TIMEOUT = 117,
653 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
658 ERR_DECRYPTION_FAILED = 120,
662 ERR_INVALID_USER_ID = 121,
667 ERR_DATASTREAM_DECRYPTION_FAILED = 122,
671 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
677 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
682 ERR_LICENSE_CREDENTIAL_INVALID = 131,
688 ERR_INVALID_USER_ACCOUNT = 134,
696 ERR_MODULE_NOT_FOUND = 157,
700 ERR_CERT_JSON_PART = 158,
701 ERR_CERT_JSON_INVAL = 159,
702 ERR_CERT_JSON_NOMEM = 160,
703 ERR_CERT_CUSTOM = 161,
704 ERR_CERT_CREDENTIAL = 162,
709 ERR_CERT_DUEDATE = 167,
710 ERR_CERT_REQUEST = 168,
713 ERR_PCMSEND_FORMAT = 200,
714 ERR_PCMSEND_BUFFEROVERFLOW = 201,
722 ERR_RDT_USER_NOT_EXIST = 250,
727 ERR_RDT_USER_NOT_READY = 251,
732 ERR_RDT_DATA_BLOCKED = 252,
737 ERR_RDT_CMD_EXCEED_LIMIT = 253,
742 ERR_RDT_DATA_EXCEED_LIMIT = 254,
747 ERR_RDT_ENCRYPTION = 255,
752 ERR_LOGIN_ALREADY_LOGIN = 428,
759 ERR_LOAD_MEDIA_ENGINE = 1001,
765 ERR_ADM_GENERAL_ERROR = 1005,
770 ERR_ADM_INIT_PLAYOUT = 1008,
774 ERR_ADM_START_PLAYOUT = 1009,
778 ERR_ADM_STOP_PLAYOUT = 1010,
783 ERR_ADM_INIT_RECORDING = 1011,
787 ERR_ADM_START_RECORDING = 1012,
791 ERR_ADM_STOP_RECORDING = 1013,
795 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
798 enum LICENSE_ERROR_TYPE {
802 LICENSE_ERR_INVALID = 1,
806 LICENSE_ERR_EXPIRE = 2,
810 LICENSE_ERR_MINUTES_EXCEED = 3,
814 LICENSE_ERR_LIMITED_PERIOD = 4,
818 LICENSE_ERR_DIFF_DEVICES = 5,
822 LICENSE_ERR_INTERNAL = 99,
828 enum AUDIO_SESSION_OPERATION_RESTRICTION {
832 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
836 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
840 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
845 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
850 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
853 typedef const char* user_id_t;
854 typedef void* view_t;
880 typedef util::AList<UserInfo> UserList;
888 enum USER_OFFLINE_REASON_TYPE {
892 USER_OFFLINE_QUIT = 0,
898 USER_OFFLINE_DROPPED = 1,
902 USER_OFFLINE_BECOME_AUDIENCE = 2,
905 enum INTERFACE_ID_TYPE {
906 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
907 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
908 AGORA_IID_PARAMETER_ENGINE = 3,
909 AGORA_IID_MEDIA_ENGINE = 4,
910 AGORA_IID_AUDIO_ENGINE = 5,
911 AGORA_IID_VIDEO_ENGINE = 6,
912 AGORA_IID_RTC_CONNECTION = 7,
913 AGORA_IID_SIGNALING_ENGINE = 8,
914 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
915 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
916 AGORA_IID_STATE_SYNC = 13,
917 AGORA_IID_META_SERVICE = 14,
918 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
919 AGORA_IID_H265_TRANSCODER = 16,
930 QUALITY_UNKNOWN __deprecated = 0,
934 QUALITY_EXCELLENT = 1,
959 QUALITY_UNSUPPORTED = 7,
963 QUALITY_DETECTING = 8,
987 enum VIDEO_ORIENTATION {
991 VIDEO_ORIENTATION_0 = 0,
995 VIDEO_ORIENTATION_90 = 90,
999 VIDEO_ORIENTATION_180 = 180,
1003 VIDEO_ORIENTATION_270 = 270
1013 FRAME_RATE_FPS_1 = 1,
1017 FRAME_RATE_FPS_7 = 7,
1021 FRAME_RATE_FPS_10 = 10,
1025 FRAME_RATE_FPS_15 = 15,
1029 FRAME_RATE_FPS_24 = 24,
1033 FRAME_RATE_FPS_30 = 30,
1037 FRAME_RATE_FPS_60 = 60,
1041 FRAME_WIDTH_960 = 960,
1045 FRAME_HEIGHT_540 = 540,
1051 enum VIDEO_FRAME_TYPE {
1053 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1055 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1057 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1059 VIDEO_FRAME_TYPE_B_FRAME = 5,
1061 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1063 VIDEO_FRAME_TYPE_UNKNOW
1069 enum ORIENTATION_MODE {
1077 ORIENTATION_MODE_ADAPTIVE = 0,
1084 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1091 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1097 enum DEGRADATION_PREFERENCE {
1112 MAINTAIN_QUALITY = 0,
1118 MAINTAIN_FRAMERATE = 1,
1125 MAINTAIN_BALANCED = 2,
1129 MAINTAIN_RESOLUTION = 3,
1150 bool operator==(
const VideoDimensions& rhs)
const {
1151 return width == rhs.width &&
height == rhs.height;
1160 const int STANDARD_BITRATE = 0;
1169 const int COMPATIBLE_BITRATE = -1;
1174 const int DEFAULT_MIN_BITRATE = -1;
1179 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1184 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1185 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1186 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1187 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1193 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1195 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1197 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1199 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1201 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1203 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1209 enum VIDEO_CODEC_TYPE {
1215 VIDEO_CODEC_NONE = 0,
1219 VIDEO_CODEC_VP8 = 1,
1223 VIDEO_CODEC_H264 = 2,
1227 VIDEO_CODEC_H265 = 3,
1233 VIDEO_CODEC_GENERIC = 6,
1238 VIDEO_CODEC_GENERIC_H264 = 7,
1243 VIDEO_CODEC_AV1 = 12,
1247 VIDEO_CODEC_VP9 = 13,
1251 VIDEO_CODEC_GENERIC_JPEG = 20,
1257 enum CAMERA_FOCAL_LENGTH_TYPE {
1261 CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1265 CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1269 CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1273 CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1371 enum AUDIO_CODEC_TYPE {
1375 AUDIO_CODEC_OPUS = 1,
1380 AUDIO_CODEC_PCMA = 3,
1384 AUDIO_CODEC_PCMU = 4,
1388 AUDIO_CODEC_G722 = 5,
1395 AUDIO_CODEC_AACLC = 8,
1399 AUDIO_CODEC_HEAAC = 9,
1403 AUDIO_CODEC_JC1 = 10,
1407 AUDIO_CODEC_HEAAC2 = 11,
1411 AUDIO_CODEC_LPCNET = 12,
1415 AUDIO_CODEC_OPUSMC = 13,
1421 enum AUDIO_ENCODING_TYPE {
1426 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1431 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1436 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1441 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1446 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1451 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1456 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1461 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1466 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1471 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1476 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1482 enum WATERMARK_FIT_MODE {
1487 FIT_MODE_COVER_POSITION = 0,
1492 FIT_MODE_USE_IMAGE_RATIO = 1,
1520 :
codec(AUDIO_CODEC_AACLC),
1570 channelNum(rhs.channelNum),
1599 enum H264PacketizeMode {
1613 enum VIDEO_STREAM_TYPE {
1617 VIDEO_STREAM_HIGH = 0,
1621 VIDEO_STREAM_LOW = 1,
1625 VIDEO_STREAM_LAYER_1 = 4,
1629 VIDEO_STREAM_LAYER_2 = 5,
1633 VIDEO_STREAM_LAYER_3 = 6,
1637 VIDEO_STREAM_LAYER_4 = 7,
1641 VIDEO_STREAM_LAYER_5 = 8,
1645 VIDEO_STREAM_LAYER_6 = 9,
1669 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1672 MAX_USER_ACCOUNT_LENGTH = 256
1686 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1692 presentationMs(-1) {}
1706 presentationMs(rhs.presentationMs) {}
1709 if (
this == &rhs)
return *
this;
1721 presentationMs = rhs.presentationMs;
1775 int64_t presentationMs;
1781 enum COMPRESSION_PREFERENCE {
1788 PREFER_COMPRESSION_AUTO = -1,
1792 PREFER_LOW_LATENCY = 0,
1802 enum ENCODING_PREFERENCE {
1810 PREFER_SOFTWARE = 0,
1814 PREFER_HARDWARE = 1,
1842 COMPRESSION_PREFERENCE compression_preference,
1843 bool encode_alpha) :
1848 bool operator==(
const AdvanceOptions& rhs)
const {
1858 enum VIDEO_MIRROR_MODE_TYPE {
1862 VIDEO_MIRROR_MODE_AUTO = 0,
1866 VIDEO_MIRROR_MODE_ENABLED = 1,
1870 VIDEO_MIRROR_MODE_DISABLED = 2,
1873 #if defined(__APPLE__) && TARGET_OS_IOS
1877 enum CAMERA_FORMAT_TYPE {
1885 enum VIDEO_MODULE_TYPE {
1887 VIDEO_MODULE_CAPTURER = 0,
1889 VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1891 VIDEO_MODULE_HARDWARE_ENCODER = 2,
1893 VIDEO_MODULE_SOFTWARE_DECODER = 3,
1895 VIDEO_MODULE_HARDWARE_DECODER = 4,
1897 VIDEO_MODULE_RENDERER = 5,
1900 enum HDR_CAPABILITY {
1902 HDR_CAPABILITY_UNKNOWN = -1,
1904 HDR_CAPABILITY_UNSUPPORTED = 0,
1906 HDR_CAPABILITY_SUPPORTED = 1,
1910 enum CODEC_CAP_MASK {
1912 CODEC_CAP_MASK_NONE = 0,
1915 CODEC_CAP_MASK_HW_DEC = 1 << 0,
1918 CODEC_CAP_MASK_HW_ENC = 1 << 1,
1921 CODEC_CAP_MASK_SW_DEC = 1 << 2,
1924 CODEC_CAP_MASK_SW_ENC = 1 << 3,
1928 VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1929 VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1932 : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
1933 swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
2081 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2091 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2101 VideoEncoderConfiguration()
2103 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2112 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2113 if (
this == &rhs)
return *
this;
2157 enum SIMULCAST_STREAM_MODE {
2161 AUTO_SIMULCAST_STREAM = -1,
2165 DISABLE_SIMULCAST_STREAM = 0,
2169 ENABLE_SIMULCAST_STREAM = 1,
2191 bool operator==(
const SimulcastStreamConfig& rhs)
const {
2376 mode(FIT_MODE_COVER_POSITION),
2385 enum WATERMARK_SOURCE_TYPE {
2562 enum MultipathMode {
2579 enum MultipathType {
2879 enum CLIENT_ROLE_TYPE {
2883 CLIENT_ROLE_BROADCASTER = 1,
2887 CLIENT_ROLE_AUDIENCE = 2,
2894 enum QUALITY_ADAPT_INDICATION {
2902 ADAPT_UP_BANDWIDTH = 1,
2906 ADAPT_DOWN_BANDWIDTH = 2,
2913 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2917 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2921 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2940 enum EXPERIENCE_QUALITY_TYPE {
2942 EXPERIENCE_QUALITY_GOOD = 0,
2944 EXPERIENCE_QUALITY_BAD = 1,
2950 enum EXPERIENCE_POOR_REASON {
2954 EXPERIENCE_REASON_NONE = 0,
2958 REMOTE_NETWORK_QUALITY_POOR = 1,
2962 LOCAL_NETWORK_QUALITY_POOR = 2,
2966 WIRELESS_SIGNAL_POOR = 4,
2971 WIFI_BLUETOOTH_COEXIST = 8,
2977 enum AUDIO_AINS_MODE {
2981 AINS_MODE_BALANCED = 0,
2985 AINS_MODE_AGGRESSIVE = 1,
2989 AINS_MODE_ULTRALOWLATENCY = 2
2995 enum AUDIO_PROFILE_TYPE {
3005 AUDIO_PROFILE_DEFAULT = 0,
3009 AUDIO_PROFILE_SPEECH_STANDARD = 1,
3013 AUDIO_PROFILE_MUSIC_STANDARD = 2,
3020 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
3024 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
3031 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
3035 AUDIO_PROFILE_IOT = 6,
3036 AUDIO_PROFILE_NUM = 7
3042 enum AUDIO_SCENARIO_TYPE {
3047 AUDIO_SCENARIO_DEFAULT = 0,
3053 AUDIO_SCENARIO_GAME_STREAMING = 3,
3059 AUDIO_SCENARIO_CHATROOM = 5,
3064 AUDIO_SCENARIO_CHORUS = 7,
3068 AUDIO_SCENARIO_MEETING = 8,
3073 AUDIO_SCENARIO_AI_SERVER = 9,
3077 AUDIO_SCENARIO_AI_CLIENT = 10,
3081 AUDIO_SCENARIO_NUM = 11,
3088 OPTIONAL_ENUM_SIZE_T{
3090 kMaxWidthInPixels = 3840,
3092 kMaxHeightInPixels = 2160,
3112 bool operator<(
const VideoFormat& fmt)
const {
3113 if (
height != fmt.height) {
3114 return height < fmt.height;
3115 }
else if (
width != fmt.width) {
3116 return width < fmt.width;
3118 return fps < fmt.fps;
3121 bool operator==(
const VideoFormat& fmt)
const {
3122 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
3124 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
3130 enum VIDEO_CONTENT_HINT {
3141 CONTENT_HINT_MOTION,
3147 CONTENT_HINT_DETAILS
3152 enum SCREEN_SCENARIO_TYPE {
3158 SCREEN_SCENARIO_DOCUMENT = 1,
3163 SCREEN_SCENARIO_GAMING = 2,
3168 SCREEN_SCENARIO_VIDEO = 3,
3174 SCREEN_SCENARIO_RDC = 4,
3180 enum VIDEO_APPLICATION_SCENARIO_TYPE {
3184 APPLICATION_SCENARIO_GENERAL = 0,
3188 APPLICATION_SCENARIO_MEETING = 1,
3192 APPLICATION_SCENARIO_1V1 = 2,
3196 APPLICATION_SCENARIO_LIVESHOW = 3,
3202 enum VIDEO_QOE_PREFERENCE_TYPE {
3206 VIDEO_QOE_PREFERENCE_BALANCE = 1,
3210 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
3214 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
3218 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
3225 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
3230 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
3233 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
3236 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
3239 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
3242 enum CAMERA_STABILIZATION_MODE {
3245 CAMERA_STABILIZATION_MODE_OFF = -1,
3248 CAMERA_STABILIZATION_MODE_AUTO = 0,
3251 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
3254 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
3257 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
3260 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
3266 enum LOCAL_AUDIO_STREAM_STATE {
3270 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
3274 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
3278 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
3282 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
3288 enum LOCAL_AUDIO_STREAM_REASON {
3292 LOCAL_AUDIO_STREAM_REASON_OK = 0,
3297 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
3301 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3308 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
3312 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
3316 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
3319 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
3322 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
3326 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
3329 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
3332 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
3337 enum LOCAL_VIDEO_STREAM_STATE {
3341 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
3346 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3350 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3354 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3360 enum LOCAL_VIDEO_STREAM_REASON {
3364 LOCAL_VIDEO_STREAM_REASON_OK = 0,
3368 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3373 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3378 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3384 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3388 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3393 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3400 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3406 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3411 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3416 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3421 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3426 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3430 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3436 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3451 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3453 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3455 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3457 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3459 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3465 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3468 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3470 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3472 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3480 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3482 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3484 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3486 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_USER = 31,
3488 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_INTERRUPTED_BY_OTHER = 32,
3490 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_STOPPED_BY_CALL = 33,
3496 enum REMOTE_AUDIO_STATE {
3502 REMOTE_AUDIO_STATE_STOPPED =
3507 REMOTE_AUDIO_STATE_STARTING = 1,
3513 REMOTE_AUDIO_STATE_DECODING =
3519 REMOTE_AUDIO_STATE_FROZEN = 3,
3524 REMOTE_AUDIO_STATE_FAILED = 4,
3530 enum REMOTE_AUDIO_STATE_REASON {
3534 REMOTE_AUDIO_REASON_INTERNAL = 0,
3538 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3542 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3547 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3552 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3557 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3562 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3566 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3570 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3574 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3580 enum REMOTE_VIDEO_STATE {
3587 REMOTE_VIDEO_STATE_STOPPED = 0,
3591 REMOTE_VIDEO_STATE_STARTING = 1,
3598 REMOTE_VIDEO_STATE_DECODING = 2,
3602 REMOTE_VIDEO_STATE_FROZEN = 3,
3606 REMOTE_VIDEO_STATE_FAILED = 4,
3611 enum REMOTE_VIDEO_STATE_REASON {
3615 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3619 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3623 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3627 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3631 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3635 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3639 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3643 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3647 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3651 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3654 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3657 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3660 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3664 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3671 enum REMOTE_USER_STATE {
3675 USER_STATE_MUTE_AUDIO = (1 << 0),
3679 USER_STATE_MUTE_VIDEO = (1 << 1),
3683 USER_STATE_ENABLE_VIDEO = (1 << 4),
3687 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3746 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3750 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3754 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3758 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3762 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3766 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3816 bool isLowLatencyAudioSupported;
3818 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3881 enum AUDIO_SAMPLE_RATE_TYPE {
3885 AUDIO_SAMPLE_RATE_32000 = 32000,
3889 AUDIO_SAMPLE_RATE_44100 = 44100,
3893 AUDIO_SAMPLE_RATE_48000 = 48000,
3898 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3902 VIDEO_CODEC_H264_FOR_STREAM = 1,
3906 VIDEO_CODEC_H265_FOR_STREAM = 2,
3912 enum VIDEO_CODEC_PROFILE_TYPE {
3916 VIDEO_CODEC_PROFILE_BASELINE = 66,
3921 VIDEO_CODEC_PROFILE_MAIN = 77,
3925 VIDEO_CODEC_PROFILE_HIGH = 100,
3931 enum AUDIO_CODEC_PROFILE_TYPE {
3935 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3939 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3943 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3992 enum RTMP_STREAM_PUBLISH_STATE {
3997 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
4002 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
4007 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
4018 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
4024 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
4029 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
4035 enum RTMP_STREAM_PUBLISH_REASON {
4039 RTMP_STREAM_PUBLISH_REASON_OK = 0,
4046 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
4050 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
4055 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
4060 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
4064 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
4068 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
4072 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
4076 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
4080 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
4085 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
4090 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
4097 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
4102 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
4106 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
4109 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
4114 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
4118 enum RTMP_STREAMING_EVENT {
4123 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
4128 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
4132 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
4136 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
4215 enum CONNECTION_STATE_TYPE {
4222 CONNECTION_STATE_DISCONNECTED = 1,
4231 CONNECTION_STATE_CONNECTING = 2,
4239 CONNECTION_STATE_CONNECTED = 3,
4249 CONNECTION_STATE_RECONNECTING = 4,
4258 CONNECTION_STATE_FAILED = 5,
4587 enum VIDEO_TRANSCODER_ERROR {
4591 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4595 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4599 VT_ERR_INVALID_IMAGE_PATH = 3,
4603 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4607 VT_ERR_INVALID_LAYOUT = 5,
4611 VT_ERR_INTERNAL = 20
4649 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
4654 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
4718 enum LASTMILE_PROBE_RESULT_STATE {
4722 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4727 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4732 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4782 enum CONNECTION_CHANGED_REASON_TYPE {
4786 CONNECTION_CHANGED_CONNECTING = 0,
4790 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4794 CONNECTION_CHANGED_INTERRUPTED = 2,
4799 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4804 CONNECTION_CHANGED_JOIN_FAILED = 4,
4808 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4812 CONNECTION_CHANGED_INVALID_APP_ID = 6,
4817 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4826 CONNECTION_CHANGED_INVALID_TOKEN = 8,
4830 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4838 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4842 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4846 CONNECTION_CHANGED_RENEW_TOKEN = 12,
4851 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4856 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4860 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4864 CONNECTION_CHANGED_LOST = 16,
4868 CONNECTION_CHANGED_ECHO_TEST = 17,
4872 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4876 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4880 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4885 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4889 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4893 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4897 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4903 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4907 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4911 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4916 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4921 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4931 NETWORK_TYPE_UNKNOWN = -1,
4935 NETWORK_TYPE_DISCONNECTED = 0,
4939 NETWORK_TYPE_LAN = 1,
4943 NETWORK_TYPE_WIFI = 2,
4947 NETWORK_TYPE_MOBILE_2G = 3,
4951 NETWORK_TYPE_MOBILE_3G = 4,
4955 NETWORK_TYPE_MOBILE_4G = 5,
4959 NETWORK_TYPE_MOBILE_5G = 6,
4965 enum VIDEO_VIEW_SETUP_MODE {
4969 VIDEO_VIEW_SETUP_REPLACE = 0,
4973 VIDEO_VIEW_SETUP_ADD = 1,
4977 VIDEO_VIEW_SETUP_REMOVE = 2,
5063 position(media::base::POSITION_POST_CAPTURER) {}
5065 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
5077 position(media::base::POSITION_POST_CAPTURER) {}
5079 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
5091 position(media::base::POSITION_POST_CAPTURER) {}
5093 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
5106 position(media::base::POSITION_POST_CAPTURER) {}
5148 float redness,
float sharpness)
5493 :
mode(lowlightMode),
level(lowlightLevel) {}
5542 :
mode(denoiserMode),
level(denoiserLevel) {}
5651 source(OPTIONAL_NULLPTR),
5709 enum AUDIO_TRACK_TYPE {
5713 AUDIO_TRACK_INVALID = -1,
5720 AUDIO_TRACK_MIXABLE = 0,
5726 AUDIO_TRACK_DIRECT = 1,
5768 enum VOICE_BEAUTIFIER_PRESET {
5771 VOICE_BEAUTIFIER_OFF = 0x00000000,
5777 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
5783 CHAT_BEAUTIFIER_FRESH = 0x01010200,
5789 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
5799 SINGING_BEAUTIFIER = 0x01020100,
5802 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
5805 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
5808 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
5811 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
5814 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
5817 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
5820 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
5823 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
5834 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
5859 enum AUDIO_EFFECT_PRESET {
5862 AUDIO_EFFECT_OFF = 0x00000000,
5865 ROOM_ACOUSTICS_KTV = 0x02010100,
5868 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
5871 ROOM_ACOUSTICS_STUDIO = 0x02010300,
5874 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5881 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5884 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5887 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5899 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5910 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5918 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5925 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5931 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5937 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5944 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5950 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5954 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5957 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5964 STYLE_TRANSFORMATION_RNB = 0x02030100,
5971 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5976 PITCH_CORRECTION = 0x02040100,
5985 enum VOICE_CONVERSION_PRESET {
5988 VOICE_CONVERSION_OFF = 0x00000000,
5992 VOICE_CHANGER_NEUTRAL = 0x03010100,
5996 VOICE_CHANGER_SWEET = 0x03010200,
6000 VOICE_CHANGER_SOLID = 0x03010300,
6004 VOICE_CHANGER_BASS = 0x03010400,
6007 VOICE_CHANGER_CARTOON = 0x03010500,
6010 VOICE_CHANGER_CHILDLIKE = 0x03010600,
6013 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
6016 VOICE_CHANGER_MONSTER = 0x03010800,
6019 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
6022 VOICE_CHANGER_GROOT = 0x03010A00,
6025 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
6028 VOICE_CHANGER_IRON_LADY = 0x03010C00,
6031 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
6034 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
6037 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
6043 enum HEADPHONE_EQUALIZER_PRESET {
6046 HEADPHONE_EQUALIZER_OFF = 0x00000000,
6049 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
6052 HEADPHONE_EQUALIZER_INEAR = 0x04000002
6057 enum VOICE_AI_TUNER_TYPE {
6060 VOICE_AI_TUNER_MATURE_MALE,
6063 VOICE_AI_TUNER_FRESH_MALE,
6066 VOICE_AI_TUNER_ELEGANT_FEMALE,
6069 VOICE_AI_TUNER_SWEET_FEMALE,
6072 VOICE_AI_TUNER_WARM_MALE_SINGING,
6075 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
6078 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
6081 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
6084 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
6087 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
6184 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
6195 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
6206 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
6217 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
6234 enum AUDIO_RECORDING_QUALITY_TYPE {
6239 AUDIO_RECORDING_QUALITY_LOW = 0,
6244 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
6249 AUDIO_RECORDING_QUALITY_HIGH = 2,
6253 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
6259 enum AUDIO_FILE_RECORDING_TYPE {
6263 AUDIO_FILE_RECORDING_MIC = 1,
6267 AUDIO_FILE_RECORDING_PLAYBACK = 2,
6271 AUDIO_FILE_RECORDING_MIXED = 3,
6277 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
6281 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
6285 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
6289 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6341 quality(AUDIO_RECORDING_QUALITY_LOW),
6345 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6353 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
6354 AUDIO_FILE_RECORDING_TYPE type,
6355 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6363 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
6386 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6448 AREA_CODE_CN = 0x00000001,
6452 AREA_CODE_NA = 0x00000002,
6456 AREA_CODE_EU = 0x00000004,
6460 AREA_CODE_AS = 0x00000008,
6464 AREA_CODE_JP = 0x00000010,
6468 AREA_CODE_IN = 0x00000020,
6472 AREA_CODE_GLOB = (0xFFFFFFFF)
6483 AREA_CODE_OC = 0x00000040,
6487 AREA_CODE_SA = 0x00000080,
6491 AREA_CODE_AF = 0x00000100,
6495 AREA_CODE_KR = 0x00000200,
6499 AREA_CODE_HKMC = 0x00000400,
6503 AREA_CODE_US = 0x00000800,
6507 AREA_CODE_RU = 0x00001000,
6511 AREA_CODE_OVS = 0xFFFFFFFE
6517 enum CHANNEL_MEDIA_RELAY_ERROR {
6523 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6530 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6533 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6536 RELAY_ERROR_FAILED_JOIN_SRC = 4,
6539 RELAY_ERROR_FAILED_JOIN_DEST = 5,
6542 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6545 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6549 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6552 RELAY_ERROR_INTERNAL_ERROR = 9,
6555 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
6558 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
6564 enum CHANNEL_MEDIA_RELAY_STATE {
6568 RELAY_STATE_IDLE = 0,
6571 RELAY_STATE_CONNECTING = 1,
6574 RELAY_STATE_RUNNING = 2,
6577 RELAY_STATE_FAILURE = 3,
6677 :
userId(OPTIONAL_NULLPTR),
6686 if (rhs.
userId != OPTIONAL_NULLPTR) {
6687 const size_t len = std::strlen(rhs.
userId);
6688 char* buf =
new char[len + 1];
6689 std::memcpy(buf, rhs.
userId, len);
6695 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
6696 if (
this == &rhs)
return *
this;
6697 userId = OPTIONAL_NULLPTR;
6701 if (rhs.userId != OPTIONAL_NULLPTR) {
6702 const size_t len = std::strlen(rhs.userId);
6703 char* buf =
new char[len + 1];
6704 std::memcpy(buf, rhs.userId, len);
6711 ~PeerDownlinkInfo() {
delete[]
userId; }
6754 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
6755 if (
this == &rhs)
return *
this;
6778 enum ENCRYPTION_MODE {
6833 bool datastreamEncryptionEnabled;
6838 datastreamEncryptionEnabled(false) {
6843 const char* getEncryptionString()
const {
6846 return "aes-128-xts";
6848 return "aes-128-ecb";
6850 return "aes-256-xts";
6852 return "sm4-128-ecb";
6854 return "aes-128-gcm";
6856 return "aes-256-gcm";
6858 return "aes-128-gcm-2";
6860 return "aes-256-gcm-2";
6862 return "aes-128-gcm-2";
6864 return "aes-128-gcm-2";
6871 enum ENCRYPTION_ERROR_TYPE {
6875 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
6880 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
6884 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
6889 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
6893 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
6896 enum UPLOAD_ERROR_REASON {
6898 UPLOAD_NET_ERROR = 1,
6899 UPLOAD_SERVER_ERROR = 2,
6908 enum RENEW_TOKEN_ERROR_CODE {
6912 RENEW_TOKEN_SUCCESS = 0,
6918 RENEW_TOKEN_FAILURE = 1,
6923 RENEW_TOKEN_TOKEN_EXPIRED = 2,
6934 RENEW_TOKEN_INVALID_TOKEN = 3,
6939 RENEW_TOKEN_INVALID_CHANNEL_NAME = 4,
6944 RENEW_TOKEN_INCONSISTENT_APPID = 5,
6948 RENEW_TOKEN_CANCELED_BY_NEW_REQUEST = 6,
6953 enum PERMISSION_TYPE {
6969 enum STREAM_SUBSCRIBE_STATE {
6987 SUB_STATE_NO_SUBSCRIBED = 1,
6991 SUB_STATE_SUBSCRIBING = 2,
6995 SUB_STATE_SUBSCRIBED = 3
7001 enum STREAM_PUBLISH_STATE {
7016 PUB_STATE_NO_PUBLISHED = 1,
7020 PUB_STATE_PUBLISHING = 2,
7024 PUB_STATE_PUBLISHED = 3
7035 const char* channelId;
7036 int intervalInSeconds;
7039 : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
7042 : view(OPTIONAL_NULLPTR),
7045 token(OPTIONAL_NULLPTR),
7046 channelId(OPTIONAL_NULLPTR),
7047 intervalInSeconds(2) {}
7069 enum EAR_MONITORING_FILTER_TYPE {
7073 EAR_MONITORING_FILTER_NONE = (1 << 0),
7078 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
7082 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
7088 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
7094 enum THREAD_PRIORITY_TYPE {
7121 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) || defined(__OHOS__)
7126 struct ScreenVideoParameters {
7153 VideoDimensions dimensions;
7168 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
7170 ScreenVideoParameters() : dimensions(1280, 720) {}
7176 struct ScreenAudioParameters {
7180 int sampleRate = 16000;
7189 int captureSignalVolume = 100;
7195 struct ScreenCaptureParameters2 {
7205 bool captureAudio =
false;
7209 ScreenAudioParameters audioParams;
7219 bool captureVideo =
true;
7223 ScreenVideoParameters videoParams;
7230 enum MEDIA_TRACE_EVENT {
7234 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
7238 MEDIA_TRACE_EVENT_VIDEO_DECODED,
7296 enum CONFIG_FETCH_TYPE {
7300 CONFIG_FETCH_TYPE_INITIALIZE = 1,
7304 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
7308 enum LOCAL_PROXY_MODE {
7311 ConnectivityFirst = 0,
7381 mode(ConnectivityFirst),
7385 enum RecorderStreamType {
7409 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
7418 enum RdtStreamType {
7475 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
7488 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
7489 return p != OPTIONAL_NULLPTR;
7496 virtual void onCertificateRequired() = 0;
7497 virtual void onLicenseRequest() = 0;
7498 virtual void onLicenseValidated() = 0;
7499 virtual void onLicenseError(
int result) = 0;
7582 strUid(OPTIONAL_NULLPTR),
7596 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
7603 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
7605 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
7629 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
7631 const char* certificate_buf,
7632 int certificate_len);
7672 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();