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,
569 ERR_INVALID_APP_ID = 101,
574 ERR_INVALID_CHANNEL_NAME = 102,
580 ERR_NO_SERVER_RESOURCES = 103,
593 ERR_TOKEN_EXPIRED = 109,
610 ERR_INVALID_TOKEN = 110,
615 ERR_CONNECTION_INTERRUPTED = 111,
620 ERR_CONNECTION_LOST = 112,
625 ERR_NOT_IN_CHANNEL = 113,
630 ERR_SIZE_TOO_LARGE = 114,
635 ERR_BITRATE_LIMIT = 115,
640 ERR_TOO_MANY_DATA_STREAMS = 116,
644 ERR_STREAM_MESSAGE_TIMEOUT = 117,
648 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
653 ERR_DECRYPTION_FAILED = 120,
657 ERR_INVALID_USER_ID = 121,
662 ERR_DATASTREAM_DECRYPTION_FAILED = 122,
666 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
672 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
677 ERR_LICENSE_CREDENTIAL_INVALID = 131,
683 ERR_INVALID_USER_ACCOUNT = 134,
691 ERR_MODULE_NOT_FOUND = 157,
695 ERR_CERT_JSON_PART = 158,
696 ERR_CERT_JSON_INVAL = 159,
697 ERR_CERT_JSON_NOMEM = 160,
698 ERR_CERT_CUSTOM = 161,
699 ERR_CERT_CREDENTIAL = 162,
704 ERR_CERT_DUEDATE = 167,
705 ERR_CERT_REQUEST = 168,
708 ERR_PCMSEND_FORMAT = 200,
709 ERR_PCMSEND_BUFFEROVERFLOW = 201,
713 ERR_LOGIN_ALREADY_LOGIN = 428,
720 ERR_LOAD_MEDIA_ENGINE = 1001,
726 ERR_ADM_GENERAL_ERROR = 1005,
731 ERR_ADM_INIT_PLAYOUT = 1008,
735 ERR_ADM_START_PLAYOUT = 1009,
739 ERR_ADM_STOP_PLAYOUT = 1010,
744 ERR_ADM_INIT_RECORDING = 1011,
748 ERR_ADM_START_RECORDING = 1012,
752 ERR_ADM_STOP_RECORDING = 1013,
756 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
759 enum LICENSE_ERROR_TYPE {
763 LICENSE_ERR_INVALID = 1,
767 LICENSE_ERR_EXPIRE = 2,
771 LICENSE_ERR_MINUTES_EXCEED = 3,
775 LICENSE_ERR_LIMITED_PERIOD = 4,
779 LICENSE_ERR_DIFF_DEVICES = 5,
783 LICENSE_ERR_INTERNAL = 99,
789 enum AUDIO_SESSION_OPERATION_RESTRICTION {
793 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
797 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
801 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
806 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
811 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
814 typedef const char* user_id_t;
815 typedef void* view_t;
841 typedef util::AList<UserInfo> UserList;
849 enum USER_OFFLINE_REASON_TYPE {
853 USER_OFFLINE_QUIT = 0,
859 USER_OFFLINE_DROPPED = 1,
863 USER_OFFLINE_BECOME_AUDIENCE = 2,
866 enum INTERFACE_ID_TYPE {
867 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
868 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
869 AGORA_IID_PARAMETER_ENGINE = 3,
870 AGORA_IID_MEDIA_ENGINE = 4,
871 AGORA_IID_AUDIO_ENGINE = 5,
872 AGORA_IID_VIDEO_ENGINE = 6,
873 AGORA_IID_RTC_CONNECTION = 7,
874 AGORA_IID_SIGNALING_ENGINE = 8,
875 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
876 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
877 AGORA_IID_STATE_SYNC = 13,
878 AGORA_IID_META_SERVICE = 14,
879 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
880 AGORA_IID_H265_TRANSCODER = 16,
891 QUALITY_UNKNOWN __deprecated = 0,
895 QUALITY_EXCELLENT = 1,
920 QUALITY_UNSUPPORTED = 7,
924 QUALITY_DETECTING = 8,
948 enum VIDEO_ORIENTATION {
952 VIDEO_ORIENTATION_0 = 0,
956 VIDEO_ORIENTATION_90 = 90,
960 VIDEO_ORIENTATION_180 = 180,
964 VIDEO_ORIENTATION_270 = 270
974 FRAME_RATE_FPS_1 = 1,
978 FRAME_RATE_FPS_7 = 7,
982 FRAME_RATE_FPS_10 = 10,
986 FRAME_RATE_FPS_15 = 15,
990 FRAME_RATE_FPS_24 = 24,
994 FRAME_RATE_FPS_30 = 30,
998 FRAME_RATE_FPS_60 = 60,
1002 FRAME_WIDTH_960 = 960,
1006 FRAME_HEIGHT_540 = 540,
1012 enum VIDEO_FRAME_TYPE {
1014 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1016 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1018 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1020 VIDEO_FRAME_TYPE_B_FRAME = 5,
1022 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1024 VIDEO_FRAME_TYPE_UNKNOW
1030 enum ORIENTATION_MODE {
1038 ORIENTATION_MODE_ADAPTIVE = 0,
1045 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1052 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1058 enum DEGRADATION_PREFERENCE {
1073 MAINTAIN_QUALITY = 0,
1079 MAINTAIN_FRAMERATE = 1,
1086 MAINTAIN_BALANCED = 2,
1090 MAINTAIN_RESOLUTION = 3,
1111 bool operator==(
const VideoDimensions& rhs)
const {
1112 return width == rhs.width &&
height == rhs.height;
1121 const int STANDARD_BITRATE = 0;
1130 const int COMPATIBLE_BITRATE = -1;
1135 const int DEFAULT_MIN_BITRATE = -1;
1140 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1145 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1146 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1147 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1148 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1154 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1156 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1158 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1160 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1162 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1164 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1170 enum VIDEO_CODEC_TYPE {
1176 VIDEO_CODEC_NONE = 0,
1180 VIDEO_CODEC_VP8 = 1,
1184 VIDEO_CODEC_H264 = 2,
1188 VIDEO_CODEC_H265 = 3,
1194 VIDEO_CODEC_GENERIC = 6,
1199 VIDEO_CODEC_GENERIC_H264 = 7,
1204 VIDEO_CODEC_AV1 = 12,
1208 VIDEO_CODEC_VP9 = 13,
1212 VIDEO_CODEC_GENERIC_JPEG = 20,
1218 enum CAMERA_FOCAL_LENGTH_TYPE {
1222 CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1226 CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1230 CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1234 CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1332 enum AUDIO_CODEC_TYPE {
1336 AUDIO_CODEC_OPUS = 1,
1341 AUDIO_CODEC_PCMA = 3,
1345 AUDIO_CODEC_PCMU = 4,
1349 AUDIO_CODEC_G722 = 5,
1356 AUDIO_CODEC_AACLC = 8,
1360 AUDIO_CODEC_HEAAC = 9,
1364 AUDIO_CODEC_JC1 = 10,
1368 AUDIO_CODEC_HEAAC2 = 11,
1372 AUDIO_CODEC_LPCNET = 12,
1376 AUDIO_CODEC_OPUSMC = 13,
1382 enum AUDIO_ENCODING_TYPE {
1387 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1392 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1397 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1402 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1407 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1412 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1417 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1422 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1427 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1432 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1437 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1443 enum WATERMARK_FIT_MODE {
1448 FIT_MODE_COVER_POSITION,
1453 FIT_MODE_USE_IMAGE_RATIO
1481 :
codec(AUDIO_CODEC_AACLC),
1531 channelNum(rhs.channelNum),
1560 enum H264PacketizeMode {
1574 enum VIDEO_STREAM_TYPE {
1578 VIDEO_STREAM_HIGH = 0,
1582 VIDEO_STREAM_LOW = 1,
1586 VIDEO_STREAM_LAYER_1 = 4,
1590 VIDEO_STREAM_LAYER_2 = 5,
1594 VIDEO_STREAM_LAYER_3 = 6,
1598 VIDEO_STREAM_LAYER_4 = 7,
1602 VIDEO_STREAM_LAYER_5 = 8,
1606 VIDEO_STREAM_LAYER_6 = 9,
1630 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1633 MAX_USER_ACCOUNT_LENGTH = 256
1647 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1653 presentationMs(-1) {}
1667 presentationMs(rhs.presentationMs) {}
1670 if (
this == &rhs)
return *
this;
1682 presentationMs = rhs.presentationMs;
1736 int64_t presentationMs;
1742 enum COMPRESSION_PREFERENCE {
1749 PREFER_COMPRESSION_AUTO = -1,
1753 PREFER_LOW_LATENCY = 0,
1763 enum ENCODING_PREFERENCE {
1771 PREFER_SOFTWARE = 0,
1775 PREFER_HARDWARE = 1,
1803 COMPRESSION_PREFERENCE compression_preference,
1804 bool encode_alpha) :
1809 bool operator==(
const AdvanceOptions& rhs)
const {
1819 enum VIDEO_MIRROR_MODE_TYPE {
1823 VIDEO_MIRROR_MODE_AUTO = 0,
1827 VIDEO_MIRROR_MODE_ENABLED = 1,
1831 VIDEO_MIRROR_MODE_DISABLED = 2,
1834 #if defined(__APPLE__) && TARGET_OS_IOS
1838 enum CAMERA_FORMAT_TYPE {
1846 enum VIDEO_MODULE_TYPE {
1848 VIDEO_MODULE_CAPTURER = 0,
1850 VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1852 VIDEO_MODULE_HARDWARE_ENCODER = 2,
1854 VIDEO_MODULE_SOFTWARE_DECODER = 3,
1856 VIDEO_MODULE_HARDWARE_DECODER = 4,
1858 VIDEO_MODULE_RENDERER = 5,
1861 enum HDR_CAPABILITY {
1863 HDR_CAPABILITY_UNKNOWN = -1,
1865 HDR_CAPABILITY_UNSUPPORTED = 0,
1867 HDR_CAPABILITY_SUPPORTED = 1,
1871 enum CODEC_CAP_MASK {
1873 CODEC_CAP_MASK_NONE = 0,
1876 CODEC_CAP_MASK_HW_DEC = 1 << 0,
1879 CODEC_CAP_MASK_HW_ENC = 1 << 1,
1882 CODEC_CAP_MASK_SW_DEC = 1 << 2,
1885 CODEC_CAP_MASK_SW_ENC = 1 << 3,
1889 VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1890 VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1893 : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
1894 swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
2040 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2050 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2060 VideoEncoderConfiguration()
2062 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2071 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2072 if (
this == &rhs)
return *
this;
2116 enum SIMULCAST_STREAM_MODE {
2120 AUTO_SIMULCAST_STREAM = -1,
2124 DISABLE_SIMULCAST_STREAM = 0,
2128 ENABLE_SIMULCAST_STREAM = 1,
2150 bool operator==(
const SimulcastStreamConfig& rhs)
const {
2312 mode(FIT_MODE_COVER_POSITION) {}
2517 enum CLIENT_ROLE_TYPE {
2521 CLIENT_ROLE_BROADCASTER = 1,
2525 CLIENT_ROLE_AUDIENCE = 2,
2532 enum QUALITY_ADAPT_INDICATION {
2540 ADAPT_UP_BANDWIDTH = 1,
2544 ADAPT_DOWN_BANDWIDTH = 2,
2551 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2555 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2559 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2578 enum EXPERIENCE_QUALITY_TYPE {
2580 EXPERIENCE_QUALITY_GOOD = 0,
2582 EXPERIENCE_QUALITY_BAD = 1,
2588 enum EXPERIENCE_POOR_REASON {
2592 EXPERIENCE_REASON_NONE = 0,
2596 REMOTE_NETWORK_QUALITY_POOR = 1,
2600 LOCAL_NETWORK_QUALITY_POOR = 2,
2604 WIRELESS_SIGNAL_POOR = 4,
2609 WIFI_BLUETOOTH_COEXIST = 8,
2615 enum AUDIO_AINS_MODE {
2619 AINS_MODE_BALANCED = 0,
2623 AINS_MODE_AGGRESSIVE = 1,
2627 AINS_MODE_ULTRALOWLATENCY = 2
2633 enum AUDIO_PROFILE_TYPE {
2643 AUDIO_PROFILE_DEFAULT = 0,
2647 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2651 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2658 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2662 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2669 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2673 AUDIO_PROFILE_IOT = 6,
2674 AUDIO_PROFILE_NUM = 7
2680 enum AUDIO_SCENARIO_TYPE {
2685 AUDIO_SCENARIO_DEFAULT = 0,
2691 AUDIO_SCENARIO_GAME_STREAMING = 3,
2697 AUDIO_SCENARIO_CHATROOM = 5,
2702 AUDIO_SCENARIO_CHORUS = 7,
2706 AUDIO_SCENARIO_MEETING = 8,
2711 AUDIO_SCENARIO_AI_SERVER = 9,
2715 AUDIO_SCENARIO_AI_CLIENT = 10,
2719 AUDIO_SCENARIO_NUM = 11,
2726 OPTIONAL_ENUM_SIZE_T{
2728 kMaxWidthInPixels = 3840,
2730 kMaxHeightInPixels = 2160,
2750 bool operator<(
const VideoFormat& fmt)
const {
2751 if (
height != fmt.height) {
2752 return height < fmt.height;
2753 }
else if (
width != fmt.width) {
2754 return width < fmt.width;
2756 return fps < fmt.fps;
2759 bool operator==(
const VideoFormat& fmt)
const {
2760 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
2762 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
2768 enum VIDEO_CONTENT_HINT {
2779 CONTENT_HINT_MOTION,
2785 CONTENT_HINT_DETAILS
2790 enum SCREEN_SCENARIO_TYPE {
2796 SCREEN_SCENARIO_DOCUMENT = 1,
2801 SCREEN_SCENARIO_GAMING = 2,
2806 SCREEN_SCENARIO_VIDEO = 3,
2812 SCREEN_SCENARIO_RDC = 4,
2818 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2822 APPLICATION_SCENARIO_GENERAL = 0,
2826 APPLICATION_SCENARIO_MEETING = 1,
2830 APPLICATION_SCENARIO_1V1 = 2,
2834 APPLICATION_SCENARIO_LIVESHOW = 3,
2840 enum VIDEO_QOE_PREFERENCE_TYPE {
2844 VIDEO_QOE_PREFERENCE_BALANCE = 1,
2848 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2852 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2856 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2863 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2868 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2871 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2874 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2877 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2880 enum CAMERA_STABILIZATION_MODE {
2883 CAMERA_STABILIZATION_MODE_OFF = -1,
2886 CAMERA_STABILIZATION_MODE_AUTO = 0,
2889 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2892 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2895 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2898 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2904 enum LOCAL_AUDIO_STREAM_STATE {
2908 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2912 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2916 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2920 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2926 enum LOCAL_AUDIO_STREAM_REASON {
2930 LOCAL_AUDIO_STREAM_REASON_OK = 0,
2935 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2939 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2946 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2950 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2954 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2957 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2960 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2964 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2967 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2970 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2975 enum LOCAL_VIDEO_STREAM_STATE {
2979 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2984 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2988 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2992 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2998 enum LOCAL_VIDEO_STREAM_REASON {
3002 LOCAL_VIDEO_STREAM_REASON_OK = 0,
3006 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3011 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3016 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3022 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3026 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3031 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3038 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3044 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3049 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3054 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3059 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3064 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3068 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3074 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3089 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3091 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3093 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3095 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3097 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3103 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3106 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3108 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3110 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3118 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3120 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3122 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3129 enum REMOTE_AUDIO_STATE {
3135 REMOTE_AUDIO_STATE_STOPPED =
3140 REMOTE_AUDIO_STATE_STARTING = 1,
3146 REMOTE_AUDIO_STATE_DECODING =
3152 REMOTE_AUDIO_STATE_FROZEN = 3,
3157 REMOTE_AUDIO_STATE_FAILED = 4,
3163 enum REMOTE_AUDIO_STATE_REASON {
3167 REMOTE_AUDIO_REASON_INTERNAL = 0,
3171 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3175 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3180 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3185 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3190 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3195 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3199 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3203 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3207 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3213 enum REMOTE_VIDEO_STATE {
3220 REMOTE_VIDEO_STATE_STOPPED = 0,
3224 REMOTE_VIDEO_STATE_STARTING = 1,
3231 REMOTE_VIDEO_STATE_DECODING = 2,
3235 REMOTE_VIDEO_STATE_FROZEN = 3,
3239 REMOTE_VIDEO_STATE_FAILED = 4,
3244 enum REMOTE_VIDEO_STATE_REASON {
3248 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3252 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3256 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3260 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3264 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3268 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3272 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3276 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3280 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3284 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3287 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3290 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3293 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3297 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3304 enum REMOTE_USER_STATE {
3308 USER_STATE_MUTE_AUDIO = (1 << 0),
3312 USER_STATE_MUTE_VIDEO = (1 << 1),
3316 USER_STATE_ENABLE_VIDEO = (1 << 4),
3320 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3379 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3383 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3387 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3391 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3395 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3399 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3449 bool isLowLatencyAudioSupported;
3451 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3514 enum AUDIO_SAMPLE_RATE_TYPE {
3518 AUDIO_SAMPLE_RATE_32000 = 32000,
3522 AUDIO_SAMPLE_RATE_44100 = 44100,
3526 AUDIO_SAMPLE_RATE_48000 = 48000,
3531 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3535 VIDEO_CODEC_H264_FOR_STREAM = 1,
3539 VIDEO_CODEC_H265_FOR_STREAM = 2,
3545 enum VIDEO_CODEC_PROFILE_TYPE {
3549 VIDEO_CODEC_PROFILE_BASELINE = 66,
3554 VIDEO_CODEC_PROFILE_MAIN = 77,
3558 VIDEO_CODEC_PROFILE_HIGH = 100,
3564 enum AUDIO_CODEC_PROFILE_TYPE {
3568 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3572 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3576 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3625 enum RTMP_STREAM_PUBLISH_STATE {
3630 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3635 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3640 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3651 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3657 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3662 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3668 enum RTMP_STREAM_PUBLISH_REASON {
3672 RTMP_STREAM_PUBLISH_REASON_OK = 0,
3679 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3683 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3688 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3693 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3697 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3701 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3705 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3709 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3713 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3718 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3723 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
3730 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
3735 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
3739 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
3742 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3747 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3751 enum RTMP_STREAMING_EVENT {
3756 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3761 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3765 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3769 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3848 enum CONNECTION_STATE_TYPE {
3855 CONNECTION_STATE_DISCONNECTED = 1,
3864 CONNECTION_STATE_CONNECTING = 2,
3872 CONNECTION_STATE_CONNECTED = 3,
3882 CONNECTION_STATE_RECONNECTING = 4,
3891 CONNECTION_STATE_FAILED = 5,
4220 enum VIDEO_TRANSCODER_ERROR {
4224 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4228 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4232 VT_ERR_INVALID_IMAGE_PATH = 3,
4236 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4240 VT_ERR_INVALID_LAYOUT = 5,
4244 VT_ERR_INTERNAL = 20
4282 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
4287 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
4351 enum LASTMILE_PROBE_RESULT_STATE {
4355 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4360 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4365 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4415 enum CONNECTION_CHANGED_REASON_TYPE {
4419 CONNECTION_CHANGED_CONNECTING = 0,
4423 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4427 CONNECTION_CHANGED_INTERRUPTED = 2,
4432 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4437 CONNECTION_CHANGED_JOIN_FAILED = 4,
4441 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4445 CONNECTION_CHANGED_INVALID_APP_ID = 6,
4450 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4459 CONNECTION_CHANGED_INVALID_TOKEN = 8,
4463 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4471 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4475 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4479 CONNECTION_CHANGED_RENEW_TOKEN = 12,
4484 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4489 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4493 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4497 CONNECTION_CHANGED_LOST = 16,
4501 CONNECTION_CHANGED_ECHO_TEST = 17,
4505 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4509 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4513 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4518 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4522 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4526 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4530 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4536 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4540 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4544 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4549 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4554 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4560 enum WLACC_MESSAGE_REASON {
4564 WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4568 WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4574 enum WLACC_SUGGEST_ACTION {
4578 WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4582 WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4587 WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4592 WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4620 NETWORK_TYPE_UNKNOWN = -1,
4624 NETWORK_TYPE_DISCONNECTED = 0,
4628 NETWORK_TYPE_LAN = 1,
4632 NETWORK_TYPE_WIFI = 2,
4636 NETWORK_TYPE_MOBILE_2G = 3,
4640 NETWORK_TYPE_MOBILE_3G = 4,
4644 NETWORK_TYPE_MOBILE_4G = 5,
4648 NETWORK_TYPE_MOBILE_5G = 6,
4654 enum VIDEO_VIEW_SETUP_MODE {
4658 VIDEO_VIEW_SETUP_REPLACE = 0,
4662 VIDEO_VIEW_SETUP_ADD = 1,
4666 VIDEO_VIEW_SETUP_REMOVE = 2,
4752 position(media::base::POSITION_POST_CAPTURER) {}
4754 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4766 position(media::base::POSITION_POST_CAPTURER) {}
4768 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4780 position(media::base::POSITION_POST_CAPTURER) {}
4782 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
4795 position(media::base::POSITION_POST_CAPTURER) {}
4837 float redness,
float sharpness)
5000 :
mode(lowlightMode),
level(lowlightLevel) {}
5049 :
mode(denoiserMode),
level(denoiserLevel) {}
5158 source(OPTIONAL_NULLPTR),
5163 enum SEG_MODEL_TYPE {
5169 SEG_MODEL_TYPE modelType;
5171 float greenCapacity;
5178 enum AUDIO_TRACK_TYPE {
5182 AUDIO_TRACK_INVALID = -1,
5189 AUDIO_TRACK_MIXABLE = 0,
5195 AUDIO_TRACK_DIRECT = 1,
5237 enum VOICE_BEAUTIFIER_PRESET {
5240 VOICE_BEAUTIFIER_OFF = 0x00000000,
5246 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
5252 CHAT_BEAUTIFIER_FRESH = 0x01010200,
5258 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
5268 SINGING_BEAUTIFIER = 0x01020100,
5271 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
5274 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
5277 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
5280 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
5283 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
5286 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
5289 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
5292 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
5303 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
5328 enum AUDIO_EFFECT_PRESET {
5331 AUDIO_EFFECT_OFF = 0x00000000,
5334 ROOM_ACOUSTICS_KTV = 0x02010100,
5337 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
5340 ROOM_ACOUSTICS_STUDIO = 0x02010300,
5343 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5350 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5353 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5356 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5368 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5379 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5387 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5394 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5400 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5406 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5413 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5419 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5423 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5426 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5433 STYLE_TRANSFORMATION_RNB = 0x02030100,
5440 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5445 PITCH_CORRECTION = 0x02040100,
5454 enum VOICE_CONVERSION_PRESET {
5457 VOICE_CONVERSION_OFF = 0x00000000,
5461 VOICE_CHANGER_NEUTRAL = 0x03010100,
5465 VOICE_CHANGER_SWEET = 0x03010200,
5469 VOICE_CHANGER_SOLID = 0x03010300,
5473 VOICE_CHANGER_BASS = 0x03010400,
5476 VOICE_CHANGER_CARTOON = 0x03010500,
5479 VOICE_CHANGER_CHILDLIKE = 0x03010600,
5482 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5485 VOICE_CHANGER_MONSTER = 0x03010800,
5488 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5491 VOICE_CHANGER_GROOT = 0x03010A00,
5494 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5497 VOICE_CHANGER_IRON_LADY = 0x03010C00,
5500 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5503 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5506 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5512 enum HEADPHONE_EQUALIZER_PRESET {
5515 HEADPHONE_EQUALIZER_OFF = 0x00000000,
5518 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5521 HEADPHONE_EQUALIZER_INEAR = 0x04000002
5526 enum VOICE_AI_TUNER_TYPE {
5529 VOICE_AI_TUNER_MATURE_MALE,
5532 VOICE_AI_TUNER_FRESH_MALE,
5535 VOICE_AI_TUNER_ELEGANT_FEMALE,
5538 VOICE_AI_TUNER_SWEET_FEMALE,
5541 VOICE_AI_TUNER_WARM_MALE_SINGING,
5544 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
5547 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
5550 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
5553 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
5556 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
5653 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
5664 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
5675 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
5686 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
5703 enum AUDIO_RECORDING_QUALITY_TYPE {
5708 AUDIO_RECORDING_QUALITY_LOW = 0,
5713 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5718 AUDIO_RECORDING_QUALITY_HIGH = 2,
5722 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5728 enum AUDIO_FILE_RECORDING_TYPE {
5732 AUDIO_FILE_RECORDING_MIC = 1,
5736 AUDIO_FILE_RECORDING_PLAYBACK = 2,
5740 AUDIO_FILE_RECORDING_MIXED = 3,
5746 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5750 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5754 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5758 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
5810 quality(AUDIO_RECORDING_QUALITY_LOW),
5814 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
5822 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
5823 AUDIO_FILE_RECORDING_TYPE type,
5824 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
5832 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
5855 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5917 AREA_CODE_CN = 0x00000001,
5921 AREA_CODE_NA = 0x00000002,
5925 AREA_CODE_EU = 0x00000004,
5929 AREA_CODE_AS = 0x00000008,
5933 AREA_CODE_JP = 0x00000010,
5937 AREA_CODE_IN = 0x00000020,
5941 AREA_CODE_GLOB = (0xFFFFFFFF)
5952 AREA_CODE_OC = 0x00000040,
5956 AREA_CODE_SA = 0x00000080,
5960 AREA_CODE_AF = 0x00000100,
5964 AREA_CODE_KR = 0x00000200,
5968 AREA_CODE_HKMC = 0x00000400,
5972 AREA_CODE_US = 0x00000800,
5976 AREA_CODE_RU = 0x00001000,
5980 AREA_CODE_OVS = 0xFFFFFFFE
5986 enum CHANNEL_MEDIA_RELAY_ERROR {
5992 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5999 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6002 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6005 RELAY_ERROR_FAILED_JOIN_SRC = 4,
6008 RELAY_ERROR_FAILED_JOIN_DEST = 5,
6011 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6014 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6018 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6021 RELAY_ERROR_INTERNAL_ERROR = 9,
6024 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
6027 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
6033 enum CHANNEL_MEDIA_RELAY_STATE {
6037 RELAY_STATE_IDLE = 0,
6040 RELAY_STATE_CONNECTING = 1,
6043 RELAY_STATE_RUNNING = 2,
6046 RELAY_STATE_FAILURE = 3,
6146 :
userId(OPTIONAL_NULLPTR),
6155 if (rhs.
userId != OPTIONAL_NULLPTR) {
6156 const size_t len = std::strlen(rhs.
userId);
6157 char* buf =
new char[len + 1];
6158 std::memcpy(buf, rhs.
userId, len);
6164 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
6165 if (
this == &rhs)
return *
this;
6166 userId = OPTIONAL_NULLPTR;
6170 if (rhs.userId != OPTIONAL_NULLPTR) {
6171 const size_t len = std::strlen(rhs.userId);
6172 char* buf =
new char[len + 1];
6173 std::memcpy(buf, rhs.userId, len);
6180 ~PeerDownlinkInfo() {
delete[]
userId; }
6223 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
6224 if (
this == &rhs)
return *
this;
6247 enum ENCRYPTION_MODE {
6302 bool datastreamEncryptionEnabled;
6307 datastreamEncryptionEnabled(false) {
6312 const char* getEncryptionString()
const {
6315 return "aes-128-xts";
6317 return "aes-128-ecb";
6319 return "aes-256-xts";
6321 return "sm4-128-ecb";
6323 return "aes-128-gcm";
6325 return "aes-256-gcm";
6327 return "aes-128-gcm-2";
6329 return "aes-256-gcm-2";
6331 return "aes-128-gcm-2";
6333 return "aes-128-gcm-2";
6340 enum ENCRYPTION_ERROR_TYPE {
6344 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
6349 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
6353 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
6358 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
6362 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
6365 enum UPLOAD_ERROR_REASON {
6367 UPLOAD_NET_ERROR = 1,
6368 UPLOAD_SERVER_ERROR = 2,
6373 enum PERMISSION_TYPE {
6389 enum STREAM_SUBSCRIBE_STATE {
6407 SUB_STATE_NO_SUBSCRIBED = 1,
6411 SUB_STATE_SUBSCRIBING = 2,
6415 SUB_STATE_SUBSCRIBED = 3
6421 enum STREAM_PUBLISH_STATE {
6436 PUB_STATE_NO_PUBLISHED = 1,
6440 PUB_STATE_PUBLISHING = 2,
6444 PUB_STATE_PUBLISHED = 3
6455 const char* channelId;
6456 int intervalInSeconds;
6459 : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
6462 : view(OPTIONAL_NULLPTR),
6465 token(OPTIONAL_NULLPTR),
6466 channelId(OPTIONAL_NULLPTR),
6467 intervalInSeconds(2) {}
6489 enum EAR_MONITORING_FILTER_TYPE {
6493 EAR_MONITORING_FILTER_NONE = (1 << 0),
6498 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
6502 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
6508 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
6514 enum THREAD_PRIORITY_TYPE {
6541 #if defined(__ANDROID__) || (defined(__APPLE__) && (TARGET_OS_IOS || (defined(TARGET_OS_VISION) && TARGET_OS_VISION)))
6546 struct ScreenVideoParameters {
6573 VideoDimensions dimensions;
6588 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6590 ScreenVideoParameters() : dimensions(1280, 720) {}
6596 struct ScreenAudioParameters {
6600 int sampleRate = 16000;
6609 int captureSignalVolume = 100;
6615 struct ScreenCaptureParameters2 {
6625 bool captureAudio =
false;
6629 ScreenAudioParameters audioParams;
6639 bool captureVideo =
true;
6643 ScreenVideoParameters videoParams;
6650 enum MEDIA_TRACE_EVENT {
6654 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6658 MEDIA_TRACE_EVENT_VIDEO_DECODED,
6716 enum CONFIG_FETCH_TYPE {
6720 CONFIG_FETCH_TYPE_INITIALIZE = 1,
6724 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6728 enum LOCAL_PROXY_MODE {
6731 ConnectivityFirst = 0,
6801 mode(ConnectivityFirst),
6805 enum RecorderStreamType {
6829 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
6838 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
6851 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
6852 return p != OPTIONAL_NULLPTR;
6859 virtual void onCertificateRequired() = 0;
6860 virtual void onLicenseRequest() = 0;
6861 virtual void onLicenseValidated() = 0;
6862 virtual void onLicenseError(
int result) = 0;
6945 strUid(OPTIONAL_NULLPTR),
6959 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
6966 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
6968 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
6992 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
6994 const char* certificate_buf,
6995 int certificate_len);
7035 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();