| 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 1161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |