Chromium Code Reviews| 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_ |