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

Side by Side Diff: content/browser/media/capture/video_capture_oracle.cc

Issue 962503005: Clean-up: Remove accelerated subscriber switch for tab/desktop capture. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #include "content/browser/media/capture/video_capture_oracle.h" 5 #include "content/browser/media/capture/video_capture_oracle.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 double FractionFromExpectedFrameRate(base::TimeDelta delta, int frame_rate) { 57 double FractionFromExpectedFrameRate(base::TimeDelta delta, int frame_rate) {
58 DCHECK_GT(frame_rate, 0); 58 DCHECK_GT(frame_rate, 0);
59 const base::TimeDelta expected_delta = 59 const base::TimeDelta expected_delta =
60 base::TimeDelta::FromSeconds(1) / frame_rate; 60 base::TimeDelta::FromSeconds(1) / frame_rate;
61 return (delta - expected_delta).InMillisecondsF() / 61 return (delta - expected_delta).InMillisecondsF() /
62 expected_delta.InMillisecondsF(); 62 expected_delta.InMillisecondsF();
63 } 63 }
64 64
65 } // anonymous namespace 65 } // anonymous namespace
66 66
67 VideoCaptureOracle::VideoCaptureOracle(base::TimeDelta min_capture_period, 67 VideoCaptureOracle::VideoCaptureOracle(base::TimeDelta min_capture_period)
68 bool events_are_reliable)
69 : frame_number_(0), 68 : frame_number_(0),
70 last_delivered_frame_number_(-1), 69 last_delivered_frame_number_(-1),
71 smoothing_sampler_(min_capture_period, 70 smoothing_sampler_(min_capture_period,
72 events_are_reliable,
73 kNumRedundantCapturesOfStaticContent), 71 kNumRedundantCapturesOfStaticContent),
74 content_sampler_(min_capture_period) { 72 content_sampler_(min_capture_period) {
75 } 73 }
76 74
77 VideoCaptureOracle::~VideoCaptureOracle() {} 75 VideoCaptureOracle::~VideoCaptureOracle() {}
78 76
79 bool VideoCaptureOracle::ObserveEventAndDecideCapture( 77 bool VideoCaptureOracle::ObserveEventAndDecideCapture(
80 Event event, 78 Event event,
81 const gfx::Rect& damage_rect, 79 const gfx::Rect& damage_rect,
82 base::TimeTicks event_time) { 80 base::TimeTicks event_time) {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 DCHECK_LT(frame_number_ - frame_number, kMaxFrameTimestamps); 165 DCHECK_LT(frame_number_ - frame_number, kMaxFrameTimestamps);
168 return frame_timestamps_[frame_number % kMaxFrameTimestamps]; 166 return frame_timestamps_[frame_number % kMaxFrameTimestamps];
169 } 167 }
170 168
171 void VideoCaptureOracle::SetFrameTimestamp(int frame_number, 169 void VideoCaptureOracle::SetFrameTimestamp(int frame_number,
172 base::TimeTicks timestamp) { 170 base::TimeTicks timestamp) {
173 frame_timestamps_[frame_number % kMaxFrameTimestamps] = timestamp; 171 frame_timestamps_[frame_number % kMaxFrameTimestamps] = timestamp;
174 } 172 }
175 173
176 SmoothEventSampler::SmoothEventSampler(base::TimeDelta min_capture_period, 174 SmoothEventSampler::SmoothEventSampler(base::TimeDelta min_capture_period,
177 bool events_are_reliable,
178 int redundant_capture_goal) 175 int redundant_capture_goal)
179 : events_are_reliable_(events_are_reliable), 176 : min_capture_period_(min_capture_period),
180 min_capture_period_(min_capture_period),
181 redundant_capture_goal_(redundant_capture_goal), 177 redundant_capture_goal_(redundant_capture_goal),
182 token_bucket_capacity_(min_capture_period + min_capture_period / 2), 178 token_bucket_capacity_(min_capture_period + min_capture_period / 2),
183 overdue_sample_count_(0), 179 overdue_sample_count_(0),
184 token_bucket_(token_bucket_capacity_) { 180 token_bucket_(token_bucket_capacity_) {
185 DCHECK_GT(min_capture_period_.InMicroseconds(), 0); 181 DCHECK_GT(min_capture_period_.InMicroseconds(), 0);
186 } 182 }
187 183
188 void SmoothEventSampler::ConsiderPresentationEvent(base::TimeTicks event_time) { 184 void SmoothEventSampler::ConsiderPresentationEvent(base::TimeTicks event_time) {
189 DCHECK(!event_time.is_null()); 185 DCHECK(!event_time.is_null());
190 186
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 overdue_sample_count_ = 0; 220 overdue_sample_count_ = 0;
225 } else { 221 } else {
226 ++overdue_sample_count_; 222 ++overdue_sample_count_;
227 } 223 }
228 } 224 }
229 225
230 bool SmoothEventSampler::IsOverdueForSamplingAt(base::TimeTicks event_time) 226 bool SmoothEventSampler::IsOverdueForSamplingAt(base::TimeTicks event_time)
231 const { 227 const {
232 DCHECK(!event_time.is_null()); 228 DCHECK(!event_time.is_null());
233 229
234 // If we don't get events on compositor updates on this platform, then we 230 if (!HasUnrecordedEvent() && overdue_sample_count_ >= redundant_capture_goal_)
235 // don't reliably know whether we're dirty. 231 return false; // Not dirty.
236 if (events_are_reliable_) {
237 if (!HasUnrecordedEvent() &&
238 overdue_sample_count_ >= redundant_capture_goal_) {
239 return false; // Not dirty.
240 }
241 }
242 232
243 if (last_sample_.is_null()) 233 if (last_sample_.is_null())
244 return true; 234 return true;
245 235
246 // If we're dirty but not yet old, then we've recently gotten updates, so we 236 // If we're dirty but not yet old, then we've recently gotten updates, so we
247 // won't request a sample just yet. 237 // won't request a sample just yet.
248 base::TimeDelta dirty_interval = event_time - last_sample_; 238 base::TimeDelta dirty_interval = event_time - last_sample_;
249 return dirty_interval >= 239 return dirty_interval >=
250 base::TimeDelta::FromMilliseconds(kNonAnimatingThresholdMillis); 240 base::TimeDelta::FromMilliseconds(kNonAnimatingThresholdMillis);
251 } 241 }
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 if (borrowed_time_ >= min_capture_period_) { 418 if (borrowed_time_ >= min_capture_period_) {
429 borrowed_time_ -= min_capture_period_; 419 borrowed_time_ -= min_capture_period_;
430 frame_timestamp_ = base::TimeTicks(); 420 frame_timestamp_ = base::TimeTicks();
431 } else { 421 } else {
432 sequence_offset_ += advancement; 422 sequence_offset_ += advancement;
433 frame_timestamp_ = timebase + sequence_offset_; 423 frame_timestamp_ = timebase + sequence_offset_;
434 } 424 }
435 } 425 }
436 426
437 } // namespace content 427 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/capture/video_capture_oracle.h ('k') | content/browser/media/capture/video_capture_oracle_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698