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

Unified Diff: webrtc/modules/video_coding/timing.cc

Issue 2007743003: Add sender controlled playout delay limits (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@cleanup_rtp_hdr_extensions
Patch Set: Addressed comments Created 4 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: webrtc/modules/video_coding/timing.cc
diff --git a/webrtc/modules/video_coding/timing.cc b/webrtc/modules/video_coding/timing.cc
index 6542ef5b1526e1f8b4fc1c5c65c64a112d8d7f7e..85636855e40861091a30732765c35da73caa5f13 100644
--- a/webrtc/modules/video_coding/timing.cc
+++ b/webrtc/modules/video_coding/timing.cc
@@ -28,6 +28,7 @@ VCMTiming::VCMTiming(Clock* clock, VCMTiming* master_timing)
codec_timer_(new VCMCodecTimer()),
render_delay_ms_(kDefaultRenderDelayMs),
min_playout_delay_ms_(0),
+ max_playout_delay_ms_(10000),
jitter_delay_ms_(0),
current_delay_ms_(0),
last_decode_ms_(0),
@@ -101,6 +102,21 @@ void VCMTiming::set_min_playout_delay(uint32_t min_playout_delay_ms) {
min_playout_delay_ms_ = min_playout_delay_ms;
}
+uint32_t VCMTiming::min_playout_delay() {
+ CriticalSectionScoped cs(crit_sect_);
+ return min_playout_delay_ms_;
+}
+
+void VCMTiming::set_max_playout_delay(uint32_t max_playout_delay_ms) {
+ CriticalSectionScoped cs(crit_sect_);
+ max_playout_delay_ms_ = max_playout_delay_ms;
+}
+
+uint32_t VCMTiming::max_playout_delay() {
+ CriticalSectionScoped cs(crit_sect_);
+ return max_playout_delay_ms_;
+}
+
void VCMTiming::SetJitterDelay(uint32_t jitter_delay_ms) {
CriticalSectionScoped cs(crit_sect_);
if (jitter_delay_ms != jitter_delay_ms_) {
@@ -211,8 +227,15 @@ int64_t VCMTiming::RenderTimeMsInternal(uint32_t frame_timestamp,
estimated_complete_time_ms = now_ms;
}
- // Make sure that we have at least the playout delay.
+ if (min_playout_delay_ms_ == 0 && max_playout_delay_ms_ == 0) {
+ // Render as soon as possible
+ return now_ms;
+ }
+
+ // Make sure the actual delay stays in the range of |min_playout_delay_ms_|
+ // and |max_playout_delay_ms_|.
uint32_t actual_delay = std::max(current_delay_ms_, min_playout_delay_ms_);
+ actual_delay = std::min(actual_delay, max_playout_delay_ms_);
return estimated_complete_time_ms + actual_delay;
}

Powered by Google App Engine
This is Rietveld 408576698