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

Unified Diff: remoting/protocol/webrtc_frame_scheduler_simple.cc

Issue 2405333002: Add remoting::protocol::NetworkStateObserver interface. (Closed)
Patch Set: Created 4 years, 2 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: remoting/protocol/webrtc_frame_scheduler_simple.cc
diff --git a/remoting/protocol/webrtc_frame_scheduler_simple.cc b/remoting/protocol/webrtc_frame_scheduler_simple.cc
index 31494ae07840837f3c3d9399bdfdeb4694442a50..6e40578d0e6c5bef8e85d6a14b054bc10dbf63ad 100644
--- a/remoting/protocol/webrtc_frame_scheduler_simple.cc
+++ b/remoting/protocol/webrtc_frame_scheduler_simple.cc
@@ -56,15 +56,44 @@ int64_t GetRegionArea(const webrtc::DesktopRegion& region) {
WebrtcFrameSchedulerSimple::WebrtcFrameSchedulerSimple()
: pacing_bucket_(LeakyBucket::kUnlimitedDepth, 0),
frame_processing_delay_us_(kStatsWindow),
- updated_region_area_(kStatsWindow) {}
+ updated_region_area_(kStatsWindow),
+ weak_factory_(this) {}
WebrtcFrameSchedulerSimple::~WebrtcFrameSchedulerSimple() {}
+void WebrtcFrameSchedulerSimple::OnKeyFrameRequested() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ key_frame_request_ = true;
+ if (!capture_timer_.IsRunning())
+ ScheduleNextFrame(base::TimeTicks::Now());
+}
+
+void WebrtcFrameSchedulerSimple::OnChannelParameters(int packet_loss,
+ base::TimeDelta rtt) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+}
+
+void WebrtcFrameSchedulerSimple::OnTargetBitrateChanged(int bitrate_kbps) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ base::TimeTicks now = base::TimeTicks::Now();
+ pacing_bucket_.UpdateRate(bitrate_kbps * 1000 / 8, now);
+ ScheduleNextFrame(now);
+}
+
+base::WeakPtr<NetworkStateObserver>
+WebrtcFrameSchedulerSimple::GetNetworkStateObserver() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ return weak_factory_.GetWeakPtr();
+}
+
void WebrtcFrameSchedulerSimple::Start(const base::Closure& capture_callback) {
+ DCHECK(thread_checker_.CalledOnValidThread());
capture_callback_ = capture_callback;
ScheduleNextFrame(base::TimeTicks::Now());
}
void WebrtcFrameSchedulerSimple::Pause(bool pause) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
paused_ = pause;
if (paused_) {
capture_timer_.Stop();
@@ -73,19 +102,11 @@ void WebrtcFrameSchedulerSimple::Pause(bool pause) {
}
}
-void WebrtcFrameSchedulerSimple::SetKeyFrameRequest() {
- key_frame_request_ = true;
-}
-
-void WebrtcFrameSchedulerSimple::SetTargetBitrate(int bitrate_kbps) {
- base::TimeTicks now = base::TimeTicks::Now();
- pacing_bucket_.UpdateRate(bitrate_kbps * 1000 / 8, now);
- ScheduleNextFrame(now);
-}
-
bool WebrtcFrameSchedulerSimple::GetEncoderFrameParams(
const webrtc::DesktopFrame& frame,
WebrtcVideoEncoder::FrameParams* params_out) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
base::TimeTicks now = base::TimeTicks::Now();
if (frame.updated_region().is_empty() && !top_off_is_active_ &&
@@ -137,6 +158,8 @@ bool WebrtcFrameSchedulerSimple::GetEncoderFrameParams(
void WebrtcFrameSchedulerSimple::OnFrameEncoded(
const WebrtcVideoEncoder::EncodedFrame& encoded_frame,
const webrtc::EncodedImageCallback::Result& send_result) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
base::TimeTicks now = base::TimeTicks::Now();
pacing_bucket_.RefillOrSpill(encoded_frame.data.size(), now);
@@ -154,6 +177,8 @@ void WebrtcFrameSchedulerSimple::OnFrameEncoded(
}
void WebrtcFrameSchedulerSimple::ScheduleNextFrame(base::TimeTicks now) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
// Don't capture frames when paused or target bitrate is 0 or there is
// no capture callback set.
if (paused_ || pacing_bucket_.rate() == 0 || capture_callback_.is_null())
@@ -181,6 +206,8 @@ void WebrtcFrameSchedulerSimple::ScheduleNextFrame(base::TimeTicks now) {
}
void WebrtcFrameSchedulerSimple::CaptureNextFrame() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
last_capture_started_time_ = base::TimeTicks::Now();
capture_callback_.Run();
}

Powered by Google App Engine
This is Rietveld 408576698