Send rtcp::RemoteEstimate and rtcp::TransportFeedback in one packet
Change-Id: I53912f4e82a9fd795f8886d6b2cdb313bde08c4d BUG: webrtc:10742 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156380 Reviewed-by: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Per Kjellander <perkj@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29437}
This commit is contained in:
committed by
Commit Bot
parent
9e70f36143
commit
ee153c92fe
@ -13,11 +13,13 @@
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <limits>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include "absl/types/optional.h"
|
||||
#include "modules/rtp_rtcp/include/rtp_rtcp.h"
|
||||
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
|
||||
#include "rtc_base/atomic_ops.h"
|
||||
#include "rtc_base/checks.h"
|
||||
@ -274,33 +276,25 @@ bool PacketRouter::SendRemb(int64_t bitrate_bps,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PacketRouter::SendTransportFeedback(rtcp::TransportFeedback* packet) {
|
||||
bool PacketRouter::SendCombinedRtcpPacket(
|
||||
std::vector<std::unique_ptr<rtcp::RtcpPacket>> packets) {
|
||||
rtc::CritScope cs(&modules_crit_);
|
||||
|
||||
// Prefer send modules.
|
||||
for (auto* rtp_module : rtp_send_modules_) {
|
||||
packet->SetSenderSsrc(rtp_module->SSRC());
|
||||
if (rtp_module->SendFeedbackPacket(*packet)) {
|
||||
return true;
|
||||
if (rtp_module->RTCP() == RtcpMode::kOff) {
|
||||
continue;
|
||||
}
|
||||
rtp_module->SendCombinedRtcpPacket(std::move(packets));
|
||||
return true;
|
||||
}
|
||||
for (auto* rtcp_sender : rtcp_feedback_senders_) {
|
||||
packet->SetSenderSsrc(rtcp_sender->SSRC());
|
||||
if (rtcp_sender->SendFeedbackPacket(*packet)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void PacketRouter::SendNetworkStateEstimatePacket(
|
||||
rtcp::RemoteEstimate* packet) {
|
||||
rtc::CritScope cs(&modules_crit_);
|
||||
for (auto* rtcp_sender : rtcp_feedback_senders_) {
|
||||
packet->SetSenderSsrc(rtcp_sender->SSRC());
|
||||
if (rtcp_sender->SendNetworkStateEstimatePacket(*packet)) {
|
||||
break;
|
||||
}
|
||||
if (rtcp_feedback_senders_.empty()) {
|
||||
return false;
|
||||
}
|
||||
auto* rtcp_sender = rtcp_feedback_senders_[0];
|
||||
rtcp_sender->SendCombinedRtcpPacket(std::move(packets));
|
||||
return true;
|
||||
}
|
||||
|
||||
void PacketRouter::AddRembModuleCandidate(
|
||||
|
||||
Reference in New Issue
Block a user