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

Unified Diff: media/filters/audio_renderer_impl_unittest.cc

Issue 11275087: Move OnDecoderInitDone() from decoder to pipeline thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unittest. Created 8 years, 1 month 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
« no previous file with comments | « media/filters/audio_renderer_impl.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/audio_renderer_impl_unittest.cc
diff --git a/media/filters/audio_renderer_impl_unittest.cc b/media/filters/audio_renderer_impl_unittest.cc
index fe901f099465cc591d457303f3dac321e6ca7e73..dff17330c98b1b6111e5ea08522ed68e084cdd2d 100644
--- a/media/filters/audio_renderer_impl_unittest.cc
+++ b/media/filters/audio_renderer_impl_unittest.cc
@@ -5,6 +5,7 @@
#include "base/bind.h"
#include "base/callback_helpers.h"
#include "base/gtest_prod_util.h"
+#include "base/message_loop.h"
#include "base/stl_util.h"
#include "media/base/data_buffer.h"
#include "media/base/mock_audio_renderer_sink.h"
@@ -58,6 +59,7 @@ class AudioRendererImplTest : public ::testing::Test {
}
virtual ~AudioRendererImplTest() {
+ message_loop_.RunUntilIdle();
renderer_->Stop(NewExpectedClosure());
}
@@ -101,6 +103,7 @@ class AudioRendererImplTest : public ::testing::Test {
.WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
InitializeWithStatus(PIPELINE_OK);
+ message_loop_.RunUntilIdle();
}
void InitializeWithStatus(PipelineStatus expected) {
@@ -127,6 +130,7 @@ class AudioRendererImplTest : public ::testing::Test {
EXPECT_CALL(*decoder_, Read(_));
renderer_->Preroll(base::TimeDelta(), NewPrerollCB());
EXPECT_CALL(*this, OnPrerollComplete(PIPELINE_OK));
+ message_loop_.RunUntilIdle();
DeliverRemainingAudio();
}
@@ -193,7 +197,7 @@ class AudioRendererImplTest : public ::testing::Test {
ChannelLayoutToChannelCount(decoder_->channel_layout());
uint32 requested_frames = size / bytes_per_frame;
uint32 frames_read = renderer_->FillBuffer(
- buffer.get(), requested_frames, base::TimeDelta());
+ buffer.get(), requested_frames, 0);
if (frames_read > 0 && muted) {
*muted = (buffer[0] == kMutedAudio);
@@ -229,6 +233,7 @@ class AudioRendererImplTest : public ::testing::Test {
AudioRendererImpl::AudioDecoderList decoders_;
AudioDecoder::ReadCB read_cb_;
base::TimeDelta next_timestamp_;
+ MessageLoop message_loop_;
private:
void SaveReadCallback(const AudioDecoder::ReadCB& callback) {
@@ -301,8 +306,20 @@ TEST_F(AudioRendererImplTest, EndOfStream) {
Play();
// Drain internal buffer, we should have a pending read.
+ int audio_bytes_filled = bytes_buffered();
EXPECT_CALL(*decoder_, Read(_));
- EXPECT_TRUE(ConsumeBufferedData(bytes_buffered(), NULL));
+ EXPECT_TRUE(ConsumeBufferedData(audio_bytes_filled, NULL));
+
+ // Check and clear |earliest_end_time_| so the ended event fires on the next
+ // ConsumeBufferedData() call.
+ base::TimeDelta audio_play_time = base::TimeDelta::FromMicroseconds(
+ audio_bytes_filled * base::Time::kMicrosecondsPerSecond /
+ static_cast<float>(renderer_->audio_parameters_.GetBytesPerSecond()));
+ base::TimeDelta time_until_ended =
+ renderer_->earliest_end_time_ - base::Time::Now();
+ EXPECT_TRUE(time_until_ended > base::TimeDelta());
+ EXPECT_TRUE(time_until_ended <= audio_play_time);
+ renderer_->earliest_end_time_ = base::Time();
// Fulfill the read with an end-of-stream packet, we shouldn't report ended
// nor have a read until we drain the internal buffer.
@@ -390,6 +407,10 @@ TEST_F(AudioRendererImplTest, Underflow_EndOfStream) {
DeliverEndOfStream();
EXPECT_CALL(*this, OnEnded());
+ // Clear |earliest_end_time_| so ended fires on the next ConsumeBufferedData()
+ // call.
+ renderer_->earliest_end_time_ = base::Time();
+
EXPECT_FALSE(ConsumeBufferedData(kDataSize, &muted));
EXPECT_FALSE(muted);
}
« no previous file with comments | « media/filters/audio_renderer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698