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

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

Issue 2440563004: Switch to using an explicit ended signal instead of time comparison. (Closed)
Patch Set: Fix ended event in ARI. Created 4 years, 2 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
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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <algorithm> 8 #include <algorithm>
9 #include <deque> 9 #include <deque>
10 #include <string> 10 #include <string>
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 message_loop_.task_runner(), data_source_.get(), 103 message_loop_.task_runner(), data_source_.get(),
104 encrypted_media_init_data_cb, tracks_updated_cb, new MediaLog())); 104 encrypted_media_init_data_cb, tracks_updated_cb, new MediaLog()));
105 } 105 }
106 106
107 MOCK_METHOD1(CheckPoint, void(int v)); 107 MOCK_METHOD1(CheckPoint, void(int v));
108 108
109 void InitializeDemuxerInternal(bool enable_text, 109 void InitializeDemuxerInternal(bool enable_text,
110 media::PipelineStatus expected_pipeline_status, 110 media::PipelineStatus expected_pipeline_status,
111 base::Time timeline_offset) { 111 base::Time timeline_offset) {
112 if (expected_pipeline_status == PIPELINE_OK) 112 if (expected_pipeline_status == PIPELINE_OK)
113 EXPECT_CALL(host_, SetDuration(_)); 113 EXPECT_CALL(host_, SetDuration(_)).Times(AnyNumber());
114 WaitableMessageLoopEvent event; 114 WaitableMessageLoopEvent event;
115 demuxer_->Initialize(&host_, event.GetPipelineStatusCB(), enable_text); 115 demuxer_->Initialize(&host_, event.GetPipelineStatusCB(), enable_text);
116 demuxer_->timeline_offset_ = timeline_offset; 116 demuxer_->timeline_offset_ = timeline_offset;
117 event.RunAndWaitForStatus(expected_pipeline_status); 117 event.RunAndWaitForStatus(expected_pipeline_status);
118 } 118 }
119 119
120 void InitializeDemuxer() { 120 void InitializeDemuxer() {
121 InitializeDemuxerInternal(/*enable_text=*/false, PIPELINE_OK, base::Time()); 121 InitializeDemuxerInternal(/*enable_text=*/false, PIPELINE_OK, base::Time());
122 } 122 }
123 123
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 MOCK_METHOD2(OnEncryptedMediaInitData, 215 MOCK_METHOD2(OnEncryptedMediaInitData,
216 void(EmeInitDataType init_data_type, 216 void(EmeInitDataType init_data_type,
217 const std::vector<uint8_t>& init_data)); 217 const std::vector<uint8_t>& init_data));
218 218
219 void OnMediaTracksUpdated(std::unique_ptr<MediaTracks> tracks) { 219 void OnMediaTracksUpdated(std::unique_ptr<MediaTracks> tracks) {
220 CHECK(tracks.get()); 220 CHECK(tracks.get());
221 media_tracks_ = std::move(tracks); 221 media_tracks_ = std::move(tracks);
222 } 222 }
223 223
224 // Accessor to demuxer internals. 224 // Accessor to demuxer internals.
225 void set_duration_known(bool duration_known) { 225 void SetDurationKnown(bool duration_known) {
226 demuxer_->duration_known_ = duration_known; 226 demuxer_->duration_known_ = duration_known;
227 if (!duration_known)
228 demuxer_->duration_ = kInfiniteDuration;
227 } 229 }
228 230
229 bool IsStreamStopped(DemuxerStream::Type type) { 231 bool IsStreamStopped(DemuxerStream::Type type) {
230 DemuxerStream* stream = demuxer_->GetStream(type); 232 DemuxerStream* stream = demuxer_->GetStream(type);
231 CHECK(stream); 233 CHECK(stream);
232 return !static_cast<FFmpegDemuxerStream*>(stream)->demuxer_; 234 return !static_cast<FFmpegDemuxerStream*>(stream)->demuxer_;
233 } 235 }
234 236
235 // Fixture members. 237 // Fixture members.
236 std::unique_ptr<FileDataSource> data_source_; 238 std::unique_ptr<FileDataSource> data_source_;
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 base::RunLoop().Run(); 798 base::RunLoop().Run();
797 } 799 }
798 800
799 EXPECT_TRUE(got_eos_buffer); 801 EXPECT_TRUE(got_eos_buffer);
800 } 802 }
801 803
802 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration) { 804 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration) {
803 // Verify that end of stream buffers are created. 805 // Verify that end of stream buffers are created.
804 CreateDemuxer("bear-320x240.webm"); 806 CreateDemuxer("bear-320x240.webm");
805 InitializeDemuxer(); 807 InitializeDemuxer();
806 set_duration_known(false); 808 SetDurationKnown(false);
807 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2767))); 809 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2767)));
808 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); 810 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO));
809 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::VIDEO)); 811 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::VIDEO));
810 } 812 }
811 813
812 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_VideoOnly) { 814 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_VideoOnly) {
813 // Verify that end of stream buffers are created. 815 // Verify that end of stream buffers are created.
814 CreateDemuxer("bear-320x240-video-only.webm"); 816 CreateDemuxer("bear-320x240-video-only.webm");
815 InitializeDemuxer(); 817 InitializeDemuxer();
816 set_duration_known(false); 818 SetDurationKnown(false);
817 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2736))); 819 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2736)));
818 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::VIDEO)); 820 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::VIDEO));
819 } 821 }
820 822
821 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_AudioOnly) { 823 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_AudioOnly) {
822 // Verify that end of stream buffers are created. 824 // Verify that end of stream buffers are created.
823 CreateDemuxer("bear-320x240-audio-only.webm"); 825 CreateDemuxer("bear-320x240-audio-only.webm");
824 InitializeDemuxer(); 826 InitializeDemuxer();
825 set_duration_known(false); 827 SetDurationKnown(false);
826 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2767))); 828 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2767)));
827 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); 829 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO));
828 } 830 }
829 831
830 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_UnsupportedStream) { 832 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_UnsupportedStream) {
831 // Verify that end of stream buffers are created and we don't crash 833 // Verify that end of stream buffers are created and we don't crash
832 // if there are streams in the file that we don't support. 834 // if there are streams in the file that we don't support.
833 CreateDemuxer("vorbis_audio_wmv_video.mkv"); 835 CreateDemuxer("vorbis_audio_wmv_video.mkv");
834 InitializeDemuxer(); 836 InitializeDemuxer();
835 set_duration_known(false); 837 SetDurationKnown(false);
836 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(1014))); 838 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(1014)));
837 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); 839 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO));
838 } 840 }
839 841
840 TEST_F(FFmpegDemuxerTest, Seek) { 842 TEST_F(FFmpegDemuxerTest, Seek) {
841 // We're testing that the demuxer frees all queued packets when it receives 843 // We're testing that the demuxer frees all queued packets when it receives
842 // a Seek(). 844 // a Seek().
843 CreateDemuxer("bear-320x240.webm"); 845 CreateDemuxer("bear-320x240.webm");
844 InitializeDemuxer(); 846 InitializeDemuxer();
845 847
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 1397
1396 const MediaTrack& audio_track = *(media_tracks_->tracks()[1]); 1398 const MediaTrack& audio_track = *(media_tracks_->tracks()[1]);
1397 EXPECT_EQ(audio_track.type(), MediaTrack::Audio); 1399 EXPECT_EQ(audio_track.type(), MediaTrack::Audio);
1398 EXPECT_EQ(audio_track.bytestream_track_id(), 2); 1400 EXPECT_EQ(audio_track.bytestream_track_id(), 2);
1399 EXPECT_EQ(audio_track.kind(), "main"); 1401 EXPECT_EQ(audio_track.kind(), "main");
1400 EXPECT_EQ(audio_track.label(), ""); 1402 EXPECT_EQ(audio_track.label(), "");
1401 EXPECT_EQ(audio_track.language(), ""); 1403 EXPECT_EQ(audio_track.language(), "");
1402 } 1404 }
1403 1405
1404 } // namespace media 1406 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698