Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(928)

Unified Diff: media/base/audio_renderer_mixer_input_unittest.cc

Issue 10698066: Switch to pcm_low_latency and enable resampling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: First Look! Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/audio_renderer_mixer_input_unittest.cc
diff --git a/media/base/audio_renderer_mixer_input_unittest.cc b/media/base/audio_renderer_mixer_input_unittest.cc
index b57b7cc5ab91e451cef0b51c200bb9d67023a678..bfe5b58a6a8b060b87ecf1516684868cca144bc4 100644
--- a/media/base/audio_renderer_mixer_input_unittest.cc
+++ b/media/base/audio_renderer_mixer_input_unittest.cc
@@ -7,53 +7,72 @@
#include "media/base/audio_renderer_mixer.h"
#include "media/base/audio_renderer_mixer_input.h"
#include "media/base/fake_audio_render_callback.h"
-#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/gmock/include/gmock/gmock.h"
namespace media {
+// TODO(dalecurtis): Extract this out to a mock class,
+// used by AudioRendererImplTest too.
+class MockAudioSink : public media::AudioRendererSink {
+ public:
+ MOCK_METHOD2(Initialize, void(const media::AudioParameters& params,
+ RenderCallback* callback));
+ MOCK_METHOD0(Start, void());
+ MOCK_METHOD0(Stop, void());
+ MOCK_METHOD1(Pause, void(bool flush));
+ MOCK_METHOD0(Play, void());
+ MOCK_METHOD1(SetPlaybackRate, void(float rate));
+ MOCK_METHOD1(SetVolume, bool(double volume));
+ MOCK_METHOD1(GetVolume, void(double* volume));
+
+ protected:
+ virtual ~MockAudioSink() {}
+};
+
static const int kBitsPerChannel = 16;
static const int kSampleRate = 48000;
static const ChannelLayout kChannelLayout = CHANNEL_LAYOUT_STEREO;
-class AudioRendererMixerInputTest : public ::testing::Test {
+class AudioRendererMixerInputTest
+ : public AudioRendererSink::RenderCallback,
+ public ::testing::Test {
public:
AudioRendererMixerInputTest() {
audio_parameters_ = AudioParameters(
AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout, kSampleRate,
kBitsPerChannel, GetHighLatencyOutputBufferSize(kSampleRate));
- mixer_ = new AudioRendererMixer(audio_parameters_, new NullAudioSink());
- mixer_input_ = new AudioRendererMixerInput(mixer_);
- fake_callback_.reset(new FakeAudioRenderCallback(audio_parameters_));
- mixer_input_->Initialize(audio_parameters_, fake_callback_.get());
- }
-
- // Render audio_parameters_.frames_per_buffer() frames into |audio_data_| and
- // verify the result against |check_value|.
- void RenderAndValidateAudioData(float check_value) {
- const std::vector<float*>& audio_data = mixer_input_->audio_data();
-
- ASSERT_EQ(fake_callback_->Render(
- audio_data, audio_parameters_.frames_per_buffer(), 0),
- audio_parameters_.frames_per_buffer());
+ sink_ = new MockAudioSink();
+ EXPECT_CALL(*sink_, Start());
+ EXPECT_CALL(*sink_, Stop());
+ EXPECT_CALL(*sink_, Initialize(::testing::_, ::testing::_));
- for (size_t i = 0; i < audio_data.size(); ++i)
- for (int j = 0; j < audio_parameters_.frames_per_buffer(); j++)
- ASSERT_FLOAT_EQ(check_value, audio_data[i][j]);
+ mixer_ = new AudioRendererMixer(audio_parameters_, sink_);
+ mixer_input_ = new AudioRendererMixerInput(mixer_);
+ mixer_input_->Initialize(audio_parameters_, this);
}
protected:
virtual ~AudioRendererMixerInputTest() {}
+ // AudioRendererSink::RenderCallback implementation.
+ MOCK_METHOD3(Render, int(const std::vector<float*>&, int, int));
+ MOCK_METHOD0(OnRenderError, void());
+
AudioParameters audio_parameters_;
scoped_refptr<AudioRendererMixer> mixer_;
scoped_refptr<AudioRendererMixerInput> mixer_input_;
- scoped_ptr<FakeAudioRenderCallback> fake_callback_;
+ scoped_refptr<MockAudioSink> sink_;
DISALLOW_COPY_AND_ASSIGN(AudioRendererMixerInputTest);
};
+// Test callback() works as expected.
+TEST_F(AudioRendererMixerInputTest, GetCallback) {
+ EXPECT_EQ(mixer_input_->callback(), this);
+}
+
// Test that getting and setting the volume work as expected.
TEST_F(AudioRendererMixerInputTest, GetSetVolume) {
// Starting volume should be 0.
@@ -67,20 +86,6 @@ TEST_F(AudioRendererMixerInputTest, GetSetVolume) {
EXPECT_EQ(volume, kVolume);
}
-// Test audio_data() is allocated correctly.
-TEST_F(AudioRendererMixerInputTest, GetAudioData) {
- RenderAndValidateAudioData(fake_callback_->fill_value());
-
- // TODO(dalecurtis): Perform alignment and size checks when we switch over to
- // FFmpeg optimized vector_fmac.
-}
-
-// Test callback() works as expected.
-TEST_F(AudioRendererMixerInputTest, GetCallback) {
- EXPECT_EQ(mixer_input_->callback(), fake_callback_.get());
- RenderAndValidateAudioData(fake_callback_->fill_value());
-}
-
// Test Start()/Play()/Pause()/Stop()/playing() all work as expected. Also
// implicitly tests that AddMixerInput() and RemoveMixerInput() work without
// crashing; functional tests for these methods are in AudioRendererMixerTest.

Powered by Google App Engine
This is Rietveld 408576698