diff --git a/call/rtp_demuxer.cc b/call/rtp_demuxer.cc index 23f605d5b2..14725cf023 100644 --- a/call/rtp_demuxer.cc +++ b/call/rtp_demuxer.cc @@ -17,12 +17,32 @@ #include "modules/rtp_rtcp/source/rtp_packet_received.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" +#include "rtc_base/strings/string_builder.h" namespace webrtc { RtpDemuxerCriteria::RtpDemuxerCriteria() = default; RtpDemuxerCriteria::~RtpDemuxerCriteria() = default; +// static +std::string RtpDemuxer::DescribePacket(const RtpPacketReceived& packet) { + rtc::StringBuilder sb; + sb << "PT=" << packet.PayloadType() << " SSRC=" << packet.Ssrc(); + std::string mid; + if (packet.GetExtension(&mid)) { + sb << " MID=" << mid; + } + std::string rsid; + if (packet.GetExtension(&rsid)) { + sb << " RSID=" << rsid; + } + std::string rrsid; + if (packet.GetExtension(&rrsid)) { + sb << " RRSID=" << rrsid; + } + return sb.Release(); +} + RtpDemuxer::RtpDemuxer() = default; RtpDemuxer::~RtpDemuxer() { diff --git a/call/rtp_demuxer.h b/call/rtp_demuxer.h index 0a8acc27bb..c815c47f72 100644 --- a/call/rtp_demuxer.h +++ b/call/rtp_demuxer.h @@ -88,6 +88,10 @@ class RtpDemuxer { // different SSRCs. static constexpr int kMaxSsrcBindings = 1000; + // Returns a string that contains all the attributes of the given packet + // relevant for demuxing. + static std::string DescribePacket(const RtpPacketReceived& packet); + RtpDemuxer(); ~RtpDemuxer(); diff --git a/pc/rtp_transport.cc b/pc/rtp_transport.cc index f7a27be332..e6129b5983 100644 --- a/pc/rtp_transport.cc +++ b/pc/rtp_transport.cc @@ -196,7 +196,10 @@ void RtpTransport::DemuxPacket(rtc::CopyOnWriteBuffer packet, if (packet_time_us != -1) { parsed_packet.set_arrival_time_ms((packet_time_us + 500) / 1000); } - rtp_demuxer_.OnRtpPacket(parsed_packet); + if (!rtp_demuxer_.OnRtpPacket(parsed_packet)) { + RTC_LOG(LS_WARNING) << "Failed to demux RTP packet: " + << RtpDemuxer::DescribePacket(parsed_packet); + } } bool RtpTransport::IsTransportWritable() {