Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
NGIAgoraAudioDeviceManager.h
1//
2// Agora SDK
3//
4// Copyright (c) 2018 Agora.io. All rights reserved.
5//
6
7#pragma once // NOLINT(build/header_guard)
8
9#include <cstring>
10
11#include "AgoraBase.h"
12#include "AgoraRefPtr.h"
13#include <api/cpp/aosl_ares_class.h>
14namespace agora {
15namespace media {
16namespace base {
18} // namespace base
19} // namespace media
20
21namespace rtc {
22
23static const int kAdmMaxDeviceNameSize = 128;
24static const int kAdmMaxGuidSize = 128;
25static const int kIntervalInMillseconds = 200;
26
27
28#if defined(_WIN32) || (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE) || defined(__linux__)
69#endif // _WIN32 || (TARGET_OS_MAC && !TARGET_OS_IPHONE)
70
86
91{
92public:
94
100 virtual void onDeviceStateChanged() = 0;
101
112 virtual void onAudioDeviceStateChanged(const char *deviceId, int deviceType, int deviceState) = 0;
113
119 virtual void onVolumeIndication(int deviceType, int volume) = 0;
120
126 virtual void onRoutingChanged(AudioRoute route) = 0;
127
137 virtual void onAudioDeviceVolumeChanged(int deviceType, int volume, bool muted) = 0;
138};
139
141 public:
148 virtual int initRecording(const char* deviceName = NULL) = 0;
149
156 virtual int startRecording(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
157
164 virtual int stopRecording(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
165
174 virtual int registerAudioFrameObserver(media::IAudioPcmFrameSink* observer, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
175
185
192 virtual int setLoopbackDeviceParameter(const LoopbackRecordingOption &option, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
193
195};
196
204public:
214
222 virtual int setMicrophoneVolume(unsigned int volume, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
230 virtual int getMicrophoneVolume(unsigned int& volume) = 0;
238 virtual int setSpeakerVolume(unsigned int volume, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
246 virtual int getSpeakerVolume(unsigned int& volume) = 0;
256 virtual int setMicrophoneMute(bool mute, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
264 virtual int getMicrophoneMute(bool& mute) = 0;
274 virtual int setSpeakerMute(bool mute, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
282 virtual int getSpeakerMute(bool& mute) = 0;
283
291 virtual int getPlayoutAudioParameters(AudioParameters* params) const = 0;
292
300 virtual int getRecordAudioParameters(AudioParameters* params) const = 0;
301
302#if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || defined (__OHOS__)
318 virtual int setDefaultAudioRouting(AudioRoute route, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
330 virtual int changeAudioRouting(AudioRoute route, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
342 virtual int setAudioRoutingSpeakerOn(bool enable, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
354 virtual int getCurrentRouting(AudioRoute& route) = 0;
355#endif // __ANDROID__ || TARGET_OS_IPHONE || __OHOS__
356
357#if defined(_WIN32) || (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE) || defined(__linux__)
368 virtual int getNumberOfPlayoutDevices() = 0;
369
391 virtual AudioDeviceInfo getPlayoutDeviceInfo(int index) = 0;
414 virtual int setPlayoutDevice(int index, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
426 virtual int setRecordingDevice(int index, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
438 virtual int followSystemPlaybackDevice(bool enable, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
439
451 virtual int followSystemRecordingDevice(bool enable, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
452#endif // _WIN32 || (TARGET_OS_MAC && !TARGET_OS_IPHONE)
453
454#if defined(_WIN32)
466 virtual int setApplicationVolume(unsigned int volume, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
478 virtual int getApplicationVolume(unsigned int& volume) = 0;
492 virtual int setApplicationMuteState(bool mute, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
504 virtual int getApplicationMuteState(bool& mute) = 0;
527 virtual int setLoopbackDevice(int index, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
539 virtual int followSystemLoopbackDevice(bool enable, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
540#endif // _WIN32
541
553 virtual int registerObserver(IAudioDeviceManagerObserver* observer, void(*safeDeleter)(IAudioDeviceManagerObserver*) = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
562
563 virtual int setupAudioAttributeContext(void* audioAttr, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
564
565protected:
567};
568
569} //namespace rtc
570} // namespace agora
Definition AgoraOptional.h:413
Definition AgoraRefPtr.h:31
Definition AgoraRefPtr.h:44
Definition AgoraMediaBase.h:1549
Definition AgoraMediaBase.h:1250
Definition NGIAgoraAudioDeviceManager.h:91
virtual void onRoutingChanged(AudioRoute route)=0
virtual ~IAudioDeviceManagerObserver()
Definition NGIAgoraAudioDeviceManager.h:93
virtual void onAudioDeviceStateChanged(const char *deviceId, int deviceType, int deviceState)=0
virtual void onVolumeIndication(int deviceType, int volume)=0
virtual void onAudioDeviceVolumeChanged(int deviceType, int volume, bool muted)=0
Definition NGIAgoraAudioDeviceManager.h:203
virtual int registerObserver(IAudioDeviceManagerObserver *observer, void(*safeDeleter)(IAudioDeviceManagerObserver *)=NULL, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int followSystemLoopbackDevice(bool enable, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int setupAudioAttributeContext(void *audioAttr, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int setMicrophoneVolume(unsigned int volume, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int setSpeakerVolume(unsigned int volume, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getCurrentRouting(AudioRoute &route)=0
virtual int setApplicationMuteState(bool mute, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getPlayoutAudioParameters(AudioParameters *params) const =0
virtual AudioDeviceInfo getLoopbackDeviceInfo(int index)=0
virtual int setAudioRoutingSpeakerOn(bool enable, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getSpeakerMute(bool &mute)=0
virtual int changeAudioRouting(AudioRoute route, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual agora_refptr< IRecordingDeviceSource > createRecordingDeviceSource(char deviceId[kAdmMaxDeviceNameSize])=0
virtual int setApplicationVolume(unsigned int volume, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getNumberOfPlayoutDevices()=0
virtual int setLoopbackDevice(int index, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getMicrophoneVolume(unsigned int &volume)=0
virtual int followSystemPlaybackDevice(bool enable, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getNumberOfRecordingDevices()=0
virtual int setRecordingDevice(int index, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual AudioDeviceInfo getPlayoutDeviceInfo(int index)=0
virtual int setSpeakerMute(bool mute, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getMicrophoneMute(bool &mute)=0
virtual int setPlayoutDevice(int index, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getApplicationMuteState(bool &mute)=0
virtual int setDefaultAudioRouting(AudioRoute route, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual AudioDeviceInfo getRecordingDeviceInfo(int index)=0
virtual int followSystemRecordingDevice(bool enable, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int unregisterObserver(IAudioDeviceManagerObserver *observer)=0
virtual int getRecordAudioParameters(AudioParameters *params) const =0
virtual int setMicrophoneMute(bool mute, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getSpeakerVolume(unsigned int &volume)=0
~INGAudioDeviceManager()
Definition NGIAgoraAudioDeviceManager.h:566
virtual int getApplicationVolume(unsigned int &volume)=0
Definition NGIAgoraAudioDeviceManager.h:140
virtual int startRecording(aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int setLoopbackDeviceParameter(const LoopbackRecordingOption &option, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int registerAudioFrameObserver(media::IAudioPcmFrameSink *observer, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual ~IRecordingDeviceSource()
Definition NGIAgoraAudioDeviceManager.h:194
virtual int stopRecording(aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int initRecording(const char *deviceName=NULL)=0
virtual int unregisterAudioFrameObserver(media::IAudioPcmFrameSink *observer)=0
Definition NGIAgoraAudioDeviceManager.h:16
Definition content_inspect_i.h:15
static const int kIntervalInMillseconds
Definition NGIAgoraAudioDeviceManager.h:25
static const int kAdmMaxGuidSize
Definition NGIAgoraAudioDeviceManager.h:24
static const int kAdmMaxDeviceNameSize
Definition NGIAgoraAudioDeviceManager.h:23
AudioRoute
Definition AgoraMediaBase.h:156
Definition AgoraAtomicOps.h:21
Definition video_node_i.h:28
Definition NGIAgoraAudioDeviceManager.h:35
bool isCurrentSelected
Definition NGIAgoraAudioDeviceManager.h:54
char deviceName[kAdmMaxDeviceNameSize]
Definition NGIAgoraAudioDeviceManager.h:39
char deviceId[kAdmMaxGuidSize]
Definition NGIAgoraAudioDeviceManager.h:48
AudioDeviceInfo()
Definition NGIAgoraAudioDeviceManager.h:62
char deviceTypeName[kAdmMaxDeviceNameSize]
Definition NGIAgoraAudioDeviceManager.h:44
bool isPlayoutDevice
Definition NGIAgoraAudioDeviceManager.h:60
Definition AgoraMediaBase.h:217
Definition NGIAgoraAudioDeviceManager.h:76
Optional< bool > allowDeviceChange
Definition NGIAgoraAudioDeviceManager.h:84
Optional< const char * > deviceName
Definition NGIAgoraAudioDeviceManager.h:80