Update methods in VCMTiming to use VideoJitterTimingInterface structs. Bug: b/493549134 Change-Id: Ib758359c62e07b7687d95471c08946ce1bbae65f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/485821 Commit-Queue: Åsa Persson <asapersson@webrtc.org> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Cr-Commit-Position: refs/heads/main@{#48116}
diff --git a/modules/video_coding/timing/BUILD.gn b/modules/video_coding/timing/BUILD.gn index 213f05f..8c51cde 100644 --- a/modules/video_coding/timing/BUILD.gn +++ b/modules/video_coding/timing/BUILD.gn
@@ -123,7 +123,6 @@ ":default_video_jitter_timing", "../../../api:field_trials_view", "../../../api:sequence_checker", - "../../../api/units:data_size", "../../../api/units:time_delta", "../../../api/units:timestamp", "../../../api/video:video_frame",
diff --git a/modules/video_coding/timing/timing.cc b/modules/video_coding/timing/timing.cc index c1ee287..8c131b7 100644 --- a/modules/video_coding/timing/timing.cc +++ b/modules/video_coding/timing/timing.cc
@@ -18,7 +18,6 @@ #include "api/field_trials_view.h" #include "api/sequence_checker.h" -#include "api/units/data_size.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "api/video/timing/video_jitter_timing_interface.h" @@ -138,25 +137,20 @@ } } -void VCMTiming::OnDecodableTemporalUnit(uint32_t rtp_timestamp, - DataSize superframe_size, - Timestamp max_receive_time, - bool was_retransmitted) { +void VCMTiming::OnDecodableTemporalUnit( + const VideoJitterTimingInterface::TemporalUnitInfo& info) { RTC_DCHECK_RUN_ON(&worker_sequence_checker_); std::optional<TimeDelta> minimum_delay = - video_jitter_timing_->OnDecodableTemporalUnit( - {.rtp_timestamp = rtp_timestamp, - .size = superframe_size, - .time = max_receive_time, - .was_retransmitted = was_retransmitted}); + video_jitter_timing_->OnDecodableTemporalUnit(info); if (minimum_delay.has_value()) { SetMinimumDelay(*minimum_delay); } } -void VCMTiming::UpdateRtt(TimeDelta rtt) { +void VCMTiming::OnNetworkUpdate( + const VideoJitterTimingInterface::NetworkInfo& info) { RTC_DCHECK_RUN_ON(&worker_sequence_checker_); - video_jitter_timing_->OnNetworkUpdate({.rtt = rtt}); + video_jitter_timing_->OnNetworkUpdate(info); } void VCMTiming::UpdateCurrentDelay(Timestamp render_time,
diff --git a/modules/video_coding/timing/timing.h b/modules/video_coding/timing/timing.h index 333a350..57ac328 100644 --- a/modules/video_coding/timing/timing.h +++ b/modules/video_coding/timing/timing.h
@@ -18,7 +18,6 @@ #include "api/field_trials_view.h" #include "api/sequence_checker.h" -#include "api/units/data_size.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "api/video/timing/video_jitter_timing_interface.h" @@ -92,11 +91,9 @@ // Methods used by video jitter timing. void OnCompleteFrame(const VideoJitterTimingInterface::FrameInfo& info); - void OnDecodableTemporalUnit(uint32_t rtp_timestamp, - DataSize superframe_size, - Timestamp max_receive_time, - bool was_retransmitted); - void UpdateRtt(TimeDelta rtt); + void OnDecodableTemporalUnit( + const VideoJitterTimingInterface::TemporalUnitInfo& info); + void OnNetworkUpdate(const VideoJitterTimingInterface::NetworkInfo& info); // Increases or decreases the current delay to get closer to the target delay. // Given the actual decode time and the render time for a frame, this function
diff --git a/modules/video_coding/timing/timing_unittest.cc b/modules/video_coding/timing/timing_unittest.cc index 8ec7336..1706dbe 100644 --- a/modules/video_coding/timing/timing_unittest.cc +++ b/modules/video_coding/timing/timing_unittest.cc
@@ -354,9 +354,10 @@ SimulatedClock clock(Timestamp::Millis(0)); VCMTiming timing(&clock, field_trials, kRenderDelay); - timing.OnDecodableTemporalUnit(/*rtp_timestamp=*/0, DataSize::Bytes(789), - clock.CurrentTime(), - /*was_retransmitted=*/false); + timing.OnDecodableTemporalUnit({.rtp_timestamp = 0, + .size = DataSize::Bytes(789), + .time = clock.CurrentTime(), + .was_retransmitted = false}); EXPECT_GT(timing.GetTimings().minimum_delay, TimeDelta::Zero()); } @@ -367,9 +368,10 @@ SimulatedClock clock(Timestamp::Millis(0)); VCMTiming timing(&clock, field_trials, kRenderDelay); - timing.OnDecodableTemporalUnit(/*rtp_timestamp=*/0, DataSize::Bytes(789), - clock.CurrentTime(), - /*was_retransmitted=*/true); + timing.OnDecodableTemporalUnit({.rtp_timestamp = 0, + .size = DataSize::Bytes(789), + .time = clock.CurrentTime(), + .was_retransmitted = true}); EXPECT_EQ(timing.GetTimings().minimum_delay, TimeDelta::Zero()); } @@ -380,9 +382,10 @@ VCMTiming timing(&clock, field_trials, kRenderDelay, /*video_jitter_timing=*/nullptr); - timing.OnDecodableTemporalUnit(/*rtp_timestamp=*/0, DataSize::Bytes(789), - clock.CurrentTime(), - /*was_retransmitted=*/false); + timing.OnDecodableTemporalUnit({.rtp_timestamp = 0, + .size = DataSize::Bytes(789), + .time = clock.CurrentTime(), + .was_retransmitted = false}); EXPECT_GT(timing.GetTimings().minimum_delay, TimeDelta::Zero()); } @@ -398,9 +401,10 @@ EXPECT_CALL(*mock_ptr, OnDecodableTemporalUnit(_)) .WillOnce(Return(TimeDelta::Millis(123))); - timing.OnDecodableTemporalUnit(/*rtp_timestamp=*/0, DataSize::Bytes(789), - clock.CurrentTime(), - /*was_retransmitted=*/false); + timing.OnDecodableTemporalUnit({.rtp_timestamp = 0, + .size = DataSize::Bytes(789), + .time = clock.CurrentTime(), + .was_retransmitted = false}); EXPECT_EQ(timing.GetTimings().minimum_delay, TimeDelta::Millis(123)); } @@ -596,7 +600,7 @@ std::move(mock_jitter_timing)); EXPECT_CALL(*mock_ptr, OnNetworkUpdate(FieldsAre(TimeDelta::Millis(101)))); - timing.UpdateRtt(TimeDelta::Millis(101)); + timing.OnNetworkUpdate({.rtt = TimeDelta::Millis(101)}); EXPECT_CALL(*mock_ptr, Reset()); timing.Reset();
diff --git a/video/video_stream_buffer_controller.cc b/video/video_stream_buffer_controller.cc index ac11225..efee05d 100644 --- a/video/video_stream_buffer_controller.cc +++ b/video/video_stream_buffer_controller.cc
@@ -176,7 +176,7 @@ void VideoStreamBufferController::UpdateRtt(int64_t max_rtt_ms) { RTC_DCHECK_RUN_ON(&worker_sequence_checker_); - timing_->UpdateRtt(TimeDelta::Millis(max_rtt_ms)); + timing_->OnNetworkUpdate({.rtt = TimeDelta::Millis(max_rtt_ms)}); } void VideoStreamBufferController::SetMaxWaits(TimeDelta max_wait_for_keyframe, @@ -241,9 +241,11 @@ superframe_size += DataSize::Bytes(frame->size()); } - timing_->OnDecodableTemporalUnit(first_frame.RtpTimestamp(), superframe_size, - max_receive_time, - superframe_delayed_by_retransmission); + timing_->OnDecodableTemporalUnit( + {.rtp_timestamp = first_frame.RtpTimestamp(), + .size = superframe_size, + .time = max_receive_time, + .was_retransmitted = superframe_delayed_by_retransmission}); if (!superframe_delayed_by_retransmission) { timing_->UpdateCurrentDelay(render_time, now); }