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

Side by Side Diff: webrtc/modules/video_coding/media_optimization.cc

Issue 2743543004: Speculative fix for division by zero in Vp8EncoderImpl. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « webrtc/common_types.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/modules/video_coding/media_optimization.h" 11 #include "webrtc/modules/video_coding/media_optimization.h"
12 12
13 // #include <algorithm>
sprang_webrtc 2017/03/10 12:38:57 remove
stefan-webrtc 2017/03/10 12:39:41 Done.
14 #include <limits>
15
13 #include "webrtc/base/logging.h" 16 #include "webrtc/base/logging.h"
14 #include "webrtc/modules/video_coding/utility/frame_dropper.h" 17 #include "webrtc/modules/video_coding/utility/frame_dropper.h"
15 #include "webrtc/system_wrappers/include/clock.h" 18 #include "webrtc/system_wrappers/include/clock.h"
16 19
17 namespace webrtc { 20 namespace webrtc {
18 namespace media_optimization { 21 namespace media_optimization {
19 22
20 struct MediaOptimization::EncodedFrameSample { 23 struct MediaOptimization::EncodedFrameSample {
21 EncodedFrameSample(size_t size_bytes, 24 EncodedFrameSample(size_t size_bytes,
22 uint32_t timestamp, 25 uint32_t timestamp,
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 return video_target_bitrate_; 125 return video_target_bitrate_;
123 } 126 }
124 127
125 uint32_t MediaOptimization::InputFrameRate() { 128 uint32_t MediaOptimization::InputFrameRate() {
126 CriticalSectionScoped lock(crit_sect_.get()); 129 CriticalSectionScoped lock(crit_sect_.get());
127 return InputFrameRateInternal(); 130 return InputFrameRateInternal();
128 } 131 }
129 132
130 uint32_t MediaOptimization::InputFrameRateInternal() { 133 uint32_t MediaOptimization::InputFrameRateInternal() {
131 ProcessIncomingFrameRate(clock_->TimeInMilliseconds()); 134 ProcessIncomingFrameRate(clock_->TimeInMilliseconds());
132 return uint32_t(incoming_frame_rate_ + 0.5f); 135 uint32_t framerate = static_cast<uint32_t>(std::min<float>(
136 std::numeric_limits<uint32_t>::max(), incoming_frame_rate_ + 0.5f));
137 return framerate;
133 } 138 }
134 139
135 uint32_t MediaOptimization::SentFrameRate() { 140 uint32_t MediaOptimization::SentFrameRate() {
136 CriticalSectionScoped lock(crit_sect_.get()); 141 CriticalSectionScoped lock(crit_sect_.get());
137 return SentFrameRateInternal(); 142 return SentFrameRateInternal();
138 } 143 }
139 144
140 uint32_t MediaOptimization::SentFrameRateInternal() { 145 uint32_t MediaOptimization::SentFrameRateInternal() {
141 PurgeOldFrameSamples(clock_->TimeInMilliseconds()); 146 PurgeOldFrameSamples(clock_->TimeInMilliseconds());
142 UpdateSentFramerate(); 147 UpdateSentFramerate();
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 const int64_t diff = 274 const int64_t diff =
270 incoming_frame_times_[0] - incoming_frame_times_[num - 1]; 275 incoming_frame_times_[0] - incoming_frame_times_[num - 1];
271 incoming_frame_rate_ = 0.0; // No frame rate estimate available. 276 incoming_frame_rate_ = 0.0; // No frame rate estimate available.
272 if (diff > 0) { 277 if (diff > 0) {
273 incoming_frame_rate_ = nr_of_frames * 1000.0f / static_cast<float>(diff); 278 incoming_frame_rate_ = nr_of_frames * 1000.0f / static_cast<float>(diff);
274 } 279 }
275 } 280 }
276 } 281 }
277 } // namespace media_optimization 282 } // namespace media_optimization
278 } // namespace webrtc 283 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/common_types.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698