| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #ifndef WEBRTC_AUDIO_DEVICE_AUDIO_DEVICE_GENERIC_H | 11 #ifndef WEBRTC_AUDIO_DEVICE_AUDIO_DEVICE_GENERIC_H |
| 12 #define WEBRTC_AUDIO_DEVICE_AUDIO_DEVICE_GENERIC_H | 12 #define WEBRTC_AUDIO_DEVICE_AUDIO_DEVICE_GENERIC_H |
| 13 | 13 |
| 14 #include "webrtc/modules/audio_device/audio_device_buffer.h" | 14 #include "webrtc/modules/audio_device/audio_device_buffer.h" |
| 15 #include "webrtc/modules/audio_device/include/audio_device.h" | 15 #include "webrtc/modules/audio_device/include/audio_device.h" |
| 16 | 16 |
| 17 namespace webrtc { | 17 namespace webrtc { |
| 18 | 18 |
| 19 class AudioDeviceGeneric | 19 class AudioDeviceGeneric { |
| 20 { | |
| 21 public: | 20 public: |
| 21 // Retrieve the currently utilized audio layer |
| 22 virtual int32_t ActiveAudioLayer( |
| 23 AudioDeviceModule::AudioLayer& audioLayer) const = 0; |
| 22 | 24 |
| 23 » // Retrieve the currently utilized audio layer | 25 // Main initializaton and termination |
| 24 » virtual int32_t ActiveAudioLayer( | 26 virtual int32_t Init() = 0; |
| 25 AudioDeviceModule::AudioLayer& audioLayer) const = 0; | 27 virtual int32_t Terminate() = 0; |
| 28 virtual bool Initialized() const = 0; |
| 26 | 29 |
| 27 » // Main initializaton and termination | 30 // Device enumeration |
| 28 virtual int32_t Init() = 0; | 31 virtual int16_t PlayoutDevices() = 0; |
| 29 virtual int32_t Terminate() = 0; | 32 virtual int16_t RecordingDevices() = 0; |
| 30 » virtual bool Initialized() const = 0; | 33 virtual int32_t PlayoutDeviceName(uint16_t index, |
| 34 char name[kAdmMaxDeviceNameSize], |
| 35 char guid[kAdmMaxGuidSize]) = 0; |
| 36 virtual int32_t RecordingDeviceName(uint16_t index, |
| 37 char name[kAdmMaxDeviceNameSize], |
| 38 char guid[kAdmMaxGuidSize]) = 0; |
| 31 | 39 |
| 32 » // Device enumeration | 40 // Device selection |
| 33 » virtual int16_t PlayoutDevices() = 0; | 41 virtual int32_t SetPlayoutDevice(uint16_t index) = 0; |
| 34 » virtual int16_t RecordingDevices() = 0; | 42 virtual int32_t SetPlayoutDevice( |
| 35 » virtual int32_t PlayoutDeviceName( | 43 AudioDeviceModule::WindowsDeviceType device) = 0; |
| 36 uint16_t index, | 44 virtual int32_t SetRecordingDevice(uint16_t index) = 0; |
| 37 char name[kAdmMaxDeviceNameSize], | 45 virtual int32_t SetRecordingDevice( |
| 38 char guid[kAdmMaxGuidSize]) = 0; | 46 AudioDeviceModule::WindowsDeviceType device) = 0; |
| 39 virtual int32_t RecordingDeviceName( | |
| 40 uint16_t index, | |
| 41 char name[kAdmMaxDeviceNameSize], | |
| 42 char guid[kAdmMaxGuidSize]) = 0; | |
| 43 | 47 |
| 44 » // Device selection | 48 // Audio transport initialization |
| 45 » virtual int32_t SetPlayoutDevice(uint16_t index) = 0; | 49 virtual int32_t PlayoutIsAvailable(bool& available) = 0; |
| 46 » virtual int32_t SetPlayoutDevice( | 50 virtual int32_t InitPlayout() = 0; |
| 47 AudioDeviceModule::WindowsDeviceType device) = 0; | 51 virtual bool PlayoutIsInitialized() const = 0; |
| 48 virtual int32_t SetRecordingDevice(uint16_t index) = 0; | 52 virtual int32_t RecordingIsAvailable(bool& available) = 0; |
| 49 » virtual int32_t SetRecordingDevice( | 53 virtual int32_t InitRecording() = 0; |
| 50 AudioDeviceModule::WindowsDeviceType device) = 0; | 54 virtual bool RecordingIsInitialized() const = 0; |
| 51 | 55 |
| 52 » // Audio transport initialization | 56 // Audio transport control |
| 53 virtual int32_t PlayoutIsAvailable(bool& available) = 0; | 57 virtual int32_t StartPlayout() = 0; |
| 54 virtual int32_t InitPlayout() = 0; | 58 virtual int32_t StopPlayout() = 0; |
| 55 virtual bool PlayoutIsInitialized() const = 0; | 59 virtual bool Playing() const = 0; |
| 56 virtual int32_t RecordingIsAvailable(bool& available) = 0; | 60 virtual int32_t StartRecording() = 0; |
| 57 virtual int32_t InitRecording() = 0; | 61 virtual int32_t StopRecording() = 0; |
| 58 virtual bool RecordingIsInitialized() const = 0; | 62 virtual bool Recording() const = 0; |
| 59 | 63 |
| 60 » // Audio transport control | 64 // Microphone Automatic Gain Control (AGC) |
| 61 virtual int32_t StartPlayout() = 0; | 65 virtual int32_t SetAGC(bool enable) = 0; |
| 62 virtual int32_t StopPlayout() = 0; | 66 virtual bool AGC() const = 0; |
| 63 virtual bool Playing() const = 0; | |
| 64 » virtual int32_t StartRecording() = 0; | |
| 65 virtual int32_t StopRecording() = 0; | |
| 66 virtual bool Recording() const = 0; | |
| 67 | 67 |
| 68 // Microphone Automatic Gain Control (AGC) | 68 // Volume control based on the Windows Wave API (Windows only) |
| 69 virtual int32_t SetAGC(bool enable) = 0; | 69 virtual int32_t SetWaveOutVolume(uint16_t volumeLeft, |
| 70 virtual bool AGC() const = 0; | 70 uint16_t volumeRight) = 0; |
| 71 virtual int32_t WaveOutVolume(uint16_t& volumeLeft, |
| 72 uint16_t& volumeRight) const = 0; |
| 71 | 73 |
| 72 // Volume control based on the Windows Wave API (Windows only) | 74 // Audio mixer initialization |
| 73 virtual int32_t SetWaveOutVolume(uint16_t volumeLeft, | 75 virtual int32_t InitSpeaker() = 0; |
| 74 uint16_t volumeRight) = 0; | 76 virtual bool SpeakerIsInitialized() const = 0; |
| 75 virtual int32_t WaveOutVolume(uint16_t& volumeLeft, | 77 virtual int32_t InitMicrophone() = 0; |
| 76 uint16_t& volumeRight) const = 0; | 78 virtual bool MicrophoneIsInitialized() const = 0; |
| 77 | 79 |
| 78 » // Audio mixer initialization | 80 // Speaker volume controls |
| 79 virtual int32_t InitSpeaker() = 0; | 81 virtual int32_t SpeakerVolumeIsAvailable(bool& available) = 0; |
| 80 virtual bool SpeakerIsInitialized() const = 0; | 82 virtual int32_t SetSpeakerVolume(uint32_t volume) = 0; |
| 81 virtual int32_t InitMicrophone() = 0; | 83 virtual int32_t SpeakerVolume(uint32_t& volume) const = 0; |
| 82 virtual bool MicrophoneIsInitialized() const = 0; | 84 virtual int32_t MaxSpeakerVolume(uint32_t& maxVolume) const = 0; |
| 85 virtual int32_t MinSpeakerVolume(uint32_t& minVolume) const = 0; |
| 86 virtual int32_t SpeakerVolumeStepSize(uint16_t& stepSize) const = 0; |
| 83 | 87 |
| 84 // Speaker volume controls | 88 // Microphone volume controls |
| 85 » virtual int32_t SpeakerVolumeIsAvailable(bool& available) = 0; | 89 virtual int32_t MicrophoneVolumeIsAvailable(bool& available) = 0; |
| 86 virtual int32_t SetSpeakerVolume(uint32_t volume) = 0; | 90 virtual int32_t SetMicrophoneVolume(uint32_t volume) = 0; |
| 87 virtual int32_t SpeakerVolume(uint32_t& volume) const = 0; | 91 virtual int32_t MicrophoneVolume(uint32_t& volume) const = 0; |
| 88 virtual int32_t MaxSpeakerVolume(uint32_t& maxVolume) const = 0; | 92 virtual int32_t MaxMicrophoneVolume(uint32_t& maxVolume) const = 0; |
| 89 virtual int32_t MinSpeakerVolume(uint32_t& minVolume) const = 0; | 93 virtual int32_t MinMicrophoneVolume(uint32_t& minVolume) const = 0; |
| 90 virtual int32_t SpeakerVolumeStepSize( | 94 virtual int32_t MicrophoneVolumeStepSize(uint16_t& stepSize) const = 0; |
| 91 uint16_t& stepSize) const = 0; | |
| 92 | 95 |
| 93 // Microphone volume controls | 96 // Speaker mute control |
| 94 » virtual int32_t MicrophoneVolumeIsAvailable(bool& available) = 0; | 97 virtual int32_t SpeakerMuteIsAvailable(bool& available) = 0; |
| 95 virtual int32_t SetMicrophoneVolume(uint32_t volume) = 0; | 98 virtual int32_t SetSpeakerMute(bool enable) = 0; |
| 96 virtual int32_t MicrophoneVolume(uint32_t& volume) const = 0; | 99 virtual int32_t SpeakerMute(bool& enabled) const = 0; |
| 97 virtual int32_t MaxMicrophoneVolume( | |
| 98 uint32_t& maxVolume) const = 0; | |
| 99 virtual int32_t MinMicrophoneVolume( | |
| 100 uint32_t& minVolume) const = 0; | |
| 101 virtual int32_t MicrophoneVolumeStepSize( | |
| 102 uint16_t& stepSize) const = 0; | |
| 103 | 100 |
| 104 // Speaker mute control | 101 // Microphone mute control |
| 105 virtual int32_t SpeakerMuteIsAvailable(bool& available) = 0; | 102 virtual int32_t MicrophoneMuteIsAvailable(bool& available) = 0; |
| 106 virtual int32_t SetSpeakerMute(bool enable) = 0; | 103 virtual int32_t SetMicrophoneMute(bool enable) = 0; |
| 107 virtual int32_t SpeakerMute(bool& enabled) const = 0; | 104 virtual int32_t MicrophoneMute(bool& enabled) const = 0; |
| 108 | 105 |
| 109 » // Microphone mute control | 106 // Microphone boost control |
| 110 virtual int32_t MicrophoneMuteIsAvailable(bool& available) = 0; | 107 virtual int32_t MicrophoneBoostIsAvailable(bool& available) = 0; |
| 111 virtual int32_t SetMicrophoneMute(bool enable) = 0; | 108 virtual int32_t SetMicrophoneBoost(bool enable) = 0; |
| 112 virtual int32_t MicrophoneMute(bool& enabled) const = 0; | 109 virtual int32_t MicrophoneBoost(bool& enabled) const = 0; |
| 113 | 110 |
| 114 // Microphone boost control | 111 // Stereo support |
| 115 virtual int32_t MicrophoneBoostIsAvailable(bool& available) = 0; | 112 virtual int32_t StereoPlayoutIsAvailable(bool& available) = 0; |
| 116 » virtual int32_t SetMicrophoneBoost(bool enable) = 0; | 113 virtual int32_t SetStereoPlayout(bool enable) = 0; |
| 117 virtual int32_t MicrophoneBoost(bool& enabled) const = 0; | 114 virtual int32_t StereoPlayout(bool& enabled) const = 0; |
| 115 virtual int32_t StereoRecordingIsAvailable(bool& available) = 0; |
| 116 virtual int32_t SetStereoRecording(bool enable) = 0; |
| 117 virtual int32_t StereoRecording(bool& enabled) const = 0; |
| 118 | 118 |
| 119 // Stereo support | 119 // Delay information and control |
| 120 virtual int32_t StereoPlayoutIsAvailable(bool& available) = 0; | 120 virtual int32_t SetPlayoutBuffer(const AudioDeviceModule::BufferType type, |
| 121 » virtual int32_t SetStereoPlayout(bool enable) = 0; | 121 uint16_t sizeMS = 0) = 0; |
| 122 virtual int32_t StereoPlayout(bool& enabled) const = 0; | 122 virtual int32_t PlayoutBuffer(AudioDeviceModule::BufferType& type, |
| 123 virtual int32_t StereoRecordingIsAvailable(bool& available) = 0; | 123 uint16_t& sizeMS) const = 0; |
| 124 virtual int32_t SetStereoRecording(bool enable) = 0; | 124 virtual int32_t PlayoutDelay(uint16_t& delayMS) const = 0; |
| 125 virtual int32_t StereoRecording(bool& enabled) const = 0; | 125 virtual int32_t RecordingDelay(uint16_t& delayMS) const = 0; |
| 126 | 126 |
| 127 // Delay information and control | 127 // CPU load |
| 128 » virtual int32_t SetPlayoutBuffer( | 128 virtual int32_t CPULoad(uint16_t& load) const = 0; |
| 129 const AudioDeviceModule::BufferType type, | |
| 130 uint16_t sizeMS = 0) = 0; | |
| 131 virtual int32_t PlayoutBuffer( | |
| 132 AudioDeviceModule::BufferType& type, uint16_t& sizeMS) const = 0; | |
| 133 virtual int32_t PlayoutDelay(uint16_t& delayMS) const = 0; | |
| 134 » virtual int32_t RecordingDelay(uint16_t& delayMS) const = 0; | |
| 135 | 129 |
| 136 // CPU load | 130 // Native sample rate controls (samples/sec) |
| 137 virtual int32_t CPULoad(uint16_t& load) const = 0; | 131 virtual int32_t SetRecordingSampleRate(const uint32_t samplesPerSec); |
| 132 virtual int32_t SetPlayoutSampleRate(const uint32_t samplesPerSec); |
| 138 | 133 |
| 139 // Native sample rate controls (samples/sec) | 134 // Speaker audio routing (for mobile devices) |
| 140 » virtual int32_t SetRecordingSampleRate( | 135 virtual int32_t SetLoudspeakerStatus(bool enable); |
| 141 const uint32_t samplesPerSec); | 136 virtual int32_t GetLoudspeakerStatus(bool& enable) const; |
| 142 » virtual int32_t SetPlayoutSampleRate( | |
| 143 const uint32_t samplesPerSec); | |
| 144 | 137 |
| 145 // Speaker audio routing (for mobile devices) | 138 // Reset Audio Device (for mobile devices) |
| 146 virtual int32_t SetLoudspeakerStatus(bool enable); | 139 virtual int32_t ResetAudioDevice(); |
| 147 virtual int32_t GetLoudspeakerStatus(bool& enable) const; | |
| 148 | 140 |
| 149 // Reset Audio Device (for mobile devices) | 141 // Sound Audio Device control (for WinCE only) |
| 150 virtual int32_t ResetAudioDevice(); | 142 virtual int32_t SoundDeviceControl(unsigned int par1 = 0, |
| 143 unsigned int par2 = 0, |
| 144 unsigned int par3 = 0, |
| 145 unsigned int par4 = 0); |
| 151 | 146 |
| 152 // Sound Audio Device control (for WinCE only) | 147 // Android only |
| 153 virtual int32_t SoundDeviceControl(unsigned int par1 = 0, | 148 virtual bool BuiltInAECIsAvailable() const; |
| 154 unsigned int par2 = 0, | |
| 155 unsigned int par3 = 0, | |
| 156 unsigned int par4 = 0); | |
| 157 | 149 |
| 158 // Android only | 150 // Windows Core Audio and Android only. |
| 159 virtual bool BuiltInAECIsAvailable() const; | 151 virtual int32_t EnableBuiltInAEC(bool enable); |
| 160 | 152 |
| 161 // Windows Core Audio and Android only. | 153 // Windows Core Audio only. |
| 162 virtual int32_t EnableBuiltInAEC(bool enable); | 154 virtual bool BuiltInAECIsEnabled() const; |
| 163 | 155 |
| 164 // Windows Core Audio only. | 156 // iOS only. |
| 165 virtual bool BuiltInAECIsEnabled() const; | 157 // TODO(henrika): add Android support. |
| 158 virtual int GetPlayoutAudioParameters(AudioParameters* params) const; |
| 159 virtual int GetRecordAudioParameters(AudioParameters* params) const; |
| 166 | 160 |
| 167 public: | 161 virtual bool PlayoutWarning() const = 0; |
| 168 virtual bool PlayoutWarning() const = 0; | 162 virtual bool PlayoutError() const = 0; |
| 169 virtual bool PlayoutError() const = 0; | 163 virtual bool RecordingWarning() const = 0; |
| 170 virtual bool RecordingWarning() const = 0; | 164 virtual bool RecordingError() const = 0; |
| 171 virtual bool RecordingError() const = 0; | 165 virtual void ClearPlayoutWarning() = 0; |
| 172 virtual void ClearPlayoutWarning() = 0; | 166 virtual void ClearPlayoutError() = 0; |
| 173 virtual void ClearPlayoutError() = 0; | 167 virtual void ClearRecordingWarning() = 0; |
| 174 virtual void ClearRecordingWarning() = 0; | 168 virtual void ClearRecordingError() = 0; |
| 175 virtual void ClearRecordingError() = 0; | |
| 176 | 169 |
| 177 public: | 170 virtual void AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) = 0; |
| 178 virtual void AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) = 0; | |
| 179 | 171 |
| 180 virtual ~AudioDeviceGeneric() {} | 172 virtual ~AudioDeviceGeneric() {} |
| 181 }; | 173 }; |
| 182 | 174 |
| 183 } // namespace webrtc | 175 } // namespace webrtc |
| 184 | 176 |
| 185 #endif // WEBRTC_AUDIO_DEVICE_AUDIO_DEVICE_GENERIC_H | 177 #endif // WEBRTC_AUDIO_DEVICE_AUDIO_DEVICE_GENERIC_H |
| OLD | NEW |