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

Side by Side Diff: media/filters/ffmpeg_demuxer_unittest.cc

Issue 8890071: Stop audio FFmpegDemuxerStreams if we get notified that audio rendering is disabled. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: one more time Created 9 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <deque> 5 #include <deque>
6 6
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/threading/thread.h" 9 #include "base/threading/thread.h"
10 #include "media/base/filters.h" 10 #include "media/base/filters.h"
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 message_loop_.RunAllPending(); 484 message_loop_.RunAllPending();
485 485
486 // Get our streams. 486 // Get our streams.
487 scoped_refptr<DemuxerStream> video = 487 scoped_refptr<DemuxerStream> video =
488 demuxer_->GetStream(DemuxerStream::VIDEO); 488 demuxer_->GetStream(DemuxerStream::VIDEO);
489 scoped_refptr<DemuxerStream> audio = 489 scoped_refptr<DemuxerStream> audio =
490 demuxer_->GetStream(DemuxerStream::AUDIO); 490 demuxer_->GetStream(DemuxerStream::AUDIO);
491 ASSERT_TRUE(video); 491 ASSERT_TRUE(video);
492 ASSERT_TRUE(audio); 492 ASSERT_TRUE(audio);
493 493
494 // Attempt a read from the video stream and run the message loop until done. 494 // Attempt a read from the video stream: it should return valid data.
495 scoped_refptr<DemuxerStreamReader> reader(new DemuxerStreamReader()); 495 scoped_refptr<DemuxerStreamReader> reader(new DemuxerStreamReader());
496 reader->Read(video); 496 reader->Read(video);
497 message_loop_.RunAllPending(); 497 message_loop_.RunAllPending();
498 EXPECT_TRUE(reader->called()); 498 ASSERT_TRUE(reader->called());
499 ValidateBuffer(FROM_HERE, reader->buffer(), 22084, 0); 499 ValidateBuffer(FROM_HERE, reader->buffer(), 22084, 0);
500 500
501 // We should have read a little bit into the file.
502 int64 position = 0;
503 int64 size = 0;
504 EXPECT_TRUE(demuxer_->GetPosition(&position));
505 EXPECT_TRUE(demuxer_->GetSize(&size));
506 EXPECT_LT(position, size);
507
508 // Attempt a read from the audio stream: it should immediately return end of
509 // stream without requiring the message loop to read data.
501 reader->Reset(); 510 reader->Reset();
502 reader->Read(audio); 511 reader->Read(audio);
503 message_loop_.RunAllPending(); 512 ASSERT_TRUE(reader->called());
504 EXPECT_TRUE(reader->called());
505 EXPECT_TRUE(reader->buffer()->IsEndOfStream()); 513 EXPECT_TRUE(reader->buffer()->IsEndOfStream());
514
515 // As a sanity check, verify that while we're getting end of stream packets
516 // we aren't at the end of the file.
517 EXPECT_TRUE(demuxer_->GetPosition(&position));
acolwell GONE FROM CHROMIUM 2011/12/13 16:45:44 This feels fragile & too indirect. What about just
scherkus (not reviewing) 2011/12/13 17:24:56 I'll give it a shot.
518 EXPECT_LT(position, size);
506 } 519 }
507 520
508 class MockFFmpegDemuxer : public FFmpegDemuxer { 521 class MockFFmpegDemuxer : public FFmpegDemuxer {
509 public: 522 public:
510 explicit MockFFmpegDemuxer(MessageLoop* message_loop) 523 explicit MockFFmpegDemuxer(MessageLoop* message_loop)
511 : FFmpegDemuxer(message_loop, true) { 524 : FFmpegDemuxer(message_loop, true) {
512 } 525 }
513 virtual ~MockFFmpegDemuxer() {} 526 virtual ~MockFFmpegDemuxer() {}
514 527
515 MOCK_METHOD0(WaitForRead, size_t()); 528 MOCK_METHOD0(WaitForRead, size_t());
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 message_loop_.RunAllPending(); 709 message_loop_.RunAllPending();
697 EXPECT_TRUE(reader->called()); 710 EXPECT_TRUE(reader->called());
698 ValidateBuffer(FROM_HERE, reader->buffer(), 1740, 2436000); 711 ValidateBuffer(FROM_HERE, reader->buffer(), 1740, 2436000);
699 712
700 // Manually release the last reference to the buffer and verify it was freed. 713 // Manually release the last reference to the buffer and verify it was freed.
701 reader->Reset(); 714 reader->Reset();
702 message_loop_.RunAllPending(); 715 message_loop_.RunAllPending();
703 } 716 }
704 717
705 } // namespace media 718 } // namespace media
OLDNEW
« media/filters/ffmpeg_demuxer.cc ('K') | « media/filters/ffmpeg_demuxer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698