Agora Server Gateway SDK C++ API Reference
Loading...
Searching...
No Matches
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 IRtmpConnection;
16class ILocalUser;
17struct TConnectionInfo;
18struct RtcConnectionConfiguration;
19struct RtmpConnectionConfiguration;
20class ILocalAudioTrack;
21class IAudioPcmDataSender;
22class IAudioEncodedFrameSender;
23class IVideoFrameSender;
24class IVideoEncodedImageSender;
25class IVideoSourceNode;
26class IVideoMixerSource;
27class ILocalVideoTrack;
28class IMediaNodeFactory;
29
38 // absl::optional<DtxStatus> dtx;
39 // double bitrate_priority = 1.0;
40 // absl::optional<int> ptime;
41 // FEC parameters
42 // Rtx parameters
43
45};
46
47} // namespace rtc
48
49namespace signaling {
50class ISignalingEngine;
51}
52
53namespace base {
54class IEngineBase;
55class IServiceObserver;
56
87
91 void* context;
93
96 const char* appId;
97
103 unsigned int areaCode;
104
121
124 IServiceObserver* serviceObserver;
125
135 bool useExternalEglContext;
137
147
149 const char* configDir;
151 const char* dataDir;
156 const char* parameters;
157
159 enableAudioDevice(true),
160 enableVideo(false),
161 context(NULL),
162 appId(NULL),
163 areaCode(rtc::AREA_CODE_GLOB),
165 audioScenario(rtc::AUDIO_SCENARIO_DEFAULT),
166 useStringUid(false),
167 serviceObserver(NULL),
168 useExternalEglContext(false),
169 domainLimit(false),
170 configDir(NULL),
171 dataDir(NULL),
172 parameters(NULL){}
173};
175
178struct AudioSessionConfiguration {
191 Optional<bool> playbackAndRecord;
200 Optional<bool> chatMode;
209 Optional<bool> defaultToSpeaker;
218 Optional<bool> overrideSpeaker;
227 Optional<bool> allowMixWithOthers;
238 Optional<bool> allowBluetooth;
250 Optional<bool> allowBluetoothA2DP;
257 Optional<double> sampleRate;
264 Optional<double> ioBufferDuration;
268 Optional<int> inputNumberOfChannels;
272 Optional<int> outputNumberOfChannels;
273
274 void SetAll(AudioSessionConfiguration& change) {
275 SetFrom(&playbackAndRecord, change.playbackAndRecord);
276 SetFrom(&chatMode, change.chatMode);
277 SetFrom(&defaultToSpeaker, change.defaultToSpeaker);
278 SetFrom(&overrideSpeaker, change.overrideSpeaker);
279 SetFrom(&allowMixWithOthers, change.allowMixWithOthers);
280 SetFrom(&allowBluetooth, change.allowBluetooth);
281 SetFrom(&allowBluetoothA2DP, change.allowBluetoothA2DP);
282 SetFrom(&sampleRate, change.sampleRate);
283 SetFrom(&ioBufferDuration, change.ioBufferDuration);
284 SetFrom(&inputNumberOfChannels, change.inputNumberOfChannels);
285 SetFrom(&outputNumberOfChannels, change.outputNumberOfChannels);
286 }
287
288 bool operator==(const AudioSessionConfiguration& o) const {
289 return playbackAndRecord == o.playbackAndRecord && chatMode == o.chatMode &&
290 defaultToSpeaker == o.defaultToSpeaker && overrideSpeaker == o.overrideSpeaker &&
291 allowMixWithOthers == o.allowMixWithOthers && allowBluetooth == o.allowBluetooth &&
292 allowBluetoothA2DP == o.allowBluetoothA2DP && sampleRate == o.sampleRate &&
293 ioBufferDuration == o.ioBufferDuration &&
294 inputNumberOfChannels == o.inputNumberOfChannels &&
295 outputNumberOfChannels == o.outputNumberOfChannels;
296 }
297 bool operator!=(const AudioSessionConfiguration& o) const { return !(*this == o); }
298
299 private:
300 template <typename T>
301 static void SetFrom(Optional<T>* s, const Optional<T>& o) {
302 if (o) {
303 *s = o;
304 }
305 }
306};
308
321
334
339
341 : ccMode(rtc::CC_ENABLED),
342 codecType(rtc::VIDEO_CODEC_H264),
343 targetBitrate(6500) {}
344};
346
349class IServiceObserver {
350public:
351 virtual ~IServiceObserver() {}
352
357 virtual void onPermissionError(agora::rtc::PERMISSION_TYPE permissionType) {}
362 virtual void onAudioDeviceError(ERROR_CODE_TYPE error, const char* description) {}
363};
365
376 public:
385 virtual int initialize(const AgoraServiceConfiguration& config) = 0;
386
388
391 virtual void atExit(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
393
402 virtual int release() = 0;
403
414 virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
415
417
426 virtual int setAudioSessionConfiguration(const AudioSessionConfiguration& config, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
427
436 virtual int getAudioSessionConfiguration(AudioSessionConfiguration* config) = 0;
438
458 virtual int setLogFile(const char* filePath, unsigned int fileSize, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
478 virtual int setLogFilter(unsigned int filters, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
479
488 virtual agora_refptr<rtc::IRtcConnection> createRtcConnection(
489 const rtc::RtcConnectionConfiguration& cfg) = 0;
490
501 virtual agora_refptr<rtc::IRtmpConnection> createRtmpConnection(
502 const rtc::RtmpConnectionConfiguration& cfg) = 0;
503
515 virtual agora_refptr<rtc::ILocalAudioTrack> createLocalAudioTrack() = 0;
516
528 virtual agora_refptr<rtc::ILocalAudioTrack> createCustomAudioTrack(
529 agora_refptr<rtc::IAudioPcmDataSender> audioSource) = 0;
530
543 virtual agora_refptr<rtc::ILocalAudioTrack> createDirectCustomAudioTrack(
544 agora_refptr<rtc::IAudioPcmDataSender> audioSource) = 0;
545
559 virtual agora_refptr<rtc::ILocalAudioTrack> createCustomAudioTrack(
560 agora_refptr<rtc::IAudioEncodedFrameSender> audioSource, TMixMode mixMode, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
561
569 virtual agora_refptr<rtc::IMediaNodeFactory> createMediaNodeFactory() = 0;
570
583 virtual agora_refptr<rtc::ILocalVideoTrack> createMixedVideoTrack(agora_refptr<rtc::IVideoMixerSource> videoSource,
584 const char* id = OPTIONAL_NULLPTR) = 0;
585
597 virtual agora_refptr<rtc::ILocalVideoTrack> createCustomVideoTrack(
598 agora_refptr<rtc::IVideoFrameSender> videoSource, const char* id = OPTIONAL_NULLPTR) = 0;
599
600
613 virtual agora_refptr<rtc::ILocalVideoTrack> createCustomVideoTrack(
614 agora_refptr<rtc::IVideoEncodedImageSender> videoSource,
615 const rtc::SenderOptions& options,
616 const char* id = OPTIONAL_NULLPTR) = 0;
628 virtual agora_refptr<base::IAgoraParameter> getAgoraParameter() = 0;
629
635 virtual uint64_t getNtpWallTimeInMs() = 0;
636
637 protected:
638 virtual ~IAgoraService() {}
639};
640
641} // namespace base
642} // namespace agora
643
#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:375
virtual agora_refptr< rtc::ILocalAudioTrack > createDirectCustomAudioTrack(agora_refptr< rtc::IAudioPcmDataSender > audioSource)=0
virtual int setLogFile(const char *filePath, unsigned int fileSize, aosl_ref_t ares=AOSL_REF_INVALID)=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 agora_refptr< rtc::ILocalVideoTrack > createMixedVideoTrack(agora_refptr< rtc::IVideoMixerSource > videoSource, const char *id=OPTIONAL_NULLPTR)=0
virtual int setAudioSessionPreset(agora::rtc::AUDIO_SCENARIO_TYPE scenario, aosl_ref_t ares=AOSL_REF_INVALID)=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 agora_refptr< rtc::ILocalAudioTrack > createLocalAudioTrack()=0
virtual ~IAgoraService()
Definition IAgoraService.h:638
virtual uint64_t getNtpWallTimeInMs()=0
virtual agora_refptr< base::IAgoraParameter > getAgoraParameter()=0
virtual agora_refptr< rtc::IRtcConnection > createRtcConnection(const rtc::RtcConnectionConfiguration &cfg)=0
virtual int setLogFilter(unsigned int filters, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::ILocalAudioTrack > createCustomAudioTrack(agora_refptr< rtc::IAudioEncodedFrameSender > audioSource, TMixMode mixMode, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< rtc::IRtmpConnection > createRtmpConnection(const rtc::RtmpConnectionConfiguration &cfg)=0
AGORA_API agora::base::IAgoraService *AGORA_CALL createAgoraService()
TMixMode
Definition IAgoraService.h:311
@ MIX_ENABLED
Definition IAgoraService.h:315
@ MIX_DISABLED
Definition IAgoraService.h:319
AUDIO_SCENARIO_TYPE
Definition AgoraBase.h:2581
TCcMode
Definition AgoraBase.h:4922
AUDIO_PROFILE_TYPE
Definition AgoraBase.h:2541
@ AUDIO_PROFILE_DEFAULT
Definition AgoraBase.h:2547
VIDEO_CODEC_TYPE
Definition AgoraBase.h:1552
Definition AgoraBase.h:86
bool operator!=(const Optional< T > &lhs, const Optional< U > &rhs)
Definition AgoraOptional.h:692
CHANNEL_PROFILE_TYPE
Definition AgoraBase.h:306
@ CHANNEL_PROFILE_LIVE_BROADCASTING
Definition AgoraBase.h:318
Definition IAgoraService.h:62
agora::CHANNEL_PROFILE_TYPE channelProfile
Definition IAgoraService.h:107
commons::LogConfig logConfig
Definition IAgoraService.h:115
bool domainLimit
Definition IAgoraService.h:146
const char * dataDir
Definition IAgoraService.h:151
unsigned int areaCode
Definition IAgoraService.h:103
bool useStringUid
Definition IAgoraService.h:119
bool enableAudioDevice
Definition IAgoraService.h:79
const char * appId
Definition IAgoraService.h:96
bool enableAudioProcessor
Definition IAgoraService.h:68
const char * configDir
Definition IAgoraService.h:149
rtc::AUDIO_SCENARIO_TYPE audioScenario
Definition IAgoraService.h:111
bool enableVideo
Definition IAgoraService.h:85
AgoraServiceConfiguration()
Definition IAgoraService.h:158
const char * parameters
Definition IAgoraService.h:156
Definition IAgoraService.h:325
rtc::VIDEO_CODEC_TYPE codecType
Definition IAgoraService.h:333
rtc::TCcMode ccMode
Definition IAgoraService.h:329
SenderOptions()
Definition IAgoraService.h:340
int targetBitrate
Definition IAgoraService.h:338
Definition IAgoraLog.h:127
Definition IAgoraService.h:33
AudioEncoderConfiguration()
Definition IAgoraService.h:44
AUDIO_PROFILE_TYPE audioProfile
Definition IAgoraService.h:37
Definition NGIAgoraRtcConnection.h:55
Definition NGIAgoraRtmpConnection.h:208