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 #include "media/audio/win/audio_low_latency_input_win.h" | 5 #include "media/audio/win/audio_low_latency_input_win.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "media/audio/win/audio_manager_win.h" | 10 #include "media/audio/win/audio_manager_win.h" |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 | 246 |
247 // Update the AGC volume level based on the last setting above. Note that, | 247 // Update the AGC volume level based on the last setting above. Note that, |
248 // the volume-level resolution is not infinite and it is therefore not | 248 // the volume-level resolution is not infinite and it is therefore not |
249 // possible to assume that the volume provided as input parameter can be | 249 // possible to assume that the volume provided as input parameter can be |
250 // used directly. Instead, a new query to the audio hardware is required. | 250 // used directly. Instead, a new query to the audio hardware is required. |
251 // This method does nothing if AGC is disabled. | 251 // This method does nothing if AGC is disabled. |
252 UpdateAgcVolume(); | 252 UpdateAgcVolume(); |
253 } | 253 } |
254 | 254 |
255 double WASAPIAudioInputStream::GetVolume() { | 255 double WASAPIAudioInputStream::GetVolume() { |
256 DLOG_IF(ERROR, !opened_) << "Open() has not been called successfully"; | 256 DCHECK(opened_) << "Open() has not been called successfully"; |
257 if (!opened_) | 257 if (!opened_) |
258 return 0.0; | 258 return 0.0; |
259 | 259 |
260 // Retrieve the current volume level. The value is in the range 0.0 to 1.0. | 260 // Retrieve the current volume level. The value is in the range 0.0 to 1.0. |
261 float level = 0.0f; | 261 float level = 0.0f; |
262 HRESULT hr = simple_audio_volume_->GetMasterVolume(&level); | 262 HRESULT hr = simple_audio_volume_->GetMasterVolume(&level); |
263 DLOG_IF(WARNING, FAILED(hr)) << "Failed to get input master volume."; | 263 DLOG_IF(WARNING, FAILED(hr)) << "Failed to get input master volume."; |
264 | 264 |
265 return static_cast<double>(level); | 265 return static_cast<double>(level); |
266 } | 266 } |
267 | 267 |
| 268 bool WASAPIAudioInputStream::IsMuted() { |
| 269 DCHECK(opened_) << "Open() has not been called successfully"; |
| 270 DCHECK(CalledOnValidThread()); |
| 271 if (!opened_) |
| 272 return false; |
| 273 |
| 274 // Retrieves the current muting state for the audio session. |
| 275 BOOL is_muted = FALSE; |
| 276 HRESULT hr = simple_audio_volume_->GetMute(&is_muted); |
| 277 DLOG_IF(WARNING, FAILED(hr)) << "Failed to get input master volume."; |
| 278 |
| 279 return is_muted != FALSE; |
| 280 } |
| 281 |
268 // static | 282 // static |
269 AudioParameters WASAPIAudioInputStream::GetInputStreamParameters( | 283 AudioParameters WASAPIAudioInputStream::GetInputStreamParameters( |
270 const std::string& device_id) { | 284 const std::string& device_id) { |
271 int sample_rate = 48000; | 285 int sample_rate = 48000; |
272 ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 286 ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
273 | 287 |
274 base::win::ScopedCoMem<WAVEFORMATEX> audio_engine_mix_format; | 288 base::win::ScopedCoMem<WAVEFORMATEX> audio_engine_mix_format; |
275 int effects = AudioParameters::NO_EFFECTS; | 289 int effects = AudioParameters::NO_EFFECTS; |
276 if (SUCCEEDED(GetMixFormat(device_id, &audio_engine_mix_format, &effects))) { | 290 if (SUCCEEDED(GetMixFormat(device_id, &audio_engine_mix_format, &effects))) { |
277 sample_rate = static_cast<int>(audio_engine_mix_format->nSamplesPerSec); | 291 sample_rate = static_cast<int>(audio_engine_mix_format->nSamplesPerSec); |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
742 return hr; | 756 return hr; |
743 | 757 |
744 // Obtain a reference to the ISimpleAudioVolume interface which enables | 758 // Obtain a reference to the ISimpleAudioVolume interface which enables |
745 // us to control the master volume level of an audio session. | 759 // us to control the master volume level of an audio session. |
746 hr = audio_client_->GetService(__uuidof(ISimpleAudioVolume), | 760 hr = audio_client_->GetService(__uuidof(ISimpleAudioVolume), |
747 simple_audio_volume_.ReceiveVoid()); | 761 simple_audio_volume_.ReceiveVoid()); |
748 return hr; | 762 return hr; |
749 } | 763 } |
750 | 764 |
751 } // namespace media | 765 } // namespace media |
OLD | NEW |