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

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

Issue 2491043003: MediaResource refactoring to support multiple streams (Closed)
Patch Set: rebase Created 3 years, 11 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 <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 1161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1172 ASSERT_TRUE(Seek(seek_time)); 1172 ASSERT_TRUE(Seek(seek_time));
1173 Play(); 1173 Play();
1174 ASSERT_TRUE(WaitUntilOnEnded()); 1174 ASSERT_TRUE(WaitUntilOnEnded());
1175 EXPECT_HASH_EQ(kOpusEndTrimmingHash_3, GetAudioHash()); 1175 EXPECT_HASH_EQ(kOpusEndTrimmingHash_3, GetAudioHash());
1176 } 1176 }
1177 1177
1178 TEST_F(PipelineIntegrationTest, 1178 TEST_F(PipelineIntegrationTest,
1179 MAYBE_CLOCKLESS(BasicPlaybackOpusPrerollExceedsCodecDelay)) { 1179 MAYBE_CLOCKLESS(BasicPlaybackOpusPrerollExceedsCodecDelay)) {
1180 ASSERT_EQ(PIPELINE_OK, Start("bear-opus.webm", kHashed | kClockless)); 1180 ASSERT_EQ(PIPELINE_OK, Start("bear-opus.webm", kHashed | kClockless));
1181 1181
1182 AudioDecoderConfig config = 1182 EXPECT_EQ(1u, demuxer_->GetStreams().size());
1183 demuxer_->GetStream(DemuxerStream::AUDIO)->audio_decoder_config(); 1183 AudioDecoderConfig config = demuxer_->GetStreams()[0]->audio_decoder_config();
1184 1184
1185 // Verify that this file's preroll is not eclipsed by the codec delay so we 1185 // Verify that this file's preroll is not eclipsed by the codec delay so we
1186 // can detect when preroll is not properly performed. 1186 // can detect when preroll is not properly performed.
1187 base::TimeDelta codec_delay = base::TimeDelta::FromSecondsD( 1187 base::TimeDelta codec_delay = base::TimeDelta::FromSecondsD(
1188 static_cast<double>(config.codec_delay()) / config.samples_per_second()); 1188 static_cast<double>(config.codec_delay()) / config.samples_per_second());
1189 ASSERT_GT(config.seek_preroll(), codec_delay); 1189 ASSERT_GT(config.seek_preroll(), codec_delay);
1190 1190
1191 Play(); 1191 Play();
1192 ASSERT_TRUE(WaitUntilOnEnded()); 1192 ASSERT_TRUE(WaitUntilOnEnded());
1193 EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_1, GetAudioHash()); 1193 EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_1, GetAudioHash());
1194 1194
1195 // Seek halfway through the file to invoke seek preroll. 1195 // Seek halfway through the file to invoke seek preroll.
1196 ASSERT_TRUE(Seek(base::TimeDelta::FromSecondsD(1.414))); 1196 ASSERT_TRUE(Seek(base::TimeDelta::FromSecondsD(1.414)));
1197 Play(); 1197 Play();
1198 ASSERT_TRUE(WaitUntilOnEnded()); 1198 ASSERT_TRUE(WaitUntilOnEnded());
1199 EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_2, GetAudioHash()); 1199 EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_2, GetAudioHash());
1200 } 1200 }
1201 1201
1202 TEST_F(PipelineIntegrationTest, 1202 TEST_F(PipelineIntegrationTest,
1203 MAYBE_CLOCKLESS(BasicPlaybackOpusPrerollExceedsCodecDelay_MediaSource)) { 1203 MAYBE_CLOCKLESS(BasicPlaybackOpusPrerollExceedsCodecDelay_MediaSource)) {
1204 MockMediaSource source("bear-opus.webm", kOpusAudioOnlyWebM, 1204 MockMediaSource source("bear-opus.webm", kOpusAudioOnlyWebM,
1205 kAppendWholeFile); 1205 kAppendWholeFile);
1206 EXPECT_EQ(PIPELINE_OK, StartPipelineWithMediaSource( 1206 EXPECT_EQ(PIPELINE_OK, StartPipelineWithMediaSource(
1207 &source, kClockless | kHashed, nullptr)); 1207 &source, kClockless | kHashed, nullptr));
1208 source.EndOfStream(); 1208 source.EndOfStream();
1209 1209
1210 AudioDecoderConfig config = 1210 EXPECT_EQ(1u, demuxer_->GetStreams().size());
1211 demuxer_->GetStream(DemuxerStream::AUDIO)->audio_decoder_config(); 1211 AudioDecoderConfig config = demuxer_->GetStreams()[0]->audio_decoder_config();
1212 1212
1213 // Verify that this file's preroll is not eclipsed by the codec delay so we 1213 // Verify that this file's preroll is not eclipsed by the codec delay so we
1214 // can detect when preroll is not properly performed. 1214 // can detect when preroll is not properly performed.
1215 base::TimeDelta codec_delay = base::TimeDelta::FromSecondsD( 1215 base::TimeDelta codec_delay = base::TimeDelta::FromSecondsD(
1216 static_cast<double>(config.codec_delay()) / config.samples_per_second()); 1216 static_cast<double>(config.codec_delay()) / config.samples_per_second());
1217 ASSERT_GT(config.seek_preroll(), codec_delay); 1217 ASSERT_GT(config.seek_preroll(), codec_delay);
1218 1218
1219 Play(); 1219 Play();
1220 ASSERT_TRUE(WaitUntilOnEnded()); 1220 ASSERT_TRUE(WaitUntilOnEnded());
1221 EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_1, GetAudioHash()); 1221 EXPECT_HASH_EQ(kOpusSmallCodecDelayHash_1, GetAudioHash());
(...skipping 1294 matching lines...) Expand 10 before | Expand all | Expand 10 after
2516 Play(); 2516 Play();
2517 ASSERT_TRUE(WaitUntilOnEnded()); 2517 ASSERT_TRUE(WaitUntilOnEnded());
2518 } 2518 }
2519 2519
2520 // Verify that OPUS audio in a webm which reports a 44.1kHz sample rate plays 2520 // Verify that OPUS audio in a webm which reports a 44.1kHz sample rate plays
2521 // correctly at 48kHz 2521 // correctly at 48kHz
2522 TEST_F(PipelineIntegrationTest, BasicPlayback_Opus441kHz) { 2522 TEST_F(PipelineIntegrationTest, BasicPlayback_Opus441kHz) {
2523 ASSERT_EQ(PIPELINE_OK, Start("sfx-opus-441.webm")); 2523 ASSERT_EQ(PIPELINE_OK, Start("sfx-opus-441.webm"));
2524 Play(); 2524 Play();
2525 ASSERT_TRUE(WaitUntilOnEnded()); 2525 ASSERT_TRUE(WaitUntilOnEnded());
2526 EXPECT_EQ(48000, demuxer_->GetStream(DemuxerStream::AUDIO) 2526
2527 ->audio_decoder_config() 2527 EXPECT_EQ(1u, demuxer_->GetStreams().size());
2528 .samples_per_second()); 2528 EXPECT_EQ(
2529 48000,
2530 demuxer_->GetStreams()[0]->audio_decoder_config().samples_per_second());
2529 } 2531 }
2530 2532
2531 // Same as above but using MediaSource. 2533 // Same as above but using MediaSource.
2532 TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource_Opus441kHz) { 2534 TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource_Opus441kHz) {
2533 MockMediaSource source("sfx-opus-441.webm", kOpusAudioOnlyWebM, 2535 MockMediaSource source("sfx-opus-441.webm", kOpusAudioOnlyWebM,
2534 kAppendWholeFile); 2536 kAppendWholeFile);
2535 EXPECT_EQ(PIPELINE_OK, StartPipelineWithMediaSource(&source)); 2537 EXPECT_EQ(PIPELINE_OK, StartPipelineWithMediaSource(&source));
2536 source.EndOfStream(); 2538 source.EndOfStream();
2537 Play(); 2539 Play();
2538 ASSERT_TRUE(WaitUntilOnEnded()); 2540 ASSERT_TRUE(WaitUntilOnEnded());
2539 source.Shutdown(); 2541 source.Shutdown();
2540 Stop(); 2542 Stop();
2541 EXPECT_EQ(48000, demuxer_->GetStream(DemuxerStream::AUDIO) 2543 EXPECT_EQ(1u, demuxer_->GetStreams().size());
2542 ->audio_decoder_config() 2544 EXPECT_EQ(
2543 .samples_per_second()); 2545 48000,
2546 demuxer_->GetStreams()[0]->audio_decoder_config().samples_per_second());
2544 } 2547 }
2545 2548
2546 // Ensures audio-only playback with missing or negative timestamps works. Tests 2549 // Ensures audio-only playback with missing or negative timestamps works. Tests
2547 // the common live-streaming case for chained ogg. See http://crbug.com/396864. 2550 // the common live-streaming case for chained ogg. See http://crbug.com/396864.
2548 TEST_F(PipelineIntegrationTest, BasicPlaybackChainedOgg) { 2551 TEST_F(PipelineIntegrationTest, BasicPlaybackChainedOgg) {
2549 ASSERT_EQ(PIPELINE_OK, Start("double-sfx.ogg")); 2552 ASSERT_EQ(PIPELINE_OK, Start("double-sfx.ogg"));
2550 Play(); 2553 Play();
2551 ASSERT_TRUE(WaitUntilOnEnded()); 2554 ASSERT_TRUE(WaitUntilOnEnded());
2552 ASSERT_EQ(base::TimeDelta(), demuxer_->GetStartTime()); 2555 ASSERT_EQ(base::TimeDelta(), demuxer_->GetStartTime());
2553 } 2556 }
(...skipping 29 matching lines...) Expand all
2583 2586
2584 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { 2587 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) {
2585 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); 2588 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm"));
2586 Play(); 2589 Play();
2587 ASSERT_TRUE(WaitUntilOnEnded()); 2590 ASSERT_TRUE(WaitUntilOnEnded());
2588 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), 2591 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000),
2589 demuxer_->GetStartTime()); 2592 demuxer_->GetStartTime());
2590 } 2593 }
2591 2594
2592 } // namespace media 2595 } // namespace media
OLDNEW
« media/renderers/renderer_impl_unittest.cc ('K') | « media/renderers/renderer_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698