OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MEDIA_AUDIO_WIN_AUDIO_UNIFIED_WIN_H_ | 5 #ifndef MEDIA_AUDIO_WIN_AUDIO_UNIFIED_WIN_H_ |
6 #define MEDIA_AUDIO_WIN_AUDIO_UNIFIED_WIN_H_ | 6 #define MEDIA_AUDIO_WIN_AUDIO_UNIFIED_WIN_H_ |
7 | 7 |
8 #include <Audioclient.h> | 8 #include <Audioclient.h> |
9 #include <MMDeviceAPI.h> | 9 #include <MMDeviceAPI.h> |
10 | 10 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 // as internal sample-value representation. | 77 // as internal sample-value representation. |
78 // - Perform fine-tuning for non-matching sample rates to reduce latency. | 78 // - Perform fine-tuning for non-matching sample rates to reduce latency. |
79 // | 79 // |
80 class MEDIA_EXPORT WASAPIUnifiedStream | 80 class MEDIA_EXPORT WASAPIUnifiedStream |
81 : public AudioOutputStream, | 81 : public AudioOutputStream, |
82 public base::DelegateSimpleThread::Delegate { | 82 public base::DelegateSimpleThread::Delegate { |
83 public: | 83 public: |
84 // The ctor takes all the usual parameters, plus |manager| which is the | 84 // The ctor takes all the usual parameters, plus |manager| which is the |
85 // the audio manager who is creating this object. | 85 // the audio manager who is creating this object. |
86 WASAPIUnifiedStream(AudioManagerWin* manager, | 86 WASAPIUnifiedStream(AudioManagerWin* manager, |
87 const AudioParameters& params); | 87 const AudioParameters& params, |
| 88 const std::string& input_device_id); |
88 | 89 |
89 // The dtor is typically called by the AudioManager only and it is usually | 90 // The dtor is typically called by the AudioManager only and it is usually |
90 // triggered by calling AudioOutputStream::Close(). | 91 // triggered by calling AudioOutputStream::Close(). |
91 virtual ~WASAPIUnifiedStream(); | 92 virtual ~WASAPIUnifiedStream(); |
92 | 93 |
93 // Implementation of AudioOutputStream. | 94 // Implementation of AudioOutputStream. |
94 virtual bool Open() OVERRIDE; | 95 virtual bool Open() OVERRIDE; |
95 virtual void Start(AudioSourceCallback* callback) OVERRIDE; | 96 virtual void Start(AudioSourceCallback* callback) OVERRIDE; |
96 virtual void Stop() OVERRIDE; | 97 virtual void Stop() OVERRIDE; |
97 virtual void Close() OVERRIDE; | 98 virtual void Close() OVERRIDE; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 | 177 |
177 // Our creator, the audio manager needs to be notified when we close. | 178 // Our creator, the audio manager needs to be notified when we close. |
178 AudioManagerWin* manager_; | 179 AudioManagerWin* manager_; |
179 | 180 |
180 // Contains the audio parameter structure provided at construction. | 181 // Contains the audio parameter structure provided at construction. |
181 AudioParameters params_; | 182 AudioParameters params_; |
182 // For convenience, same as in params_. | 183 // For convenience, same as in params_. |
183 int input_channels_; | 184 int input_channels_; |
184 int output_channels_; | 185 int output_channels_; |
185 | 186 |
| 187 // Unique ID of the input device to be opened. |
| 188 const std::string input_device_id_; |
| 189 |
186 // The sharing mode for the streams. | 190 // The sharing mode for the streams. |
187 // Valid values are AUDCLNT_SHAREMODE_SHARED and AUDCLNT_SHAREMODE_EXCLUSIVE | 191 // Valid values are AUDCLNT_SHAREMODE_SHARED and AUDCLNT_SHAREMODE_EXCLUSIVE |
188 // where AUDCLNT_SHAREMODE_SHARED is the default. | 192 // where AUDCLNT_SHAREMODE_SHARED is the default. |
189 AUDCLNT_SHAREMODE share_mode_; | 193 AUDCLNT_SHAREMODE share_mode_; |
190 | 194 |
191 // Rendering and capturing is driven by this thread (no message loop). | 195 // Rendering and capturing is driven by this thread (no message loop). |
192 // All OnMoreIOData() callbacks will be called from this thread. | 196 // All OnMoreIOData() callbacks will be called from this thread. |
193 scoped_ptr<base::DelegateSimpleThread> audio_io_thread_; | 197 scoped_ptr<base::DelegateSimpleThread> audio_io_thread_; |
194 | 198 |
195 // Contains the desired audio output format which is set up at construction. | 199 // Contains the desired audio output format which is set up at construction. |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 FILE* data_file_; | 343 FILE* data_file_; |
340 FILE* param_file_; | 344 FILE* param_file_; |
341 #endif | 345 #endif |
342 | 346 |
343 DISALLOW_COPY_AND_ASSIGN(WASAPIUnifiedStream); | 347 DISALLOW_COPY_AND_ASSIGN(WASAPIUnifiedStream); |
344 }; | 348 }; |
345 | 349 |
346 } // namespace media | 350 } // namespace media |
347 | 351 |
348 #endif // MEDIA_AUDIO_WIN_AUDIO_UNIFIED_WIN_H_ | 352 #endif // MEDIA_AUDIO_WIN_AUDIO_UNIFIED_WIN_H_ |
OLD | NEW |