Agora RTC Objective-C API Reference  Refactor
IAgoraService.h
Go to the documentation of this file.
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 
12 namespace agora {
13 namespace rtc {
14 class IRtcConnection;
15 class IRtmpConnection;
16 class ILocalUser;
17 class IMediaDeviceManager;
18 class INGAudioDeviceManager;
19 struct TConnectionInfo;
20 struct RtcConnectionConfiguration;
21 struct RtmpConnectionConfiguration;
22 class ILocalAudioTrack;
23 class IMediaPlayerSource;
24 class IMediaStreamingSource;
25 class ICameraCapturer;
26 class IScreenCapturer;
27 class IScreenCapturer2;
28 class IAudioPcmDataSender;
29 class IAudioEncodedFrameSender;
30 class IVideoFrameSender;
31 class IVideoEncodedImageSender;
32 class IVideoSourceNode;
33 class IVideoMixerSource;
34 class IVideoFrameTransceiver;
35 class ILocalVideoTrack;
36 class IMediaNodeFactory;
37 class IRecordingDeviceSource;
38 class IRemoteAudioMixerSource;
39 class IRtmpStreamingService;
40 class IMediaPacketSender;
41 class IMediaRelayService;
42 class IAudioDeviceManager;
43 class IAudioDeviceManagerObserver;
44 
45 class IMediaExtensionObserver;
46 class IExtensionProvider;
47 class IFileUploaderService;
56  // absl::optional<DtxStatus> dtx;
57  // double bitrate_priority = 1.0;
58  // absl::optional<int> ptime;
59  // FEC parameters
60  // Rtx parameters
61 
63 };
64 
65 } // namespace rtc
66 
67 namespace signaling {
68 class ISignalingEngine;
69 }
70 
71 namespace rtm {
72 class IRtmService;
73 }
74 
75 namespace base {
76 class IEngineBase;
77 class IServiceObserver;
78 
113  void* context;
117  const char* appId;
118 
122  unsigned int areaCode;
123 
143 
155 
157  enableAudioDevice(true),
158  enableVideo(false),
159  context(NULL),
160  appId(NULL),
161  areaCode(rtc::AREA_CODE_GLOB),
164  useStringUid(false),
165  serviceObserver(NULL),
166  useExternalEglContext(false){}
167 };
268 
271  SetFrom(&chatMode, change.chatMode);
277  SetFrom(&sampleRate, change.sampleRate);
281  }
282 
283  bool operator==(const AudioSessionConfiguration& o) const {
291  }
292  bool operator!=(const AudioSessionConfiguration& o) const { return !(*this == o); }
293 
294  private:
295  template <typename T>
296  static void SetFrom(Optional<T>* s, const Optional<T>& o) {
297  if (o) {
298  *s = o;
299  }
300  }
301 };
305 enum TMixMode {
314 };
315 
320 public:
321  virtual ~IServiceObserver() {}
322 
327  virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType) {}
332  virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char* description) {}
333 };
334 
346  public:
358  virtual int initialize(const AgoraServiceConfiguration& config) = 0;
359 
363  virtual void atExit() = 0;
364 
372  virtual int release() = 0;
373 
384 
394 
404 
424  virtual int setLogFile(const char* filePath, unsigned int fileSize) = 0;
443  virtual int setLogFilter(unsigned int filters) = 0;
444 
454  const rtc::RtcConnectionConfiguration& cfg) = 0;
455 
457  const rtc::RtmpConnectionConfiguration& cfg) = 0;
458 
471 
485 
500 
514  agora_refptr<rtc::IAudioPcmDataSender> audioSource, bool enableAec) = 0;
515 
531  agora_refptr<rtc::IAudioPcmDataSender> audioReverseSource, int audioSourceDelay) = 0;
532 
546 
560  agora_refptr<rtc::IAudioEncodedFrameSender> audioSource, TMixMode mixMode) = 0;
562 
576 
588  agora_refptr<rtc::IMediaPlayerSource> audioSource) = 0;
589 
602  agora_refptr<rtc::IMediaStreamingSource> streamingSource) = 0;
603 
616  agora_refptr<rtc::IRecordingDeviceSource> audioSource, bool enableAec) = 0;
617 
626 
635 
648  agora_refptr<rtc::ICameraCapturer> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
649 
661  agora_refptr<rtc::IScreenCapturer> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
662 
675  const char* id = OPTIONAL_NULLPTR) = 0;
676 
689  const char* id = OPTIONAL_NULLPTR) = 0;
690 
692 
703  agora_refptr<rtc::IVideoFrameSender> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
705 
720  const rtc::SenderOptions& options,
721  const char* id = OPTIONAL_NULLPTR) = 0;
722 
723 #if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
724 
737 
751 #else
752 
764  agora_refptr<rtc::IScreenCapturer> screen, const char* id = OPTIONAL_NULLPTR) = 0;
765 #endif
766 
768 
779  agora_refptr<rtc::IMediaPacketSender> source, const char* id = OPTIONAL_NULLPTR) = 0;
781 
792  agora_refptr<rtc::IMediaPlayerSource> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
793 
805  agora_refptr<rtc::IMediaStreamingSource> streamingSource, const char* id = OPTIONAL_NULLPTR) = 0;
806 
807 
818  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
819 
831  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
832 
844  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
845 
854 
856 
858 
867  rtc::IAudioDeviceManagerObserver *observer) = 0;
876  virtual const char* getExtensionId(const char* provider_name, const char* extension_name) = 0;
877 
878 #if defined (_WIN32) || defined(__linux__) || defined(__ANDROID__)
879 
886  virtual int loadExtensionProvider(const char* path, bool unload_after_use = false) = 0;
887 #endif
888 
901  virtual int enableExtension(
902  const char* provider_name, const char* extension_name, const char* track_id = NULL,
903  bool auto_enable_on_track = false) = 0;
915  virtual int disableExtension(
916  const char* provider_name, const char* extension_name, const char* track_id = NULL) = 0;
917 
918  protected:
919  virtual ~IAgoraService() {}
920 };
921 
922 } // namespace base
923 } // namespace agora
924 
agora::base::AgoraServiceConfiguration::useExternalEglContext
bool useExternalEglContext
Definition: IAgoraService.h:154
agora::base::IAgoraService::createRtmService
virtual rtm::IRtmService * createRtmService()=0
agora::CHANNEL_PROFILE_LIVE_BROADCASTING
@ CHANNEL_PROFILE_LIVE_BROADCASTING
Definition: AgoraBase.h:287
agora::base::IAgoraService
Definition: IAgoraService.h:345
agora::ERROR_CODE_TYPE
ERROR_CODE_TYPE
Definition: AgoraBase.h:460
agora::rtc::SenderOptions
Definition: AgoraBase.h:1156
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioEncodedFrameSender > audioSource, TMixMode mixMode)=0
agora::base::IAgoraService::createMixedVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMixedVideoTrack(agora_refptr< rtc::IVideoMixerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::AudioSessionConfiguration::outputNumberOfChannels
Optional< int > outputNumberOfChannels
Definition: IAgoraService.h:267
agora::base::AudioSessionConfiguration::ioBufferDuration
Optional< double > ioBufferDuration
Definition: IAgoraService.h:259
agora::base::IAgoraService::createFileUploadService
virtual agora_refptr< rtc::IFileUploaderService > createFileUploadService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::base::IAgoraService::createDirectCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createDirectCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
AgoraBase.h
agora::base::IAgoraService::createTranscodedVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createTranscodedVideoTrack(agora_refptr< rtc::IVideoFrameTransceiver > transceiver, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IAgoraService::createRtmpStreamingService
virtual agora_refptr< rtc::IRtmpStreamingService > createRtmpStreamingService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::base::IAgoraService::createScreenCaptureVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createScreenCaptureVideoTrack(agora_refptr< rtc::IScreenCapturer2 > screen)=0
agora::base::AgoraServiceConfiguration
Definition: IAgoraService.h:84
agora::base::IAgoraService::~IAgoraService
virtual ~IAgoraService()
Definition: IAgoraService.h:919
agora::base::IAgoraService::initialize
virtual int initialize(const AgoraServiceConfiguration &config)=0
agora::base::MIX_DISABLED
@ MIX_DISABLED
Definition: IAgoraService.h:313
agora::base::IAgoraService::setAudioSessionConfiguration
virtual int setAudioSessionConfiguration(const AudioSessionConfiguration &config)=0
agora::base::AudioSessionConfiguration::allowBluetoothA2DP
Optional< bool > allowBluetoothA2DP
Definition: IAgoraService.h:245
agora::rtm::IRtmService
Definition: IAgoraRtmService.h:638
agora::base::AudioSessionConfiguration::playbackAndRecord
Optional< bool > playbackAndRecord
Definition: IAgoraService.h:186
agora::base::AudioSessionConfiguration::sampleRate
Optional< double > sampleRate
Definition: IAgoraService.h:252
agora::base::AgoraServiceConfiguration::appId
const char * appId
Definition: IAgoraService.h:117
agora::base::AgoraServiceConfiguration::channelProfile
agora::CHANNEL_PROFILE_TYPE channelProfile
Definition: IAgoraService.h:126
agora::base::AudioSessionConfiguration::chatMode
Optional< bool > chatMode
Definition: IAgoraService.h:195
agora::base::IAgoraService::createAudioDeviceManagerComponent
virtual agora_refptr< rtc::IAudioDeviceManager > createAudioDeviceManagerComponent(rtc::IAudioDeviceManagerObserver *observer)=0
agora::base::IServiceObserver
Definition: IAgoraService.h:319
agora::base::AudioSessionConfiguration::operator!=
bool operator!=(const AudioSessionConfiguration &o) const
Definition: IAgoraService.h:292
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource, agora_refptr< rtc::IAudioPcmDataSender > audioReverseSource, int audioSourceDelay)=0
agora::rtc::AUDIO_SCENARIO_DEFAULT
@ AUDIO_SCENARIO_DEFAULT
Definition: AgoraBase.h:2332
agora::base::IAgoraService::getExtensionId
virtual const char * getExtensionId(const char *provider_name, const char *extension_name)=0
Get the ID of the registered extension.
agora::rtc::RtmpConnectionConfiguration
Definition: NGIAgoraRtmpConnection.h:222
agora::base::AudioSessionConfiguration::allowBluetooth
Optional< bool > allowBluetooth
Definition: IAgoraService.h:233
createAgoraService
AGORA_API agora::base::IAgoraService *AGORA_CALL createAgoraService()
agora::base::AgoraServiceConfiguration::enableAudioProcessor
bool enableAudioProcessor
Definition: IAgoraService.h:90
agora::base::AudioSessionConfiguration::defaultToSpeaker
Optional< bool > defaultToSpeaker
Definition: IAgoraService.h:204
agora::rtc::AudioEncoderConfiguration::AudioEncoderConfiguration
AudioEncoderConfiguration()
Definition: IAgoraService.h:62
agora
Definition: AgoraAtomicOps.h:21
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IMediaPacketSender > source)=0
agora::base::IAgoraService::createScreenVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createScreenVideoTrack(agora_refptr< rtc::IScreenCapturer > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IAgoraService::createMediaStreamingVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMediaStreamingVideoTrack(agora_refptr< rtc::IMediaStreamingSource > streamingSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::AgoraServiceConfiguration::logConfig
commons::LogConfig logConfig
Definition: IAgoraService.h:134
agora::rtc::PERMISSION_TYPE
PERMISSION_TYPE
Definition: AgoraBase.h:5067
agora::base::IAgoraService::createCustomVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IMediaPacketSender > source, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IAgoraService::enableExtension
virtual int enableExtension(const char *provider_name, const char *extension_name, const char *track_id=NULL, bool auto_enable_on_track=false)=0
agora::base::IAgoraService::createRtmpConnection
virtual agora_refptr< rtc::IRtmpConnection > createRtmpConnection(const rtc::RtmpConnectionConfiguration &cfg)=0
agora::base::AgoraServiceConfiguration::areaCode
unsigned int areaCode
Definition: IAgoraService.h:122
agora::base::IAgoraService::createCustomVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IVideoEncodedImageSender > videoSource, const rtc::SenderOptions &options, const char *id=OPTIONAL_NULLPTR)=0
agora::base::AgoraServiceConfiguration::serviceObserver
IServiceObserver * serviceObserver
Definition: IAgoraService.h:142
agora::base::AudioSessionConfiguration
Definition: IAgoraService.h:173
agora::CHANNEL_PROFILE_TYPE
CHANNEL_PROFILE_TYPE
Definition: AgoraBase.h:275
agora::rtc::AudioEncoderConfiguration::audioProfile
AUDIO_PROFILE_TYPE audioProfile
Definition: IAgoraService.h:55
agora::base::IAgoraService::createScreenCaptureAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createScreenCaptureAudioTrack(agora_refptr< rtc::IScreenCapturer2 > screen)=0
agora::base::IAgoraService::setAudioSessionPreset
virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario)=0
agora::base::IAgoraService::createCustomVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IVideoFrameSender > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IAgoraService::getAudioSessionConfiguration
virtual int getAudioSessionConfiguration(AudioSessionConfiguration *config)=0
AGORA_API
#define AGORA_API
Definition: AgoraBase.h:60
agora::base::IAgoraService::createMediaPlayerVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMediaPlayerVideoTrack(agora_refptr< rtc::IMediaPlayerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IAgoraService::createMediaRelayService
virtual agora_refptr< rtc::IMediaRelayService > createMediaRelayService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::base::IServiceObserver::onPermissionError
virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType)
Definition: IAgoraService.h:327
agora::base::AgoraServiceConfiguration::enableAudioDevice
bool enableAudioDevice
Definition: IAgoraService.h:101
agora::base::IAgoraService::setLogFilter
virtual int setLogFilter(unsigned int filters)=0
agora::base::AudioSessionConfiguration::SetAll
void SetAll(AudioSessionConfiguration &change)
Definition: IAgoraService.h:269
agora::base::IAgoraService::createMediaPlayerAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createMediaPlayerAudioTrack(agora_refptr< rtc::IMediaPlayerSource > audioSource)=0
agora::base::AudioSessionConfiguration::inputNumberOfChannels
Optional< int > inputNumberOfChannels
Definition: IAgoraService.h:263
agora::base::IAgoraService::createCameraVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCameraVideoTrack(agora_refptr< rtc::ICameraCapturer > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IAgoraService::addExtensionObserver
virtual int addExtensionObserver(agora::agora_refptr< agora::rtc::IMediaExtensionObserver > observer)=0
agora::commons::LogConfig
Definition: IAgoraLog.h:84
IAgoraLog.h
agora::base::IAgoraService::createRecordingDeviceAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createRecordingDeviceAudioTrack(agora_refptr< rtc::IRecordingDeviceSource > audioSource, bool enableAec)=0
agora::base::IAgoraService::atExit
virtual void atExit()=0
agora::rtc::AUDIO_SCENARIO_TYPE
AUDIO_SCENARIO_TYPE
Definition: AgoraBase.h:2328
agora::base::IAgoraService::createRtcConnection
virtual agora_refptr< rtc::IRtcConnection > createRtcConnection(const rtc::RtcConnectionConfiguration &cfg)=0
agora::base::AgoraServiceConfiguration::threadPriority
Optional< rtc::THREAD_PRIORITY_TYPE > threadPriority
Definition: IAgoraService.h:147
AgoraOptional.h
agora::base::AgoraServiceConfiguration::enableVideo
bool enableVideo
Definition: IAgoraService.h:107
agora::rtc::IAudioDeviceManagerObserver
Definition: NGIAgoraAudioDeviceManager.h:69
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource, bool enableAec)=0
agora::base::IServiceObserver::~IServiceObserver
virtual ~IServiceObserver()
Definition: IAgoraService.h:321
agora::base::AgoraServiceConfiguration::AgoraServiceConfiguration
AgoraServiceConfiguration()
Definition: IAgoraService.h:156
agora::rtc::RtcConnectionConfiguration
Definition: NGIAgoraRtcConnection.h:88
agora::base::IServiceObserver::onAudioDeviceError
virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char *description)
Definition: IAgoraService.h:332
agora::base::MIX_ENABLED
@ MIX_ENABLED
Definition: IAgoraService.h:309
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
agora::base::AgoraServiceConfiguration::useStringUid
bool useStringUid
Definition: IAgoraService.h:138
agora::rtc::AudioEncoderConfiguration
Definition: IAgoraService.h:51
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IRemoteAudioMixerSource > audioSource)=0
OPTIONAL_NULLPTR
#define OPTIONAL_NULLPTR
Definition: AgoraBase.h:79
agora::base::IAgoraService::removeExtensionObserver
virtual int removeExtensionObserver(agora::agora_refptr< agora::rtc::IMediaExtensionObserver > observer)=0
agora::base::AudioSessionConfiguration::operator==
bool operator==(const AudioSessionConfiguration &o) const
Definition: IAgoraService.h:283
agora::rtc::AUDIO_PROFILE_TYPE
AUDIO_PROFILE_TYPE
Definition: AgoraBase.h:2288
agora::base::AudioSessionConfiguration::SetFrom
static void SetFrom(Optional< T > *s, const Optional< T > &o)
Definition: IAgoraService.h:296
agora::base::AgoraServiceConfiguration::context
void * context
Definition: IAgoraService.h:113
agora::base::IAgoraService::setLogFile
virtual int setLogFile(const char *filePath, unsigned int fileSize)=0
agora::base::IAgoraService::createLocalAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createLocalAudioTrack()=0
agora::base::IAgoraService::disableExtension
virtual int disableExtension(const char *provider_name, const char *extension_name, const char *track_id=NULL)=0
agora::rtc::AREA_CODE_GLOB
@ AREA_CODE_GLOB
Definition: AgoraBase.h:4647
AGORA_CALL
#define AGORA_CALL
Definition: AgoraBase.h:61
agora::base::AudioSessionConfiguration::overrideSpeaker
Optional< bool > overrideSpeaker
Definition: IAgoraService.h:213
agora::base::AgoraServiceConfiguration::audioScenario
rtc::AUDIO_SCENARIO_TYPE audioScenario
Definition: IAgoraService.h:130
agora::base::TMixMode
TMixMode
Definition: IAgoraService.h:305
agora::base::IAgoraService::createMediaStreamingAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createMediaStreamingAudioTrack(agora_refptr< rtc::IMediaStreamingSource > streamingSource)=0
agora::base::IAgoraService::createMediaNodeFactory
virtual agora_refptr< rtc::IMediaNodeFactory > createMediaNodeFactory()=0
agora::base::IAgoraService::release
virtual int release()=0
agora::base::IEngineBase
Definition: AgoraBase.h:5297
agora::base::IAgoraService::createAudioDeviceManager
virtual agora_refptr< rtc::INGAudioDeviceManager > createAudioDeviceManager()=0
agora::Optional< rtc::THREAD_PRIORITY_TYPE >
agora::base::AudioSessionConfiguration::allowMixWithOthers
Optional< bool > allowMixWithOthers
Definition: IAgoraService.h:222
agora::rtc::AUDIO_PROFILE_DEFAULT
@ AUDIO_PROFILE_DEFAULT
Definition: AgoraBase.h:2296