Change RtcpPacket::PacketReadyCallback to rtc::FunctionView
from interface Bug: webrtc:5565 Change-Id: I2df5d7a0554b938888581f1c73dbdb8b85c387cc Reviewed-on: https://webrtc-review.googlesource.com/8680 Reviewed-by: Niels Moller <nisse@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21136}
This commit is contained in:
committed by
Commit Bot
parent
f1061c2d90
commit
5c3cc41cef
@ -50,27 +50,25 @@ struct RtcpTransceiverImpl::RemoteSenderState {
|
||||
// Compound or Reduced-Size RTCP packet, as defined by RFC 5506 section 2.
|
||||
// TODO(danilchap): When in compound mode and packets are so many that several
|
||||
// compound RTCP packets need to be generated, ensure each packet is compound.
|
||||
class RtcpTransceiverImpl::PacketSender
|
||||
: public rtcp::RtcpPacket::PacketReadyCallback {
|
||||
class RtcpTransceiverImpl::PacketSender {
|
||||
public:
|
||||
PacketSender(Transport* transport, size_t max_packet_size)
|
||||
: transport_(transport), max_packet_size_(max_packet_size) {
|
||||
PacketSender(rtcp::RtcpPacket::PacketReadyCallback callback,
|
||||
size_t max_packet_size)
|
||||
: callback_(callback), max_packet_size_(max_packet_size) {
|
||||
RTC_CHECK_LE(max_packet_size, IP_PACKET_SIZE);
|
||||
}
|
||||
~PacketSender() override {
|
||||
RTC_DCHECK_EQ(index_, 0) << "Unsent rtcp packet.";
|
||||
}
|
||||
~PacketSender() { RTC_DCHECK_EQ(index_, 0) << "Unsent rtcp packet."; }
|
||||
|
||||
// Appends a packet to pending compound packet.
|
||||
// Sends rtcp compound packet if buffer was already full and resets buffer.
|
||||
void AppendPacket(const rtcp::RtcpPacket& packet) {
|
||||
packet.Create(buffer_, &index_, max_packet_size_, this);
|
||||
packet.Create(buffer_, &index_, max_packet_size_, callback_);
|
||||
}
|
||||
|
||||
// Sends pending rtcp compound packet.
|
||||
void Send() {
|
||||
if (index_ > 0) {
|
||||
OnPacketReady(buffer_, index_);
|
||||
callback_(rtc::ArrayView<const uint8_t>(buffer_, index_));
|
||||
index_ = 0;
|
||||
}
|
||||
}
|
||||
@ -78,12 +76,7 @@ class RtcpTransceiverImpl::PacketSender
|
||||
bool IsEmpty() const { return index_ == 0; }
|
||||
|
||||
private:
|
||||
// Implements RtcpPacket::PacketReadyCallback
|
||||
void OnPacketReady(uint8_t* data, size_t length) override {
|
||||
transport_->SendRtcp(data, length);
|
||||
}
|
||||
|
||||
Transport* const transport_;
|
||||
const rtcp::RtcpPacket::PacketReadyCallback callback_;
|
||||
const size_t max_packet_size_;
|
||||
size_t index_ = 0;
|
||||
uint8_t buffer_[IP_PACKET_SIZE];
|
||||
@ -284,14 +277,20 @@ void RtcpTransceiverImpl::CreateCompoundPacket(PacketSender* sender) {
|
||||
}
|
||||
|
||||
void RtcpTransceiverImpl::SendPeriodicCompoundPacket() {
|
||||
PacketSender sender(config_.outgoing_transport, config_.max_packet_size);
|
||||
auto send_packet = [this](rtc::ArrayView<const uint8_t> packet) {
|
||||
config_.outgoing_transport->SendRtcp(packet.data(), packet.size());
|
||||
};
|
||||
PacketSender sender(send_packet, config_.max_packet_size);
|
||||
CreateCompoundPacket(&sender);
|
||||
sender.Send();
|
||||
}
|
||||
|
||||
void RtcpTransceiverImpl::SendImmediateFeedback(
|
||||
const rtcp::RtcpPacket& rtcp_packet) {
|
||||
PacketSender sender(config_.outgoing_transport, config_.max_packet_size);
|
||||
auto send_packet = [this](rtc::ArrayView<const uint8_t> packet) {
|
||||
config_.outgoing_transport->SendRtcp(packet.data(), packet.size());
|
||||
};
|
||||
PacketSender sender(send_packet, config_.max_packet_size);
|
||||
// Compound mode requires every sent rtcp packet to be compound, i.e. start
|
||||
// with a sender or receiver report.
|
||||
if (config_.rtcp_mode == RtcpMode::kCompound)
|
||||
|
||||
Reference in New Issue
Block a user