diff --git a/webrtc/video_engine/vie_channel_group.cc b/webrtc/video_engine/vie_channel_group.cc index bf011373a2..055e1c3a19 100644 --- a/webrtc/video_engine/vie_channel_group.cc +++ b/webrtc/video_engine/vie_channel_group.cc @@ -479,10 +479,8 @@ void ChannelGroup::OnNetworkChanged(uint32_t target_bitrate_bps, int pad_up_to_bitrate_bps = 0; { CriticalSectionScoped lock(encoder_map_cs_.get()); - for (const auto& encoder : send_encoders_) { - pad_up_to_bitrate_bps += - encoder.second->GetPaddingNeededBps(target_bitrate_bps); - } + for (const auto& encoder : send_encoders_) + pad_up_to_bitrate_bps += encoder.second->GetPaddingNeededBps(); } pacer_->UpdateBitrate( target_bitrate_bps / 1000, diff --git a/webrtc/video_engine/vie_encoder.cc b/webrtc/video_engine/vie_encoder.cc index 26e76e7de8..173ca9684a 100644 --- a/webrtc/video_engine/vie_encoder.cc +++ b/webrtc/video_engine/vie_encoder.cc @@ -397,9 +397,10 @@ int32_t ViEEncoder::ScaleInputImage(bool enable) { return 0; } -int ViEEncoder::GetPaddingNeededBps(int bitrate_bps) const { +int ViEEncoder::GetPaddingNeededBps() const { int64_t time_of_last_frame_activity_ms; int min_transmit_bitrate_bps; + int bitrate_bps; { CriticalSectionScoped cs(data_cs_.get()); bool send_padding = @@ -408,15 +409,12 @@ int ViEEncoder::GetPaddingNeededBps(int bitrate_bps) const { return 0; time_of_last_frame_activity_ms = time_of_last_frame_activity_ms_; min_transmit_bitrate_bps = 1000 * min_transmit_bitrate_kbps_; + bitrate_bps = last_observed_bitrate_bps_; } VideoCodec send_codec; if (vcm_->SendCodec(&send_codec) != 0) return 0; - SimulcastStream* stream_configs = send_codec.simulcastStream; - // Allocate the bandwidth between the streams. - std::vector stream_bitrates = AllocateStreamBitrates( - bitrate_bps, stream_configs, send_codec.numberOfSimulcastStreams); bool video_is_suspended = vcm_->VideoSuspended(); @@ -427,6 +425,7 @@ int ViEEncoder::GetPaddingNeededBps(int bitrate_bps) const { if (send_codec.numberOfSimulcastStreams == 0) { pad_up_to_bitrate_bps = send_codec.minBitrate * 1000; } else { + SimulcastStream* stream_configs = send_codec.simulcastStream; pad_up_to_bitrate_bps = stream_configs[send_codec.numberOfSimulcastStreams - 1].minBitrate * 1000; diff --git a/webrtc/video_engine/vie_encoder.h b/webrtc/video_engine/vie_encoder.h index 44a555b5c7..6ecf6a7b31 100644 --- a/webrtc/video_engine/vie_encoder.h +++ b/webrtc/video_engine/vie_encoder.h @@ -177,7 +177,7 @@ class ViEEncoder : public RtcpIntraFrameObserver, int channel_id() const { return channel_id_; } - int GetPaddingNeededBps(int bitrate_bps) const; + int GetPaddingNeededBps() const; protected: // Called by BitrateObserver.