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

Unified Diff: media/filters/video_renderer_algorithm_unittest.cc

Issue 1160853006: Improve audio/video sync during underflow, reduce underflow frequency. (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments. Created 5 years, 6 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
« no previous file with comments | « media/filters/video_renderer_algorithm.cc ('k') | media/renderers/audio_renderer_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « media/filters/video_renderer_algorithm.cc ('k') | media/renderers/audio_renderer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698