Move media/audio files into media namespace
[chromium-blink-merge.git] / media / audio / win / audio_manager_win.h
blobb1e242657c3e7e2ad7dababe1f57daeff38b9afa
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_
8 #include <windows.h>
9 #include <string>
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"
16 namespace media {
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 {
22 public:
23 AudioManagerWin();
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)
33 OVERRIDE;
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;
45 protected:
46 virtual ~AudioManagerWin();
48 private:
49 enum EnumerationType {
50 kUninitializedEnumeration = 0,
51 kMMDeviceEnumeration,
52 kWaveEnumeration,
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
66 // necessary.
67 // (Please see device_enumeration_win.h for more info about the two kinds of
68 // device IDs.)
69 AudioInputStream* CreatePCMWaveInAudioInputStream(
70 const AudioParameters& params,
71 const std::string& device_id);
73 DISALLOW_COPY_AND_ASSIGN(AudioManagerWin);
76 } // namespace media
78 #endif // MEDIA_AUDIO_WIN_AUDIO_MANAGER_WIN_H_