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

Unified Diff: media/filters/video_renderer_base_unittest.cc

Issue 10836167: Move VideoDecoder initialization into VideoRendererBase. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 4 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/filters/video_renderer_base_unittest.cc
diff --git a/media/filters/video_renderer_base_unittest.cc b/media/filters/video_renderer_base_unittest.cc
index 2c3a54651f7ae8c60d2d930a5f03004e667d137d..4c90500680664d01b444d3f078cbcafd8cf56b46 100644
--- a/media/filters/video_renderer_base_unittest.cc
+++ b/media/filters/video_renderer_base_unittest.cc
@@ -34,10 +34,15 @@ static const int kVideoDuration = kFrameDuration * 100;
static const int kEndOfStream = -1;
static const gfx::Size kNaturalSize(16u, 16u);
+ACTION_P(RunPipelineStatusCB1, status) {
+ arg1.Run(status);
+}
+
class VideoRendererBaseTest : public ::testing::Test {
public:
VideoRendererBaseTest()
: decoder_(new MockVideoDecoder()),
+ demuxer_stream_(new MockDemuxerStream()),
cv_(&lock_),
event_(false, false),
timeout_(TestTimeouts::action_timeout()),
@@ -51,6 +56,9 @@ class VideoRendererBaseTest : public ::testing::Test {
base::Bind(&VideoRendererBaseTest::OnSetOpaque, base::Unretained(this)),
true);
+ EXPECT_CALL(*demuxer_stream_, type())
+ .WillRepeatedly(Return(DemuxerStream::VIDEO));
+
// We expect these to be called but we don't care how/when.
EXPECT_CALL(*decoder_, Stop(_))
.WillRepeatedly(RunClosure());
@@ -98,13 +106,29 @@ class VideoRendererBaseTest : public ::testing::Test {
InSequence s;
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
scherkus (not reviewing) 2012/08/14 22:00:24 fix indent
acolwell GONE FROM CHROMIUM 2012/08/15 21:36:57 Done.
+
// Set playback rate before anything else happens.
renderer_->SetPlaybackRate(1.0f);
// Initialize, we shouldn't have any reads.
+ InitializeRenderer(PIPELINE_OK);
+
+ // We expect the video size to be set.
+ EXPECT_CALL(*this, OnNaturalSizeChanged(kNaturalSize));
+
+ // Start prerolling.
+ Preroll(0);
+ }
+
+ void InitializeRenderer(PipelineStatus expected_status) {
+ VideoRendererBase::VideoDecoderList decoders;
+ decoders.push_back(decoder_);
renderer_->Initialize(
- decoder_,
- NewExpectedStatusCB(PIPELINE_OK),
+ demuxer_stream_,
+ decoders,
+ NewExpectedStatusCB(expected_status),
base::Bind(&MockStatisticsCB::OnStatistics,
base::Unretained(&statistics_cb_object_)),
base::Bind(&VideoRendererBaseTest::OnTimeUpdate,
@@ -116,12 +140,6 @@ class VideoRendererBaseTest : public ::testing::Test {
base::Bind(&VideoRendererBaseTest::GetTime, base::Unretained(this)),
base::Bind(&VideoRendererBaseTest::GetDuration,
base::Unretained(this)));
-
- // We expect the video size to be set.
- EXPECT_CALL(*this, OnNaturalSizeChanged(kNaturalSize));
-
- // Start prerolling.
- Preroll(0);
}
// Instead of immediately satisfying a decoder Read request, queue it up.
@@ -311,6 +329,7 @@ class VideoRendererBaseTest : public ::testing::Test {
// Fixture members.
scoped_refptr<VideoRendererBase> renderer_;
scoped_refptr<MockVideoDecoder> decoder_;
+ scoped_refptr<MockDemuxerStream> demuxer_stream_;
MockStatisticsCB statistics_cb_object_;
// Receives all the buffers that renderer had provided to |decoder_|.
@@ -671,4 +690,13 @@ TEST_F(VideoRendererBaseTest, AbortPendingRead_Preroll) {
Shutdown();
}
+TEST_F(VideoRendererBaseTest, VideoDecoder_InitFailure) {
+ InSequence s;
+
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_ERROR_DECODE));
+ InitializeRenderer(PIPELINE_ERROR_DECODE);
+
scherkus (not reviewing) 2012/08/14 22:00:24 remove extra newline
acolwell GONE FROM CHROMIUM 2012/08/15 21:36:57 Done.
+ }
scherkus (not reviewing) 2012/08/14 22:00:24 fix indent
acolwell GONE FROM CHROMIUM 2012/08/15 21:36:57 Done.
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698