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

Unified Diff: media/renderers/video_renderer_impl_unittest.cc

Issue 1027553002: Change the TimeSource interface to return wallclock time for video. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comment. Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: media/renderers/video_renderer_impl_unittest.cc
diff --git a/media/renderers/video_renderer_impl_unittest.cc b/media/renderers/video_renderer_impl_unittest.cc
index d9cad51ea65b0f64c584220226bd2b98d4ee62d0..0aa2d2baf56c8ec73ce7ce91cceeb26db8d9561f 100644
--- a/media/renderers/video_renderer_impl_unittest.cc
+++ b/media/renderers/video_renderer_impl_unittest.cc
@@ -14,6 +14,7 @@
#include "base/strings/string_split.h"
#include "base/strings/stringprintf.h"
#include "base/synchronization/lock.h"
+#include "base/test/simple_test_tick_clock.h"
#include "media/base/data_buffer.h"
#include "media/base/gmock_callback_support.h"
#include "media/base/limits.h"
@@ -45,7 +46,8 @@ MATCHER_P(HasTimestamp, ms, "") {
class VideoRendererImplTest : public ::testing::Test {
public:
VideoRendererImplTest()
- : decoder_(new MockVideoDecoder()),
+ : tick_clock_(new base::SimpleTestTickClock()),
+ decoder_(new MockVideoDecoder()),
demuxer_stream_(DemuxerStream::VIDEO) {
ScopedVector<VideoDecoder> decoders;
decoders.push_back(decoder_);
@@ -53,6 +55,10 @@ class VideoRendererImplTest : public ::testing::Test {
renderer_.reset(new VideoRendererImpl(message_loop_.message_loop_proxy(),
decoders.Pass(), true,
new MediaLog()));
+ renderer_->SetTickClockForTesting(scoped_ptr<base::TickClock>(tick_clock_));
+
+ // Start wallclock time at a non-zero value.
+ AdvanceWallclockTimeInMs(12345);
demuxer_stream_.set_video_decoder_config(TestVideoConfig::Normal());
@@ -103,7 +109,8 @@ class VideoRendererImplTest : public ::testing::Test {
base::Unretained(&mock_cb_)),
base::Bind(&StrictMock<MockCB>::Display, base::Unretained(&mock_cb_)),
ended_event_.GetClosure(), error_event_.GetPipelineStatusCB(),
- base::Bind(&VideoRendererImplTest::GetTime, base::Unretained(this)),
+ base::Bind(&VideoRendererImplTest::GetWallclockTimeForMediaTime,
+ base::Unretained(this)),
base::Bind(&VideoRendererImplTest::OnWaitingForDecryptionKey,
base::Unretained(this)));
}
@@ -237,6 +244,12 @@ class VideoRendererImplTest : public ::testing::Test {
base::Bind(base::ResetAndReturn(&decode_cb_), VideoDecoder::kOk));
}
+ void AdvanceWallclockTimeInMs(int time_ms) {
+ DCHECK_EQ(&message_loop_, base::MessageLoop::current());
+ base::AutoLock l(lock_);
+ tick_clock_->Advance(base::TimeDelta::FromMilliseconds(time_ms));
+ }
+
void AdvanceTimeInMs(int time_ms) {
DCHECK_EQ(&message_loop_, base::MessageLoop::current());
base::AutoLock l(lock_);
@@ -246,6 +259,7 @@ class VideoRendererImplTest : public ::testing::Test {
protected:
// Fixture members.
scoped_ptr<VideoRendererImpl> renderer_;
+ base::SimpleTestTickClock* tick_clock_; // Owned by |renderer_|.
MockVideoDecoder* decoder_; // Owned by |renderer_|.
NiceMock<MockDemuxerStream> demuxer_stream_;
@@ -258,9 +272,9 @@ class VideoRendererImplTest : public ::testing::Test {
StrictMock<MockCB> mock_cb_;
private:
- base::TimeDelta GetTime() {
+ base::TimeTicks GetWallclockTimeForMediaTime(base::TimeDelta time) {
base::AutoLock l(lock_);
- return time_;
+ return tick_clock_->NowTicks() + (time - time_);
}
void DecodeRequested(const scoped_refptr<DecoderBuffer>& buffer,
@@ -480,13 +494,12 @@ TEST_F(VideoRendererImplTest, Underflow) {
// having nothing.
AdvanceTimeInMs(100);
- // Advance time more. Now we should signal having nothing.
+ // Now that all frames are dropped, we should signal having nothing.
{
SCOPED_TRACE("Waiting for BUFFERING_HAVE_NOTHING");
WaitableMessageLoopEvent event;
EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING))
.WillOnce(RunClosure(event.GetClosure()));
- AdvanceTimeInMs(3000); // Must match kTimeToDeclareHaveNothing.
event.RunAndWait();
}
« media/renderers/video_renderer_impl.cc ('K') | « media/renderers/video_renderer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698