Agora Java API Reference for Android
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 
13 namespace agora {
14 class ILocalDataChannel;
15 class IRemoteDataChannel;
16 struct DataChannelConfig;
17 
18 namespace rtc {
19 class IRtcConnection;
20 class IRtmpConnection;
21 class ILocalUser;
22 class IMediaDeviceManager;
23 class INGAudioDeviceManager;
24 class INGVideoDeviceManager;
25 struct TConnectionInfo;
26 struct RtcConnectionConfiguration;
27 struct RtmpConnectionConfiguration;
28 class ILocalAudioTrack;
29 class IMediaPlayerSource;
30 class IMediaStreamingSource;
31 class ICameraCapturer;
32 class IScreenCapturer;
33 class IScreenCapturer2;
34 class IAudioPcmDataSender;
35 class IAudioEncodedFrameSender;
36 class IVideoFrameSender;
37 class IVideoEncodedImageSender;
38 class IVideoSourceNode;
39 class IVideoMixerSource;
40 class IVideoFrameTransceiver;
41 class ILocalVideoTrack;
42 class IMediaNodeFactory;
43 class IRecordingDeviceSource;
44 class IRemoteAudioMixerSource;
45 class IRtmpStreamingService;
46 class IMediaPacketSender;
47 class IMediaRelayService;
48 class IAudioDeviceManager;
49 class IAudioDeviceManagerObserver;
50 
51 class IMediaExtensionObserver;
52 class IExtensionProvider;
53 class IFileUploaderService;
54 class IConfigCenter;
62  AUDIO_PROFILE_TYPE audioProfile;
63 
64  AudioEncoderConfiguration() : audioProfile(AUDIO_PROFILE_DEFAULT) {}
65 };
66 
67 } // namespace rtc
68 
69 namespace rtm {
70 class IRtmService;
71 }
72 
73 namespace base {
74 class IServiceObserver;
75 
110  void* context;
114  const char* appId;
115 
119  unsigned int areaCode;
120 
123  agora::CHANNEL_PROFILE_TYPE channelProfile;
124 
128  const char* license;
129 
133  rtc::AUDIO_SCENARIO_TYPE audioScenario;
146 
158 
165 
167  enableAudioDevice(true),
168  enableVideo(false),
169  context(NULL),
170  appId(NULL),
171  areaCode(rtc::AREA_CODE_GLOB),
172  channelProfile(agora::CHANNEL_PROFILE_LIVE_BROADCASTING),
173  license(NULL),
174  audioScenario(rtc::AUDIO_SCENARIO_DEFAULT),
175  useStringUid(false),
176  serviceObserver(NULL),
177  useExternalEglContext(false),
178  domainLimit(false){}
179 };
289 
290 #if defined(WEBRTC_IOS)
291 
294  Optional<int> category;
295 #endif
296 
297  void SetAll(const AudioSessionConfiguration& change) {
298  SetFrom(&playbackAndRecord, change.playbackAndRecord);
299  SetFrom(&chatMode, change.chatMode);
300  SetFrom(&defaultToSpeaker, change.defaultToSpeaker);
301  SetFrom(&overrideSpeaker, change.overrideSpeaker);
302  SetFrom(&allowMixWithOthers, change.allowMixWithOthers);
303  SetFrom(&allowDuckOthers, change.allowDuckOthers);
304  SetFrom(&allowBluetooth, change.allowBluetooth);
305  SetFrom(&allowBluetoothA2DP, change.allowBluetoothA2DP);
306  SetFrom(&sampleRate, change.sampleRate);
307  SetFrom(&ioBufferDuration, change.ioBufferDuration);
310 #if defined(WEBRTC_IOS)
311  SetFrom(&category, change.category);
312 #endif
313  }
314 
315  bool operator==(const AudioSessionConfiguration& o) const {
322 #if defined(WEBRTC_IOS)
324  category == o.category;
325 #else
327 #endif
328  }
329  bool operator!=(const AudioSessionConfiguration& o) const { return !(*this == o); }
330 
331  private:
332  template <typename T>
333  static void SetFrom(Optional<T>* s, const Optional<T>& o) {
334  if (o) {
335  *s = o;
336  }
337  }
338 };
342 enum TMixMode {
346  MIX_ENABLED,
350  MIX_DISABLED,
351 };
352 
357 public:
358  virtual ~IServiceObserver() {}
359 
364  virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType) {}
369  virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char* description) {}
381  virtual void onFetchConfigResult(int code, rtc::CONFIG_FETCH_TYPE configType, const char* configContent) {}
382 
383 #if defined(__ANDROID__)
384 
388  virtual void onPermissionGranted(agora::rtc::PERMISSION_TYPE permissionType) {}
389 #endif
390 
397  virtual void onLocalUserRegistered(rtc::uid_t uid, const char* userAccount) {}
398 
399 };
400 
412  public:
424  virtual int initialize(const AgoraServiceConfiguration& config) = 0;
425 
429  virtual int atExit(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
430 
438  virtual int release() = 0;
439 
449  virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
450 
459  virtual int setAudioSessionConfiguration(const AudioSessionConfiguration& config, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
460 
470 
490  virtual int setLogFile(const char* filePath, unsigned int fileSize, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
509  virtual int setLogFilter(unsigned int filters, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
510 
520  const rtc::RtcConnectionConfiguration& cfg) = 0;
521 
522  virtual agora_refptr<rtc::IRtmpConnection> createRtmpConnection(
523  const rtc::RtmpConnectionConfiguration& cfg) = 0;
524 
537 
548 
562 
577 
591  agora_refptr<rtc::IAudioPcmDataSender> audioSource, bool enableAec) = 0;
592 
606 
620  agora_refptr<rtc::IAudioEncodedFrameSender> audioSource, TMixMode mixMode) = 0;
622 
636 
648  agora_refptr<rtc::IMediaPlayerSource> audioSource) = 0;
649 
662  agora_refptr<rtc::IMediaStreamingSource> streamingSource) = 0;
663 
677  agora_refptr<rtc::IRecordingDeviceSource> audioSource, bool enableAec, bool overlap) = 0;
678 
687 
688 
697 
706 
719  agora_refptr<rtc::ICameraCapturer> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
720 
733  const char* id = OPTIONAL_NULLPTR) = 0;
734 
747  const char* id = OPTIONAL_NULLPTR) = 0;
748 
750 
761  agora_refptr<rtc::IVideoFrameSender> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
763 
778  const rtc::SenderOptions& options,
779  const char* id = OPTIONAL_NULLPTR) = 0;
780 
781 #if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
782 
795 
807  virtual agora_refptr<rtc::ILocalAudioTrack> createScreenCaptureAudioTrack(
809 #else
810 
822  agora_refptr<rtc::IScreenCapturer> screen, const char* id = OPTIONAL_NULLPTR) = 0;
823 #endif
824 
826 
837  agora_refptr<rtc::IMediaPacketSender> source, const char* id = OPTIONAL_NULLPTR) = 0;
839 
850  agora_refptr<rtc::IMediaPlayerSource> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
851 
863  agora_refptr<rtc::IMediaStreamingSource> streamingSource, const char* id = OPTIONAL_NULLPTR) = 0;
864 
865 
876  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
877 
889  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
890 
902  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
903 
912 
913  virtual int addExtensionObserver(agora::agora_refptr<agora::rtc::IMediaExtensionObserver> observer, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
914 
915  virtual int removeExtensionObserver(agora::agora_refptr<agora::rtc::IMediaExtensionObserver> observer, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
916 
925  rtc::IAudioDeviceManagerObserver *observer) = 0;
926 
935 
944  virtual const char* getExtensionId(const char* provider_name, const char* extension_name) = 0;
945 
946 #if defined (_WIN32) || defined(__linux__) || defined(__ANDROID__)
947 
954  virtual int loadExtensionProvider(const char* path, bool unload_after_use = false) = 0;
955 #endif
956 
969  virtual int enableExtension(
970  const char* provider_name, const char* extension_name, const char* track_id = NULL,
971  bool auto_enable_on_track = false, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
983  virtual int disableExtension(
984  const char* provider_name, const char* extension_name, const char* track_id = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
985 
994 
1003 
1004  virtual int32_t setLogWriter(agora::commons::ILogWriter* logWriter) = 0;
1005  virtual agora::commons::ILogWriter* releaseLogWriter() = 0;
1006 
1007  protected:
1008  virtual ~IAgoraService() {}
1009 };
1010 
1011 } // namespace base
1012 } // namespace agora
1013 
agora::base::AgoraServiceConfiguration::enableAudioDevice
bool enableAudioDevice
Definition: IAgoraService.h:98
agora::base::AudioSessionConfiguration::allowBluetoothA2DP
Optional< bool > allowBluetoothA2DP
Definition: IAgoraService.h:266
agora::base::AgoraServiceConfiguration::appId
const char * appId
Definition: IAgoraService.h:114
agora::base::AudioSessionConfiguration::chatMode
Optional< bool > chatMode
Definition: IAgoraService.h:207
agora::base::IAgoraService
Definition: IAgoraService.h:411
agora::rtc::SenderOptions
Definition: AgoraBase.h:1228
agora::commons::ILogWriter
Definition: IAgoraLog.h:50
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::base::AudioSessionConfiguration::inputNumberOfChannels
Optional< int > inputNumberOfChannels
Definition: IAgoraService.h:284
agora::base::IAgoraService::createRtmService
virtual rtm::IRtmService * createRtmService()=0
agora::base::IAgoraService::createFileUploadService
virtual agora_refptr< rtc::IFileUploaderService > createFileUploadService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::base::AgoraServiceConfiguration
Definition: IAgoraService.h:81
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, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::base::AgoraServiceConfiguration::enableAudioProcessor
bool enableAudioProcessor
Definition: IAgoraService.h:87
agora::rtm::IRtmService
Definition: IAgoraRtmService.h:637
agora::base::AudioSessionConfiguration::allowMixWithOthers
Optional< bool > allowMixWithOthers
Definition: IAgoraService.h:234
agora::base::IServiceObserver
Definition: IAgoraService.h:356
agora::base::IAgoraService::createMediaPlayerVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMediaPlayerVideoTrack(agora_refptr< rtc::IMediaPlayerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::AgoraServiceConfiguration::serviceObserver
IServiceObserver * serviceObserver
Definition: IAgoraService.h:145
agora::base::IAgoraService::createLocalDataChannel
virtual agora_refptr< ILocalDataChannel > createLocalDataChannel(const DataChannelConfig &config)=0
agora::base::AudioSessionConfiguration::outputNumberOfChannels
Optional< int > outputNumberOfChannels
Definition: IAgoraService.h:288
agora::base::IAgoraService::createRtmpStreamingService
virtual agora_refptr< rtc::IRtmpStreamingService > createRtmpStreamingService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::base::IAgoraService::disableExtension
virtual int disableExtension(const char *provider_name, const char *extension_name, const char *track_id=NULL, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::base::IAgoraService::createLocalMixedAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createLocalMixedAudioTrack()=0
agora::base::IAgoraService::createCustomVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IMediaPacketSender > source, const char *id=OPTIONAL_NULLPTR)=0
agora::base::AgoraServiceConfiguration::context
void * context
Definition: IAgoraService.h:110
agora::rtc::RtmpConnectionConfiguration
Definition: NGIAgoraRtmpConnection.h:231
agora::base::IAgoraService::createLocalAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createLocalAudioTrack()=0
createAgoraService
AGORA_API agora::base::IAgoraService *AGORA_CALL createAgoraService()
agora::base::IAgoraService::createMixedVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMixedVideoTrack(agora_refptr< rtc::IVideoMixerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::AudioSessionConfiguration::allowBluetooth
Optional< bool > allowBluetooth
Definition: IAgoraService.h:254
agora::base::IAgoraService::createMediaPlayerAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createMediaPlayerAudioTrack(agora_refptr< rtc::IMediaPlayerSource > audioSource)=0
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioEncodedFrameSender > audioSource, TMixMode mixMode)=0
agora::base::AudioSessionConfiguration::playbackAndRecord
Optional< bool > playbackAndRecord
Definition: IAgoraService.h:198
agora::base::IServiceObserver::onLocalUserRegistered
virtual void onLocalUserRegistered(rtc::uid_t uid, const char *userAccount)
Definition: IAgoraService.h:397
agora::base::IAgoraService::release
virtual int release()=0
agora::base::AgoraServiceConfiguration::domainLimit
bool domainLimit
Definition: IAgoraService.h:164
agora::base::AgoraServiceConfiguration::enableVideo
bool enableVideo
Definition: IAgoraService.h:104
agora::base::AgoraServiceConfiguration::__deprecated
Optional< rtc::THREAD_PRIORITY_TYPE > threadPriority __deprecated
Definition: IAgoraService.h:150
agora::base::IAgoraService::createScreenCaptureVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createScreenCaptureVideoTrack(agora_refptr< rtc::IScreenCapturer > screen, const char *id=OPTIONAL_NULLPTR)=0
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::AudioSessionConfiguration
Definition: IAgoraService.h:185
agora::base::IAgoraService::initialize
virtual int initialize(const AgoraServiceConfiguration &config)=0
agora::base::IAgoraService::setAudioSessionConfiguration
virtual int setAudioSessionConfiguration(const AudioSessionConfiguration &config, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::base::IAgoraService::getConfigCenter
virtual agora_refptr< rtc::IConfigCenter > getConfigCenter()=0
agora::base::IAgoraService::createCameraVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCameraVideoTrack(agora_refptr< rtc::ICameraCapturer > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IAgoraService::getAudioSessionConfiguration
virtual int getAudioSessionConfiguration(AudioSessionConfiguration *config)=0
agora::base::IAgoraService::setAudioSessionPreset
virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::base::IAgoraService::createMediaNodeFactory
virtual agora_refptr< rtc::IMediaNodeFactory > createMediaNodeFactory()=0
agora::base::IAgoraService::createAudioDeviceManagerComponent
virtual agora_refptr< rtc::IAudioDeviceManager > createAudioDeviceManagerComponent(rtc::IAudioDeviceManagerObserver *observer)=0
agora::base::IServiceObserver::onPermissionError
virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType)
Definition: IAgoraService.h:364
agora::commons::LogConfig
Definition: IAgoraLog.h:83
agora::rtc::AudioEncoderConfiguration::audioProfile
AUDIO_PROFILE_TYPE audioProfile
Definition: IAgoraService.h:62
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IMediaPacketSender > source)=0
agora::base::IAgoraService::getAgoraParameter
virtual agora_refptr< base::IAgoraParameter > getAgoraParameter()=0
agora::base::IAgoraService::createMediaStreamingAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createMediaStreamingAudioTrack(agora_refptr< rtc::IMediaStreamingSource > streamingSource)=0
agora::base::AudioSessionConfiguration::sampleRate
Optional< double > sampleRate
Definition: IAgoraService.h:273
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource, bool enableAec)=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::createDirectCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createDirectCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
agora::rtc::IAudioDeviceManagerObserver
Definition: NGIAgoraAudioDeviceManager.h:91
agora::rtc::RtcConnectionConfiguration
Definition: NGIAgoraRtcConnection.h:89
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IRemoteAudioMixerSource > audioSource)=0
agora::base::IAgoraService::createRtcConnection
virtual agora_refptr< rtc::IRtcConnection > createRtcConnection(const rtc::RtcConnectionConfiguration &cfg)=0
agora::base::IAgoraService::createRecordingDeviceAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createRecordingDeviceAudioTrack(agora_refptr< rtc::IRecordingDeviceSource > audioSource, bool enableAec, bool overlap)=0
agora::base::AgoraServiceConfiguration::logConfig
commons::LogConfig logConfig
Definition: IAgoraService.h:137
agora::base::AgoraServiceConfiguration::license
const char * license
Definition: IAgoraService.h:128
agora::base::AgoraServiceConfiguration::useStringUid
bool useStringUid
Definition: IAgoraService.h:141
agora::base::AudioSessionConfiguration::ioBufferDuration
Optional< double > ioBufferDuration
Definition: IAgoraService.h:280
agora::base::IAgoraService::createMediaRelayService
virtual agora_refptr< rtc::IMediaRelayService > createMediaRelayService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::base::AudioSessionConfiguration::allowDuckOthers
Optional< bool > allowDuckOthers
Definition: IAgoraService.h:243
agora::base::IAgoraService::setLogFile
virtual int setLogFile(const char *filePath, unsigned int fileSize, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::base::IAgoraService::setLogFilter
virtual int setLogFilter(unsigned int filters, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::base::IAgoraService::createMediaStreamingVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMediaStreamingVideoTrack(agora_refptr< rtc::IMediaStreamingSource > streamingSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::AudioSessionConfiguration::defaultToSpeaker
Optional< bool > defaultToSpeaker
Definition: IAgoraService.h:216
agora::base::AgoraServiceConfiguration::audioScenario
rtc::AUDIO_SCENARIO_TYPE audioScenario
Definition: IAgoraService.h:133
agora::base::AgoraServiceConfiguration::useExternalEglContext
bool useExternalEglContext
Definition: IAgoraService.h:157
agora::rtc::AudioEncoderConfiguration
Definition: IAgoraService.h:58
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
agora::base::IAgoraService::createTranscodedVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createTranscodedVideoTrack(agora_refptr< rtc::IVideoFrameTransceiver > transceiver, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IServiceObserver::onAudioDeviceError
virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char *description)
Definition: IAgoraService.h:369
agora::DataChannelConfig
Definition: NGIAgoraDataChannel.h:18
agora::base::IAgoraService::createVideoDeviceManager
virtual agora_refptr< rtc::INGVideoDeviceManager > createVideoDeviceManager()=0
agora::base::AudioSessionConfiguration::overrideSpeaker
Optional< bool > overrideSpeaker
Definition: IAgoraService.h:225
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::base::AgoraServiceConfiguration::areaCode
unsigned int areaCode
Definition: IAgoraService.h:119
agora::base::IServiceObserver::onFetchConfigResult
virtual void onFetchConfigResult(int code, rtc::CONFIG_FETCH_TYPE configType, const char *configContent)
Definition: IAgoraService.h:381
agora::base::IAgoraService::createAudioDeviceManager
virtual agora_refptr< rtc::INGAudioDeviceManager > createAudioDeviceManager()=0
agora::Optional< rtc::THREAD_PRIORITY_TYPE >
agora::base::AgoraServiceConfiguration::channelProfile
agora::CHANNEL_PROFILE_TYPE channelProfile
Definition: IAgoraService.h:123
agora::base::IAgoraService::atExit
virtual int atExit(aosl_ref_t ares=AOSL_REF_INVALID)=0