Server Gateway SDK v3.8.202.20 for Linux C++
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
12namespace agora {
13namespace rtc {
14class IRtcConnection;
15class ILocalUser;
16struct TConnectionInfo;
17struct RtcConnectionConfiguration;
18class ILocalAudioTrack;
19class IAudioPcmDataSender;
20class IAudioEncodedFrameSender;
21class IVideoFrameSender;
22class IVideoEncodedImageSender;
23class IVideoSourceNode;
24class IVideoMixerSource;
25class ILocalVideoTrack;
26class IMediaNodeFactory;
27
36 // absl::optional<DtxStatus> dtx;
37 // double bitrate_priority = 1.0;
38 // absl::optional<int> ptime;
39 // FEC parameters
40 // Rtx parameters
41
43};
44
45} // namespace rtc
46
47namespace signaling {
48class ISignalingEngine;
49}
50
51namespace base {
52class IEngineBase;
53class IServiceObserver;
54
85
89 void* context;
91
94 const char* appId;
95
101 unsigned int areaCode;
102
119
122 IServiceObserver* serviceObserver;
123
133 bool useExternalEglContext;
136 enableAudioDevice(true),
137 enableVideo(false),
138 context(NULL),
139 appId(NULL),
143 useStringUid(false),
144 serviceObserver(NULL),
145 useExternalEglContext(false){}
146};
148
151struct AudioSessionConfiguration {
164 Optional<bool> playbackAndRecord;
173 Optional<bool> chatMode;
182 Optional<bool> defaultToSpeaker;
191 Optional<bool> overrideSpeaker;
200 Optional<bool> allowMixWithOthers;
211 Optional<bool> allowBluetooth;
223 Optional<bool> allowBluetoothA2DP;
230 Optional<double> sampleRate;
237 Optional<double> ioBufferDuration;
241 Optional<int> inputNumberOfChannels;
245 Optional<int> outputNumberOfChannels;
246
247 void SetAll(AudioSessionConfiguration& change) {
248 SetFrom(&playbackAndRecord, change.playbackAndRecord);
249 SetFrom(&chatMode, change.chatMode);
250 SetFrom(&defaultToSpeaker, change.defaultToSpeaker);
251 SetFrom(&overrideSpeaker, change.overrideSpeaker);
252 SetFrom(&allowMixWithOthers, change.allowMixWithOthers);
253 SetFrom(&allowBluetooth, change.allowBluetooth);
254 SetFrom(&allowBluetoothA2DP, change.allowBluetoothA2DP);
255 SetFrom(&sampleRate, change.sampleRate);
256 SetFrom(&ioBufferDuration, change.ioBufferDuration);
257 SetFrom(&inputNumberOfChannels, change.inputNumberOfChannels);
258 SetFrom(&outputNumberOfChannels, change.outputNumberOfChannels);
259 }
260
261 bool operator==(const AudioSessionConfiguration& o) const {
262 return playbackAndRecord == o.playbackAndRecord && chatMode == o.chatMode &&
263 defaultToSpeaker == o.defaultToSpeaker && overrideSpeaker == o.overrideSpeaker &&
264 allowMixWithOthers == o.allowMixWithOthers && allowBluetooth == o.allowBluetooth &&
265 allowBluetoothA2DP == o.allowBluetoothA2DP && sampleRate == o.sampleRate &&
266 ioBufferDuration == o.ioBufferDuration &&
267 inputNumberOfChannels == o.inputNumberOfChannels &&
268 outputNumberOfChannels == o.outputNumberOfChannels;
269 }
270 bool operator!=(const AudioSessionConfiguration& o) const { return !(*this == o); }
271
272 private:
273 template <typename T>
274 static void SetFrom(Optional<T>* s, const Optional<T>& o) {
275 if (o) {
276 *s = o;
277 }
278 }
279};
281
293};
294
307
312
314 : ccMode(rtc::CC_ENABLED),
316 targetBitrate(6500) {}
317};
319
322class IServiceObserver {
323public:
324 virtual ~IServiceObserver() {}
325
330 virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType) {}
335 virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char* description) {}
336};
338
349 public:
358 virtual int initialize(const AgoraServiceConfiguration& config) = 0;
359
361
364 virtual void atExit() = 0;
366
374 virtual int release() = 0;
375
386
388
396 virtual int setAudioSessionConfiguration(const AudioSessionConfiguration& config) = 0;
397
406 virtual int getAudioSessionConfiguration(AudioSessionConfiguration* config) = 0;
408
427 virtual int setLogFile(const char* filePath, unsigned int fileSize) = 0;
446 virtual int setLogFilter(unsigned int filters) = 0;
447
456 virtual agora_refptr<rtc::IRtcConnection> createRtcConnection(
457 const rtc::RtcConnectionConfiguration& cfg) = 0;
458
470 virtual agora_refptr<rtc::ILocalAudioTrack> createCustomAudioTrack(
471 agora_refptr<rtc::IAudioPcmDataSender> audioSource) = 0;
472
485 virtual agora_refptr<rtc::ILocalAudioTrack> createDirectCustomAudioTrack(
486 agora_refptr<rtc::IAudioPcmDataSender> audioSource) = 0;
487
489
501 virtual agora_refptr<rtc::ILocalAudioTrack> createCustomAudioTrack(
502 agora_refptr<rtc::IAudioPcmDataSender> audioSource, bool enableAec) = 0;
504
506
519 virtual agora_refptr<rtc::ILocalAudioTrack> createCustomAudioTrack(
520 agora_refptr<rtc::IAudioPcmDataSender> audioSource,
521 agora_refptr<rtc::IAudioPcmDataSender> audioReverseSource, int audioSourceDelay) = 0;
523
535 virtual agora_refptr<rtc::ILocalAudioTrack> createCustomAudioTrack(
536 agora_refptr<rtc::IAudioEncodedFrameSender> audioSource, TMixMode mixMode) = 0;
537
545 virtual agora_refptr<rtc::IMediaNodeFactory> createMediaNodeFactory() = 0;
546
559 virtual agora_refptr<rtc::ILocalVideoTrack> createMixedVideoTrack(agora_refptr<rtc::IVideoMixerSource> videoSource,
560 const char* id = OPTIONAL_NULLPTR) = 0;
561
573 virtual agora_refptr<rtc::ILocalVideoTrack> createCustomVideoTrack(
574 agora_refptr<rtc::IVideoFrameSender> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
575
576
589 virtual agora_refptr<rtc::ILocalVideoTrack> createCustomVideoTrack(
590 agora_refptr<rtc::IVideoEncodedImageSender> videoSource,
591 const rtc::SenderOptions& options,
592 const char* id = OPTIONAL_NULLPTR) = 0;
593
594 protected:
595 virtual ~IAgoraService() {}
596};
597
598} // namespace base
599} // namespace agora
600
#define AGORA_CALL
Definition: AgoraBase.h:65
#define AGORA_API
Definition: AgoraBase.h:64
#define OPTIONAL_NULLPTR
Definition: AgoraBase.h:81
Definition: AgoraOptional.h:413
Definition: IAgoraService.h:348
virtual agora_refptr< rtc::ILocalAudioTrack > createDirectCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createCustomVideoTrack(agora_refptr< rtc::IVideoFrameSender > videoSource, const char *id=OPTIONAL_NULLPTR)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
virtual int setLogFilter(unsigned int filters)=0
virtual agora_refptr< rtc::ILocalVideoTrack > createMixedVideoTrack(agora_refptr< rtc::IVideoMixerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
virtual int setLogFile(const char *filePath, unsigned int fileSize)=0
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::IMediaNodeFactory > createMediaNodeFactory()=0
virtual ~IAgoraService()
Definition: IAgoraService.h:595
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioEncodedFrameSender > audioSource, TMixMode mixMode)=0
virtual agora_refptr< rtc::IRtcConnection > createRtcConnection(const rtc::RtcConnectionConfiguration &cfg)=0
AGORA_API agora::base::IAgoraService *AGORA_CALL createAgoraService()
TMixMode
Definition: IAgoraService.h:284
@ MIX_ENABLED
Definition: IAgoraService.h:288
@ MIX_DISABLED
Definition: IAgoraService.h:292
AUDIO_SCENARIO_TYPE
Definition: AgoraBase.h:2518
@ AUDIO_SCENARIO_DEFAULT
Definition: AgoraBase.h:2522
TCcMode
Definition: AgoraBase.h:4783
@ CC_ENABLED
Definition: AgoraBase.h:4787
AUDIO_PROFILE_TYPE
Definition: AgoraBase.h:2476
@ AUDIO_PROFILE_DEFAULT
Definition: AgoraBase.h:2484
VIDEO_CODEC_TYPE
Definition: AgoraBase.h:1504
@ VIDEO_CODEC_H264
Definition: AgoraBase.h:1516
@ AREA_CODE_GLOB
Definition: AgoraBase.h:4219
Definition: AgoraBase.h:85
bool operator!=(const Optional< T > &lhs, const Optional< U > &rhs)
Definition: AgoraOptional.h:692
bool operator==(const Optional< T > &lhs, const Optional< U > &rhs)
Definition: AgoraOptional.h:683
CHANNEL_PROFILE_TYPE
Definition: AgoraBase.h:275
@ CHANNEL_PROFILE_LIVE_BROADCASTING
Definition: AgoraBase.h:287
Definition: IAgoraService.h:60
agora::CHANNEL_PROFILE_TYPE channelProfile
Definition: IAgoraService.h:105
commons::LogConfig logConfig
Definition: IAgoraService.h:113
unsigned int areaCode
Definition: IAgoraService.h:101
bool useStringUid
Definition: IAgoraService.h:117
bool enableAudioDevice
Definition: IAgoraService.h:77
const char * appId
Definition: IAgoraService.h:94
bool enableAudioProcessor
Definition: IAgoraService.h:66
rtc::AUDIO_SCENARIO_TYPE audioScenario
Definition: IAgoraService.h:109
bool enableVideo
Definition: IAgoraService.h:83
AgoraServiceConfiguration()
Definition: IAgoraService.h:135
Definition: IAgoraService.h:298
rtc::VIDEO_CODEC_TYPE codecType
Definition: IAgoraService.h:306
rtc::TCcMode ccMode
Definition: IAgoraService.h:302
SenderOptions()
Definition: IAgoraService.h:313
int targetBitrate
Definition: IAgoraService.h:311
Definition: IAgoraLog.h:123
Definition: IAgoraService.h:31
AudioEncoderConfiguration()
Definition: IAgoraService.h:42
AUDIO_PROFILE_TYPE audioProfile
Definition: IAgoraService.h:35
Definition: NGIAgoraRtcConnection.h:107