OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |