| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <deque> | 6 #include <deque> |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 }; | 60 }; |
| 61 | 61 |
| 62 | 62 |
| 63 // Fixture class to facilitate writing tests. Takes care of setting up the | 63 // Fixture class to facilitate writing tests. Takes care of setting up the |
| 64 // FFmpeg, pipeline and filter host mocks. | 64 // FFmpeg, pipeline and filter host mocks. |
| 65 class FFmpegDemuxerTest : public testing::Test { | 65 class FFmpegDemuxerTest : public testing::Test { |
| 66 protected: | 66 protected: |
| 67 FFmpegDemuxerTest() {} | 67 FFmpegDemuxerTest() {} |
| 68 | 68 |
| 69 virtual ~FFmpegDemuxerTest() { | 69 virtual ~FFmpegDemuxerTest() { |
| 70 if (demuxer_) { | 70 if (demuxer_) |
| 71 WaitableMessageLoopEvent event; | 71 demuxer_->Stop(); |
| 72 demuxer_->Stop(event.GetClosure()); | |
| 73 event.RunAndWait(); | |
| 74 } | |
| 75 } | 72 } |
| 76 | 73 |
| 77 void CreateDemuxer(const std::string& name) { | 74 void CreateDemuxer(const std::string& name) { |
| 78 CHECK(!demuxer_); | 75 CHECK(!demuxer_); |
| 79 | 76 |
| 80 EXPECT_CALL(host_, AddBufferedTimeRange(_, _)).Times(AnyNumber()); | 77 EXPECT_CALL(host_, AddBufferedTimeRange(_, _)).Times(AnyNumber()); |
| 81 | 78 |
| 82 CreateDataSource(name); | 79 CreateDataSource(name); |
| 83 | 80 |
| 84 Demuxer::NeedKeyCB need_key_cb = | 81 Demuxer::NeedKeyCB need_key_cb = |
| (...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 746 TEST_F(FFmpegDemuxerTest, Stop) { | 743 TEST_F(FFmpegDemuxerTest, Stop) { |
| 747 // Tests that calling Read() on a stopped demuxer stream immediately deletes | 744 // Tests that calling Read() on a stopped demuxer stream immediately deletes |
| 748 // the callback. | 745 // the callback. |
| 749 CreateDemuxer("bear-320x240.webm"); | 746 CreateDemuxer("bear-320x240.webm"); |
| 750 InitializeDemuxer(); | 747 InitializeDemuxer(); |
| 751 | 748 |
| 752 // Get our stream. | 749 // Get our stream. |
| 753 DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); | 750 DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); |
| 754 ASSERT_TRUE(audio); | 751 ASSERT_TRUE(audio); |
| 755 | 752 |
| 756 WaitableMessageLoopEvent event; | 753 demuxer_->Stop(); |
| 757 demuxer_->Stop(event.GetClosure()); | |
| 758 event.RunAndWait(); | |
| 759 | 754 |
| 760 // Reads after being stopped are all EOS buffers. | 755 // Reads after being stopped are all EOS buffers. |
| 761 StrictMock<MockReadCB> callback; | 756 StrictMock<MockReadCB> callback; |
| 762 EXPECT_CALL(callback, Run(DemuxerStream::kOk, IsEndOfStreamBuffer())); | 757 EXPECT_CALL(callback, Run(DemuxerStream::kOk, IsEndOfStreamBuffer())); |
| 763 | 758 |
| 764 // Attempt the read... | 759 // Attempt the read... |
| 765 audio->Read(base::Bind(&MockReadCB::Run, base::Unretained(&callback))); | 760 audio->Read(base::Bind(&MockReadCB::Run, base::Unretained(&callback))); |
| 766 message_loop_.RunUntilIdle(); | 761 message_loop_.RunUntilIdle(); |
| 767 | 762 |
| 768 // Don't let the test call Stop() again. | 763 // Don't let the test call Stop() again. |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 InitializeDemuxer(); | 902 InitializeDemuxer(); |
| 908 | 903 |
| 909 // Ensure the expected streams are present. | 904 // Ensure the expected streams are present. |
| 910 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); | 905 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| 911 ASSERT_TRUE(stream); | 906 ASSERT_TRUE(stream); |
| 912 stream->EnableBitstreamConverter(); | 907 stream->EnableBitstreamConverter(); |
| 913 | 908 |
| 914 stream->Read(base::Bind(&ValidateAnnexB, stream)); | 909 stream->Read(base::Bind(&ValidateAnnexB, stream)); |
| 915 message_loop_.Run(); | 910 message_loop_.Run(); |
| 916 | 911 |
| 917 WaitableMessageLoopEvent event; | 912 demuxer_->Stop(); |
| 918 demuxer_->Stop(event.GetClosure()); | |
| 919 event.RunAndWait(); | |
| 920 demuxer_.reset(); | 913 demuxer_.reset(); |
| 921 data_source_.reset(); | 914 data_source_.reset(); |
| 922 } | 915 } |
| 923 } | 916 } |
| 924 | 917 |
| 925 TEST_F(FFmpegDemuxerTest, Rotate_Metadata_0) { | 918 TEST_F(FFmpegDemuxerTest, Rotate_Metadata_0) { |
| 926 CreateDemuxer("bear_rotate_0.mp4"); | 919 CreateDemuxer("bear_rotate_0.mp4"); |
| 927 InitializeDemuxer(); | 920 InitializeDemuxer(); |
| 928 | 921 |
| 929 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); | 922 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 954 InitializeDemuxer(); | 947 InitializeDemuxer(); |
| 955 | 948 |
| 956 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); | 949 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| 957 ASSERT_TRUE(stream); | 950 ASSERT_TRUE(stream); |
| 958 ASSERT_EQ(VIDEO_ROTATION_270, stream->video_rotation()); | 951 ASSERT_EQ(VIDEO_ROTATION_270, stream->video_rotation()); |
| 959 } | 952 } |
| 960 | 953 |
| 961 #endif | 954 #endif |
| 962 | 955 |
| 963 } // namespace media | 956 } // namespace media |
| OLD | NEW |