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

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

Issue 205703003: MSE: Use frame duration, if available, in LegacyFrameProcessor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased to pull in WebM frame duration estimation, undid the CD tests' conversion to just BlockGrou… Created 6 years, 9 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
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 }; 55 };
56 56
57 const int kAppendWholeFile = -1; 57 const int kAppendWholeFile = -1;
58 58
59 // Constants for the Media Source config change tests. 59 // Constants for the Media Source config change tests.
60 const int kAppendTimeSec = 1; 60 const int kAppendTimeSec = 1;
61 const int kAppendTimeMs = kAppendTimeSec * 1000; 61 const int kAppendTimeMs = kAppendTimeSec * 1000;
62 const int k320WebMFileDurationMs = 2736; 62 const int k320WebMFileDurationMs = 2736;
63 const int k640WebMFileDurationMs = 2762; 63 const int k640WebMFileDurationMs = 2762;
64 const int kOpusEndTrimmingWebMFileDurationMs = 2771; 64 const int kOpusEndTrimmingWebMFileDurationMs = 2771;
65 const int kVP9WebMFileDurationMs = 2703; 65 const int kVP9WebMFileDurationMs = 2736;
66 const int kVP8AWebMFileDurationMs = 2700; 66 const int kVP8AWebMFileDurationMs = 2734;
67 67
68 #if defined(USE_PROPRIETARY_CODECS) 68 #if defined(USE_PROPRIETARY_CODECS)
69 const int k640IsoFileDurationMs = 2737; 69 const int k640IsoFileDurationMs = 2737;
70 const int k640IsoCencFileDurationMs = 2736; 70 const int k640IsoCencFileDurationMs = 2736;
71 const int k1280IsoFileDurationMs = 2736; 71 const int k1280IsoFileDurationMs = 2736;
72 const int k1280IsoAVC3FileDurationMs = 2735; 72 const int k1280IsoAVC3FileDurationMs = 2736;
73 #endif // defined(USE_PROPRIETARY_CODECS) 73 #endif // defined(USE_PROPRIETARY_CODECS)
74 74
75 // Note: Tests using this class only exercise the DecryptingDemuxerStream path. 75 // Note: Tests using this class only exercise the DecryptingDemuxerStream path.
76 // They do not exercise the Decrypting{Audio|Video}Decoder path. 76 // They do not exercise the Decrypting{Audio|Video}Decoder path.
77 class FakeEncryptedMedia { 77 class FakeEncryptedMedia {
78 public: 78 public:
79 // Defines the behavior of the "app" that responds to EME events. 79 // Defines the behavior of the "app" that responds to EME events.
80 class AppBase { 80 class AppBase {
81 public: 81 public:
82 virtual ~AppBase() {} 82 virtual ~AppBase() {}
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 568
569 TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource_Opus_WebM) { 569 TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource_Opus_WebM) {
570 EXPECT_CALL(*this, OnSetOpaque(false)).Times(AnyNumber()); 570 EXPECT_CALL(*this, OnSetOpaque(false)).Times(AnyNumber());
571 MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM, 571 MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM,
572 kAppendWholeFile); 572 kAppendWholeFile);
573 StartPipelineWithMediaSource(&source); 573 StartPipelineWithMediaSource(&source);
574 source.EndOfStream(); 574 source.EndOfStream();
575 575
576 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); 576 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
577 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); 577 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds());
578 EXPECT_EQ(kOpusEndTrimmingWebMFileDurationMs, 578 // TODO(acolwell/wolenetz): Drop the "+ 1" once WebM stream parser always
579 // emits frames with valid durations (see http://crbug.com/351166) and
580 // compliant coded frame processor's "highest presentation end timestamp" is
581 // used to update duration (see http://crbug.com/249422).
582 EXPECT_EQ(kOpusEndTrimmingWebMFileDurationMs + 1,
579 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); 583 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds());
580 Play(); 584 Play();
581 585
582 ASSERT_TRUE(WaitUntilOnEnded()); 586 ASSERT_TRUE(WaitUntilOnEnded());
583 source.Abort(); 587 source.Abort();
584 Stop(); 588 Stop();
585 } 589 }
586 590
587 // Flaky. http://crbug.com/304776 591 // Flaky. http://crbug.com/304776
588 TEST_F(PipelineIntegrationTest, DISABLED_MediaSource_Opus_Seeking_WebM) { 592 TEST_F(PipelineIntegrationTest, DISABLED_MediaSource_Opus_Seeking_WebM) {
589 EXPECT_CALL(*this, OnSetOpaque(false)).Times(AnyNumber()); 593 EXPECT_CALL(*this, OnSetOpaque(false)).Times(AnyNumber());
590 MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM, 594 MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM,
591 kAppendWholeFile); 595 kAppendWholeFile);
592 StartHashedPipelineWithMediaSource(&source); 596 StartHashedPipelineWithMediaSource(&source);
593 597
594 598
595 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); 599 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
596 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); 600 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds());
597 EXPECT_EQ(kOpusEndTrimmingWebMFileDurationMs, 601 // TODO(acolwell/wolenetz): Drop the "+ 1" once WebM stream parser always
602 // emits frames with valid durations (see http://crbug.com/351166) and
603 // compliant coded frame processor's "highest presentation end timestamp" is
604 // used to update duration (see http://crbug.com/249422).
605 EXPECT_EQ(kOpusEndTrimmingWebMFileDurationMs + 1,
598 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); 606 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds());
599 607
600 base::TimeDelta start_seek_time = base::TimeDelta::FromMilliseconds(1000); 608 base::TimeDelta start_seek_time = base::TimeDelta::FromMilliseconds(1000);
601 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(2000); 609 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(2000);
602 610
603 Play(); 611 Play();
604 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(start_seek_time)); 612 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(start_seek_time));
605 source.Seek(seek_time, 0x1D5, 34017); 613 source.Seek(seek_time, 0x1D5, 34017);
606 source.EndOfStream(); 614 source.EndOfStream();
607 ASSERT_TRUE(Seek(seek_time)); 615 ASSERT_TRUE(Seek(seek_time));
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 // Verify that VP8 video with inband text track can be played back. 1197 // Verify that VP8 video with inband text track can be played back.
1190 TEST_F(PipelineIntegrationTest, 1198 TEST_F(PipelineIntegrationTest,
1191 BasicPlayback_VP8_WebVTT_WebM) { 1199 BasicPlayback_VP8_WebVTT_WebM) {
1192 ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8-webvtt.webm"), 1200 ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8-webvtt.webm"),
1193 PIPELINE_OK)); 1201 PIPELINE_OK));
1194 Play(); 1202 Play();
1195 ASSERT_TRUE(WaitUntilOnEnded()); 1203 ASSERT_TRUE(WaitUntilOnEnded());
1196 } 1204 }
1197 1205
1198 } // namespace media 1206 } // namespace media
OLDNEW
« media/filters/chunk_demuxer_unittest.cc ('K') | « media/filters/legacy_frame_processor.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698