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 #include "IAgoraLog.h"
8 #include "AgoraBase.h"
9 #include "AgoraOptional.h"
10 #include "NGIAgoraExtensionProvider.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 ICameraCapturer;
25 class IScreenCapturer;
26 class IAudioPcmDataSender;
27 class IAudioEncodedFrameSender;
28 class IVideoFrameSender;
29 class IVideoEncodedImageSender;
30 class IVideoSourceNode;
31 class IVideoMixerSource;
32 class IVideoFrameTransceiver;
33 class ILocalVideoTrack;
34 class IMediaNodeFactory;
35 class IRecordingDeviceSource;
36 class IRemoteAudioMixerSource;
37 class IRtmpStreamingService;
38 class IMediaPacketSender;
39 class IMediaRelayService;
40 
41 class IRtcEngine;
49  AUDIO_PROFILE_TYPE audioProfile;
50  // absl::optional<DtxStatus> dtx;
51  // double bitrate_priority = 1.0;
52  // absl::optional<int> ptime;
53  // FEC parameters
54  // Rtx parameters
55 
56  AudioEncoderConfiguration() : audioProfile(AUDIO_PROFILE_DEFAULT) {}
57 };
58 
59 } // namespace rtc
60 
61 namespace signaling {
62 class ISignalingEngine;
63 }
64 
65 namespace rtm {
66 class IRtmService;
67 }
68 
69 namespace base {
70 class IEngineBase;
71 class IServiceObserver;
72 
107  void* context;
111  const char* appId;
112 
116  unsigned int areaCode;
117 
120  agora::CHANNEL_PROFILE_TYPE channelProfile;
124  rtc::AUDIO_SCENARIO_TYPE audioScenario;
137 
139  enableAudioDevice(true),
140  enableVideo(false),
141  context(NULL),
142  appId(NULL),
143  areaCode(rtc::AREA_CODE_GLOB),
144  channelProfile(agora::CHANNEL_PROFILE_LIVE_BROADCASTING),
145  audioScenario(rtc::AUDIO_SCENARIO_DEFAULT),
146  useStringUid(false),
147  serviceObserver(NULL) {}
148 };
249 
250  void SetAll(AudioSessionConfiguration& change) {
251  SetFrom(&playbackAndRecord, change.playbackAndRecord);
252  SetFrom(&chatMode, change.chatMode);
253  SetFrom(&defaultToSpeaker, change.defaultToSpeaker);
254  SetFrom(&overrideSpeaker, change.overrideSpeaker);
255  SetFrom(&allowMixWithOthers, change.allowMixWithOthers);
256  SetFrom(&allowBluetooth, change.allowBluetooth);
257  SetFrom(&allowBluetoothA2DP, change.allowBluetoothA2DP);
258  SetFrom(&sampleRate, change.sampleRate);
259  SetFrom(&ioBufferDuration, change.ioBufferDuration);
262  }
263 
264  bool operator==(const AudioSessionConfiguration& o) const {
272  }
273  bool operator!=(const AudioSessionConfiguration& o) const { return !(*this == o); }
274 
275  private:
276  template <typename T>
277  static void SetFrom(Optional<T>* s, const Optional<T>& o) {
278  if (o) {
279  *s = o;
280  }
281  }
282 };
286 enum TMixMode {
290  MIX_ENABLED,
294  MIX_DISABLED,
295 };
299 enum TCcMode {
303  CC_ENABLED,
307  CC_DISABLED,
308 };
309 
317  TCcMode ccMode;
321  rtc::VIDEO_CODEC_TYPE codecType;
322 
380 
381  SenderOptions()
382  : ccMode(CC_ENABLED),
383  codecType(rtc::VIDEO_CODEC_H264),
384  targetBitrate(6500) {}
385 };
386 
391 public:
392  virtual ~IServiceObserver() {}
393 
398  virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType) {}
403  virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char* description) {}
404 };
405 
417  public:
429  virtual int initialize(const AgoraServiceConfiguration& config) = 0;
430 
434  virtual void atExit() = 0;
435 
443  virtual int release() = 0;
444 
454  virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario) = 0;
455 
465 
475 
495  virtual int setLogFile(const char* filePath, unsigned int fileSize) = 0;
514  virtual int setLogFilter(unsigned int filters) = 0;
515 
525  const rtc::RtcConnectionConfiguration& cfg) = 0;
526 
527  virtual agora_refptr<rtc::IRtmpConnection> createRtmpConnection(
528  const rtc::RtmpConnectionConfiguration& cfg) = 0;
529 
542 
556 
570 
584  agora_refptr<rtc::IAudioEncodedFrameSender> audioSource, TMixMode mixMode) = 0;
586 
600 
612  agora_refptr<rtc::IMediaPlayerSource> audioSource) = 0;
613 
626  agora_refptr<rtc::IRecordingDeviceSource> audioSource, bool enableAec) = 0;
627 
636 
645 
658  agora_refptr<rtc::ICameraCapturer> videoSource) = 0;
659 
671  agora_refptr<rtc::IScreenCapturer> videoSource) = 0;
672 
685 
698 
700 
711  agora_refptr<rtc::IVideoFrameSender> videoSource) = 0;
713 
728  SenderOptions& options) = 0;
729 
731 
744 
755  agora_refptr<rtc::IMediaPlayerSource> videoSource) = 0;
756 
767  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
768 
780  agora_refptr<rtc::IRtcConnection> rtcConnection, const char* appId) = 0;
781 
790 
791  virtual int addExtensionObserver(agora::agora_refptr<agora::rtc::IMediaExtensionObserver> observer) = 0;
792 
793  virtual int removeExtensionObserver(agora::agora_refptr<agora::rtc::IMediaExtensionObserver> observer) = 0;
794 
795  virtual int addExtensionProvider(const char* id,
797 
798  virtual int removeExtensionProvider(const char* id) = 0;
799 
800  protected:
801  virtual ~IAgoraService() {}
802 };
803 
804 } // namespace base
805 } // namespace agora
806 
agora::base::AgoraServiceConfiguration::enableAudioDevice
bool enableAudioDevice
Definition: IAgoraService.h:95
agora::base::AudioSessionConfiguration::allowBluetoothA2DP
Optional< bool > allowBluetoothA2DP
Definition: IAgoraService.h:226
agora::base::IAgoraService::createCustomVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IVideoFrameSender > videoSource)=0
agora::base::AgoraServiceConfiguration::appId
const char * appId
Definition: IAgoraService.h:111
agora::base::AudioSessionConfiguration::chatMode
Optional< bool > chatMode
Definition: IAgoraService.h:176
agora::base::IAgoraService
Definition: IAgoraService.h:416
agora::base::IAgoraService::createTranscodedVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createTranscodedVideoTrack(agora_refptr< rtc::IVideoFrameTransceiver > transceiver)=0
agora::base::IAgoraService::createCustomVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IMediaPacketSender > source)=0
agora::agora_refptr
Definition: AgoraRefPtr.h:34
agora::base::AudioSessionConfiguration::inputNumberOfChannels
Optional< int > inputNumberOfChannels
Definition: IAgoraService.h:244
agora::base::IAgoraService::createRtmService
virtual rtm::IRtmService * createRtmService()=0
agora::base::IAgoraService::createMixedVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMixedVideoTrack(agora_refptr< rtc::IVideoMixerSource > videoSource)=0
agora::base::AgoraServiceConfiguration
Definition: IAgoraService.h:78
agora::base::AgoraServiceConfiguration::enableAudioProcessor
bool enableAudioProcessor
Definition: IAgoraService.h:84
agora::rtm::IRtmService
Definition: IAgoraRtmService.h:635
agora::base::AudioSessionConfiguration::allowMixWithOthers
Optional< bool > allowMixWithOthers
Definition: IAgoraService.h:203
agora::base::IServiceObserver
Definition: IAgoraService.h:390
agora::base::IAgoraService::createCameraVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCameraVideoTrack(agora_refptr< rtc::ICameraCapturer > videoSource)=0
agora::base::IAgoraService::setAudioSessionConfiguration
virtual int setAudioSessionConfiguration(const AudioSessionConfiguration &config)=0
agora::base::AgoraServiceConfiguration::serviceObserver
IServiceObserver * serviceObserver
Definition: IAgoraService.h:136
agora::base::AudioSessionConfiguration::outputNumberOfChannels
Optional< int > outputNumberOfChannels
Definition: IAgoraService.h:248
agora::base::IAgoraService::createRtmpStreamingService
virtual agora_refptr< rtc::IRtmpStreamingService > createRtmpStreamingService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::base::AgoraServiceConfiguration::context
void * context
Definition: IAgoraService.h:107
agora::rtc::RtmpConnectionConfiguration
Definition: NGIAgoraRtmpConnection.h:192
agora::base::IAgoraService::createLocalAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createLocalAudioTrack()=0
createAgoraService
AGORA_API agora::base::IAgoraService *AGORA_CALL createAgoraService()
agora::base::SenderOptions::codecType
rtc::VIDEO_CODEC_TYPE codecType
Definition: IAgoraService.h:321
agora::base::AudioSessionConfiguration::allowBluetooth
Optional< bool > allowBluetooth
Definition: IAgoraService.h:214
agora::base::IAgoraService::createMediaPlayerVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createMediaPlayerVideoTrack(agora_refptr< rtc::IMediaPlayerSource > videoSource)=0
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:167
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:101
agora::base::IAgoraService::createRecordingDeviceAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createRecordingDeviceAudioTrack(agora_refptr< rtc::IRecordingDeviceSource > audioSource, bool enableAec)=0
agora::base::AudioSessionConfiguration
Definition: IAgoraService.h:154
agora::base::IAgoraService::initialize
virtual int initialize(const AgoraServiceConfiguration &config)=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::createCustomVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IVideoEncodedImageSender > videoSource, SenderOptions &options)=0
agora::base::IAgoraService::createMediaNodeFactory
virtual agora_refptr< rtc::IMediaNodeFactory > createMediaNodeFactory()=0
agora::base::IServiceObserver::onPermissionError
virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType)
Definition: IAgoraService.h:398
agora::commons::LogConfig
Definition: IAgoraLog.h:66
agora::rtc::AudioEncoderConfiguration::audioProfile
AUDIO_PROFILE_TYPE audioProfile
Definition: IAgoraService.h:49
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IMediaPacketSender > source)=0
agora::base::AudioSessionConfiguration::sampleRate
Optional< double > sampleRate
Definition: IAgoraService.h:233
agora::rtc::RtcConnectionConfiguration
Definition: NGIAgoraRtcConnection.h:94
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::AgoraServiceConfiguration::logConfig
commons::LogConfig logConfig
Definition: IAgoraService.h:128
agora::base::AgoraServiceConfiguration::useStringUid
bool useStringUid
Definition: IAgoraService.h:132
agora::base::AudioSessionConfiguration::ioBufferDuration
Optional< double > ioBufferDuration
Definition: IAgoraService.h:240
agora::base::IAgoraService::createMediaRelayService
virtual agora_refptr< rtc::IMediaRelayService > createMediaRelayService(agora_refptr< rtc::IRtcConnection > rtcConnection, const char *appId)=0
agora::base::SenderOptions::targetBitrate
int targetBitrate
Definition: IAgoraService.h:379
agora::base::IAgoraService::setAudioSessionPreset
virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario)=0
agora::base::AudioSessionConfiguration::defaultToSpeaker
Optional< bool > defaultToSpeaker
Definition: IAgoraService.h:185
agora::base::AgoraServiceConfiguration::audioScenario
rtc::AUDIO_SCENARIO_TYPE audioScenario
Definition: IAgoraService.h:124
agora::base::SenderOptions
Definition: IAgoraService.h:313
agora::rtc::AudioEncoderConfiguration
Definition: IAgoraService.h:45
agora::base::IAgoraService::createCustomAudioTrack
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
agora::base::IAgoraService::atExit
virtual void atExit()=0
agora::base::IServiceObserver::onAudioDeviceError
virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char *description)
Definition: IAgoraService.h:403
agora::base::IAgoraService::createScreenVideoTrack
virtual agora_refptr< rtc::ILocalVideoTrack > createScreenVideoTrack(agora_refptr< rtc::IScreenCapturer > videoSource)=0
agora::base::AudioSessionConfiguration::overrideSpeaker
Optional< bool > overrideSpeaker
Definition: IAgoraService.h:194
agora::base::AgoraServiceConfiguration::areaCode
unsigned int areaCode
Definition: IAgoraService.h:116
agora::base::IAgoraService::createAudioDeviceManager
virtual agora_refptr< rtc::INGAudioDeviceManager > createAudioDeviceManager()=0
agora::base::SenderOptions::ccMode
TCcMode ccMode
Definition: IAgoraService.h:317
agora::Optional< bool >
agora::base::AgoraServiceConfiguration::channelProfile
agora::CHANNEL_PROFILE_TYPE channelProfile
Definition: IAgoraService.h:120