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 
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 IAudioPcmDataSender;
28 class IAudioEncodedFrameSender;
29 class IVideoFrameSender;
30 class IVideoEncodedImageSender;
31 class IVideoSourceNode;
32 class IVideoMixerSource;
33 class IVideoFrameTransceiver;
34 class ILocalVideoTrack;
35 class IMediaNodeFactory;
36 class IRecordingDeviceSource;
37 class IRemoteAudioMixerSource;
38 class IRtmpStreamingService;
39 class IMediaPacketSender;
40 class IMediaRelayService;
41 class IAudioDeviceManager;
42 class IAudioDeviceManagerObserver;
43 
44 class IMediaExtensionObserver;
45 class IExtensionProvider;
46 class IFileUploaderService;
54  AUDIO_PROFILE_TYPE audioProfile;
55  // absl::optional<DtxStatus> dtx;
56  // double bitrate_priority = 1.0;
57  // absl::optional<int> ptime;
58  // FEC parameters
59  // Rtx parameters
60 
61  AudioEncoderConfiguration() : audioProfile(AUDIO_PROFILE_DEFAULT) {}
62 };
63 
64 } // namespace rtc
65 
66 namespace signaling {
67 class ISignalingEngine;
68 }
69 
70 namespace rtm {
71 class IRtmService;
72 }
73 
74 namespace base {
75 class IEngineBase;
76 class IServiceObserver;
77 
112  void* context;
116  const char* appId;
117 
121  unsigned int areaCode;
122 
125  agora::CHANNEL_PROFILE_TYPE channelProfile;
129  rtc::AUDIO_SCENARIO_TYPE audioScenario;
142 
154 
156  enableAudioDevice(true),
157  enableVideo(false),
158  context(NULL),
159  appId(NULL),
160  areaCode(rtc::AREA_CODE_GLOB),
161  channelProfile(agora::CHANNEL_PROFILE_LIVE_BROADCASTING),
162  audioScenario(rtc::AUDIO_SCENARIO_DEFAULT),
163  useStringUid(false),
164  serviceObserver(NULL),
165  useExternalEglContext(false){}
166 };
267 
268  void SetAll(AudioSessionConfiguration& change) {
269  SetFrom(&playbackAndRecord, change.playbackAndRecord);
270  SetFrom(&chatMode, change.chatMode);
271  SetFrom(&defaultToSpeaker, change.defaultToSpeaker);
272  SetFrom(&overrideSpeaker, change.overrideSpeaker);
273  SetFrom(&allowMixWithOthers, change.allowMixWithOthers);
274  SetFrom(&allowBluetooth, change.allowBluetooth);
275  SetFrom(&allowBluetoothA2DP, change.allowBluetoothA2DP);
276  SetFrom(&sampleRate, change.sampleRate);
277  SetFrom(&ioBufferDuration, change.ioBufferDuration);
280  }
281 
282  bool operator==(const AudioSessionConfiguration& o) const {
290  }
291  bool operator!=(const AudioSessionConfiguration& o) const { return !(*this == o); }
292 
293  private:
294  template <typename T>
295  static void SetFrom(Optional<T>* s, const Optional<T>& o) {
296  if (o) {
297  *s = o;
298  }
299  }
300 };
304 enum TMixMode {
308  MIX_ENABLED,
312  MIX_DISABLED,
313 };
314 
319 public:
320  virtual ~IServiceObserver() {}
321 
326  virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType) {}
331  virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char* description) {}
332 };
333 
345  public:
357  virtual int initialize(const AgoraServiceConfiguration& config) = 0;
358 
362  virtual void atExit() = 0;
363 
371  virtual int release() = 0;
372 
382  virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario) = 0;
383 
393 
403 
423  virtual int setLogFile(const char* filePath, unsigned int fileSize) = 0;
442  virtual int setLogFilter(unsigned int filters) = 0;
443 
453  const rtc::RtcConnectionConfiguration& cfg) = 0;
454 
455  virtual agora_refptr<rtc::IRtmpConnection> createRtmpConnection(
456  const rtc::RtmpConnectionConfiguration& cfg) = 0;
457 
470 
484 
499 
513 
527  agora_refptr<rtc::IAudioPcmDataSender> audioSource, bool enableAec) = 0;
528 
544  agora_refptr<rtc::IAudioPcmDataSender> audioReverseSource, int audioSourceDelay) = 0;
545 
559 
573  agora_refptr<rtc::IAudioEncodedFrameSender> audioSource, TMixMode mixMode) = 0;
575 
589 
601  agora_refptr<rtc::IMediaPlayerSource> audioSource) = 0;
602 
615  agora_refptr<rtc::IMediaStreamingSource> streamingSource) = 0;
616 
629  agora_refptr<rtc::IRecordingDeviceSource> audioSource, bool enableAec) = 0;
630 
639 
648 
661  agora_refptr<rtc::ICameraCapturer> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
662 
674  agora_refptr<rtc::IScreenCapturer> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
675 
688  const char* id = OPTIONAL_NULLPTR) = 0;
689 
702  const char* id = OPTIONAL_NULLPTR) = 0;
703 
705 
716  agora_refptr<rtc::IVideoFrameSender> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
718 
733  const rtc::SenderOptions& options,
734  const char* id = OPTIONAL_NULLPTR) = 0;
735 
737 
748  agora_refptr<rtc::IMediaPacketSender> source, const char* id = OPTIONAL_NULLPTR) = 0;
750 
761  agora_refptr<rtc::IMediaPlayerSource> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
762 
774  agora_refptr<rtc::IMediaStreamingSource> streamingSource, const char* id = OPTIONAL_NULLPTR) = 0;
775 
776 
787  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
788 
800  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
801 
813  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
814 
823 
824  virtual int addExtensionObserver(agora::agora_refptr<agora::rtc::IMediaExtensionObserver> observer) = 0;
825 
826  virtual int removeExtensionObserver(agora::agora_refptr<agora::rtc::IMediaExtensionObserver> observer) = 0;
827 
836  rtc::IAudioDeviceManagerObserver *observer) = 0;
845  virtual const char* getExtensionId(const char* provider_name, const char* extension_name) = 0;
846 
847 #if defined (_WIN32) || defined(__linux__) || defined(__ANDROID__)
848 
854  virtual int loadExtensionProvider(const char* path) = 0;
855 #endif
856 
869  virtual int enableExtension(
870  const char* provider_name, const char* extension_name, const char* track_id = NULL,
871  bool auto_enable_on_track = false) = 0;
883  virtual int disableExtension(
884  const char* provider_name, const char* extension_name, const char* track_id = NULL) = 0;
885 
886  protected:
887  virtual ~IAgoraService() {}
888 };
889 
890 } // namespace base
891 } // namespace agora
892 
agora::base::IAgoraService::createDirectCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createDirectCustomAudioTrack(agora_refptr< rtc::IAudioEncodedFrameSender > audioSource)=0
agora::base::AgoraServiceConfiguration::enableAudioDevice
bool enableAudioDevice
Definition: IAgoraService.h:100
agora::base::AudioSessionConfiguration::allowBluetoothA2DP
Optional< bool > allowBluetoothA2DP
Definition: IAgoraService.h:244
agora::base::AgoraServiceConfiguration::appId
const char * appId
Definition: IAgoraService.h:116
agora::base::AudioSessionConfiguration::chatMode
Optional< bool > chatMode
Definition: IAgoraService.h:194
agora::base::IAgoraService
Definition: IAgoraService.h:344
agora::rtc::SenderOptions
Definition: AgoraBase.h:1534
agora::base::IAgoraService::disableExtension
virtual int disableExtension(const char *provider_name, const char *extension_name, const char *track_id=NULL)=0
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::base::AudioSessionConfiguration::inputNumberOfChannels
Optional< int > inputNumberOfChannels
Definition: IAgoraService.h:262
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:83
agora::base::AgoraServiceConfiguration::enableAudioProcessor
bool enableAudioProcessor
Definition: IAgoraService.h:89
agora::rtm::IRtmService
Definition: IAgoraRtmService.h:638
agora::base::AudioSessionConfiguration::allowMixWithOthers
Optional< bool > allowMixWithOthers
Definition: IAgoraService.h:221
agora::base::IServiceObserver
Definition: IAgoraService.h:318
agora::base::IAgoraService::createMediaPlayerVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMediaPlayerVideoTrack(agora_refptr< rtc::IMediaPlayerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
agora::base::IAgoraService::setAudioSessionConfiguration
virtual int setAudioSessionConfiguration(const AudioSessionConfiguration &config)=0
agora::base::AgoraServiceConfiguration::serviceObserver
IServiceObserver * serviceObserver
Definition: IAgoraService.h:141
agora::base::AudioSessionConfiguration::outputNumberOfChannels
Optional< int > outputNumberOfChannels
Definition: IAgoraService.h:266
agora::base::IAgoraService::createRtmpStreamingService
virtual agora_refptr< rtc::IRtmpStreamingService > createRtmpStreamingService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=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:112
agora::rtc::RtmpConnectionConfiguration
Definition: NGIAgoraRtmpConnection.h:213
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:232
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:185
agora::base::IAgoraService::setLogFile
virtual int setLogFile(const char *filePath, unsigned int fileSize)=0
agora::base::IAgoraService::release
virtual int release()=0
agora::base::AgoraServiceConfiguration::enableVideo
bool enableVideo
Definition: IAgoraService.h:106
agora::base::IAgoraService::createRecordingDeviceAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createRecordingDeviceAudioTrack(agora_refptr< rtc::IRecordingDeviceSource > audioSource, bool enableAec)=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:172
agora::base::IAgoraService::initialize
virtual int initialize(const AgoraServiceConfiguration &config)=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::setLogFilter
virtual int setLogFilter(unsigned int filters)=0
agora::base::IAgoraService::getAudioSessionConfiguration
virtual int getAudioSessionConfiguration(AudioSessionConfiguration *config)=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:326
agora::commons::LogConfig
Definition: IAgoraLog.h:84
agora::rtc::AudioEncoderConfiguration::audioProfile
AUDIO_PROFILE_TYPE audioProfile
Definition: IAgoraService.h:54
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IMediaPacketSender > source)=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:251
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::base::AgoraServiceConfiguration::threadPriority
Optional< rtc::THREAD_PRIORITY_TYPE > threadPriority
Definition: IAgoraService.h:146
agora::rtc::IAudioDeviceManagerObserver
Definition: NGIAgoraAudioDeviceManager.h:69
agora::rtc::RtcConnectionConfiguration
Definition: NGIAgoraRtcConnection.h:136
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::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::AgoraServiceConfiguration::logConfig
commons::LogConfig logConfig
Definition: IAgoraService.h:133
agora::base::AgoraServiceConfiguration::useStringUid
bool useStringUid
Definition: IAgoraService.h:137
agora::base::AudioSessionConfiguration::ioBufferDuration
Optional< double > ioBufferDuration
Definition: IAgoraService.h:258
agora::base::IAgoraService::createMediaRelayService
virtual agora_refptr< rtc::IMediaRelayService > createMediaRelayService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::base::IAgoraService::setAudioSessionPreset
virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario)=0
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource, agora_refptr< rtc::IAudioPcmDataSender > audioReverseSource, int audioSourceDelay)=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:203
agora::base::AgoraServiceConfiguration::audioScenario
rtc::AUDIO_SCENARIO_TYPE audioScenario
Definition: IAgoraService.h:129
agora::base::AgoraServiceConfiguration::useExternalEglContext
bool useExternalEglContext
Definition: IAgoraService.h:153
agora::rtc::AudioEncoderConfiguration
Definition: IAgoraService.h:50
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=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::atExit
virtual void atExit()=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:331
agora::base::AudioSessionConfiguration::overrideSpeaker
Optional< bool > overrideSpeaker
Definition: IAgoraService.h:212
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:121
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:125