LCOV - code coverage report
Current view: top level - media/webrtc/trunk/webrtc/modules/audio_device/include - audio_device.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 2 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
       3             :  *
       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
       6             :  *  tree. An additional intellectual property rights grant can be found
       7             :  *  in the file PATENTS.  All contributing project authors may
       8             :  *  be found in the AUTHORS file in the root of the source tree.
       9             :  */
      10             : 
      11             : #ifndef MODULES_AUDIO_DEVICE_INCLUDE_AUDIO_DEVICE_H_
      12             : #define MODULES_AUDIO_DEVICE_INCLUDE_AUDIO_DEVICE_H_
      13             : 
      14             : #include "webrtc/base/scoped_ref_ptr.h"
      15             : #include "webrtc/modules/audio_device/include/audio_device_defines.h"
      16             : #include "webrtc/modules/include/module.h"
      17             : 
      18             : namespace webrtc {
      19             : 
      20           0 : class AudioDeviceModule : public RefCountedModule {
      21             :  public:
      22             :   enum ErrorCode {
      23             :     kAdmErrNone = 0,
      24             :     kAdmErrArgument = 1
      25             :   };
      26             : 
      27             :   enum AudioLayer {
      28             :     kPlatformDefaultAudio = 0,
      29             :     kWindowsWaveAudio = 1,
      30             :     kWindowsCoreAudio = 2,
      31             :     kLinuxAlsaAudio = 3,
      32             :     kLinuxPulseAudio = 4,
      33             :     kAndroidJavaAudio = 5,
      34             :     kAndroidOpenSLESAudio = 6,
      35             :     kAndroidJavaInputAndOpenSLESOutputAudio = 7,
      36             :     kSndioAudio = 8,
      37             :     kDummyAudio = 9
      38             :   };
      39             : 
      40             :   enum WindowsDeviceType {
      41             :     kDefaultCommunicationDevice = -1,
      42             :     kDefaultDevice = -2
      43             :   };
      44             : 
      45             :   enum BufferType {
      46             :     kFixedBufferSize  = 0,
      47             :     kAdaptiveBufferSize = 1
      48             :   };
      49             : 
      50             :   enum ChannelType {
      51             :     kChannelLeft = 0,
      52             :     kChannelRight = 1,
      53             :     kChannelBoth = 2
      54             :   };
      55             : 
      56             :  public:
      57             :   // Create an ADM.
      58             :   static rtc::scoped_refptr<AudioDeviceModule> Create(
      59             :       const int32_t id,
      60             :       const AudioLayer audio_layer);
      61             : 
      62             :   // Retrieve the currently utilized audio layer
      63             :   virtual int32_t ActiveAudioLayer(AudioLayer* audioLayer) const = 0;
      64             : 
      65             :   // Error handling
      66             :   virtual ErrorCode LastError() const = 0;
      67             :   virtual int32_t RegisterEventObserver(AudioDeviceObserver* eventCallback) = 0;
      68             : 
      69             :   // Full-duplex transportation of PCM audio
      70             :   virtual int32_t RegisterAudioCallback(AudioTransport* audioCallback) = 0;
      71             : 
      72             :   // Main initialization and termination
      73             :   virtual int32_t Init() = 0;
      74             :   virtual int32_t Terminate() = 0;
      75             :   virtual bool Initialized() const = 0;
      76             : 
      77             :   // Device enumeration
      78             :   virtual int16_t PlayoutDevices() = 0;
      79             :   virtual int16_t RecordingDevices() = 0;
      80             :   virtual int32_t PlayoutDeviceName(uint16_t index,
      81             :                                     char name[kAdmMaxDeviceNameSize],
      82             :                                     char guid[kAdmMaxGuidSize]) = 0;
      83             :   virtual int32_t RecordingDeviceName(uint16_t index,
      84             :                                       char name[kAdmMaxDeviceNameSize],
      85             :                                       char guid[kAdmMaxGuidSize]) = 0;
      86             : 
      87             :   // Device selection
      88             :   virtual int32_t SetPlayoutDevice(uint16_t index) = 0;
      89             :   virtual int32_t SetPlayoutDevice(WindowsDeviceType device) = 0;
      90             :   virtual int32_t SetRecordingDevice(uint16_t index) = 0;
      91             :   virtual int32_t SetRecordingDevice(WindowsDeviceType device) = 0;
      92             : 
      93             :   // Audio transport initialization
      94             :   virtual int32_t PlayoutIsAvailable(bool* available) = 0;
      95             :   virtual int32_t InitPlayout() = 0;
      96             :   virtual bool PlayoutIsInitialized() const = 0;
      97             :   virtual int32_t RecordingIsAvailable(bool* available) = 0;
      98             :   virtual int32_t InitRecording() = 0;
      99             :   virtual bool RecordingIsInitialized() const = 0;
     100             : 
     101             :   // Audio transport control
     102             :   virtual int32_t StartPlayout() = 0;
     103             :   virtual int32_t StopPlayout() = 0;
     104             :   virtual bool Playing() const = 0;
     105             :   virtual int32_t StartRecording() = 0;
     106             :   virtual int32_t StopRecording() = 0;
     107             :   virtual bool Recording() const = 0;
     108             : 
     109             :   // Microphone Automatic Gain Control (AGC)
     110             :   virtual int32_t SetAGC(bool enable) = 0;
     111             :   virtual bool AGC() const = 0;
     112             : 
     113             :   // Volume control based on the Windows Wave API (Windows only)
     114             :   virtual int32_t SetWaveOutVolume(uint16_t volumeLeft,
     115             :                                    uint16_t volumeRight) = 0;
     116             :   virtual int32_t WaveOutVolume(uint16_t* volumeLeft,
     117             :                                 uint16_t* volumeRight) const = 0;
     118             : 
     119             :   // Audio mixer initialization
     120             :   virtual int32_t InitSpeaker() = 0;
     121             :   virtual bool SpeakerIsInitialized() const = 0;
     122             :   virtual int32_t InitMicrophone() = 0;
     123             :   virtual bool MicrophoneIsInitialized() const = 0;
     124             : 
     125             :   // Speaker volume controls
     126             :   virtual int32_t SpeakerVolumeIsAvailable(bool* available) = 0;
     127             :   virtual int32_t SetSpeakerVolume(uint32_t volume) = 0;
     128             :   virtual int32_t SpeakerVolume(uint32_t* volume) const = 0;
     129             :   virtual int32_t MaxSpeakerVolume(uint32_t* maxVolume) const = 0;
     130             :   virtual int32_t MinSpeakerVolume(uint32_t* minVolume) const = 0;
     131             :   virtual int32_t SpeakerVolumeStepSize(uint16_t* stepSize) const = 0;
     132             : 
     133             :   // Microphone volume controls
     134             :   virtual int32_t MicrophoneVolumeIsAvailable(bool* available) = 0;
     135             :   virtual int32_t SetMicrophoneVolume(uint32_t volume) = 0;
     136             :   virtual int32_t MicrophoneVolume(uint32_t* volume) const = 0;
     137             :   virtual int32_t MaxMicrophoneVolume(uint32_t* maxVolume) const = 0;
     138             :   virtual int32_t MinMicrophoneVolume(uint32_t* minVolume) const = 0;
     139             :   virtual int32_t MicrophoneVolumeStepSize(uint16_t* stepSize) const = 0;
     140             : 
     141             :   // Speaker mute control
     142             :   virtual int32_t SpeakerMuteIsAvailable(bool* available) = 0;
     143             :   virtual int32_t SetSpeakerMute(bool enable) = 0;
     144             :   virtual int32_t SpeakerMute(bool* enabled) const = 0;
     145             : 
     146             :   // Microphone mute control
     147             :   virtual int32_t MicrophoneMuteIsAvailable(bool* available) = 0;
     148             :   virtual int32_t SetMicrophoneMute(bool enable) = 0;
     149             :   virtual int32_t MicrophoneMute(bool* enabled) const = 0;
     150             : 
     151             :   // Microphone boost control
     152             :   virtual int32_t MicrophoneBoostIsAvailable(bool* available) = 0;
     153             :   virtual int32_t SetMicrophoneBoost(bool enable) = 0;
     154             :   virtual int32_t MicrophoneBoost(bool* enabled) const = 0;
     155             : 
     156             :   // Stereo support
     157             :   virtual int32_t StereoPlayoutIsAvailable(bool* available) const = 0;
     158             :   virtual int32_t SetStereoPlayout(bool enable) = 0;
     159             :   virtual int32_t StereoPlayout(bool* enabled) const = 0;
     160             :   virtual int32_t StereoRecordingIsAvailable(bool* available) const = 0;
     161             :   virtual int32_t SetStereoRecording(bool enable) = 0;
     162             :   virtual int32_t StereoRecording(bool* enabled) const = 0;
     163             :   virtual int32_t SetRecordingChannel(const ChannelType channel) = 0;
     164             :   virtual int32_t RecordingChannel(ChannelType* channel) const = 0;
     165             : 
     166             :   // Delay information and control
     167             :   virtual int32_t SetPlayoutBuffer(const BufferType type,
     168             :                                    uint16_t sizeMS = 0) = 0;
     169             :   virtual int32_t PlayoutBuffer(BufferType* type, uint16_t* sizeMS) const = 0;
     170             :   virtual int32_t PlayoutDelay(uint16_t* delayMS) const = 0;
     171             :   virtual int32_t RecordingDelay(uint16_t* delayMS) const = 0;
     172             : 
     173             :   // CPU load
     174             :   virtual int32_t CPULoad(uint16_t* load) const = 0;
     175             : 
     176             :   // Recording of raw PCM data
     177             :   virtual int32_t StartRawOutputFileRecording(
     178             :       const char pcmFileNameUTF8[kAdmMaxFileNameSize]) = 0;
     179             :   virtual int32_t StopRawOutputFileRecording() = 0;
     180             :   virtual int32_t StartRawInputFileRecording(
     181             :       const char pcmFileNameUTF8[kAdmMaxFileNameSize]) = 0;
     182             :   virtual int32_t StopRawInputFileRecording() = 0;
     183             : 
     184             :   // Native sample rate controls (samples/sec)
     185             :   virtual int32_t SetRecordingSampleRate(const uint32_t samplesPerSec) = 0;
     186             :   virtual int32_t RecordingSampleRate(uint32_t* samplesPerSec) const = 0;
     187             :   virtual int32_t SetPlayoutSampleRate(const uint32_t samplesPerSec) = 0;
     188             :   virtual int32_t PlayoutSampleRate(uint32_t* samplesPerSec) const = 0;
     189             : 
     190             :   // Mobile device specific functions
     191             :   virtual int32_t ResetAudioDevice() = 0;
     192             :   virtual int32_t SetLoudspeakerStatus(bool enable) = 0;
     193             :   virtual int32_t GetLoudspeakerStatus(bool* enabled) const = 0;
     194             : 
     195             :   // Only supported on Android.
     196             :   virtual bool BuiltInAECIsAvailable() const = 0;
     197             :   virtual bool BuiltInAGCIsAvailable() const = 0;
     198             :   virtual bool BuiltInNSIsAvailable() const = 0;
     199             : 
     200             :   // Enables the built-in audio effects. Only supported on Android.
     201             :   virtual int32_t EnableBuiltInAEC(bool enable) = 0;
     202             :   virtual int32_t EnableBuiltInAGC(bool enable) = 0;
     203             :   virtual int32_t EnableBuiltInNS(bool enable) = 0;
     204             : 
     205             : // Only supported on iOS.
     206             : #if defined(WEBRTC_IOS)
     207             :   virtual int GetPlayoutAudioParameters(AudioParameters* params) const = 0;
     208             :   virtual int GetRecordAudioParameters(AudioParameters* params) const = 0;
     209             : #endif  // WEBRTC_IOS
     210             : 
     211             :  protected:
     212           0 :   ~AudioDeviceModule() override {}
     213             : };
     214             : 
     215             : }  // namespace webrtc
     216             : 
     217             : #endif  // MODULES_AUDIO_DEVICE_INCLUDE_AUDIO_DEVICE_H_

Generated by: LCOV version 1.13