1 /*
2  *  Copyright 2004 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 WEBRTC_SOUND_NULLSOUNDSYSTEM_H_
12 #define WEBRTC_SOUND_NULLSOUNDSYSTEM_H_
13 
14 #include "webrtc/sound/soundsysteminterface.h"
15 
16 namespace rtc {
17 
18 class SoundDeviceLocator;
19 class SoundInputStreamInterface;
20 class SoundOutputStreamInterface;
21 
22 // A simple reference sound system that drops output samples and generates
23 // no input samples.
24 class NullSoundSystem : public SoundSystemInterface {
25  public:
Create()26   static SoundSystemInterface *Create() {
27     return new NullSoundSystem();
28   }
29 
30   ~NullSoundSystem() override;
31 
32   bool Init() override;
33   void Terminate() override;
34 
35   bool EnumeratePlaybackDevices(SoundDeviceLocatorList *devices) override;
36   bool EnumerateCaptureDevices(SoundDeviceLocatorList *devices) override;
37 
38   SoundOutputStreamInterface *OpenPlaybackDevice(
39       const SoundDeviceLocator *device,
40       const OpenParams &params) override;
41   SoundInputStreamInterface *OpenCaptureDevice(
42       const SoundDeviceLocator *device,
43       const OpenParams &params) override;
44 
45   bool GetDefaultPlaybackDevice(SoundDeviceLocator **device) override;
46   bool GetDefaultCaptureDevice(SoundDeviceLocator **device) override;
47 
48   const char *GetName() const override;
49 };
50 
51 }  // namespace rtc
52 
53 #endif  // WEBRTC_SOUND_NULLSOUNDSYSTEM_H_
54