Implement RtpVideoSender::SetFecAllowed()

Bug: webrtc:10769
Change-Id: I7214b2eaad828c59fd9836e85a3ecd8e737fe5f7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143966
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28420}
This commit is contained in:
Elad Alon 2019-06-28 18:14:36 +02:00 committed by Commit Bot
parent 099b02a366
commit 67daf71689
2 changed files with 12 additions and 1 deletions

View File

@ -225,6 +225,7 @@ RtpVideoSender::RtpVideoSender(
flexfec_sender_(
MaybeCreateFlexfecSender(clock, rtp_config, suspended_ssrcs_)),
fec_controller_(std::move(fec_controller)),
fec_allowed_(true),
rtp_streams_(
CreateRtpStreamSenders(clock,
rtp_config,
@ -705,6 +706,12 @@ void RtpVideoSender::OnBitrateUpdated(uint32_t bitrate_bps,
// protection overhead.
encoder_target_rate_bps_ = fec_controller_->UpdateFecRates(
payload_bitrate_bps, framerate, fraction_loss, loss_mask_vector_, rtt);
if (!fec_allowed_) {
encoder_target_rate_bps_ = payload_bitrate_bps;
// fec_controller_->UpdateFecRates() was still called so as to allow
// |fec_controller_| to update whatever internal state it might have,
// since |fec_allowed_| may be toggled back on at any moment.
}
uint32_t packetization_rate_bps = 0;
if (account_for_packetization_overhead_) {
@ -783,7 +790,8 @@ int RtpVideoSender::ProtectionRequest(const FecProtectionParams* delta_params,
}
void RtpVideoSender::SetFecAllowed(bool fec_allowed) {
// TODO(bugs.webrtc.og/10769): Handle this message.
rtc::CritScope cs(&crit_);
fec_allowed_ = fec_allowed;
}
void RtpVideoSender::OnPacketFeedbackVector(

View File

@ -178,7 +178,10 @@ class RtpVideoSender : public RtpVideoSenderInterface,
std::map<uint32_t, RtpState> suspended_ssrcs_;
std::unique_ptr<FlexfecSender> flexfec_sender_;
const std::unique_ptr<FecController> fec_controller_;
bool fec_allowed_ RTC_GUARDED_BY(crit_);
// Rtp modules are assumed to be sorted in simulcast index order.
const std::vector<webrtc_internal_rtp_video_sender::RtpStreamSender>
rtp_streams_;