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)
37 #define AGORA_API extern "C" __declspec(dllimport)
38 #endif // AGORARTC_EXPORT
40 #define AGORA_CALL __cdecl
44 #elif defined(__APPLE__)
46 #include <TargetConditionals.h>
48 #define AGORA_API extern "C" __attribute__((visibility("default")))
51 #elif defined(__ANDROID__) || defined(__linux__)
53 #define AGORA_API extern "C" __attribute__((visibility("default")))
58 #else // !_WIN32 && !__APPLE__ && !(__ANDROID__ || __linux__)
60 #define AGORA_API extern "C"
67 #ifndef OPTIONAL_ENUM_SIZE_T
68 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
69 #define OPTIONAL_ENUM_SIZE_T enum : size_t
71 #define OPTIONAL_ENUM_SIZE_T enum
75 #ifndef OPTIONAL_NULLPTR
76 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
77 #define OPTIONAL_NULLPTR nullptr
79 #define OPTIONAL_NULLPTR NULL
83 #define INVALID_DISPLAY_ID 0xffff
92 typedef T* pointer_type;
95 explicit AutoPtr(pointer_type p = NULL) : ptr_(p) {}
104 operator bool()
const {
return (ptr_ != NULL); }
106 value_type& operator*()
const {
return *get(); }
108 pointer_type operator->()
const {
return get(); }
110 pointer_type get()
const {
return ptr_; }
112 pointer_type release() {
113 pointer_type ret = ptr_;
118 void reset(pointer_type ptr = NULL) {
119 if (ptr != ptr_ && ptr_) {
126 template <
class C1,
class C2>
127 bool queryInterface(C1* c, C2 iid) {
128 pointer_type p = NULL;
129 if (c && !c->queryInterface(iid,
reinterpret_cast<void**
>(&p))) {
146 typedef typename AutoPtr<T>::pointer_type pointer_type;
152 if (
this != &rhs) this->reset(rhs.clone());
155 pointer_type clone()
const {
156 if (!this->get())
return NULL;
157 return this->get()->clone();
163 virtual bool empty()
const = 0;
164 virtual const char* c_str() = 0;
165 virtual const char* data() = 0;
166 virtual size_t length() = 0;
168 virtual void release() = 0;
175 virtual void* current() = 0;
176 virtual const void* const_current()
const = 0;
177 virtual bool next() = 0;
178 virtual void release() = 0;
185 virtual size_t size()
const = 0;
186 virtual void release() = 0;
195 typedef T value_type;
196 typedef value_type& reference;
197 typedef const value_type& const_reference;
198 typedef value_type* pointer;
199 typedef const value_type* const_pointer;
211 return p->current() == rhs.p->current();
213 return valid() == rhs.valid();
215 bool operator!=(
const AOutputIterator& rhs)
const {
return !this->operator==(rhs); }
216 reference operator*() {
return *
reinterpret_cast<pointer
>(p->current()); }
217 const_reference operator*()
const {
return *
reinterpret_cast<const_pointer
>(p->const_current()); }
218 bool valid()
const {
return p && p->current() != NULL; }
227 typedef T value_type;
228 typedef value_type& reference;
229 typedef const value_type& const_reference;
230 typedef value_type* pointer;
231 typedef const value_type* const_pointer;
232 typedef size_t size_type;
237 AList() : container(NULL), owner(
false) {}
238 AList(
IContainer* c,
bool take_ownership) : container(c), owner(take_ownership) {}
239 ~
AList() { reset(); }
240 void reset(
IContainer* c = NULL,
bool take_ownership =
false) {
241 if (owner && container) container->release();
243 owner = take_ownership;
247 size_type size()
const {
return container ? container->size() : 0; }
248 bool empty()
const {
return size() == 0; }
256 enum CHANNEL_PROFILE_TYPE {
262 CHANNEL_PROFILE_COMMUNICATION = 0,
268 CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
273 CHANNEL_PROFILE_GAME __deprecated = 2,
279 CHANNEL_PROFILE_CLOUD_GAMING __deprecated = 3,
285 CHANNEL_PROFILE_COMMUNICATION_1v1 __deprecated = 4,
291 enum WARN_CODE_TYPE {
296 WARN_INVALID_VIEW = 8,
301 WARN_INIT_VIDEO = 16,
311 WARN_NO_AVAILABLE_CHANNEL = 103,
317 WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
322 WARN_LOOKUP_CHANNEL_REJECTED = 105,
328 WARN_OPEN_CHANNEL_TIMEOUT = 106,
333 WARN_OPEN_CHANNEL_REJECTED = 107,
339 WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
343 WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
347 WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
351 WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
355 WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
359 WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
363 WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
366 WARN_CHANNEL_SOCKET_ERROR = 134,
370 WARN_AUDIO_MIXING_OPEN_ERROR = 701,
374 WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
378 WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
382 WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
386 WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
390 WARN_ADM_RECORD_MALFUNCTION = 1021,
394 WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
398 WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
406 WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
410 WARN_APM_HOWLING = 1051,
414 WARN_ADM_GLITCH_STATE = 1052,
418 WARN_ADM_IMPROPER_SETTINGS = 1053,
422 WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
427 WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
435 WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
441 enum ERROR_CODE_TYPE {
455 ERR_INVALID_ARGUMENT = 2,
466 ERR_NOT_SUPPORTED = 4,
474 ERR_BUFFER_TOO_SMALL = 6,
478 ERR_NOT_INITIALIZED = 7,
482 ERR_INVALID_STATE = 8,
487 ERR_NO_PERMISSION = 9,
510 ERR_BIND_SOCKET = 13,
521 ERR_JOIN_CHANNEL_REJECTED = 17,
528 ERR_LEAVE_CHANNEL_REJECTED = 18,
532 ERR_ALREADY_IN_USE = 19,
542 ERR_INIT_NET_ENGINE = 21,
547 ERR_RESOURCE_LIMITED = 22,
553 ERR_INVALID_APP_ID = 101,
558 ERR_INVALID_CHANNEL_NAME = 102,
564 ERR_NO_SERVER_RESOURCES = 103,
577 ERR_TOKEN_EXPIRED = 109,
594 ERR_INVALID_TOKEN = 110,
599 ERR_CONNECTION_INTERRUPTED = 111,
604 ERR_CONNECTION_LOST = 112,
609 ERR_NOT_IN_CHANNEL = 113,
614 ERR_SIZE_TOO_LARGE = 114,
619 ERR_BITRATE_LIMIT = 115,
624 ERR_TOO_MANY_DATA_STREAMS = 116,
628 ERR_STREAM_MESSAGE_TIMEOUT = 117,
632 ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
637 ERR_DECRYPTION_FAILED = 120,
641 ERR_INVALID_USER_ID = 121,
645 ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
651 ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
656 ERR_LICENSE_CREDENTIAL_INVALID = 131,
661 ERR_INVALID_USER_ACCOUNT = 134,
668 ERR_MODULE_NOT_FOUND = 157,
672 ERR_CERT_JSON_PART = 158,
673 ERR_CERT_JSON_INVAL = 159,
674 ERR_CERT_JSON_NOMEM = 160,
675 ERR_CERT_CUSTOM = 161,
676 ERR_CERT_CREDENTIAL = 162,
681 ERR_CERT_DUEDATE = 167,
682 ERR_CERT_REQUEST = 168,
685 ERR_PCMSEND_FORMAT = 200,
686 ERR_PCMSEND_BUFFEROVERFLOW = 201,
690 ERR_LOGIN_ALREADY_LOGIN = 428,
697 ERR_LOAD_MEDIA_ENGINE = 1001,
703 ERR_ADM_GENERAL_ERROR = 1005,
708 ERR_ADM_INIT_PLAYOUT = 1008,
712 ERR_ADM_START_PLAYOUT = 1009,
716 ERR_ADM_STOP_PLAYOUT = 1010,
721 ERR_ADM_INIT_RECORDING = 1011,
725 ERR_ADM_START_RECORDING = 1012,
729 ERR_ADM_STOP_RECORDING = 1013,
733 ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
737 ERR_ADM_APPLICATION_LOOPBACK = 2007,
740 enum LICENSE_ERROR_TYPE {
744 LICENSE_ERR_INVALID = 1,
748 LICENSE_ERR_EXPIRE = 2,
752 LICENSE_ERR_MINUTES_EXCEED = 3,
756 LICENSE_ERR_LIMITED_PERIOD = 4,
760 LICENSE_ERR_DIFF_DEVICES = 5,
764 LICENSE_ERR_INTERNAL = 99,
770 enum AUDIO_SESSION_OPERATION_RESTRICTION {
774 AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
778 AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
782 AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
787 AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
792 AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
795 typedef const char* user_id_t;
796 typedef void* view_t;
822 typedef util::AList<UserInfo> UserList;
830 enum USER_OFFLINE_REASON_TYPE {
834 USER_OFFLINE_QUIT = 0,
840 USER_OFFLINE_DROPPED = 1,
844 USER_OFFLINE_BECOME_AUDIENCE = 2,
847 enum INTERFACE_ID_TYPE {
848 AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
849 AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
850 AGORA_IID_PARAMETER_ENGINE = 3,
851 AGORA_IID_MEDIA_ENGINE = 4,
852 AGORA_IID_AUDIO_ENGINE = 5,
853 AGORA_IID_VIDEO_ENGINE = 6,
854 AGORA_IID_RTC_CONNECTION = 7,
855 AGORA_IID_SIGNALING_ENGINE = 8,
856 AGORA_IID_MEDIA_ENGINE_REGULATOR = 9,
857 AGORA_IID_CLOUD_SPATIAL_AUDIO = 10,
858 AGORA_IID_LOCAL_SPATIAL_AUDIO = 11,
859 AGORA_IID_STATE_SYNC = 13,
860 AGORA_IID_METACHAT_SERVICE = 14,
861 AGORA_IID_MUSIC_CONTENT_CENTER = 15,
862 AGORA_IID_H265_TRANSCODER = 16,
873 QUALITY_UNKNOWN __deprecated = 0,
877 QUALITY_EXCELLENT = 1,
902 QUALITY_UNSUPPORTED = 7,
906 QUALITY_DETECTING = 8,
930 enum VIDEO_ORIENTATION {
934 VIDEO_ORIENTATION_0 = 0,
938 VIDEO_ORIENTATION_90 = 90,
942 VIDEO_ORIENTATION_180 = 180,
946 VIDEO_ORIENTATION_270 = 270
956 FRAME_RATE_FPS_1 = 1,
960 FRAME_RATE_FPS_7 = 7,
964 FRAME_RATE_FPS_10 = 10,
968 FRAME_RATE_FPS_15 = 15,
972 FRAME_RATE_FPS_24 = 24,
976 FRAME_RATE_FPS_30 = 30,
980 FRAME_RATE_FPS_60 = 60,
984 FRAME_WIDTH_960 = 960,
988 FRAME_HEIGHT_540 = 540,
995 enum VIDEO_FRAME_TYPE {
997 VIDEO_FRAME_TYPE_BLANK_FRAME = 0,
999 VIDEO_FRAME_TYPE_KEY_FRAME = 3,
1001 VIDEO_FRAME_TYPE_DELTA_FRAME = 4,
1003 VIDEO_FRAME_TYPE_B_FRAME = 5,
1005 VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6,
1007 VIDEO_FRAME_TYPE_UNKNOW
1013 enum ORIENTATION_MODE {
1021 ORIENTATION_MODE_ADAPTIVE = 0,
1028 ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
1035 ORIENTATION_MODE_FIXED_PORTRAIT = 2,
1041 enum DEGRADATION_PREFERENCE {
1049 MAINTAIN_QUALITY = 0,
1055 MAINTAIN_FRAMERATE = 1,
1062 MAINTAIN_BALANCED = 2,
1066 MAINTAIN_RESOLUTION = 3,
1087 bool operator==(
const VideoDimensions& rhs)
const {
1088 return width == rhs.width &&
height == rhs.height;
1097 const int STANDARD_BITRATE = 0;
1106 const int COMPATIBLE_BITRATE = -1;
1111 const int DEFAULT_MIN_BITRATE = -1;
1116 const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2;
1121 enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY {
1122 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS = 0,
1123 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS = 1,
1124 SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS = 2,
1130 enum VIDEO_CODEC_CAPABILITY_LEVEL {
1132 CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1,
1134 CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5,
1136 CODEC_CAPABILITY_LEVEL_1080P30FPS = 10,
1138 CODEC_CAPABILITY_LEVEL_1080P60FPS = 20,
1140 CODEC_CAPABILITY_LEVEL_4K60FPS = 30,
1146 enum VIDEO_CODEC_TYPE {
1147 VIDEO_CODEC_NONE = 0,
1151 VIDEO_CODEC_VP8 = 1,
1155 VIDEO_CODEC_H264 = 2,
1159 VIDEO_CODEC_H265 = 3,
1164 VIDEO_CODEC_GENERIC = 6,
1168 VIDEO_CODEC_GENERIC_H264 = 7,
1172 VIDEO_CODEC_AV1 = 12,
1176 VIDEO_CODEC_VP9 = 13,
1180 VIDEO_CODEC_GENERIC_JPEG = 20,
1277 enum AUDIO_CODEC_TYPE {
1281 AUDIO_CODEC_OPUS = 1,
1286 AUDIO_CODEC_PCMA = 3,
1290 AUDIO_CODEC_PCMU = 4,
1294 AUDIO_CODEC_G722 = 5,
1301 AUDIO_CODEC_AACLC = 8,
1305 AUDIO_CODEC_HEAAC = 9,
1309 AUDIO_CODEC_JC1 = 10,
1313 AUDIO_CODEC_HEAAC2 = 11,
1317 AUDIO_CODEC_LPCNET = 12,
1323 enum AUDIO_ENCODING_TYPE {
1328 AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101,
1333 AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102,
1338 AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201,
1343 AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202,
1348 AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203,
1353 AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302,
1358 AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303,
1363 AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101,
1368 AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102,
1373 AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302,
1378 AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303,
1384 enum WATERMARK_FIT_MODE {
1389 FIT_MODE_COVER_POSITION,
1394 FIT_MODE_USE_IMAGE_RATIO
1424 :
codec(AUDIO_CODEC_AACLC),
1473 channelNum(rhs.channelNum),
1502 enum H264PacketizeMode {
1516 enum VIDEO_STREAM_TYPE {
1520 VIDEO_STREAM_HIGH = 0,
1524 VIDEO_STREAM_LOW = 1,
1554 frameType(VIDEO_FRAME_TYPE_BLANK_FRAME),
1576 if (
this == &rhs)
return *
this;
1642 enum COMPRESSION_PREFERENCE {
1656 enum ENCODING_PREFERENCE {
1664 PREFER_SOFTWARE = 0,
1668 PREFER_HARDWARE = 1,
1690 COMPRESSION_PREFERENCE compression_preference) :
1694 bool operator==(
const AdvanceOptions& rhs)
const {
1704 enum VIDEO_MIRROR_MODE_TYPE {
1708 VIDEO_MIRROR_MODE_AUTO = 0,
1712 VIDEO_MIRROR_MODE_ENABLED = 1,
1716 VIDEO_MIRROR_MODE_DISABLED = 2,
1721 enum CODEC_CAP_MASK {
1723 CODEC_CAP_MASK_NONE = 0,
1726 CODEC_CAP_MASK_HW_DEC = 1 << 0,
1729 CODEC_CAP_MASK_HW_ENC = 1 << 1,
1732 CODEC_CAP_MASK_SW_DEC = 1 << 2,
1735 CODEC_CAP_MASK_SW_ENC = 1 << 3,
1739 VIDEO_CODEC_CAPABILITY_LEVEL hwDecodingLevel;
1740 VIDEO_CODEC_CAPABILITY_LEVEL swDecodingLevel;
1742 CodecCapLevels(): hwDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED), swDecodingLevel(CODEC_CAPABILITY_LEVEL_UNSPECIFIED) {}
1875 VideoEncoderConfiguration(
int width,
int height,
int f,
int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED)
1885 VideoEncoderConfiguration(
const VideoEncoderConfiguration& config)
1895 VideoEncoderConfiguration()
1897 dimensions(FRAME_WIDTH_960, FRAME_HEIGHT_540),
1906 VideoEncoderConfiguration& operator=(
const VideoEncoderConfiguration& rhs) {
1907 if (
this == &rhs)
return *
this;
1950 enum SIMULCAST_STREAM_MODE {
1954 AUTO_SIMULCAST_STREAM = -1,
1958 DISABLE_SIMULCAST_STREAM = 0,
1962 ENABLE_SIMULCAST_STREAM = 1,
2079 mode(FIT_MODE_COVER_POSITION) {}
2281 enum CLIENT_ROLE_TYPE {
2285 CLIENT_ROLE_BROADCASTER = 1,
2289 CLIENT_ROLE_AUDIENCE = 2,
2295 enum QUALITY_ADAPT_INDICATION {
2303 ADAPT_UP_BANDWIDTH = 1,
2307 ADAPT_DOWN_BANDWIDTH = 2,
2314 enum AUDIENCE_LATENCY_LEVEL_TYPE
2319 AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
2323 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
2343 enum EXPERIENCE_QUALITY_TYPE {
2345 EXPERIENCE_QUALITY_GOOD = 0,
2347 EXPERIENCE_QUALITY_BAD = 1,
2353 enum EXPERIENCE_POOR_REASON {
2357 EXPERIENCE_REASON_NONE = 0,
2361 REMOTE_NETWORK_QUALITY_POOR = 1,
2365 LOCAL_NETWORK_QUALITY_POOR = 2,
2369 WIRELESS_SIGNAL_POOR = 4,
2374 WIFI_BLUETOOTH_COEXIST = 8,
2380 enum AUDIO_AINS_MODE {
2384 AINS_MODE_BALANCED = 0,
2388 AINS_MODE_AGGRESSIVE = 1,
2392 AINS_MODE_ULTRALOWLATENCY = 2
2398 enum AUDIO_PROFILE_TYPE {
2407 AUDIO_PROFILE_DEFAULT = 0,
2411 AUDIO_PROFILE_SPEECH_STANDARD = 1,
2415 AUDIO_PROFILE_MUSIC_STANDARD = 2,
2422 AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
2426 AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4,
2433 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5,
2437 AUDIO_PROFILE_IOT = 6,
2438 AUDIO_PROFILE_NUM = 7
2444 enum AUDIO_SCENARIO_TYPE {
2449 AUDIO_SCENARIO_DEFAULT = 0,
2455 AUDIO_SCENARIO_GAME_STREAMING = 3,
2461 AUDIO_SCENARIO_CHATROOM = 5,
2465 AUDIO_SCENARIO_CHORUS = 7,
2469 AUDIO_SCENARIO_MEETING = 8,
2473 AUDIO_SCENARIO_NUM = 9,
2480 OPTIONAL_ENUM_SIZE_T {
2482 kMaxWidthInPixels = 3840,
2484 kMaxHeightInPixels = 2160,
2504 bool operator<(
const VideoFormat& fmt)
const {
2505 if (
height != fmt.height) {
2506 return height < fmt.height;
2507 }
else if (
width != fmt.width) {
2508 return width < fmt.width;
2510 return fps < fmt.fps;
2513 bool operator==(
const VideoFormat& fmt)
const {
2514 return width == fmt.width &&
height == fmt.height &&
fps == fmt.fps;
2516 bool operator!=(
const VideoFormat& fmt)
const {
2517 return !operator==(fmt);
2524 enum VIDEO_CONTENT_HINT {
2535 CONTENT_HINT_MOTION,
2541 CONTENT_HINT_DETAILS
2546 enum SCREEN_SCENARIO_TYPE {
2552 SCREEN_SCENARIO_DOCUMENT = 1,
2557 SCREEN_SCENARIO_GAMING = 2,
2562 SCREEN_SCENARIO_VIDEO = 3,
2568 SCREEN_SCENARIO_RDC = 4,
2575 enum VIDEO_APPLICATION_SCENARIO_TYPE {
2579 APPLICATION_SCENARIO_GENERAL = 0,
2583 APPLICATION_SCENARIO_MEETING = 1,
2589 enum CAPTURE_BRIGHTNESS_LEVEL_TYPE {
2593 CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1,
2596 CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0,
2599 CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1,
2602 CAPTURE_BRIGHTNESS_LEVEL_DARK = 2,
2608 enum LOCAL_AUDIO_STREAM_STATE {
2612 LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
2616 LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
2620 LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
2624 LOCAL_AUDIO_STREAM_STATE_FAILED = 3
2630 enum LOCAL_AUDIO_STREAM_ERROR {
2634 LOCAL_AUDIO_STREAM_ERROR_OK = 0,
2638 LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
2642 LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2649 LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
2653 LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
2657 LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5,
2660 LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE = 6,
2663 LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE = 7,
2667 LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED = 8,
2670 LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID = 9,
2673 LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID = 10,
2678 enum LOCAL_VIDEO_STREAM_STATE {
2682 LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
2687 LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
2691 LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
2695 LOCAL_VIDEO_STREAM_STATE_FAILED = 3
2701 enum LOCAL_VIDEO_STREAM_ERROR {
2705 LOCAL_VIDEO_STREAM_ERROR_OK = 0,
2709 LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
2714 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
2719 LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
2725 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
2729 LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
2734 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6,
2741 LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
2747 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND = 8,
2752 LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED = 9,
2757 LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID = 10,
2761 LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE = 101,
2767 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
2782 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
2784 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13,
2786 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20,
2788 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_FAILURE = 21,
2790 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_NO_PERMISSION = 22,
2798 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_PAUSED = 23,
2800 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_RESUMED = 24,
2802 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_HIDDEN = 25,
2804 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26,
2806 LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27,
2812 enum REMOTE_AUDIO_STATE
2819 REMOTE_AUDIO_STATE_STOPPED = 0,
2823 REMOTE_AUDIO_STATE_STARTING = 1,
2829 REMOTE_AUDIO_STATE_DECODING = 2,
2834 REMOTE_AUDIO_STATE_FROZEN = 3,
2839 REMOTE_AUDIO_STATE_FAILED = 4,
2845 enum REMOTE_AUDIO_STATE_REASON
2850 REMOTE_AUDIO_REASON_INTERNAL = 0,
2854 REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
2858 REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
2863 REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
2868 REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
2873 REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
2878 REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
2882 REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
2888 enum REMOTE_VIDEO_STATE {
2894 REMOTE_VIDEO_STATE_STOPPED = 0,
2898 REMOTE_VIDEO_STATE_STARTING = 1,
2904 REMOTE_VIDEO_STATE_DECODING = 2,
2908 REMOTE_VIDEO_STATE_FROZEN = 3,
2912 REMOTE_VIDEO_STATE_FAILED = 4,
2917 enum REMOTE_VIDEO_STATE_REASON {
2921 REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
2925 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
2929 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
2933 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
2937 REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
2941 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
2945 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
2949 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
2953 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
2957 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9,
2960 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10,
2963 REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11,
2966 REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12,
2970 REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13,
2977 enum REMOTE_USER_STATE {
2981 USER_STATE_MUTE_AUDIO = (1 << 0),
2985 USER_STATE_MUTE_VIDEO = (1 << 1),
2989 USER_STATE_ENABLE_VIDEO = (1 << 4),
2993 USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8),
3053 enum REMOTE_VIDEO_DOWNSCALE_LEVEL {
3057 REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE,
3061 REMOTE_VIDEO_DOWNSCALE_LEVEL_1,
3065 REMOTE_VIDEO_DOWNSCALE_LEVEL_2,
3069 REMOTE_VIDEO_DOWNSCALE_LEVEL_3,
3073 REMOTE_VIDEO_DOWNSCALE_LEVEL_4,
3122 bool isLowLatencyAudioSupported;
3124 DeviceInfo() : isLowLatencyAudioSupported(
false) {}
3187 enum AUDIO_SAMPLE_RATE_TYPE {
3191 AUDIO_SAMPLE_RATE_32000 = 32000,
3195 AUDIO_SAMPLE_RATE_44100 = 44100,
3199 AUDIO_SAMPLE_RATE_48000 = 48000,
3204 enum VIDEO_CODEC_TYPE_FOR_STREAM {
3208 VIDEO_CODEC_H264_FOR_STREAM = 1,
3212 VIDEO_CODEC_H265_FOR_STREAM = 2,
3218 enum VIDEO_CODEC_PROFILE_TYPE {
3222 VIDEO_CODEC_PROFILE_BASELINE = 66,
3226 VIDEO_CODEC_PROFILE_MAIN = 77,
3230 VIDEO_CODEC_PROFILE_HIGH = 100,
3237 enum AUDIO_CODEC_PROFILE_TYPE {
3241 AUDIO_CODEC_PROFILE_LC_AAC = 0,
3245 AUDIO_CODEC_PROFILE_HE_AAC = 1,
3249 AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2,
3287 enum RTMP_STREAM_PUBLISH_STATE {
3291 RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
3295 RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
3299 RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
3305 RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
3309 RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
3313 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5,
3319 enum RTMP_STREAM_PUBLISH_ERROR_TYPE {
3323 RTMP_STREAM_PUBLISH_ERROR_OK = 0,
3328 RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
3332 RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
3336 RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
3340 RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
3344 RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
3348 RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
3352 RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
3356 RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
3360 RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
3364 RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
3368 RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER = 11,
3372 RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM = 13,
3376 RTMP_STREAM_PUBLISH_ERROR_NET_DOWN = 14,
3380 RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID = 15,
3382 RTMP_STREAM_PUBLISH_ERROR_INVALID_PRIVILEGE = 16,
3386 RTMP_STREAM_UNPUBLISH_ERROR_OK = 100,
3390 enum RTMP_STREAMING_EVENT {
3394 RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
3398 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2,
3402 RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3,
3406 RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4,
3479 enum CONNECTION_STATE_TYPE
3486 CONNECTION_STATE_DISCONNECTED = 1,
3495 CONNECTION_STATE_CONNECTING = 2,
3503 CONNECTION_STATE_CONNECTED = 3,
3513 CONNECTION_STATE_RECONNECTING = 4,
3522 CONNECTION_STATE_FAILED = 5,
3695 LiveTranscoding() :
width(360),
height(640),
videoBitrate(400),
videoFramerate(15),
lowLatency(false),
videoGop(30),
videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH),
backgroundColor(0x000000),
videoCodecType(VIDEO_CODEC_H264_FOR_STREAM),
userCount(0),
transcodingUsers(NULL),
transcodingExtraInfo(NULL),
metadata(NULL),
watermark(NULL),
watermarkCount(0),
backgroundImage(NULL),
backgroundImageCount(0),
audioSampleRate(AUDIO_SAMPLE_RATE_48000),
audioBitrate(48),
audioChannels(1),
audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC),
advancedFeatures(NULL),
advancedFeatureCount(0) {}
3798 enum VIDEO_TRANSCODER_ERROR {
3802 VT_ERR_VIDEO_SOURCE_NOT_READY = 1,
3806 VT_ERR_INVALID_VIDEO_SOURCE_TYPE = 2,
3810 VT_ERR_INVALID_IMAGE_PATH = 3,
3814 VT_ERR_UNSUPPORT_IMAGE_FORMAT = 4,
3818 VT_ERR_INVALID_LAYOUT = 5,
3822 VT_ERR_INTERNAL = 20
3856 enum LASTMILE_PROBE_RESULT_STATE {
3860 LASTMILE_PROBE_RESULT_COMPLETE = 1,
3864 LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
3868 LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
3915 :
state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
3922 enum CONNECTION_CHANGED_REASON_TYPE
3927 CONNECTION_CHANGED_CONNECTING = 0,
3931 CONNECTION_CHANGED_JOIN_SUCCESS = 1,
3935 CONNECTION_CHANGED_INTERRUPTED = 2,
3939 CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
3943 CONNECTION_CHANGED_JOIN_FAILED = 4,
3947 CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
3951 CONNECTION_CHANGED_INVALID_APP_ID = 6,
3955 CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
3961 CONNECTION_CHANGED_INVALID_TOKEN = 8,
3965 CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
3971 CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
3975 CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
3979 CONNECTION_CHANGED_RENEW_TOKEN = 12,
3983 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
3987 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
3991 CONNECTION_CHANGED_REJOIN_SUCCESS = 15,
3995 CONNECTION_CHANGED_LOST = 16,
3999 CONNECTION_CHANGED_ECHO_TEST = 17,
4003 CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18,
4007 CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
4011 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20,
4016 CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21,
4020 CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22,
4026 enum CLIENT_ROLE_CHANGE_FAILED_REASON {
4030 CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1,
4034 CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2,
4038 CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3,
4042 CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4,
4048 enum WLACC_MESSAGE_REASON {
4052 WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0,
4056 WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1,
4062 enum WLACC_SUGGEST_ACTION {
4066 WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0,
4070 WLACC_SUGGEST_ACTION_CONNECT_SSID = 1,
4074 WLACC_SUGGEST_ACTION_CHECK_5G = 2,
4078 WLACC_SUGGEST_ACTION_MODIFY_SSID = 3,
4106 NETWORK_TYPE_UNKNOWN = -1,
4110 NETWORK_TYPE_DISCONNECTED = 0,
4114 NETWORK_TYPE_LAN = 1,
4118 NETWORK_TYPE_WIFI = 2,
4122 NETWORK_TYPE_MOBILE_2G = 3,
4126 NETWORK_TYPE_MOBILE_3G = 4,
4130 NETWORK_TYPE_MOBILE_4G = 5,
4134 NETWORK_TYPE_MOBILE_5G = 6,
4140 enum VIDEO_VIEW_SETUP_MODE {
4144 VIDEO_VIEW_SETUP_REPLACE = 0,
4148 VIDEO_VIEW_SETUP_ADD = 1,
4152 VIDEO_VIEW_SETUP_REMOVE = 2,
4221 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u)
4226 VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t)
4446 enum SEG_MODEL_TYPE {
4452 SEG_MODEL_TYPE modelType;
4454 float greenCapacity;
4462 enum AUDIO_TRACK_TYPE {
4466 AUDIO_TRACK_INVALID = -1,
4473 AUDIO_TRACK_MIXABLE = 0,
4479 AUDIO_TRACK_DIRECT = 1,
4516 enum VOICE_BEAUTIFIER_PRESET {
4519 VOICE_BEAUTIFIER_OFF = 0x00000000,
4525 CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
4531 CHAT_BEAUTIFIER_FRESH = 0x01010200,
4537 CHAT_BEAUTIFIER_VITALITY = 0x01010300,
4546 SINGING_BEAUTIFIER = 0x01020100,
4549 TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
4552 TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
4555 TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
4558 TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
4561 TIMBRE_TRANSFORMATION_FULL = 0x01030500,
4564 TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
4567 TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
4570 TIMBRE_TRANSFORMATION_RINGING = 0x01030800,
4580 ULTRA_HIGH_QUALITY_VOICE = 0x01040100
4602 enum AUDIO_EFFECT_PRESET {
4605 AUDIO_EFFECT_OFF = 0x00000000,
4608 ROOM_ACOUSTICS_KTV = 0x02010100,
4611 ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
4614 ROOM_ACOUSTICS_STUDIO = 0x02010300,
4617 ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
4624 ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
4627 ROOM_ACOUSTICS_SPACIAL = 0x02010600,
4630 ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
4642 ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
4653 ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900,
4660 VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
4666 VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
4672 VOICE_CHANGER_EFFECT_BOY = 0x02020300,
4679 VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
4685 VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
4689 VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
4692 VOICE_CHANGER_EFFECT_HULK = 0x02020700,
4699 STYLE_TRANSFORMATION_RNB = 0x02030100,
4706 STYLE_TRANSFORMATION_POPULAR = 0x02030200,
4711 PITCH_CORRECTION = 0x02040100,
4720 enum VOICE_CONVERSION_PRESET {
4723 VOICE_CONVERSION_OFF = 0x00000000,
4726 VOICE_CHANGER_NEUTRAL = 0x03010100,
4729 VOICE_CHANGER_SWEET = 0x03010200,
4732 VOICE_CHANGER_SOLID = 0x03010300,
4735 VOICE_CHANGER_BASS = 0x03010400,
4738 VOICE_CHANGER_CARTOON = 0x03010500,
4741 VOICE_CHANGER_CHILDLIKE = 0x03010600,
4744 VOICE_CHANGER_PHONE_OPERATOR = 0x03010700,
4747 VOICE_CHANGER_MONSTER = 0x03010800,
4750 VOICE_CHANGER_TRANSFORMERS = 0x03010900,
4753 VOICE_CHANGER_GROOT = 0x03010A00,
4756 VOICE_CHANGER_DARTH_VADER = 0x03010B00,
4759 VOICE_CHANGER_IRON_LADY = 0x03010C00,
4762 VOICE_CHANGER_SHIN_CHAN = 0x03010D00,
4765 VOICE_CHANGER_GIRLISH_MAN = 0x03010E00,
4768 VOICE_CHANGER_CHIPMUNK = 0x03010F00,
4774 enum HEADPHONE_EQUALIZER_PRESET {
4777 HEADPHONE_EQUALIZER_OFF = 0x00000000,
4780 HEADPHONE_EQUALIZER_OVEREAR = 0x04000001,
4783 HEADPHONE_EQUALIZER_INEAR = 0x04000002
4857 :
dimensions(1920, 1080),
frameRate(5),
bitrate(STANDARD_BITRATE),
captureMouseCursor(true),
windowFocus(false),
excludeWindowList(OPTIONAL_NULLPTR),
excludeWindowCount(0),
highLightWidth(0),
highLightColor(0),
enableHighLight(false) {}
4860 ScreenCaptureParameters(
int width,
int height,
int f,
int b)
4861 :
dimensions(width, height),
frameRate(f),
bitrate(b),
captureMouseCursor(true),
windowFocus(false),
excludeWindowList(OPTIONAL_NULLPTR),
excludeWindowCount(0),
highLightWidth(0),
highLightColor(0),
enableHighLight(false){}
4862 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs)
4863 :
dimensions(width, height),
frameRate(f),
bitrate(b),
captureMouseCursor(cur),
windowFocus(fcs),
excludeWindowList(OPTIONAL_NULLPTR),
excludeWindowCount(0),
highLightWidth(0),
highLightColor(0),
enableHighLight(false) {}
4864 ScreenCaptureParameters(
int width,
int height,
int f,
int b, view_t *ex,
int cnt)
4865 :
dimensions(width, height),
frameRate(f),
bitrate(b),
captureMouseCursor(true),
windowFocus(false),
excludeWindowList(ex),
excludeWindowCount(cnt),
highLightWidth(0),
highLightColor(0),
enableHighLight(false) {}
4866 ScreenCaptureParameters(
int width,
int height,
int f,
int b,
bool cur,
bool fcs, view_t *ex,
int cnt)
4867 :
dimensions(width, height),
frameRate(f),
bitrate(b),
captureMouseCursor(cur),
windowFocus(fcs),
excludeWindowList(ex),
excludeWindowCount(cnt),
highLightWidth(0),
highLightColor(0),
enableHighLight(false) {}
4873 enum AUDIO_RECORDING_QUALITY_TYPE {
4877 AUDIO_RECORDING_QUALITY_LOW = 0,
4881 AUDIO_RECORDING_QUALITY_MEDIUM = 1,
4885 AUDIO_RECORDING_QUALITY_HIGH = 2,
4889 AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3,
4895 enum AUDIO_FILE_RECORDING_TYPE {
4899 AUDIO_FILE_RECORDING_MIC = 1,
4903 AUDIO_FILE_RECORDING_PLAYBACK = 2,
4907 AUDIO_FILE_RECORDING_MIXED = 3,
4913 enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION {
4917 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1,
4921 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2,
4925 AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3,
4975 quality(AUDIO_RECORDING_QUALITY_LOW),
4986 AudioRecordingConfiguration(
const char* file_path,
bool enc,
int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type,
int channel)
4994 AudioRecordingConfiguration(
const AudioRecordingConfiguration &rhs)
5017 :
postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
5071 AREA_CODE_CN = 0x00000001,
5075 AREA_CODE_NA = 0x00000002,
5079 AREA_CODE_EU = 0x00000004,
5083 AREA_CODE_AS = 0x00000008,
5087 AREA_CODE_JP = 0x00000010,
5091 AREA_CODE_IN = 0x00000020,
5095 AREA_CODE_GLOB = (0xFFFFFFFF)
5102 AREA_CODE_OC = 0x00000040,
5106 AREA_CODE_SA = 0x00000080,
5110 AREA_CODE_AF = 0x00000100,
5114 AREA_CODE_KR = 0x00000200,
5118 AREA_CODE_HKMC = 0x00000400,
5122 AREA_CODE_US = 0x00000800,
5126 AREA_CODE_OVS = 0xFFFFFFFE
5132 enum CHANNEL_MEDIA_RELAY_ERROR {
5138 RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
5144 RELAY_ERROR_SERVER_NO_RESPONSE = 2,
5147 RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
5150 RELAY_ERROR_FAILED_JOIN_SRC = 4,
5153 RELAY_ERROR_FAILED_JOIN_DEST = 5,
5156 RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
5159 RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
5163 RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
5166 RELAY_ERROR_INTERNAL_ERROR = 9,
5169 RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
5172 RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
5178 enum CHANNEL_MEDIA_RELAY_EVENT {
5181 RELAY_EVENT_NETWORK_DISCONNECTED = 0,
5184 RELAY_EVENT_NETWORK_CONNECTED = 1,
5187 RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
5190 RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
5193 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
5196 RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
5199 RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
5202 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
5205 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
5208 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
5211 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
5214 RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
5217 RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12,
5220 RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13,
5223 RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14,
5226 RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15,
5231 enum CHANNEL_MEDIA_RELAY_STATE {
5235 RELAY_STATE_IDLE = 0,
5238 RELAY_STATE_CONNECTING = 1,
5241 RELAY_STATE_RUNNING = 2,
5244 RELAY_STATE_FAILURE = 3,
5346 :
uid(OPTIONAL_NULLPTR),
5352 if (
this == &rhs)
return *
this;
5353 uid = OPTIONAL_NULLPTR;
5357 if (rhs.
uid != OPTIONAL_NULLPTR) {
5358 char* temp =
new char[strlen(rhs.
uid) + 1];
5359 strcpy(temp, rhs.
uid);
5365 ~PeerDownlinkInfo() {
5366 if (
uid) {
delete []
uid; }
5410 DownlinkNetworkInfo& operator=(
const DownlinkNetworkInfo& rhs) {
5411 if (
this == &rhs)
return *
this;
5425 ~DownlinkNetworkInfo() {
5436 enum ENCRYPTION_MODE {
5496 const char* getEncryptionString()
const {
5499 return "aes-128-xts";
5501 return "aes-128-ecb";
5503 return "aes-256-xts";
5505 return "sm4-128-ecb";
5507 return "aes-128-gcm";
5509 return "aes-256-gcm";
5511 return "aes-128-gcm-2";
5513 return "aes-256-gcm-2";
5515 return "aes-128-gcm-2";
5517 return "aes-128-gcm-2";
5524 enum ENCRYPTION_ERROR_TYPE {
5528 ENCRYPTION_ERROR_INTERNAL_FAILURE = 0,
5532 ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1,
5536 ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2,
5539 enum UPLOAD_ERROR_REASON
5542 UPLOAD_NET_ERROR = 1,
5543 UPLOAD_SERVER_ERROR = 2,
5548 enum PERMISSION_TYPE {
5563 enum MAX_USER_ACCOUNT_LENGTH_TYPE
5567 MAX_USER_ACCOUNT_LENGTH = 256
5573 enum STREAM_SUBSCRIBE_STATE {
5590 SUB_STATE_NO_SUBSCRIBED = 1,
5594 SUB_STATE_SUBSCRIBING = 2,
5598 SUB_STATE_SUBSCRIBED = 3
5604 enum STREAM_PUBLISH_STATE {
5616 PUB_STATE_NO_PUBLISHED = 1,
5620 PUB_STATE_PUBLISHING = 2,
5624 PUB_STATE_PUBLISHED = 3
5635 const char* channelId;
5636 int intervalInSeconds;
5639 : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c), intervalInSeconds(is) {}
5642 : view(OPTIONAL_NULLPTR), enableAudio(
true), enableVideo(
true), token(OPTIONAL_NULLPTR), channelId(OPTIONAL_NULLPTR), intervalInSeconds(2) {}
5666 enum EAR_MONITORING_FILTER_TYPE {
5670 EAR_MONITORING_FILTER_NONE = (1<<0),
5675 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1),
5679 EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2)
5685 enum THREAD_PRIORITY_TYPE {
5712 #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
5717 struct ScreenVideoParameters {
5744 VideoDimensions dimensions;
5759 VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
5761 ScreenVideoParameters() : dimensions(1280, 720) {}
5767 struct ScreenAudioParameters {
5771 int sampleRate = 16000;
5780 int captureSignalVolume = 100;
5786 struct ScreenCaptureParameters2 {
5796 bool captureAudio =
false;
5800 ScreenAudioParameters audioParams;
5810 bool captureVideo =
true;
5814 ScreenVideoParameters videoParams;
5821 enum MEDIA_TRACE_EVENT {
5825 MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0,
5829 MEDIA_TRACE_EVENT_VIDEO_DECODED,
5887 enum CONFIG_FETCH_TYPE {
5891 CONFIG_FETCH_TYPE_INITIALIZE = 1,
5895 CONFIG_FETCH_TYPE_JOIN_CHANNEL = 2,
5916 enum LOCAL_PROXY_MODE {
5919 ConnectivityFirst = 0,
5985 virtual int queryInterface(rtc::INTERFACE_ID_TYPE iid,
void** inter) = 0;
5998 if (engine && !engine->queryInterface(rtc::AGORA_IID_PARAMETER_ENGINE, (
void**)&p)) reset(p);
6006 virtual void onCertificateRequired() = 0;
6007 virtual void onLicenseRequest() = 0;
6008 virtual void onLicenseValidated() = 0;
6009 virtual void onLicenseError(
int result) = 0;
6059 AGORA_API
const char* AGORA_CALL getAgoraSdkVersion(
int* build);
6066 AGORA_API
const char* AGORA_CALL getAgoraSdkErrorDescription(
int err);
6068 AGORA_API
int AGORA_CALL setAgoraSdkExternalSymbolLoader(
void* (*func)(
const char* symname));
6092 AGORA_API
int AGORA_CALL getAgoraCertificateVerifyResult(
const char *credential_buf,
int credential_len,
6093 const char *certificate_buf,
int certificate_len);
6136 AGORA_API int64_t AGORA_CALL getAgoraCurrentMonotonicTimeInMs();