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

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

Issue 353163004: Fix missing seek information when video has no start time. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 // Fixture members. 186 // Fixture members.
187 scoped_ptr<FileDataSource> data_source_; 187 scoped_ptr<FileDataSource> data_source_;
188 scoped_ptr<FFmpegDemuxer> demuxer_; 188 scoped_ptr<FFmpegDemuxer> demuxer_;
189 StrictMock<MockDemuxerHost> host_; 189 StrictMock<MockDemuxerHost> host_;
190 base::MessageLoop message_loop_; 190 base::MessageLoop message_loop_;
191 191
192 AVFormatContext* format_context() { 192 AVFormatContext* format_context() {
193 return demuxer_->glue_->format_context(); 193 return demuxer_->glue_->format_context();
194 } 194 }
195 195
196 int preferred_seeking_stream_index() const {
197 return demuxer_->preferred_stream_for_seeking_.first;
198 }
199
196 void ReadUntilEndOfStream(DemuxerStream* stream) { 200 void ReadUntilEndOfStream(DemuxerStream* stream) {
197 bool got_eos_buffer = false; 201 bool got_eos_buffer = false;
198 const int kMaxBuffers = 170; 202 const int kMaxBuffers = 170;
199 for (int i = 0; !got_eos_buffer && i < kMaxBuffers; i++) { 203 for (int i = 0; !got_eos_buffer && i < kMaxBuffers; i++) {
200 stream->Read(base::Bind(&EosOnReadDone, &got_eos_buffer)); 204 stream->Read(base::Bind(&EosOnReadDone, &got_eos_buffer));
201 message_loop_.Run(); 205 message_loop_.Run();
202 } 206 }
203 207
204 EXPECT_TRUE(got_eos_buffer); 208 EXPECT_TRUE(got_eos_buffer);
205 } 209 }
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 ASSERT_TRUE(text_stream); 409 ASSERT_TRUE(text_stream);
406 EXPECT_EQ(DemuxerStream::TEXT, text_stream->type()); 410 EXPECT_EQ(DemuxerStream::TEXT, text_stream->type());
407 411
408 text_stream->Read(NewReadCB(FROM_HERE, 31, 0)); 412 text_stream->Read(NewReadCB(FROM_HERE, 31, 0));
409 message_loop_.Run(); 413 message_loop_.Run();
410 414
411 text_stream->Read(NewReadCB(FROM_HERE, 19, 500000)); 415 text_stream->Read(NewReadCB(FROM_HERE, 19, 500000));
412 message_loop_.Run(); 416 message_loop_.Run();
413 } 417 }
414 418
419 TEST_F(FFmpegDemuxerTest, SeekInitialized_NoVideoStartTime) {
420 CreateDemuxer("audio-start-time-only.webm");
421 InitializeDemuxer();
422 EXPECT_EQ(0, preferred_seeking_stream_index());
423 }
424
415 TEST_F(FFmpegDemuxerTest, Read_VideoPositiveStartTime) { 425 TEST_F(FFmpegDemuxerTest, Read_VideoPositiveStartTime) {
416 const int64 kTimelineOffsetMs = 1352550896000LL; 426 const int64 kTimelineOffsetMs = 1352550896000LL;
417 427
418 // Test the start time is the first timestamp of the video and audio stream. 428 // Test the start time is the first timestamp of the video and audio stream.
419 CreateDemuxer("nonzero-start-time.webm"); 429 CreateDemuxer("nonzero-start-time.webm");
420 InitializeDemuxerWithTimelineOffset( 430 InitializeDemuxerWithTimelineOffset(
421 false, base::Time::FromJsTime(kTimelineOffsetMs)); 431 false, base::Time::FromJsTime(kTimelineOffsetMs));
422 432
423 // Attempt a read from the video stream and run the message loop until done. 433 // Attempt a read from the video stream and run the message loop until done.
424 DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); 434 DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO);
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 demuxer_->Stop(event.GetClosure()); 856 demuxer_->Stop(event.GetClosure());
847 event.RunAndWait(); 857 event.RunAndWait();
848 demuxer_.reset(); 858 demuxer_.reset();
849 data_source_.reset(); 859 data_source_.reset();
850 } 860 }
851 } 861 }
852 862
853 #endif 863 #endif
854 864
855 } // namespace media 865 } // 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