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,
413 WARN_ADM_RECORD_IS_OCCUPIED = 1033,
421 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
425 WARN_APM_HOWLING = 1051,
429 WARN_ADM_GLITCH_STATE = 1052,
433 WARN_ADM_IMPROPER_SETTINGS = 1053,
437 WARN_ADM_POP_STATE = 1055,
441 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
446 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
454 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
460 enum ERROR_CODE_TYPE {
474 ERR_INVALID_ARGUMENT = 2,
485 ERR_NOT_SUPPORTED = 4,
493 ERR_BUFFER_TOO_SMALL = 6,
497 ERR_NOT_INITIALIZED = 7,
501 ERR_INVALID_STATE = 8,
506 ERR_NO_PERMISSION = 9,
529 ERR_BIND_SOCKET = 13,
540 ERR_JOIN_CHANNEL_REJECTED = 17,
547 ERR_LEAVE_CHANNEL_REJECTED = 18,
551 ERR_ALREADY_IN_USE = 19,
561 ERR_INIT_NET_ENGINE = 21,
566 ERR_RESOURCE_LIMITED = 22,
573 ERR_INVALID_APP_ID = 101,
578 ERR_INVALID_CHANNEL_NAME = 102,
584 ERR_NO_SERVER_RESOURCES = 103,
597 ERR_TOKEN_EXPIRED = 109,
614 ERR_INVALID_TOKEN = 110,
619 ERR_CONNECTION_INTERRUPTED = 111,
624 ERR_CONNECTION_LOST = 112,
629 ERR_NOT_IN_CHANNEL = 113,
634 ERR_SIZE_TOO_LARGE = 114,
639 ERR_BITRATE_LIMIT = 115,
644 ERR_TOO_MANY_DATA_STREAMS = 116,
648 ERR_STREAM_MESSAGE_TIMEOUT = 117,
652 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
657 ERR_DECRYPTION_FAILED = 120,
661 ERR_INVALID_USER_ID = 121,
666 ERR_DATASTREAM_DECRYPTION_FAILED = 122,
670 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
676 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
681 ERR_LICENSE_CREDENTIAL_INVALID = 131,
687 ERR_INVALID_USER_ACCOUNT = 134,
695 ERR_MODULE_NOT_FOUND = 157,
699 ERR_CERT_JSON_PART = 158,
700 ERR_CERT_JSON_INVAL = 159,
701 ERR_CERT_JSON_NOMEM = 160,
702 ERR_CERT_CUSTOM = 161,
703 ERR_CERT_CREDENTIAL = 162,
708 ERR_CERT_DUEDATE = 167,
709 ERR_CERT_REQUEST = 168,
712 ERR_PCMSEND_FORMAT = 200,
713 ERR_PCMSEND_BUFFEROVERFLOW = 201,
717 ERR_LOGIN_ALREADY_LOGIN = 428,
724 ERR_LOAD_MEDIA_ENGINE = 1001,
730 ERR_ADM_GENERAL_ERROR = 1005,
735 ERR_ADM_INIT_PLAYOUT = 1008,
739 ERR_ADM_START_PLAYOUT = 1009,
743 ERR_ADM_STOP_PLAYOUT = 1010,
748 ERR_ADM_INIT_RECORDING = 1011,
752 ERR_ADM_START_RECORDING = 1012,
756 ERR_ADM_STOP_RECORDING = 1013,
760 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
763 enum LICENSE_ERROR_TYPE {
767 LICENSE_ERR_INVALID = 1,
771 LICENSE_ERR_EXPIRE = 2,
775 LICENSE_ERR_MINUTES_EXCEED = 3,
779 LICENSE_ERR_LIMITED_PERIOD = 4,
783 LICENSE_ERR_DIFF_DEVICES = 5,
787 LICENSE_ERR_INTERNAL = 99,
793 enum AUDIO_SESSION_OPERATION_RESTRICTION {
797 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
801 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
805 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
810 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
815 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
818 typedef const char* user_id_t;
819 typedef void* view_t;
845 typedef util::AList<UserInfo> UserList;
853 enum USER_OFFLINE_REASON_TYPE {
857 USER_OFFLINE_QUIT = 0,
863 USER_OFFLINE_DROPPED = 1,
867 USER_OFFLINE_BECOME_AUDIENCE = 2,
870 enum INTERFACE_ID_TYPE {
871 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
872 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
873 AGORA_IID_PARAMETER_ENGINE = 3,
874 AGORA_IID_MEDIA_ENGINE = 4,
875 AGORA_IID_AUDIO_ENGINE = 5,
876 AGORA_IID_VIDEO_ENGINE = 6,
877 AGORA_IID_RTC_CONNECTION = 7,
878 AGORA_IID_SIGNALING_ENGINE = 8,
879 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
880 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
881 AGORA_IID_STATE_SYNC = 13,
882 AGORA_IID_META_SERVICE = 14,
883 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
884 AGORA_IID_H265_TRANSCODER = 16,
895 QUALITY_UNKNOWN __deprecated = 0,
899 QUALITY_EXCELLENT = 1,
924 QUALITY_UNSUPPORTED = 7,
928 QUALITY_DETECTING = 8,
952 enum VIDEO_ORIENTATION {
956 VIDEO_ORIENTATION_0 = 0,
960 VIDEO_ORIENTATION_90 = 90,
964 VIDEO_ORIENTATION_180 = 180,
968 VIDEO_ORIENTATION_270 = 270
978 FRAME_RATE_FPS_1 = 1,
982 FRAME_RATE_FPS_7 = 7,
986 FRAME_RATE_FPS_10 = 10,
990 FRAME_RATE_FPS_15 = 15,
994 FRAME_RATE_FPS_24 = 24,
998 FRAME_RATE_FPS_30 = 30,
1002 FRAME_RATE_FPS_60 = 60,
1006 FRAME_WIDTH_960 = 960,
1010 FRAME_HEIGHT_540 = 540,
1016 enum VIDEO_FRAME_TYPE {
1018 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
1020 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1022 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1024 VIDEO_FRAME_TYPE_B_FRAME = 5,
1026 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1028 VIDEO_FRAME_TYPE_UNKNOW
1034 enum ORIENTATION_MODE {
1042 ORIENTATION_MODE_ADAPTIVE = 0,
1049 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1056 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1062 enum DEGRADATION_PREFERENCE {
1077 MAINTAIN_QUALITY = 0,
1083 MAINTAIN_FRAMERATE = 1,
1090 MAINTAIN_BALANCED = 2,
1094 MAINTAIN_RESOLUTION = 3,
1115 bool operator==(
const VideoDimensions& rhs)
const {
1116 return width == rhs.width &&
height == rhs.height;
1125 const int STANDARD_BITRATE = 0;
1134 const int COMPATIBLE_BITRATE = -1;
1139 const int DEFAULT_MIN_BITRATE = -1;
1144 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1149 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1150 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1151 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1152 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1158 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1160 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1162 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1164 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1166 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1168 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1174 enum VIDEO_CODEC_TYPE {
1180 VIDEO_CODEC_NONE = 0,
1184 VIDEO_CODEC_VP8 = 1,
1188 VIDEO_CODEC_H264 = 2,
1192 VIDEO_CODEC_H265 = 3,
1198 VIDEO_CODEC_GENERIC = 6,
1203 VIDEO_CODEC_GENERIC_H264 = 7,
1208 VIDEO_CODEC_AV1 = 12,
1212 VIDEO_CODEC_VP9 = 13,
1216 VIDEO_CODEC_GENERIC_JPEG = 20,
1222 enum CAMERA_FOCAL_LENGTH_TYPE {
1226 CAMERA_FOCAL_LENGTH_DEFAULT = 0,
1230 CAMERA_FOCAL_LENGTH_WIDE_ANGLE = 1,
1234 CAMERA_FOCAL_LENGTH_ULTRA_WIDE = 2,
1238 CAMERA_FOCAL_LENGTH_TELEPHOTO = 3,
1336 enum AUDIO_CODEC_TYPE {
1340 AUDIO_CODEC_OPUS = 1,
1345 AUDIO_CODEC_PCMA = 3,
1349 AUDIO_CODEC_PCMU = 4,
1353 AUDIO_CODEC_G722 = 5,
1360 AUDIO_CODEC_AACLC = 8,
1364 AUDIO_CODEC_HEAAC = 9,
1368 AUDIO_CODEC_JC1 = 10,
1372 AUDIO_CODEC_HEAAC2 = 11,
1376 AUDIO_CODEC_LPCNET = 12,
1380 AUDIO_CODEC_OPUSMC = 13,
1386 enum AUDIO_ENCODING_TYPE {
1391 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1396 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1401 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1406 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1411 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1416 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1421 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1426 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1431 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1436 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1441 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1447 enum WATERMARK_FIT_MODE {
1452 FIT_MODE_COVER_POSITION,
1457 FIT_MODE_USE_IMAGE_RATIO
1485 :
codec(AUDIO_CODEC_AACLC),
1535 channelNum(rhs.channelNum),
1564 enum H264PacketizeMode {
1578 enum VIDEO_STREAM_TYPE {
1582 VIDEO_STREAM_HIGH = 0,
1586 VIDEO_STREAM_LOW = 1,
1590 VIDEO_STREAM_LAYER_1 = 4,
1594 VIDEO_STREAM_LAYER_2 = 5,
1598 VIDEO_STREAM_LAYER_3 = 6,
1602 VIDEO_STREAM_LAYER_4 = 7,
1606 VIDEO_STREAM_LAYER_5 = 8,
1610 VIDEO_STREAM_LAYER_6 = 9,
1634 enum MAX_USER_ACCOUNT_LENGTH_TYPE {
1637 MAX_USER_ACCOUNT_LENGTH = 256
1642 enum MAX_CUSTOM_USER_INFO_LENGTH_TYPE {
1645 MAX_CUSTOM_USER_INFO_LENGTH = 1024
1659 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1665 presentationMs(-1) {}
1679 presentationMs(rhs.presentationMs) {}
1682 if (
this == &rhs)
return *
this;
1694 presentationMs = rhs.presentationMs;
1748 int64_t presentationMs;
1754 enum COMPRESSION_PREFERENCE {
1761 PREFER_COMPRESSION_AUTO = -1,
1765 PREFER_LOW_LATENCY = 0,
1775 enum ENCODING_PREFERENCE {
1783 PREFER_SOFTWARE = 0,
1787 PREFER_HARDWARE = 1,
1815 COMPRESSION_PREFERENCE compression_preference,
1816 bool encode_alpha) :
1821 bool operator==(
const AdvanceOptions& rhs)
const {
1831 enum VIDEO_MIRROR_MODE_TYPE {
1835 VIDEO_MIRROR_MODE_AUTO = 0,
1839 VIDEO_MIRROR_MODE_ENABLED = 1,
1843 VIDEO_MIRROR_MODE_DISABLED = 2,
1846 #if defined(__APPLE__) && TARGET_OS_IOS
1850 enum CAMERA_FORMAT_TYPE {
1858 enum VIDEO_MODULE_TYPE {
1860 VIDEO_MODULE_CAPTURER = 0,
1862 VIDEO_MODULE_SOFTWARE_ENCODER = 1,
1864 VIDEO_MODULE_HARDWARE_ENCODER = 2,
1866 VIDEO_MODULE_SOFTWARE_DECODER = 3,
1868 VIDEO_MODULE_HARDWARE_DECODER = 4,
1870 VIDEO_MODULE_RENDERER = 5,
1873 enum HDR_CAPABILITY {
1875 HDR_CAPABILITY_UNKNOWN = -1,
1877 HDR_CAPABILITY_UNSUPPORTED = 0,
1879 HDR_CAPABILITY_SUPPORTED = 1,
1883 enum CODEC_CAP_MASK {
1885 CODEC_CAP_MASK_NONE = 0,
1888 CODEC_CAP_MASK_HW_DEC = 1 << 0,
1891 CODEC_CAP_MASK_HW_ENC = 1 << 1,
1894 CODEC_CAP_MASK_SW_DEC = 1 << 2,
1897 CODEC_CAP_MASK_SW_ENC = 1 << 3,
1901 VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1902 VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1905 : hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED),
1906 swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
2052 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
2062 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
2072 VideoEncoderConfiguration()
2074 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
2083 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
2084 if (
this == &rhs)
return *
this;
2128 enum SIMULCAST_STREAM_MODE {
2132 AUTO_SIMULCAST_STREAM = -1,
2136 DISABLE_SIMULCAST_STREAM = 0,
2140 ENABLE_SIMULCAST_STREAM = 1,
2162 bool operator==(
const SimulcastStreamConfig& rhs)
const {
2324 mode(FIT_MODE_COVER_POSITION) {}
2529 enum CLIENT_ROLE_TYPE {
2533 CLIENT_ROLE_BROADCASTER = 1,
2537 CLIENT_ROLE_AUDIENCE = 2,
2544 enum QUALITY_ADAPT_INDICATION {
2552 ADAPT_UP_BANDWIDTH = 1,
2556 ADAPT_DOWN_BANDWIDTH = 2,
2563 enum AUDIENCE_LATENCY_LEVEL_TYPE {
2567 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2571 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2590 enum EXPERIENCE_QUALITY_TYPE {
2592 EXPERIENCE_QUALITY_GOOD = 0,
2594 EXPERIENCE_QUALITY_BAD = 1,
2600 enum EXPERIENCE_POOR_REASON {
2604 EXPERIENCE_REASON_NONE = 0,
2608 REMOTE_NETWORK_QUALITY_POOR = 1,
2612 LOCAL_NETWORK_QUALITY_POOR = 2,
2616 WIRELESS_SIGNAL_POOR = 4,
2621 WIFI_BLUETOOTH_COEXIST = 8,
2627 enum AUDIO_AINS_MODE {
2631 AINS_MODE_BALANCED = 0,
2635 AINS_MODE_AGGRESSIVE = 1,
2639 AINS_MODE_ULTRALOWLATENCY = 2
2645 enum AUDIO_PROFILE_TYPE {
2655 AUDIO_PROFILE_DEFAULT = 0,
2659 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2663 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2670 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2674 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2681 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2685 AUDIO_PROFILE_IOT = 6,
2686 AUDIO_PROFILE_NUM = 7
2692 enum AUDIO_SCENARIO_TYPE {
2697 AUDIO_SCENARIO_DEFAULT = 0,
2703 AUDIO_SCENARIO_GAME_STREAMING = 3,
2709 AUDIO_SCENARIO_CHATROOM = 5,
2714 AUDIO_SCENARIO_CHORUS = 7,
2718 AUDIO_SCENARIO_MEETING = 8,
2723 AUDIO_SCENARIO_AI_SERVER = 9,
2727 AUDIO_SCENARIO_AI_CLIENT = 10,
2731 AUDIO_SCENARIO_NUM = 11,
2738 OPTIONAL_ENUM_SIZE_T{
2740 kMaxWidthInPixels = 3840,
2742 kMaxHeightInPixels = 2160,
2762 bool operator<(
const VideoFormat& fmt)
const {
2763 if (
height != fmt.height) {
2764 return height < fmt.height;
2765 }
else if (
width != fmt.width) {
2766 return width < fmt.width;
2768 return fps < fmt.fps;
2771 bool operator==(
const VideoFormat& fmt)
const {
2772 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
2774 bool operator!=(
const VideoFormat& fmt)
const {
return !operator==(fmt); }
2780 enum VIDEO_CONTENT_HINT {
2791 CONTENT_HINT_MOTION,
2797 CONTENT_HINT_DETAILS
2802 enum SCREEN_SCENARIO_TYPE {
2808 SCREEN_SCENARIO_DOCUMENT = 1,
2813 SCREEN_SCENARIO_GAMING = 2,
2818 SCREEN_SCENARIO_VIDEO = 3,
2824 SCREEN_SCENARIO_RDC = 4,
2830 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2834 APPLICATION_SCENARIO_GENERAL = 0,
2838 APPLICATION_SCENARIO_MEETING = 1,
2842 APPLICATION_SCENARIO_1V1 = 2,
2846 APPLICATION_SCENARIO_LIVESHOW = 3,
2852 enum VIDEO_QOE_PREFERENCE_TYPE {
2856 VIDEO_QOE_PREFERENCE_BALANCE = 1,
2860 VIDEO_QOE_PREFERENCE_DELAY_FIRST = 2,
2864 VIDEO_QOE_PREFERENCE_PICTURE_QUALITY_FIRST = 3,
2868 VIDEO_QOE_PREFERENCE_FLUENCY_FIRST = 4,
2875 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2880 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2883 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2886 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2889 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2892 enum CAMERA_STABILIZATION_MODE {
2895 CAMERA_STABILIZATION_MODE_OFF = -1,
2898 CAMERA_STABILIZATION_MODE_AUTO = 0,
2901 CAMERA_STABILIZATION_MODE_LEVEL_1 = 1,
2904 CAMERA_STABILIZATION_MODE_LEVEL_2 = 2,
2907 CAMERA_STABILIZATION_MODE_LEVEL_3 = 3,
2910 CAMERA_STABILIZATION_MODE_MAX_LEVEL = CAMERA_STABILIZATION_MODE_LEVEL_3,
2916 enum LOCAL_AUDIO_STREAM_STATE {
2920 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2924 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2928 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2932 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2938 enum LOCAL_AUDIO_STREAM_REASON {
2942 LOCAL_AUDIO_STREAM_REASON_OK = 0,
2947 LOCAL_AUDIO_STREAM_REASON_FAILURE = 1,
2951 LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
2958 LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY = 3,
2962 LOCAL_AUDIO_STREAM_REASON_RECORD_FAILURE = 4,
2966 LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE = 5,
2969 LOCAL_AUDIO_STREAM_REASON_NO_RECORDING_DEVICE = 6,
2972 LOCAL_AUDIO_STREAM_REASON_NO_PLAYOUT_DEVICE = 7,
2976 LOCAL_AUDIO_STREAM_REASON_INTERRUPTED = 8,
2979 LOCAL_AUDIO_STREAM_REASON_RECORD_INVALID_ID = 9,
2982 LOCAL_AUDIO_STREAM_REASON_PLAYOUT_INVALID_ID = 10,
2987 enum LOCAL_VIDEO_STREAM_STATE {
2991 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2996 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
3000 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
3004 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
3010 enum LOCAL_VIDEO_STREAM_REASON {
3014 LOCAL_VIDEO_STREAM_REASON_OK = 0,
3018 LOCAL_VIDEO_STREAM_REASON_FAILURE = 1,
3023 LOCAL_VIDEO_STREAM_REASON_DEVICE_NO_PERMISSION = 2,
3028 LOCAL_VIDEO_STREAM_REASON_DEVICE_BUSY = 3,
3034 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE = 4,
3038 LOCAL_VIDEO_STREAM_REASON_CODEC_NOT_SUPPORT = 5,
3043 LOCAL_VIDEO_STREAM_REASON_CAPTURE_INBACKGROUND = 6,
3050 LOCAL_VIDEO_STREAM_REASON_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
3056 LOCAL_VIDEO_STREAM_REASON_DEVICE_NOT_FOUND = 8,
3061 LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED = 9,
3066 LOCAL_VIDEO_STREAM_REASON_DEVICE_INVALID_ID = 10,
3071 LOCAL_VIDEO_STREAM_REASON_DEVICE_INTERRUPT = 14,
3076 LOCAL_VIDEO_STREAM_REASON_DEVICE_FATAL_ERROR = 15,
3080 LOCAL_VIDEO_STREAM_REASON_DEVICE_SYSTEM_PRESSURE = 101,
3086 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
3101 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
3103 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
3105 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
3107 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_FAILURE = 21,
3109 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_NO_PERMISSION = 22,
3115 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_AUTO_FALLBACK = 24,
3118 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
3120 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
3122 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
3130 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_PAUSED = 28,
3132 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_RESUMED = 29,
3134 LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30,
3141 enum REMOTE_AUDIO_STATE {
3147 REMOTE_AUDIO_STATE_STOPPED =
3152 REMOTE_AUDIO_STATE_STARTING = 1,
3158 REMOTE_AUDIO_STATE_DECODING =
3164 REMOTE_AUDIO_STATE_FROZEN = 3,
3169 REMOTE_AUDIO_STATE_FAILED = 4,
3175 enum REMOTE_AUDIO_STATE_REASON {
3179 REMOTE_AUDIO_REASON_INTERNAL = 0,
3183 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
3187 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
3192 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
3197 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
3202 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
3207 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
3211 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
3215 REMOTE_AUDIO_REASON_NO_PACKET_RECEIVE = 8,
3219 REMOTE_AUDIO_REASON_LOCAL_PLAY_FAILED = 9,
3225 enum REMOTE_VIDEO_STATE {
3232 REMOTE_VIDEO_STATE_STOPPED = 0,
3236 REMOTE_VIDEO_STATE_STARTING = 1,
3243 REMOTE_VIDEO_STATE_DECODING = 2,
3247 REMOTE_VIDEO_STATE_FROZEN = 3,
3251 REMOTE_VIDEO_STATE_FAILED = 4,
3256 enum REMOTE_VIDEO_STATE_REASON {
3260 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
3264 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
3268 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
3272 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
3276 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
3280 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
3284 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
3288 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
3292 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
3296 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
3299 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
3302 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
3305 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
3309 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
3316 enum REMOTE_USER_STATE {
3320 USER_STATE_MUTE_AUDIO = (1 << 0),
3324 USER_STATE_MUTE_VIDEO = (1 << 1),
3328 USER_STATE_ENABLE_VIDEO = (1 << 4),
3332 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3391 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3395 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3399 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3403 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3407 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3411 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3461 bool isLowLatencyAudioSupported;
3463 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3526 enum AUDIO_SAMPLE_RATE_TYPE {
3530 AUDIO_SAMPLE_RATE_32000 = 32000,
3534 AUDIO_SAMPLE_RATE_44100 = 44100,
3538 AUDIO_SAMPLE_RATE_48000 = 48000,
3543 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3547 VIDEO_CODEC_H264_FOR_STREAM = 1,
3551 VIDEO_CODEC_H265_FOR_STREAM = 2,
3557 enum VIDEO_CODEC_PROFILE_TYPE {
3561 VIDEO_CODEC_PROFILE_BASELINE = 66,
3566 VIDEO_CODEC_PROFILE_MAIN = 77,
3570 VIDEO_CODEC_PROFILE_HIGH = 100,
3576 enum AUDIO_CODEC_PROFILE_TYPE {
3580 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3584 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3588 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3637 enum RTMP_STREAM_PUBLISH_STATE {
3642 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3647 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3652 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3663 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3669 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3674 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3680 enum RTMP_STREAM_PUBLISH_REASON {
3684 RTMP_STREAM_PUBLISH_REASON_OK = 0,
3691 RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT = 1,
3695 RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3700 RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT = 3,
3705 RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR = 4,
3709 RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR = 5,
3713 RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN = 6,
3717 RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT = 7,
3721 RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED = 8,
3725 RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND = 9,
3730 RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED = 10,
3735 RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER =
3742 RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM =
3747 RTMP_STREAM_PUBLISH_REASON_NET_DOWN = 14,
3751 RTMP_STREAM_PUBLISH_REASON_INVALID_APPID =
3754 RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE = 16,
3759 RTMP_STREAM_UNPUBLISH_REASON_OK = 100,
3763 enum RTMP_STREAMING_EVENT {
3768 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3773 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3777 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3781 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3860 enum CONNECTION_STATE_TYPE {
3867 CONNECTION_STATE_DISCONNECTED = 1,
3876 CONNECTION_STATE_CONNECTING = 2,
3884 CONNECTION_STATE_CONNECTED = 3,
3894 CONNECTION_STATE_RECONNECTING = 4,
3903 CONNECTION_STATE_FAILED = 5,
4232 enum VIDEO_TRANSCODER_ERROR {
4236 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
4240 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
4244 VT_ERR_INVALID_IMAGE_PATH = 3,
4248 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
4252 VT_ERR_INVALID_LAYOUT = 5,
4256 VT_ERR_INTERNAL = 20
4294 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel)
4299 MixedAudioStream(AUDIO_SOURCE_TYPE source, uid_t uid,
const char* channel, track_id_t track)
4363 enum LASTMILE_PROBE_RESULT_STATE {
4367 LASTMILE_PROBE_RESULT_COMPLETE = 1,
4372 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
4377 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
4427 enum CONNECTION_CHANGED_REASON_TYPE {
4431 CONNECTION_CHANGED_CONNECTING = 0,
4435 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
4439 CONNECTION_CHANGED_INTERRUPTED = 2,
4444 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
4449 CONNECTION_CHANGED_JOIN_FAILED = 4,
4453 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
4457 CONNECTION_CHANGED_INVALID_APP_ID = 6,
4462 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
4471 CONNECTION_CHANGED_INVALID_TOKEN = 8,
4475 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
4483 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
4487 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
4491 CONNECTION_CHANGED_RENEW_TOKEN = 12,
4496 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
4501 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
4505 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
4509 CONNECTION_CHANGED_LOST = 16,
4513 CONNECTION_CHANGED_ECHO_TEST = 17,
4517 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4521 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4525 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4530 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4534 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4538 CONNECTION_CHANGED_STREAM_CHANNEL_NOT_AVAILABLE = 23,
4542 CONNECTION_CHANGED_INCONSISTENT_APPID = 24,
4548 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4552 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4556 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4561 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT __deprecated = 3,
4566 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED __deprecated = 4,
4572 enum WLACC_MESSAGE_REASON {
4576 WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4580 WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4586 enum WLACC_SUGGEST_ACTION {
4590 WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4594 WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4599 WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4604 WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4632 NETWORK_TYPE_UNKNOWN = -1,
4636 NETWORK_TYPE_DISCONNECTED = 0,
4640 NETWORK_TYPE_LAN = 1,
4644 NETWORK_TYPE_WIFI = 2,
4648 NETWORK_TYPE_MOBILE_2G = 3,
4652 NETWORK_TYPE_MOBILE_3G = 4,
4656 NETWORK_TYPE_MOBILE_4G = 5,
4660 NETWORK_TYPE_MOBILE_5G = 6,
4666 enum VIDEO_VIEW_SETUP_MODE {
4670 VIDEO_VIEW_SETUP_REPLACE = 0,
4674 VIDEO_VIEW_SETUP_ADD = 1,
4678 VIDEO_VIEW_SETUP_REMOVE = 2,
4764 position(media::base::POSITION_POST_CAPTURER) {}
4766 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt)
4778 position(media::base::POSITION_POST_CAPTURER) {}
4780 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4792 position(media::base::POSITION_POST_CAPTURER) {}
4794 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u,
4807 position(media::base::POSITION_POST_CAPTURER) {}
4849 float redness,
float sharpness)
5194 :
mode(lowlightMode),
level(lowlightLevel) {}
5243 :
mode(denoiserMode),
level(denoiserLevel) {}
5352 source(OPTIONAL_NULLPTR),
5357 enum SEG_MODEL_TYPE {
5363 SEG_MODEL_TYPE modelType;
5365 float greenCapacity;
5372 enum AUDIO_TRACK_TYPE {
5376 AUDIO_TRACK_INVALID = -1,
5383 AUDIO_TRACK_MIXABLE = 0,
5389 AUDIO_TRACK_DIRECT = 1,
5431 enum VOICE_BEAUTIFIER_PRESET {
5434 VOICE_BEAUTIFIER_OFF = 0x00000000,
5440 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
5446 CHAT_BEAUTIFIER_FRESH = 0x01010200,
5452 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
5462 SINGING_BEAUTIFIER = 0x01020100,
5465 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
5468 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
5471 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
5474 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
5477 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
5480 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
5483 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
5486 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
5497 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
5522 enum AUDIO_EFFECT_PRESET {
5525 AUDIO_EFFECT_OFF = 0x00000000,
5528 ROOM_ACOUSTICS_KTV = 0x02010100,
5531 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
5534 ROOM_ACOUSTICS_STUDIO = 0x02010300,
5537 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
5544 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
5547 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
5550 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
5562 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
5573 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
5581 ROOM_ACOUSTICS_CHORUS = 0x02010D00,
5588 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
5594 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
5600 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
5607 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
5613 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
5617 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
5620 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
5627 STYLE_TRANSFORMATION_RNB = 0x02030100,
5634 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
5639 PITCH_CORRECTION = 0x02040100,
5648 enum VOICE_CONVERSION_PRESET {
5651 VOICE_CONVERSION_OFF = 0x00000000,
5655 VOICE_CHANGER_NEUTRAL = 0x03010100,
5659 VOICE_CHANGER_SWEET = 0x03010200,
5663 VOICE_CHANGER_SOLID = 0x03010300,
5667 VOICE_CHANGER_BASS = 0x03010400,
5670 VOICE_CHANGER_CARTOON = 0x03010500,
5673 VOICE_CHANGER_CHILDLIKE = 0x03010600,
5676 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
5679 VOICE_CHANGER_MONSTER = 0x03010800,
5682 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
5685 VOICE_CHANGER_GROOT = 0x03010A00,
5688 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
5691 VOICE_CHANGER_IRON_LADY = 0x03010C00,
5694 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
5697 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
5700 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
5706 enum HEADPHONE_EQUALIZER_PRESET {
5709 HEADPHONE_EQUALIZER_OFF = 0x00000000,
5712 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
5715 HEADPHONE_EQUALIZER_INEAR = 0x04000002
5720 enum VOICE_AI_TUNER_TYPE {
5723 VOICE_AI_TUNER_MATURE_MALE,
5726 VOICE_AI_TUNER_FRESH_MALE,
5729 VOICE_AI_TUNER_ELEGANT_FEMALE,
5732 VOICE_AI_TUNER_SWEET_FEMALE,
5735 VOICE_AI_TUNER_WARM_MALE_SINGING,
5738 VOICE_AI_TUNER_GENTLE_FEMALE_SINGING,
5741 VOICE_AI_TUNER_HUSKY_MALE_SINGING,
5744 VOICE_AI_TUNER_WARM_ELEGANT_FEMALE_SINGING,
5747 VOICE_AI_TUNER_POWERFUL_MALE_SINGING,
5750 VOICE_AI_TUNER_DREAMY_FEMALE_SINGING,
5771 #if defined(__APPLE__) && !TARGET_OS_IOS
5772 bool excludeCurrentProcessAudio =
true;
5890 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
5902 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
5914 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t* ex,
int cnt)
5926 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t* ex,
5944 enum AUDIO_RECORDING_QUALITY_TYPE {
5949 AUDIO_RECORDING_QUALITY_LOW = 0,
5954 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
5959 AUDIO_RECORDING_QUALITY_HIGH = 2,
5963 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
5969 enum AUDIO_FILE_RECORDING_TYPE {
5973 AUDIO_FILE_RECORDING_MIC = 1,
5977 AUDIO_FILE_RECORDING_PLAYBACK = 2,
5981 AUDIO_FILE_RECORDING_MIXED = 3,
5987 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
5991 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
5995 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
5999 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
6051 quality(AUDIO_RECORDING_QUALITY_LOW),
6055 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6063 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate,
6064 AUDIO_FILE_RECORDING_TYPE type,
6065 AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
6073 AudioRecordingConfiguration(
const AudioRecordingConfiguration& rhs)
6096 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
6158 AREA_CODE_CN = 0x00000001,
6162 AREA_CODE_NA = 0x00000002,
6166 AREA_CODE_EU = 0x00000004,
6170 AREA_CODE_AS = 0x00000008,
6174 AREA_CODE_JP = 0x00000010,
6178 AREA_CODE_IN = 0x00000020,
6182 AREA_CODE_GLOB = (0xFFFFFFFF)
6193 AREA_CODE_OC = 0x00000040,
6197 AREA_CODE_SA = 0x00000080,
6201 AREA_CODE_AF = 0x00000100,
6205 AREA_CODE_KR = 0x00000200,
6209 AREA_CODE_HKMC = 0x00000400,
6213 AREA_CODE_US = 0x00000800,
6217 AREA_CODE_RU = 0x00001000,
6221 AREA_CODE_OVS = 0xFFFFFFFE
6227 enum CHANNEL_MEDIA_RELAY_ERROR {
6233 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
6240 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
6243 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
6246 RELAY_ERROR_FAILED_JOIN_SRC = 4,
6249 RELAY_ERROR_FAILED_JOIN_DEST = 5,
6252 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
6255 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
6259 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
6262 RELAY_ERROR_INTERNAL_ERROR = 9,
6265 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
6268 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
6274 enum CHANNEL_MEDIA_RELAY_STATE {
6278 RELAY_STATE_IDLE = 0,
6281 RELAY_STATE_CONNECTING = 1,
6284 RELAY_STATE_RUNNING = 2,
6287 RELAY_STATE_FAILURE = 3,
6387 :
userId(OPTIONAL_NULLPTR),
6396 if (rhs.
userId != OPTIONAL_NULLPTR) {
6397 const size_t len = std::strlen(rhs.
userId);
6398 char* buf =
new char[len + 1];
6399 std::memcpy(buf, rhs.
userId, len);
6405 PeerDownlinkInfo& operator=(
const PeerDownlinkInfo& rhs) {
6406 if (
this == &rhs)
return *
this;
6407 userId = OPTIONAL_NULLPTR;
6411 if (rhs.userId != OPTIONAL_NULLPTR) {
6412 const size_t len = std::strlen(rhs.userId);
6413 char* buf =
new char[len + 1];
6414 std::memcpy(buf, rhs.userId, len);
6421 ~PeerDownlinkInfo() {
delete[]
userId; }
6464 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
6465 if (
this == &rhs)
return *
this;
6488 enum ENCRYPTION_MODE {
6543 bool datastreamEncryptionEnabled;
6548 datastreamEncryptionEnabled(false) {
6553 const char* getEncryptionString()
const {
6556 return "aes-128-xts";
6558 return "aes-128-ecb";
6560 return "aes-256-xts";
6562 return "sm4-128-ecb";
6564 return "aes-128-gcm";
6566 return "aes-256-gcm";
6568 return "aes-128-gcm-2";
6570 return "aes-256-gcm-2";
6572 return "aes-128-gcm-2";
6574 return "aes-128-gcm-2";
6581 enum ENCRYPTION_ERROR_TYPE {
6585 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
6590 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
6594 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
6599 ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3,
6603 ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4,
6606 enum UPLOAD_ERROR_REASON {
6608 UPLOAD_NET_ERROR = 1,
6609 UPLOAD_SERVER_ERROR = 2,
6614 enum PERMISSION_TYPE {
6630 enum STREAM_SUBSCRIBE_STATE {
6648 SUB_STATE_NO_SUBSCRIBED = 1,
6652 SUB_STATE_SUBSCRIBING = 2,
6656 SUB_STATE_SUBSCRIBED = 3
6662 enum STREAM_PUBLISH_STATE {
6677 PUB_STATE_NO_PUBLISHED = 1,
6681 PUB_STATE_PUBLISHING = 2,
6685 PUB_STATE_PUBLISHED = 3
6696 const char* channelId;
6697 int intervalInSeconds;
6700 : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
6703 : view(OPTIONAL_NULLPTR),
6706 token(OPTIONAL_NULLPTR),
6707 channelId(OPTIONAL_NULLPTR),
6708 intervalInSeconds(2) {}
6735 enum EAR_MONITORING_FILTER_TYPE {
6739 EAR_MONITORING_FILTER_NONE = (1 << 0),
6744 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1 << 1),
6748 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1 << 2),
6754 EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1 << 15),
6760 enum THREAD_PRIORITY_TYPE {
6787 #if defined(__ANDROID__) || (defined(__APPLE__) && (TARGET_OS_IOS || (defined(TARGET_OS_VISION) && TARGET_OS_VISION)))
6792 struct ScreenVideoParameters {
6819 VideoDimensions dimensions;
6834 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
6836 ScreenVideoParameters() : dimensions(1280, 720) {}
6842 struct ScreenCaptureParameters2 {
6852 bool captureAudio =
false;
6856 ScreenAudioParameters audioParams;
6866 bool captureVideo =
true;
6870 ScreenVideoParameters videoParams;
6877 enum MEDIA_TRACE_EVENT {
6881 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
6885 MEDIA_TRACE_EVENT_VIDEO_DECODED,
6943 enum CONFIG_FETCH_TYPE {
6947 CONFIG_FETCH_TYPE_INITIALIZE = 1,
6951 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
6955 enum LOCAL_PROXY_MODE {
6958 ConnectivityFirst = 0,
7028 mode(ConnectivityFirst),
7032 enum RecorderStreamType {
7056 RecorderStreamInfo(
const char*
channelId, uid_t
uid, RecorderStreamType
type)
7065 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
7078 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
7079 return p != OPTIONAL_NULLPTR;
7086 virtual void onCertificateRequired() = 0;
7087 virtual void onLicenseRequest() = 0;
7088 virtual void onLicenseValidated() = 0;
7089 virtual void onLicenseError(
int result) = 0;
7172 strUid(OPTIONAL_NULLPTR),
7186 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
7193 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
7195 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
7219 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char* credential_buf,
7221 const char* certificate_buf,
7222 int certificate_len);
7262 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();