| 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 cfc7e701779fd16d04b98650c3392be710ad072b..d8b2eb0da8ae40afcd667023728313b9d54a194c 100644
|
| --- a/media/filters/video_renderer_algorithm_unittest.cc
|
| +++ b/media/filters/video_renderer_algorithm_unittest.cc
|
| @@ -633,9 +633,10 @@ TEST_F(VideoRendererAlgorithmTest, SortedFrameQueue) {
|
|
|
| // Since a frame has already been rendered, queuing this frame and calling
|
| // Render() should result in it being dropped; even though it's a better
|
| - // candidate for the desired interval.
|
| + // candidate for the desired interval. The frame is dropped during enqueue so
|
| + // it won't show up in frames_queued().
|
| algorithm_.EnqueueFrame(CreateFrame(tg.interval(1)));
|
| - EXPECT_EQ(3u, frames_queued());
|
| + EXPECT_EQ(2u, frames_queued());
|
| EXPECT_EQ(2u, algorithm_.EffectiveFramesQueued());
|
| frame = RenderAndStep(&tg, &frames_dropped);
|
| EXPECT_EQ(1u, frames_dropped);
|
| @@ -1190,8 +1191,7 @@ TEST_F(VideoRendererAlgorithmTest, EnqueueFrames) {
|
| algorithm_.EnqueueFrame(frame_1);
|
| EXPECT_EQ(1u, frames_queued());
|
|
|
| - // Enqueuing a frame with the same timestamp should not increase the queue and
|
| - // just replace the existing frame if we haven't rendered it.
|
| + // Enqueuing a frame with the same timestamp should always be dropped.
|
| scoped_refptr<VideoFrame> frame_2 = CreateFrame(tg.interval(0));
|
| algorithm_.EnqueueFrame(frame_2);
|
| EXPECT_EQ(1u, frames_queued());
|
| @@ -1200,18 +1200,37 @@ TEST_F(VideoRendererAlgorithmTest, EnqueueFrames) {
|
| scoped_refptr<VideoFrame> rendered_frame =
|
| RenderAndStep(&tg, &frames_dropped);
|
| EXPECT_EQ(1u, frames_queued());
|
| - EXPECT_EQ(frame_2, rendered_frame);
|
| + EXPECT_EQ(frame_1, rendered_frame);
|
|
|
| // The replaced frame should count as dropped.
|
| EXPECT_EQ(1u, frames_dropped);
|
|
|
| - // Trying to replace frame_2 with frame_1 should do nothing.
|
| - algorithm_.EnqueueFrame(frame_1);
|
| + // Trying to replace frame_1 with frame_2 should do nothing.
|
| + algorithm_.EnqueueFrame(frame_2);
|
| + EXPECT_EQ(1u, frames_queued());
|
| +
|
| + rendered_frame = RenderAndStep(&tg, &frames_dropped);
|
| EXPECT_EQ(1u, frames_queued());
|
| + EXPECT_EQ(frame_1, rendered_frame);
|
| + EXPECT_EQ(1u, frames_dropped);
|
| +
|
| + // Trying to add a frame < 1 ms after the last frame should drop the frame.
|
| + algorithm_.EnqueueFrame(CreateFrame(base::TimeDelta::FromMicroseconds(999)));
|
| + rendered_frame = RenderAndStep(&tg, &frames_dropped);
|
| + EXPECT_EQ(1u, frames_queued());
|
| + EXPECT_EQ(frame_1, rendered_frame);
|
| + EXPECT_EQ(1u, frames_dropped);
|
| +
|
| + scoped_refptr<VideoFrame> frame_3 = CreateFrame(tg.interval(1));
|
| + algorithm_.EnqueueFrame(frame_3);
|
| + EXPECT_EQ(2u, frames_queued());
|
|
|
| + // Trying to add a frame < 1 ms before the last frame should drop the frame.
|
| + algorithm_.EnqueueFrame(
|
| + CreateFrame(tg.interval(1) - base::TimeDelta::FromMicroseconds(999)));
|
| rendered_frame = RenderAndStep(&tg, &frames_dropped);
|
| EXPECT_EQ(1u, frames_queued());
|
| - EXPECT_EQ(frame_2, rendered_frame);
|
| + EXPECT_EQ(frame_3, rendered_frame);
|
| EXPECT_EQ(1u, frames_dropped);
|
| }
|
|
|
|
|