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

Side by Side Diff: webrtc/video/vie_encoder.cc

Issue 1972183004: Reland "Remove ViEEncoder::SetNetworkStatus" (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix bug in BitrateAllocator::Allocate(bitrate) Created 4 years, 7 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/video/vie_encoder.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
(...skipping 25 matching lines...) Expand all
36 OveruseFrameDetector* overuse_detector) 36 OveruseFrameDetector* overuse_detector)
37 : number_of_cores_(number_of_cores), 37 : number_of_cores_(number_of_cores),
38 vp_(VideoProcessing::Create()), 38 vp_(VideoProcessing::Create()),
39 video_sender_(Clock::GetRealTimeClock(), this, this, this), 39 video_sender_(Clock::GetRealTimeClock(), this, this, this),
40 stats_proxy_(stats_proxy), 40 stats_proxy_(stats_proxy),
41 overuse_detector_(overuse_detector), 41 overuse_detector_(overuse_detector),
42 time_of_last_frame_activity_ms_(0), 42 time_of_last_frame_activity_ms_(0),
43 encoder_config_(), 43 encoder_config_(),
44 min_transmit_bitrate_bps_(0), 44 min_transmit_bitrate_bps_(0),
45 last_observed_bitrate_bps_(0), 45 last_observed_bitrate_bps_(0),
46 network_is_transmitting_(true),
47 encoder_paused_(true), 46 encoder_paused_(true),
48 encoder_paused_and_dropped_frame_(false), 47 encoder_paused_and_dropped_frame_(false),
49 module_process_thread_(module_process_thread), 48 module_process_thread_(module_process_thread),
50 has_received_sli_(false), 49 has_received_sli_(false),
51 picture_id_sli_(0), 50 picture_id_sli_(0),
52 has_received_rpsi_(false), 51 has_received_rpsi_(false),
53 picture_id_rpsi_(0), 52 picture_id_rpsi_(0),
54 video_suspended_(false) { 53 video_suspended_(false) {
55 module_process_thread_->RegisterModule(&video_sender_); 54 module_process_thread_->RegisterModule(&video_sender_);
56 vp_->EnableTemporalDecimation(true); 55 vp_->EnableTemporalDecimation(true);
57 } 56 }
58 57
59 vcm::VideoSender* ViEEncoder::video_sender() { 58 vcm::VideoSender* ViEEncoder::video_sender() {
60 return &video_sender_; 59 return &video_sender_;
61 } 60 }
62 61
63 ViEEncoder::~ViEEncoder() { 62 ViEEncoder::~ViEEncoder() {
64 module_process_thread_->DeRegisterModule(&video_sender_); 63 module_process_thread_->DeRegisterModule(&video_sender_);
65 } 64 }
66 65
67 void ViEEncoder::SetNetworkTransmissionState(bool is_transmitting) {
68 {
69 rtc::CritScope lock(&data_cs_);
70 network_is_transmitting_ = is_transmitting;
71 }
72 }
73
74 void ViEEncoder::Pause() { 66 void ViEEncoder::Pause() {
75 rtc::CritScope lock(&data_cs_); 67 rtc::CritScope lock(&data_cs_);
76 encoder_paused_ = true; 68 encoder_paused_ = true;
77 } 69 }
78 70
79 void ViEEncoder::Start() { 71 void ViEEncoder::Start() {
80 rtc::CritScope lock(&data_cs_); 72 rtc::CritScope lock(&data_cs_);
81 encoder_paused_ = false; 73 encoder_paused_ = false;
82 } 74 }
83 75
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 // Padding may never exceed bitrate estimate. 184 // Padding may never exceed bitrate estimate.
193 if (pad_up_to_bitrate_bps > bitrate_bps) 185 if (pad_up_to_bitrate_bps > bitrate_bps)
194 pad_up_to_bitrate_bps = bitrate_bps; 186 pad_up_to_bitrate_bps = bitrate_bps;
195 187
196 return pad_up_to_bitrate_bps; 188 return pad_up_to_bitrate_bps;
197 } 189 }
198 190
199 bool ViEEncoder::EncoderPaused() const { 191 bool ViEEncoder::EncoderPaused() const {
200 // Pause video if paused by caller or as long as the network is down or the 192 // Pause video if paused by caller or as long as the network is down or the
201 // pacer queue has grown too large in buffered mode. 193 // pacer queue has grown too large in buffered mode.
202 if (encoder_paused_) { 194 // If the pacer queue has grown to large or the network is down,
203 return true; 195 // last_observed_bitrate_bps_ will be 0.
204 } 196 return encoder_paused_ || video_suspended_ || last_observed_bitrate_bps_ == 0;
205 if (video_suspended_ || last_observed_bitrate_bps_ == 0) {
206 return true;
207 }
208 return !network_is_transmitting_;
209 } 197 }
210 198
211 void ViEEncoder::TraceFrameDropStart() { 199 void ViEEncoder::TraceFrameDropStart() {
212 // Start trace event only on the first frame after encoder is paused. 200 // Start trace event only on the first frame after encoder is paused.
213 if (!encoder_paused_and_dropped_frame_) { 201 if (!encoder_paused_and_dropped_frame_) {
214 TRACE_EVENT_ASYNC_BEGIN0("webrtc", "EncoderPaused", this); 202 TRACE_EVENT_ASYNC_BEGIN0("webrtc", "EncoderPaused", this);
215 } 203 }
216 encoder_paused_and_dropped_frame_ = true; 204 encoder_paused_and_dropped_frame_ = true;
217 return; 205 return;
218 } 206 }
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 if (!video_suspension_changed) 349 if (!video_suspension_changed)
362 return; 350 return;
363 // Video suspend-state changed, inform codec observer. 351 // Video suspend-state changed, inform codec observer.
364 LOG(LS_INFO) << "Video suspend state changed " << video_is_suspended; 352 LOG(LS_INFO) << "Video suspend state changed " << video_is_suspended;
365 353
366 if (stats_proxy_) 354 if (stats_proxy_)
367 stats_proxy_->OnSuspendChange(video_is_suspended); 355 stats_proxy_->OnSuspendChange(video_is_suspended);
368 } 356 }
369 357
370 } // namespace webrtc 358 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/vie_encoder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698