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

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

Issue 220103002: Fix unit test failures with estimated durations and splice frames. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix removal of old buffers. Created 6 years, 8 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/chunk_demuxer_unittest.cc ('k') | media/filters/source_buffer_stream.cc » ('j') | 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 "media/filters/pipeline_integration_test_base.h" 5 #include "media/filters/pipeline_integration_test_base.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 55 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
56 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35 56 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35
57 }; 57 };
58 58
59 const int kAppendWholeFile = -1; 59 const int kAppendWholeFile = -1;
60 60
61 // Constants for the Media Source config change tests. 61 // Constants for the Media Source config change tests.
62 const int kAppendTimeSec = 1; 62 const int kAppendTimeSec = 1;
63 const int kAppendTimeMs = kAppendTimeSec * 1000; 63 const int kAppendTimeMs = kAppendTimeSec * 1000;
64 const int k320WebMFileDurationMs = 2736; 64 const int k320WebMFileDurationMs = 2736;
65 const int k640WebMFileDurationMs = 2762; 65 const int k640WebMFileDurationMs = 2749;
66 const int kOpusEndTrimmingWebMFileDurationMs = 2771; 66 const int kOpusEndTrimmingWebMFileDurationMs = 2771;
67 const int kVP9WebMFileDurationMs = 2736; 67 const int kVP9WebMFileDurationMs = 2736;
68 const int kVP8AWebMFileDurationMs = 2734; 68 const int kVP8AWebMFileDurationMs = 2733;
69 69
70 #if defined(USE_PROPRIETARY_CODECS) 70 #if defined(USE_PROPRIETARY_CODECS)
71 const int k640IsoFileDurationMs = 2737; 71 const int k640IsoFileDurationMs = 2737;
72 const int k640IsoCencFileDurationMs = 2736; 72 const int k640IsoCencFileDurationMs = 2736;
73 const int k1280IsoFileDurationMs = 2736; 73 const int k1280IsoFileDurationMs = 2736;
74 const int k1280IsoAVC3FileDurationMs = 2736; 74 const int k1280IsoAVC3FileDurationMs = 2736;
75 #endif // defined(USE_PROPRIETARY_CODECS) 75 #endif // defined(USE_PROPRIETARY_CODECS)
76 76
77 // Return a timeline offset for bear-320x240-live.webm. 77 // Return a timeline offset for bear-320x240-live.webm.
78 static base::Time kLiveTimelineOffset() { 78 static base::Time kLiveTimelineOffset() {
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 const bool use_legacy_frame_processor) 291 const bool use_legacy_frame_processor)
292 : file_path_(GetTestDataFilePath(filename)), 292 : file_path_(GetTestDataFilePath(filename)),
293 current_position_(0), 293 current_position_(0),
294 initial_append_size_(initial_append_size), 294 initial_append_size_(initial_append_size),
295 mimetype_(mimetype), 295 mimetype_(mimetype),
296 chunk_demuxer_(new ChunkDemuxer( 296 chunk_demuxer_(new ChunkDemuxer(
297 base::Bind(&MockMediaSource::DemuxerOpened, base::Unretained(this)), 297 base::Bind(&MockMediaSource::DemuxerOpened, base::Unretained(this)),
298 base::Bind(&MockMediaSource::DemuxerNeedKey, 298 base::Bind(&MockMediaSource::DemuxerNeedKey,
299 base::Unretained(this)), 299 base::Unretained(this)),
300 LogCB(), 300 LogCB(),
301 false)), 301 true)),
302 owned_chunk_demuxer_(chunk_demuxer_), 302 owned_chunk_demuxer_(chunk_demuxer_),
303 use_legacy_frame_processor_(use_legacy_frame_processor) { 303 use_legacy_frame_processor_(use_legacy_frame_processor) {
304 304
305 file_data_ = ReadTestDataFile(filename); 305 file_data_ = ReadTestDataFile(filename);
306 306
307 if (initial_append_size_ == kAppendWholeFile) 307 if (initial_append_size_ == kAppendWholeFile)
308 initial_append_size_ = file_data_->data_size(); 308 initial_append_size_ = file_data_->data_size();
309 309
310 DCHECK_GT(initial_append_size_, 0); 310 DCHECK_GT(initial_append_size_, 0);
311 DCHECK_LE(initial_append_size_, file_data_->data_size()); 311 DCHECK_LE(initial_append_size_, file_data_->data_size());
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 } 656 }
657 657
658 TEST_P(PipelineIntegrationTest, BasicPlayback_MediaSource_Opus_WebM) { 658 TEST_P(PipelineIntegrationTest, BasicPlayback_MediaSource_Opus_WebM) {
659 MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM, 659 MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM,
660 kAppendWholeFile, GetParam()); 660 kAppendWholeFile, GetParam());
661 StartPipelineWithMediaSource(&source); 661 StartPipelineWithMediaSource(&source);
662 source.EndOfStream(); 662 source.EndOfStream();
663 663
664 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); 664 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
665 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); 665 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds());
666 // TODO(acolwell/wolenetz): Drop the "+ 1" once WebM stream parser always 666 EXPECT_EQ(kOpusEndTrimmingWebMFileDurationMs,
667 // emits frames with valid durations (see http://crbug.com/351166) and
668 // compliant coded frame processor's "highest presentation end timestamp" is
669 // used to update duration (see http://crbug.com/249422).
670 EXPECT_EQ(kOpusEndTrimmingWebMFileDurationMs + 1,
671 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); 667 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds());
672 Play(); 668 Play();
673 669
674 ASSERT_TRUE(WaitUntilOnEnded()); 670 ASSERT_TRUE(WaitUntilOnEnded());
675 source.Abort(); 671 source.Abort();
676 Stop(); 672 Stop();
677 } 673 }
678 674
679 // Flaky. http://crbug.com/304776 675 // Flaky. http://crbug.com/304776
680 TEST_P(PipelineIntegrationTest, DISABLED_MediaSource_Opus_Seeking_WebM) { 676 TEST_P(PipelineIntegrationTest, DISABLED_MediaSource_Opus_Seeking_WebM) {
681 MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM, 677 MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM,
682 kAppendWholeFile, GetParam()); 678 kAppendWholeFile, GetParam());
683 StartHashedPipelineWithMediaSource(&source); 679 StartHashedPipelineWithMediaSource(&source);
684 680
685 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); 681 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
686 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); 682 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds());
687 // TODO(acolwell/wolenetz): Drop the "+ 1" once WebM stream parser always 683 EXPECT_EQ(kOpusEndTrimmingWebMFileDurationMs,
688 // emits frames with valid durations (see http://crbug.com/351166) and
689 // compliant coded frame processor's "highest presentation end timestamp" is
690 // used to update duration (see http://crbug.com/249422).
691 EXPECT_EQ(kOpusEndTrimmingWebMFileDurationMs + 1,
692 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); 684 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds());
693 685
694 base::TimeDelta start_seek_time = base::TimeDelta::FromMilliseconds(1000); 686 base::TimeDelta start_seek_time = base::TimeDelta::FromMilliseconds(1000);
695 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(2000); 687 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(2000);
696 688
697 Play(); 689 Play();
698 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(start_seek_time)); 690 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(start_seek_time));
699 source.Seek(seek_time, 0x1D5, 34017); 691 source.Seek(seek_time, 0x1D5, 34017);
700 source.EndOfStream(); 692 source.EndOfStream();
701 ASSERT_TRUE(Seek(seek_time)); 693 ASSERT_TRUE(Seek(seek_time));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 scoped_refptr<DecoderBuffer> second_file = 734 scoped_refptr<DecoderBuffer> second_file =
743 ReadTestDataFile("bear-640x360-av_enc-av.webm"); 735 ReadTestDataFile("bear-640x360-av_enc-av.webm");
744 736
745 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), 737 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec),
746 second_file->data(), second_file->data_size()); 738 second_file->data(), second_file->data_size());
747 739
748 source.EndOfStream(); 740 source.EndOfStream();
749 741
750 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); 742 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
751 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); 743 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds());
752 // The "+ 1" is due to estimated audio and video frame durations on the last 744 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs,
753 // frames appended. The unencrypted file has a TrackEntry DefaultDuration
754 // field for the video track, but the encrypted file does not.
755 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs + 1,
756 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); 745 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds());
757 746
758 Play(); 747 Play();
759 748
760 EXPECT_TRUE(WaitUntilOnEnded()); 749 EXPECT_TRUE(WaitUntilOnEnded());
761 source.Abort(); 750 source.Abort();
762 Stop(); 751 Stop();
763 } 752 }
764 753
765 // Config changes from encrypted to clear are not currently supported. 754 // Config changes from encrypted to clear are not currently supported.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 ReadTestDataFile("bear-640x360.webm"); 794 ReadTestDataFile("bear-640x360.webm");
806 795
807 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), 796 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec),
808 second_file->data(), second_file->data_size()); 797 second_file->data(), second_file->data_size());
809 798
810 source.EndOfStream(); 799 source.EndOfStream();
811 800
812 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); 801 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
813 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); 802 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds());
814 // The second video was not added, so its time has not been added. 803 // The second video was not added, so its time has not been added.
815 // The "+ 1" is due to estimated audio and video frame durations on the last 804 EXPECT_EQ(k320WebMFileDurationMs,
816 // frames appended. The unencrypted file has a TrackEntry DefaultDuration
817 // field for the video track, but the encrypted file does not.
818 EXPECT_EQ(k320WebMFileDurationMs + 1,
819 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); 805 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds());
820 806
821 Play(); 807 Play();
822 808
823 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); 809 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError());
824 source.Abort(); 810 source.Abort();
825 } 811 }
826 812
827 #if defined(USE_PROPRIETARY_CODECS) 813 #if defined(USE_PROPRIETARY_CODECS)
828 TEST_P(PipelineIntegrationTest, MediaSource_ADTS) { 814 TEST_P(PipelineIntegrationTest, MediaSource_ADTS) {
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
1284 Play(); 1270 Play();
1285 ASSERT_TRUE(WaitUntilOnEnded()); 1271 ASSERT_TRUE(WaitUntilOnEnded());
1286 } 1272 }
1287 1273
1288 // TODO(wolenetz): Enable MSE testing of new frame processor based on this flag, 1274 // TODO(wolenetz): Enable MSE testing of new frame processor based on this flag,
1289 // once the new processor has landed. See http://crbug.com/249422. 1275 // once the new processor has landed. See http://crbug.com/249422.
1290 INSTANTIATE_TEST_CASE_P(LegacyFrameProcessor, PipelineIntegrationTest, 1276 INSTANTIATE_TEST_CASE_P(LegacyFrameProcessor, PipelineIntegrationTest,
1291 Values(true)); 1277 Values(true));
1292 1278
1293 } // namespace media 1279 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/chunk_demuxer_unittest.cc ('k') | media/filters/source_buffer_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698