Add sending REMB support to RtcpTransceiver

Bug: webrtc:8239
Change-Id: If22de91a69b5752baf616520a247f2fdedacc220
Reviewed-on: https://webrtc-review.googlesource.com/22080
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20657}
This commit is contained in:
Danil Chapovalov
2017-11-13 13:46:02 +01:00
committed by Commit Bot
parent b5b5bcee72
commit d328229d38
4 changed files with 138 additions and 1 deletions

View File

@ -97,6 +97,21 @@ void RtcpTransceiverImpl::SendCompoundPacket() {
ReschedulePeriodicCompoundPackets(config_.report_period_ms);
}
void RtcpTransceiverImpl::SetRemb(int bitrate_bps,
std::vector<uint32_t> ssrcs) {
RTC_DCHECK_GE(bitrate_bps, 0);
remb_.emplace();
remb_->SetSsrcs(std::move(ssrcs));
remb_->SetBitrateBps(bitrate_bps);
// TODO(bugs.webrtc.org/8239): Move logic from PacketRouter for sending remb
// immideately on large bitrate change when there is one RtcpTransceiver per
// rtp transport.
}
void RtcpTransceiverImpl::UnsetRemb() {
remb_.reset();
}
void RtcpTransceiverImpl::HandleReceivedPacket(
const rtcp::CommonHeader& rtcp_packet_header) {
switch (rtcp_packet_header.type()) {
@ -149,9 +164,10 @@ void RtcpTransceiverImpl::ReschedulePeriodicCompoundPackets(int64_t delay_ms) {
void RtcpTransceiverImpl::SendPacket() {
PacketSender sender(config_.outgoing_transport, config_.max_packet_size);
const uint32_t sender_ssrc = config_.feedback_ssrc;
rtcp::ReceiverReport receiver_report;
receiver_report.SetSenderSsrc(config_.feedback_ssrc);
receiver_report.SetSenderSsrc(sender_ssrc);
receiver_report.SetReportBlocks(CreateReportBlocks());
sender.AppendPacket(receiver_report);
@ -162,6 +178,10 @@ void RtcpTransceiverImpl::SendPacket() {
<< " to rtcp sdes packet.";
sender.AppendPacket(sdes);
}
if (remb_) {
remb_->SetSenderSsrc(sender_ssrc);
sender.AppendPacket(*remb_);
}
sender.Send();
}