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

Unified Diff: webrtc/modules/video_coding/video_sender.cc

Issue 2513383002: Initial rate allocation should not use fps = 0 (Closed)
Patch Set: oops Created 4 years, 1 month 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
Index: webrtc/modules/video_coding/video_sender.cc
diff --git a/webrtc/modules/video_coding/video_sender.cc b/webrtc/modules/video_coding/video_sender.cc
index c202d34e859819dabad29201dba1bef82b46d28d..4068fdb7f86e312fb488f5a324d36cd75fbcaaa5 100644
--- a/webrtc/modules/video_coding/video_sender.cc
+++ b/webrtc/modules/video_coding/video_sender.cc
@@ -37,9 +37,10 @@ VideoSender::VideoSender(Clock* clock,
send_stats_callback_(send_stats_callback),
_codecDataBase(&_encodedFrameCallback),
frame_dropper_enabled_(true),
- _sendStatsTimer(1000, clock_),
+ _sendStatsTimer(VCMProcessTimer::kDefaultProcessIntervalMs, clock_),
current_codec_(),
encoder_params_({BitrateAllocation(), 0, 0, 0}),
+ has_received_frame_(false),
encoder_has_internal_source_(false),
next_frame_types_(1, kVideoFrameDelta) {
_mediaOpt.Reset();
@@ -126,6 +127,7 @@ int32_t VideoSender::RegisterSendCodec(const VideoCodec* sendCodec,
next_frame_types_.clear();
next_frame_types_.resize(VCM_MAX(sendCodec->numberOfSimulcastStreams, 1),
kVideoFrameKey);
+ has_received_frame_ = false;
// Cache InternalSource() to have this available from IntraFrameRequest()
// without having to acquire encoder_crit_ (avoid blocking on encoder use).
encoder_has_internal_source_ = _encoder->InternalSource();
@@ -199,6 +201,12 @@ EncoderParameters VideoSender::UpdateEncoderParameters(
uint32_t video_target_rate_bps = _mediaOpt.SetTargetRates(
target_bitrate_bps, params.loss_rate, params.rtt);
uint32_t input_frame_rate = _mediaOpt.InputFrameRate();
+ if (input_frame_rate > 0) {
+ has_received_frame_ = true;
danilchap 2016/11/21 12:45:42 variable name make impression it should be set to
sprang_webrtc 2016/11/21 13:01:20 Ack, but removed instead.
+ } else if (input_frame_rate == 0 && !has_received_frame_) {
danilchap 2016/11/21 12:45:42 This mean input_frame_rate ~= 0 mid call is a vali
sprang_webrtc 2016/11/21 13:01:20 My impression was that 0 could be a valid framerat
+ input_frame_rate = current_codec_.maxFramerate;
+ }
+
BitrateAllocation bitrate_allocation;
if (bitrate_allocator) {
bitrate_allocation = bitrate_allocator->GetAllocation(video_target_rate_bps,
@@ -230,13 +238,13 @@ int32_t VideoSender::SetChannelParameters(
EncoderParameters encoder_params;
encoder_params.loss_rate = lossRate;
encoder_params.rtt = rtt;
- encoder_params = UpdateEncoderParameters(encoder_params, bitrate_allocator,
- target_bitrate_bps);
bool encoder_has_internal_source;
{
rtc::CritScope cs(&params_crit_);
- encoder_params_ = encoder_params;
+ encoder_params_ = UpdateEncoderParameters(encoder_params, bitrate_allocator,
+ target_bitrate_bps);
+ encoder_params = encoder_params_;
danilchap 2016/11/21 12:45:42 may be other way around make slightly more sense:
sprang_webrtc 2016/11/21 13:01:20 Ack, but reverted instead.
encoder_has_internal_source = encoder_has_internal_source_;
}

Powered by Google App Engine
This is Rietveld 408576698