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

Side by Side Diff: media/base/audio_renderer_mixer_input_unittest.cc

Issue 11410012: Collapse AudioRendererMixer and OnMoreDataResampler into AudioTransform. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename. Comments. Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/base/audio_renderer_mixer_input.cc ('k') | media/base/audio_renderer_mixer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "media/base/audio_renderer_mixer.h" 7 #include "media/base/audio_renderer_mixer.h"
8 #include "media/base/audio_renderer_mixer_input.h" 8 #include "media/base/audio_renderer_mixer_input.h"
9 #include "media/base/fake_audio_render_callback.h" 9 #include "media/base/fake_audio_render_callback.h"
10 #include "media/base/mock_audio_renderer_sink.h" 10 #include "media/base/mock_audio_renderer_sink.h"
(...skipping 11 matching lines...) Expand all
22 public: 22 public:
23 AudioRendererMixerInputTest() { 23 AudioRendererMixerInputTest() {
24 audio_parameters_ = AudioParameters( 24 audio_parameters_ = AudioParameters(
25 AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout, kSampleRate, 25 AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout, kSampleRate,
26 kBitsPerChannel, kBufferSize); 26 kBitsPerChannel, kBufferSize);
27 27
28 CreateMixerInput(); 28 CreateMixerInput();
29 fake_callback_.reset(new FakeAudioRenderCallback(0)); 29 fake_callback_.reset(new FakeAudioRenderCallback(0));
30 mixer_input_->Initialize(audio_parameters_, fake_callback_.get()); 30 mixer_input_->Initialize(audio_parameters_, fake_callback_.get());
31 EXPECT_CALL(*this, RemoveMixer(testing::_)); 31 EXPECT_CALL(*this, RemoveMixer(testing::_));
32 audio_bus_ = AudioBus::Create(audio_parameters_);
32 } 33 }
33 34
34 void CreateMixerInput() { 35 void CreateMixerInput() {
35 mixer_input_ = new AudioRendererMixerInput( 36 mixer_input_ = new AudioRendererMixerInput(
36 base::Bind( 37 base::Bind(
37 &AudioRendererMixerInputTest::GetMixer, base::Unretained(this)), 38 &AudioRendererMixerInputTest::GetMixer, base::Unretained(this)),
38 base::Bind( 39 base::Bind(
39 &AudioRendererMixerInputTest::RemoveMixer, base::Unretained(this))); 40 &AudioRendererMixerInputTest::RemoveMixer, base::Unretained(this)));
40 } 41 }
41 42
42 AudioRendererMixer* GetMixer(const AudioParameters& params) { 43 AudioRendererMixer* GetMixer(const AudioParameters& params) {
43 if (!mixer_.get()) { 44 if (!mixer_.get()) {
44 scoped_refptr<MockAudioRendererSink> sink = new MockAudioRendererSink(); 45 scoped_refptr<MockAudioRendererSink> sink = new MockAudioRendererSink();
45 EXPECT_CALL(*sink, Start()); 46 EXPECT_CALL(*sink, Start());
46 EXPECT_CALL(*sink, Stop()); 47 EXPECT_CALL(*sink, Stop());
47 48
48 mixer_.reset(new AudioRendererMixer( 49 mixer_.reset(new AudioRendererMixer(
49 audio_parameters_, audio_parameters_, sink)); 50 audio_parameters_, audio_parameters_, sink));
50 } 51 }
51 return mixer_.get(); 52 return mixer_.get();
52 } 53 }
53 54
55 double ProvideInput() {
56 return mixer_input_->ProvideInput(audio_bus_.get(), base::TimeDelta());
57 }
58
59 int GetAudioDelayMilliseconds() {
60 return mixer_input_->current_audio_delay_milliseconds_;
61 }
62
54 MOCK_METHOD1(RemoveMixer, void(const AudioParameters&)); 63 MOCK_METHOD1(RemoveMixer, void(const AudioParameters&));
55 64
56 protected: 65 protected:
57 virtual ~AudioRendererMixerInputTest() {} 66 virtual ~AudioRendererMixerInputTest() {}
58 67
59 AudioParameters audio_parameters_; 68 AudioParameters audio_parameters_;
60 scoped_ptr<AudioRendererMixer> mixer_; 69 scoped_ptr<AudioRendererMixer> mixer_;
61 scoped_refptr<AudioRendererMixerInput> mixer_input_; 70 scoped_refptr<AudioRendererMixerInput> mixer_input_;
62 scoped_ptr<FakeAudioRenderCallback> fake_callback_; 71 scoped_ptr<FakeAudioRenderCallback> fake_callback_;
72 scoped_ptr<AudioBus> audio_bus_;
63 73
64 DISALLOW_COPY_AND_ASSIGN(AudioRendererMixerInputTest); 74 DISALLOW_COPY_AND_ASSIGN(AudioRendererMixerInputTest);
65 }; 75 };
66 76
67 // Test callback() works as expected. 77 // Test that getting and setting the volume work as expected. The volume is
68 TEST_F(AudioRendererMixerInputTest, GetCallback) { 78 // returned from ProvideInput() only when playing.
69 EXPECT_EQ(mixer_input_->callback(), fake_callback_.get()); 79 TEST_F(AudioRendererMixerInputTest, GetSetVolume) {
70 } 80 mixer_input_->Start();
81 mixer_input_->Play();
71 82
72 // Test that getting and setting the volume work as expected. 83 // Starting volume should be 1.0.
73 TEST_F(AudioRendererMixerInputTest, GetSetVolume) { 84 EXPECT_DOUBLE_EQ(ProvideInput(), 1);
74 // Starting volume should be 0.
75 double volume = 1.0f;
76 mixer_input_->GetVolume(&volume);
77 EXPECT_EQ(volume, 1.0f);
78 85
79 const double kVolume = 0.5f; 86 const double kVolume = 0.5;
80 EXPECT_TRUE(mixer_input_->SetVolume(kVolume)); 87 EXPECT_TRUE(mixer_input_->SetVolume(kVolume));
81 mixer_input_->GetVolume(&volume); 88 EXPECT_DOUBLE_EQ(ProvideInput(), kVolume);
82 EXPECT_EQ(volume, kVolume); 89
90 mixer_input_->Stop();
83 } 91 }
84 92
85 // Test Start()/Play()/Pause()/Stop()/playing() all work as expected. Also 93 // Test Start()/Play()/Pause()/Stop()/playing() all work as expected. Also
86 // implicitly tests that AddMixerInput() and RemoveMixerInput() work without 94 // implicitly tests that AddMixerInput() and RemoveMixerInput() work without
87 // crashing; functional tests for these methods are in AudioRendererMixerTest. 95 // crashing; functional tests for these methods are in AudioRendererMixerTest.
88 TEST_F(AudioRendererMixerInputTest, StartPlayPauseStopPlaying) { 96 TEST_F(AudioRendererMixerInputTest, StartPlayPauseStopPlaying) {
89 mixer_input_->Start(); 97 mixer_input_->Start();
90 EXPECT_FALSE(mixer_input_->playing()); 98 EXPECT_DOUBLE_EQ(ProvideInput(), 0);
91 mixer_input_->Play(); 99 mixer_input_->Play();
92 EXPECT_TRUE(mixer_input_->playing()); 100 EXPECT_DOUBLE_EQ(ProvideInput(), 1);
93 mixer_input_->Pause(false); 101 mixer_input_->Pause(false);
94 EXPECT_FALSE(mixer_input_->playing()); 102 EXPECT_DOUBLE_EQ(ProvideInput(), 0);
95 mixer_input_->Play(); 103 mixer_input_->Play();
96 EXPECT_TRUE(mixer_input_->playing()); 104 EXPECT_DOUBLE_EQ(ProvideInput(), 1);
97 mixer_input_->Stop(); 105 mixer_input_->Stop();
98 EXPECT_FALSE(mixer_input_->playing()); 106 EXPECT_DOUBLE_EQ(ProvideInput(), 0);
99 } 107 }
100 108
101 // Test that Stop() can be called before Initialize() and Start(). 109 // Test that Stop() can be called before Initialize() and Start().
102 TEST_F(AudioRendererMixerInputTest, StopBeforeInitializeOrStart) { 110 TEST_F(AudioRendererMixerInputTest, StopBeforeInitializeOrStart) {
103 // |mixer_input_| was initialized during construction. 111 // |mixer_input_| was initialized during construction.
104 mixer_input_->Stop(); 112 mixer_input_->Stop();
105 113
106 // Verify Stop() works without Initialize() or Start(). 114 // Verify Stop() works without Initialize() or Start().
107 CreateMixerInput(); 115 CreateMixerInput();
108 mixer_input_->Stop(); 116 mixer_input_->Stop();
109 } 117 }
110 118
111 } // namespace media 119 } // namespace media
OLDNEW
« no previous file with comments | « media/base/audio_renderer_mixer_input.cc ('k') | media/base/audio_renderer_mixer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698