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

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

Issue 416393003: Make Demuxer::Stop() synchronous. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android Created 6 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/filters/ffmpeg_demuxer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « media/filters/ffmpeg_demuxer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698