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