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

Side by Side Diff: remoting/protocol/webrtc_frame_scheduler_simple.h

Issue 2616213002: Fix WebrtcVideoStream to handle failed capture requests. (Closed)
Patch Set: . Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef REMOTING_PROTOCOL_WEBRTC_FRAME_SCHEDULER_SIMPLE_H_ 5 #ifndef REMOTING_PROTOCOL_WEBRTC_FRAME_SCHEDULER_SIMPLE_H_
6 #define REMOTING_PROTOCOL_WEBRTC_FRAME_SCHEDULER_SIMPLE_H_ 6 #define REMOTING_PROTOCOL_WEBRTC_FRAME_SCHEDULER_SIMPLE_H_
7 7
8 #include "remoting/protocol/webrtc_frame_scheduler.h" 8 #include "remoting/protocol/webrtc_frame_scheduler.h"
9 9
10 #include <queue> 10 #include <queue>
(...skipping 19 matching lines...) Expand all
30 30
31 // VideoChannelStateObserver implementation. 31 // VideoChannelStateObserver implementation.
32 void OnKeyFrameRequested() override; 32 void OnKeyFrameRequested() override;
33 void OnChannelParameters(int packet_loss, base::TimeDelta rtt) override; 33 void OnChannelParameters(int packet_loss, base::TimeDelta rtt) override;
34 void OnTargetBitrateChanged(int bitrate_kbps) override; 34 void OnTargetBitrateChanged(int bitrate_kbps) override;
35 35
36 // WebrtcFrameScheduler implementation. 36 // WebrtcFrameScheduler implementation.
37 void Start(WebrtcDummyVideoEncoderFactory* video_encoder_factory, 37 void Start(WebrtcDummyVideoEncoderFactory* video_encoder_factory,
38 const base::Closure& capture_callback) override; 38 const base::Closure& capture_callback) override;
39 void Pause(bool pause) override; 39 void Pause(bool pause) override;
40 bool GetEncoderFrameParams( 40 bool OnFrameCaptured(const webrtc::DesktopFrame* frame,
41 const webrtc::DesktopFrame& frame, 41 WebrtcVideoEncoder::FrameParams* params_out) override;
42 WebrtcVideoEncoder::FrameParams* params_out) override; 42 void OnFrameEncoded(const WebrtcVideoEncoder::EncodedFrame* encoded_frame,
43 void OnFrameEncoded(const WebrtcVideoEncoder::EncodedFrame& encoded_frame,
44 const webrtc::EncodedImageCallback::Result& send_result,
45 HostFrameStats* frame_stats) override; 43 HostFrameStats* frame_stats) override;
46 44
47 private: 45 private:
48 // Helper class used to calculate target encoder bitrate. 46 // Helper class used to calculate target encoder bitrate.
49 class EncoderBitrateFilter { 47 class EncoderBitrateFilter {
50 public: 48 public:
51 EncoderBitrateFilter(); 49 EncoderBitrateFilter();
52 ~EncoderBitrateFilter(); 50 ~EncoderBitrateFilter();
53 51
54 void SetBandwidthEstimate(int bandwidth_kbps, base::TimeTicks now); 52 void SetBandwidthEstimate(int bandwidth_kbps, base::TimeTicks now);
55 int GetTargetBitrateKbps(webrtc::DesktopSize size, base::TimeTicks now); 53 void SetFrameSize(webrtc::DesktopSize size);
54 int GetTargetBitrateKbps() const;
56 55
57 private: 56 private:
57 void UpdateTargetBitrate();
58
58 std::queue<std::pair<base::TimeTicks, int>> bandwidth_samples_; 59 std::queue<std::pair<base::TimeTicks, int>> bandwidth_samples_;
59 int bandwidth_samples_sum_ = 0; 60 int bandwidth_samples_sum_ = 0;
60 61
61 int current_target_bitrate_; 62 int minimum_bitrate_ = 0;
63 int current_target_bitrate_ = 0;
62 }; 64 };
63 65
64 void ScheduleNextFrame(base::TimeTicks now); 66 void ScheduleNextFrame(base::TimeTicks now);
65 void CaptureNextFrame(); 67 void CaptureNextFrame();
66 68
67 base::Closure capture_callback_; 69 base::Closure capture_callback_;
68 bool paused_ = false; 70 bool paused_ = false;
69 bool key_frame_request_ = false; 71 bool key_frame_request_ = false;
70 72
71 base::TimeTicks last_capture_started_time_; 73 base::TimeTicks last_capture_started_time_;
(...skipping 19 matching lines...) Expand all
91 base::OneShotTimer capture_timer_; 93 base::OneShotTimer capture_timer_;
92 94
93 base::ThreadChecker thread_checker_; 95 base::ThreadChecker thread_checker_;
94 base::WeakPtrFactory<WebrtcFrameSchedulerSimple> weak_factory_; 96 base::WeakPtrFactory<WebrtcFrameSchedulerSimple> weak_factory_;
95 }; 97 };
96 98
97 } // namespace protocol 99 } // namespace protocol
98 } // namespace remoting 100 } // namespace remoting
99 101
100 #endif // REMOTING_PROTOCOL_WEBRTC_FRAME_SCHEDULER_SIMPLE_H_ 102 #endif // REMOTING_PROTOCOL_WEBRTC_FRAME_SCHEDULER_SIMPLE_H_
OLDNEW
« no previous file with comments | « remoting/protocol/webrtc_frame_scheduler.h ('k') | remoting/protocol/webrtc_frame_scheduler_simple.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698