Add max pre-decode queue size threshold for pacing
When pacing is enabled for the low latency rendering path, frames are sent to the decoder in regular intervals. In case of a jitter, these frames intervals could add up to create a large latency. Hence, disable frame pacing if the pre-decode queue grows beyond the threshold. The threshold for when to disable frame pacing is set through a field trial. The default value is high enough so that the behavior is not changed unless the field trial is specified. Bug: chromium:1237402 Change-Id: I901fd579f68da286eca3d654118f60d3c55e21ce Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228241 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Johannes Kron <kron@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34705}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
5653c95ca2
commit
2ddc39e2b9
@ -63,7 +63,11 @@ FrameBuffer::FrameBuffer(Clock* clock,
|
||||
last_log_non_decoded_ms_(-kLogNonDecodedIntervalMs),
|
||||
add_rtt_to_playout_delay_(
|
||||
webrtc::field_trial::IsEnabled("WebRTC-AddRttToPlayoutDelay")),
|
||||
rtt_mult_settings_(RttMultExperiment::GetRttMultValue()) {
|
||||
rtt_mult_settings_(RttMultExperiment::GetRttMultValue()),
|
||||
zero_playout_delay_max_decode_queue_size_("max_decode_queue_size",
|
||||
kMaxFramesBuffered) {
|
||||
ParseFieldTrial({&zero_playout_delay_max_decode_queue_size_},
|
||||
field_trial::FindFullName("WebRTC-ZeroPlayoutDelay"));
|
||||
callback_checker_.Detach();
|
||||
}
|
||||
|
||||
@ -212,7 +216,11 @@ int64_t FrameBuffer::FindNextFrame(int64_t now_ms) {
|
||||
if (frame->RenderTime() == -1) {
|
||||
frame->SetRenderTime(timing_->RenderTimeMs(frame->Timestamp(), now_ms));
|
||||
}
|
||||
wait_ms = timing_->MaxWaitingTime(frame->RenderTime(), now_ms);
|
||||
bool too_many_frames_queued =
|
||||
frames_.size() > zero_playout_delay_max_decode_queue_size_ ? true
|
||||
: false;
|
||||
wait_ms = timing_->MaxWaitingTime(frame->RenderTime(), now_ms,
|
||||
too_many_frames_queued);
|
||||
|
||||
// This will cause the frame buffer to prefer high framerate rather
|
||||
// than high resolution in the case of the decoder not decoding fast
|
||||
|
||||
Reference in New Issue
Block a user