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

Unified Diff: webrtc/video/video_send_stream.cc

Issue 2122743003: Fix stats for encoder target bitrate when target rate is zero. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Removed bad logging. Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video/video_send_stream.h ('k') | webrtc/video/vie_encoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/video_send_stream.cc
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index eeb9580b6b707e1c454491fc3339c9508eb5215a..971abebff23d1b46b02a974920d7bfec23668271 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -396,6 +396,7 @@ VideoSendStream::VideoSendStream(
encoder_thread_(EncoderThreadFunction, this, "EncoderThread"),
encoder_wakeup_event_(false, false),
stop_encoder_thread_(0),
+ encoder_max_bitrate_bps_(0),
state_(State::kStopped),
overuse_detector_(
Clock::GetRealTimeClock(),
@@ -631,6 +632,7 @@ void VideoSendStream::EncoderProcess() {
} else if (*pending_state_change == State::kStopped) {
bitrate_allocator_->RemoveObserver(this);
vie_encoder_.OnBitrateUpdated(0, 0, 0);
+ stats_proxy_.OnSetEncoderTargetRate(0);
state_ = State::kStopped;
LOG_F(LS_INFO) << "Encoder stopped.";
}
@@ -684,6 +686,7 @@ void VideoSendStream::ReconfigureVideoEncoder(
config_.encoder_settings.payload_type);
{
rtc::CritScope lock(&encoder_settings_crit_);
+ encoder_max_bitrate_bps_ = video_codec.maxBitrate * 1000;
pending_encoder_settings_.reset(new EncoderSettings({video_codec, config}));
}
encoder_wakeup_event_.Set();
@@ -875,9 +878,18 @@ uint32_t VideoSendStream::OnBitrateUpdated(uint32_t bitrate_bps,
uint32_t encoder_target_rate_bps =
protection_bitrate_calculator_.SetTargetRates(
bitrate_bps, stats_proxy_.GetSendFrameRate(), fraction_loss, rtt);
+
+ uint32_t protection_bitrate = bitrate_bps - encoder_target_rate_bps;
+ {
+ // Limit the target bitrate to the configured max bitrate.
+ rtc::CritScope lock(&encoder_settings_crit_);
+ encoder_target_rate_bps =
+ std::min(encoder_max_bitrate_bps_, encoder_target_rate_bps);
+ }
vie_encoder_.OnBitrateUpdated(encoder_target_rate_bps, fraction_loss, rtt);
+ stats_proxy_.OnSetEncoderTargetRate(encoder_target_rate_bps);
- return bitrate_bps - encoder_target_rate_bps;
+ return protection_bitrate;
}
int VideoSendStream::ProtectionRequest(const FecProtectionParams* delta_params,
« no previous file with comments | « webrtc/video/video_send_stream.h ('k') | webrtc/video/vie_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698