Agora C++ API Reference for All Platforms
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 
14 namespace agora {
15 namespace media {
16 namespace base {
18 } // namespace base
19 } // namespace media
20 
21 namespace rtc {
22 
23 static const int kAdmMaxDeviceNameSize = 128;
24 static const int kAdmMaxGuidSize = 128;
25 static const int kIntervalInMillseconds = 200;
26 
27 
28 #if defined(_WIN32) || (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE)
29 
56 
58  isPlayoutDevice(true) {
59  memset(deviceName, 0, sizeof(deviceName));
60  memset(deviceId, 0, sizeof(deviceId));
61  }
62 };
63 #endif // _WIN32 || (TARGET_OS_MAC && !TARGET_OS_IPHONE)
64 
79 };
80 
85 {
86 public:
88 
94  virtual void onDeviceStateChanged() = 0;
95 
106  virtual void onAudioDeviceStateChanged(const char *deviceId, int deviceType, int deviceState) = 0;
107 
113  virtual void onVolumeIndication(int deviceType, int volume) = 0;
114 
120  virtual void onRoutingChanged(AudioRoute route) = 0;
121 
131  virtual void onAudioDeviceVolumeChanged(int deviceType, int volume, bool muted) = 0;
132 };
133 
135  public:
142  virtual int initRecording(const char* deviceName = NULL) = 0;
143 
150  virtual int startRecording() = 0;
151 
158  virtual int stopRecording() = 0;
159 
169 
179 
186  virtual int setLoopbackDeviceParameter(const LoopbackRecordingOption &option) = 0;
187 
189 };
190 
198 public:
208 
216  virtual int setMicrophoneVolume(unsigned int volume) = 0;
224  virtual int getMicrophoneVolume(unsigned int& volume) = 0;
232  virtual int setSpeakerVolume(unsigned int volume) = 0;
240  virtual int getSpeakerVolume(unsigned int& volume) = 0;
250  virtual int setMicrophoneMute(bool mute) = 0;
258  virtual int getMicrophoneMute(bool& mute) = 0;
268  virtual int setSpeakerMute(bool mute) = 0;
276  virtual int getSpeakerMute(bool& mute) = 0;
277 
285  virtual int getPlayoutAudioParameters(AudioParameters* params) const = 0;
286 
294  virtual int getRecordAudioParameters(AudioParameters* params) const = 0;
295 
296 #if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
297 
312  virtual int setDefaultAudioRouting(AudioRoute route) = 0;
324  virtual int changeAudioRouting(AudioRoute route) = 0;
336  virtual int getCurrentRouting(AudioRoute& route) = 0;
337 #endif // __ANDROID__ || TARGET_OS_IPHONE
338 
339 #if defined(_WIN32) || (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE)
340 
350  virtual int getNumberOfPlayoutDevices() = 0;
351 
362  virtual int getNumberOfRecordingDevices() = 0;
373  virtual AudioDeviceInfo getPlayoutDeviceInfo(int index) = 0;
384  virtual AudioDeviceInfo getRecordingDeviceInfo(int index) = 0;
396  virtual int setPlayoutDevice(int index) = 0;
408  virtual int setRecordingDevice(int index) = 0;
420  virtual int followSystemPlaybackDevice(bool enable) = 0;
421 
433  virtual int followSystemRecordingDevice(bool enable) = 0;
434 #endif // _WIN32 || (TARGET_OS_MAC && !TARGET_OS_IPHONE)
435 
436 #if defined(_WIN32)
437 
448  virtual int setApplicationVolume(unsigned int volume) = 0;
460  virtual int getApplicationVolume(unsigned int& volume) = 0;
474  virtual int setApplicationMuteState(bool mute) = 0;
486  virtual int getApplicationMuteState(bool& mute) = 0;
497  virtual AudioDeviceInfo getLoopbackDeviceInfo(int index) = 0;
509  virtual int setLoopbackDevice(int index) = 0;
521  virtual int followSystemLoopbackDevice(bool enable) = 0;
522 #endif // _WIN32
523 
535  virtual int registerObserver(IAudioDeviceManagerObserver* observer, void(*safeDeleter)(IAudioDeviceManagerObserver*) = NULL) = 0;
544 
545 protected:
547 };
548 
549 } //namespace rtc
550 } // namespace agora
agora::rtc::INGAudioDeviceManager::setMicrophoneVolume
virtual int setMicrophoneVolume(unsigned int volume)=0
agora::rtc::INGAudioDeviceManager::setSpeakerMute
virtual int setSpeakerMute(bool mute)=0
agora::rtc::AudioDeviceInfo::isPlayoutDevice
bool isPlayoutDevice
Definition: NGIAgoraAudioDeviceManager.h:55
agora::rtc::IAudioDeviceManagerObserver::onAudioDeviceStateChanged
virtual void onAudioDeviceStateChanged(const char *deviceId, int deviceType, int deviceState)=0
agora::rtc::INGAudioDeviceManager::getNumberOfRecordingDevices
virtual int getNumberOfRecordingDevices()=0
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:101
agora::rtc::IAudioDeviceManagerObserver::onDeviceStateChanged
virtual void onDeviceStateChanged()=0
agora::rtc::INGAudioDeviceManager::getRecordAudioParameters
virtual int getRecordAudioParameters(AudioParameters *params) const =0
agora::rtc::AudioDeviceInfo::isCurrentSelected
bool isCurrentSelected
Definition: NGIAgoraAudioDeviceManager.h:49
agora::rtc::INGAudioDeviceManager::setApplicationVolume
virtual int setApplicationVolume(unsigned int volume)=0
agora::rtc::IRecordingDeviceSource::startRecording
virtual int startRecording()=0
agora::rtc::IAudioDeviceManagerObserver::onVolumeIndication
virtual void onVolumeIndication(int deviceType, int volume)=0
agora::rtc::INGAudioDeviceManager::getRecordingDeviceInfo
virtual AudioDeviceInfo getRecordingDeviceInfo(int index)=0
agora::rtc::LoopbackRecordingOption::deviceName
Optional< const char * > deviceName
Definition: NGIAgoraAudioDeviceManager.h:74
agora::rtc::INGAudioDeviceManager::getCurrentRouting
virtual int getCurrentRouting(AudioRoute &route)=0
agora::rtc::IAudioDeviceManagerObserver::onAudioDeviceVolumeChanged
virtual void onAudioDeviceVolumeChanged(int deviceType, int volume, bool muted)=0
agora::rtc::INGAudioDeviceManager::followSystemLoopbackDevice
virtual int followSystemLoopbackDevice(bool enable)=0
agora::rtc::INGAudioDeviceManager::getMicrophoneMute
virtual int getMicrophoneMute(bool &mute)=0
agora::rtc::IRecordingDeviceSource::registerAudioFrameObserver
virtual int registerAudioFrameObserver(media::base::IAudioFrameObserver *observer)=0
agora::rtc::AudioDeviceInfo::AudioDeviceInfo
AudioDeviceInfo()
Definition: NGIAgoraAudioDeviceManager.h:57
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::LoopbackRecordingOption
Definition: NGIAgoraAudioDeviceManager.h:70
agora::rtc::IAudioDeviceManagerObserver::~IAudioDeviceManagerObserver
virtual ~IAudioDeviceManagerObserver()
Definition: NGIAgoraAudioDeviceManager.h:87
agora::rtc::INGAudioDeviceManager::getPlayoutDeviceInfo
virtual AudioDeviceInfo getPlayoutDeviceInfo(int index)=0
agora::rtc::INGAudioDeviceManager::setLoopbackDevice
virtual int setLoopbackDevice(int index)=0
agora::rtc::IRecordingDeviceSource::~IRecordingDeviceSource
virtual ~IRecordingDeviceSource()
Definition: NGIAgoraAudioDeviceManager.h:188
agora::rtc::INGAudioDeviceManager::getSpeakerVolume
virtual int getSpeakerVolume(unsigned int &volume)=0
agora::rtc::IRecordingDeviceSource
Definition: NGIAgoraAudioDeviceManager.h:134
agora::rtc::INGAudioDeviceManager::setPlayoutDevice
virtual int setPlayoutDevice(int index)=0
agora::rtc::INGAudioDeviceManager::getApplicationMuteState
virtual int getApplicationMuteState(bool &mute)=0
agora::rtc::INGAudioDeviceManager::setRecordingDevice
virtual int setRecordingDevice(int index)=0
agora::rtc::INGAudioDeviceManager::getApplicationVolume
virtual int getApplicationVolume(unsigned int &volume)=0
agora::rtc::IRecordingDeviceSource::unregisterAudioFrameObserver
virtual int unregisterAudioFrameObserver(media::base::IAudioFrameObserver *observer)=0
agora::rtc::INGAudioDeviceManager::unregisterObserver
virtual int unregisterObserver(IAudioDeviceManagerObserver *observer)=0
agora::rtc::INGAudioDeviceManager::setMicrophoneMute
virtual int setMicrophoneMute(bool mute)=0
agora::rtc::INGAudioDeviceManager::getPlayoutAudioParameters
virtual int getPlayoutAudioParameters(AudioParameters *params) const =0
agora::rtc::INGAudioDeviceManager::~INGAudioDeviceManager
~INGAudioDeviceManager()
Definition: NGIAgoraAudioDeviceManager.h:546
agora::rtc::INGAudioDeviceManager::setSpeakerVolume
virtual int setSpeakerVolume(unsigned int volume)=0
agora::rtc::INGAudioDeviceManager::setApplicationMuteState
virtual int setApplicationMuteState(bool mute)=0
agora::rtc::INGAudioDeviceManager::getSpeakerMute
virtual int getSpeakerMute(bool &mute)=0
agora::rtc::INGAudioDeviceManager::registerObserver
virtual int registerObserver(IAudioDeviceManagerObserver *observer, void(*safeDeleter)(IAudioDeviceManagerObserver *)=NULL)=0
agora::rtc::INGAudioDeviceManager::setDefaultAudioRouting
virtual int setDefaultAudioRouting(AudioRoute route)=0
agora::rtc::INGAudioDeviceManager::followSystemPlaybackDevice
virtual int followSystemPlaybackDevice(bool enable)=0
agora::rtc::INGAudioDeviceManager
Definition: NGIAgoraAudioDeviceManager.h:197
agora::rtc::kAdmMaxDeviceNameSize
static const int kAdmMaxDeviceNameSize
Definition: NGIAgoraAudioDeviceManager.h:23
agora::rtc::LoopbackRecordingOption::allowDeviceChange
Optional< bool > allowDeviceChange
Definition: NGIAgoraAudioDeviceManager.h:78
agora::rtc::IAudioDeviceManagerObserver
Definition: NGIAgoraAudioDeviceManager.h:85
agora::media::base::IAudioFrameObserver
Definition: AgoraMediaBase.h:391
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::INGAudioDeviceManager::getMicrophoneVolume
virtual int getMicrophoneVolume(unsigned int &volume)=0
agora::rtc::INGAudioDeviceManager::createRecordingDeviceSource
virtual agora_refptr< IRecordingDeviceSource > createRecordingDeviceSource(char deviceId[kAdmMaxDeviceNameSize])=0
agora::rtc::kAdmMaxGuidSize
static const int kAdmMaxGuidSize
Definition: NGIAgoraAudioDeviceManager.h:24
agora::rtc::IAudioDeviceManagerObserver::onRoutingChanged
virtual void onRoutingChanged(AudioRoute route)=0
agora::rtc::INGAudioDeviceManager::getLoopbackDeviceInfo
virtual AudioDeviceInfo getLoopbackDeviceInfo(int index)=0
agora::rtc::AudioDeviceInfo::deviceName
char deviceName[kAdmMaxDeviceNameSize]
Definition: NGIAgoraAudioDeviceManager.h:39
agora::rtc::IRecordingDeviceSource::setLoopbackDeviceParameter
virtual int setLoopbackDeviceParameter(const LoopbackRecordingOption &option)=0
agora::rtc::INGAudioDeviceManager::changeAudioRouting
virtual int changeAudioRouting(AudioRoute route)=0
agora::rtc::AudioDeviceInfo::deviceId
char deviceId[kAdmMaxGuidSize]
Definition: NGIAgoraAudioDeviceManager.h:43
agora::rtc::kIntervalInMillseconds
static const int kIntervalInMillseconds
Definition: NGIAgoraAudioDeviceManager.h:25
agora::rtc::IRecordingDeviceSource::stopRecording
virtual int stopRecording()=0
agora::rtc::AudioDeviceInfo
Definition: NGIAgoraAudioDeviceManager.h:35
agora::rtc::IRecordingDeviceSource::initRecording
virtual int initRecording(const char *deviceName=NULL)=0
agora::rtc::INGAudioDeviceManager::followSystemRecordingDevice
virtual int followSystemRecordingDevice(bool enable)=0
rtc
Definition: video_node_i.h:25
agora::rtc::INGAudioDeviceManager::getNumberOfPlayoutDevices
virtual int getNumberOfPlayoutDevices()=0
agora::Optional< const char * >
agora::rtc::AudioRoute
AudioRoute
Definition: AgoraMediaBase.h:44