Chromium Code Reviews| Index: content/renderer/media/webrtc_audio_device_unittest.cc |
| diff --git a/content/renderer/media/webrtc_audio_device_unittest.cc b/content/renderer/media/webrtc_audio_device_unittest.cc |
| index 30157b0c0b7235644b10b9e3a46bb5c648e2b0fc..e98db7f91050780fb50062259c4e379982923d1a 100644 |
| --- a/content/renderer/media/webrtc_audio_device_unittest.cc |
| +++ b/content/renderer/media/webrtc_audio_device_unittest.cc |
| @@ -4,12 +4,13 @@ |
| #include "base/environment.h" |
| #include "base/test/test_timeouts.h" |
| -#include "content/renderer/media/audio_hardware.h" |
| +#include "content/renderer/media/renderer_audio_hardware_config.h" |
| #include "content/renderer/media/webrtc_audio_capturer.h" |
| #include "content/renderer/media/webrtc_audio_device_impl.h" |
| #include "content/renderer/media/webrtc_audio_renderer.h" |
| +#include "content/renderer/render_thread_impl.h" |
| #include "content/test/webrtc_audio_device_test.h" |
| -#include "media/audio/audio_manager.h" |
| +#include "media/audio/audio_manager_base.h" |
| #include "media/audio/audio_util.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "third_party/webrtc/voice_engine/include/voe_audio_processing.h" |
| @@ -30,51 +31,31 @@ namespace { |
| const int kRenderViewId = 1; |
| -class AudioUtil : public AudioUtilInterface { |
| +class RealAudioHardwareConfig : public media::AudioHardwareConfig { |
| public: |
| - AudioUtil() {} |
| + RealAudioHardwareConfig() {} |
| + virtual ~RealAudioHardwareConfig() {} |
| - virtual int GetAudioHardwareSampleRate() OVERRIDE { |
| - return media::GetAudioHardwareSampleRate(); |
| - } |
| - virtual int GetAudioInputHardwareSampleRate( |
| - const std::string& device_id) OVERRIDE { |
| - return media::GetAudioInputHardwareSampleRate(device_id); |
| - } |
| - virtual media::ChannelLayout GetAudioInputHardwareChannelLayout( |
| - const std::string& device_id) OVERRIDE { |
| - return media::GetAudioInputHardwareChannelLayout(device_id); |
| + virtual int GetOutputBufferSize() OVERRIDE { |
| + return media::GetAudioHardwareBufferSize(); |
| } |
| - private: |
| - DISALLOW_COPY_AND_ASSIGN(AudioUtil); |
| -}; |
| -class AudioUtilNoHardware : public AudioUtilInterface { |
| - public: |
| - AudioUtilNoHardware(int output_rate, int input_rate, |
| - media::ChannelLayout input_channel_layout) |
| - : output_rate_(output_rate), |
| - input_rate_(input_rate), |
| - input_channel_layout_(input_channel_layout) { |
| + virtual int GetOutputSampleRate() OVERRIDE { |
| + return media::GetAudioHardwareSampleRate(); |
| } |
| - virtual int GetAudioHardwareSampleRate() OVERRIDE { |
| - return output_rate_; |
| - } |
| - virtual int GetAudioInputHardwareSampleRate( |
| - const std::string& device_id) OVERRIDE { |
| - return input_rate_; |
| + virtual int GetInputSampleRate() OVERRIDE { |
| + return media::GetAudioInputHardwareSampleRate( |
| + media::AudioManagerBase::kDefaultDeviceId); |
| } |
| - virtual media::ChannelLayout GetAudioInputHardwareChannelLayout( |
| - const std::string& device_id) OVERRIDE { |
| - return input_channel_layout_; |
| + |
| + virtual media::ChannelLayout GetInputChannelLayout() OVERRIDE { |
| + return media::GetAudioInputHardwareChannelLayout( |
| + media::AudioManagerBase::kDefaultDeviceId); |
| } |
| private: |
| - int output_rate_; |
| - int input_rate_; |
| - media::ChannelLayout input_channel_layout_; |
| - DISALLOW_COPY_AND_ASSIGN(AudioUtilNoHardware); |
| + DISALLOW_COPY_AND_ASSIGN(RealAudioHardwareConfig); |
| }; |
| // Return true if at least one element in the array matches |value|. |
| @@ -95,8 +76,11 @@ bool HardwareSampleRatesAreValid() { |
| int valid_input_rates[] = {16000, 32000, 44100, 48000, 96000}; |
| int valid_output_rates[] = {44100, 48000, 96000}; |
| + RendererAudioHardwareConfig* hardware_config = |
|
miu
2013/01/29 04:55:43
Possible root cause of crash on Mac: If GetAudioHa
DaleCurtis
2013/01/30 01:31:06
Crash is in Chrome not tests, may be related to ht
|
| + RenderThreadImpl::current()->GetAudioHardwareConfig(); |
| + |
| // Verify the input sample rate. |
| - int input_sample_rate = GetAudioInputSampleRate(); |
| + int input_sample_rate = hardware_config->GetInputSampleRate(); |
| if (!FindElementInArray(valid_input_rates, arraysize(valid_input_rates), |
| input_sample_rate)) { |
| @@ -105,7 +89,7 @@ bool HardwareSampleRatesAreValid() { |
| } |
| // Given that the input rate was OK, verify the output rate as well. |
| - int output_sample_rate = GetAudioOutputSampleRate(); |
| + int output_sample_rate = hardware_config->GetOutputSampleRate(); |
| if (!FindElementInArray(valid_output_rates, arraysize(valid_output_rates), |
| output_sample_rate)) { |
| LOG(WARNING) << "Non-supported output sample rate detected."; |
| @@ -124,10 +108,14 @@ bool InitializeCapturer(WebRtcAudioDeviceImpl* webrtc_audio_device) { |
| if (!capturer) |
| return false; |
| + RendererAudioHardwareConfig* hardware_config = |
| + RenderThreadImpl::current()->GetAudioHardwareConfig(); |
| + |
| // Use native capture sample rate and channel configuration to get some |
| // action in this test. |
| - int sample_rate = GetAudioInputSampleRate(); |
| - media::ChannelLayout channel_layout = GetAudioInputChannelLayout(); |
| + int sample_rate = hardware_config->GetInputSampleRate(); |
| + media::ChannelLayout channel_layout = |
| + hardware_config->GetInputChannelLayout(); |
| if (!capturer->Initialize(channel_layout, sample_rate)) |
| return false; |
| @@ -246,8 +234,9 @@ TEST_F(WebRTCAudioDeviceTest, TestValidOutputRates) { |
| // Basic test that instantiates and initializes an instance of |
| // WebRtcAudioDeviceImpl. |
| TEST_F(WebRTCAudioDeviceTest, Construct) { |
| - AudioUtilNoHardware audio_util(48000, 48000, media::CHANNEL_LAYOUT_MONO); |
| - SetAudioUtilCallback(&audio_util); |
| + RendererAudioHardwareConfig audio_config( |
| + 480, 48000, 48000, media::CHANNEL_LAYOUT_MONO); |
| + SetAudioHardwareConfig(&audio_config); |
| scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( |
| new WebRtcAudioDeviceImpl()); |
| @@ -279,8 +268,8 @@ TEST_F(WebRTCAudioDeviceTest, DISABLED_StartPlayout) { |
| return; |
| } |
| - AudioUtil audio_util; |
| - SetAudioUtilCallback(&audio_util); |
| + RealAudioHardwareConfig audio_config; |
| + SetAudioHardwareConfig(&audio_config); |
| if (!HardwareSampleRatesAreValid()) |
| return; |
| @@ -357,8 +346,8 @@ TEST_F(WebRTCAudioDeviceTest, StartRecording) { |
| return; |
| } |
| - AudioUtil audio_util; |
| - SetAudioUtilCallback(&audio_util); |
| + RealAudioHardwareConfig audio_config; |
| + SetAudioHardwareConfig(&audio_config); |
| if (!HardwareSampleRatesAreValid()) |
| return; |
| @@ -430,8 +419,8 @@ TEST_F(WebRTCAudioDeviceTest, DISABLED_PlayLocalFile) { |
| std::string file_path( |
| GetTestDataPath(FILE_PATH_LITERAL("speechmusic_mono_16kHz.pcm"))); |
| - AudioUtil audio_util; |
| - SetAudioUtilCallback(&audio_util); |
| + RealAudioHardwareConfig audio_config; |
| + SetAudioHardwareConfig(&audio_config); |
| if (!HardwareSampleRatesAreValid()) |
| return; |
| @@ -501,8 +490,8 @@ TEST_F(WebRTCAudioDeviceTest, FullDuplexAudioWithAGC) { |
| return; |
| } |
| - AudioUtil audio_util; |
| - SetAudioUtilCallback(&audio_util); |
| + RealAudioHardwareConfig audio_config; |
| + SetAudioHardwareConfig(&audio_config); |
| if (!HardwareSampleRatesAreValid()) |
| return; |