Index: remoting/protocol/webrtc_capture_scheduler.h |
diff --git a/remoting/protocol/webrtc_capture_scheduler.h b/remoting/protocol/webrtc_capture_scheduler.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fe31463b429bfb51d0e5c391c077bf713293c271 |
--- /dev/null |
+++ b/remoting/protocol/webrtc_capture_scheduler.h |
@@ -0,0 +1,50 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef REMOTING_PROTOCOL_WEBRTC_CAPTURE_SCHEDULER_H_ |
+#define REMOTING_PROTOCOL_WEBRTC_CAPTURE_SCHEDULER_H_ |
+ |
+#include "base/callback_forward.h" |
+#include "remoting/codec/webrtc_video_encoder.h" |
+#include "third_party/webrtc/video_encoder.h" |
+ |
+namespace remoting { |
+namespace protocol { |
+ |
+// An abstract interface for capture schedulers. |
+class WebrtcCaptureScheduler { |
+ public: |
+ WebrtcCaptureScheduler() {} |
+ virtual ~WebrtcCaptureScheduler() {} |
+ |
+ // Starts the scheduler. |capture_callback| will be called whenever a new |
+ // frame should be captured. |
+ virtual void Start(const base::Closure& capture_callback) = 0; |
+ |
+ // Pauses the scheduler. |
Irfan
2016/09/14 20:01:29
Pauses/Resumes ?
Sergey Ulanov
2016/09/16 00:02:47
Done.
|
+ virtual void Pause(bool pause) = 0; |
+ |
+ // Requests a key frame. |
+ virtual void SetKeyFrameRequest() = 0; |
+ |
+ // Sets network bitrate estimate. |
+ virtual void SetTargetBitrate(int bitrate_kbps) = 0; |
+ |
+ // Called after |frame| has been captured to get encoding parameters for the |
+ // frame. Returns false is the frame should be dropped (e.g. when there are |
Irfan
2016/09/14 20:01:29
Returns false if
Sergey Ulanov
2016/09/16 00:02:47
Done.
|
+ // no changed), true otherwise. |
+ virtual bool GetEncoderFrameParams( |
Irfan
2016/09/14 20:01:29
It is a bit strange to me that encoder params are
Sergey Ulanov
2016/09/16 00:02:47
The idea here is that frame scheduling logic shoul
Irfan
2016/09/16 17:21:19
sgtm
|
+ const webrtc::DesktopFrame& frame, |
+ WebrtcVideoEncoder::FrameParams* params_out) = 0; |
+ |
+ // Called after a frame has been encoded and passed to the sender. |
+ virtual void OnFrameEncoded( |
Irfan
2016/09/14 20:01:29
I may be imagining, but did you recently add abili
Sergey Ulanov
2016/09/16 00:02:47
I was planning to do that, but haven't actually im
|
+ const WebrtcVideoEncoder::EncodedFrame& encoded_frame, |
+ const webrtc::EncodedImageCallback::Result& send_result) = 0; |
+}; |
+ |
+} // namespace protocol |
+} // namespace remoting |
+ |
+#endif // REMOTING_PROTOCOL_WEBRTC_CAPTURE_SCHEDULER_H_ |