Add FrameBufferProxy test for low-latency renderer Ensures that frames are decoded instantly when in low-latency render mode. This also tests the max queue size behaviour. Adds a new test suite for FrameBufferProxy that sets the appropriate field trials. * Fixes FrameDecodeTiming to never use negative wait times for decode timestamps. R=kron@webrtc.org Change-Id: I06cbec52e1e866e21aa964b24c4fd0163c26961b Bug: webrtc:13658 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251601 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Johannes Kron <kron@webrtc.org> Commit-Queue: Evan Shrubsole <eshr@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35999}
diff --git a/video/frame_decode_timing_unittest.cc b/video/frame_decode_timing_unittest.cc index 1932e85..ac5bf9e 100644 --- a/video/frame_decode_timing_unittest.cc +++ b/video/frame_decode_timing_unittest.cc
@@ -89,7 +89,8 @@ } TEST_F(FrameDecodeTimingTest, FastForwardsFrameTooFarInThePast) { - const TimeDelta decode_delay = TimeDelta::Millis(-6); + const TimeDelta decode_delay = + -FrameDecodeTiming::kMaxAllowedFrameDelay - TimeDelta::Millis(1); const Timestamp render_time = clock_.CurrentTime(); timing_.SetTimes(90000, render_time, decode_delay); @@ -99,14 +100,16 @@ } TEST_F(FrameDecodeTimingTest, NoFastForwardIfOnlyFrameToDecode) { - const TimeDelta decode_delay = TimeDelta::Millis(-6); + const TimeDelta decode_delay = + -FrameDecodeTiming::kMaxAllowedFrameDelay - TimeDelta::Millis(1); const Timestamp render_time = clock_.CurrentTime(); timing_.SetTimes(90000, render_time, decode_delay); + // Negative `decode_delay` means that `latest_decode_time` is now. EXPECT_THAT(frame_decode_scheduler_.OnFrameBufferUpdated(90000, 90000, false), Optional(AllOf( Field(&FrameDecodeTiming::FrameSchedule::latest_decode_time, - Eq(clock_.CurrentTime() + decode_delay)), + Eq(clock_.CurrentTime())), Field(&FrameDecodeTiming::FrameSchedule::render_time, Eq(render_time))))); }