| 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;
|
| }
|
|
|
|
|