Index: webrtc/voice_engine/channel.cc |
diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc |
index 1d73db6d396a29ab1bc3ca12beee0c8ce1106ae0..48a58fce3b0f8dd0906af2161ca32e7afb46962a 100644 |
--- a/webrtc/voice_engine/channel.cc |
+++ b/webrtc/voice_engine/channel.cc |
@@ -247,13 +247,14 @@ class TransportFeedbackProxy : public TransportFeedbackObserver { |
} |
// Implements TransportFeedbackObserver. |
- void AddPacket(uint16_t sequence_number, |
+ void AddPacket(uint32_t ssrc, |
+ uint16_t sequence_number, |
size_t length, |
const PacedPacketInfo& pacing_info) override { |
RTC_DCHECK(pacer_thread_.CalledOnValidThread()); |
rtc::CritScope lock(&crit_); |
if (feedback_observer_) |
- feedback_observer_->AddPacket(sequence_number, length, pacing_info); |
+ feedback_observer_->AddPacket(ssrc, sequence_number, length, pacing_info); |
} |
void OnTransportFeedback(const rtcp::TransportFeedback& feedback) override { |
@@ -396,7 +397,7 @@ class VoERtcpObserver : public RtcpBandwidthObserver { |
(fraction_lost_aggregate + total_number_of_packets / 2) / |
total_number_of_packets; |
} |
- owner_->OnIncomingFractionLoss(weighted_fraction_lost); |
+ owner_->OnUplinkPacketLossRate(weighted_fraction_lost / 255.0f); |
} |
private: |
@@ -903,7 +904,9 @@ Channel::Channel(int32_t channelId, |
rtp_packet_sender_proxy_(new RtpPacketSenderProxy()), |
retransmission_rate_limiter_(new RateLimiter(Clock::GetRealTimeClock(), |
kMaxRetransmissionWindowMs)), |
- decoder_factory_(config.acm_config.decoder_factory) { |
+ decoder_factory_(config.acm_config.decoder_factory), |
+ // TODO(elad.alon): Subsequent CL experiments with PLR source. |
+ use_twcc_plr_for_ana_(false) { |
WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, _channelId), |
"Channel::Channel() - ctor"); |
AudioCodingModule::Config acm_config(config.acm_config); |
@@ -1290,10 +1293,22 @@ void Channel::SetBitRate(int bitrate_bps, int64_t probing_interval_ms) { |
retransmission_rate_limiter_->SetMaxRate(bitrate_bps); |
} |
-void Channel::OnIncomingFractionLoss(int fraction_lost) { |
+void Channel::OnTwccBasedUplinkPacketLossRate(float packet_loss_rate) { |
+ if (!use_twcc_plr_for_ana_) |
+ return; |
audio_coding_->ModifyEncoder([&](std::unique_ptr<AudioEncoder>* encoder) { |
if (*encoder) |
- (*encoder)->OnReceivedUplinkPacketLossFraction(fraction_lost / 255.0f); |
+ (*encoder)->OnReceivedUplinkPacketLossFraction(packet_loss_rate); |
+ }); |
+} |
+ |
+void Channel::OnUplinkPacketLossRate(float packet_loss_rate) { |
+ if (use_twcc_plr_for_ana_) |
+ return; |
+ audio_coding_->ModifyEncoder([&](std::unique_ptr<AudioEncoder>* encoder) { |
+ if (*encoder) { |
+ (*encoder)->OnReceivedUplinkPacketLossFraction(packet_loss_rate); |
+ } |
}); |
} |