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

Side by Side Diff: media/filters/renderer_impl_unittest.cc

Issue 518613002: Have AudioRendererImpl advance time until it's told to stop. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rename to front/back Created 6 years, 3 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
« media/filters/audio_clock.h ('K') | « media/filters/renderer_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 // Verify that playback rate affects the rate GetMediaTime() advances. 391 // Verify that playback rate affects the rate GetMediaTime() advances.
392 SetPlaybackRate(2.0f); 392 SetPlaybackRate(2.0f);
393 EXPECT_TRUE(IsMediaTimeAdvancing(2.0f)); 393 EXPECT_TRUE(IsMediaTimeAdvancing(2.0f));
394 394
395 // Verify that GetMediaTime() is bounded by audio max time. 395 // Verify that GetMediaTime() is bounded by audio max time.
396 DCHECK_GT(GetMediaTimeMs() + 2000, kAudioUpdateMaxTimeMs); 396 DCHECK_GT(GetMediaTimeMs() + 2000, kAudioUpdateMaxTimeMs);
397 test_tick_clock_.Advance(base::TimeDelta::FromMilliseconds(2000)); 397 test_tick_clock_.Advance(base::TimeDelta::FromMilliseconds(2000));
398 EXPECT_EQ(kAudioUpdateMaxTimeMs, GetMediaTimeMs()); 398 EXPECT_EQ(kAudioUpdateMaxTimeMs, GetMediaTimeMs());
399 } 399 }
400 400
401 TEST_F(RendererImplTest, AudioStreamShorterThanVideo) {
402 // Replace what's used for interpolating to simulate wall clock time.
403 renderer_impl_->SetTimeDeltaInterpolatorForTesting(
404 new TimeDeltaInterpolator(&test_tick_clock_));
405
406 InitializeWithAudioAndVideo();
407 Play();
408
409 EXPECT_EQ(kStartPlayingTimeInMs, GetMediaTimeMs());
410
411 // Verify that the clock doesn't advance since it hasn't been started by
412 // a time update from the audio stream.
413 EXPECT_FALSE(IsMediaTimeAdvancing());
414
415 // Signal end of audio stream.
416 audio_ended_cb_.Run();
417 base::RunLoop().RunUntilIdle();
418
419 // Verify that the clock advances.
420 EXPECT_TRUE(IsMediaTimeAdvancing());
421
422 // Signal end of video stream and make sure OnEnded() callback occurs.
423 EXPECT_CALL(time_source_, StopTicking());
424 EXPECT_CALL(callbacks_, OnEnded());
425 video_ended_cb_.Run();
426 base::RunLoop().RunUntilIdle();
427 }
428
429 TEST_F(RendererImplTest, AudioTimeUpdateDuringFlush) { 401 TEST_F(RendererImplTest, AudioTimeUpdateDuringFlush) {
430 // Replace what's used for interpolating to simulate wall clock time. 402 // Replace what's used for interpolating to simulate wall clock time.
431 renderer_impl_->SetTimeDeltaInterpolatorForTesting( 403 renderer_impl_->SetTimeDeltaInterpolatorForTesting(
432 new TimeDeltaInterpolator(&test_tick_clock_)); 404 new TimeDeltaInterpolator(&test_tick_clock_));
433 405
434 InitializeWithAudio(); 406 InitializeWithAudio();
435 Play(); 407 Play();
436 408
437 // Provide an initial time update so that the pipeline transitions out of the 409 // Provide an initial time update so that the pipeline transitions out of the
438 // "waiting for time update" state. 410 // "waiting for time update" state.
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 InitializeWithAudio(); 517 InitializeWithAudio();
546 Play(); 518 Play();
547 Flush(false); 519 Flush(false);
548 520
549 EXPECT_CALL(callbacks_, OnError(PIPELINE_ERROR_DECODE)); 521 EXPECT_CALL(callbacks_, OnError(PIPELINE_ERROR_DECODE));
550 audio_error_cb_.Run(PIPELINE_ERROR_DECODE); 522 audio_error_cb_.Run(PIPELINE_ERROR_DECODE);
551 base::RunLoop().RunUntilIdle(); 523 base::RunLoop().RunUntilIdle();
552 } 524 }
553 525
554 } // namespace media 526 } // namespace media
OLDNEW
« media/filters/audio_clock.h ('K') | « media/filters/renderer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698