Skip to content

Commit

Permalink
Reland of Fix the video buffer size should take rtt into consideratio…
Browse files Browse the repository at this point in the history
…n (patchset webrtc-uwp#2 id:160001 of https://codereview.chromium.org/3002033002/ )

Reason for revert:
Fixes has landed.

Original issue's description:
> Revert of Fix the video buffer size should take rtt into consideration (patchset #3 id:40001 of https://codereview.chromium.org/2980413002/ )
>
> Reason for revert:
> We are not certain this is the behavior we want.
>
> Original issue's description:
> > Fix the video buffer size should take rtt into consideration
> >
> > BUG=webrtc:8010
> >
> > Review-Url: https://codereview.webrtc.org/2980413002
> > Cr-Commit-Position: refs/heads/master@{#19285}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/f1e08d0b5848d32fd31c5b6e4e570115c32b7ce5
>
> [email protected],[email protected]
> # Not skipping CQ checks because original CL landed more than 1 days ago.
> BUG=webrtc:8010
>
> Review-Url: https://codereview.webrtc.org/3002033002
> Cr-Commit-Position: refs/heads/master@{#19442}
> Committed: https://chromium.googlesource.com/external/webrtc/+/bdbc8895f3a630a4fe28d4661d8e71877ecaf14d

[email protected],[email protected]
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:8010

Review-Url: https://codereview.webrtc.org/3016633002
Cr-Commit-Position: refs/heads/master@{#19944}
  • Loading branch information
Philipel-WebRTC authored and Commit Bot committed Sep 25, 2017
1 parent b0573bc commit e21be1d
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 1 deletion.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ Agora IO <*@agora.io>
ARM Holdings <*@arm.com>
BroadSoft Inc. <*@broadsoft.com>
Google Inc. <*@google.com>
Life On Air Inc. <*@lifeonair.com>
Intel Corporation <*@intel.com>
MIPS Technologies <*@mips.com>
Mozilla Foundation <*@mozilla.com>
Expand Down
7 changes: 7 additions & 0 deletions modules/video_coding/frame_buffer2.cc
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ FrameBuffer::ReturnReason FrameBuffer::NextFrame(
float rtt_mult = protection_mode_ == kProtectionNackFEC ? 0.0 : 1.0;
timing_->SetJitterDelay(jitter_estimator_->GetJitterEstimate(rtt_mult));
timing_->UpdateCurrentDelay(frame->RenderTime(), now_ms);
} else {
jitter_estimator_->FrameNacked();
}

// Gracefully handle bad RTP timestamps and render time issues.
Expand Down Expand Up @@ -247,6 +249,11 @@ void FrameBuffer::Stop() {
new_continuous_frame_event_.Set();
}

void FrameBuffer::UpdateRtt(int64_t rtt_ms) {
rtc::CritScope lock(&crit_);
jitter_estimator_->UpdateRtt(rtt_ms);
}

bool FrameBuffer::ValidReferences(const FrameObject& frame) const {
if (frame.picture_id < 0)
return false;
Expand Down
3 changes: 3 additions & 0 deletions modules/video_coding/frame_buffer2.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ class FrameBuffer {
// return immediately.
void Stop();

// Updates the RTT for jitter buffer estimation.
void UpdateRtt(int64_t rtt_ms);

private:
struct FrameKey {
FrameKey() : picture_id(-1), spatial_layer(0) {}
Expand Down
6 changes: 6 additions & 0 deletions video/video_receive_stream.cc
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ void VideoReceiveStream::Start() {

frame_buffer_->Start();
call_stats_->RegisterStatsObserver(&rtp_video_stream_receiver_);
call_stats_->RegisterStatsObserver(this);

if (rtp_video_stream_receiver_.IsRetransmissionsEnabled() &&
protected_by_fec) {
Expand Down Expand Up @@ -225,6 +226,7 @@ void VideoReceiveStream::Stop() {
rtp_video_stream_receiver_.StopReceive();

frame_buffer_->Stop();
call_stats_->DeregisterStatsObserver(this);
call_stats_->DeregisterStatsObserver(&rtp_video_stream_receiver_);
process_thread_->DeRegisterModule(&video_receiver_);

Expand Down Expand Up @@ -347,6 +349,10 @@ void VideoReceiveStream::OnCompleteFrame(
rtp_video_stream_receiver_.FrameContinuous(last_continuous_pid);
}

void VideoReceiveStream::OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) {
frame_buffer_->UpdateRtt(max_rtt_ms);
}

int VideoReceiveStream::id() const {
RTC_DCHECK_CALLED_SEQUENTIALLY(&worker_sequence_checker_);
return config_.rtp.remote_ssrc;
Expand Down
6 changes: 5 additions & 1 deletion video/video_receive_stream.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ class VideoReceiveStream : public webrtc::VideoReceiveStream,
public NackSender,
public KeyFrameRequestSender,
public video_coding::OnCompleteFrameCallback,
public Syncable {
public Syncable,
public CallStatsObserver {
public:
VideoReceiveStream(RtpStreamReceiverControllerInterface* receiver_controller,
int num_cpu_cores,
Expand Down Expand Up @@ -103,6 +104,9 @@ class VideoReceiveStream : public webrtc::VideoReceiveStream,
void OnCompleteFrame(
std::unique_ptr<video_coding::FrameObject> frame) override;

// Implements CallStatsObserver::OnRttUpdate
void OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) override;

// Implements Syncable.
int id() const override;
rtc::Optional<Syncable::Info> GetInfo() const override;
Expand Down

0 comments on commit e21be1d

Please sign in to comment.