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

Unified Diff: media/filters/video_renderer_algorithm_unittest.cc

Issue 1142723002: Drop frames less than a millisecond apart in media time. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplify logic. Created 5 years, 7 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/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);
}
« media/filters/video_renderer_algorithm.cc ('K') | « media/filters/video_renderer_algorithm.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698