mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-27 04:35:34 +08:00
[fix] fix receiver report building and parsing
This commit is contained in:
@@ -230,8 +230,7 @@ bool IceTransport::ParseRtcpPacket(const uint8_t *buffer, size_t size,
|
||||
// received_blocks[rtcp_packet_info->remote_ssrc].sender_report = true;
|
||||
break;
|
||||
case RtcpPacket::RtcpPayloadType::RR:
|
||||
LOG_INFO("Receiver report");
|
||||
// valid = HandleReceiverReport(rtcp_block, rtcp_packet_info);
|
||||
valid = HandleReceiverReport(rtcp_block, rtcp_packet_info);
|
||||
break;
|
||||
case RtpFeedback::kPacketType:
|
||||
switch (rtcp_block.fmt()) {
|
||||
@@ -313,6 +312,19 @@ bool IceTransport::HandleSenderReport(const RtcpCommonHeader &rtcp_block,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IceTransport::HandleReceiverReport(const RtcpCommonHeader &rtcp_block,
|
||||
RtcpPacketInfo *rtcp_packet_info) {
|
||||
ReceiverReport receiver_report;
|
||||
if (!receiver_report.Parse(rtcp_block)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ice_transport_controller_) {
|
||||
ice_transport_controller_->OnReceiverReport(receiver_report);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IceTransport::HandleCongestionControlFeedback(
|
||||
const RtcpCommonHeader &rtcp_block, RtcpPacketInfo *rtcp_packet_info) {
|
||||
webrtc::rtcp::CongestionControlFeedback feedback;
|
||||
|
||||
@@ -133,6 +133,9 @@ class IceTransport {
|
||||
bool HandleSenderReport(const RtcpCommonHeader &rtcp_block,
|
||||
RtcpPacketInfo *rtcp_packet_info);
|
||||
|
||||
bool HandleReceiverReport(const RtcpCommonHeader &rtcp_block,
|
||||
RtcpPacketInfo *rtcp_packet_info);
|
||||
|
||||
bool HandleCongestionControlFeedback(const RtcpCommonHeader &rtcp_block,
|
||||
RtcpPacketInfo *rtcp_packet_info);
|
||||
|
||||
|
||||
@@ -338,6 +338,13 @@ void IceTransportController::OnSenderReport(const SenderReport& sender_report) {
|
||||
data_channel_receive_->OnSenderReport(sender_report);
|
||||
}
|
||||
|
||||
void IceTransportController::OnReceiverReport(
|
||||
const ReceiverReport& receiver_report) {
|
||||
video_channel_send_->OnReceiverReport(receiver_report);
|
||||
audio_channel_send_->OnReceiverReport(receiver_report);
|
||||
data_channel_send_->OnReceiverReport(receiver_report);
|
||||
}
|
||||
|
||||
void IceTransportController::OnCongestionControlFeedback(
|
||||
const webrtc::rtcp::CongestionControlFeedback& feedback) {
|
||||
std::optional<webrtc::TransportPacketsFeedback> feedback_msg =
|
||||
|
||||
@@ -62,6 +62,7 @@ class IceTransportController
|
||||
|
||||
public:
|
||||
void OnSenderReport(const SenderReport &sender_report);
|
||||
void OnReceiverReport(const ReceiverReport& receiver_report);
|
||||
void OnCongestionControlFeedback(
|
||||
const webrtc::rtcp::CongestionControlFeedback &feedback);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user