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,
2710 AUDIO_SCENARIO_AI_SERVER = 9,
2714 AUDIO_SCENARIO_AI_CLIENT = 10,
2718 AUDIO_SCENARIO_NUM = 11,
2725 OPTIONAL_ENUM_SIZE_T{
2727 kMaxWidthInPixels = 3840,
2729 kMaxHeightInPixels = 2160,
2749 bool operator<(
const VideoFormat& fmt)
const {
2750 if (
height != fmt.height) {
2751 return height < fmt.height;
2752 }
else if (
width != fmt.width) {
2753 return width < fmt.width;
2755 return fps < fmt.fps;
2758 bool operator==(
const VideoFormat& fmt)
const {
2759 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
2761 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
2767 enum VIDEO_CONTENT_HINT {
2778 CONTENT_HINT_MOTION,
2784 CONTENT_HINT_DETAILS
2789 enum SCREEN_SCENARIO_TYPE {
2795 SCREEN_SCENARIO_DOCUMENT = 1,
2800 SCREEN_SCENARIO_GAMING = 2,
2805 SCREEN_SCENARIO_VIDEO = 3,
2811 SCREEN_SCENARIO_RDC = 4,
2817 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2821 APPLICATION_SCENARIO_GENERAL = 0,
2825 APPLICATION_SCENARIO_MEETING = 1,
2829 APPLICATION_SCENARIO_1V1 = 2,
2833 APPLICATION_SCENARIO_LIVESHOW = 3,
2839 enum VIDEO_QOE_PREFERENCE_TYPE {
2843 VIDEO_QOE_PREFERENCE_BALANCE = 1,
2847 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2851 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2855 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2862 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2867 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2870 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2873 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2876 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2879 enum CAMERA_STABILIZATION_MODE {
2882 CAMERA_STABILIZATION_MODE_OFF = -1,
2885 CAMERA_STABILIZATION_MODE_AUTO = 0,
2888 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2891 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2894 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2897 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2903 enum LOCAL_AUDIO_STREAM_STATE {
2907 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2911 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2915 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2919 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2925 enum LOCAL_AUDIO_STREAM_REASON {
2929 LOCAL_AUDIO_STREAM_REASON_OK = 0,
2934 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2938 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2945 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2949 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2953 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2956 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2959 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2963 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2966 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2969 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2974 enum LOCAL_VIDEO_STREAM_STATE {
2978 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2983 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2987 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2991 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2997 enum LOCAL_VIDEO_STREAM_REASON {
3001 LOCAL_VIDEO_STREAM_REASON_OK = 0,
3005 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3010 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3015 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3021 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3025 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3030 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3037 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3043 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3048 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3053 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3058 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3063 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3067 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3073 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3088 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3090 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3092 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3094 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3096 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3102 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3105 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3107 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3109 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3117 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3119 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3121 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3128 enum REMOTE_AUDIO_STATE {
3134 REMOTE_AUDIO_STATE_STOPPED =
3139 REMOTE_AUDIO_STATE_STARTING = 1,
3145 REMOTE_AUDIO_STATE_DECODING =
3151 REMOTE_AUDIO_STATE_FROZEN = 3,
3156 REMOTE_AUDIO_STATE_FAILED = 4,
3162 enum REMOTE_AUDIO_STATE_REASON {
3166 REMOTE_AUDIO_REASON_INTERNAL = 0,
3170 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3174 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3179 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3184 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3189 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3194 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3198 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3202 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3206 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3212 enum REMOTE_VIDEO_STATE {
3219 REMOTE_VIDEO_STATE_STOPPED = 0,
3223 REMOTE_VIDEO_STATE_STARTING = 1,
3230 REMOTE_VIDEO_STATE_DECODING = 2,
3234 REMOTE_VIDEO_STATE_FROZEN = 3,
3238 REMOTE_VIDEO_STATE_FAILED = 4,
3243 enum REMOTE_VIDEO_STATE_REASON {
3247 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3251 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3255 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3259 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3263 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3267 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3271 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3275 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3279 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3283 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3286 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3289 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3292 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3296 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3303 enum REMOTE_USER_STATE {
3307 USER_STATE_MUTE_AUDIO = (1 << 0),
3311 USER_STATE_MUTE_VIDEO = (1 << 1),
3315 USER_STATE_ENABLE_VIDEO = (1 << 4),
3319 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3378 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3382 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3386 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3390 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3394 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3398 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3448 bool isLowLatencyAudioSupported;
3450 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3513 enum AUDIO_SAMPLE_RATE_TYPE {
3517 AUDIO_SAMPLE_RATE_32000 = 32000,
3521 AUDIO_SAMPLE_RATE_44100 = 44100,
3525 AUDIO_SAMPLE_RATE_48000 = 48000,
3530 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3534 VIDEO_CODEC_H264_FOR_STREAM = 1,
3538 VIDEO_CODEC_H265_FOR_STREAM = 2,
3544 enum VIDEO_CODEC_PROFILE_TYPE {
3548 VIDEO_CODEC_PROFILE_BASELINE = 66,
3553 VIDEO_CODEC_PROFILE_MAIN = 77,
3557 VIDEO_CODEC_PROFILE_HIGH = 100,
3563 enum AUDIO_CODEC_PROFILE_TYPE {
3567 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3571 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3575 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3624 enum RTMP_STREAM_PUBLISH_STATE {
3629 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3634 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3639 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3650 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3656 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3661 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3667 enum RTMP_STREAM_PUBLISH_REASON {
3671 RTMP_STREAM_PUBLISH_REASON_OK = 0,
3678 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3682 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3687 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3692 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3696 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3700 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3704 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3708 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3712 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3717 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3722 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
3729 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
3734 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
3738 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
3741 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3746 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3750 enum RTMP_STREAMING_EVENT {
3755 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3760 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3764 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3768 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3847 enum CONNECTION_STATE_TYPE {
3854 CONNECTION_STATE_DISCONNECTED = 1,
3863 CONNECTION_STATE_CONNECTING = 2,
3871 CONNECTION_STATE_CONNECTED = 3,
3881 CONNECTION_STATE_RECONNECTING = 4,
3890 CONNECTION_STATE_FAILED = 5,
4219 enum VIDEO_TRANSCODER_ERROR {
4223 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4227 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4231 VT_ERR_INVALID_IMAGE_PATH = 3,
4235 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4239 VT_ERR_INVALID_LAYOUT = 5,
4243 VT_ERR_INTERNAL = 20
4281 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
4286 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
4350 enum LASTMILE_PROBE_RESULT_STATE {
4354 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4359 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4364 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4414 enum CONNECTION_CHANGED_REASON_TYPE {
4418 CONNECTION_CHANGED_CONNECTING = 0,
4422 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4426 CONNECTION_CHANGED_INTERRUPTED = 2,
4431 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4436 CONNECTION_CHANGED_JOIN_FAILED = 4,
4440 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4444 CONNECTION_CHANGED_INVALID_APP_ID = 6,
4449 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4458 CONNECTION_CHANGED_INVALID_TOKEN = 8,
4462 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4470 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4474 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4478 CONNECTION_CHANGED_RENEW_TOKEN = 12,
4483 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4488 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4492 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4496 CONNECTION_CHANGED_LOST = 16,
4500 CONNECTION_CHANGED_ECHO_TEST = 17,
4504 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4508 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4512 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4517 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4521 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4525 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4529 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4535 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4539 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4543 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4548 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4553 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4559 enum WLACC_MESSAGE_REASON {
4563 WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4567 WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4573 enum WLACC_SUGGEST_ACTION {
4577 WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4581 WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4586 WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4591 WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4619 NETWORK_TYPE_UNKNOWN = -1,
4623 NETWORK_TYPE_DISCONNECTED = 0,
4627 NETWORK_TYPE_LAN = 1,
4631 NETWORK_TYPE_WIFI = 2,
4635 NETWORK_TYPE_MOBILE_2G = 3,
4639 NETWORK_TYPE_MOBILE_3G = 4,
4643 NETWORK_TYPE_MOBILE_4G = 5,
4647 NETWORK_TYPE_MOBILE_5G = 6,
4653 enum VIDEO_VIEW_SETUP_MODE {
4657 VIDEO_VIEW_SETUP_REPLACE = 0,
4661 VIDEO_VIEW_SETUP_ADD = 1,
4665 VIDEO_VIEW_SETUP_REMOVE = 2,
4751 position(media::base::POSITION_POST_CAPTURER) {}
4753 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4765 position(media::base::POSITION_POST_CAPTURER) {}
4767 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4779 position(media::base::POSITION_POST_CAPTURER) {}
4781 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
4794 position(media::base::POSITION_POST_CAPTURER) {}
4836 float redness,
float sharpness)
4999 :
mode(lowlightMode),
level(lowlightLevel) {}
5048 :
mode(denoiserMode),
level(denoiserLevel) {}
5157 source(OPTIONAL_NULLPTR),
5162 enum SEG_MODEL_TYPE {
5168 SEG_MODEL_TYPE modelType;
5170 float greenCapacity;
5177 enum AUDIO_TRACK_TYPE {
5181 AUDIO_TRACK_INVALID = -1,
5188 AUDIO_TRACK_MIXABLE = 0,
5194 AUDIO_TRACK_DIRECT = 1,
5236 enum VOICE_BEAUTIFIER_PRESET {
5239 VOICE_BEAUTIFIER_OFF = 0x00000000,
5245 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
5251 CHAT_BEAUTIFIER_FRESH = 0x01010200,
5257 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
5267 SINGING_BEAUTIFIER = 0x01020100,
5270 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
5273 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
5276 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
5279 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
5282 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
5285 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
5288 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
5291 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
5302 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
5327 enum AUDIO_EFFECT_PRESET {
5330 AUDIO_EFFECT_OFF = 0x00000000,
5333 ROOM_ACOUSTICS_KTV = 0x02010100,
5336 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
5339 ROOM_ACOUSTICS_STUDIO = 0x02010300,
5342 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5349 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5352 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5355 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5367 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5378 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5386 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5393 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5399 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5405 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5412 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5418 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5422 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5425 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5432 STYLE_TRANSFORMATION_RNB = 0x02030100,
5439 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5444 PITCH_CORRECTION = 0x02040100,
5453 enum VOICE_CONVERSION_PRESET {
5456 VOICE_CONVERSION_OFF = 0x00000000,
5460 VOICE_CHANGER_NEUTRAL = 0x03010100,
5464 VOICE_CHANGER_SWEET = 0x03010200,
5468 VOICE_CHANGER_SOLID = 0x03010300,
5472 VOICE_CHANGER_BASS = 0x03010400,
5475 VOICE_CHANGER_CARTOON = 0x03010500,
5478 VOICE_CHANGER_CHILDLIKE = 0x03010600,
5481 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5484 VOICE_CHANGER_MONSTER = 0x03010800,
5487 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5490 VOICE_CHANGER_GROOT = 0x03010A00,
5493 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5496 VOICE_CHANGER_IRON_LADY = 0x03010C00,
5499 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5502 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5505 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5511 enum HEADPHONE_EQUALIZER_PRESET {
5514 HEADPHONE_EQUALIZER_OFF = 0x00000000,
5517 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5520 HEADPHONE_EQUALIZER_INEAR = 0x04000002
5525 enum VOICE_AI_TUNER_TYPE {
5528 VOICE_AI_TUNER_MATURE_MALE,
5531 VOICE_AI_TUNER_FRESH_MALE,
5534 VOICE_AI_TUNER_ELEGANT_FEMALE,
5537 VOICE_AI_TUNER_SWEET_FEMALE,
5540 VOICE_AI_TUNER_WARM_MALE_SINGING,
5543 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
5546 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
5549 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
5552 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
5555 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
5652 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
5663 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
5674 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
5685 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
5702 enum AUDIO_RECORDING_QUALITY_TYPE {
5707 AUDIO_RECORDING_QUALITY_LOW = 0,
5712 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5717 AUDIO_RECORDING_QUALITY_HIGH = 2,
5721 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5727 enum AUDIO_FILE_RECORDING_TYPE {
5731 AUDIO_FILE_RECORDING_MIC = 1,
5735 AUDIO_FILE_RECORDING_PLAYBACK = 2,
5739 AUDIO_FILE_RECORDING_MIXED = 3,
5745 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5749 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5753 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5757 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
5809 quality(AUDIO_RECORDING_QUALITY_LOW),
5813 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
5821 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
5822 AUDIO_FILE_RECORDING_TYPE type,
5823 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
5831 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
5854 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5916 AREA_CODE_CN = 0x00000001,
5920 AREA_CODE_NA = 0x00000002,
5924 AREA_CODE_EU = 0x00000004,
5928 AREA_CODE_AS = 0x00000008,
5932 AREA_CODE_JP = 0x00000010,
5936 AREA_CODE_IN = 0x00000020,
5940 AREA_CODE_GLOB = (0xFFFFFFFF)
5951 AREA_CODE_OC = 0x00000040,
5955 AREA_CODE_SA = 0x00000080,
5959 AREA_CODE_AF = 0x00000100,
5963 AREA_CODE_KR = 0x00000200,
5967 AREA_CODE_HKMC = 0x00000400,
5971 AREA_CODE_US = 0x00000800,
5975 AREA_CODE_RU = 0x00001000,
5979 AREA_CODE_OVS = 0xFFFFFFFE
5985 enum CHANNEL_MEDIA_RELAY_ERROR {
5991 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5998 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6001 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6004 RELAY_ERROR_FAILED_JOIN_SRC = 4,
6007 RELAY_ERROR_FAILED_JOIN_DEST = 5,
6010 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6013 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6017 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6020 RELAY_ERROR_INTERNAL_ERROR = 9,
6023 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
6026 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
6032 enum CHANNEL_MEDIA_RELAY_STATE {
6036 RELAY_STATE_IDLE = 0,
6039 RELAY_STATE_CONNECTING = 1,
6042 RELAY_STATE_RUNNING = 2,
6045 RELAY_STATE_FAILURE = 3,
6145 :
userId(OPTIONAL_NULLPTR),
6154 if (rhs.
userId != OPTIONAL_NULLPTR) {
6155 const size_t len = std::strlen(rhs.
userId);
6156 char* buf =
new char[len + 1];
6157 std::memcpy(buf, rhs.
userId, len);
6163 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
6164 if (
this == &rhs)
return *
this;
6165 userId = OPTIONAL_NULLPTR;
6169 if (rhs.userId != OPTIONAL_NULLPTR) {
6170 const size_t len = std::strlen(rhs.userId);
6171 char* buf =
new char[len + 1];
6172 std::memcpy(buf, rhs.userId, len);
6179 ~PeerDownlinkInfo() {
delete[]
userId; }
6222 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
6223 if (
this == &rhs)
return *
this;
6246 enum ENCRYPTION_MODE {
6301 bool datastreamEncryptionEnabled;
6306 datastreamEncryptionEnabled(false) {
6311 const char* getEncryptionString()
const {
6314 return "aes-128-xts";
6316 return "aes-128-ecb";
6318 return "aes-256-xts";
6320 return "sm4-128-ecb";
6322 return "aes-128-gcm";
6324 return "aes-256-gcm";
6326 return "aes-128-gcm-2";
6328 return "aes-256-gcm-2";
6330 return "aes-128-gcm-2";
6332 return "aes-128-gcm-2";
6339 enum ENCRYPTION_ERROR_TYPE {
6343 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
6348 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
6352 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
6357 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
6361 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
6364 enum UPLOAD_ERROR_REASON {
6366 UPLOAD_NET_ERROR = 1,
6367 UPLOAD_SERVER_ERROR = 2,
6372 enum PERMISSION_TYPE {
6388 enum STREAM_SUBSCRIBE_STATE {
6406 SUB_STATE_NO_SUBSCRIBED = 1,
6410 SUB_STATE_SUBSCRIBING = 2,
6414 SUB_STATE_SUBSCRIBED = 3
6420 enum STREAM_PUBLISH_STATE {
6435 PUB_STATE_NO_PUBLISHED = 1,
6439 PUB_STATE_PUBLISHING = 2,
6443 PUB_STATE_PUBLISHED = 3
6454 const char* channelId;
6455 int intervalInSeconds;
6458 : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
6461 : view(OPTIONAL_NULLPTR),
6464 token(OPTIONAL_NULLPTR),
6465 channelId(OPTIONAL_NULLPTR),
6466 intervalInSeconds(2) {}
6488 enum EAR_MONITORING_FILTER_TYPE {
6492 EAR_MONITORING_FILTER_NONE = (1 << 0),
6497 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
6501 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
6507 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
6513 enum THREAD_PRIORITY_TYPE {
6540 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
6545 struct ScreenVideoParameters {
6572 VideoDimensions dimensions;
6587 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6589 ScreenVideoParameters() : dimensions(1280, 720) {}
6595 struct ScreenAudioParameters {
6599 int sampleRate = 16000;
6608 int captureSignalVolume = 100;
6614 struct ScreenCaptureParameters2 {
6624 bool captureAudio =
false;
6628 ScreenAudioParameters audioParams;
6638 bool captureVideo =
true;
6642 ScreenVideoParameters videoParams;
6649 enum MEDIA_TRACE_EVENT {
6653 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6657 MEDIA_TRACE_EVENT_VIDEO_DECODED,
6715 enum CONFIG_FETCH_TYPE {
6719 CONFIG_FETCH_TYPE_INITIALIZE = 1,
6723 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6727 enum LOCAL_PROXY_MODE {
6730 ConnectivityFirst = 0,
6800 mode(ConnectivityFirst),
6804 enum RecorderStreamType {
6828 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
6837 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
6850 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
6851 return p != OPTIONAL_NULLPTR;
6858 virtual void onCertificateRequired() = 0;
6859 virtual void onLicenseRequest() = 0;
6860 virtual void onLicenseValidated() = 0;
6861 virtual void onLicenseError(
int result) = 0;
6944 strUid(OPTIONAL_NULLPTR),
6958 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
6965 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
6967 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
6991 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
6993 const char* certificate_buf,
6994 int certificate_len);
7034 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();