9 #pragma once // NOLINT(build/header_guard)
17 #include "IAgoraParameter.h"
18 #include "AgoraMediaBase.h"
19 #include "AgoraRefPtr.h"
20 #include "AgoraOptional.h"
22 #define MAX_PATH_260 (260)
26 #ifndef WIN32_LEAN_AND_MEAN
27 #define WIN32_LEAN_AND_MEAN
28 #endif // !WIN32_LEAN_AND_MEAN
29 #if defined(__aarch64__)
30 #include <arm64intr.h>
34 #if defined(AGORARTC_EXPORT)
35 #define AGORA_API extern "C" __declspec(dllexport)
36 #define AGORA_CPP_API __declspec(dllexport)
38 #define AGORA_API extern "C" __declspec(dllimport)
39 #define AGORA_CPP_API __declspec(dllimport)
40 #endif // AGORARTC_EXPORT
42 #define AGORA_CALL __cdecl
46 #define AGORA_CPP_INTERNAL_API extern
48 #elif defined(__APPLE__)
50 #include <TargetConditionals.h>
52 #define AGORA_API extern "C" __attribute__((visibility("default")))
53 #define AGORA_CPP_API __attribute__((visibility("default")))
56 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
58 #elif defined(__ANDROID__) || defined(__linux__)
60 #define AGORA_API extern "C" __attribute__((visibility("default")))
61 #define AGORA_CPP_API __attribute__((visibility("default")))
66 #define AGORA_CPP_INTERNAL_API __attribute__((visibility("hidden")))
68 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
70 #define AGORA_API extern "C"
78 #ifndef OPTIONAL_ENUM_SIZE_T
79 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
80 #define OPTIONAL_ENUM_SIZE_T enum : size_t
82 #define OPTIONAL_ENUM_SIZE_T enum
86 #ifndef OPTIONAL_NULLPTR
87 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
88 #define OPTIONAL_NULLPTR nullptr
90 #define OPTIONAL_NULLPTR NULL
94 #define INVALID_DISPLAY_ID (-2)
102 typedef T value_type;
103 typedef T* pointer_type;
106 explicit AutoPtr(pointer_type p = OPTIONAL_NULLPTR) : ptr_(p) {}
111 ptr_ = OPTIONAL_NULLPTR;
115 operator bool()
const {
return (ptr_ != OPTIONAL_NULLPTR); }
117 value_type& operator*()
const {
return *get(); }
119 pointer_type operator->()
const {
return get(); }
121 pointer_type get()
const {
return ptr_; }
123 pointer_type release() {
124 pointer_type ret = ptr_;
129 void reset(pointer_type ptr = OPTIONAL_NULLPTR) {
130 if (ptr != ptr_ && ptr_) {
137 template <
class C1,
class C2>
138 bool queryInterface(C1* c, C2 iid) {
139 pointer_type p = OPTIONAL_NULLPTR;
140 if (c && !c->queryInterface(iid,
reinterpret_cast<void**
>(&p))) {
144 return (p != OPTIONAL_NULLPTR);
157 typedef typename AutoPtr<T>::pointer_type pointer_type;
163 if (
this != &rhs) this->reset(rhs.clone());
166 pointer_type clone()
const {
167 if (!this->get())
return OPTIONAL_NULLPTR;
168 return this->get()->clone();
174 virtual bool empty()
const = 0;
175 virtual const char* c_str() = 0;
176 virtual const char* data() = 0;
177 virtual size_t length() = 0;
179 virtual void release() = 0;
186 virtual void* current() = 0;
187 virtual const void* const_current()
const = 0;
188 virtual bool next() = 0;
189 virtual void release() = 0;
196 virtual size_t size()
const = 0;
197 virtual void release() = 0;
206 typedef T value_type;
207 typedef value_type& reference;
208 typedef const value_type& const_reference;
209 typedef value_type* pointer;
210 typedef const value_type* const_pointer;
222 return p->current() == rhs.p->current();
224 return valid() == rhs.valid();
226 bool operator!=(
const AOutputIterator& rhs)
const {
return !this->operator==(rhs); }
227 reference operator*() {
return *
reinterpret_cast<pointer
>(p->current()); }
228 const_reference operator*()
const {
return *
reinterpret_cast<const_pointer
>(p->const_current()); }
229 bool valid()
const {
return p && p->current() != OPTIONAL_NULLPTR; }
238 typedef T value_type;
239 typedef value_type& reference;
240 typedef const value_type& const_reference;
241 typedef value_type* pointer;
242 typedef const value_type* const_pointer;
243 typedef size_t size_type;
248 AList() : container(OPTIONAL_NULLPTR), owner(
false) {}
249 AList(
IContainer* c,
bool take_ownership) : container(c), owner(take_ownership) {}
250 ~
AList() { reset(); }
251 void reset(
IContainer* c = OPTIONAL_NULLPTR,
bool take_ownership =
false) {
252 if (owner && container) container->release();
254 owner = take_ownership;
258 size_type size()
const {
return container ? container->size() : 0; }
259 bool empty()
const {
return size() == 0; }
267 enum CHANNEL_PROFILE_TYPE {
273 CHANNEL_PROFILE_COMMUNICATION = 0,
279 CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
284 CHANNEL_PROFILE_GAME __deprecated = 2,
290 CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
296 CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
302 enum WARN_CODE_TYPE {
307 WARN_INVALID_VIEW = 8,
312 WARN_INIT_VIDEO = 16,
322 WARN_NO_AVAILABLE_CHANNEL = 103,
328 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
333 WARN_LOOKUP_CHANNEL_REJECTED = 105,
339 WARN_OPEN_CHANNEL_TIMEOUT = 106,
344 WARN_OPEN_CHANNEL_REJECTED = 107,
350 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
354 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
358 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
362 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
366 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
370 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
374 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
377 WARN_CHANNEL_SOCKET_ERROR = 134,
381 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
385 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
389 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
393 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
397 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
401 WARN_ADM_RECORD_MALFUNCTION = 1021,
405 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
409 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
417 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
421 WARN_APM_HOWLING = 1051,
425 WARN_ADM_GLITCH_STATE = 1052,
429 WARN_ADM_IMPROPER_SETTINGS = 1053,
433 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
438 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
446 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
452 enum ERROR_CODE_TYPE {
466 ERR_INVALID_ARGUMENT = 2,
477 ERR_NOT_SUPPORTED = 4,
485 ERR_BUFFER_TOO_SMALL = 6,
489 ERR_NOT_INITIALIZED = 7,
493 ERR_INVALID_STATE = 8,
498 ERR_NO_PERMISSION = 9,
521 ERR_BIND_SOCKET = 13,
532 ERR_JOIN_CHANNEL_REJECTED = 17,
539 ERR_LEAVE_CHANNEL_REJECTED = 18,
543 ERR_ALREADY_IN_USE = 19,
553 ERR_INIT_NET_ENGINE = 21,
558 ERR_RESOURCE_LIMITED = 22,
565 ERR_INVALID_APP_ID = 101,
570 ERR_INVALID_CHANNEL_NAME = 102,
576 ERR_NO_SERVER_RESOURCES = 103,
589 ERR_TOKEN_EXPIRED = 109,
606 ERR_INVALID_TOKEN = 110,
611 ERR_CONNECTION_INTERRUPTED = 111,
616 ERR_CONNECTION_LOST = 112,
621 ERR_NOT_IN_CHANNEL = 113,
626 ERR_SIZE_TOO_LARGE = 114,
631 ERR_BITRATE_LIMIT = 115,
636 ERR_TOO_MANY_DATA_STREAMS = 116,
640 ERR_STREAM_MESSAGE_TIMEOUT = 117,
644 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
649 ERR_DECRYPTION_FAILED = 120,
653 ERR_INVALID_USER_ID = 121,
658 ERR_DATASTREAM_DECRYPTION_FAILED = 122,
662 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
668 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
673 ERR_LICENSE_CREDENTIAL_INVALID = 131,
679 ERR_INVALID_USER_ACCOUNT = 134,
687 ERR_MODULE_NOT_FOUND = 157,
691 ERR_CERT_JSON_PART = 158,
692 ERR_CERT_JSON_INVAL = 159,
693 ERR_CERT_JSON_NOMEM = 160,
694 ERR_CERT_CUSTOM = 161,
695 ERR_CERT_CREDENTIAL = 162,
700 ERR_CERT_DUEDATE = 167,
701 ERR_CERT_REQUEST = 168,
704 ERR_PCMSEND_FORMAT = 200,
705 ERR_PCMSEND_BUFFEROVERFLOW = 201,
709 ERR_LOGIN_ALREADY_LOGIN = 428,
716 ERR_LOAD_MEDIA_ENGINE = 1001,
722 ERR_ADM_GENERAL_ERROR = 1005,
727 ERR_ADM_INIT_PLAYOUT = 1008,
731 ERR_ADM_START_PLAYOUT = 1009,
735 ERR_ADM_STOP_PLAYOUT = 1010,
740 ERR_ADM_INIT_RECORDING = 1011,
744 ERR_ADM_START_RECORDING = 1012,
748 ERR_ADM_STOP_RECORDING = 1013,
752 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
755 enum LICENSE_ERROR_TYPE {
759 LICENSE_ERR_INVALID = 1,
763 LICENSE_ERR_EXPIRE = 2,
767 LICENSE_ERR_MINUTES_EXCEED = 3,
771 LICENSE_ERR_LIMITED_PERIOD = 4,
775 LICENSE_ERR_DIFF_DEVICES = 5,
779 LICENSE_ERR_INTERNAL = 99,
785 enum AUDIO_SESSION_OPERATION_RESTRICTION {
789 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
793 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
797 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
802 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
807 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
810 typedef const char* user_id_t;
811 typedef void* view_t;
837 typedef util::AList<UserInfo> UserList;
845 enum USER_OFFLINE_REASON_TYPE {
849 USER_OFFLINE_QUIT = 0,
855 USER_OFFLINE_DROPPED = 1,
859 USER_OFFLINE_BECOME_AUDIENCE = 2,
862 enum INTERFACE_ID_TYPE {
863 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
864 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
865 AGORA_IID_PARAMETER_ENGINE = 3,
866 AGORA_IID_MEDIA_ENGINE = 4,
867 AGORA_IID_AUDIO_ENGINE = 5,
868 AGORA_IID_VIDEO_ENGINE = 6,
869 AGORA_IID_RTC_CONNECTION = 7,
870 AGORA_IID_SIGNALING_ENGINE = 8,
871 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
872 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
873 AGORA_IID_STATE_SYNC = 13,
874 AGORA_IID_META_SERVICE = 14,
875 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
876 AGORA_IID_H265_TRANSCODER = 16,
887 QUALITY_UNKNOWN __deprecated = 0,
891 QUALITY_EXCELLENT = 1,
916 QUALITY_UNSUPPORTED = 7,
920 QUALITY_DETECTING = 8,
944 enum VIDEO_ORIENTATION {
948 VIDEO_ORIENTATION_0 = 0,
952 VIDEO_ORIENTATION_90 = 90,
956 VIDEO_ORIENTATION_180 = 180,
960 VIDEO_ORIENTATION_270 = 270
970 FRAME_RATE_FPS_1 = 1,
974 FRAME_RATE_FPS_7 = 7,
978 FRAME_RATE_FPS_10 = 10,
982 FRAME_RATE_FPS_15 = 15,
986 FRAME_RATE_FPS_24 = 24,
990 FRAME_RATE_FPS_30 = 30,
994 FRAME_RATE_FPS_60 = 60,
998 FRAME_WIDTH_960 = 960,
1002 FRAME_HEIGHT_540 = 540,
1008 enum VIDEO_FRAME_TYPE {
1010 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1012 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1014 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1016 VIDEO_FRAME_TYPE_B_FRAME = 5,
1018 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1020 VIDEO_FRAME_TYPE_UNKNOW
1026 enum ORIENTATION_MODE {
1034 ORIENTATION_MODE_ADAPTIVE = 0,
1041 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1048 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1054 enum DEGRADATION_PREFERENCE {
1069 MAINTAIN_QUALITY = 0,
1075 MAINTAIN_FRAMERATE = 1,
1082 MAINTAIN_BALANCED = 2,
1086 MAINTAIN_RESOLUTION = 3,
1107 bool operator==(
const VideoDimensions& rhs)
const {
1108 return width == rhs.width &&
height == rhs.height;
1117 const int STANDARD_BITRATE = 0;
1126 const int COMPATIBLE_BITRATE = -1;
1131 const int DEFAULT_MIN_BITRATE = -1;
1136 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1141 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1142 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1143 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1144 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1150 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1152 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1154 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1156 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1158 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1160 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1166 enum VIDEO_CODEC_TYPE {
1172 VIDEO_CODEC_NONE = 0,
1176 VIDEO_CODEC_VP8 = 1,
1180 VIDEO_CODEC_H264 = 2,
1184 VIDEO_CODEC_H265 = 3,
1190 VIDEO_CODEC_GENERIC = 6,
1195 VIDEO_CODEC_GENERIC_H264 = 7,
1200 VIDEO_CODEC_AV1 = 12,
1204 VIDEO_CODEC_VP9 = 13,
1208 VIDEO_CODEC_GENERIC_JPEG = 20,
1214 enum CAMERA_FOCAL_LENGTH_TYPE {
1218 CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1222 CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1226 CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1230 CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1328 enum AUDIO_CODEC_TYPE {
1332 AUDIO_CODEC_OPUS = 1,
1337 AUDIO_CODEC_PCMA = 3,
1341 AUDIO_CODEC_PCMU = 4,
1345 AUDIO_CODEC_G722 = 5,
1352 AUDIO_CODEC_AACLC = 8,
1356 AUDIO_CODEC_HEAAC = 9,
1360 AUDIO_CODEC_JC1 = 10,
1364 AUDIO_CODEC_HEAAC2 = 11,
1368 AUDIO_CODEC_LPCNET = 12,
1372 AUDIO_CODEC_OPUSMC = 13,
1378 enum AUDIO_ENCODING_TYPE {
1383 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1388 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1393 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1398 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1403 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1408 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1413 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1418 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1423 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1428 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1433 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1439 enum WATERMARK_FIT_MODE {
1444 FIT_MODE_COVER_POSITION,
1449 FIT_MODE_USE_IMAGE_RATIO
1477 :
codec(AUDIO_CODEC_AACLC),
1527 channelNum(rhs.channelNum),
1556 enum H264PacketizeMode {
1570 enum VIDEO_STREAM_TYPE {
1574 VIDEO_STREAM_HIGH = 0,
1578 VIDEO_STREAM_LOW = 1,
1582 VIDEO_STREAM_LAYER_1 = 4,
1586 VIDEO_STREAM_LAYER_2 = 5,
1590 VIDEO_STREAM_LAYER_3 = 6,
1594 VIDEO_STREAM_LAYER_4 = 7,
1598 VIDEO_STREAM_LAYER_5 = 8,
1602 VIDEO_STREAM_LAYER_6 = 9,
1626 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1629 MAX_USER_ACCOUNT_LENGTH = 256
1643 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1649 presentationMs(-1) {}
1663 presentationMs(rhs.presentationMs) {}
1666 if (
this == &rhs)
return *
this;
1678 presentationMs = rhs.presentationMs;
1732 int64_t presentationMs;
1738 enum COMPRESSION_PREFERENCE {
1745 PREFER_COMPRESSION_AUTO = -1,
1749 PREFER_LOW_LATENCY = 0,
1759 enum ENCODING_PREFERENCE {
1767 PREFER_SOFTWARE = 0,
1771 PREFER_HARDWARE = 1,
1799 COMPRESSION_PREFERENCE compression_preference,
1800 bool encode_alpha) :
1805 bool operator==(
const AdvanceOptions& rhs)
const {
1815 enum VIDEO_MIRROR_MODE_TYPE {
1819 VIDEO_MIRROR_MODE_AUTO = 0,
1823 VIDEO_MIRROR_MODE_ENABLED = 1,
1827 VIDEO_MIRROR_MODE_DISABLED = 2,
1830 #if defined(__APPLE__) && TARGET_OS_IOS
1834 enum CAMERA_FORMAT_TYPE {
1842 enum VIDEO_MODULE_TYPE {
1844 VIDEO_MODULE_CAPTURER = 0,
1846 VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1848 VIDEO_MODULE_HARDWARE_ENCODER = 2,
1850 VIDEO_MODULE_SOFTWARE_DECODER = 3,
1852 VIDEO_MODULE_HARDWARE_DECODER = 4,
1854 VIDEO_MODULE_RENDERER = 5,
1857 enum HDR_CAPABILITY {
1859 HDR_CAPABILITY_UNKNOWN = -1,
1861 HDR_CAPABILITY_UNSUPPORTED = 0,
1863 HDR_CAPABILITY_SUPPORTED = 1,
1867 enum CODEC_CAP_MASK {
1869 CODEC_CAP_MASK_NONE = 0,
1872 CODEC_CAP_MASK_HW_DEC = 1 << 0,
1875 CODEC_CAP_MASK_HW_ENC = 1 << 1,
1878 CODEC_CAP_MASK_SW_DEC = 1 << 2,
1881 CODEC_CAP_MASK_SW_ENC = 1 << 3,
1885 VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1886 VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1889 : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
1890 swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
2036 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2046 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2056 VideoEncoderConfiguration()
2058 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2067 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2068 if (
this == &rhs)
return *
this;
2112 enum SIMULCAST_STREAM_MODE {
2116 AUTO_SIMULCAST_STREAM = -1,
2120 DISABLE_SIMULCAST_STREAM = 0,
2124 ENABLE_SIMULCAST_STREAM = 1,
2146 bool operator==(
const SimulcastStreamConfig& rhs)
const {
2308 mode(FIT_MODE_COVER_POSITION) {}
2513 enum CLIENT_ROLE_TYPE {
2517 CLIENT_ROLE_BROADCASTER = 1,
2521 CLIENT_ROLE_AUDIENCE = 2,
2528 enum QUALITY_ADAPT_INDICATION {
2536 ADAPT_UP_BANDWIDTH = 1,
2540 ADAPT_DOWN_BANDWIDTH = 2,
2547 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2551 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2555 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2574 enum EXPERIENCE_QUALITY_TYPE {
2576 EXPERIENCE_QUALITY_GOOD = 0,
2578 EXPERIENCE_QUALITY_BAD = 1,
2584 enum EXPERIENCE_POOR_REASON {
2588 EXPERIENCE_REASON_NONE = 0,
2592 REMOTE_NETWORK_QUALITY_POOR = 1,
2596 LOCAL_NETWORK_QUALITY_POOR = 2,
2600 WIRELESS_SIGNAL_POOR = 4,
2605 WIFI_BLUETOOTH_COEXIST = 8,
2611 enum AUDIO_AINS_MODE {
2615 AINS_MODE_BALANCED = 0,
2619 AINS_MODE_AGGRESSIVE = 1,
2623 AINS_MODE_ULTRALOWLATENCY = 2
2629 enum AUDIO_PROFILE_TYPE {
2639 AUDIO_PROFILE_DEFAULT = 0,
2643 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2647 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2654 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2658 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2665 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2669 AUDIO_PROFILE_IOT = 6,
2670 AUDIO_PROFILE_NUM = 7
2676 enum AUDIO_SCENARIO_TYPE {
2681 AUDIO_SCENARIO_DEFAULT = 0,
2687 AUDIO_SCENARIO_GAME_STREAMING = 3,
2693 AUDIO_SCENARIO_CHATROOM = 5,
2698 AUDIO_SCENARIO_CHORUS = 7,
2702 AUDIO_SCENARIO_MEETING = 8,
2706 AUDIO_SCENARIO_NUM = 9,
2713 OPTIONAL_ENUM_SIZE_T{
2715 kMaxWidthInPixels = 3840,
2717 kMaxHeightInPixels = 2160,
2737 bool operator<(
const VideoFormat& fmt)
const {
2738 if (
height != fmt.height) {
2739 return height < fmt.height;
2740 }
else if (
width != fmt.width) {
2741 return width < fmt.width;
2743 return fps < fmt.fps;
2746 bool operator==(
const VideoFormat& fmt)
const {
2747 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
2749 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
2755 enum VIDEO_CONTENT_HINT {
2766 CONTENT_HINT_MOTION,
2772 CONTENT_HINT_DETAILS
2777 enum SCREEN_SCENARIO_TYPE {
2783 SCREEN_SCENARIO_DOCUMENT = 1,
2788 SCREEN_SCENARIO_GAMING = 2,
2793 SCREEN_SCENARIO_VIDEO = 3,
2799 SCREEN_SCENARIO_RDC = 4,
2805 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2809 APPLICATION_SCENARIO_GENERAL = 0,
2813 APPLICATION_SCENARIO_MEETING = 1,
2817 APPLICATION_SCENARIO_1V1 = 2,
2821 APPLICATION_SCENARIO_LIVESHOW = 3,
2827 enum VIDEO_QOE_PREFERENCE_TYPE {
2831 VIDEO_QOE_PREFERENCE_BALANCE = 1,
2835 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2839 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2843 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2850 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2855 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2858 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2861 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2864 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2867 enum CAMERA_STABILIZATION_MODE {
2870 CAMERA_STABILIZATION_MODE_OFF = -1,
2873 CAMERA_STABILIZATION_MODE_AUTO = 0,
2876 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2879 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2882 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2885 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2891 enum LOCAL_AUDIO_STREAM_STATE {
2895 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2899 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2903 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2907 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2913 enum LOCAL_AUDIO_STREAM_REASON {
2917 LOCAL_AUDIO_STREAM_REASON_OK = 0,
2922 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2926 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2933 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2937 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2941 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2944 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2947 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2951 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2954 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2957 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2962 enum LOCAL_VIDEO_STREAM_STATE {
2966 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2971 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2975 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2979 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2985 enum LOCAL_VIDEO_STREAM_REASON {
2989 LOCAL_VIDEO_STREAM_REASON_OK = 0,
2993 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
2998 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3003 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3009 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3013 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3018 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3025 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3031 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3036 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3041 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3046 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3051 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3055 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3061 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3076 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3078 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3080 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3082 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3084 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3090 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3093 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3095 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3097 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3105 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3107 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3109 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3116 enum REMOTE_AUDIO_STATE {
3122 REMOTE_AUDIO_STATE_STOPPED =
3127 REMOTE_AUDIO_STATE_STARTING = 1,
3133 REMOTE_AUDIO_STATE_DECODING =
3139 REMOTE_AUDIO_STATE_FROZEN = 3,
3144 REMOTE_AUDIO_STATE_FAILED = 4,
3150 enum REMOTE_AUDIO_STATE_REASON {
3154 REMOTE_AUDIO_REASON_INTERNAL = 0,
3158 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3162 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3167 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3172 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3177 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3182 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3186 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3190 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3194 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3200 enum REMOTE_VIDEO_STATE {
3207 REMOTE_VIDEO_STATE_STOPPED = 0,
3211 REMOTE_VIDEO_STATE_STARTING = 1,
3218 REMOTE_VIDEO_STATE_DECODING = 2,
3222 REMOTE_VIDEO_STATE_FROZEN = 3,
3226 REMOTE_VIDEO_STATE_FAILED = 4,
3231 enum REMOTE_VIDEO_STATE_REASON {
3235 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3239 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3243 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3247 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3251 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3255 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3259 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3263 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3267 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3271 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3274 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3277 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3280 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3284 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3291 enum REMOTE_USER_STATE {
3295 USER_STATE_MUTE_AUDIO = (1 << 0),
3299 USER_STATE_MUTE_VIDEO = (1 << 1),
3303 USER_STATE_ENABLE_VIDEO = (1 << 4),
3307 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3366 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3370 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3374 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3378 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3382 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3386 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3436 bool isLowLatencyAudioSupported;
3438 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3501 enum AUDIO_SAMPLE_RATE_TYPE {
3505 AUDIO_SAMPLE_RATE_32000 = 32000,
3509 AUDIO_SAMPLE_RATE_44100 = 44100,
3513 AUDIO_SAMPLE_RATE_48000 = 48000,
3518 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3522 VIDEO_CODEC_H264_FOR_STREAM = 1,
3526 VIDEO_CODEC_H265_FOR_STREAM = 2,
3532 enum VIDEO_CODEC_PROFILE_TYPE {
3536 VIDEO_CODEC_PROFILE_BASELINE = 66,
3541 VIDEO_CODEC_PROFILE_MAIN = 77,
3545 VIDEO_CODEC_PROFILE_HIGH = 100,
3551 enum AUDIO_CODEC_PROFILE_TYPE {
3555 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3559 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3563 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3612 enum RTMP_STREAM_PUBLISH_STATE {
3617 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3622 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3627 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3638 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3644 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3649 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3655 enum RTMP_STREAM_PUBLISH_REASON {
3659 RTMP_STREAM_PUBLISH_REASON_OK = 0,
3666 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3670 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3675 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3680 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3684 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3688 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3692 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3696 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3700 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3705 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3710 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
3717 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
3722 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
3726 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
3729 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3734 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3738 enum RTMP_STREAMING_EVENT {
3743 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3748 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3752 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3756 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3835 enum CONNECTION_STATE_TYPE {
3842 CONNECTION_STATE_DISCONNECTED = 1,
3851 CONNECTION_STATE_CONNECTING = 2,
3859 CONNECTION_STATE_CONNECTED = 3,
3869 CONNECTION_STATE_RECONNECTING = 4,
3878 CONNECTION_STATE_FAILED = 5,
4207 enum VIDEO_TRANSCODER_ERROR {
4211 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4215 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4219 VT_ERR_INVALID_IMAGE_PATH = 3,
4223 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4227 VT_ERR_INVALID_LAYOUT = 5,
4231 VT_ERR_INTERNAL = 20
4269 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
4274 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
4338 enum LASTMILE_PROBE_RESULT_STATE {
4342 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4347 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4352 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4402 enum CONNECTION_CHANGED_REASON_TYPE {
4406 CONNECTION_CHANGED_CONNECTING = 0,
4410 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4414 CONNECTION_CHANGED_INTERRUPTED = 2,
4419 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4424 CONNECTION_CHANGED_JOIN_FAILED = 4,
4428 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4432 CONNECTION_CHANGED_INVALID_APP_ID = 6,
4437 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4446 CONNECTION_CHANGED_INVALID_TOKEN = 8,
4450 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4458 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4462 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4466 CONNECTION_CHANGED_RENEW_TOKEN = 12,
4471 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4476 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4480 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4484 CONNECTION_CHANGED_LOST = 16,
4488 CONNECTION_CHANGED_ECHO_TEST = 17,
4492 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4496 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4500 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4505 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4509 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4513 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4517 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4523 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4527 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4531 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4536 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4541 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4547 enum WLACC_MESSAGE_REASON {
4551 WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4555 WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4561 enum WLACC_SUGGEST_ACTION {
4565 WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4569 WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4574 WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4579 WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4607 NETWORK_TYPE_UNKNOWN = -1,
4611 NETWORK_TYPE_DISCONNECTED = 0,
4615 NETWORK_TYPE_LAN = 1,
4619 NETWORK_TYPE_WIFI = 2,
4623 NETWORK_TYPE_MOBILE_2G = 3,
4627 NETWORK_TYPE_MOBILE_3G = 4,
4631 NETWORK_TYPE_MOBILE_4G = 5,
4635 NETWORK_TYPE_MOBILE_5G = 6,
4641 enum VIDEO_VIEW_SETUP_MODE {
4645 VIDEO_VIEW_SETUP_REPLACE = 0,
4649 VIDEO_VIEW_SETUP_ADD = 1,
4653 VIDEO_VIEW_SETUP_REMOVE = 2,
4739 position(media::base::POSITION_POST_CAPTURER) {}
4741 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4753 position(media::base::POSITION_POST_CAPTURER) {}
4755 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4767 position(media::base::POSITION_POST_CAPTURER) {}
4769 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
4782 position(media::base::POSITION_POST_CAPTURER) {}
4824 float redness,
float sharpness)
4987 :
mode(lowlightMode),
level(lowlightLevel) {}
5036 :
mode(denoiserMode),
level(denoiserLevel) {}
5145 source(OPTIONAL_NULLPTR),
5150 enum SEG_MODEL_TYPE {
5156 SEG_MODEL_TYPE modelType;
5158 float greenCapacity;
5165 enum AUDIO_TRACK_TYPE {
5169 AUDIO_TRACK_INVALID = -1,
5176 AUDIO_TRACK_MIXABLE = 0,
5182 AUDIO_TRACK_DIRECT = 1,
5224 enum VOICE_BEAUTIFIER_PRESET {
5227 VOICE_BEAUTIFIER_OFF = 0x00000000,
5233 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
5239 CHAT_BEAUTIFIER_FRESH = 0x01010200,
5245 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
5255 SINGING_BEAUTIFIER = 0x01020100,
5258 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
5261 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
5264 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
5267 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
5270 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
5273 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
5276 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
5279 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
5290 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
5315 enum AUDIO_EFFECT_PRESET {
5318 AUDIO_EFFECT_OFF = 0x00000000,
5321 ROOM_ACOUSTICS_KTV = 0x02010100,
5324 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
5327 ROOM_ACOUSTICS_STUDIO = 0x02010300,
5330 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5337 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5340 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5343 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5355 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5366 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5374 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5381 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5387 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5393 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5400 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5406 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5410 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5413 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5420 STYLE_TRANSFORMATION_RNB = 0x02030100,
5427 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5432 PITCH_CORRECTION = 0x02040100,
5441 enum VOICE_CONVERSION_PRESET {
5444 VOICE_CONVERSION_OFF = 0x00000000,
5448 VOICE_CHANGER_NEUTRAL = 0x03010100,
5452 VOICE_CHANGER_SWEET = 0x03010200,
5456 VOICE_CHANGER_SOLID = 0x03010300,
5460 VOICE_CHANGER_BASS = 0x03010400,
5463 VOICE_CHANGER_CARTOON = 0x03010500,
5466 VOICE_CHANGER_CHILDLIKE = 0x03010600,
5469 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5472 VOICE_CHANGER_MONSTER = 0x03010800,
5475 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5478 VOICE_CHANGER_GROOT = 0x03010A00,
5481 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5484 VOICE_CHANGER_IRON_LADY = 0x03010C00,
5487 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5490 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5493 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5499 enum HEADPHONE_EQUALIZER_PRESET {
5502 HEADPHONE_EQUALIZER_OFF = 0x00000000,
5505 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5508 HEADPHONE_EQUALIZER_INEAR = 0x04000002
5513 enum VOICE_AI_TUNER_TYPE {
5516 VOICE_AI_TUNER_MATURE_MALE,
5519 VOICE_AI_TUNER_FRESH_MALE,
5522 VOICE_AI_TUNER_ELEGANT_FEMALE,
5525 VOICE_AI_TUNER_SWEET_FEMALE,
5528 VOICE_AI_TUNER_WARM_MALE_SINGING,
5531 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
5534 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
5537 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
5540 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
5543 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
5640 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
5651 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
5662 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
5673 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
5690 enum AUDIO_RECORDING_QUALITY_TYPE {
5695 AUDIO_RECORDING_QUALITY_LOW = 0,
5700 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5705 AUDIO_RECORDING_QUALITY_HIGH = 2,
5709 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5715 enum AUDIO_FILE_RECORDING_TYPE {
5719 AUDIO_FILE_RECORDING_MIC = 1,
5723 AUDIO_FILE_RECORDING_PLAYBACK = 2,
5727 AUDIO_FILE_RECORDING_MIXED = 3,
5733 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5737 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5741 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5745 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
5797 quality(AUDIO_RECORDING_QUALITY_LOW),
5801 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
5809 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
5810 AUDIO_FILE_RECORDING_TYPE type,
5811 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
5819 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
5842 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5904 AREA_CODE_CN = 0x00000001,
5908 AREA_CODE_NA = 0x00000002,
5912 AREA_CODE_EU = 0x00000004,
5916 AREA_CODE_AS = 0x00000008,
5920 AREA_CODE_JP = 0x00000010,
5924 AREA_CODE_IN = 0x00000020,
5928 AREA_CODE_GLOB = (0xFFFFFFFF)
5939 AREA_CODE_OC = 0x00000040,
5943 AREA_CODE_SA = 0x00000080,
5947 AREA_CODE_AF = 0x00000100,
5951 AREA_CODE_KR = 0x00000200,
5955 AREA_CODE_HKMC = 0x00000400,
5959 AREA_CODE_US = 0x00000800,
5963 AREA_CODE_RU = 0x00001000,
5967 AREA_CODE_OVS = 0xFFFFFFFE
5973 enum CHANNEL_MEDIA_RELAY_ERROR {
5979 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5986 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
5989 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
5992 RELAY_ERROR_FAILED_JOIN_SRC = 4,
5995 RELAY_ERROR_FAILED_JOIN_DEST = 5,
5998 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6001 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6005 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6008 RELAY_ERROR_INTERNAL_ERROR = 9,
6011 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
6014 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
6020 enum CHANNEL_MEDIA_RELAY_STATE {
6024 RELAY_STATE_IDLE = 0,
6027 RELAY_STATE_CONNECTING = 1,
6030 RELAY_STATE_RUNNING = 2,
6033 RELAY_STATE_FAILURE = 3,
6133 :
userId(OPTIONAL_NULLPTR),
6142 if (rhs.
userId != OPTIONAL_NULLPTR) {
6143 const size_t len = std::strlen(rhs.
userId);
6144 char* buf =
new char[len + 1];
6145 std::memcpy(buf, rhs.
userId, len);
6151 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
6152 if (
this == &rhs)
return *
this;
6153 userId = OPTIONAL_NULLPTR;
6157 if (rhs.userId != OPTIONAL_NULLPTR) {
6158 const size_t len = std::strlen(rhs.userId);
6159 char* buf =
new char[len + 1];
6160 std::memcpy(buf, rhs.userId, len);
6167 ~PeerDownlinkInfo() {
delete[]
userId; }
6210 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
6211 if (
this == &rhs)
return *
this;
6234 enum ENCRYPTION_MODE {
6289 bool datastreamEncryptionEnabled;
6294 datastreamEncryptionEnabled(false) {
6299 const char* getEncryptionString()
const {
6302 return "aes-128-xts";
6304 return "aes-128-ecb";
6306 return "aes-256-xts";
6308 return "sm4-128-ecb";
6310 return "aes-128-gcm";
6312 return "aes-256-gcm";
6314 return "aes-128-gcm-2";
6316 return "aes-256-gcm-2";
6318 return "aes-128-gcm-2";
6320 return "aes-128-gcm-2";
6327 enum ENCRYPTION_ERROR_TYPE {
6331 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
6336 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
6340 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
6345 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
6349 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
6352 enum UPLOAD_ERROR_REASON {
6354 UPLOAD_NET_ERROR = 1,
6355 UPLOAD_SERVER_ERROR = 2,
6360 enum PERMISSION_TYPE {
6376 enum STREAM_SUBSCRIBE_STATE {
6394 SUB_STATE_NO_SUBSCRIBED = 1,
6398 SUB_STATE_SUBSCRIBING = 2,
6402 SUB_STATE_SUBSCRIBED = 3
6408 enum STREAM_PUBLISH_STATE {
6423 PUB_STATE_NO_PUBLISHED = 1,
6427 PUB_STATE_PUBLISHING = 2,
6431 PUB_STATE_PUBLISHED = 3
6442 const char* channelId;
6443 int intervalInSeconds;
6446 : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
6449 : view(OPTIONAL_NULLPTR),
6452 token(OPTIONAL_NULLPTR),
6453 channelId(OPTIONAL_NULLPTR),
6454 intervalInSeconds(2) {}
6476 enum EAR_MONITORING_FILTER_TYPE {
6480 EAR_MONITORING_FILTER_NONE = (1 << 0),
6485 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
6489 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
6495 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
6501 enum THREAD_PRIORITY_TYPE {
6528 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
6533 struct ScreenVideoParameters {
6560 VideoDimensions dimensions;
6575 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6577 ScreenVideoParameters() : dimensions(1280, 720) {}
6583 struct ScreenAudioParameters {
6587 int sampleRate = 16000;
6596 int captureSignalVolume = 100;
6602 struct ScreenCaptureParameters2 {
6612 bool captureAudio =
false;
6616 ScreenAudioParameters audioParams;
6626 bool captureVideo =
true;
6630 ScreenVideoParameters videoParams;
6637 enum MEDIA_TRACE_EVENT {
6641 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6645 MEDIA_TRACE_EVENT_VIDEO_DECODED,
6703 enum CONFIG_FETCH_TYPE {
6707 CONFIG_FETCH_TYPE_INITIALIZE = 1,
6711 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6715 enum LOCAL_PROXY_MODE {
6718 ConnectivityFirst = 0,
6788 mode(ConnectivityFirst),
6792 enum RecorderStreamType {
6816 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
6825 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
6838 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
6839 return p != OPTIONAL_NULLPTR;
6846 virtual void onCertificateRequired() = 0;
6847 virtual void onLicenseRequest() = 0;
6848 virtual void onLicenseValidated() = 0;
6849 virtual void onLicenseError(
int result) = 0;
6932 strUid(OPTIONAL_NULLPTR),
6946 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
6953 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
6955 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
6979 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
6981 const char* certificate_buf,
6982 int certificate_len);
7022 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();