/* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ // This sub-API supports the following functionalities: // // - Audio device handling. // - Device information. // - CPU load monitoring. // // Usage example, omitting error checking: // // using namespace webrtc; // VoiceEngine* voe = VoiceEngine::Create(); // VoEBase* base = VoEBase::GetInterface(voe); // VoEHardware* hardware = VoEHardware::GetInterface(voe); // base->Init(); // ... // int n_devices = hardware->GetNumOfPlayoutDevices(); // ... // base->Terminate(); // base->Release(); // hardware->Release(); // VoiceEngine::Delete(voe); // #ifndef WEBRTC_VOICE_ENGINE_VOE_HARDWARE_H #define WEBRTC_VOICE_ENGINE_VOE_HARDWARE_H #include "webrtc/common_types.h" namespace webrtc { class VoiceEngine; class WEBRTC_DLLEXPORT VoEHardware { public: // Factory for the VoEHardware sub-API. Increases an internal // reference counter if successful. Returns NULL if the API is not // supported or if construction fails. static VoEHardware* GetInterface(VoiceEngine* voiceEngine); // Releases the VoEHardware sub-API and decreases an internal // reference counter. Returns the new reference count. This value should // be zero for all sub-API:s before the VoiceEngine object can be safely // deleted. virtual int Release() = 0; // Gets the number of audio devices available for recording. virtual int GetNumOfRecordingDevices(int& devices) = 0; // Gets the number of audio devices available for playout. virtual int GetNumOfPlayoutDevices(int& devices) = 0; // Gets the name of a specific recording device given by an |index|. // On Windows Vista/7, it also retrieves an additional unique ID // (GUID) for the recording device. virtual int GetRecordingDeviceName(int index, char strNameUTF8[128], char strGuidUTF8[128]) = 0; // Gets the name of a specific playout device given by an |index|. // On Windows Vista/7, it also retrieves an additional unique ID // (GUID) for the playout device. virtual int GetPlayoutDeviceName(int index, char strNameUTF8[128], char strGuidUTF8[128]) = 0; // Sets the audio device used for recording. virtual int SetRecordingDevice( int index, StereoChannel recordingChannel = kStereoBoth) = 0; // Sets the audio device used for playout. virtual int SetPlayoutDevice(int index) = 0; // Sets the type of audio device layer to use. virtual int SetAudioDeviceLayer(AudioLayers audioLayer) = 0; // Gets the currently used (active) audio device layer. virtual int GetAudioDeviceLayer(AudioLayers& audioLayer) = 0; // Native sample rate controls (samples/sec) virtual int SetRecordingSampleRate(unsigned int samples_per_sec) = 0; virtual int RecordingSampleRate(unsigned int* samples_per_sec) const = 0; virtual int SetPlayoutSampleRate(unsigned int samples_per_sec) = 0; virtual int PlayoutSampleRate(unsigned int* samples_per_sec) const = 0; // To be removed. Don't use. virtual int EnableBuiltInAEC(bool enable) { return -1; } virtual bool BuiltInAECIsEnabled() const { return false; } virtual int GetRecordingDeviceStatus(bool& isAvailable) { return -1; } virtual int GetPlayoutDeviceStatus(bool& isAvailable) { return -1; } virtual int ResetAudioDevice() { return -1; } virtual int AudioDeviceControl(unsigned int par1, unsigned int par2, unsigned int par3) { return -1; } virtual int SetLoudspeakerStatus(bool enable) { return -1; } virtual int GetLoudspeakerStatus(bool& enabled) { return -1; } virtual int GetCPULoad(int& loadPercent) { return -1; } protected: VoEHardware() {} virtual ~VoEHardware() {} }; } // namespace webrtc #endif // WEBRTC_VOICE_ENGINE_VOE_HARDWARE_H