Chromium Code Reviews| 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 |