1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef MEDIA_AUDIO_WIN_AUDIO_MANAGER_WIN_H_
6 #define MEDIA_AUDIO_WIN_AUDIO_MANAGER_WIN_H_
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h"
13 #include "base/gtest_prod_util.h"
14 #include "media/audio/audio_manager_base.h"
18 // Windows implementation of the AudioManager singleton. This class is internal
19 // to the audio output and only internal users can call methods not exposed by
20 // the AudioManager class.
21 class MEDIA_EXPORT AudioManagerWin
: public AudioManagerBase
{
24 // Implementation of AudioManager.
25 virtual bool HasAudioOutputDevices() OVERRIDE
;
26 virtual bool HasAudioInputDevices() OVERRIDE
;
27 virtual void MuteAll() OVERRIDE
;
28 virtual void UnMuteAll() OVERRIDE
;
29 virtual string16
GetAudioInputDeviceModel() OVERRIDE
;
30 virtual bool CanShowAudioInputSettings() OVERRIDE
;
31 virtual void ShowAudioInputSettings() OVERRIDE
;
32 virtual void GetAudioInputDeviceNames(media::AudioDeviceNames
* device_names
)
35 // Implementation of AudioManagerBase.
36 virtual AudioOutputStream
* MakeLinearOutputStream(
37 const AudioParameters
& params
) OVERRIDE
;
38 virtual AudioOutputStream
* MakeLowLatencyOutputStream(
39 const AudioParameters
& params
) OVERRIDE
;
40 virtual AudioInputStream
* MakeLinearInputStream(
41 const AudioParameters
& params
, const std::string
& device_id
) OVERRIDE
;
42 virtual AudioInputStream
* MakeLowLatencyInputStream(
43 const AudioParameters
& params
, const std::string
& device_id
) OVERRIDE
;
46 virtual ~AudioManagerWin();
49 enum EnumerationType
{
50 kUninitializedEnumeration
= 0,
55 // Allow unit test to modify the utilized enumeration API.
56 friend class AudioInputDeviceTest
;
58 EnumerationType enumeration_type_
;
59 EnumerationType
enumeration_type() { return enumeration_type_
; }
60 void SetEnumerationType(EnumerationType type
) {
61 enumeration_type_
= type
;
64 // Returns a PCMWaveInAudioInputStream instance or NULL on failure.
65 // This method converts MMDevice-style device ID to WaveIn-style device ID if
67 // (Please see device_enumeration_win.h for more info about the two kinds of
69 AudioInputStream
* CreatePCMWaveInAudioInputStream(
70 const AudioParameters
& params
,
71 const std::string
& device_id
);
73 DISALLOW_COPY_AND_ASSIGN(AudioManagerWin
);
78 #endif // MEDIA_AUDIO_WIN_AUDIO_MANAGER_WIN_H_