Agora C++ API Reference for All Platforms

rtc_engine_i.h
1 //
2 // Agora Media SDK
3 //
4 // Created by Sting Feng in 2015-05.
5 // Copyright (c) 2015 Agora IO. All rights reserved.
6 //
7 #pragma once
8
9 #include <functional>
10 #include <string>
11 #include <vector>
12 #include <array>
13
14 #include "AgoraBase.h"
15 #include "IAgoraRtcEngineEx.h"
16 #include "NGIAgoraAudioDeviceManager.h"
17 #include "NGIAgoraExtensionProvider.h"
18 #include "NGIAgoraRtcConnection.h"
19 #include "time_utils.h"
20
21 #include <api/aosl_ref.h>
22
23 #if defined(_WIN32)
24 extern HINSTANCE GetCurrentModuleInstance();
25 #elif defined(__ANDROID__) || defined(__linux__)
26 #include <dlfcn.h>
27 #endif // _WIN32
28
29 namespace agora {
30 namespace commons {
31 namespace cjson {
32 class JsonWrapper;
33 } // namespace cjson
34
35 } // namespace commons
36
37 namespace base {
38 class IParameterEngine {
39 public:
40 virtual int setParametersInternal(const char* parameters, int priority) = 0;
41 virtual int getParameters(const char* key, commons::cjson::JsonWrapper& result) = 0;
42 virtual ~IParameterEngine() {}
43 };
44 } // namespace base
45
46 namespace media {
47 class IMediaRecorderObserverEx {
48 public:
61 virtual void onRecorderStateChanged(RecorderState state, RecorderReasonCode reason) = 0;
75 virtual void onRecorderInfoUpdated(const RecorderInfo& info) = 0;
76
77 virtual ~IMediaRecorderObserverEx() {}
78 };
79 } // namespace media
80
81 namespace rtc {
82 class IMediaPlayerEx;
83
84 enum INTERFACE_ID_EX_TYPE {
85 AGORA_IID_RTC_ENGINE_EX = 0xacbd,
86 };
87
88 enum SCREEN_SHARING_MODE { SCREEN_SHARING_NORMAL = 0, SCREEN_SHARING_MOVIE = 1 };
89
90 #ifdef INTERNAL_ENGINE_STATUS
91 struct InternalEngineStatus {
92 int recfreq;
93 int playoutfreq;
94 int audio_send_frame_rate;
95 int audio_send_packet_rate;
96 int audio_recv_packet_rate;
97 int nearin_signal_level;
98 int nearout_signal_level;
99 int farin_signal_level;
100 };
101 #endif // INTERNAL_ENGINE_STATUS
102
103 enum class RecordingEventType : unsigned {
104 RECORDING_EVENT_UNKNOWN,
105 RECORDING_EVENT_START,
106 RECORDING_EVENT_JOIN = RECORDING_EVENT_START,
107 RECORDING_EVENT_LEAVE,
108
109 RECORDING_EVENT_END = RECORDING_EVENT_LEAVE,
110 };
111
112 enum RecordingEventKeyIndex {
113 // Join event
114 RECORDING_JOIN_EVT_START = 1,
115 RECORDING_JOIN_EVT_MIXMODE = RECORDING_JOIN_EVT_START,
116 RECORDING_JOIN_EVT_MIXEDVIDEOAUDIOMODE = 2,
117 RECORDING_JOIN_EVT_MIXHIGH = 3,
118 RECORDING_JOIN_EVT_MIXLOW = 4,
119 RECORDING_JOIN_EVT_MIXFPS = 5,
120 RECORDING_JOIN_EVT_MIXKBPS = 6,
121 RECORDING_JOIN_EVT_MINUDPPORT = 7,
122 RECORDING_JOIN_EVT_MAXUDPPORT = 8,
123 RECORDING_JOIN_EVT_DECODEAUDIOTYPE = 9,
124 RECORDING_JOIN_EVT_DECODEVIDEOTYPE = 10,
125 RECORDING_JOIN_EVT_LIVEMODE = 11,
126 RECORDING_JOIN_EVT_IDLE = 12,
127 RECORDING_JOIN_EVT_AUDIOONLY = 13,
128 RECORDING_JOIN_EVT_VIDEOONLY = 14, // NEW INSERT
129 RECORDING_JOIN_EVT_SYSLOGFACILITY = 15,
130 RECORDING_JOIN_EVT_STREAMTYPE = 16,
131 RECORDING_JOIN_EVT_TRIGGERMODE = 17,
132 RECORDING_JOIN_EVT_LANGUAGE = 18,
133 RECORDING_JOIN_EVT_RESERVE1 = 19,
134
135 // add new recording join event here ...
136
137 MAX_RECORDING_JOIN_EVT_RESERVE15 = RECORDING_JOIN_EVT_RESERVE1 + 14,
138 RECORDING_JOIN_EVT_MAX = MAX_RECORDING_JOIN_EVT_RESERVE15,
139
140 // Leave event
141 RECORDING_LEAVE_EVT_START = 101,
142 RECORDING_LEAVE_EVT_LEAVEPATHCODE = RECORDING_LEAVE_EVT_START,
143 RECORDING_LEAVE_EVT_RESERVE1,
144
145 // add new recording leave event here ...
146
147 RECORDING_LEAVE_EVT_RESERVE5 = RECORDING_LEAVE_EVT_RESERVE1 + 4,
148 RECORDING_LEAVE_EVT_MAX = RECORDING_LEAVE_EVT_RESERVE5,
149 };
150
154 enum APP_TYPE {
155 APP_TYPE_INVALID_VALUE = -1,
156 APP_TYPE_NATIVE = 0,
157 APP_TYPE_COCOS = 1,
158 APP_TYPE_UNITY = 2,
159 APP_TYPE_ELECTRON = 3,
160 APP_TYPE_FLUTTER = 4,
161 APP_TYPE_UNREAL = 5,
162 APP_TYPE_XAMARIN = 6,
163 APP_TYPE_APICLOUD = 7,
164 APP_TYPE_REACT_NATIVE = 8,
165 APP_TYPE_PYTHON = 9,
166 APP_TYPE_COCOS_CREATOR = 10,
167 APP_TYPE_RUST = 11,
168 APP_TYPE_C_SHARP = 12,
169 APP_TYPE_CEF = 13,
170 APP_TYPE_UNI_APP = 14,
171 APP_TYPE_UNREAL_BP = 15,
172 };
173
174 enum class RTC_EVENT {
175 NATIVE_LOG = 100,
176 ERROR_EVENT = 101,
177 WARNING_EVENT = 102,
178 MEDIA_ENGINE_LOAD_SUCCESS = 1002,
179 MEDIA_ENGINE_START_CAMERA_SUCCESS = 1005,
180 MEDIA_ENGINE_START_CALL_SUCCESS = 1006,
181 VIDEO_STOPPED = 1007,
182 TRANSPORT_QUALITY = 1101,
183 AUDIO_QUALITY = 1102,
184 TRANSPORT_SERVER_INSTANCE = 1103,
185 MEDIA_ENGINE_EVENT = 1104,
186 AUDIO_DEVICE_STATE_CHANGED = 1105,
187 VIDEO_DEVICE_STATE_CHANGED = 1107,
188 REQUEST_TOKEN = 1108,
189 CLIENT_ROLE_CHANGED = 1109,
190 PUBLISH_URL = 1110,
191 UNPUBLISH_URL = 1111,
192 LIVE_TRANSCODING = 1112,
193 JOIN_PUBLISHER_REQUEST = 1113,
194 JOIN_PUBILSHER_RESPONSE = 1114,
195 REMOVE_PUBLISHER_REQUEST = 1115,
196 STREAM_INJECTED_STATUS = 1116,
197 PRIVILEGE_WILL_EXPIRE = 1117,
198 LOCAL_VIDEO_STATE_CHANGED = 1118,
199 RTMP_STREAMING_STATE = 1119,
200 PUBLISH_STREAM_STATE = 1120,
201 CLIENT_ROLE_CHANGE_FAILED = 1121,
202 PUBLISH_STREAM_EVENT = 1122,
203
204 OPEN_CHANNEL_SUCCESS = 13001,
205 LEAVE_CHANNEL = 13006,
206 NETWORK_QUALITY = 13007,
207 USER_OFFLINE = 13008,
208 RTC_STATS = 13010,
209 USER_JOINED = 13013,
210 USER_MUTE_AUDIO = 13014,
211 USER_MUTE_VIDEO = 13015,
212 USER_ENABLE_VIDEO = 13016,
213 LASTMILE_QUALITY = 13017,
214 AUDIO_EFFECT_FINISHED = 13018,
215 USER_ENABLE_LOCAL_VIDEO = 13019,
216 LASTMILE_PROBE_RESULT = 13020,
217 UPLINK_NETWORK_INFO_UPDATE = 13021,
218 DOWNLINK_NETWORK_INFO_UPDATE = 13022,
219 USER_STATE_CHANGED = 13023,
220
221 RECAP_INDICATION = 14000,
222 AUDIO_VOLUME_INDICATION = 14001,
223 FIRST_REMOTE_VIDEO_FRAME = 14002,
224 LOCAL_VIDEO_STAT = 14003,
225 REMOTE_VIDEO_STAT = 14004,
226 FIRST_LOCAL_VIDEO_FRAME = 14005,
227 FIRST_REMOTE_VIDEO_DECODED = 14007,
228 CONNECTION_LOST = 14008,
229 STREAM_MESSAGE = 14009,
230 CONNECTION_INTERRUPTED = 14010,
231 QUERY_RECORDING_SERVICE_STATUS = 14011,
232 STREAM_MESSAGE_ERROR = 14012,
233 VIDEO_SIZE_CHANGED = 14013,
234 FIRST_LOCAL_AUDIO_FRAME_PUBLISHED = 14014,
235 FIRST_LOCAL_VIDEO_FRAME_PUBLISHED = 14015,
236 ACTIVE_SPEAKER = 14016,
237 AUDIO_DEVICE_VOLUME_CHANGED = 14017,
238 #ifdef INTERNAL_ENGINE_STATUS
239 _INTERNAL_ENGINE_STATUS = 14018,
240 #endif
241 CONNECTION_BANNED = 14019,
242 CAMERA_FOCUS_AREA_CHANGED = 14020,
243
244 REMOTE_VIDEO_STATE_CHANGED = 14021,
245 LOCAL_PUBLISH_FALLBACK_TO_AUDIO_ONLY = 14022,
246 REMOTE_SUBSCRIBE_FALLBACK_TO_AUDIO_ONLY = 14023,
247 USER_TRANSPORT_STAT = 14024,
248 CONNECTION_STATE_CHANGED = 14028,
249 CAMERA_EXPOSURE_AREA_CHANGED = 14029,
250 REMOTE_AUDIO_STAT = 14030,
251 NETWORK_TYPE_CHANGED = 14031,
252 AUDIO_ROUTING_CHANGED = 14032,
253 FIRST_REMOTE_AUDIO_DECODED = 14033,
254 LOCAL_USER_REGISTERED = 14034,
255 USER_INFO_UPDATED = 14035,
256 REMOTE_VIDEO_STATE_CHANGED_EXT = 14036,
257 CROSS_CHANNEL_STATE = 14037,
258 CROSS_CHANNEL_EVENT = 14038,
259 REMOTE_AUDIO_STATE_CHANGED = 14040,
260 LOCAL_AUDIO_STAT = 14041,
261 LOCAL_AUDIO_STATE_CHANGED = 14042,
262 AUDIO_MIXING_STATE_CHANGED = 14043,
263 INTRA_REQUEST_RECEIVED = 14044,
264 PEER_USER_INFO_UPDATED = 14045,
265 ENCRYPTION_ERROR_EVENT = 14046,
266 REMOTE_VIDEO_STREAM_INFO_UPDATED = 14047,
267 AUDIO_SUBSCRIBE_STATE_CHANGED = 14048,
268 VIDEO_SUBSCRIBE_STATE_CHANGED = 14049,
269 AUDIO_PUBLISH_STATE_CHANGED = 14050,
270 VIDEO_PUBLISH_STATE_CHANGED = 14051,
271 PERMISSION_ERROR_EVENT = 14052,
272 FACE_DETECT_VALUE = 14053,
273 RHYTHM_PLAYFR_STATE_CHANGED = 14054,
274 UPLOAD_LOG_RESULT = 14055,
275 FIRST_REMOTE_AUDIO_FRAME = 14058,
276 PROXY_SUCCESS = 14059,
277 WLACC_MESSAGE = 14060,
278 WLACC_STATS = 14061,
279 SNAPSHOT_TAKEN = 14062,
280 CONTENT_INSPECT_RESULT = 14063,
281 AUDIO_MIXING_POSITION_CHANGED = 14064,
282 LICENSE_VERIFY = 14065,
283 VIDEO_RENDERING_TRACING_RESULT = 14066,
284 LOCAL_TRANSCODING = 14067,
285 SET_RTM_FLAG_RESULT = 14068,
286 VIDEO_LAYOUT_INFO = 14069,
287 AUDIO_METADATA_RECEIVED = 14070,
288 };
289
290 struct video_transport_packet_info {
291 uid_t uid;
292 unsigned int frame_num;
293 unsigned int sent_ts;
294 unsigned int ts;
295 };
296
297 struct audio_transport_packet_info {
298 uid_t uid;
299 unsigned int ts;
300 unsigned int sent_ts;
301 };
302
303 enum ENGINE_INIT_TS_POSITION {
304 CREATE_BEGIN,
305 CREATE_END,
306 INIT_BEGIN,
307 INIT_END,
308 INIT_END_INTERNAL,
309 };
310
311 enum ENGINE_INIT_STATUS {
312 STATUS_UNINIT,
313 STATUS_INITIALIZING,
314 STATUS_INITIALIZED
315 };
316
317 class IRtcAvTransportPacketInfoObserver {
318 public:
319 virtual ~IRtcAvTransportPacketInfoObserver() = default;
320
321 virtual void onVideoTransportPacketInfo(const video_transport_packet_info& info) = 0;
322 virtual void onAudioTransportPacketInfo(const audio_transport_packet_info& info) = 0;
323 };
324
325 struct RtcEngineContextInternal : public RtcEngineContext {
326 bool isPassThruMode;
327 int maxOutputBitrateKpbs;
328
329 // extension event observer
330 agora_refptr<IMediaExtensionObserver> extensionObserverProxy;
331
332 // 0 for AGORA_CC,
333 // 1 for REMB
334 // 2 for TRANSPORT_CC
335 bool is_p2p_switch_enabled_;
336
337 bool isPureCpp;
338
339 RtcEngineContextInternal()
340 : isPassThruMode(false),
341 maxOutputBitrateKpbs(30 * 1000),
342 extensionObserverProxy(nullptr),
343 #if defined(P2P_SWITCH_DEFAULT_VALUE)
344 is_p2p_switch_enabled_(P2P_SWITCH_DEFAULT_VALUE),
345 #else
346 is_p2p_switch_enabled_(false),
347 #endif
348 isPureCpp(true)
349 {
350 }
351 explicit RtcEngineContextInternal(const RtcEngineContext& ctx);
352 };
353
354 struct WebAgentVideoStats {
355 user_id_t userId;
356 int delay;
357 int sentFrameRate;
358 int renderedFrameRate;
359 int skippedFrames;
360 };
361
362 class IRtcEngineEventHandlerInternal : public IRtcEngineEventHandlerEx {
363 public:
364 virtual const char* eventHandlerType() const { return "event_handler_internal"; }
365
366 virtual bool onEvent(RTC_EVENT evt, const std::string* payload) {
367 (void)evt;
368 (void)payload;
369
370 /* return false to indicate this event is not handled */
371 return false;
372 }
373 };
374
375 class IRtcEngineInternal : public IRtcEngineEx, public agora::base::IParameterEngine {
376 protected:
377 virtual ~IRtcEngineInternal() {}
378
379 public:
380 virtual aosl_ref_t ref() = 0;
381 virtual int initializeEx(const RtcEngineContextInternal& context, bool sync = false) = 0;
382 virtual const char* getSid(const RtcConnection& connection = {}) = 0;
383 virtual int setProfile(const char* profile, bool merge) = 0;
384 virtual int getProfile(std::string& result) = 0;
385 virtual int initializeInternal(const RtcEngineContextInternal& context, bool sync = false) = 0;
386 virtual int releaseInternal() = 0;
387 virtual int setAudioOptionParams(const char* params) = 0;
388 virtual int getAudioOptionParams(char* params) = 0;
389 virtual bool isMicrophoneOn() = 0;
390
391 virtual int reportWebAgentVideoStats(const WebAgentVideoStats& stats) = 0;
392
393 #if (defined(__APPLE__) && TARGET_OS_MAC && !(TARGET_OS_IOS || (defined(TARGET_OS_VISION) && TARGET_OS_VISION)))
394 virtual int monitorDeviceChange(bool enabled) = 0;
395 #endif // __APPLE__ && !(TARGET_OS_IOS || (defined(TARGET_OS_VISION) && TARGET_OS_VISION)) && TARGET_OS_MAC
396
397 virtual int printLog(int level, const char* message) = 0;
398 virtual int runOnWorkerThread(std::function<void(void)>&& f) = 0;
399 virtual int reportArgusCounters(int* counterId, int* value, int count, uid_t uid) = 0;
400
401 virtual int enableYuvDumper(bool enable) = 0;
402
403 // this function is only for expert of video codec,
404 // please do NOT call it if not knowing what's it about
405 virtual int setVideoConfigParam(const char* params) = 0;
406
407 virtual int getVideoConfigParam(char* params, size_t size) = 0;
408
409 virtual int setExternalVideoConfigEx(const VideoEncoderConfiguration& config) = 0;
410 virtual int setExternalVideoConfigEx(const VideoEncoderConfiguration& config,
411 const RtcConnection& connection) = 0;
412
413 virtual int getParametersEx(const RtcConnection& connection, const char* key,
414 std::string& results) = 0;
415
416 // this function is only for switching screen capture source api on windows platform
417 #if defined(_WIN32)
418 virtual int GetScreenCaptureType() = 0;
419 #endif
420
421 virtual int setLogLevelEx(unsigned int filter) = 0;
422
423 virtual int simulateOnSetParameters(const std::string& parameters) = 0;
424
425 virtual int setCameraDevice(const char dev_id[MAX_DEVICE_ID_LENGTH]) = 0;
426
427 virtual aosl_ref_t getMediaPlayer(int sourceId) = 0;
428 virtual int putMediaPlayer(int sourceId) = 0;
429 virtual agora_refptr<IRtcConnection> getConnection(
430 const RtcConnection& connection = {}) const = 0;
431
432 #if defined(FEATURE_ENABLE_UT_SUPPORT)
433 // 0 is left channel, 1 is right channel, -1 is invalid
434 virtual int soundPositionChannel(uid_t uid) = 0;
435 virtual int soundPositionChannel(uid_t uid, const RtcConnection& connection) = 0;
436 #endif
437
438 virtual int32_t setAppType(APP_TYPE appType) = 0;
439 virtual int32_t enableVosUserInfoHidden(bool enabled) = 0;
440
441 virtual int setMediaRecorderObserver(const char* channelId, uid_t uid, bool isLocal,
442 media::IMediaRecorderObserverEx* observer,
443 int sys_version = 0) = 0;
444 virtual int startRecording(const char* channelId, uid_t uid, bool isLocal,
445 const media::MediaRecorderConfiguration& config) = 0;
446 virtual int startPreviewRecording(const media::MediaRecorderConfiguration& config) = 0;
447 virtual int stopPreviewRecording() = 0;
448 virtual int stopRecording(const char* channelId, uid_t uid, bool isLocal) = 0;
449 virtual int setPreviewMediaRecorderObserver(media::IMediaRecorderObserverEx* observer) = 0;
450 virtual int releaseRecorder(const char* channelId, uid_t uid, bool isLocal) = 0;
451 virtual int setTimestamp(ENGINE_INIT_TS_POSITION ts_position, uint64_t ts) = 0;
452 virtual uint64_t getTimestamp(ENGINE_INIT_TS_POSITION ts_position) const = 0;
453 virtual void reportEngineInitializeEvent() const = 0;
454 virtual std::string getRecentSid(const RtcConnection* connnection) = 0;
455
456 virtual int setupAudioAttributeContext(void* audioAttr) = 0;
457 #if defined(__ANDROID__)
458 virtual int switchCameraId(const char* cameraId) = 0;
459 #endif // __ANDROID__
460
461 virtual int getInitStatus() = 0;
462 virtual void setInitStatus(ENGINE_INIT_STATUS status) = 0;
463
464 static bool isEventHandler(IRtcEngineEventHandler* handler) {
465 return handler && 0 == strcmp("event_handler", handler->eventHandlerType());
466 }
467
468 static bool isEventHandlerEx(IRtcEngineEventHandler* handler) {
469 return handler && 0 == strcmp("event_handler_ex", handler->eventHandlerType());
470 }
471 };
472
473 class RtcEngineLibHelper {
474 typedef const char*(AGORA_CALL* PFN_GetAgoraRtcEngineVersion)(int* build);
475 typedef IRtcEngine*(AGORA_CALL* PFN_CreateAgoraRtcEngine)();
476 typedef void(AGORA_CALL* PFN_ShutdownAgoraRtcEngineService)();
477
478 #if defined(_WIN32)
479 typedef HINSTANCE lib_handle_t;
480 static HINSTANCE MyLoadLibrary(const char* dllname) {
481 char path[MAX_PATH];
482 GetModuleFileNameA(GetCurrentModuleInstance(), path, MAX_PATH);
483 auto p = strrchr(path, '\\');
484 strcpy(p + 1, dllname); // NOLINT
485 HINSTANCE hDll = LoadLibraryA(path);
486 if (hDll) return hDll;
487
488 hDll = LoadLibraryA(dllname);
489 return hDll;
490 }
491 #else
492 typedef void* lib_handle_t;
493 #endif // _WIN32
494
495 public:
496 RtcEngineLibHelper(const char* dllname)
497 : m_firstInit(true),
498 m_lib(NULL),
499 m_dllName(dllname),
500 m_pfnCreateAgoraRtcEngine(nullptr),
501 m_pfnGetAgoraRtcEngineVersion(nullptr) {}
502
503 bool initialize() {
504 if (!m_firstInit) {
505 return isValid();
506 }
507
508 if (m_dllName.empty()) {
509 return false;
510 }
511
512 m_firstInit = false;
513 #if defined(_WIN32)
514 m_lib = MyLoadLibrary(m_dllName.c_str());
515 if (m_lib) {
516 m_pfnCreateAgoraRtcEngine =
517 (PFN_CreateAgoraRtcEngine)GetProcAddress(m_lib, "createAgoraRtcEngine");
518 m_pfnGetAgoraRtcEngineVersion =
519 (PFN_GetAgoraRtcEngineVersion)GetProcAddress(m_lib, "getAgoraRtcEngineVersion");
520 }
521 #elif defined(__ANDROID__) || defined(__linux__)
522 m_lib = dlopen(m_dllName.c_str(), RTLD_LAZY);
523 if (m_lib) {
524 m_pfnCreateAgoraRtcEngine = (PFN_CreateAgoraRtcEngine)dlsym(m_lib, "createAgoraRtcEngine");
525 m_pfnGetAgoraRtcEngineVersion =
526 (PFN_GetAgoraRtcEngineVersion)dlsym(m_lib, "getAgoraRtcEngineVersion");
527 }
528 #endif // _WIN32
529
530 return isValid();
531 }
532
533 void deinitialize() {
534 if (m_lib) {
535 #if defined(_WIN32)
536 FreeLibrary(m_lib);
537 #elif defined(__ANDROID__) || defined(__linux__)
538 dlclose(m_lib);
539 #endif // _WIN32
540
541 m_lib = NULL;
542 }
543
544 m_pfnCreateAgoraRtcEngine = nullptr;
545 m_pfnGetAgoraRtcEngineVersion = nullptr;
546 }
547
548 ~RtcEngineLibHelper() { deinitialize(); }
549
550 bool isValid() { return m_pfnCreateAgoraRtcEngine != NULL; }
551
552 agora::rtc::IRtcEngine* createEngine() {
553 return m_pfnCreateAgoraRtcEngine ? m_pfnCreateAgoraRtcEngine() : NULL;
554 }
555
556 const char* getVersion(int* build) {
557 return m_pfnGetAgoraRtcEngineVersion ? m_pfnGetAgoraRtcEngineVersion(build) : nullptr;
558 }
559
560 private:
561 bool m_firstInit;
562 lib_handle_t m_lib;
563 std::string m_dllName;
564 PFN_CreateAgoraRtcEngine m_pfnCreateAgoraRtcEngine;
565 PFN_GetAgoraRtcEngineVersion m_pfnGetAgoraRtcEngineVersion;
566 };
567
568 // A helper function for decoding out the SEI layout
569
570 struct canvas_info {
571 int width;
572 int height;
573 int bgcolor;
574 };
575
576 struct region_info {
577 unsigned id;
578
579 double x;
580 double y;
581 double width;
582 double height;
583
584 int alpha; // [0, 255]
585
586 int render_mode; // 0, crop; 1, ZoomtoFit
587 int zorder; // [0, 100]
588 };
589
590 #define NUM_OF_LAYOUT_REGIONS 17
591
592 struct layout_info {
593 long long ms;
594 canvas_info canvas;
595 // At most 9 broadcasters: 1 host, 8 guests.
596 unsigned int region_count;
597 region_info regions[NUM_OF_LAYOUT_REGIONS];
598 };
599
600 class EncryptionConfigInternal {
601 public:
602 EncryptionConfigInternal(const EncryptionConfig& config)
603 : encryptionMode(config.encryptionMode),
604 encryptionKey(config.encryptionKey ? config.encryptionKey : ""),
605 datastreamEncryptionEnabled(config.datastreamEncryptionEnabled) {
606 for (size_t i = 0; i < encryptionKdfSalt.size(); i++) {
607 encryptionKdfSalt[i] = config.encryptionKdfSalt[i];
608 }
609 }
610 void ToEncryptionConfig(EncryptionConfig& config) const {
611 config.encryptionMode = encryptionMode;
612 config.encryptionKey = encryptionKey.c_str();
613 config.datastreamEncryptionEnabled = datastreamEncryptionEnabled;
614 for (size_t i = 0; i < encryptionKdfSalt.size(); i++) {
615 config.encryptionKdfSalt[i] = encryptionKdfSalt.at(i);
616 }
617 }
618 ENCRYPTION_MODE encryptionMode;
619 std::string encryptionKey;
620 std::array<uint8_t, 32> encryptionKdfSalt;
621 bool datastreamEncryptionEnabled;
622 };
623
624 AGORA_API bool AGORA_CALL decode_sei_layout(const void* data, unsigned size, layout_info* layout);
625
626 AGORA_API agora::rtc::IRtcEngineInternal* AGORA_CALL getInternalAgoraRtcEngine();
627
628 } // namespace rtc
629 } // namespace agora
agora::rtc::IRtcEngineInternal::getTimestamp
virtual uint64_t getTimestamp(ENGINE_INIT_TS_POSITION ts_position) const =0
agora::rtc::IRtcEngineInternal::soundPositionChannel
virtual int soundPositionChannel(uid_t uid, const RtcConnection &connection)=0
agora::rtc::IRtcEngineInternal::stopRecording
virtual int stopRecording(const char *channelId, uid_t uid, bool isLocal)=0
agora::rtc::InternalEngineStatus::recfreq
int recfreq
Definition: rtc_engine_i.h:92
agora::rtc::RecordingEventType::RECORDING_EVENT_JOIN
@ RECORDING_EVENT_JOIN
agora::rtc::IRtcEngineInternal::getVideoConfigParam
virtual int getVideoConfigParam(char *params, size_t size)=0
agora::rtc::RTC_EVENT::USER_ENABLE_VIDEO
@ USER_ENABLE_VIDEO
agora::rtc::RTC_EVENT::AUDIO_SUBSCRIBE_STATE_CHANGED
@ AUDIO_SUBSCRIBE_STATE_CHANGED
agora::rtc::RtcEngineLibHelper
Definition: rtc_engine_i.h:473
agora::rtc::RTC_EVENT::AUDIO_EFFECT_FINISHED
@ AUDIO_EFFECT_FINISHED
agora::rtc::audio_transport_packet_info::ts
unsigned int ts
Definition: rtc_engine_i.h:299
agora::rtc::APP_TYPE_RUST
@ APP_TYPE_RUST
Definition: rtc_engine_i.h:167
agora::rtc::APP_TYPE_UNITY
@ APP_TYPE_UNITY
Definition: rtc_engine_i.h:158
agora::rtc::APP_TYPE_APICLOUD
@ APP_TYPE_APICLOUD
Definition: rtc_engine_i.h:163
agora::media::IMediaRecorderObserverEx
Definition: rtc_engine_i.h:47
agora::rtc::IRtcEngineInternal::isEventHandlerEx
static bool isEventHandlerEx(IRtcEngineEventHandler *handler)
Definition: rtc_engine_i.h:468
agora::rtc::RTC_EVENT::LICENSE_VERIFY
@ LICENSE_VERIFY
agora::rtc::RTC_EVENT::AUDIO_DEVICE_VOLUME_CHANGED
@ AUDIO_DEVICE_VOLUME_CHANGED
agora::rtc::RecordingEventType::RECORDING_EVENT_START
@ RECORDING_EVENT_START
agora::rtc::RTC_EVENT::ENCRYPTION_ERROR_EVENT
@ ENCRYPTION_ERROR_EVENT
agora::rtc::RTC_EVENT::MEDIA_ENGINE_LOAD_SUCCESS
@ MEDIA_ENGINE_LOAD_SUCCESS
agora::rtc::WebAgentVideoStats::userId
user_id_t userId
Definition: rtc_engine_i.h:355
agora::rtc::RTC_EVENT::CONNECTION_LOST
@ CONNECTION_LOST
agora::rtc::IRtcEngineEventHandlerInternal::eventHandlerType
virtual const char * eventHandlerType() const
Definition: rtc_engine_i.h:364
agora::rtc::RTC_EVENT::LOCAL_VIDEO_STAT
@ LOCAL_VIDEO_STAT
agora::rtc::RTC_EVENT::ACTIVE_SPEAKER
@ ACTIVE_SPEAKER
agora::rtc::RTC_EVENT::AUDIO_PUBLISH_STATE_CHANGED
@ AUDIO_PUBLISH_STATE_CHANGED
agora::rtc::RTC_EVENT::FIRST_REMOTE_VIDEO_FRAME
@ FIRST_REMOTE_VIDEO_FRAME
agora::rtc::RTC_EVENT::INTRA_REQUEST_RECEIVED
@ INTRA_REQUEST_RECEIVED
agora::rtc::WebAgentVideoStats
Definition: rtc_engine_i.h:354
agora::rtc::EncryptionConfigInternal::encryptionKdfSalt
std::array< uint8_t, 32 > encryptionKdfSalt
Definition: rtc_engine_i.h:620
agora::rtc::getInternalAgoraRtcEngine
AGORA_API agora::rtc::IRtcEngineInternal *AGORA_CALL getInternalAgoraRtcEngine()
agora::rtc::RecordingEventKeyIndex
RecordingEventKeyIndex
Definition: rtc_engine_i.h:112
agora::rtc::RTC_EVENT::AUDIO_QUALITY
@ AUDIO_QUALITY
agora::rtc::video_transport_packet_info
Definition: rtc_engine_i.h:290
agora::rtc::RTC_EVENT::LOCAL_AUDIO_STAT
@ LOCAL_AUDIO_STAT
agora::rtc::RTC_EVENT::PUBLISH_URL
@ PUBLISH_URL
agora::rtc::RTC_EVENT::LOCAL_TRANSCODING
@ LOCAL_TRANSCODING
agora::rtc::ENGINE_INIT_STATUS
ENGINE_INIT_STATUS
Definition: rtc_engine_i.h:311
agora::rtc::RTC_EVENT::CONTENT_INSPECT_RESULT
@ CONTENT_INSPECT_RESULT
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::RTC_EVENT::REMOTE_VIDEO_STATE_CHANGED
@ REMOTE_VIDEO_STATE_CHANGED
agora::rtc::IRtcEngineInternal::initializeEx
virtual int initializeEx(const RtcEngineContextInternal &context, bool sync=false)=0
agora::rtc::IRtcEngineInternal::setProfile
virtual int setProfile(const char *profile, bool merge)=0
agora::rtc::RECORDING_JOIN_EVT_MAX
@ RECORDING_JOIN_EVT_MAX
Definition: rtc_engine_i.h:138
agora::rtc::IRtcAvTransportPacketInfoObserver::onVideoTransportPacketInfo
virtual void onVideoTransportPacketInfo(const video_transport_packet_info &info)=0
agora::rtc::IRtcEngineInternal::runOnWorkerThread
virtual int runOnWorkerThread(std::function< void(void)> &&f)=0
agora::rtc::SCREEN_SHARING_NORMAL
@ SCREEN_SHARING_NORMAL
Definition: rtc_engine_i.h:88
agora::rtc::IRtcEngineInternal::releaseRecorder
virtual int releaseRecorder(const char *channelId, uid_t uid, bool isLocal)=0
agora::rtc::RTC_EVENT::USER_STATE_CHANGED
@ USER_STATE_CHANGED
agora::rtc::region_info::x
double x
Definition: rtc_engine_i.h:579
agora::rtc::video_transport_packet_info::frame_num
unsigned int frame_num
Definition: rtc_engine_i.h:292
agora::rtc::EncryptionConfigInternal::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: rtc_engine_i.h:618
agora::rtc::RTC_EVENT::USER_MUTE_VIDEO
@ USER_MUTE_VIDEO
agora::rtc::layout_info::regions
region_info regions[NUM_OF_LAYOUT_REGIONS]
Definition: rtc_engine_i.h:597
agora::rtc::RtcEngineContextInternal
Definition: rtc_engine_i.h:325
agora::rtc::RECORDING_JOIN_EVT_MAXUDPPORT
@ RECORDING_JOIN_EVT_MAXUDPPORT
Definition: rtc_engine_i.h:122
agora::rtc::RTC_EVENT::VIDEO_SIZE_CHANGED
@ VIDEO_SIZE_CHANGED
agora::rtc::IRtcEngineInternal::printLog
virtual int printLog(int level, const char *message)=0
agora::rtc::video_transport_packet_info::uid
uid_t uid
Definition: rtc_engine_i.h:291
agora::rtc::RTC_EVENT::ERROR_EVENT
@ ERROR_EVENT
agora::rtc::RECORDING_LEAVE_EVT_RESERVE5
@ RECORDING_LEAVE_EVT_RESERVE5
Definition: rtc_engine_i.h:147
agora::rtc::IRtcEngineEventHandler::eventHandlerType
virtual const char * eventHandlerType() const
Definition: IAgoraRtcEngine.h:1512
agora::rtc::RTC_EVENT::PRIVILEGE_WILL_EXPIRE
@ PRIVILEGE_WILL_EXPIRE
agora::rtc::RTC_EVENT::WLACC_STATS
@ WLACC_STATS
agora::rtc::RTC_EVENT::AUDIO_MIXING_POSITION_CHANGED
@ AUDIO_MIXING_POSITION_CHANGED
agora::rtc::RTC_EVENT::REMOTE_SUBSCRIBE_FALLBACK_TO_AUDIO_ONLY
@ REMOTE_SUBSCRIBE_FALLBACK_TO_AUDIO_ONLY
agora::rtc::InternalEngineStatus::audio_send_frame_rate
int audio_send_frame_rate
Definition: rtc_engine_i.h:94
agora::rtc::RTC_EVENT::LASTMILE_PROBE_RESULT
@ LASTMILE_PROBE_RESULT
agora::rtc::INTERFACE_ID_EX_TYPE
INTERFACE_ID_EX_TYPE
Definition: rtc_engine_i.h:84
agora::rtc::RTC_EVENT::VIDEO_DEVICE_STATE_CHANGED
@ VIDEO_DEVICE_STATE_CHANGED
agora::rtc::WebAgentVideoStats::delay
int delay
Definition: rtc_engine_i.h:356
agora::rtc::IRtcEngineEventHandlerEx
Definition: IAgoraRtcEngineEx.h:42
agora::rtc::RECORDING_JOIN_EVT_LANGUAGE
@ RECORDING_JOIN_EVT_LANGUAGE
Definition: rtc_engine_i.h:132
agora::rtc::RTC_EVENT::UPLOAD_LOG_RESULT
@ UPLOAD_LOG_RESULT
agora::rtc::RecordingEventType::RECORDING_EVENT_UNKNOWN
@ RECORDING_EVENT_UNKNOWN
agora::rtc::IRtcEngineInternal::soundPositionChannel
virtual int soundPositionChannel(uid_t uid)=0
agora::rtc::RtcEngineLibHelper::getVersion
const char * getVersion(int *build)
Definition: rtc_engine_i.h:556
agora::rtc::APP_TYPE_C_SHARP
@ APP_TYPE_C_SHARP
Definition: rtc_engine_i.h:168
agora::user_id_t
const char * user_id_t
Definition: AgoraBase.h:813
agora::rtc::IRtcEngineInternal::getInitStatus
virtual int getInitStatus()=0
agora::rtc::RTC_EVENT::USER_TRANSPORT_STAT
@ USER_TRANSPORT_STAT
agora::rtc::video_transport_packet_info::sent_ts
unsigned int sent_ts
Definition: rtc_engine_i.h:293
agora::rtc::IRtcEngineInternal::setupAudioAttributeContext
virtual int setupAudioAttributeContext(void *audioAttr)=0
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1920
agora::rtc::RTC_EVENT::MEDIA_ENGINE_START_CALL_SUCCESS
@ MEDIA_ENGINE_START_CALL_SUCCESS
agora::rtc::APP_TYPE_CEF
@ APP_TYPE_CEF
Definition: rtc_engine_i.h:169
agora::rtc::IRtcEngineEventHandler
Definition: IAgoraRtcEngine.h:1508
agora::rtc::region_info::height
double height
Definition: rtc_engine_i.h:582
agora::rtc::canvas_info::bgcolor
int bgcolor
Definition: rtc_engine_i.h:573
agora::rtc::IRtcEngineInternal::setCameraDevice
virtual int setCameraDevice(const char dev_id[MAX_DEVICE_ID_LENGTH])=0
agora::rtc::IRtcEngineEventHandlerInternal
Definition: rtc_engine_i.h:362
agora::rtc::STATUS_INITIALIZED
@ STATUS_INITIALIZED
Definition: rtc_engine_i.h:314
agora::rtc::RECORDING_JOIN_EVT_RESERVE1
@ RECORDING_JOIN_EVT_RESERVE1
Definition: rtc_engine_i.h:133
agora::rtc::APP_TYPE_NATIVE
@ APP_TYPE_NATIVE
Definition: rtc_engine_i.h:156
agora::rtc::layout_info::canvas
canvas_info canvas
Definition: rtc_engine_i.h:594
agora::rtc::INIT_BEGIN
@ INIT_BEGIN
Definition: rtc_engine_i.h:306
agora::rtc::layout_info
Definition: rtc_engine_i.h:592
agora::rtc::RTC_EVENT::RTMP_STREAMING_STATE
@ RTMP_STREAMING_STATE
agora::rtc::IRtcEngineInternal::getProfile
virtual int getProfile(std::string &result)=0
agora::rtc::RTC_EVENT::STREAM_MESSAGE_ERROR
@ STREAM_MESSAGE_ERROR
agora::rtc::IRtcEngineInternal::setPreviewMediaRecorderObserver
virtual int setPreviewMediaRecorderObserver(media::IMediaRecorderObserverEx *observer)=0
agora::rtc::APP_TYPE_COCOS
@ APP_TYPE_COCOS
Definition: rtc_engine_i.h:157
agora::rtc::RTC_EVENT::USER_INFO_UPDATED
@ USER_INFO_UPDATED
agora::rtc::APP_TYPE_UNREAL_BP
@ APP_TYPE_UNREAL_BP
Definition: rtc_engine_i.h:171
agora::rtc::RECORDING_JOIN_EVT_MIXMODE
@ RECORDING_JOIN_EVT_MIXMODE
Definition: rtc_engine_i.h:115
agora::rtc::InternalEngineStatus::audio_recv_packet_rate
int audio_recv_packet_rate
Definition: rtc_engine_i.h:96
agora::rtc::IRtcEngineInternal::getParametersEx
virtual int getParametersEx(const RtcConnection &connection, const char *key, std::string &results)=0
agora::rtc::RTC_EVENT::CLIENT_ROLE_CHANGED
@ CLIENT_ROLE_CHANGED
agora::rtc::RTC_EVENT::CROSS_CHANNEL_EVENT
@ CROSS_CHANNEL_EVENT
agora::rtc::IRtcAvTransportPacketInfoObserver
Definition: rtc_engine_i.h:317
agora::rtc::canvas_info
Definition: rtc_engine_i.h:570
agora
Definition: AgoraAtomicOps.h:21
agora::base::IParameterEngine::getParameters
virtual int getParameters(const char *key, commons::cjson::JsonWrapper &result)=0
agora::rtc::RTC_EVENT::CONNECTION_INTERRUPTED
@ CONNECTION_INTERRUPTED
agora::rtc::RECORDING_JOIN_EVT_AUDIOONLY
@ RECORDING_JOIN_EVT_AUDIOONLY
Definition: rtc_engine_i.h:127
agora::rtc::APP_TYPE_UNI_APP
@ APP_TYPE_UNI_APP
Definition: rtc_engine_i.h:170
agora::rtc::RECORDING_JOIN_EVT_LIVEMODE
@ RECORDING_JOIN_EVT_LIVEMODE
Definition: rtc_engine_i.h:125
agora::rtc::RTC_EVENT::NETWORK_QUALITY
@ NETWORK_QUALITY
agora::rtc::RTC_EVENT::OPEN_CHANNEL_SUCCESS
@ OPEN_CHANNEL_SUCCESS
agora::rtc::region_info::render_mode
int render_mode
Definition: rtc_engine_i.h:586
agora::rtc::RTC_EVENT::UPLINK_NETWORK_INFO_UPDATE
@ UPLINK_NETWORK_INFO_UPDATE
agora::rtc::RTC_EVENT::RHYTHM_PLAYFR_STATE_CHANGED
@ RHYTHM_PLAYFR_STATE_CHANGED
agora::rtc::IRtcEngineInternal::setInitStatus
virtual void setInitStatus(ENGINE_INIT_STATUS status)=0
agora::rtc::RTC_EVENT::MEDIA_ENGINE_START_CAMERA_SUCCESS
@ MEDIA_ENGINE_START_CAMERA_SUCCESS
agora::rtc::audio_transport_packet_info::sent_ts
unsigned int sent_ts
Definition: rtc_engine_i.h:300
agora::rtc::RTC_EVENT::REMOTE_VIDEO_STATE_CHANGED_EXT
@ REMOTE_VIDEO_STATE_CHANGED_EXT
agora::rtc::ENGINE_INIT_TS_POSITION
ENGINE_INIT_TS_POSITION
Definition: rtc_engine_i.h:303
agora::rtc::RTC_EVENT::USER_OFFLINE
@ USER_OFFLINE
agora::rtc::WebAgentVideoStats::sentFrameRate
int sentFrameRate
Definition: rtc_engine_i.h:357
agora::rtc::SCREEN_SHARING_MOVIE
@ SCREEN_SHARING_MOVIE
Definition: rtc_engine_i.h:88
agora::rtc::IRtcEngineInternal::setAppType
virtual int32_t setAppType(APP_TYPE appType)=0
agora::rtc::RTC_EVENT::PEER_USER_INFO_UPDATED
@ PEER_USER_INFO_UPDATED
agora::rtc::RTC_EVENT::FIRST_LOCAL_VIDEO_FRAME
@ FIRST_LOCAL_VIDEO_FRAME
agora::rtc::RECORDING_JOIN_EVT_TRIGGERMODE
@ RECORDING_JOIN_EVT_TRIGGERMODE
Definition: rtc_engine_i.h:131
agora::rtc::RTC_EVENT::USER_ENABLE_LOCAL_VIDEO
@ USER_ENABLE_LOCAL_VIDEO
agora::rtc::RTC_EVENT::LOCAL_USER_REGISTERED
@ LOCAL_USER_REGISTERED
agora::rtc::CREATE_BEGIN
@ CREATE_BEGIN
Definition: rtc_engine_i.h:304
agora::rtc::RTC_EVENT::WARNING_EVENT
@ WARNING_EVENT
agora::rtc::RTC_EVENT::VIDEO_RENDERING_TRACING_RESULT
@ VIDEO_RENDERING_TRACING_RESULT
agora::rtc::IRtcEngineInternal::initializeInternal
virtual int initializeInternal(const RtcEngineContextInternal &context, bool sync=false)=0
agora::rtc::IRtcEngineInternal::enableYuvDumper
virtual int enableYuvDumper(bool enable)=0
agora::rtc::IRtcAvTransportPacketInfoObserver::onAudioTransportPacketInfo
virtual void onAudioTransportPacketInfo(const audio_transport_packet_info &info)=0
agora::rtc::EncryptionConfigInternal::ToEncryptionConfig
void ToEncryptionConfig(EncryptionConfig &config) const
Definition: rtc_engine_i.h:610
agora::rtc::RTC_EVENT::LIVE_TRANSCODING
@ LIVE_TRANSCODING
agora::rtc::RTC_EVENT::PROXY_SUCCESS
@ PROXY_SUCCESS
agora::rtc::RECORDING_JOIN_EVT_MIXEDVIDEOAUDIOMODE
@ RECORDING_JOIN_EVT_MIXEDVIDEOAUDIOMODE
Definition: rtc_engine_i.h:116
agora::rtc::SCREEN_SHARING_MODE
SCREEN_SHARING_MODE
Definition: rtc_engine_i.h:88
agora::rtc::INIT_END
@ INIT_END
Definition: rtc_engine_i.h:307
agora::rtc::IRtcEngineInternal::GetScreenCaptureType
virtual int GetScreenCaptureType()=0
agora::rtc::RECORDING_JOIN_EVT_IDLE
@ RECORDING_JOIN_EVT_IDLE
Definition: rtc_engine_i.h:126
agora::rtc::IRtcEngineInternal::reportArgusCounters
virtual int reportArgusCounters(int *counterId, int *value, int count, uid_t uid)=0
agora::rtc::IRtcEngineInternal::getSid
virtual const char * getSid(const RtcConnection &connection={})=0
agora::base::IParameterEngine::~IParameterEngine
virtual ~IParameterEngine()
Definition: rtc_engine_i.h:42
agora::rtc::RTC_EVENT::CLIENT_ROLE_CHANGE_FAILED
@ CLIENT_ROLE_CHANGE_FAILED
agora::rtc::RTC_EVENT::AUDIO_DEVICE_STATE_CHANGED
@ AUDIO_DEVICE_STATE_CHANGED
agora::rtc::InternalEngineStatus
Definition: rtc_engine_i.h:91
agora::rtc::IRtcEngineInternal::switchCameraId
virtual int switchCameraId(const char *cameraId)=0
agora::rtc::IRtcEngineInternal::reportWebAgentVideoStats
virtual int reportWebAgentVideoStats(const WebAgentVideoStats &stats)=0
agora::rtc::IRtcEngineInternal::setTimestamp
virtual int setTimestamp(ENGINE_INIT_TS_POSITION ts_position, uint64_t ts)=0
agora::rtc::RECORDING_JOIN_EVT_DECODEAUDIOTYPE
@ RECORDING_JOIN_EVT_DECODEAUDIOTYPE
Definition: rtc_engine_i.h:123
agora::rtc::RTC_EVENT::AUDIO_VOLUME_INDICATION
@ AUDIO_VOLUME_INDICATION
agora::rtc::IRtcEngineInternal::~IRtcEngineInternal
virtual ~IRtcEngineInternal()
Definition: rtc_engine_i.h:377
agora::rtc::RECORDING_JOIN_EVT_MIXHIGH
@ RECORDING_JOIN_EVT_MIXHIGH
Definition: rtc_engine_i.h:117
agora::media::RecorderInfo
Definition: AgoraMediaBase.h:2086
agora::rtc::EncryptionConfig::encryptionMode
ENCRYPTION_MODE encryptionMode
Definition: AgoraBase.h:6513
agora::rtc::InternalEngineStatus::audio_send_packet_rate
int audio_send_packet_rate
Definition: rtc_engine_i.h:95
agora::rtc::IRtcEngineInternal
Definition: rtc_engine_i.h:375
agora::rtc::RtcEngineContextInternal::maxOutputBitrateKpbs
int maxOutputBitrateKpbs
Definition: rtc_engine_i.h:327
agora::rtc::RtcEngineContextInternal::extensionObserverProxy
agora_refptr< IMediaExtensionObserver > extensionObserverProxy
Definition: rtc_engine_i.h:330
agora::rtc::RTC_EVENT::FIRST_REMOTE_AUDIO_DECODED
@ FIRST_REMOTE_AUDIO_DECODED
agora::rtc::APP_TYPE_COCOS_CREATOR
@ APP_TYPE_COCOS_CREATOR
Definition: rtc_engine_i.h:166
agora::rtc::RECORDING_JOIN_EVT_START
@ RECORDING_JOIN_EVT_START
Definition: rtc_engine_i.h:114
agora::media::IMediaRecorderObserverEx::~IMediaRecorderObserverEx
virtual ~IMediaRecorderObserverEx()
Definition: rtc_engine_i.h:77
agora::rtc::RTC_EVENT::FIRST_LOCAL_AUDIO_FRAME_PUBLISHED
@ FIRST_LOCAL_AUDIO_FRAME_PUBLISHED
agora::rtc::RTC_EVENT::VIDEO_PUBLISH_STATE_CHANGED
@ VIDEO_PUBLISH_STATE_CHANGED
agora::rtc::EncryptionConfigInternal::EncryptionConfigInternal
EncryptionConfigInternal(const EncryptionConfig &config)
Definition: rtc_engine_i.h:602
agora::rtc::RtcEngineContextInternal::RtcEngineContextInternal
RtcEngineContextInternal()
Definition: rtc_engine_i.h:339
agora::rtc::APP_TYPE_FLUTTER
@ APP_TYPE_FLUTTER
Definition: rtc_engine_i.h:160
agora::media::RecorderState
RecorderState
Definition: AgoraMediaBase.h:1938
agora::rtc::IRtcEngineInternal::startPreviewRecording
virtual int startPreviewRecording(const media::MediaRecorderConfiguration &config)=0
agora::rtc::video_transport_packet_info::ts
unsigned int ts
Definition: rtc_engine_i.h:294
agora::rtc::CREATE_END
@ CREATE_END
Definition: rtc_engine_i.h:305
agora::rtc::IRtcEngineInternal::setLogLevelEx
virtual int setLogLevelEx(unsigned int filter)=0
agora::rtc::WebAgentVideoStats::skippedFrames
int skippedFrames
Definition: rtc_engine_i.h:359
agora::rtc::RtcEngineLibHelper::deinitialize
void deinitialize()
Definition: rtc_engine_i.h:533
agora::media::IMediaRecorderObserverEx::onRecorderStateChanged
virtual void onRecorderStateChanged(RecorderState state, RecorderReasonCode reason)=0
agora::rtc::RTC_EVENT::STREAM_MESSAGE
@ STREAM_MESSAGE
agora::rtc::RtcConnection
Definition: IAgoraRtcEngineEx.h:20
agora::rtc::RTC_EVENT::FACE_DETECT_VALUE
@ FACE_DETECT_VALUE
agora::rtc::EncryptionConfig::encryptionKdfSalt
uint8_t encryptionKdfSalt[32]
Definition: AgoraBase.h:6528
agora::rtc::RTC_EVENT::PUBLISH_STREAM_EVENT
@ PUBLISH_STREAM_EVENT
agora::rtc::RTC_EVENT::VIDEO_SUBSCRIBE_STATE_CHANGED
@ VIDEO_SUBSCRIBE_STATE_CHANGED
agora::rtc::RTC_EVENT::AUDIO_ROUTING_CHANGED
@ AUDIO_ROUTING_CHANGED
agora::rtc::RTC_EVENT::LASTMILE_QUALITY
@ LASTMILE_QUALITY
agora::rtc::ENCRYPTION_MODE
ENCRYPTION_MODE
Definition: AgoraBase.h:6475
agora::rtc::InternalEngineStatus::farin_signal_level
int farin_signal_level
Definition: rtc_engine_i.h:99
agora::rtc::RTC_EVENT::JOIN_PUBLISHER_REQUEST
@ JOIN_PUBLISHER_REQUEST
agora::rtc::IRtcEngineEx
Definition: IAgoraRtcEngineEx.h:1045
agora::rtc::region_info::alpha
int alpha
Definition: rtc_engine_i.h:584
agora::rtc::RECORDING_JOIN_EVT_MINUDPPORT
@ RECORDING_JOIN_EVT_MINUDPPORT
Definition: rtc_engine_i.h:121
agora::rtc::IRtcEngineEventHandlerInternal::onEvent
virtual bool onEvent(RTC_EVENT evt, const std::string *payload)
Definition: rtc_engine_i.h:366
agora::rtc::IRtcEngineInternal::simulateOnSetParameters
virtual int simulateOnSetParameters(const std::string &parameters)=0
agora::rtc::INIT_END_INTERNAL
@ INIT_END_INTERNAL
Definition: rtc_engine_i.h:308
agora::rtc::RtcEngineContextInternal::isPureCpp
bool isPureCpp
Definition: rtc_engine_i.h:337
agora::rtc::RTC_EVENT::AUDIO_METADATA_RECEIVED
@ AUDIO_METADATA_RECEIVED
agora::rtc::RTC_EVENT::NATIVE_LOG
@ NATIVE_LOG
agora::rtc::RTC_EVENT::REMOTE_AUDIO_STATE_CHANGED
@ REMOTE_AUDIO_STATE_CHANGED
agora::rtc::IRtcEngineInternal::setExternalVideoConfigEx
virtual int setExternalVideoConfigEx(const VideoEncoderConfiguration &config, const RtcConnection &connection)=0
agora::rtc::IRtcEngineInternal::setAudioOptionParams
virtual int setAudioOptionParams(const char *params)=0
agora::rtc::RtcEngineContextInternal::isPassThruMode
bool isPassThruMode
Definition: rtc_engine_i.h:326
agora::rtc::STATUS_UNINIT
@ STATUS_UNINIT
Definition: rtc_engine_i.h:312
agora::rtc::IRtcEngineInternal::setExternalVideoConfigEx
virtual int setExternalVideoConfigEx(const VideoEncoderConfiguration &config)=0
agora::rtc::RTC_EVENT::REQUEST_TOKEN
@ REQUEST_TOKEN
agora::rtc::RTC_EVENT::_INTERNAL_ENGINE_STATUS
@ _INTERNAL_ENGINE_STATUS
agora::rtc::RECORDING_JOIN_EVT_VIDEOONLY
@ RECORDING_JOIN_EVT_VIDEOONLY
Definition: rtc_engine_i.h:128
agora::rtc::RtcEngineLibHelper::createEngine
agora::rtc::IRtcEngine * createEngine()
Definition: rtc_engine_i.h:552
agora::media::IMediaRecorderObserverEx::onRecorderInfoUpdated
virtual void onRecorderInfoUpdated(const RecorderInfo &info)=0
agora::rtc::layout_info::ms
long long ms
Definition: rtc_engine_i.h:593
agora::rtc::RTC_EVENT::USER_JOINED
@ USER_JOINED
agora::rtc::WebAgentVideoStats::renderedFrameRate
int renderedFrameRate
Definition: rtc_engine_i.h:358
agora::rtc::region_info::id
unsigned id
Definition: rtc_engine_i.h:577
agora::rtc::RTC_EVENT::NETWORK_TYPE_CHANGED
@ NETWORK_TYPE_CHANGED
agora::rtc::decode_sei_layout
AGORA_API bool AGORA_CALL decode_sei_layout(const void *data, unsigned size, layout_info *layout)
agora::rtc::IRtcEngineInternal::ref
virtual aosl_ref_t ref()=0
agora::rtc::IRtcEngineInternal::setMediaRecorderObserver
virtual int setMediaRecorderObserver(const char *channelId, uid_t uid, bool isLocal, media::IMediaRecorderObserverEx *observer, int sys_version=0)=0
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:6508
agora::rtc::RTC_EVENT::VIDEO_LAYOUT_INFO
@ VIDEO_LAYOUT_INFO
agora::rtc::RTC_EVENT::STREAM_INJECTED_STATUS
@ STREAM_INJECTED_STATUS
agora::rtc::RECORDING_JOIN_EVT_MIXKBPS
@ RECORDING_JOIN_EVT_MIXKBPS
Definition: rtc_engine_i.h:120
agora::rtc::RTC_EVENT::RECAP_INDICATION
@ RECAP_INDICATION
agora::rtc::RTC_EVENT::UNPUBLISH_URL
@ UNPUBLISH_URL
agora::rtc::RECORDING_JOIN_EVT_SYSLOGFACILITY
@ RECORDING_JOIN_EVT_SYSLOGFACILITY
Definition: rtc_engine_i.h:129
agora::rtc::RTC_EVENT::JOIN_PUBILSHER_RESPONSE
@ JOIN_PUBILSHER_RESPONSE
agora::rtc::AGORA_IID_RTC_ENGINE_EX
@ AGORA_IID_RTC_ENGINE_EX
Definition: rtc_engine_i.h:85
agora::rtc::RECORDING_LEAVE_EVT_START
@ RECORDING_LEAVE_EVT_START
Definition: rtc_engine_i.h:141
agora::rtc::RTC_EVENT::AUDIO_MIXING_STATE_CHANGED
@ AUDIO_MIXING_STATE_CHANGED
agora::rtc::region_info::width
double width
Definition: rtc_engine_i.h:581
agora::rtc::EncryptionConfig::datastreamEncryptionEnabled
bool datastreamEncryptionEnabled
Definition: AgoraBase.h:6530
agora::rtc::region_info
Definition: rtc_engine_i.h:576
agora::rtc::RtcEngineLibHelper::initialize
bool initialize()
Definition: rtc_engine_i.h:503
agora::media::MediaRecorderConfiguration
Definition: AgoraMediaBase.h:1985
agora::rtc::canvas_info::height
int height
Definition: rtc_engine_i.h:572
agora::base::IParameterEngine
Definition: rtc_engine_i.h:38
agora::rtc::RTC_EVENT::CAMERA_FOCUS_AREA_CHANGED
@ CAMERA_FOCUS_AREA_CHANGED
agora::rtc::RecordingEventType
RecordingEventType
Definition: rtc_engine_i.h:103
agora::rtc::RTC_EVENT::TRANSPORT_SERVER_INSTANCE
@ TRANSPORT_SERVER_INSTANCE
agora::rtc::RECORDING_LEAVE_EVT_LEAVEPATHCODE
@ RECORDING_LEAVE_EVT_LEAVEPATHCODE
Definition: rtc_engine_i.h:142
agora::rtc::RecordingEventType::RECORDING_EVENT_LEAVE
@ RECORDING_EVENT_LEAVE
agora::rtc::RTC_EVENT::REMOTE_VIDEO_STREAM_INFO_UPDATED
@ REMOTE_VIDEO_STREAM_INFO_UPDATED
agora::rtc::RTC_EVENT::LOCAL_PUBLISH_FALLBACK_TO_AUDIO_ONLY
@ LOCAL_PUBLISH_FALLBACK_TO_AUDIO_ONLY
agora::rtc::RTC_EVENT
RTC_EVENT
Definition: rtc_engine_i.h:174
agora::rtc::APP_TYPE_REACT_NATIVE
@ APP_TYPE_REACT_NATIVE
Definition: rtc_engine_i.h:164
agora::rtc::RtcEngineLibHelper::~RtcEngineLibHelper
~RtcEngineLibHelper()
Definition: rtc_engine_i.h:548
agora::rtc::region_info::zorder
int zorder
Definition: rtc_engine_i.h:587
agora::rtc::RTC_EVENT::CROSS_CHANNEL_STATE
@ CROSS_CHANNEL_STATE
agora::rtc::RTC_EVENT::PUBLISH_STREAM_STATE
@ PUBLISH_STREAM_STATE
agora::rtc::InternalEngineStatus::playoutfreq
int playoutfreq
Definition: rtc_engine_i.h:93
agora::rtc::RTC_EVENT::LOCAL_VIDEO_STATE_CHANGED
@ LOCAL_VIDEO_STATE_CHANGED
agora::rtc::RtcEngineContext
Definition: IAgoraRtcEngine.h:3304
agora::rtc::RtcEngineLibHelper::isValid
bool isValid()
Definition: rtc_engine_i.h:550
agora::rtc::RTC_EVENT::SNAPSHOT_TAKEN
@ SNAPSHOT_TAKEN
agora::rtc::IRtcEngine
Definition: IAgoraRtcEngine.h:3728
agora::rtc::audio_transport_packet_info::uid
uid_t uid
Definition: rtc_engine_i.h:298
agora::rtc::IRtcEngineInternal::stopPreviewRecording
virtual int stopPreviewRecording()=0
agora::rtc::EncryptionConfigInternal::datastreamEncryptionEnabled
bool datastreamEncryptionEnabled
Definition: rtc_engine_i.h:621
agora::rtc::RTC_EVENT::REMOVE_PUBLISHER_REQUEST
@ REMOVE_PUBLISHER_REQUEST
agora::rtc::APP_TYPE_ELECTRON
@ APP_TYPE_ELECTRON
Definition: rtc_engine_i.h:159
agora::rtc::RECORDING_JOIN_EVT_MIXFPS
@ RECORDING_JOIN_EVT_MIXFPS
Definition: rtc_engine_i.h:119
agora::rtc::RTC_EVENT::RTC_STATS
@ RTC_STATS
agora::rtc::STATUS_INITIALIZING
@ STATUS_INITIALIZING
Definition: rtc_engine_i.h:313
agora::rtc::RTC_EVENT::LOCAL_AUDIO_STATE_CHANGED
@ LOCAL_AUDIO_STATE_CHANGED
agora::rtc::IRtcAvTransportPacketInfoObserver::~IRtcAvTransportPacketInfoObserver
virtual ~IRtcAvTransportPacketInfoObserver()=default
agora::rtc::IRtcEngineInternal::releaseInternal
virtual int releaseInternal()=0
agora::rtc::RTC_EVENT::FIRST_LOCAL_VIDEO_FRAME_PUBLISHED
@ FIRST_LOCAL_VIDEO_FRAME_PUBLISHED
agora::rtc::RtcEngineContextInternal::is_p2p_switch_enabled_
bool is_p2p_switch_enabled_
Definition: rtc_engine_i.h:335
agora::rtc::RECORDING_JOIN_EVT_DECODEVIDEOTYPE
@ RECORDING_JOIN_EVT_DECODEVIDEOTYPE
Definition: rtc_engine_i.h:124
agora::rtc::EncryptionConfig::encryptionKey
const char * encryptionKey
Definition: AgoraBase.h:6520
agora::rtc::APP_TYPE_INVALID_VALUE
@ APP_TYPE_INVALID_VALUE
Definition: rtc_engine_i.h:155
agora::rtc::canvas_info::width
int width
Definition: rtc_engine_i.h:571
agora::rtc::IRtcEngineInternal::monitorDeviceChange
virtual int monitorDeviceChange(bool enabled)=0
agora::rtc::RTC_EVENT::USER_MUTE_AUDIO
@ USER_MUTE_AUDIO
agora::rtc::IRtcEngineInternal::startRecording
virtual int startRecording(const char *channelId, uid_t uid, bool isLocal, const media::MediaRecorderConfiguration &config)=0
agora::rtc::audio_transport_packet_info
Definition: rtc_engine_i.h:297
agora::rtc::APP_TYPE
APP_TYPE
Definition: rtc_engine_i.h:154
agora::rtc::RTC_EVENT::WLACC_MESSAGE
@ WLACC_MESSAGE
agora::rtc::uid_t
unsigned int uid_t
Definition: AgoraMediaBase.h:28
agora::rtc::RECORDING_LEAVE_EVT_RESERVE1
@ RECORDING_LEAVE_EVT_RESERVE1
Definition: rtc_engine_i.h:143
agora::rtc::RTC_EVENT::CONNECTION_BANNED
@ CONNECTION_BANNED
agora::rtc::IRtcEngineInternal::reportEngineInitializeEvent
virtual void reportEngineInitializeEvent() const =0
agora::rtc::IRtcEngineInternal::getConnection
virtual agora_refptr< IRtcConnection > getConnection(const RtcConnection &connection={}) const =0
agora::rtc::RecordingEventType::RECORDING_EVENT_END
@ RECORDING_EVENT_END
agora::rtc::EncryptionConfigInternal::encryptionKey
std::string encryptionKey
Definition: rtc_engine_i.h:619
agora::rtc::region_info::y
double y
Definition: rtc_engine_i.h:580
agora::rtc::RTC_EVENT::DOWNLINK_NETWORK_INFO_UPDATE
@ DOWNLINK_NETWORK_INFO_UPDATE
agora::rtc::IRtcEngineInternal::getMediaPlayer
virtual aosl_ref_t getMediaPlayer(int sourceId)=0
agora::rtc::IRtcEngineInternal::getAudioOptionParams
virtual int getAudioOptionParams(char *params)=0
agora::rtc::APP_TYPE_PYTHON
@ APP_TYPE_PYTHON
Definition: rtc_engine_i.h:165
agora::rtc::IRtcEngineInternal::isMicrophoneOn
virtual bool isMicrophoneOn()=0
agora::rtc::IRtcEngineInternal::isEventHandler
static bool isEventHandler(IRtcEngineEventHandler *handler)
Definition: rtc_engine_i.h:464
agora::media::RecorderReasonCode
RecorderReasonCode
Definition: AgoraMediaBase.h:1957
agora::rtc::InternalEngineStatus::nearout_signal_level
int nearout_signal_level
Definition: rtc_engine_i.h:98
agora::rtc::RECORDING_JOIN_EVT_STREAMTYPE
@ RECORDING_JOIN_EVT_STREAMTYPE
Definition: rtc_engine_i.h:130
agora::rtc::IRtcEngineInternal::setVideoConfigParam
virtual int setVideoConfigParam(const char *params)=0
agora::rtc::RTC_EVENT::REMOTE_AUDIO_STAT
@ REMOTE_AUDIO_STAT
agora::rtc::RTC_EVENT::CAMERA_EXPOSURE_AREA_CHANGED
@ CAMERA_EXPOSURE_AREA_CHANGED
agora::rtc::layout_info::region_count
unsigned int region_count
Definition: rtc_engine_i.h:596
agora::rtc::RTC_EVENT::FIRST_REMOTE_AUDIO_FRAME
@ FIRST_REMOTE_AUDIO_FRAME
agora::rtc::RTC_EVENT::FIRST_REMOTE_VIDEO_DECODED
@ FIRST_REMOTE_VIDEO_DECODED
agora::rtc::RTC_EVENT::CONNECTION_STATE_CHANGED
@ CONNECTION_STATE_CHANGED
agora::rtc::IRtcEngineInternal::getRecentSid
virtual std::string getRecentSid(const RtcConnection *connnection)=0
agora::rtc::RtcEngineContextInternal::RtcEngineContextInternal
RtcEngineContextInternal(const RtcEngineContext &ctx)
agora::rtc::RTC_EVENT::SET_RTM_FLAG_RESULT
@ SET_RTM_FLAG_RESULT
agora::rtc::RtcEngineLibHelper::RtcEngineLibHelper
RtcEngineLibHelper(const char *dllname)
Definition: rtc_engine_i.h:496
agora::rtc::IRtcEngineInternal::putMediaPlayer
virtual int putMediaPlayer(int sourceId)=0
agora::rtc::RTC_EVENT::MEDIA_ENGINE_EVENT
@ MEDIA_ENGINE_EVENT
agora::rtc::RTC_EVENT::QUERY_RECORDING_SERVICE_STATUS
@ QUERY_RECORDING_SERVICE_STATUS
agora::rtc::MAX_RECORDING_JOIN_EVT_RESERVE15
@ MAX_RECORDING_JOIN_EVT_RESERVE15
Definition: rtc_engine_i.h:137
rtc
Definition: video_node_i.h:28
agora::rtc::RTC_EVENT::LEAVE_CHANNEL
@ LEAVE_CHANNEL
agora::rtc::APP_TYPE_XAMARIN
@ APP_TYPE_XAMARIN
Definition: rtc_engine_i.h:162
agora::rtc::RTC_EVENT::TRANSPORT_QUALITY
@ TRANSPORT_QUALITY
agora::rtc::RTC_EVENT::VIDEO_STOPPED
@ VIDEO_STOPPED
agora::rtc::RTC_EVENT::PERMISSION_ERROR_EVENT
@ PERMISSION_ERROR_EVENT
agora::rtc::RECORDING_LEAVE_EVT_MAX
@ RECORDING_LEAVE_EVT_MAX
Definition: rtc_engine_i.h:148
agora::rtc::APP_TYPE_UNREAL
@ APP_TYPE_UNREAL
Definition: rtc_engine_i.h:161
agora::rtc::RTC_EVENT::REMOTE_VIDEO_STAT
@ REMOTE_VIDEO_STAT
agora::rtc::EncryptionConfigInternal
Definition: rtc_engine_i.h:600
agora::rtc::RECORDING_JOIN_EVT_MIXLOW
@ RECORDING_JOIN_EVT_MIXLOW
Definition: rtc_engine_i.h:118
agora::rtc::InternalEngineStatus::nearin_signal_level
int nearin_signal_level
Definition: rtc_engine_i.h:97
agora::base::IParameterEngine::setParametersInternal
virtual int setParametersInternal(const char *parameters, int priority)=0
agora::rtc::IRtcEngineInternal::enableVosUserInfoHidden
virtual int32_t enableVosUserInfoHidden(bool enabled)=0