Index: media/filters/audio_renderer_algorithm_unittest.cc |
diff --git a/media/filters/audio_renderer_algorithm_unittest.cc b/media/filters/audio_renderer_algorithm_unittest.cc |
index 0f63922398016e4361f01f32aba390a4a425909e..b5f895c90d9d3f7be4377d90b6884a248d92a7fe 100644 |
--- a/media/filters/audio_renderer_algorithm_unittest.cc |
+++ b/media/filters/audio_renderer_algorithm_unittest.cc |
@@ -94,7 +94,7 @@ class AudioRendererAlgorithmTest : public testing::Test { |
samples_per_second, |
bytes_per_sample_ * 8, |
samples_per_second / 100); |
- algorithm_.Initialize(1, params); |
+ algorithm_.Initialize(params); |
FillAlgorithmQueue(); |
} |
@@ -145,14 +145,14 @@ class AudioRendererAlgorithmTest : public testing::Test { |
} |
} |
- void CheckFakeData(AudioBus* audio_data, int frames_written) { |
- // Check each channel individually. |
+ bool AudioDataIsMuted(AudioBus* audio_data, int frames_written) { |
for (int ch = 0; ch < channels_; ++ch) { |
- bool all_zero = true; |
- for (int i = 0; i < frames_written && all_zero; ++i) |
- all_zero = audio_data->channel(ch)[i] == 0.0f; |
- ASSERT_EQ(algorithm_.is_muted(), all_zero) << " for channel " << ch; |
+ for (int i = 0; i < frames_written; ++i) { |
+ if (audio_data->channel(ch)[i] != 0.0f) |
+ return false; |
+ } |
} |
+ return true; |
} |
int ComputeConsumedFrames(int initial_frames_enqueued, |
@@ -178,22 +178,24 @@ class AudioRendererAlgorithmTest : public testing::Test { |
int total_frames_requested) { |
int initial_frames_enqueued = frames_enqueued_; |
int initial_frames_buffered = algorithm_.frames_buffered(); |
- algorithm_.SetPlaybackRate(static_cast<float>(playback_rate)); |
scoped_ptr<AudioBus> bus = |
AudioBus::Create(channels_, buffer_size_in_frames); |
if (playback_rate == 0.0) { |
- int frames_written = |
- algorithm_.FillBuffer(bus.get(), buffer_size_in_frames); |
+ int frames_written = algorithm_.FillBuffer( |
+ bus.get(), buffer_size_in_frames, playback_rate); |
EXPECT_EQ(0, frames_written); |
return; |
} |
+ bool expect_muted = (playback_rate < 0.5 || playback_rate > 4); |
+ |
int frames_remaining = total_frames_requested; |
bool first_fill_buffer = true; |
while (frames_remaining > 0) { |
int frames_requested = std::min(buffer_size_in_frames, frames_remaining); |
- int frames_written = algorithm_.FillBuffer(bus.get(), frames_requested); |
+ int frames_written = |
+ algorithm_.FillBuffer(bus.get(), frames_requested, playback_rate); |
ASSERT_GT(frames_written, 0) << "Requested: " << frames_requested |
<< ", playing at " << playback_rate; |
@@ -203,7 +205,7 @@ class AudioRendererAlgorithmTest : public testing::Test { |
// if at very first buffer-fill only one frame is written, that is zero |
// which might cause exception in CheckFakeData(). |
if (!first_fill_buffer || frames_written > 1) |
- CheckFakeData(bus.get(), frames_written); |
+ ASSERT_EQ(expect_muted, AudioDataIsMuted(bus.get(), frames_written)); |
first_fill_buffer = false; |
frames_remaining -= frames_written; |
@@ -242,7 +244,7 @@ class AudioRendererAlgorithmTest : public testing::Test { |
channels_ = ChannelLayoutToChannelCount(kChannelLayout); |
AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout, |
kSampleRateHz, kBytesPerSample * 8, kNumFrames); |
- algorithm_.Initialize(playback_rate, params); |
+ algorithm_.Initialize(params); |
// A pulse is 6 milliseconds (even number of samples). |
const int kPulseWidthSamples = 6 * kSampleRateHz / 1000; |
@@ -279,7 +281,7 @@ class AudioRendererAlgorithmTest : public testing::Test { |
for (int n = 0; n < kNumRequestedPulses; ++n) { |
int num_buffered_frames = 0; |
while (num_buffered_frames < kPulseWidthSamples) { |
- int num_samples = algorithm_.FillBuffer(output.get(), 1); |
+ int num_samples = algorithm_.FillBuffer(output.get(), 1, playback_rate); |
ASSERT_LE(num_samples, 1); |
if (num_samples > 0) { |
output->CopyPartialFramesTo(0, num_samples, num_buffered_frames, |