From 884adca3a0b8565c4487cdd7a772dce5ec2bc0d6 Mon Sep 17 00:00:00 2001 From: Steve Anton Date: Mon, 15 Apr 2019 16:52:27 -0700 Subject: [PATCH] Log details when RtpDemuxer fails to deliver a packet Bug: None Change-Id: Ie9dc5c3c545073d2e43b464d2585cb945eb346fb Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131360 Commit-Queue: Steve Anton Reviewed-by: Niels Moller Reviewed-by: Amit Hilbuch Cr-Commit-Position: refs/heads/master@{#27634} --- call/rtp_demuxer.cc | 20 ++++++++++++++++++++ call/rtp_demuxer.h | 4 ++++ pc/rtp_transport.cc | 5 ++++- 3 files changed, 28 insertions(+), 1 deletion(-) 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() {