| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/test/simple_test_tick_clock.h" | 10 #include "base/test/simple_test_tick_clock.h" |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 // Verify that playback rate affects the rate GetMediaTime() advances. | 394 // Verify that playback rate affects the rate GetMediaTime() advances. |
| 395 SetPlaybackRate(2.0f); | 395 SetPlaybackRate(2.0f); |
| 396 EXPECT_TRUE(IsMediaTimeAdvancing(2.0f)); | 396 EXPECT_TRUE(IsMediaTimeAdvancing(2.0f)); |
| 397 | 397 |
| 398 // Verify that GetMediaTime() is bounded by audio max time. | 398 // Verify that GetMediaTime() is bounded by audio max time. |
| 399 DCHECK_GT(GetMediaTimeMs() + 2000, kAudioUpdateMaxTimeMs); | 399 DCHECK_GT(GetMediaTimeMs() + 2000, kAudioUpdateMaxTimeMs); |
| 400 test_tick_clock_.Advance(base::TimeDelta::FromMilliseconds(2000)); | 400 test_tick_clock_.Advance(base::TimeDelta::FromMilliseconds(2000)); |
| 401 EXPECT_EQ(kAudioUpdateMaxTimeMs, GetMediaTimeMs()); | 401 EXPECT_EQ(kAudioUpdateMaxTimeMs, GetMediaTimeMs()); |
| 402 } | 402 } |
| 403 | 403 |
| 404 TEST_F(RendererImplTest, AudioStreamShorterThanVideo) { | |
| 405 // Replace what's used for interpolating to simulate wall clock time. | |
| 406 renderer_impl_->SetTimeDeltaInterpolatorForTesting( | |
| 407 new TimeDeltaInterpolator(&test_tick_clock_)); | |
| 408 | |
| 409 InitializeWithAudioAndVideo(); | |
| 410 Play(); | |
| 411 | |
| 412 EXPECT_EQ(kStartPlayingTimeInMs, GetMediaTimeMs()); | |
| 413 | |
| 414 // Verify that the clock doesn't advance since it hasn't been started by | |
| 415 // a time update from the audio stream. | |
| 416 EXPECT_FALSE(IsMediaTimeAdvancing()); | |
| 417 | |
| 418 // Signal end of audio stream. | |
| 419 audio_ended_cb_.Run(); | |
| 420 base::RunLoop().RunUntilIdle(); | |
| 421 | |
| 422 // Verify that the clock advances. | |
| 423 EXPECT_TRUE(IsMediaTimeAdvancing()); | |
| 424 | |
| 425 // Signal end of video stream and make sure OnEnded() callback occurs. | |
| 426 EXPECT_CALL(time_source_, StopTicking()); | |
| 427 EXPECT_CALL(callbacks_, OnEnded()); | |
| 428 video_ended_cb_.Run(); | |
| 429 base::RunLoop().RunUntilIdle(); | |
| 430 } | |
| 431 | |
| 432 TEST_F(RendererImplTest, AudioTimeUpdateDuringFlush) { | 404 TEST_F(RendererImplTest, AudioTimeUpdateDuringFlush) { |
| 433 // Replace what's used for interpolating to simulate wall clock time. | 405 // Replace what's used for interpolating to simulate wall clock time. |
| 434 renderer_impl_->SetTimeDeltaInterpolatorForTesting( | 406 renderer_impl_->SetTimeDeltaInterpolatorForTesting( |
| 435 new TimeDeltaInterpolator(&test_tick_clock_)); | 407 new TimeDeltaInterpolator(&test_tick_clock_)); |
| 436 | 408 |
| 437 InitializeWithAudio(); | 409 InitializeWithAudio(); |
| 438 Play(); | 410 Play(); |
| 439 | 411 |
| 440 // Provide an initial time update so that the pipeline transitions out of the | 412 // Provide an initial time update so that the pipeline transitions out of the |
| 441 // "waiting for time update" state. | 413 // "waiting for time update" state. |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 InitializeWithAudio(); | 520 InitializeWithAudio(); |
| 549 Play(); | 521 Play(); |
| 550 Flush(false); | 522 Flush(false); |
| 551 | 523 |
| 552 EXPECT_CALL(callbacks_, OnError(PIPELINE_ERROR_DECODE)); | 524 EXPECT_CALL(callbacks_, OnError(PIPELINE_ERROR_DECODE)); |
| 553 audio_error_cb_.Run(PIPELINE_ERROR_DECODE); | 525 audio_error_cb_.Run(PIPELINE_ERROR_DECODE); |
| 554 base::RunLoop().RunUntilIdle(); | 526 base::RunLoop().RunUntilIdle(); |
| 555 } | 527 } |
| 556 | 528 |
| 557 } // namespace media | 529 } // namespace media |
| OLD | NEW |