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

Unified Diff: media/test/pipeline_integration_test.cc

Issue 2171133002: Implement opus seek preroll for MediaSourceExtensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Feedback Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/source_buffer_stream.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/test/pipeline_integration_test.cc
diff --git a/media/test/pipeline_integration_test.cc b/media/test/pipeline_integration_test.cc
index 18cbb3b38a1349bc5f2a87faa38ddbd57a447d20..cc1295872345efa77cfd4e274b2ddd8aa77a8b13 100644
--- a/media/test/pipeline_integration_test.cc
+++ b/media/test/pipeline_integration_test.cc
@@ -133,6 +133,10 @@ static const char kOpusEndTrimmingHash_2[] =
"-11.91,-11.11,-8.27,-7.13,-7.86,-10.00,";
static const char kOpusEndTrimmingHash_3[] =
"-13.31,-14.38,-13.70,-11.71,-10.21,-10.49,";
+static const char kOpusSmallCodecDelayHash_1[] =
+ "-0.48,-0.09,1.27,1.06,1.54,-0.22,";
+static const char kOpusSmallCodecDelayHash_2[] =
+ "0.29,0.15,-0.19,0.25,0.68,0.83,";
#else
// Hash for a full playthrough of "opus-trimming-test.(webm|ogg)".
static const char kOpusEndTrimmingHash_1[] =
@@ -143,6 +147,12 @@ static const char kOpusEndTrimmingHash_2[] =
// The above hash, plus an additional playthrough starting from T=6.36s.
static const char kOpusEndTrimmingHash_3[] =
"-13.28,-14.35,-13.67,-11.68,-10.18,-10.46,";
+// Hash for a full playthrough of "bear-opus.webm".
+static const char kOpusSmallCodecDelayHash_1[] =
+ "-0.47,-0.09,1.28,1.07,1.55,-0.22,";
+// The above hash, plus an additional playthrough starting from T=1.414s.
+static const char kOpusSmallCodecDelayHash_2[] =
+ "0.31,0.15,-0.18,0.25,0.70,0.84,";
#endif // defined(OPUS_FIXED_POINT)
#endif // !defined(MOJO_RENDERER)
@@ -1131,9 +1141,59 @@ TEST_F(PipelineIntegrationTest,
EXPECT_HASH_EQ(kOpusEndTrimmingHash_3, GetAudioHash());
}
-// TODO(dalecurtis): Add an opus test file which FFmpeg and ChunkDemuxer will
-// both seek the same in and shows the difference of preroll.
-// http://crbug.com/509894
+TEST_F(PipelineIntegrationTest,
+ MAYBE_CLOCKLESS(BasicPlaybackOpusPrerollExceedsCodecDelay)) {
+ ASSERT_EQ(PIPELINE_OK, Start("bear-opus.webm", kHashed | kClockless));
+
+ AudioDecoderConfig config =
+ demuxer_->GetStream(DemuxerStream::AUDIO)->audio_decoder_config();
+
+ // Verify that this file's preroll is not eclipsed by the codec delay so we
+ // can detect when preroll is not properly performed.
+ base::TimeDelta codec_delay = base::TimeDelta::FromSecondsD(
+ static_cast<double>(config.codec_delay()) / config.samples_per_second());
+ ASSERT_GT(config.seek_preroll(), codec_delay);
+
+ Play();
+ ASSERT_TRUE(WaitUntilOnEnded());
+ EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_1, GetAudioHash());
+
+ // Seek halfway through the file to invoke seek preroll.
+ ASSERT_TRUE(Seek(base::TimeDelta::FromSecondsD(1.414)));
+ Play();
+ ASSERT_TRUE(WaitUntilOnEnded());
+ EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_2, GetAudioHash());
+}
+
+TEST_F(PipelineIntegrationTest,
+ MAYBE_CLOCKLESS(BasicPlaybackOpusPrerollExceedsCodecDelay_MediaSource)) {
+ MockMediaSource source("bear-opus.webm", kOpusAudioOnlyWebM,
+ kAppendWholeFile);
+ EXPECT_EQ(PIPELINE_OK, StartPipelineWithMediaSource(
+ &source, kClockless | kHashed, nullptr));
+ source.EndOfStream();
+
+ AudioDecoderConfig config =
+ demuxer_->GetStream(DemuxerStream::AUDIO)->audio_decoder_config();
+
+ // Verify that this file's preroll is not eclipsed by the codec delay so we
+ // can detect when preroll is not properly performed.
+ base::TimeDelta codec_delay = base::TimeDelta::FromSecondsD(
+ static_cast<double>(config.codec_delay()) / config.samples_per_second());
+ ASSERT_GT(config.seek_preroll(), codec_delay);
+
+ Play();
+ ASSERT_TRUE(WaitUntilOnEnded());
+ EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_1, GetAudioHash());
+
+ // Seek halfway through the file to invoke seek preroll.
+ base::TimeDelta seek_time = base::TimeDelta::FromSecondsD(1.414);
+ source.Seek(seek_time);
+ ASSERT_TRUE(Seek(seek_time));
+ Play();
+ ASSERT_TRUE(WaitUntilOnEnded());
+ EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_2, GetAudioHash());
+}
TEST_F(PipelineIntegrationTest, BasicPlaybackLive) {
ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-live.webm", kHashed));
« no previous file with comments | « media/filters/source_buffer_stream.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698