Index: media/filters/video_renderer_algorithm_unittest.cc |
diff --git a/media/filters/video_renderer_algorithm_unittest.cc b/media/filters/video_renderer_algorithm_unittest.cc |
index d8b2eb0da8ae40afcd667023728313b9d54a194c..fcdedd6d4f902d2b804f3c1c3afd1c473656fa73 100644 |
--- a/media/filters/video_renderer_algorithm_unittest.cc |
+++ b/media/filters/video_renderer_algorithm_unittest.cc |
@@ -385,6 +385,40 @@ TEST_F(VideoRendererAlgorithmTest, AccountForMissingIntervals) { |
ASSERT_TRUE(frame); |
EXPECT_EQ(tg.interval(3), frame->timestamp()); |
EXPECT_EQ(0u, frames_dropped); |
+ EXPECT_EQ(1, GetCurrentFrameDisplayCount()); |
+ |
+ // Stop the time source and verify AccountForMissedIntervals() doesn't try to |
+ // account for intervals from pause behavior. |
+ time_source_.StopTicking(); |
+ frame = RenderAndStep(&tg, &frames_dropped); |
+ ASSERT_TRUE(frame); |
+ EXPECT_EQ(tg.interval(3), frame->timestamp()); |
+ EXPECT_EQ(0u, frames_dropped); |
+ EXPECT_EQ(1, GetCurrentFrameDisplayCount()); |
+ |
+ tg.step(100); |
+ frame = RenderAndStep(&tg, &frames_dropped); |
+ ASSERT_TRUE(frame); |
+ EXPECT_EQ(tg.interval(3), frame->timestamp()); |
+ EXPECT_EQ(0u, frames_dropped); |
+ EXPECT_EQ(1, GetCurrentFrameDisplayCount()); |
+ |
+ time_source_.StartTicking(); |
+ |
+ // Now run the same test using set_time_stopped(); |
+ frame = RenderAndStep(&tg, &frames_dropped); |
+ ASSERT_TRUE(frame); |
+ EXPECT_EQ(tg.interval(3), frame->timestamp()); |
+ EXPECT_EQ(0u, frames_dropped); |
+ EXPECT_EQ(2, GetCurrentFrameDisplayCount()); |
+ |
+ algorithm_.set_time_stopped(); |
+ tg.step(100); |
+ frame = RenderAndStep(&tg, &frames_dropped); |
+ ASSERT_TRUE(frame); |
+ EXPECT_EQ(tg.interval(3), frame->timestamp()); |
+ EXPECT_EQ(0u, frames_dropped); |
+ EXPECT_EQ(3, GetCurrentFrameDisplayCount()); |
} |
TEST_F(VideoRendererAlgorithmTest, OnLastFrameDropped) { |
@@ -1201,6 +1235,7 @@ TEST_F(VideoRendererAlgorithmTest, EnqueueFrames) { |
RenderAndStep(&tg, &frames_dropped); |
EXPECT_EQ(1u, frames_queued()); |
EXPECT_EQ(frame_1, rendered_frame); |
+ EXPECT_EQ(1, GetCurrentFrameDisplayCount()); |
// The replaced frame should count as dropped. |
EXPECT_EQ(1u, frames_dropped); |
@@ -1213,6 +1248,7 @@ TEST_F(VideoRendererAlgorithmTest, EnqueueFrames) { |
EXPECT_EQ(1u, frames_queued()); |
EXPECT_EQ(frame_1, rendered_frame); |
EXPECT_EQ(1u, frames_dropped); |
+ EXPECT_EQ(2, GetCurrentFrameDisplayCount()); |
// Trying to add a frame < 1 ms after the last frame should drop the frame. |
algorithm_.EnqueueFrame(CreateFrame(base::TimeDelta::FromMicroseconds(999))); |
@@ -1220,6 +1256,7 @@ TEST_F(VideoRendererAlgorithmTest, EnqueueFrames) { |
EXPECT_EQ(1u, frames_queued()); |
EXPECT_EQ(frame_1, rendered_frame); |
EXPECT_EQ(1u, frames_dropped); |
+ EXPECT_EQ(3, GetCurrentFrameDisplayCount()); |
scoped_refptr<VideoFrame> frame_3 = CreateFrame(tg.interval(1)); |
algorithm_.EnqueueFrame(frame_3); |
@@ -1232,6 +1269,7 @@ TEST_F(VideoRendererAlgorithmTest, EnqueueFrames) { |
EXPECT_EQ(1u, frames_queued()); |
EXPECT_EQ(frame_3, rendered_frame); |
EXPECT_EQ(1u, frames_dropped); |
+ EXPECT_EQ(1, GetCurrentFrameDisplayCount()); |
} |
TEST_F(VideoRendererAlgorithmTest, CadenceForFutureFrames) { |