Index: webrtc/modules/video_coding/frame_buffer2.cc |
diff --git a/webrtc/modules/video_coding/frame_buffer2.cc b/webrtc/modules/video_coding/frame_buffer2.cc |
index 4dcea53f6a6b4a0e993e5da827ea6a24fb531c9b..8d86a6412a076f295f22b4546b84d21d3189651c 100644 |
--- a/webrtc/modules/video_coding/frame_buffer2.cc |
+++ b/webrtc/modules/video_coding/frame_buffer2.cc |
@@ -43,6 +43,7 @@ FrameBuffer::FrameBuffer(Clock* clock, |
jitter_estimator_(jitter_estimator), |
timing_(timing), |
inter_frame_delay_(clock_->TimeInMilliseconds()), |
+ last_decoded_frame_timestamp_(0), |
last_decoded_frame_it_(frames_.end()), |
last_continuous_frame_it_(frames_.end()), |
num_frames_history_(0), |
@@ -207,6 +208,16 @@ void FrameBuffer::Stop() { |
new_continuous_frame_event_.Set(); |
} |
+void FrameBuffer::UpdatePlayoutDelays(const FrameObject& frame) { |
+ TRACE_EVENT0("webrtc", "FrameBuffer::UpdatePlayoutDelays"); |
+ PlayoutDelay playout_delay = frame.EncodedImage().playout_delay_; |
+ if (playout_delay.min_ms >= 0) |
+ timing_->set_min_playout_delay(playout_delay.min_ms); |
+ |
+ if (playout_delay.max_ms >= 0) |
+ timing_->set_max_playout_delay(playout_delay.max_ms); |
+} |
+ |
int FrameBuffer::InsertFrame(std::unique_ptr<FrameObject> frame) { |
TRACE_EVENT0("webrtc", "FrameBuffer::InsertFrame"); |
RTC_DCHECK(frame); |
@@ -283,7 +294,7 @@ int FrameBuffer::InsertFrame(std::unique_ptr<FrameObject> frame) { |
if (!UpdateFrameInfoWithIncomingFrame(*frame, info)) |
return last_continuous_picture_id; |
- |
+ UpdatePlayoutDelays(*frame); |
info->second.frame = std::move(frame); |
++num_frames_buffered_; |