Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
IAgoraService.h
1// Agora SDK
2//
3// Copyright (c) 2018 Agora.io. All rights reserved.
4//
5
6#pragma once // NOLINT(build/header_guard)
7
8#include "IAgoraLog.h"
9#include "AgoraBase.h"
10#include "AgoraOptional.h"
11#include <api/cpp/aosl_ares_class.h>
12
13namespace agora {
17
18namespace rtc {
19class IRtcConnection;
20class IRtmpConnection;
21class ILocalUser;
22class IMediaDeviceManager;
24struct TConnectionInfo;
30class ICameraCapturer;
31class IScreenCapturer;
37class IVideoSourceNode;
47class IAudioDeviceManager;
49
53class IConfigCenter;
65
66} // namespace rtc
67
68namespace rtm {
69class IRtmService;
70}
71
72namespace base {
74class ISyncClient;
75struct SyncConfig;
76
181
290
291#if defined(WEBRTC_IOS)
296#endif
297
298 void SetAll(const AudioSessionConfiguration& change) {
299 SetFrom(&playbackAndRecord, change.playbackAndRecord);
300 SetFrom(&chatMode, change.chatMode);
301 SetFrom(&defaultToSpeaker, change.defaultToSpeaker);
302 SetFrom(&overrideSpeaker, change.overrideSpeaker);
303 SetFrom(&allowMixWithOthers, change.allowMixWithOthers);
304 SetFrom(&allowDuckOthers, change.allowDuckOthers);
305 SetFrom(&allowBluetooth, change.allowBluetooth);
306 SetFrom(&allowBluetoothA2DP, change.allowBluetoothA2DP);
307 SetFrom(&sampleRate, change.sampleRate);
308 SetFrom(&ioBufferDuration, change.ioBufferDuration);
311#if defined(WEBRTC_IOS)
312 SetFrom(&category, change.category);
313#endif
314 }
315
330 bool operator!=(const AudioSessionConfiguration& o) const { return !(*this == o); }
331
332 private:
333 template <typename T>
334 static void SetFrom(Optional<T>* s, const Optional<T>& o) {
335 if (o) {
336 *s = o;
337 }
338 }
339};
340
353
358public:
359 virtual ~IServiceObserver() {}
360
365 virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType) {}
370 virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char* description) {}
382 virtual void onFetchConfigResult(int code, rtc::CONFIG_FETCH_TYPE configType, const char* configContent) {}
383};
384
396 public:
408 virtual int initialize(const AgoraServiceConfiguration& config) = 0;
409
413 virtual int atExit(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
414
422 virtual int release() = 0;
423
433 virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
434
443 virtual int setAudioSessionConfiguration(const AudioSessionConfiguration& config, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
444
454
474 virtual int setLogFile(const char* filePath, unsigned int fileSize, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
493 virtual int setLogFilter(unsigned int filters, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
494
504 const rtc::RtcConnectionConfiguration& cfg) = 0;
505
507 const rtc::RtmpConnectionConfiguration& cfg) = 0;
508
521
532
546
561
575 agora_refptr<rtc::IAudioPcmDataSender> audioSource, bool enableAec) = 0;
576
590
606
620
633
646 agora_refptr<rtc::IMediaStreamingSource> streamingSource) = 0;
647
661 agora_refptr<rtc::IRecordingDeviceSource> audioSource, bool enableAec, bool overlap) = 0;
662
671
680
693 agora_refptr<rtc::ICameraCapturer> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
694
707 const char* id = OPTIONAL_NULLPTR) = 0;
708
721 const char* id = OPTIONAL_NULLPTR) = 0;
722
724
735 agora_refptr<rtc::IVideoFrameSender> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
737
752 const rtc::SenderOptions& options,
753 const char* id = OPTIONAL_NULLPTR) = 0;
754
755#if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || defined(__OHOS__)
769
783#else
796 agora_refptr<rtc::IScreenCapturer> screen, const char* id = OPTIONAL_NULLPTR) = 0;
797#endif
798
800
811 agora_refptr<rtc::IMediaPacketSender> source, const char* id = OPTIONAL_NULLPTR) = 0;
813
824 agora_refptr<rtc::IMediaPlayerSource> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
825
837 agora_refptr<rtc::IMediaStreamingSource> streamingSource, const char* id = OPTIONAL_NULLPTR) = 0;
838
839
850 agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
851
863 agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
864
876 agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
877
886
887 virtual int addExtensionObserver(agora::agora_refptr<agora::rtc::IMediaExtensionObserver> observer, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
888
889 virtual int removeExtensionObserver(agora::agora_refptr<agora::rtc::IMediaExtensionObserver> observer, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
890
900
909
918 virtual const char* getExtensionId(const char* provider_name, const char* extension_name) = 0;
919
920#if defined (_WIN32) || defined(__linux__) || defined(__ANDROID__)
928 virtual int loadExtensionProvider(const char* path, bool unload_after_use = false) = 0;
929#endif
943 virtual int enableExtension(
944 const char* provider_name, const char* extension_name, const char* track_id = NULL,
945 bool auto_enable_on_track = false, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
957 virtual int disableExtension(
958 const char* provider_name, const char* extension_name, const char* track_id = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
959
968
977
986
994 virtual int32_t setLogWriter(agora::commons::ILogWriter* logWriter) = 0;
995
1003
1004 protected:
1005 virtual ~IAgoraService() {}
1006};
1007
1008} // namespace base
1009} // namespace agora
1010
Definition NGIAgoraDataChannel.h:84
Definition NGIAgoraDataChannel.h:118
Definition AgoraOptional.h:413
Definition AgoraRefPtr.h:44
Definition IAgoraService.h:395
virtual agora_refptr< rtc::ILocalAudioTrack > createDirectCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
virtual int loadExtensionProvider(const char *path, bool unload_after_use=false)=0
load the dynamic library of the extension
virtual agora_refptr< rtc::ILocalAudioTrack > createMediaStreamingAudioTrack(agora_refptr< rtc::IMediaStreamingSource > streamingSource)=0
virtual agora_refptr< rtc::IFileUploaderService > createFileUploadService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createRecordingDeviceAudioTrack(agora_refptr< rtc::IRecordingDeviceSource > audioSource, bool enableAec, bool overlap)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IRemoteAudioMixerSource > audioSource)=0
virtual int setAudioSessionConfiguration(const AudioSessionConfiguration &config, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int setLogFile(const char *filePath, unsigned int fileSize, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IVideoFrameSender > videoSource, const char *id=OPTIONAL_NULLPTR)=0
virtual int addExtensionObserver(agora::agora_refptr< agora::rtc::IMediaExtensionObserver > observer, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createMediaPlayerAudioTrack(agora_refptr< rtc::IMediaPlayerSource > audioSource)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
virtual agora_refptr< rtc::IMediaRelayService > createMediaRelayService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createScreenCaptureVideoTrack(agora_refptr< rtc::IScreenCapturer > screen, const char *id=OPTIONAL_NULLPTR)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createMediaPlayerVideoTrack(agora_refptr< rtc::IMediaPlayerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
virtual int removeExtensionObserver(agora::agora_refptr< agora::rtc::IMediaExtensionObserver > observer, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createMixedVideoTrack(agora_refptr< rtc::IVideoMixerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
virtual agora_refptr< rtc::IRtmpStreamingService > createRtmpStreamingService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createLocalMixedAudioTrack()=0
virtual const char * getExtensionId(const char *provider_name, const char *extension_name)=0
Get the ID of the registered extension.
virtual int initialize(const AgoraServiceConfiguration &config)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IVideoEncodedImageSender > videoSource, const rtc::SenderOptions &options, const char *id=OPTIONAL_NULLPTR)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createMediaStreamingVideoTrack(agora_refptr< rtc::IMediaStreamingSource > streamingSource, const char *id=OPTIONAL_NULLPTR)=0
virtual agora_refptr< rtc::IMediaNodeFactory > createMediaNodeFactory()=0
virtual agora_refptr< rtc::ILocalAudioTrack > createLocalAudioTrack()=0
virtual int getAudioSessionConfiguration(AudioSessionConfiguration *config)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createTranscodedVideoTrack(agora_refptr< rtc::IVideoFrameTransceiver > transceiver, const char *id=OPTIONAL_NULLPTR)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createScreenCaptureAudioTrack(agora_refptr< rtc::IScreenCapturer2 > screen)=0
virtual ~IAgoraService()
Definition IAgoraService.h:1005
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioEncodedFrameSender > audioSource, TMixMode mixMode)=0
virtual agora_refptr< rtc::IConfigCenter > getConfigCenter()=0
virtual agora_refptr< ILocalDataChannel > createLocalDataChannel(const DataChannelConfig &config)=0
virtual agora_refptr< base::IAgoraParameter > getAgoraParameter()=0
virtual agora_refptr< base::ISyncClient > createSyncClient(const base::SyncConfig &config)=0
virtual agora::commons::ILogWriter * releaseLogWriter()=0
virtual agora_refptr< rtc::IRtcConnection > createRtcConnection(const rtc::RtcConnectionConfiguration &cfg)=0
virtual int32_t setLogWriter(agora::commons::ILogWriter *logWriter)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource, bool enableAec)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createScreenCaptureVideoTrack(agora_refptr< rtc::IScreenCapturer2 > screen)=0
virtual int setLogFilter(unsigned int filters, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::IAudioDeviceManager > createAudioDeviceManagerComponent(rtc::IAudioDeviceManagerObserver *observer)=0
virtual int enableExtension(const char *provider_name, const char *extension_name, const char *track_id=NULL, bool auto_enable_on_track=false, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual rtm::IRtmService * createRtmService()=0
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IMediaPacketSender > source, const char *id=OPTIONAL_NULLPTR)=0
virtual agora_refptr< rtc::INGAudioDeviceManager > createAudioDeviceManager()=0
virtual int disableExtension(const char *provider_name, const char *extension_name, const char *track_id=NULL, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IMediaPacketSender > source)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createCameraVideoTrack(agora_refptr< rtc::ICameraCapturer > videoSource, const char *id=OPTIONAL_NULLPTR)=0
virtual int atExit(aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::IRtmpConnection > createRtmpConnection(const rtc::RtmpConnectionConfiguration &cfg)=0
Definition IAgoraService.h:357
virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char *description)
Definition IAgoraService.h:370
virtual ~IServiceObserver()
Definition IAgoraService.h:359
virtual void onFetchConfigResult(int code, rtc::CONFIG_FETCH_TYPE configType, const char *configContent)
Definition IAgoraService.h:382
virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType)
Definition IAgoraService.h:365
Definition NGIAgoraSyncClient.h:89
Definition IAgoraLog.h:50
Definition NGIAgoraAudioDeviceManager.h:91
Definition NGIAgoraMediaNode.h:277
Definition NGIAgoraMediaNode.h:244
Definition NGIAgoraCameraCapturer.h:20
Definition NGIAgoraConfigCenter.h:15
Definition NGIAgoraExtensionProvider.h:35
Definition IAgoraFileUploader.h:38
Definition NGIAgoraAudioTrack.h:262
Definition NGIAgoraLocalUser.h:56
Definition NGIAgoraVideoTrack.h:394
Definition NGIAgoraMediaNode.h:230
Definition NGIAgoraMediaNodeFactory.h:37
Definition NGIAgoraMediaNode.h:361
Definition IAgoraMediaPlayerSource.h:22
Definition IAgoraMediaRelayService.h:15
The IMediaStreamingSource class provides access to a media streaming source demuxer....
Definition IAgoraMediaStreamingSource.h:97
Definition NGIAgoraAudioDeviceManager.h:203
Definition NGIAgoraAudioDeviceManager.h:140
Definition NGIAgoraRemoteAudioMixerSource.h:22
Definition NGIAgoraRtcConnection.h:184
Definition NGIAgoraRtmpConnection.h:317
Definition IAgoraRtmpStreamingService.h:90
Definition NGIAgoraScreenCapturer.h:146
Definition NGIAgoraScreenCapturer.h:19
Definition NGIAgoraMediaNode.h:470
Definition NGIAgoraMediaNode.h:446
Definition NGIAgoraMediaNode.h:648
Definition NGIAgoraVideoMixerSource.h:46
Definition IAgoraRtmService.h:637
AGORA_API agora::base::IAgoraService *AGORA_CALL createAgoraService()
Definition IAgoraService.h:72
TMixMode
Definition IAgoraService.h:343
@ MIX_ENABLED
Definition IAgoraService.h:347
@ MIX_DISABLED
Definition IAgoraService.h:351
Definition AgoraExtensions.h:5
AUDIO_SCENARIO_TYPE
Definition AgoraBase.h:3042
PERMISSION_TYPE
Definition AgoraBase.h:6953
AUDIO_PROFILE_TYPE
Definition AgoraBase.h:2995
@ AUDIO_PROFILE_DEFAULT
Definition AgoraBase.h:3005
CONFIG_FETCH_TYPE
Definition AgoraBase.h:7296
Definition AgoraAtomicOps.h:21
ERROR_CODE_TYPE
Definition AgoraBase.h:456
CHANNEL_PROFILE_TYPE
Definition AgoraBase.h:267
@ CHANNEL_PROFILE_LIVE_BROADCASTING
Definition AgoraBase.h:279
Definition video_node_i.h:28
Definition NGIAgoraDataChannel.h:18
Definition IAgoraService.h:82
bool useExternalEglContext
Definition IAgoraService.h:158
agora::CHANNEL_PROFILE_TYPE channelProfile
Definition IAgoraService.h:124
IServiceObserver * serviceObserver
Definition IAgoraService.h:146
Optional< rtc::THREAD_PRIORITY_TYPE > threadPriority __deprecated
Definition IAgoraService.h:151
commons::LogConfig logConfig
Definition IAgoraService.h:138
bool domainLimit
Definition IAgoraService.h:165
unsigned int areaCode
Definition IAgoraService.h:120
bool useStringUid
Definition IAgoraService.h:142
bool enableAudioDevice
Definition IAgoraService.h:99
const char * appId
Definition IAgoraService.h:115
bool enableAudioProcessor
Definition IAgoraService.h:88
rtc::AUDIO_SCENARIO_TYPE audioScenario
Definition IAgoraService.h:134
bool enableVideo
Definition IAgoraService.h:105
void * context
Definition IAgoraService.h:111
const char * license
Definition IAgoraService.h:129
AgoraServiceConfiguration()
Definition IAgoraService.h:167
Definition IAgoraService.h:186
Optional< bool > allowBluetoothA2DP
Definition IAgoraService.h:267
Optional< bool > overrideSpeaker
Definition IAgoraService.h:226
Optional< bool > allowBluetooth
Definition IAgoraService.h:255
Optional< int > outputNumberOfChannels
Definition IAgoraService.h:289
void SetAll(const AudioSessionConfiguration &change)
Definition IAgoraService.h:298
Optional< bool > chatMode
Definition IAgoraService.h:208
Optional< int > inputNumberOfChannels
Definition IAgoraService.h:285
bool operator==(const AudioSessionConfiguration &o) const
Definition IAgoraService.h:316
Optional< bool > playbackAndRecord
Definition IAgoraService.h:199
Optional< bool > defaultToSpeaker
Definition IAgoraService.h:217
Optional< bool > allowMixWithOthers
Definition IAgoraService.h:235
Optional< double > sampleRate
Definition IAgoraService.h:274
Optional< double > ioBufferDuration
Definition IAgoraService.h:281
Optional< int > category
Definition IAgoraService.h:295
bool operator!=(const AudioSessionConfiguration &o) const
Definition IAgoraService.h:330
Optional< bool > allowDuckOthers
Definition IAgoraService.h:244
Definition NGIAgoraSyncClient.h:78
Definition IAgoraLog.h:83
AudioEncoderConfiguration()
Definition IAgoraService.h:63
AUDIO_PROFILE_TYPE audioProfile
Definition IAgoraService.h:61
Definition NGIAgoraRtcConnection.h:90
Definition NGIAgoraRtmpConnection.h:231
Definition AgoraBase.h:1293
Definition NGIAgoraRtcConnection.h:26