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

Unified Diff: media/filters/ffmpeg_demuxer_unittest.cc

Issue 14217008: Remove reference counting from media::DemuxerStream and friends. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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/ffmpeg_demuxer_unittest.cc
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
index 35c950d42dfdf774e86ffa497e729537c81d990f..266f2219d62afe9df2d3a843fcdabbdf1c24c8d8 100644
--- a/media/filters/ffmpeg_demuxer_unittest.cc
+++ b/media/filters/ffmpeg_demuxer_unittest.cc
@@ -66,8 +66,9 @@ class FFmpegDemuxerTest : public testing::Test {
virtual ~FFmpegDemuxerTest() {
if (demuxer_) {
- demuxer_->Stop(MessageLoop::QuitWhenIdleClosure());
- message_loop_.Run();
+ WaitableMessageLoopEvent event;
+ demuxer_->Stop(event.GetClosure());
+ event.RunAndWait();
}
}
@@ -160,8 +161,7 @@ class FFmpegDemuxerTest : public testing::Test {
void ReadUntilEndOfStream() {
// We should expect an end of stream buffer.
- scoped_refptr<DemuxerStream> audio =
- demuxer_->GetStream(DemuxerStream::AUDIO);
+ DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO);
bool got_eos_buffer = false;
const int kMaxBuffers = 170;
@@ -231,8 +231,7 @@ TEST_F(FFmpegDemuxerTest, Initialize_Successful) {
InitializeDemuxer();
// Video stream should be present.
- scoped_refptr<DemuxerStream> stream =
- demuxer_->GetStream(DemuxerStream::VIDEO);
+ DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO);
ASSERT_TRUE(stream);
EXPECT_EQ(DemuxerStream::VIDEO, stream->type());
@@ -281,8 +280,7 @@ TEST_F(FFmpegDemuxerTest, Initialize_Multitrack) {
InitializeDemuxer();
// Video stream should be VP8.
- scoped_refptr<DemuxerStream> stream =
- demuxer_->GetStream(DemuxerStream::VIDEO);
+ DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO);
ASSERT_TRUE(stream);
EXPECT_EQ(DemuxerStream::VIDEO, stream->type());
EXPECT_EQ(kCodecVP8, stream->video_decoder_config().codec());
@@ -314,8 +312,7 @@ TEST_F(FFmpegDemuxerTest, Read_Audio) {
InitializeDemuxer();
// Attempt a read from the audio stream and run the message loop until done.
- scoped_refptr<DemuxerStream> audio =
- demuxer_->GetStream(DemuxerStream::AUDIO);
+ DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO);
audio->Read(NewReadCB(FROM_HERE, 29, 0));
message_loop_.Run();
@@ -330,8 +327,7 @@ TEST_F(FFmpegDemuxerTest, Read_Video) {
InitializeDemuxer();
// Attempt a read from the video stream and run the message loop until done.
- scoped_refptr<DemuxerStream> video =
- demuxer_->GetStream(DemuxerStream::VIDEO);
+ DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO);
video->Read(NewReadCB(FROM_HERE, 22084, 0));
message_loop_.Run();
@@ -346,10 +342,8 @@ TEST_F(FFmpegDemuxerTest, Read_VideoNonZeroStart) {
InitializeDemuxer();
// Attempt a read from the video stream and run the message loop until done.
- scoped_refptr<DemuxerStream> video =
- demuxer_->GetStream(DemuxerStream::VIDEO);
- scoped_refptr<DemuxerStream> audio =
- demuxer_->GetStream(DemuxerStream::AUDIO);
+ DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO);
+ DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO);
// Check first buffer in video stream.
video->Read(NewReadCB(FROM_HERE, 5636, 400000));
@@ -386,10 +380,8 @@ TEST_F(FFmpegDemuxerTest, Seek) {
InitializeDemuxer();
// Get our streams.
- scoped_refptr<DemuxerStream> video =
- demuxer_->GetStream(DemuxerStream::VIDEO);
- scoped_refptr<DemuxerStream> audio =
- demuxer_->GetStream(DemuxerStream::AUDIO);
+ DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO);
+ DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO);
ASSERT_TRUE(video);
ASSERT_TRUE(audio);
@@ -448,8 +440,7 @@ TEST_F(FFmpegDemuxerTest, Stop) {
InitializeDemuxer();
// Get our stream.
- scoped_refptr<DemuxerStream> audio =
- demuxer_->GetStream(DemuxerStream::AUDIO);
+ DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO);
ASSERT_TRUE(audio);
demuxer_->Stop(NewExpectedClosure());
@@ -476,47 +467,6 @@ TEST_F(FFmpegDemuxerTest, Stop) {
CheckPoint(1);
}
-// The streams can outlive the demuxer because the streams may still be in use
-// by the decoder when the demuxer is destroyed.
-// This test verifies that DemuxerStream::Read() does not use an invalid demuxer
-// pointer (no crash occurs) and calls the callback with an EndOfStream buffer.
-TEST_F(FFmpegDemuxerTest, StreamReadAfterStopAndDemuxerDestruction) {
acolwell GONE FROM CHROMIUM 2013/04/23 03:20:42 I feel like this test is still useful w/o destruct
scherkus (not reviewing) 2013/04/23 18:43:40 Yes and that is covered by the test above (FFmpegD
- CreateDemuxer("bear-320x240.webm");
- InitializeDemuxer();
-
- // Get our stream.
- scoped_refptr<DemuxerStream> audio =
- demuxer_->GetStream(DemuxerStream::AUDIO);
- ASSERT_TRUE(audio);
-
- demuxer_->Stop(MessageLoop::QuitWhenIdleClosure());
- message_loop_.Run();
-
- // Expect all calls in sequence.
- InSequence s;
-
- // Create our mocked callback. The Callback created by base::Bind() will take
- // ownership of this pointer.
- StrictMock<MockReadCB>* callback = new StrictMock<MockReadCB>();
-
- // The callback should be immediately deleted. We'll use a checkpoint to
- // verify that it has indeed been deleted.
- EXPECT_CALL(*callback, Run(DemuxerStream::kOk, IsEndOfStreamBuffer()));
- EXPECT_CALL(*callback, OnDelete());
- EXPECT_CALL(*this, CheckPoint(1));
-
- // Destroy the demuxer. |audio| now has a demuxer_ pointer to invalid memory.
- demuxer_.reset();
-
- // Attempt the read...
- audio->Read(base::Bind(&MockReadCB::Run, callback));
-
- message_loop_.RunUntilIdle();
-
- // ...and verify that |callback| was deleted.
- CheckPoint(1);
-}
-
TEST_F(FFmpegDemuxerTest, DisableAudioStream) {
// We are doing the following things here:
// 1. Initialize the demuxer with audio and video stream.
@@ -530,10 +480,8 @@ TEST_F(FFmpegDemuxerTest, DisableAudioStream) {
message_loop_.RunUntilIdle();
// Get our streams.
- scoped_refptr<DemuxerStream> video =
- demuxer_->GetStream(DemuxerStream::VIDEO);
- scoped_refptr<DemuxerStream> audio =
- demuxer_->GetStream(DemuxerStream::AUDIO);
+ DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO);
+ DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO);
ASSERT_TRUE(video);
ASSERT_TRUE(audio);
@@ -560,10 +508,8 @@ TEST_F(FFmpegDemuxerTest, SeekWithCuesBeforeFirstCluster) {
InitializeDemuxer();
// Get our streams.
- scoped_refptr<DemuxerStream> video =
- demuxer_->GetStream(DemuxerStream::VIDEO);
- scoped_refptr<DemuxerStream> audio =
- demuxer_->GetStream(DemuxerStream::AUDIO);
+ DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO);
+ DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO);
ASSERT_TRUE(video);
ASSERT_TRUE(audio);

Powered by Google App Engine
This is Rietveld 408576698